123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410 |
- //
- // 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
- }) {
-
- }
- }
-
-
- }
|