Explorar el Código

iOS 添加日历广场和修复关注日历不显示的问题

fancy hace 5 años
padre
commit
813d43b10e
Se han modificado 47 ficheros con 515 adiciones y 127 borrados
  1. 8 0
      o2ios/O2Platform.xcodeproj/project.pbxproj
  2. 28 36
      o2ios/O2Platform/App/Applications/v/O2CollectionViewCell.swift
  3. 83 11
      o2ios/O2Platform/App/Calendar-日程管理/Controller/OOCalendarLeftMenuController.swift
  4. 19 2
      o2ios/O2Platform/App/Calendar-日程管理/Controller/OOCalendarMainMonthViewController.swift
  5. 90 0
      o2ios/O2Platform/App/Calendar-日程管理/Controller/OOCalendarStoreViewController.swift
  6. 61 0
      o2ios/O2Platform/App/Calendar-日程管理/View/CalendarStoreTableViewCell.swift
  7. 8 1
      o2ios/O2Platform/App/Calendar-日程管理/View/CalendarTableViewCell.swift
  8. 144 40
      o2ios/O2Platform/App/Calendar-日程管理/calendar.storyboard
  9. 8 6
      o2ios/O2Platform/App/Login-绑定登录/c/OOBindNodeViewController.swift
  10. 39 13
      o2ios/O2Platform/App/Login-绑定登录/login.storyboard
  11. 4 0
      o2ios/O2Platform/Extension/Notification+Extension.swift
  12. 8 4
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Headers/O2OA_Auth_SDK-Swift.h
  13. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Info.plist
  14. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/arm.swiftsourceinfo
  15. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo
  16. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/arm64.swiftsourceinfo
  17. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/armv7-apple-ios.swiftsourceinfo
  18. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/armv7.swiftsourceinfo
  19. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/i386-apple-ios-simulator.swiftsourceinfo
  20. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/i386.swiftsourceinfo
  21. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo
  22. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/x86_64.swiftsourceinfo
  23. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm.swiftdoc
  24. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm.swiftmodule
  25. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm64-apple-ios.swiftdoc
  26. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm64-apple-ios.swiftmodule
  27. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm64.swiftdoc
  28. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm64.swiftmodule
  29. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/armv7-apple-ios.swiftdoc
  30. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/armv7-apple-ios.swiftmodule
  31. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/armv7.swiftdoc
  32. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/armv7.swiftmodule
  33. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/i386-apple-ios-simulator.swiftdoc
  34. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/i386-apple-ios-simulator.swiftmodule
  35. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/i386.swiftdoc
  36. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/i386.swiftmodule
  37. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc
  38. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/x86_64-apple-ios-simulator.swiftmodule
  39. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/x86_64.swiftdoc
  40. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/x86_64.swiftmodule
  41. BIN
      o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/O2OA_Auth_SDK
  42. 5 0
      o2ios/O2Platform/Framework/Utils/ZonePermissions.swift
  43. 2 0
      o2ios/O2Platform/Framework/scan/LBXPermissions.swift
  44. 1 1
      o2ios/O2Platform/Info.plist
  45. 1 7
      o2ios/O2Platform/UI/ZLCollectionView.swift
  46. 1 1
      o2ios/Podfile
  47. 5 5
      o2ios/Podfile.lock

+ 8 - 0
o2ios/O2Platform.xcodeproj/project.pbxproj

@@ -218,6 +218,8 @@
 		B1750087233C937E003DA7B9 /* IntExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1750086233C937E003DA7B9 /* IntExtensions.swift */; };
 		B1750089233C9B2C003DA7B9 /* Stack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1750088233C9B2C003DA7B9 /* Stack.swift */; };
 		B17BF43022B23758009E36E0 /* SkinViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B17BF42F22B23758009E36E0 /* SkinViewController.swift */; };
+		B17DCCB32519A31900E9EE37 /* OOCalendarStoreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B17DCCB22519A31900E9EE37 /* OOCalendarStoreViewController.swift */; };
+		B17DCCE32519BCC100E9EE37 /* CalendarStoreTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B17DCCE22519BCC100E9EE37 /* CalendarStoreTableViewCell.swift */; };
 		B183987D249AFF64001C6FAA /* IMLocationView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B183987C249AFF64001C6FAA /* IMLocationView.xib */; };
 		B18398AD249B00AA001C6FAA /* IMLocationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18398AC249B00AA001C6FAA /* IMLocationView.swift */; };
 		B18398B0249B079B001C6FAA /* IMLocationChooseController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18398AE249B079B001C6FAA /* IMLocationChooseController.swift */; };
@@ -1389,6 +1391,8 @@
 		B1750086233C937E003DA7B9 /* IntExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IntExtensions.swift; sourceTree = "<group>"; };
 		B1750088233C9B2C003DA7B9 /* Stack.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stack.swift; sourceTree = "<group>"; };
 		B17BF42F22B23758009E36E0 /* SkinViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SkinViewController.swift; sourceTree = "<group>"; };
+		B17DCCB22519A31900E9EE37 /* OOCalendarStoreViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OOCalendarStoreViewController.swift; sourceTree = "<group>"; };
+		B17DCCE22519BCC100E9EE37 /* CalendarStoreTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarStoreTableViewCell.swift; sourceTree = "<group>"; };
 		B183987C249AFF64001C6FAA /* IMLocationView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = IMLocationView.xib; sourceTree = "<group>"; };
 		B18398AC249B00AA001C6FAA /* IMLocationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMLocationView.swift; sourceTree = "<group>"; };
 		B18398AE249B079B001C6FAA /* IMLocationChooseController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMLocationChooseController.swift; sourceTree = "<group>"; };
@@ -2634,6 +2638,7 @@
 				B15F812B21102BBF00B81F35 /* DatePickerView.xib */,
 				B1089692210AD8E400F02267 /* CalendarEventTableViewCell.swift */,
 				B1C1905C2114410D00935829 /* CalendarTableViewCell.swift */,
+				B17DCCE22519BCC100E9EE37 /* CalendarStoreTableViewCell.swift */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -2646,6 +2651,7 @@
 				B1C19024211437E200935829 /* OOCalendarLeftMenuController.swift */,
 				B1FAE9E02115F95800981A25 /* OOCalendarViewController.swift */,
 				8840A991248CDC9D005970A5 /* OOCalendarEditRemarkViewController.swift */,
+				B17DCCB22519A31900E9EE37 /* OOCalendarStoreViewController.swift */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -5295,6 +5301,7 @@
 				E4B888811D9D48F1002E1A46 /* CellTouchImageView.swift in Sources */,
 				E40E246320B55064009F8BE7 /* OOAttanceCheckinHeaderView.swift in Sources */,
 				B107453921A52BC70015F1B2 /* PersonalAPI.swift in Sources */,
+				B17DCCB32519A31900E9EE37 /* OOCalendarStoreViewController.swift in Sources */,
 				E4B8885D1D9D48F1002E1A46 /* O2App.swift in Sources */,
 				E4B697C120764A2D0062F6E8 /* O2DesktopAPI.swift in Sources */,
 				B165CD6A2242093500373B66 /* CoverVerticalFromTopAnimation.swift in Sources */,
@@ -5610,6 +5617,7 @@
 				E45DA8F91DADC06400E0735D /* TaskBarButtonItem.swift in Sources */,
 				E4B888A21D9D48F1002E1A46 /* MJRefreshAutoStateFooter.m in Sources */,
 				B12FD1DF2283D5B700E636BA /* ThemePicker.swift in Sources */,
+				B17DCCE32519BCC100E9EE37 /* CalendarStoreTableViewCell.swift in Sources */,
 				B165CD622242093500373B66 /* BackgroundView.swift in Sources */,
 				B1912BE72146154700AB36E6 /* OOAIViewModel.swift in Sources */,
 				E4C24C4E208D7EDE00E426B0 /* OOContactSearchCell.swift in Sources */,

+ 28 - 36
o2ios/O2Platform/App/Applications/v/O2CollectionViewCell.swift

