// // IHAreaVCtr.swift // Inhealth // // Created by weclouds on 2019/12/10. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import JXSegmentedView class IHAreaVCtr: UIViewController { lazy var segmentedDataSource: JXSegmentedTitleDataSource = { return JXSegmentedTitleDataSource() }() //var segmentedDataSource: JXSegmentedBaseDataSource? let segmentedView = JXSegmentedView() lazy var listContainerView: JXSegmentedListContainerView! = { return JXSegmentedListContainerView(dataSource: self) }() lazy var selectedBtn: UIButton = { let button = UIButton(type: .custom) button.backgroundColor = .white button.setTitleColor(UIColor(hexString: "#573F95"), for: .normal) button.setTitle("···", for: .normal) button.titleLabel?.font = UIFont(name: Alibaba_PuHuiTi_Bold, size: 16) return button }() var areaSelectedIndex = 0 lazy var buidlistView: IHAreaItem = { let v = IHAreaItem(frame: CGRect(x: 0, y: 0, width: 100, height: 33)) return v }() var buildListData : [DropDownData]?{ didSet{ var titleArray = [String]() if let datalist = self.buildListData { for build in datalist{ titleArray.append(build.name!) } self.buidlistView.titleArray = titleArray //默认后去第一个楼房的楼层 if datalist.count > 0 { if Intermediate.buildName != "所有" || Intermediate.buildId != ""{ self.buidlistView.defaultDesc = Intermediate.buildName self.buildId = Intermediate.buildId //获取楼层列表 self.getFloorList(Intermediate.buildId) }else{ let firstBuild = datalist[0] self.getFloorList(firstBuild.id!) self.buildId = firstBuild.id } }else{ self.floorList = nil self.reloadSegmentedView([""]) } } } } var hotelId :String? = "0" var buildId:String? = "0" var floorList:[RoomListData]? lazy var addNewBtn: UIButton = { let button = UIButton(type: .custom) button.backgroundColor = .white button.setImage(UIImage(named: "添加"), for: .normal) return button }() var manager = IHAreaManager() override func viewDidLoad() { super.viewDidLoad() setNavigationBar() createUI() addNewBtn.addTarget(self, action: #selector(addNewRoom), for: .touchUpInside) NotificationCenter.default.addObserver(self, selector: #selector(notifyHotleInfo(_:)), name: NSNotification.Name(kNotificationIHDashboardManagerNotifyHotleInfo), object: nil) // var titleArray = [String]() NotificationCenter.default.addObserver(self, selector: #selector(notifyReloadFloor), name: NSNotification.Name(kNotificationIHAreaServiceNotificationReloadFloorList), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(reloadAddressNotify), name: NSNotification.Name(kNotificationIHAddressControllerReloadAddress), object: nil) //选择楼房下拉之后 buidlistView.confirmBlock = {(idx) in let build = self.buildListData![idx] self.buildId = build.id Intermediate.buildId = build.id! Intermediate.buildName = build.name! //获取楼层列表 self.getFloorList(build.id!) } } deinit { NotificationCenter.default.removeObserver(self) } @objc func reloadAddressNotify() { self.navigationBarTitle = Intermediate.hotelName self.hotelId = Intermediate.hotelId IHAreaService.share.getBuildNavData(hotelId: self.hotelId, requestSuccess: { (dataList) in self.buildListData = dataList }) { } } @objc func notifyHotleInfo(_ notif:Notification) { let annotion = notif.object as! IHAnotation self.navigationBarTitle = annotion.name Intermediate.share.selectedCoordinate = annotion.coordinate } @objc func notifyReloadFloor() { getFloorList(self.buildId!) } @objc func addNewRoom () { let vc = IHNewRoomVCtr() vc.floorList = self.floorList vc.buildId = self.buildId self.navigationController?.pushViewController(vc) } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() // log.debug("viewDidLayoutSubviews") } } extension IHAreaVCtr { //如果是教室的时候就显示这里 func getClassRoom(){ let classBtn = UIButton.init(frame: CGRect.init(x: 0, y: KNavBarHeight, width: KSCREENWIDTH, height: 100)) classBtn.backgroundColor = .red classBtn.setTitle("教室", for: .normal) classBtn.addTarget(self, action: #selector(jump), for: .touchUpInside) view.addSubview(classBtn) } @objc func jump() { log.debug("----") } } // extension IHAreaVCtr{ func createUI() { let titles = [String]() // let dataSource = JXSegmentedTitleDataSource() segmentedDataSource.isItemSpacingAverageEnabled = false segmentedDataSource.titles = titles segmentedDataSource.titleSelectedColor = UIColor(hexString: "#573F95")! segmentedDataSource.titleNormalColor = UIColor(hexString: "#92A6C0")! segmentedDataSource.titleNormalFont = UIFont(name: PingFangSC_Semibold, size: 13)! segmentedDataSource.titleSelectedFont = UIFont(name: PingFangSC_Semibold, size: 13)! //配置指示器 //segmentedViewDataSource一定要通过属性强持有!!!!!!!!! segmentedView.dataSource = segmentedDataSource segmentedView.delegate = self segmentedView.backgroundColor = UIColor(hexString: "#F6F8FA") let indicator = JXSegmentedIndicatorLineView() indicator.indicatorColor = UIColor(hexString: "#573F95")! indicator.indicatorWidth = 25 segmentedView.indicators = [indicator] view.addSubview(segmentedView) segmentedView.listContainer = listContainerView view.addSubview(listContainerView) view.addSubview(selectedBtn) view.addSubview(addNewBtn) view.addSubview(buidlistView) // buidlistView.frame = CGRect(x: 0, y: 0, width: 100, height: 33) segmentedView.frame = CGRect(x: 100, y: 0, width: view.bounds.size.width - 33 - 100 , height: 33) listContainerView.frame = CGRect(x: 0, y: 33, width: view.bounds.size.width, height: KSCREENHEIGHT - 33 - KNavBarHeight - KTabbarHeight) selectedBtn.frame = CGRect(x: view.bounds.size.width - 33, y: 0, width: 33, height: 33) addNewBtn.snp.makeConstraints { (make) in make.right.equalToSuperview().offset(-14) make.bottom.equalToSuperview().offset(-10 - KTabbarHeight) make.width.height.equalTo(50) } addNewBtn.layer.masksToBounds = true addNewBtn.layer.cornerRadius = 25 selectedBtn.addTarget(self, action: #selector(selectedFloor), for: .touchUpInside) if Intermediate.hotelId == "" { IHAddressService.share.getFirstHotel { (hotelId, hotelName) in self.hotelId = hotelId self.navigationBarTitle = hotelName IHAreaService.share.getBuildNavData(hotelId: Intermediate.hotelId , requestSuccess: { (dataList) in self.buildListData = dataList }) { } } }else{ self.hotelId = Intermediate.hotelId self.navigationBarTitle = Intermediate.hotelName IHAreaService.share.getBuildNavData(hotelId: Intermediate.hotelId , requestSuccess: { (dataList) in self.buildListData = dataList }) { } } } func setNavigationBar() { //导航栏的渲染方式 self.navigationBarTitle = " " let leftItem = UIBarButtonItem(image: UIImage(named: "定位")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(mapAction1)) self.navigationItem.leftBarButtonItem = leftItem let mapItem = UIBarButtonItem(image: UIImage(named: "map")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(mapAction)) let searchItem = UIBarButtonItem(image: UIImage(named: "搜索")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(searchAction)) let setItem = UIBarButtonItem(image: UIImage(named: "模式设置")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(modeSetAction)) self.navigationItem.rightBarButtonItems = [mapItem,setItem,searchItem] } @objc func selectedFloor(){ let alert = IHFloorListVCtr() alert.floorList = self.floorList alert.selected_def = areaSelectedIndex alert.dismissOnTap = false //禁止手动关闭 alert.modalSize = (width: .full, height: .custom(size: Float(KSCREENHEIGHT - 175))) alert.modalPosition = .bottomCenter alert.cornerRadius = 32 alert.selectedCallback = {(selectedIdx) in self.segmentedView.selectItemAt(index: selectedIdx) self.segmentedView.listContainer?.didClickSelectedItem(at: selectedIdx)//列表滚动 } // alert.show(above: self, completion: nil) self.present(alert, animated: true, completion: nil) } @objc func searchAction() { let vc = IHAreaSearchVCtr() vc.floorList = self.floorList self.navigationController?.pushViewController(vc, animated: false) } @objc func modeSetAction() { let vc = IHCentralizedVCtr() vc.floorList = self.floorList vc.isSetSencenModel = false self.navigationController?.pushViewController(vc, animated: true) } @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) } func reloadSegmentedView(_ titles :[String]) { //默认选择第一个楼层 segmentedDataSource.dataSource.removeAll() segmentedDataSource.titles = titles segmentedView.dataSource = segmentedDataSource segmentedView.reloadData() } func getFloorList(_ buildId:String) { var segmentViewTitles = [String]() IHAreaService.share.getRoomListData(buildId: buildId, keyworkds: nil, requestSuccess: { (roomlist) in for mRoomL in roomlist{ segmentViewTitles.append(mRoomL.name!) // mRoomL.roomList } self.floorList = roomlist log.debug("segmentViewTitles == \(segmentViewTitles)") self.reloadSegmentedView(segmentViewTitles) }) { } } } extension IHAreaVCtr: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) } if areaSelectedIndex < index { //向后滑动 UIView.animate(withDuration: 0.25) { self.buidlistView.x = -100 self.segmentedView.x = 0 self.segmentedView.width = self.view.bounds.size.width - 33 } }else{ //向前滑动 UIView.animate(withDuration: 0.25) { self.buidlistView.x = 0 self.segmentedView.x = 100 self.segmentedView.width = self.view.bounds.size.width - 33 - 100 } } areaSelectedIndex = index } } extension IHAreaVCtr :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 { log.debug("initListAt ==\(index)") let vc = IHAreaListVCtr() if self.floorList != nil { let floor = self.floorList![index] // 传的时候房间列表 roomlist vc.roomList = floor.roomList vc.hotelId = self.hotelId vc.buildId = self.buildId vc.floorId = floor.id } return vc } } extension IHAreaVCtr : IHAddressControllerDelegate{ func selectedAddress(address: String, addressID: String) { self.navigationBarTitle = address // Intermediate.hotelId = addressID Intermediate.hotelId = addressID Intermediate.hotelName = address self.hotelId = addressID IHAreaService.share.getBuildNavData(hotelId: addressID, requestSuccess: { (dataList) in self.buildListData = dataList }) { } } }