IHServiceVCtr.swift 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. //
  2. // IHServiceVCtr.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/10.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import JXSegmentedView
  10. let kNotifactionIHServiceVCtrChangeNavitionBarTitle = "kNotifactionIHServiceVCtrChangeNavitionBarTitle"
  11. class IHServiceVCtr: UIViewController {
  12. var totalItemWidth: CGFloat = 0 //总长度
  13. var segmentedDataSource:JXSegmentedBaseDataSource?
  14. var segmentedView = JXSegmentedView()
  15. lazy var rightItem: IHServiceRightItem = {
  16. let rightItem = IHServiceRightItem(frame: CGRect(x: 0, y: 0, width: 80, height: 20))
  17. return rightItem
  18. }()
  19. lazy var listContainerView: JXSegmentedListContainerView! = {
  20. return JXSegmentedListContainerView(dataSource: self)
  21. }()
  22. var type :String? = "0"
  23. var hotelId :String? = nil
  24. var buildId:String? = nil
  25. var floorList:[RoomListData]?
  26. var floorId:String? = nil{
  27. didSet{
  28. Intermediate.floorId = self.floorId ?? ""
  29. }
  30. }
  31. var buildListData : [DropDownData]?{
  32. didSet{
  33. }
  34. }
  35. override func viewDidLoad() {
  36. super.viewDidLoad()
  37. NotificationCenter.default.addObserver(self, selector: #selector(reloadAddressNotify), name: NSNotification.Name(kNotificationIHAddressControllerReloadAddress), object: nil)
  38. NotificationCenter.default.addObserver(self, selector: #selector(reloadNavTitle), name: NSNotification.Name(kNotifactionIHServiceVCtrChangeNavitionBarTitle), object: nil)
  39. getAddress()
  40. setNavigationBar()
  41. cinfigSegmentdView()
  42. }
  43. func getAddress() {
  44. if Intermediate.hotelId == "" {
  45. log.debug("无值 -\(Intermediate.hotelId )")
  46. IHAddressService.share.getFirstHotel { (hotelId, hotelName) in
  47. self.getBuildData()
  48. }
  49. }else{
  50. log.debug("有值 -\(Intermediate.hotelId )")
  51. self.getBuildData()
  52. }
  53. }
  54. @objc func reloadNavTitle(_ notif:Notification) {
  55. let dict = notif.object as! [String:String]
  56. let hotelId = dict["hotelId"]
  57. let hotel = dict["hotel"]
  58. let buildId = dict["buildId"]
  59. let buildName = dict["buildName"]
  60. self.navigationBarTitle = "\(hotel!) · \(buildName!)"
  61. Intermediate.hotelId = hotelId!
  62. Intermediate.hotelName = hotel!
  63. Intermediate.buildId = buildId!
  64. Intermediate.buildName = buildName!
  65. NotificationCenter.default.post(name: NSNotification.Name(kNotifitionIHServiceManagerReloaddata), object: nil)
  66. NotificationCenter.default.post(name: NSNotification.Name(kNotificationIHAddressControllerReloadAddress), object: nil)
  67. }
  68. //刷新地址
  69. @objc func reloadAddressNotify() {
  70. self.navigationBarTitle = "\(Intermediate.hotelName) · \(Intermediate.buildName)"
  71. log.debug("刷新了")
  72. IHAreaService.share.getBuildNavData(hotelId: Intermediate.hotelId , requestSuccess: { (dataList) in
  73. self.buildListData = dataList
  74. var titleArray = [String]()
  75. if let datalist = self.buildListData {
  76. for build in datalist{
  77. titleArray.append(build.name!)
  78. }
  79. //默认后去第一个楼房的楼层
  80. if datalist.count > 0 {
  81. let firstBuild = datalist[0]
  82. self.buildId = firstBuild.id
  83. }else{
  84. Intermediate.buildId = ""
  85. self.floorList = nil
  86. self.floorId = nil
  87. Intermediate.floorId = ""
  88. }
  89. self.segmentedView.reloadData()
  90. NotificationCenter.default.post(name: NSNotification.Name(kNotifitionIHServiceManagerReloaddata), object: nil)
  91. }
  92. }) { }
  93. }
  94. deinit {
  95. NotificationCenter.default.removeObserver(self)
  96. }
  97. func cinfigSegmentdView() {
  98. // self.navigationBarTitle = "Room 1001"
  99. totalItemWidth = UIScreen.main.bounds.size.width - 20*2
  100. view.backgroundColor = .white
  101. let titles = ["所有", "灯控","HCL灯控","感应器","空气净化器"]
  102. let titleDataSource = JXSegmentedTitleDataSource()
  103. titleDataSource.itemContentWidth = totalItemWidth/CGFloat(titles.count)
  104. titleDataSource.titles = titles
  105. titleDataSource.titleNormalFont = UIFont(name: Alibaba_PuHuiTi_Regular, size: 13)!
  106. titleDataSource.titleSelectedFont = UIFont(name: Alibaba_PuHuiTi_Bold, size: 13)!
  107. titleDataSource.isTitleMaskEnabled = true
  108. titleDataSource.titleNormalColor = UIColor(hexString: "#657085")!
  109. titleDataSource.titleSelectedColor = UIColor(hexString: "#FFFFFF")!
  110. titleDataSource.itemSpacing = 0
  111. titleDataSource.itemContentWidth = 120
  112. //titleDataSource.isItemSpacingAverageEnabled = false
  113. segmentedDataSource = titleDataSource
  114. segmentedView.dataSource = segmentedDataSource
  115. segmentedView.layer.masksToBounds = true
  116. segmentedView.layer.cornerRadius = 15
  117. segmentedView.backgroundColor = UIColor(hexString: "#F6F8F7")
  118. segmentedView.delegate = self
  119. view.addSubview(segmentedView)
  120. let indicator = JXSegmentedIndicatorBackgroundView()
  121. indicator.indicatorHeight = 25
  122. indicator.backgroundWidthIncrement = -10
  123. indicator.indicatorColor = UIColor(hexString: "#573F95")!
  124. indicator.layer.shadowColor = UIColor(hexString: "#573F95")!.cgColor
  125. indicator.layer.shadowRadius = 3
  126. indicator.layer.shadowOffset = CGSize.zero
  127. indicator.layer.shadowOpacity = 0.7
  128. segmentedView.indicators = [indicator]
  129. segmentedView.listContainer = listContainerView
  130. view.addSubview(listContainerView)
  131. }
  132. override func viewDidLayoutSubviews() {
  133. super.viewDidLayoutSubviews()
  134. segmentedView.frame = CGRect(x: 20, y: 10, width: totalItemWidth, height: 30)
  135. listContainerView.frame = CGRect(x: 0, y: 50, width: view.bounds.size.width, height: view.bounds.size.height - 50)
  136. }
  137. }
  138. extension IHServiceVCtr{
  139. //获取楼房信息
  140. func getBuildData() {
  141. IHAreaService.share.getBuildNavData(hotelId: Intermediate.hotelId , requestSuccess: { (dataList) in
  142. self.buildListData = dataList
  143. var titleArray = [String]()
  144. if let datalist = self.buildListData {
  145. for build in datalist{
  146. titleArray.append(build.name!)
  147. }
  148. //默认后去第一个楼房的楼层
  149. if datalist.count > 0 {
  150. let firstBuild = datalist[0]
  151. self.getFloorList(firstBuild.id!)
  152. self.buildId = firstBuild.id
  153. Intermediate.buildId = firstBuild.id!
  154. self.navigationBarTitle = "\(Intermediate.hotelName) · \(firstBuild.name! ?? "")"
  155. }else{
  156. self.navigationBarTitle = "\(Intermediate.hotelName)"
  157. Intermediate.buildId = ""
  158. self.floorList = nil
  159. self.floorId = nil
  160. Intermediate.floorId = ""
  161. }
  162. self.segmentedView.reloadData()
  163. // NotificationCenter.default.post(name: NSNotification.Name(kNotifitionIHServiceManagerReloaddata), object: nil)
  164. }
  165. }) { }
  166. }
  167. func getFloorList(_ buildId:String) {
  168. IHAreaService.share.getRoomListData(buildId: buildId, keyworkds: nil, requestSuccess: { (roomlist) in
  169. let firstFloor = roomlist.first
  170. if roomlist.count > 0 {
  171. self.floorId = firstFloor?.id
  172. Intermediate.floorId = (firstFloor?.id)!
  173. // self.navigationBarTitle = "\(Intermediate.hotelName) · \(firstFloor?.name! ?? "")"
  174. }else{
  175. self.navigationBarTitle = "\(Intermediate.hotelName)"
  176. Intermediate.floorId = ""
  177. }
  178. self.segmentedView.reloadData()
  179. }) {
  180. }
  181. }
  182. func setNavigationBar() {
  183. //导航栏的渲染方式
  184. // self.navigationBarTitle = "\(Intermediate.address)"
  185. let leftItem = UIBarButtonItem(image: UIImage(named: "定位")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(mapAction1))
  186. self.navigationItem.leftBarButtonItem = leftItem
  187. }
  188. @objc func mapAction1(){
  189. log.debug("点击了")
  190. let picker = IHHotelPickerVCtr.shareInstance
  191. self.navigationController?.pushViewController(picker, animated: true)
  192. }
  193. @objc func mapAction(){
  194. log.debug("点击了")
  195. let map = IHDashboardMapMainVCtr()
  196. self.navigationController?.pushViewController(map, animated: true)
  197. }
  198. }
  199. extension IHServiceVCtr:JXSegmentedViewDelegate{
  200. func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
  201. if let dotDataSource = segmentedDataSource as? JXSegmentedDotDataSource {
  202. //先更新数据源的数据
  203. dotDataSource.dotStates[index] = false
  204. //再调用reloadItem(at: index)
  205. segmentedView.reloadItem(at: index)
  206. }
  207. NotificationCenter.default.post(name: NSNotification.Name(kNotifitionIHServiceMangerGetSegmentIndex), object: index)
  208. }
  209. }
  210. extension IHServiceVCtr:JXSegmentedListContainerViewDataSource{
  211. func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
  212. if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
  213. return titleDataSource.dataSource.count
  214. }
  215. return 0
  216. }
  217. func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
  218. let vc = IHServiceListVCtr()
  219. self.type = "\(index)"
  220. // Intermediate.hotelId = self.hotelId ?? ""
  221. // Intermediate.buildId = self.buildId ?? ""
  222. // Intermediate.floorId = self.floorId ?? ""
  223. vc.devType = index
  224. return vc
  225. }
  226. }