// // IHServiceVCtr.swift // Inhealth // // Created by weclouds on 2019/12/10. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import JXSegmentedView let kNotifactionIHServiceVCtrChangeNavitionBarTitle = "kNotifactionIHServiceVCtrChangeNavitionBarTitle" class IHServiceVCtr: UIViewController { var totalItemWidth: CGFloat = 0 //总长度 var segmentedDataSource:JXSegmentedBaseDataSource? var segmentedView = JXSegmentedView() lazy var rightItem: IHServiceRightItem = { let rightItem = IHServiceRightItem(frame: CGRect(x: 0, y: 0, width: 80, height: 20)) return rightItem }() lazy var listContainerView: JXSegmentedListContainerView! = { return JXSegmentedListContainerView(dataSource: self) }() var type :String? = "0" var hotelId :String? = nil var buildId:String? = nil var floorList:[RoomListData]? var floorId:String? = nil{ didSet{ Intermediate.floorId = self.floorId ?? "" } } var buildListData : [DropDownData]?{ didSet{ } } override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(reloadAddressNotify), name: NSNotification.Name(kNotificationIHAddressControllerReloadAddress), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(reloadNavTitle), name: NSNotification.Name(kNotifactionIHServiceVCtrChangeNavitionBarTitle), object: nil) getAddress() setNavigationBar() cinfigSegmentdView() } func getAddress() { if Intermediate.hotelId == "" { log.debug("无值 -\(Intermediate.hotelId )") IHAddressService.share.getFirstHotel { (hotelId, hotelName) in self.getBuildData() } }else{ log.debug("有值 -\(Intermediate.hotelId )") self.getBuildData() } } @objc func reloadNavTitle(_ notif:Notification) { let dict = notif.object as! [String:String] let hotelId = dict["hotelId"] let hotel = dict["hotel"] let buildId = dict["buildId"] let buildName = dict["buildName"] self.navigationBarTitle = "\(hotel!) · \(buildName!)" Intermediate.hotelId = hotelId! Intermediate.hotelName = hotel! Intermediate.buildId = buildId! Intermediate.buildName = buildName! NotificationCenter.default.post(name: NSNotification.Name(kNotifitionIHServiceManagerReloaddata), object: nil) NotificationCenter.default.post(name: NSNotification.Name(kNotificationIHAddressControllerReloadAddress), object: nil) } //刷新地址 @objc func reloadAddressNotify() { self.navigationBarTitle = "\(Intermediate.hotelName) · \(Intermediate.buildName)" log.debug("刷新了") IHAreaService.share.getBuildNavData(hotelId: Intermediate.hotelId , requestSuccess: { (dataList) in self.buildListData = dataList var titleArray = [String]() if let datalist = self.buildListData { for build in datalist{ titleArray.append(build.name!) } //默认后去第一个楼房的楼层 if datalist.count > 0 { let firstBuild = datalist[0] self.buildId = firstBuild.id }else{ Intermediate.buildId = "" self.floorList = nil self.floorId = nil Intermediate.floorId = "" } self.segmentedView.reloadData() NotificationCenter.default.post(name: NSNotification.Name(kNotifitionIHServiceManagerReloaddata), object: nil) } }) { } } deinit { NotificationCenter.default.removeObserver(self) } func cinfigSegmentdView() { // self.navigationBarTitle = "Room 1001" totalItemWidth = UIScreen.main.bounds.size.width - 20*2 view.backgroundColor = .white let titles = ["所有", "灯控","HCL灯控","感应器","空气净化器"] let titleDataSource = JXSegmentedTitleDataSource() titleDataSource.itemContentWidth = totalItemWidth/CGFloat(titles.count) titleDataSource.titles = titles titleDataSource.titleNormalFont = UIFont(name: Alibaba_PuHuiTi_Regular, size: 13)! titleDataSource.titleSelectedFont = UIFont(name: Alibaba_PuHuiTi_Bold, size: 13)! titleDataSource.isTitleMaskEnabled = true titleDataSource.titleNormalColor = UIColor(hexString: "#657085")! titleDataSource.titleSelectedColor = UIColor(hexString: "#FFFFFF")! titleDataSource.itemSpacing = 0 titleDataSource.itemContentWidth = 120 //titleDataSource.isItemSpacingAverageEnabled = false segmentedDataSource = titleDataSource segmentedView.dataSource = segmentedDataSource segmentedView.layer.masksToBounds = true segmentedView.layer.cornerRadius = 15 segmentedView.backgroundColor = UIColor(hexString: "#F6F8F7") segmentedView.delegate = self view.addSubview(segmentedView) let indicator = JXSegmentedIndicatorBackgroundView() indicator.indicatorHeight = 25 indicator.backgroundWidthIncrement = -10 indicator.indicatorColor = UIColor(hexString: "#573F95")! indicator.layer.shadowColor = UIColor(hexString: "#573F95")!.cgColor indicator.layer.shadowRadius = 3 indicator.layer.shadowOffset = CGSize.zero indicator.layer.shadowOpacity = 0.7 segmentedView.indicators = [indicator] segmentedView.listContainer = listContainerView view.addSubview(listContainerView) } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() segmentedView.frame = CGRect(x: 20, y: 10, width: totalItemWidth, height: 30) listContainerView.frame = CGRect(x: 0, y: 50, width: view.bounds.size.width, height: view.bounds.size.height - 50) } } extension IHServiceVCtr{ //获取楼房信息 func getBuildData() { IHAreaService.share.getBuildNavData(hotelId: Intermediate.hotelId , requestSuccess: { (dataList) in self.buildListData = dataList var titleArray = [String]() if let datalist = self.buildListData { for build in datalist{ titleArray.append(build.name!) } //默认后去第一个楼房的楼层 if datalist.count > 0 { let firstBuild = datalist[0] self.getFloorList(firstBuild.id!) self.buildId = firstBuild.id Intermediate.buildId = firstBuild.id! self.navigationBarTitle = "\(Intermediate.hotelName) · \(firstBuild.name! ?? "")" }else{ self.navigationBarTitle = "\(Intermediate.hotelName)" Intermediate.buildId = "" self.floorList = nil self.floorId = nil Intermediate.floorId = "" } self.segmentedView.reloadData() // NotificationCenter.default.post(name: NSNotification.Name(kNotifitionIHServiceManagerReloaddata), object: nil) } }) { } } func getFloorList(_ buildId:String) { IHAreaService.share.getRoomListData(buildId: buildId, keyworkds: nil, requestSuccess: { (roomlist) in let firstFloor = roomlist.first if roomlist.count > 0 { self.floorId = firstFloor?.id Intermediate.floorId = (firstFloor?.id)! // self.navigationBarTitle = "\(Intermediate.hotelName) · \(firstFloor?.name! ?? "")" }else{ self.navigationBarTitle = "\(Intermediate.hotelName)" Intermediate.floorId = "" } self.segmentedView.reloadData() }) { } } func setNavigationBar() { //导航栏的渲染方式 // self.navigationBarTitle = "\(Intermediate.address)" let leftItem = UIBarButtonItem(image: UIImage(named: "定位")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(mapAction1)) self.navigationItem.leftBarButtonItem = leftItem } @objc func mapAction1(){ log.debug("点击了") let picker = IHHotelPickerVCtr.shareInstance self.navigationController?.pushViewController(picker, animated: true) } @objc func mapAction(){ log.debug("点击了") let map = IHDashboardMapMainVCtr() self.navigationController?.pushViewController(map, animated: true) } } extension IHServiceVCtr:JXSegmentedViewDelegate{ func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) { if let dotDataSource = segmentedDataSource as? JXSegmentedDotDataSource { //先更新数据源的数据 dotDataSource.dotStates[index] = false //再调用reloadItem(at: index) segmentedView.reloadItem(at: index) } NotificationCenter.default.post(name: NSNotification.Name(kNotifitionIHServiceMangerGetSegmentIndex), object: index) } } extension IHServiceVCtr:JXSegmentedListContainerViewDataSource{ func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int { if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource { return titleDataSource.dataSource.count } return 0 } func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate { let vc = IHServiceListVCtr() self.type = "\(index)" // Intermediate.hotelId = self.hotelId ?? "" // Intermediate.buildId = self.buildId ?? "" // Intermediate.floorId = self.floorId ?? "" vc.devType = index return vc } }