@@ -21,52 +21,44 @@ class O2CollectionViewCell: UICollectionViewCell {
     
     @IBOutlet weak var appTitle: UILabel!
     
+    private var nowData:O2App?
+    
     override func prepareForReuse() {
         super.prepareForReuse()
         self.appIconImageView.image = nil
     }
     
-    func initImg(app:O2App){
-        
-        let storeBoard = app.storyBoard
-        if storeBoard == "webview" {
-            guard let iconUrl = AppDelegate.o2Collect.generateURLWithAppContextKey(ApplicationContext.applicationContextKey2, query: ApplicationContext.applicationIconQuery, parameter: ["##applicationId##":app.appId! as AnyObject]) else {
-                DDLogError("没有获取到icon的url。。。。。。")
-                return
-            }
-            
-            let url = URL(string: iconUrl)
-            let size = self.appIconImageView.bounds.size
-            if size.width == 0 {
-                self.appIconImageView.bounds.size = CGSize(width: 38, height: 38)
+    func setAppData(app: O2App) {
+        self.nowData = app
+        if let storeBoard = app.storyBoard, storeBoard == "webview" {
+            if let iconUrl = AppDelegate.o2Collect.generateURLWithAppContextKey(ApplicationContext.applicationContextKey2, query: ApplicationContext.applicationIconQuery, parameter: ["##applicationId##":app.appId! as AnyObject])  {
+                let url = URL(string: iconUrl)
+                let size = self.appIconImageView.bounds.size
+                if size.width == 0 {
+                    self.appIconImageView.bounds.size = CGSize(width: 38, height: 38)
+                }
+                self.appIconImageView.image = UIImage(named: app.normalIcon!)
+                self.appIconImageView.highlightedImage = UIImage(named: app.normalIcon!)
+                self.appIconImageView.hnk_setImageFromURL(url!, placeholder: UIImage(named: app.normalIcon!), format: nil, failure: { (err) in
+                    self.appIconImageView.image = UIImage(named: app.normalIcon!)
+                }) { image in
+                    if self.nowData?.appId == app.appId {
+                        self.appIconImageView.image = image
+                        
+                    }
+                }
+            } else{
+                self.appIconImageView.image = UIImage(named: app.normalIcon!)
+                self.appIconImageView.highlightedImage = UIImage(named: app.selectedIcon!)
             }
-            self.appIconImageView.image = UIImage(named: app.normalIcon!)
-            self.appIconImageView.highlightedImage = UIImage(named: app.normalIcon!)
-//            let format = HanekeGlobals.UIKit.formatWithSize(CGSize(width: 38, height: 38), scaleMode: .AspectFill)
-            self.appIconImageView.hnk_setImageFromURL(url!)
-            
-//            let cache = Shared.imageCache
             
-//            let formatName = format.name
-//            cache.addFormat(format)
-//            let fetcher = NetworkFetcher<UIImage>(URL: url!)
-//            cache.fetch(fetcher: fetcher, formatName: formatName).onSuccess { image in
-//                if(self.o2CellTag != nil && self.o2CellTag == indexPath) {
-//                    DDLogError("eeeeeeee\(app.title)")
-//                    self.appIconImageView.bounds.size = CGSize(width: 38, height: 38)
-//                    self.appIconImageView.hnk_setImageFromURL(<#T##URL: URL##URL#>)
-//                    self.appIconImageView.image = image
-//                    self.appIconImageView.highlightedImage = image
-//                }else {
-//                    DDLogError("ddddddddd\(app.title)")
-//                }
-//            }
-        }else {
+        } else{
             self.appIconImageView.image = UIImage(named: app.normalIcon!)
-            self.appIconImageView.highlightedImage = UIImage(named: app.normalIcon!)
+            self.appIconImageView.highlightedImage = UIImage(named: app.selectedIcon!)
         }
-        
+        self.appTitle.text = app.title
     }
+   
     
     
 }

+ 83 - 11
o2ios/O2Platform/App/Calendar-日程管理/Controller/OOCalendarLeftMenuController.swift

@@ -11,6 +11,9 @@ import CocoaLumberjack
 
 class OOCalendarLeftMenuController: UITableViewController {
     
+    
+    var calendarIds:[String] = []
+    
     private var myCalendarList: [OOCalendarInfo] = []
     private var departmentCalendarList: [OOCalendarInfo] = []
     private var followCalendarList: [OOCalendarInfo] = []
@@ -24,6 +27,7 @@ class OOCalendarLeftMenuController: UITableViewController {
         super.viewDidLoad()
         self.navigationItem.title = "日历"
         self.tableView.tableFooterView = UIView(frame: CGRect.zero)
+        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "日历广场", style: .plain, target: self, action: #selector(openCalendars))
         
         addCalendarBtnView.addTapGesture { (tap) in
             DDLogInfo("点击了新增日历。。。。。。")
@@ -37,6 +41,7 @@ class OOCalendarLeftMenuController: UITableViewController {
             self.myCalendarList = calendars.myCalendars ?? []
             self.departmentCalendarList = calendars.unitCalendars ?? []
             self.followCalendarList = calendars.followCalendars ?? []
+            self.loadCalendarIds()
             self.tableView.reloadData()
             }.catch { (error) in
                 DDLogError(error.localizedDescription)
@@ -100,17 +105,22 @@ class OOCalendarLeftMenuController: UITableViewController {
     /**/
     override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell = tableView.dequeueReusableCell(withIdentifier: "calendarTableCell", for: indexPath) as! CalendarTableViewCell
+        
         switch indexPath.section {
-        case 0:
-            cell.renderCalendar(info: self.myCalendarList[indexPath.row])
-            cell.calendarCellDelegate = self
-        case 1:
-            cell.renderCalendar(info: self.departmentCalendarList[indexPath.row])
-        case 2:
-            cell.renderCalendar(info: self.followCalendarList[indexPath.row])
-        default:
-            DDLogInfo("没有的事。。。。。")
+            case 0:
+                cell.renderCalendar(info: self.myCalendarList[indexPath.row], self.calendarIds)
+                break
+            case 1:
+                cell.renderCalendar(info: self.departmentCalendarList[indexPath.row], self.calendarIds)
+                break
+            case 2:
+                cell.renderCalendar(info: self.followCalendarList[indexPath.row], self.calendarIds)
+                break
+            default:
+                DDLogInfo("没有的事。。。。。")
         }
+        
+        cell.calendarCellDelegate = self
         return cell
     }
  
@@ -152,13 +162,75 @@ class OOCalendarLeftMenuController: UITableViewController {
         }
     }
  
-
+    //前一页传过来的ids如果有值 和 这边重新从网络获取的数据进行id比较合并
+    private func loadCalendarIds() {
+        var newCalendarids:[String] = []
+        self.myCalendarList.forEach { (c) in
+            newCalendarids.append(c.id!)
+        }
+        self.followCalendarList.forEach { (c) in
+            newCalendarids.append(c.id!)
+        }
+        self.departmentCalendarList.forEach { (c) in
+            newCalendarids.append(c.id!)
+        }
+        
+        self.calendarIds.forEach { (id) in
+            if !newCalendarids.contains(id) {
+                self.calendarIds.removeFirst(id)
+            }
+        }
+        
+    }
+    //日历广场
+    @objc private func openCalendars() {
+        self.performSegue(withIdentifier: "showCalendarStore", sender: nil)
+    }
+    
 }
 
 // extension
 
 extension OOCalendarLeftMenuController: CalendarCellSwithOnDelegate {
     func click(isOn: Bool, calendar: OOCalendarInfo?) {
-        DDLogInfo("点击了切换 ison:\(isOn), 日历名称: \(calendar?.name)")
+        
+        if !self.calendarIds.isEmpty {
+            if isOn {
+                self.calendarIds.append(calendar!.id!)
+            }else {
+                self.calendarIds.removeFirst(calendar!.id!)
+            }
+        }else { //第一次
+            var newCalendarids:[String] = []
+            self.myCalendarList.forEach { (c) in
+                if c.id == calendar?.id  {
+                    if isOn {
+                        newCalendarids.append(c.id!)
+                    }
+                }else {
+                    newCalendarids.append(c.id!)
+                }
+            }
+            self.followCalendarList.forEach { (c) in
+                if c.id == calendar?.id  {
+                    if isOn {
+                        newCalendarids.append(c.id!)
+                    }
+                }else {
+                    newCalendarids.append(c.id!)
+                }
+            }
+            self.departmentCalendarList.forEach { (c) in
+                if c.id == calendar?.id  {
+                    if isOn {
+                        newCalendarids.append(c.id!)
+                    }
+                }else {
+                    newCalendarids.append(c.id!)
+                }
+            }
+            self.calendarIds = newCalendarids
+        }
+        NotificationCenter.default.post(name: OONotification.calendarIds.notificationName, object: self.calendarIds)
     }
 }

+ 19 - 2
o2ios/O2Platform/App/Calendar-日程管理/Controller/OOCalendarMainMonthViewController.swift

@@ -22,6 +22,7 @@ class OOCalendarMainMonthViewController: UIViewController {
             //todo
         }
     }
+    var calendarIds:[String] = []
     private var eventShowList:[OOCalendarEventInfo] = []
     private var _today: Date?
     private var _selectDay: Date?
@@ -66,6 +67,7 @@ class OOCalendarMainMonthViewController: UIViewController {
         _startTime = DateUtil.share.monthStartDate(date: _today!)
         _endTime = DateUtil.share.monthEndDate(startDate: _startTime!)
         setNavTitle(date: _today!)
+        NotificationCenter.default.addObserver(self, selector: #selector(setTheCalendarIds(_:)), name: OONotification.calendarIds.notificationName, object: nil)
     }
     override func viewWillAppear(_ animated: Bool) {
         loadData()
@@ -77,6 +79,14 @@ class OOCalendarMainMonthViewController: UIViewController {
     }
     
 
+    //设置
+    @objc private func setTheCalendarIds(_ notification:NSNotification) {
+        DDLogDebug("接收到通知消息")
+        if let ids = notification.object as? [String] {
+            DDLogDebug("设置ids:\(ids)")
+            self.calendarIds = ids
+        }
+    }
     /*
     // MARK: - Navigation
     // In a storyboard-based application, you will often want to do a little preparation before navigation
@@ -92,6 +102,13 @@ class OOCalendarMainMonthViewController: UIViewController {
                 destination.eventInfo = self.eventShowList[row]
             }
         }
+        if segue.identifier == "showCalendarList" {
+            if !self.calendarIds.isEmpty {
+                if let dest = segue.destination as? OOCalendarLeftMenuController {
+                    dest.calendarIds = self.calendarIds
+                }
+            }
+        }
     }
  
     //MARK: - private func
@@ -108,8 +125,8 @@ class OOCalendarMainMonthViewController: UIViewController {
         let filter = OOCalendarEventFilter()
         filter.startTime = self._startTime?.toString("yyyy-MM-dd HH:mm:ss")
         filter.endTime = self._endTime?.toString("yyyy-MM-dd HH:mm:ss")
-        filter.createPerson = _currentPerson
-        // TODO calendarIds.....
+        filter.calendarIds = self.calendarIds
+        
         viewModel.filterCalendarEventList(filter: filter).then { (response) -> Promise<[String:[OOCalendarEventInfo]]>  in
             return Promise<[String:[OOCalendarEventInfo]]> { fulfill, reject in
                 var result: [String:[OOCalendarEventInfo]] = [:]

+ 90 - 0
o2ios/O2Platform/App/Calendar-日程管理/Controller/OOCalendarStoreViewController.swift

@@ -0,0 +1,90 @@
+//
+//  OOCalendarStoreViewController.swift
+//  O2Platform
+//
+//  Created by FancyLou on 2020/9/22.
+//  Copyright © 2020 zoneland. All rights reserved.
+//
+
+import UIKit
+import CocoaLumberjack
+
+class OOCalendarStoreViewController: UITableViewController {
+    
+    
+    private var publicCalendarList: [OOCalendarInfo] = []
+    private lazy var viewModel: OOCalendarViewModel = {
+        return OOCalendarViewModel()
+    }()
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.tableView.tableFooterView = UIView(frame: CGRect.zero)
+        self.viewModel.getPublicCalendarList().then { (list)  in
+            self.publicCalendarList = list
+            self.tableView.reloadData()
+        }.catch{ err in
+            DDLogError("请求错误,\(err.localizedDescription)")
+            self.showError(title: "获取日历失败!")
+        }
+    }
+
+    // MARK: - Table view data source
+
+    override func numberOfSections(in tableView: UITableView) -> Int {
+        return 1
+    }
+
+    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return self.publicCalendarList.count
+    }
+    
+    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+        if let cell = tableView.dequeueReusableCell(withIdentifier: "calendarStoreTableCell", for: indexPath) as? CalendarStoreTableViewCell {
+            cell.setOOCalendarInfo(calendar: self.publicCalendarList[indexPath.row])
+            cell.delegate = self
+            return cell
+        }else {
+            return UITableViewCell()
+        }
+    }
+    
+    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
+        return 48.0
+    }
+    
+
+    private func setFollow(follow: Bool, id: String) {
+        for (idx, c) in (self.publicCalendarList.enumerated()) {
+            if c.id == id {
+                c.followed = follow
+                self.publicCalendarList[idx] = c
+                DDLogDebug("设置了。。。\(follow)")
+            }
+        }
+        self.tableView.reloadData()
+    }
+
+}
+
+extension OOCalendarStoreViewController: CalendarStoreCellFollowDelegate {
+    func follow(calendar: OOCalendarInfo?) {
+        if let c = calendar {
+            if c.followed == true {
+                self.viewModel.followCalendarCancel(id: c.id!).then { (v)  in
+                    self.setFollow(follow: false, id: c.id!)
+                }.catch { (err) in
+                    DDLogError("请求错误,\(err.localizedDescription)")
+                    self.showError(title: "取消失败!")
+                }
+            }else {
+                self.viewModel.followCalendar(id: c.id!).then{ v in
+                    self.setFollow(follow: true, id: c.id!)
+                }.catch { (err) in
+                    DDLogError("请求错误,\(err.localizedDescription)")
+                    self.showError(title: "关注失败!")
+                }
+            }
+        }
+    }
+}

+ 61 - 0
o2ios/O2Platform/App/Calendar-日程管理/View/CalendarStoreTableViewCell.swift

@@ -0,0 +1,61 @@
+//
+//  CalendarStoreTableViewCell.swift
+//  O2Platform
+//
+//  Created by FancyLou on 2020/9/22.
+//  Copyright © 2020 zoneland. All rights reserved.
+//
+
+import UIKit
+
+
+protocol CalendarStoreCellFollowDelegate {
+    func follow(calendar: OOCalendarInfo?)
+}
+
+class CalendarStoreTableViewCell: UITableViewCell {
+
+    @IBOutlet weak var calendarColorView: UIView!
+    
+    @IBOutlet weak var calendarTitleLable: UILabel!
+    
+    @IBOutlet weak var calendarOwnerLabel: UILabel!
+    
+    @IBOutlet weak var calendarFllowBtn: UIButton!
+    
+    @IBAction func tapFollowBtn(_ sender: UIButton) {
+        self.delegate?.follow(calendar: self.info)
+    }
+    
+    var delegate: CalendarStoreCellFollowDelegate?
+    private var info: OOCalendarInfo?
+    
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+    }
+
+    override func setSelected(_ selected: Bool, animated: Bool) {
+        super.setSelected(selected, animated: animated)
+
+    }
+    
+    func setOOCalendarInfo(calendar: OOCalendarInfo) {
+        self.info = calendar
+        if let color = calendar.color {
+            self.calendarColorView.backgroundColor = UIColor.init(hex: color)
+        }else {
+            self.calendarColorView.theme_backgroundColor = ThemeColorPicker(keyPath: "Base.base_color")
+        }
+        self.calendarTitleLable.text = calendar.name ?? ""
+        self.calendarOwnerLabel.text = "创建人: \(calendar.createor?.getChinaName() ?? "")"
+        if calendar.followed == true {
+            self.calendarFllowBtn.setTitle("已关注", for: .normal)
+            self.calendarFllowBtn.setTitleColor(toolbar_text_color, for: .normal)
+        }else {
+            self.calendarFllowBtn.setTitle("关注", for: .normal)
+            self.calendarFllowBtn.setTitleColor(base_color, for: .normal)
+        }
+    }
+
+}

+ 8 - 1
o2ios/O2Platform/App/Calendar-日程管理/View/CalendarTableViewCell.swift

@@ -35,7 +35,7 @@ class CalendarTableViewCell: UITableViewCell {
         // Configure the view for the selected state
     }
     
-    func renderCalendar(info: OOCalendarInfo?) {
+    func renderCalendar(info: OOCalendarInfo?, _ calendarIds:[String] = []) {
         self.calendarInfo = info
         if let color = info?.color {
             calendarColorView.backgroundColor = UIColor.init(hex: color)
@@ -43,6 +43,13 @@ class CalendarTableViewCell: UITableViewCell {
             calendarColorView.theme_backgroundColor = ThemeColorPicker(keyPath: "Base.base_color")
         }
         calendarNameView.text = info?.name
+        if !calendarIds.isEmpty {
+            if let id = info?.id, calendarIds.contains(id) {
+                self.calendarSwitch.isOn = true
+            } else {
+                self.calendarSwitch.isOn = false
+            }
+        }
     }
 
 }

+ 144 - 40
o2ios/O2Platform/App/Calendar-日程管理/calendar.storyboard

@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097.2" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="tKt-3P-uQz">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="tKt-3P-uQz">
     <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
@@ -95,7 +96,7 @@
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="M0F-7m-vuY" userLabel="BottomBar">
                                 <rect key="frame" x="0.0" y="627" width="375" height="40"/>
                                 <subviews>
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wt1-wW-6mZ">
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wt1-wW-6mZ">
                                         <rect key="frame" x="16" y="3.5" width="35" height="33"/>
                                         <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
                                         <state key="normal" title="今天"/>
@@ -103,12 +104,12 @@
                                             <action selector="todayAction:" destination="xYY-yG-JGa" eventType="touchUpInside" id="Wd8-Ne-Gwr"/>
                                         </connections>
                                     </button>
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="71T-qf-T8Z">
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="71T-qf-T8Z">
                                         <rect key="frame" x="324" y="3.5" width="35" height="33"/>
                                         <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
                                         <state key="normal" title="日历"/>
                                         <connections>
-                                            <segue destination="L5W-fh-UuH" kind="show" id="DF4-xt-Rlu"/>
+                                            <segue destination="L5W-fh-UuH" kind="show" identifier="showCalendarList" id="DF4-xt-Rlu"/>
                                         </connections>
                                     </button>
                                 </subviews>
@@ -122,6 +123,7 @@
                                 </constraints>
                             </view>
                         </subviews>
+                        <viewLayoutGuide key="safeArea" id="YOP-fD-eOB"/>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                         <constraints>
                             <constraint firstItem="M0F-7m-vuY" firstAttribute="bottom" secondItem="YOP-fD-eOB" secondAttribute="bottom" id="1g7-OC-yaV"/>
@@ -132,7 +134,6 @@
                             <constraint firstItem="M0F-7m-vuY" firstAttribute="leading" secondItem="YOP-fD-eOB" secondAttribute="leading" id="kLc-Qp-gzN"/>
                             <constraint firstItem="KJj-zi-dZB" firstAttribute="top" secondItem="YOP-fD-eOB" secondAttribute="top" id="plZ-2M-2pz"/>
                         </constraints>
-                        <viewLayoutGuide key="safeArea" id="YOP-fD-eOB"/>
                     </view>
                     <navigationItem key="navigationItem" id="4qR-Bd-8HM"/>
                     <connections>
@@ -586,7 +587,7 @@
                                                 <stackView hidden="YES" opaque="NO" contentMode="scaleToFill" distribution="equalSpacing" translatesAutoresizingMaskIntoConstraints="NO" id="vc3-qe-cTN">
                                                     <rect key="frame" x="32" y="90" width="327" height="27"/>
                                                     <subviews>
-                                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qy2-Ll-2FL">
+                                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qy2-Ll-2FL">
                                                             <rect key="frame" x="0.0" y="0.0" width="30" height="27"/>
                                                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                             <fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
@@ -595,7 +596,7 @@
                                                                 <color key="titleShadowColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                             </state>
                                                         </button>
-                                                        <button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hQt-nQ-yDV">
+                                                        <button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hQt-nQ-yDV">
                                                             <rect key="frame" x="49.5" y="0.0" width="30" height="27"/>
                                                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                             <fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
@@ -603,35 +604,35 @@
                                                                 <color key="titleColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                             </state>
                                                         </button>
-                                                        <button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GeN-7S-V8E">
+                                                        <button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GeN-7S-V8E">
                                                             <rect key="frame" x="99" y="0.0" width="30" height="27"/>
                                                             <fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
                                                             <state key="normal" title="周三">
                                                                 <color key="titleColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                             </state>
                                                         </button>
-                                                        <button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xOJ-cj-hMc">
+                                                        <button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xOJ-cj-hMc">
                                                             <rect key="frame" x="148.5" y="0.0" width="30" height="27"/>
                                                             <fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
                                                             <state key="normal" title="周四">
                                                                 <color key="titleColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                             </state>
                                                         </button>
-                                                        <button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Szk-bc-YOL">
+                                                        <button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Szk-bc-YOL">
                                                             <rect key="frame" x="198" y="0.0" width="30" height="27"/>
                                                             <fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
                                                             <state key="normal" title="周五">
                                                                 <color key="titleColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                             </state>
                                                         </button>
-                                                        <button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qxa-Na-eLg">
+                                                        <button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qxa-Na-eLg">
                                                             <rect key="frame" x="247.5" y="0.0" width="30" height="27"/>
                                                             <fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
                                                             <state key="normal" title="周六">
                                                                 <color key="titleColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                                             </state>
                                                         </button>
-                                                        <button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="To9-IU-AE6">
+                                                        <button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="To9-IU-AE6">
                                                             <rect key="frame" x="297" y="0.0" width="30" height="27"/>
                                                             <fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
                                                             <state key="normal" title="周日">
@@ -668,7 +669,7 @@
                                                         <constraint firstAttribute="height" constant="40" id="3Bl-DY-BuS"/>
                                                     </constraints>
                                                 </webView>
-                                                <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OMA-Fp-nFl">
+                                                <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OMA-Fp-nFl">
                                                     <rect key="frame" x="24" y="99" width="327" height="30"/>
                                                     <color key="backgroundColor" red="0.98431372549019602" green="0.27843137254901962" blue="0.27843137254901962" alpha="1" colorSpace="calibratedRGB"/>
                                                     <state key="normal" title="删   除">
@@ -683,7 +684,7 @@
                                                         <action selector="tapDeleteBtn:" destination="Vxk-45-vB1" eventType="touchUpInside" id="d3V-gw-XoF"/>
                                                     </connections>
                                                 </button>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pZL-hd-WYm">
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pZL-hd-WYm">
                                                     <rect key="frame" x="24" y="64" width="62" height="30"/>
                                                     <state key="normal" title="编辑内容"/>
                                                     <connections>
@@ -772,14 +773,14 @@
                         </containerView>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="calendarTableCell" id="hIV-F8-hEt" customClass="CalendarTableViewCell" customModule="O2Platform" customModuleProvider="target">
-                                <rect key="frame" x="0.0" y="78" width="375" height="43.5"/>
+                                <rect key="frame" x="0.0" y="78" width="375" height="41.5"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="hIV-F8-hEt" id="vcr-nc-qYD">
-                                    <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="41.5"/>
                                     <autoresizingMask key="autoresizingMask"/>
                                     <subviews>
                                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nUr-LS-pfg">
-                                            <rect key="frame" x="24" y="13" width="18" height="18"/>
+                                            <rect key="frame" x="24" y="12" width="18" height="18"/>
                                             <color key="backgroundColor" red="0.29803921570000003" green="0.68627450980000004" blue="0.31372549020000001" alpha="1" colorSpace="calibratedRGB"/>
                                             <constraints>
                                                 <constraint firstAttribute="width" constant="18" id="5lB-4A-bhs"/>
@@ -792,17 +793,13 @@
                                             </userDefinedRuntimeAttributes>
                                         </view>
                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的日历" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="onv-WL-BxB">
-                                            <rect key="frame" x="52" y="11.5" width="263" height="20.5"/>
+                                            <rect key="frame" x="52" y="0.0" width="246" height="41.5"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
                                             <nil key="highlightedColor"/>
                                         </label>
                                         <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BTT-cO-3bH">
-                                            <rect key="frame" x="325" y="10" width="34" height="24"/>
-                                            <constraints>
-                                                <constraint firstAttribute="height" constant="24" id="vBm-Id-XQ9"/>
-                                                <constraint firstAttribute="width" constant="32" id="ySg-20-HOz"/>
-                                            </constraints>
+                                            <rect key="frame" x="308" y="5" width="51" height="31.5"/>
                                             <connections>
                                                 <action selector="calendarSwitchTap:" destination="hIV-F8-hEt" eventType="valueChanged" id="cgk-KU-AwN"/>
                                             </connections>
@@ -810,11 +807,13 @@
                                     </subviews>
                                     <constraints>
                                         <constraint firstItem="nUr-LS-pfg" firstAttribute="centerY" secondItem="vcr-nc-qYD" secondAttribute="centerY" id="0fm-s1-CUn"/>
-                                        <constraint firstItem="BTT-cO-3bH" firstAttribute="centerY" secondItem="vcr-nc-qYD" secondAttribute="centerY" id="JcJ-17-Hw0"/>
-                                        <constraint firstItem="onv-WL-BxB" firstAttribute="centerY" secondItem="vcr-nc-qYD" secondAttribute="centerY" id="MiO-8E-It5"/>
+                                        <constraint firstItem="BTT-cO-3bH" firstAttribute="top" secondItem="vcr-nc-qYD" secondAttribute="top" constant="5" id="6dq-te-AwO"/>
                                         <constraint firstItem="BTT-cO-3bH" firstAttribute="leading" secondItem="onv-WL-BxB" secondAttribute="trailing" constant="10" id="ZWp-uB-5KZ"/>
+                                        <constraint firstAttribute="bottom" secondItem="onv-WL-BxB" secondAttribute="bottom" id="asd-bw-2ru"/>
                                         <constraint firstItem="onv-WL-BxB" firstAttribute="leading" secondItem="nUr-LS-pfg" secondAttribute="trailing" constant="10" id="bbS-0Q-jnE"/>
                                         <constraint firstAttribute="trailing" secondItem="BTT-cO-3bH" secondAttribute="trailing" constant="18" id="kUb-UW-eTW"/>
+                                        <constraint firstAttribute="bottom" secondItem="BTT-cO-3bH" secondAttribute="bottom" constant="5" id="m8U-oP-bSE"/>
+                                        <constraint firstItem="onv-WL-BxB" firstAttribute="top" secondItem="vcr-nc-qYD" secondAttribute="top" id="osg-a9-knU"/>
                                         <constraint firstItem="nUr-LS-pfg" firstAttribute="leading" secondItem="vcr-nc-qYD" secondAttribute="leading" constant="24" id="sih-O1-7td"/>
                                     </constraints>
                                 </tableViewCellContentView>
@@ -834,6 +833,7 @@
                     <connections>
                         <outlet property="addCalendarBtnView" destination="KcX-qQ-DIF" id="kAk-es-Ig5"/>
                         <segue destination="6hI-Zf-Dol" kind="show" identifier="showCalendarSegue" id="dTl-zx-3mn"/>
+                        <segue destination="Bfb-e1-6Y0" kind="show" identifier="showCalendarStore" id="6j2-dN-seh"/>
                     </connections>
                 </tableViewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="ffa-JI-hF2" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -868,6 +868,7 @@
                                 </subviews>
                             </stackView>
                         </subviews>
+                        <viewLayoutGuide key="safeArea" id="VP9-5C-v7b"/>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                         <constraints>
                             <constraint firstItem="9kE-CW-qbe" firstAttribute="leading" secondItem="lIW-wy-yeL" secondAttribute="leadingMargin" constant="16" id="5rg-Vk-iwb"/>
@@ -875,7 +876,6 @@
                             <constraint firstItem="9kE-CW-qbe" firstAttribute="top" secondItem="lIW-wy-yeL" secondAttribute="topMargin" id="DIn-lL-K5V"/>
                             <constraint firstAttribute="bottomMargin" secondItem="9kE-CW-qbe" secondAttribute="bottom" id="vQB-at-qUU"/>
                         </constraints>
-                        <viewLayoutGuide key="safeArea" id="VP9-5C-v7b"/>
                     </view>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="6Z9-K4-mSY" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -901,16 +901,16 @@
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="例如:我的日历" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="E1I-tu-3OF">
-                                                    <rect key="frame" x="16" y="10" width="349" height="24"/>
-                                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                                    <rect key="frame" x="16" y="5" width="349" height="34"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                                     <textInputTraits key="textInputTraits"/>
                                                 </textField>
                                             </subviews>
                                             <constraints>
                                                 <constraint firstAttribute="trailing" secondItem="E1I-tu-3OF" secondAttribute="trailing" constant="10" id="0zd-rU-i9l"/>
-                                                <constraint firstAttribute="bottom" secondItem="E1I-tu-3OF" secondAttribute="bottom" constant="10" id="1Ai-iW-Gr4"/>
+                                                <constraint firstAttribute="bottom" secondItem="E1I-tu-3OF" secondAttribute="bottom" constant="5" id="1Ai-iW-Gr4"/>
                                                 <constraint firstItem="E1I-tu-3OF" firstAttribute="leading" secondItem="ey7-OW-MZr" secondAttribute="leading" constant="16" id="ug4-Pk-Lb7"/>
-                                                <constraint firstItem="E1I-tu-3OF" firstAttribute="top" secondItem="ey7-OW-MZr" secondAttribute="top" constant="10" id="xW5-Or-ZFH"/>
+                                                <constraint firstItem="E1I-tu-3OF" firstAttribute="top" secondItem="ey7-OW-MZr" secondAttribute="top" constant="5" id="xW5-Or-ZFH"/>
                                             </constraints>
                                         </tableViewCellContentView>
                                     </tableViewCell>
@@ -927,7 +927,7 @@
                                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                     <textInputTraits key="textInputTraits"/>
                                                 </textField>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GjW-u2-fg5">
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GjW-u2-fg5">
                                                     <rect key="frame" x="315" y="6" width="44" height="32"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="44" id="rno-Bo-Yb6"/>
@@ -1233,7 +1233,7 @@
                                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                     <textInputTraits key="textInputTraits"/>
                                                 </textField>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kae-RP-FyB">
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kae-RP-FyB">
                                                     <rect key="frame" x="315" y="6" width="44" height="32"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="44" id="Hwl-ng-8iq"/>
@@ -1268,7 +1268,7 @@
                                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                     <textInputTraits key="textInputTraits"/>
                                                 </textField>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m4R-gF-vOd">
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m4R-gF-vOd">
                                                     <rect key="frame" x="315" y="6" width="44" height="32"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="44" id="L1T-hn-46f"/>
@@ -1303,7 +1303,7 @@
                                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                     <textInputTraits key="textInputTraits"/>
                                                 </textField>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Yrc-Ws-oZH">
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Yrc-Ws-oZH">
                                                     <rect key="frame" x="315" y="6" width="44" height="32"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="44" id="qzS-jN-n7Y"/>
@@ -1338,7 +1338,7 @@
                                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                     <textInputTraits key="textInputTraits"/>
                                                 </textField>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ueU-we-edj">
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ueU-we-edj">
                                                     <rect key="frame" x="315" y="6" width="44" height="32"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="44" id="LGG-fL-DaH"/>
@@ -1372,7 +1372,7 @@
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是否启用" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qf3-2G-kRZ">
-                                                    <rect key="frame" x="74" y="19" width="70" height="11"/>
+                                                    <rect key="frame" x="74" y="11" width="70" height="27"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <nil key="textColor"/>
                                                     <nil key="highlightedColor"/>
@@ -1385,8 +1385,8 @@
                                                 </switch>
                                             </subviews>
                                             <constraints>
-                                                <constraint firstAttribute="bottomMargin" secondItem="qf3-2G-kRZ" secondAttribute="bottom" constant="8" id="GjC-rC-dNw"/>
-                                                <constraint firstItem="qf3-2G-kRZ" firstAttribute="top" secondItem="W0o-2J-yuQ" secondAttribute="topMargin" constant="8" id="Oda-cU-M70"/>
+                                                <constraint firstAttribute="bottomMargin" secondItem="qf3-2G-kRZ" secondAttribute="bottom" id="GjC-rC-dNw"/>
+                                                <constraint firstItem="qf3-2G-kRZ" firstAttribute="top" secondItem="W0o-2J-yuQ" secondAttribute="topMargin" id="Oda-cU-M70"/>
                                                 <constraint firstItem="GTC-NP-gGg" firstAttribute="leading" secondItem="W0o-2J-yuQ" secondAttribute="leading" constant="16" id="goD-5C-BW3"/>
                                                 <constraint firstItem="GTC-NP-gGg" firstAttribute="top" secondItem="W0o-2J-yuQ" secondAttribute="top" constant="8" id="v4N-sc-Chi"/>
                                                 <constraint firstItem="qf3-2G-kRZ" firstAttribute="leading" secondItem="GTC-NP-gGg" secondAttribute="trailing" constant="10" id="xtU-RP-ae1"/>
@@ -1420,6 +1420,107 @@
             </objects>
             <point key="canvasLocation" x="1648.8" y="97.601199400299862"/>
         </scene>
+        <!--日历广场-->
+        <scene sceneID="g3n-kS-6vi">
+            <objects>
+                <tableViewController title="日历广场" id="Bfb-e1-6Y0" customClass="OOCalendarStoreViewController" customModule="O2Platform" customModuleProvider="target" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" id="cef-ke-3He">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="calendarStoreTableCell" rowHeight="48" id="Ndh-HP-3ck" customClass="CalendarStoreTableViewCell" customModule="O2Platform" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="28" width="375" height="48"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Ndh-HP-3ck" id="tLV-v6-ZMd">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                    <subviews>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vnc-mF-rIl">
+                                            <rect key="frame" x="34" y="15" width="18" height="18"/>
+                                            <color key="backgroundColor" red="0.42352941176470588" green="0.42352941176470588" blue="0.42352941176470588" alpha="1" colorSpace="calibratedRGB"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="18" id="IF3-GM-Qgv"/>
+                                                <constraint firstAttribute="height" constant="18" id="vvg-DX-rFF"/>
+                                            </constraints>
+                                            <userDefinedRuntimeAttributes>
+                                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                                    <real key="value" value="9"/>
+                                                </userDefinedRuntimeAttribute>
+                                            </userDefinedRuntimeAttributes>
+                                        </view>
+                                        <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillProportionally" translatesAutoresizingMaskIntoConstraints="NO" id="JVL-J4-yhe">
+                                            <rect key="frame" x="60" y="0.0" width="209" height="48"/>
+                                            <subviews>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="公开的日历" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VmY-o1-rF9">
+                                                    <rect key="frame" x="0.0" y="0.0" width="209" height="26"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="创建人:xxx" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jle-N2-9Fg">
+                                                    <rect key="frame" x="0.0" y="26" width="209" height="22"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                                    <color key="textColor" red="0.57045853140000002" green="0.57047235969999999" blue="0.57046490910000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                        </stackView>
+                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uuR-AT-jup">
+                                            <rect key="frame" x="293" y="8" width="64" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="64" id="bXP-Fz-asJ"/>
+                                            </constraints>
+                                            <state key="normal" title="关注">
+                                                <color key="titleColor" red="0.98431372549999996" green="0.2784313725" blue="0.2784313725" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            </state>
+                                            <userDefinedRuntimeAttributes>
+                                                <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
+                                                    <real key="value" value="1"/>
+                                                </userDefinedRuntimeAttribute>
+                                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                                    <real key="value" value="5"/>
+                                                </userDefinedRuntimeAttribute>
+                                                <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
+                                                    <color key="value" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                </userDefinedRuntimeAttribute>
+                                            </userDefinedRuntimeAttributes>
+                                            <connections>
+                                                <action selector="tapFollowBtn:" destination="Ndh-HP-3ck" eventType="touchUpInside" id="nTo-6K-MKs"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="JVL-J4-yhe" firstAttribute="top" secondItem="tLV-v6-ZMd" secondAttribute="top" id="5B6-la-gs1"/>
+                                        <constraint firstItem="vnc-mF-rIl" firstAttribute="leading" secondItem="tLV-v6-ZMd" secondAttribute="leadingMargin" constant="18" id="JeK-qR-yPw"/>
+                                        <constraint firstItem="JVL-J4-yhe" firstAttribute="leading" secondItem="vnc-mF-rIl" secondAttribute="trailing" constant="8" id="KJx-6z-vsd"/>
+                                        <constraint firstAttribute="bottom" secondItem="uuR-AT-jup" secondAttribute="bottom" constant="8" id="M7a-F5-8fa"/>
+                                        <constraint firstAttribute="bottom" secondItem="JVL-J4-yhe" secondAttribute="bottom" id="a8N-Zw-VFh"/>
+                                        <constraint firstItem="uuR-AT-jup" firstAttribute="top" secondItem="tLV-v6-ZMd" secondAttribute="top" constant="8" id="erk-KH-Qzk"/>
+                                        <constraint firstItem="uuR-AT-jup" firstAttribute="leading" secondItem="JVL-J4-yhe" secondAttribute="trailing" constant="24" id="nT4-A6-3Hj"/>
+                                        <constraint firstItem="vnc-mF-rIl" firstAttribute="centerY" secondItem="tLV-v6-ZMd" secondAttribute="centerY" id="wXx-cu-GTi"/>
+                                        <constraint firstAttribute="trailing" secondItem="uuR-AT-jup" secondAttribute="trailing" constant="18" id="zJN-ZN-tdX"/>
+                                    </constraints>
+                                </tableViewCellContentView>
+                                <connections>
+                                    <outlet property="calendarColorView" destination="vnc-mF-rIl" id="bI3-7K-9dZ"/>
+                                    <outlet property="calendarFllowBtn" destination="uuR-AT-jup" id="E7a-t1-YTJ"/>
+                                    <outlet property="calendarOwnerLabel" destination="jle-N2-9Fg" id="gUV-lw-0E5"/>
+                                    <outlet property="calendarTitleLable" destination="VmY-o1-rF9" id="A4w-vW-DYW"/>
+                                </connections>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="Bfb-e1-6Y0" id="ol9-J4-wab"/>
+                            <outlet property="delegate" destination="Bfb-e1-6Y0" id="WKp-wX-oG4"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" id="Rpv-5V-KGp"/>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="NEG-LV-WH8" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1649" y="838"/>
+        </scene>
         <!--编辑内容-->
         <scene sceneID="d6n-Ns-IYR">
             <objects>
@@ -1427,8 +1528,8 @@
                     <view key="view" contentMode="scaleToFill" id="uZ4-K3-7u9">
                         <rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                         <viewLayoutGuide key="safeArea" id="x7Q-Xj-laR"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                     </view>
                     <navigationItem key="navigationItem" title="编辑内容" id="8m9-cj-hJa">
                         <barButtonItem key="leftBarButtonItem" title="取消" landscapeImage="icon_off_grey" id="Nbx-21-hlf">
@@ -1476,5 +1577,8 @@
         <image name="icon_shijian" width="22" height="22"/>
         <image name="icon_tixing" width="22" height="22"/>
         <image name="icon_zengjia" width="22" height="22"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
     </resources>
 </document>

+ 8 - 6
o2ios/O2Platform/App/Login-绑定登录/c/OOBindNodeViewController.swift

@@ -57,13 +57,15 @@ class OOBindNodeViewController:OOBaseViewController,UITableViewDataSource,UITabl
         headerView1.configTitle(title: "选择服务节点", actionTitle: nil)
         headerView1.frame = CGRect(x: 0, y: 0, width: kScreenW, height: 66)
         headerView1.theme_backgroundColor = ThemeColorPicker(keyPath: "Base.base_color")
-        if #available(iOS 11, *) {
-            self.tableView.contentInsetAdjustmentBehavior = .never
-            self.view.addSubview(headerView1)
-        }else{
-            self.view.addSubview(headerView1)
-        }
+//        if #available(iOS 11, *) {
+//            self.tableView.contentInsetAdjustmentBehavior = .never
+//            self.view.addSubview(headerView1)
+//        }else{
+//
+//        }
+        self.view.addSubview(headerView1)
         self.tableView.tableHeaderView = headerView
+        headerView.contentMode = .scaleAspectFill
         self.tableView.tableFooterView = footerView
         self.tableView.dataSource = self
         self.tableView.delegate = self

+ 39 - 13
o2ios/O2Platform/App/Login-绑定登录/login.storyboard

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="2FW-oB-Z7W">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="2FW-oB-Z7W">
     <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
@@ -121,7 +121,7 @@
                                             </userDefinedRuntimeAttribute>
                                         </userDefinedRuntimeAttributes>
                                     </textField>
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RFi-UF-mda" customClass="OOBaseUIButton" customModule="O2Platform" customModuleProvider="target">
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RFi-UF-mda" customClass="OOBaseUIButton" customModule="O2Platform" customModuleProvider="target">
                                         <rect key="frame" x="0.0" y="140" width="343" height="40"/>
                                         <color key="backgroundColor" red="0.98431372549999996" green="0.2784313725" blue="0.2784313725" alpha="1" colorSpace="calibratedRGB"/>
                                         <constraints>
@@ -183,7 +183,7 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="dnx-pt-seb">
-                                <rect key="frame" x="0.0" y="66" width="375" height="601"/>
+                                <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <inset key="separatorInset" minX="15" minY="0.0" maxX="15" maxY="0.0"/>
                                 <prototypes>
@@ -195,14 +195,14 @@
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_liebiao1" highlightedImage="icon_liebiao1" translatesAutoresizingMaskIntoConstraints="NO" id="eSE-rC-sdC">
-                                                    <rect key="frame" x="15" y="11" width="22" height="22"/>
+                                                    <rect key="frame" x="16" y="11" width="22" height="22"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="22" id="lbS-6x-LVf"/>
                                                         <constraint firstAttribute="height" constant="22" id="rwO-Dc-TVx"/>
                                                     </constraints>
                                                 </imageView>
                                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ANNA组织" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="86p-zE-rWI">
-                                                    <rect key="frame" x="48" y="12.5" width="279" height="18.5"/>
+                                                    <rect key="frame" x="49" y="12.5" width="277" height="18.5"/>
                                                     <constraints>
                                                         <constraint firstAttribute="height" constant="18.5" id="utf-Qz-Nga"/>
                                                     </constraints>
@@ -211,7 +211,7 @@
                                                     <nil key="highlightedColor"/>
                                                 </label>
                                                 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_circle" highlightedImage="icon__ok2_click" translatesAutoresizingMaskIntoConstraints="NO" id="6pg-2l-8AO">
-                                                    <rect key="frame" x="338" y="11" width="22" height="22"/>
+                                                    <rect key="frame" x="337" y="11" width="22" height="22"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="22" id="Kh2-7z-vhD"/>
                                                         <constraint firstAttribute="height" constant="22" id="eDN-ft-sSR"/>
@@ -242,7 +242,7 @@
                             <constraint firstItem="dnx-pt-seb" firstAttribute="leading" secondItem="xoM-4c-VPc" secondAttribute="leading" id="1dK-o5-Mxg"/>
                             <constraint firstItem="r53-28-RdP" firstAttribute="top" secondItem="dnx-pt-seb" secondAttribute="bottom" id="4j3-Ja-xbw"/>
                             <constraint firstAttribute="trailing" secondItem="dnx-pt-seb" secondAttribute="trailing" id="7lf-X7-E8I"/>
-                            <constraint firstItem="dnx-pt-seb" firstAttribute="top" secondItem="xoM-4c-VPc" secondAttribute="top" constant="66" id="nU3-HT-gYj"/>
+                            <constraint firstItem="dnx-pt-seb" firstAttribute="top" secondItem="xoM-4c-VPc" secondAttribute="top" id="nU3-HT-gYj"/>
                         </constraints>
                     </view>
                     <connections>
@@ -343,7 +343,7 @@
                                             </userDefinedRuntimeAttribute>
                                         </userDefinedRuntimeAttributes>
                                     </textField>
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bkV-iJ-Vkd" customClass="OOBaseUIButton" customModule="O2Platform" customModuleProvider="target">
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bkV-iJ-Vkd" customClass="OOBaseUIButton" customModule="O2Platform" customModuleProvider="target">
                                         <rect key="frame" x="0.0" y="140" width="343" height="40"/>
                                         <color key="backgroundColor" red="0.98431372549999996" green="0.2784313725" blue="0.2784313725" alpha="1" colorSpace="calibratedRGB"/>
                                         <constraints>
@@ -372,7 +372,7 @@
                                 <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sdH-Rd-Uu5">
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sdH-Rd-Uu5">
                                 <rect key="frame" x="243" y="363" width="100" height="35"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="35" id="McM-ZF-FyV"/>
@@ -385,7 +385,7 @@
                                     <action selector="btnReBindNodeAction:" destination="a0S-mR-qpd" eventType="touchUpInside" id="qQA-3H-Xcv"/>
                                 </connections>
                             </button>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VU6-Hu-1I4">
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VU6-Hu-1I4">
                                 <rect key="frame" x="32" y="363" width="100" height="35"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="35" id="DyV-tz-NyM"/>
@@ -454,7 +454,7 @@
                                     <constraint firstAttribute="height" constant="120" id="bqd-au-JQf"/>
                                 </constraints>
                             </imageView>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q9Q-4z-Rfe" customClass="OOBaseUIButton" customModule="O2Platform" customModuleProvider="target">
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q9Q-4z-Rfe" customClass="OOBaseUIButton" customModule="O2Platform" customModuleProvider="target">
                                 <rect key="frame" x="26" y="270" width="323" height="40"/>
                                 <color key="backgroundColor" red="0.98431372549999996" green="0.2784313725" blue="0.2784313725" alpha="1" colorSpace="calibratedRGB"/>
                                 <constraints>
@@ -473,7 +473,7 @@
                                     <action selector="tapBioAuthLogin:" destination="cft-aF-Yb3" eventType="touchUpInside" id="hAV-fd-WqM"/>
                                 </connections>
                             </button>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kLj-hW-IW3">
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kLj-hW-IW3">
                                 <rect key="frame" x="257" y="330" width="92" height="30"/>
                                 <state key="normal" title="其它方式登录"/>
                                 <connections>
@@ -503,6 +503,32 @@
             <point key="canvasLocation" x="2825" y="101"/>
         </scene>
     </scenes>
+    <designables>
+        <designable name="Nr9-8F-s20">
+            <size key="intrinsicContentSize" width="71.5" height="18.5"/>
+        </designable>
+        <designable name="ObS-rR-SV6">
+            <size key="intrinsicContentSize" width="86" height="18.5"/>
+        </designable>
+        <designable name="Q9Q-4z-Rfe">
+            <size key="intrinsicContentSize" width="92" height="30"/>
+        </designable>
+        <designable name="RFi-UF-mda">
+            <size key="intrinsicContentSize" width="45" height="33"/>
+        </designable>
+        <designable name="bkV-iJ-Vkd">
+            <size key="intrinsicContentSize" width="31" height="30"/>
+        </designable>
+        <designable name="f1x-qE-7k6">
+            <size key="intrinsicContentSize" width="86" height="18.5"/>
+        </designable>
+        <designable name="lEi-tc-UYF">
+            <size key="intrinsicContentSize" width="86" height="18.5"/>
+        </designable>
+        <designable name="uXf-3e-9Bs">
+            <size key="intrinsicContentSize" width="100" height="18.5"/>
+        </designable>
+    </designables>
     <resources>
         <image name="icon__ok2_click" width="22" height="22"/>
         <image name="icon_circle" width="22" height="22"/>

+ 4 - 0
o2ios/O2Platform/Extension/Notification+Extension.swift

@@ -22,8 +22,12 @@ enum OONotification:String {
     //重载门户webview
     case reloadPortal
     
+    //websocket使用
     case websocket
     
+    //日程管理Main中使用
+    case calendarIds
+    
     
     
     var stringValue:String {

+ 8 - 4
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Headers/O2OA_Auth_SDK-Swift.h

@@ -1,6 +1,8 @@
 #if 0
 #elif defined(__arm64__) && __arm64__
-// Generated by Apple Swift version 5.2 (swiftlang-1103.0.32.1 clang-1103.0.32.29)
+// Generated by Apple Swift version 5.3 (swiftlang-1200.0.29.2 clang-1200.0.30.1)
+#ifndef O2OA_AUTH_SDK_SWIFT_H
+#define O2OA_AUTH_SDK_SWIFT_H
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wgcc-compat"
 
@@ -410,14 +412,16 @@ SWIFT_CLASS("_TtC13O2OA_Auth_SDK16O2WebServerModel")
 @end
 
 
-
 #if __has_attribute(external_source_symbol)
 # pragma clang attribute pop
 #endif
 #pragma clang diagnostic pop
+#endif
 
 #elif defined(__ARM_ARCH_7A__) && __ARM_ARCH_7A__
-// Generated by Apple Swift version 5.2 (swiftlang-1103.0.32.1 clang-1103.0.32.29)
+// Generated by Apple Swift version 5.3 (swiftlang-1200.0.29.2 clang-1200.0.30.1)
+#ifndef O2OA_AUTH_SDK_SWIFT_H
+#define O2OA_AUTH_SDK_SWIFT_H
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wgcc-compat"
 
@@ -827,10 +831,10 @@ SWIFT_CLASS("_TtC13O2OA_Auth_SDK16O2WebServerModel")
 @end
 
 
-
 #if __has_attribute(external_source_symbol)
 # pragma clang attribute pop
 #endif
 #pragma clang diagnostic pop
+#endif
 
 #endif

BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Info.plist


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/arm.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/arm64.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/armv7-apple-ios.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/armv7.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/i386-apple-ios-simulator.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/i386.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/Project/x86_64.swiftsourceinfo


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm64-apple-ios.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm64-apple-ios.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm64.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/arm64.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/armv7-apple-ios.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/armv7-apple-ios.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/armv7.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/armv7.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/i386-apple-ios-simulator.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/i386-apple-ios-simulator.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/i386.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/i386.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/x86_64-apple-ios-simulator.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/x86_64.swiftdoc


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/Modules/O2OA_Auth_SDK.swiftmodule/x86_64.swiftmodule


BIN
o2ios/O2Platform/Framework/O2OA_Auth_SDK.framework/O2OA_Auth_SDK


+ 5 - 0
o2ios/O2Platform/Framework/Utils/ZonePermissions.swift

@@ -59,6 +59,11 @@ public class ZonePermissions: NSObject {
                     callback(ZoneAuthorizationStatus.zAuthorizationStatusRestricted)
                 }
                 
+            case .limited:
+                DispatchQueue.main.async {
+                    callback(ZoneAuthorizationStatus.zAuthorizationStatusAuthorized)
+                    
+                }
             }
         }else {
             DispatchQueue.main.async {

+ 2 - 0
o2ios/O2Platform/Framework/scan/LBXPermissions.swift

@@ -30,6 +30,8 @@ class LBXPermissions: NSObject {
                     comletion(status == PHAuthorizationStatus.authorized ? true:false)
                 }
             })
+        case .limited:
+            comletion(true)
         }
     }
     

+ 1 - 1
o2ios/O2Platform/Info.plist

@@ -167,7 +167,7 @@
 	<key>UIViewControllerBasedStatusBarAppearance</key>
 	<true/>
 	<key>o2 app version url</key>
-	<string>https://sample.o2oa.net/app/app.json</string>
+	<string>https://app.o2oa.net/download/app.json</string>
 	<key>o2 server</key>
 	<dict>
 		<key>centerContext</key>

+ 1 - 7
o2ios/O2Platform/UI/ZLCollectionView.swift

@@ -44,13 +44,7 @@ extension ZLCollectionView:UICollectionViewDataSource{
         
         let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "itemCell", for: indexPath) as!  O2CollectionViewCell
         let app = self.apps[indexPath.section][indexPath.row]
-        if app.storyBoard! == "webview" {
-            cell.initImg(app: app)
-        }else{
-            cell.appIconImageView.image = UIImage(named: app.normalIcon!)
-            cell.appIconImageView.highlightedImage = UIImage(named: app.selectedIcon!)
-        }
-        cell.appTitle.text = app.title
+        cell.setAppData(app: app)
         return cell
     }
 }

+ 1 - 1
o2ios/Podfile

@@ -58,7 +58,7 @@ target 'O2Platform' do
     pod 'SDWebImage', '~>4.0'
     
     pod 'BSImagePicker', '~> 3.1.0'
-    pod 'Eureka', '~> 5.2.1'
+    pod 'Eureka', '~> 5.3.0'
     pod 'SwiftyTimer'
 
     pod 'Charts'

+ 5 - 5
o2ios/Podfile.lock

@@ -20,7 +20,7 @@ PODS:
   - CocoaLumberjack/Swift (3.5.3):
     - CocoaLumberjack/Core
   - EmptyDataSet-Swift (5.0.0)
-  - Eureka (5.2.1)
+  - Eureka (5.3.0)
   - FMDB (2.6.2):
     - FMDB/standard (= 2.6.2)
   - FMDB/standard (2.6.2)
@@ -89,7 +89,7 @@ DEPENDENCIES:
   - Chrysan
   - CocoaLumberjack/Swift (~> 3.5)
   - EmptyDataSet-Swift (~> 5.0.0)
-  - Eureka (~> 5.2.1)
+  - Eureka (~> 5.3.0)
   - FMDB (~> 2.6.2)
   - FSCalendar
   - HandyJSON (~> 5.0.2-beta)
@@ -179,7 +179,7 @@ SPEC CHECKSUMS:
   AlamofireImage: 78d67ccbb763d87ba44b21583d2153500a195630
   AlamofireNetworkActivityIndicator: 18346ff6d770d9513d0ac6f2d99706f40f93dbaa
   AlamofireObjectMapper: 3395e698901d8b0e6f48b7d0c43bd47875325102
-  BaiduMapKit: 075465cf7134d0ebf81796b93a59d504c350d9a4
+  BaiduMapKit: 0454428c2475489e3307c55eb67b5765b2cf7b05
   BetterSegmentedControl: b27bddbdff29b6cae988678d6cd106858986cd03
   BMKLocationKit: fd3d6b4a9a3a1a2763819f56b780bda5fc5b8726
   BSImagePicker: 86f28e0f63b78d35fec7c6f0174b7af9e6f1431e
@@ -188,7 +188,7 @@ SPEC CHECKSUMS:
   Chrysan: 6bf6682adb2db76f7f5c103930a8c6670f54eebe
   CocoaLumberjack: 2f44e60eb91c176d471fdba43b9e3eae6a721947
   EmptyDataSet-Swift: eb382c0c87a2d9c678077385a595cec52da38171
-  Eureka: c883105488e05bc65539f583246ecf9657cabbfe
+  Eureka: 49239596c9d2eed9ab523990c34de62b6feac9f0
   FMDB: 854a0341b4726e53276f2a8996f06f1b80f9259a
   FSCalendar: 3a5ed3636e2ba1b83ebebfcf0c2603105a6f5efe
   HandyJSON: e18b035d60cb4847c609a59bb831c5db8c549663
@@ -220,6 +220,6 @@ SPEC CHECKSUMS:
   YHPhotoKit: e88368af1fca0a110d41b88417088f7e49876981
   YHPopupView: 96d9c05c79a2a17cf69c3def09e5305cfae9e8e8
 
-PODFILE CHECKSUM: 7994fed5103facb0bfff5a065e5612ebe4b411a2
+PODFILE CHECKSUM: 443a1a0e70d86c33975d3a07253f37c7f83d5d0a
 
 COCOAPODS: 1.8.4