IHNewRoomView.swift 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. //
  2. // IHNewRoomView.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/13.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. protocol IHNewRoomViewDelegate : NSObjectProtocol {
  10. func selectedPhoto()
  11. func addNewEquipmentInNewRoom()
  12. func selectedFloorInNewRoom()
  13. func selectedModeInNewRoom()
  14. func preserveInNewRoom(_ roomInfo:NewRoomInfo?,error:IHNewRoomViewEditError)
  15. func popController(with roomInfo:NewRoomInfo?,error:IHNewRoomViewEditError)
  16. }
  17. let kNotifactionIHNewRoomViewUploadImageFinished = "kNotifactionIHNewRoomViewUploadImageFinished"
  18. let kNotificationIHNewRoomViewGetRoomImage = "kNotificationIHNewRoomViewGetRoomImage"
  19. class IHNewRoomView: UIView {
  20. @IBOutlet weak var imageBox: UIImageView!
  21. @IBOutlet weak var uploadImage: UIImageView!
  22. weak var delegate : IHNewRoomViewDelegate?
  23. var isBeginEdit:Bool?{
  24. return judgeIsBeginEditContent()
  25. }
  26. var isEditFloor :Bool? = false
  27. var isPickImageFinished:Bool? = false
  28. var imagePath :String?
  29. var floorList:[RoomListData]?{
  30. didSet{
  31. if let floorList = self.floorList {
  32. floorNames = IHCentrlizedService.share.getFloorNameList(from: floorList)
  33. floorNameLabel.text = floorNames?.first
  34. if floorNames != nil || floorNames!.count > 0 {
  35. floorNameLabel.reset()
  36. let firstFloor = floorList.first
  37. floorId = firstFloor?.id
  38. }else{
  39. floorNameLabel.isEmpty("Please chose Floor")
  40. }
  41. }
  42. }
  43. }
  44. var roomInfo:NewRoomInfo?{
  45. didSet{
  46. if let info = self.roomInfo {
  47. self.fillRoomInfoToView(info)
  48. }else{
  49. self.clearRoomInfo()
  50. }
  51. }
  52. }
  53. var floorNames :[String]?
  54. var equipmentArr : [EquipmentInfo]?{
  55. didSet{
  56. self.tableView.reloadData()
  57. }
  58. }
  59. @IBOutlet weak var tableView: UITableView!
  60. @IBOutlet weak var floorBox: UIView!
  61. @IBOutlet weak var scenceBox: UIView!
  62. @IBOutlet weak var floorNameLabel: UILabel!
  63. @IBOutlet weak var roomNumbelTf: UITextField!
  64. @IBOutlet weak var scenceModeLabel: UILabel!
  65. @IBOutlet weak var snTestfiled: UITextField!
  66. var floorId :String?
  67. override func awakeFromNib() {
  68. super.awakeFromNib()
  69. createUI()
  70. NotificationCenter.default.addObserver(self, selector: #selector(notifyRoomIcon), name: NSNotification.Name(kNotificationIHNewRoomViewGetRoomImage), object: nil)
  71. NotificationCenter.default.addObserver(self, selector: #selector(notifyImagePath), name: NSNotification.Name(kNotifactionIHNewRoomViewUploadImageFinished), object: nil)
  72. }
  73. func fillRoomInfoToView(_ info:NewRoomInfo) {
  74. if let image = info.pickImage,let floor = info.floorName,let number = info.number ,let sn = info.sn,let equipments = info.deviceList{
  75. self.snTestfiled.text = sn
  76. self.roomNumbelTf.text = number
  77. self.floorNameLabel.text = floor
  78. self.imageBox.image = image
  79. self.equipmentArr = equipments
  80. }
  81. }
  82. func clearRoomInfo() {
  83. self.snTestfiled.text = ""
  84. self.roomNumbelTf.text = ""
  85. self.floorNameLabel.text = floorNames?.first
  86. self.imageBox.image = UIImage(named: "New room")
  87. self.equipmentArr = nil
  88. }
  89. func createUI() {
  90. self.tableView.dataSource = self
  91. self.tableView.delegate = self
  92. self.tableView.separatorStyle = .none
  93. self.tableView.register(UINib(nibName: "IHNewEquipment_nr_Cell", bundle: nil), forCellReuseIdentifier: "cell")
  94. floorBox.isUserInteractionEnabled = true
  95. scenceBox.isUserInteractionEnabled = true
  96. let floorTap = UITapGestureRecognizer(target: self, action: #selector(selectedFloor))
  97. floorBox.addGestureRecognizer(floorTap)
  98. let scenceTap = UITapGestureRecognizer(target: self, action: #selector(selectedMode))
  99. scenceBox.addGestureRecognizer(scenceTap)
  100. let tapImageV = UITapGestureRecognizer(target: self, action: #selector(tapRoomImage))
  101. let tapImageV2 = UITapGestureRecognizer(target: self, action: #selector(tapRoomImage))
  102. imageBox.addGestureRecognizer(tapImageV)
  103. uploadImage.addGestureRecognizer(tapImageV2)
  104. imageBox.contentMode = .scaleAspectFill
  105. }
  106. deinit {
  107. NotificationCenter.default.removeObserver(self)
  108. }
  109. @objc func notifyRoomIcon(_ notif:Notification) {
  110. let image = notif.object as! UIImage
  111. self.imageBox.image = image
  112. }
  113. @objc func notifyImagePath(_ notif:Notification) {
  114. let path = notif.object as! String
  115. isPickImageFinished = true
  116. self.imagePath = path
  117. }
  118. @objc func tapRoomImage(){
  119. if let delegate = self.delegate {
  120. delegate.selectedPhoto()
  121. }
  122. }
  123. @IBAction func addNewEquipmentAction(_ sender: Any) {
  124. if let delegate = self.delegate {
  125. delegate.addNewEquipmentInNewRoom()
  126. }
  127. }
  128. @IBAction func preserveActioon(_ sender: Any) {
  129. let data = getEditData()
  130. if let delegate = self.delegate {
  131. delegate.preserveInNewRoom(data.info, error: data.error)
  132. }
  133. }
  134. func shouldPop() {
  135. let data = getEditData()
  136. if let delegate = self.delegate {
  137. delegate.popController(with: data.info, error: data.error)
  138. //delegate.preserveInNewRoom(info, error: error)
  139. }
  140. }
  141. func getEditData() ->(info : NewRoomInfo,error: IHNewRoomViewEditError) {
  142. var info = NewRoomInfo()
  143. var error = IHNewRoomViewEditError.success
  144. if Intermediate.isSaveRoomInfo == "1" {
  145. error = .success
  146. info.deviceList = self.equipmentArr
  147. info.floorId = self.floorId
  148. info.floorName = self.floorNameLabel.text
  149. info.sn = snTestfiled.text
  150. info.image = imagePath
  151. info.number = self.roomNumbelTf.text
  152. info.pickImage = imageBox.image
  153. return (info,error)
  154. }
  155. //判断输入
  156. // && self.equipmentArr?.count != 0
  157. if isPickImageFinished == true
  158. && self.roomNumbelTf.text != ""
  159. && self.snTestfiled.text != ""{
  160. error = .success
  161. info.deviceList = self.equipmentArr
  162. info.floorId = self.floorId
  163. info.floorName = self.floorNameLabel.text
  164. info.sn = snTestfiled.text
  165. info.image = imagePath
  166. info.number = self.roomNumbelTf.text
  167. info.pickImage = imageBox.image
  168. }
  169. // if self.equipmentArr?.count == 0 {
  170. // error = .lackEquipment
  171. // }
  172. if self.snTestfiled.text == "" && self.roomNumbelTf.text == nil {
  173. error = .lackSN
  174. }
  175. if self.roomNumbelTf.text == ""
  176. || self.roomNumbelTf.text == nil || self.roomNumbelTf.text?.isBlanck == true {
  177. error = .lackRoomName
  178. }
  179. if isPickImageFinished == false{
  180. error = .lackImage
  181. }
  182. return (info,error)
  183. }
  184. }
  185. extension IHNewRoomView :UITableViewDelegate,UITableViewDataSource{
  186. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  187. return self.equipmentArr?.count ?? 0
  188. }
  189. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  190. let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! IHNewEquipment_nr_Cell
  191. cell.selectionStyle = .none
  192. let info = equipmentArr![indexPath.row]
  193. cell.deviceInfo = info
  194. cell.deleteCallback = { [unowned self] in
  195. //删除操作
  196. self.deleteEquipment(indexPath: indexPath)
  197. }
  198. return cell
  199. }
  200. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  201. return 70
  202. }
  203. }
  204. /// - Private Method
  205. extension IHNewRoomView{
  206. /// 判断是否开始编辑内容
  207. ///
  208. /// - Returns : true :开始编辑, false : 没有编辑
  209. func judgeIsBeginEditContent() -> Bool {
  210. var _isEditEquipment = false
  211. let _isEditFloor = self.isEditFloor
  212. var _isEditRoomName = false
  213. let isPickImage = isPickImageFinished
  214. var _isEditSN = false
  215. if self.equipmentArr!.count > 0 {
  216. _isEditEquipment = true
  217. }else{
  218. _isEditEquipment = false
  219. }
  220. if roomNumbelTf.text != "" {
  221. _isEditRoomName = true
  222. }else{
  223. _isEditRoomName = false
  224. }
  225. if snTestfiled.text != "" {
  226. _isEditSN = true
  227. }else{
  228. _isEditSN = false
  229. }
  230. //只要有一项开始编辑,就是已经开始编辑了
  231. if _isEditEquipment == true || _isEditFloor == true || _isEditRoomName == true || _isEditSN == true || isPickImage == true {
  232. return true
  233. }
  234. return false
  235. }
  236. func deleteEquipment(indexPath:IndexPath) {
  237. //删除数据
  238. self.equipmentArr?.remove(at: indexPath.row)
  239. }
  240. @objc func selectedFloor() {
  241. if self.floorNames == nil || self.floorNames?.count == 0 {
  242. g_showHUD("这酒店没有楼层")
  243. return
  244. }
  245. let titleArr = self.floorNames
  246. let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr?.first)
  247. pick?.confirmBlock = {(selectedIndex) in
  248. log.debug(" title = \(titleArr?[selectedIndex])")
  249. let floor = self.floorList?[selectedIndex]
  250. self.floorNameLabel.text = floor?.name
  251. if self.floorNames != nil || self.floorNames!.count > 0 {
  252. self.floorNameLabel.reset()
  253. let floor = self.floorList?[selectedIndex]
  254. self.floorId = floor?.id
  255. self.isEditFloor = true
  256. }else{
  257. self.floorNameLabel.isEmpty("Please chose Floor")
  258. }
  259. }
  260. pick?.show()
  261. if let delegate = self.delegate {
  262. delegate.selectedFloorInNewRoom()
  263. }
  264. }
  265. @objc func selectedMode() {
  266. let titleArr = ["Custom mode","Reading mode","Full-on mode","Sleep mode","Relax mode","Work mode"]
  267. let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr.first)
  268. pick?.confirmBlock = {(selectedIndex) in
  269. log.debug(" title = \(titleArr[selectedIndex])")
  270. self.scenceModeLabel.text = titleArr[selectedIndex]
  271. }
  272. pick?.show()
  273. if let delegate = self.delegate {
  274. delegate.selectedModeInNewRoom()
  275. }
  276. }
  277. }