From 7453d2d0cef415b34323d1b91e6cfa4a6ba31178 Mon Sep 17 00:00:00 2001
From: 杨锴 <841720330@qq.com>
Date: 星期日, 11 五月 2025 22:22:48 +0800
Subject: [PATCH] fix bug

---
 WanPai/Root/CardCenter/VC/CardCenterAddUserVC.swift   |    4 
 .gitignore                                            |    6 
 WanPai/Base/BaseVC.swift                              |    4 
 WanPai/Config/Enums.swift                             |    4 
 WanPai/Root/Search/TCell/MyCardTCell.swift            |    5 
 WanPai.xcodeproj/project.pbxproj                      |   21 
 WanPai/Root/CardCenter/VC/CardCenterAddUserVC.xib     |    2 
 Podfile.lock                                          |  493 +++++++++++++++++++++++++++++++++++
 WanPai/Root/Other/VC/PaymentResultVC.swift            |    4 
 WanPai/Root/CardCenter/VC/CardCenterDetailVC.swift    |    2 
 WanPai/Root/Other/View/StudentChoose3View.swift       |    8 
 WanPai/Network/Services.swift                         |    7 
 WanPai/Root/CardCenter/View/CardCenterSheetView.swift |   42 ++
 WanPai/Root/CardCenter/VC/CardCenterVC.swift          |   41 ++
 WanPai/Root/Home/VC/HomeVC.swift                      |   88 ++---
 WanPai/Root/Search/VC/MyCardItemVC.swift              |    4 
 WanPai/Root/CardCenter/View/CardCenterSheetView.xib   |   29 +
 WanPai/Root/Search/TCell/MyCardTCell.xib              |   16 
 WanPai/Root/Course/VC/AddStudentVC.swift              |    1 
 WanPai/Root/Search/VC/MyCardListVC.swift              |   25 +
 WanPai/Root/Search/VC/SearchVC.swift                  |   14 
 WanPai/AppDelegate.swift                              |    2 
 22 files changed, 706 insertions(+), 116 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8f6ef53
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+WanPai.xcworkspace/xcshareddata
+WanPai.xcworkspace/xcuserdata
+WanPai.xcodeproj/project.xcworkspace/xcuserdata/yvkd.xcuserdatad
+WanPai.xcodeproj/xcshareddata
+WanPai.xcodeproj/xcuserdata
+.DS_Store
diff --git a/Podfile.lock b/Podfile.lock
new file mode 100644
index 0000000..c9174d8
--- /dev/null
+++ b/Podfile.lock
@@ -0,0 +1,493 @@
+PODS:
+  - Alamofire (5.7.1)
+  - AlipaySDK-iOS (15.8.11)
+  - AliyunOSSiOS (2.10.18)
+  - AMap2DMap-NO-IDFA (5.6.1):
+    - AMapFoundation-NO-IDFA (~> 1.4)
+  - AMapFoundation-NO-IDFA (1.8.2)
+  - CocoaAsyncSocket (7.6.5)
+  - CryptoSwift (1.8.0)
+  - Differentiator (5.0.0)
+  - EmptyDataSet-Swift (5.0.0)
+  - FFPage (3.0.0)
+  - FSCalendar (2.8.4)
+  - HandyJSON (5.0.2)
+  - IQKeyboardManager (6.5.11)
+  - IQKeyboardManagerSwift (6.5.11)
+  - JQTools (0.1.5):
+    - EmptyDataSet-Swift
+    - HandyJSON
+    - IQKeyboardManager
+    - IQKeyboardManagerSwift
+    - MJRefresh
+    - ObjectMapper
+    - QMUIKit
+    - RxCocoa
+    - RxDataSources
+    - RxSwift
+    - SDWebImage
+    - SnapKit
+    - SVProgressHUD
+    - TZImagePickerController
+    - UserDefaultsStore (~> 1.5.0)
+    - VTMagic
+    - XCGLogger
+  - Lantern (1.1.4)
+  - MJRefresh (3.7.5)
+  - ObjcExceptionBridging (1.0.1):
+    - ObjcExceptionBridging/ObjcExceptionBridging (= 1.0.1)
+  - ObjcExceptionBridging/ObjcExceptionBridging (1.0.1)
+  - ObjectMapper (4.2.0)
+  - QMUIKit (4.6.3):
+    - QMUIKit/QMUIComponents (= 4.6.3)
+    - QMUIKit/QMUICore (= 4.6.3)
+    - QMUIKit/QMUILog (= 4.6.3)
+    - QMUIKit/QMUIMainFrame (= 4.6.3)
+    - QMUIKit/QMUIResources (= 4.6.3)
+    - QMUIKit/QMUIWeakObjectContainer (= 4.6.3)
+  - QMUIKit/QMUIComponents (4.6.3):
+    - QMUIKit/QMUIComponents/NavigationBarTransition (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIAlertController (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIAnimation (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIAppearance (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIBadge (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIButton (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUICAAnimationExtension (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUICALayerExtension (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUICellHeightCache (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIConsole (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIDialogViewController (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIEmotionInputManager (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIEmotionView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIEmptyView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIFloatLayoutView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIGridView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUILabel (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUILogManagerViewController (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIMarqueeLabel (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIMoreOperationController (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUINavigationButton (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIOrderedDictionary (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIPieProgressView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIScrollAnimator (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUISearchBar (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUISearchController (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUISegmentedControl (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIStaticTableView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITableView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITableViewCell (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITestView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITextField (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITextView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITheme (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUITips (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIToastView (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIToolbarButton (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIWindowSizeMonitor (= 4.6.3)
+    - QMUIKit/QMUIComponents/QMUIZoomImageView (= 4.6.3)
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/NavigationBarTransition (4.6.3):
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIAlertController (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAnimation (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAppearance (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAssetLibrary (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIBadge (4.6.3):
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIButton (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICAAnimationExtension (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICALayerExtension (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellHeightCache (4.6.3):
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIConsole (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUICAAnimationExtension
+    - QMUIKit/QMUIComponents/QMUICellHeightKeyCache
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUIComponents/QMUITextView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIDialogViewController (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIEmotionInputManager (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIEmotionView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIEmotionView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIEmptyView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIFloatLayoutView (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIGridView (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAlertController
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView
+    - QMUIKit/QMUIComponents/QMUINavigationButton
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUIZoomImageView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIImagePreviewView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIPieProgressView
+    - QMUIKit/QMUIComponents/QMUIZoomImageView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIKeyboardManager (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUILabel (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUILogManagerViewController (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUISearchController
+    - QMUIKit/QMUIComponents/QMUIStaticTableView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMarqueeLabel (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMoreOperationController (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMultipleDelegates (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUINavigationButton (4.6.3):
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUINavigationTitleView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIOrderedDictionary (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIPieProgressView (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIPopupContainerView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIPopupMenuView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIScrollAnimator (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUISearchBar (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUISearchController (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUISearchBar
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUISegmentedControl (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIStaticTableView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewCell (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewProtocols (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITestView (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITextField (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITextView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITheme (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAlertController
+    - QMUIKit/QMUIComponents/QMUIBadge
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIConsole
+    - QMUIKit/QMUIComponents/QMUIEmotionView
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIGridView
+    - QMUIKit/QMUIComponents/QMUIImagePickerLibrary
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUIComponents/QMUITextView
+    - QMUIKit/QMUIComponents/QMUIToastView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITips (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIToastView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIToastView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIToolbarButton (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIWindowSizeMonitor (4.6.3):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIZoomImageView (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIPieProgressView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUICore (4.6.3):
+    - QMUIKit/QMUILog
+    - QMUIKit/QMUIWeakObjectContainer
+  - QMUIKit/QMUILog (4.6.3)
+  - QMUIKit/QMUIMainFrame (4.6.3):
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUILog
+  - QMUIKit/QMUIResources (4.6.3)
+  - QMUIKit/QMUIWeakObjectContainer (4.6.3)
+  - RHSocketKit/Core (2.3.7):
+    - CocoaAsyncSocket
+  - RHSocketKit/Extend (2.3.7):
+    - RHSocketKit/Core
+  - RxCocoa (6.5.0):
+    - RxRelay (= 6.5.0)
+    - RxSwift (= 6.5.0)
+  - RxDataSources (5.0.0):
+    - Differentiator (~> 5.0)
+    - RxCocoa (~> 6.0)
+    - RxSwift (~> 6.0)
+  - RxRelay (6.5.0):
+    - RxSwift (= 6.5.0)
+  - RxSwift (6.5.0)
+  - SDWebImage (5.16.0):
+    - SDWebImage/Core (= 5.16.0)
+  - SDWebImage/Core (5.16.0)
+  - SnapKit (5.6.0)
+  - SPPageMenu (3.5.0)
+  - SVProgressHUD (2.2.5)
+  - SwifterSwift (5.2.0):
+    - SwifterSwift/AppKit (= 5.2.0)
+    - SwifterSwift/CoreAnimation (= 5.2.0)
+    - SwifterSwift/CoreGraphics (= 5.2.0)
+    - SwifterSwift/CoreLocation (= 5.2.0)
+    - SwifterSwift/Dispatch (= 5.2.0)
+    - SwifterSwift/Foundation (= 5.2.0)
+    - SwifterSwift/MapKit (= 5.2.0)
+    - SwifterSwift/SceneKit (= 5.2.0)
+    - SwifterSwift/SpriteKit (= 5.2.0)
+    - SwifterSwift/StoreKit (= 5.2.0)
+    - SwifterSwift/SwiftStdlib (= 5.2.0)
+    - SwifterSwift/UIKit (= 5.2.0)
+  - SwifterSwift/AppKit (5.2.0)
+  - SwifterSwift/CoreAnimation (5.2.0)
+  - SwifterSwift/CoreGraphics (5.2.0)
+  - SwifterSwift/CoreLocation (5.2.0)
+  - SwifterSwift/Dispatch (5.2.0)
+  - SwifterSwift/Foundation (5.2.0)
+  - SwifterSwift/MapKit (5.2.0)
+  - SwifterSwift/SceneKit (5.2.0)
+  - SwifterSwift/SpriteKit (5.2.0)
+  - SwifterSwift/StoreKit (5.2.0)
+  - SwifterSwift/SwiftStdlib (5.2.0)
+  - SwifterSwift/UIKit (5.2.0)
+  - TZImagePickerController (3.8.3):
+    - TZImagePickerController/Basic (= 3.8.3)
+    - TZImagePickerController/Location (= 3.8.3)
+  - TZImagePickerController/Basic (3.8.3)
+  - TZImagePickerController/Location (3.8.3)
+  - UserDefaultsStore (1.5.0)
+  - VTMagic (1.2.4):
+    - VTMagic/Core (= 1.2.4)
+  - VTMagic/Core (1.2.4)
+  - WechatOpenSDK-XCFramework (2.0.2)
+  - XCGLogger (7.0.1):
+    - XCGLogger/Core (= 7.0.1)
+  - XCGLogger/Core (7.0.1):
+    - ObjcExceptionBridging
+
+DEPENDENCIES:
+  - Alamofire
+  - AlipaySDK-iOS
+  - AliyunOSSiOS
+  - AMap2DMap-NO-IDFA
+  - CryptoSwift
+  - FFPage
+  - FSCalendar
+  - JQTools (from `/Users/yvkd/MyProject/JQTools`)
+  - Lantern
+  - RHSocketKit/Extend
+  - SPPageMenu
+  - SVProgressHUD
+  - SwifterSwift
+  - WechatOpenSDK-XCFramework
+
+SPEC REPOS:
+  trunk:
+    - Alamofire
+    - AlipaySDK-iOS
+    - AliyunOSSiOS
+    - AMap2DMap-NO-IDFA
+    - AMapFoundation-NO-IDFA
+    - CocoaAsyncSocket
+    - CryptoSwift
+    - Differentiator
+    - EmptyDataSet-Swift
+    - FFPage
+    - FSCalendar
+    - HandyJSON
+    - IQKeyboardManager
+    - IQKeyboardManagerSwift
+    - Lantern
+    - MJRefresh
+    - ObjcExceptionBridging
+    - ObjectMapper
+    - QMUIKit
+    - RHSocketKit
+    - RxCocoa
+    - RxDataSources
+    - RxRelay
+    - RxSwift
+    - SDWebImage
+    - SnapKit
+    - SPPageMenu
+    - SVProgressHUD
+    - SwifterSwift
+    - TZImagePickerController
+    - UserDefaultsStore
+    - VTMagic
+    - WechatOpenSDK-XCFramework
+    - XCGLogger
+
+EXTERNAL SOURCES:
+  JQTools:
+    :path: "/Users/yvkd/MyProject/JQTools"
+
+SPEC CHECKSUMS:
+  Alamofire: 0123a34370cb170936ae79a8df46cc62b2edeb88
+  AlipaySDK-iOS: a07b6eafa847a5b29acb6c150ea16d9792d5d167
+  AliyunOSSiOS: e683c1b1faa0657b5cd02de733628cf996f4cd93
+  AMap2DMap-NO-IDFA: ccecb3e2a044c17e6badb9b91c950e709368be20
+  AMapFoundation-NO-IDFA: 6ce0ef596d4eb8d934ff498e56747b6de1247b05
+  CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
+  CryptoSwift: 52aaf3fce7337552863b1d952e408085f0e65030
+  Differentiator: e8497ceab83c1b10ca233716d547b9af21b9344d
+  EmptyDataSet-Swift: eb382c0c87a2d9c678077385a595cec52da38171
+  FFPage: 481cc0f2dde0f6be84a2359b6c86272e0024dc8d
+  FSCalendar: 2d1d0d9398f12d439f55c1fe0f01525b151b8260
+  HandyJSON: 9e4e236f5d2dbefad5155a77417bbea438201c03
+  IQKeyboardManager: ef43ce1ba1e5aaf4adf222c0a46f39761f246879
+  IQKeyboardManagerSwift: c7955c0bdbf7b2eb29bb7daaa44e3d90f55a9a85
+  JQTools: d2b720c901e39d9959c9342ba42f9eba58886a02
+  Lantern: 26ed71b2d9ace5073ecf53521e316ed8b95acdb0
+  MJRefresh: fdf5e979eb406a0341468932d1dfc8b7f9fce961
+  ObjcExceptionBridging: c30e00eb3700467e695faeea30e26e18bd445001
+  ObjectMapper: 1eb41f610210777375fa806bf161dc39fb832b81
+  QMUIKit: b831835f33d7fb3494809042225e6256eb22b892
+  RHSocketKit: 0e804f9a12f1b1d44f775f43dc136b12fc6c4ac2
+  RxCocoa: 94f817b71c07517321eb4f9ad299112ca8af743b
+  RxDataSources: aa47cc1ed6c500fa0dfecac5c979b723542d79cf
+  RxRelay: 1de1523e604c72b6c68feadedd1af3b1b4d0ecbd
+  RxSwift: 5710a9e6b17f3c3d6e40d6e559b9fa1e813b2ef8
+  SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
+  SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25
+  SPPageMenu: da182aafcec55719d5c326103cc7716c1e48f311
+  SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6
+  SwifterSwift: 334181863c416882d97b7a60c05054d9e4d799e2
+  TZImagePickerController: e9909edbadf7381140efc5b5c9f5bdbfd630f7d4
+  UserDefaultsStore: 905e30372ff432197d199ce1f6fe51be7bf69628
+  VTMagic: b49e5f456dbcbfd9a3588ba92417233a105bc193
+  WechatOpenSDK-XCFramework: acdeeda129efbef9532bca8a10c24e1b4b8c7d69
+  XCGLogger: 1943831ef907df55108b0b18657953f868de973b
+
+PODFILE CHECKSUM: f4b74442782ed9115ee44729149afd319c7ef22c
+
+COCOAPODS: 1.12.1
diff --git a/WanPai.xcodeproj/project.pbxproj b/WanPai.xcodeproj/project.pbxproj
index a542730..fabc87e 100644
--- a/WanPai.xcodeproj/project.pbxproj
+++ b/WanPai.xcodeproj/project.pbxproj
@@ -18,6 +18,7 @@
 		1304B85D2A4EB0F8000D4F2E /* SearchBannerCCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1304B85B2A4EB0F8000D4F2E /* SearchBannerCCell.xib */; };
 		1304B8602A4EB59F000D4F2E /* SearchStoreListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1304B85E2A4EB59F000D4F2E /* SearchStoreListVC.swift */; };
 		1304B8612A4EB59F000D4F2E /* SearchStoreListVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1304B85F2A4EB59F000D4F2E /* SearchStoreListVC.xib */; };
+		1304CF732DD0E168007132D9 /* Impact.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1304CF722DD0E168007132D9 /* Impact.ttf */; };
 		130A59302D9406A40094D92D /* CardCenterSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130A592F2D9406A40094D92D /* CardCenterSheetView.swift */; };
 		130A59322D9406AB0094D92D /* CardCenterSheetView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130A59312D9406AB0094D92D /* CardCenterSheetView.xib */; };
 		130CE4532A4823AC00394384 /* StudentMedalCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130CE4512A4823AC00394384 /* StudentMedalCCell.swift */; };
@@ -124,7 +125,6 @@
 		1376A6952A4A765700D4C851 /* StudentInfo_3_TCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1376A6932A4A765700D4C851 /* StudentInfo_3_TCell.swift */; };
 		1376A6962A4A765700D4C851 /* StudentInfo_3_TCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1376A6942A4A765700D4C851 /* StudentInfo_3_TCell.xib */; };
 		1376A6992A4A7B7B00D4C851 /* StudentCourseDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1376A6972A4A7B7A00D4C851 /* StudentCourseDetailVC.swift */; };
-		1376A69D2A4A7C6000D4C851 /* Impact.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1376A69C2A4A7C6000D4C851 /* Impact.ttf */; };
 		1376A6A12A4A7E1E00D4C851 /* CourseChargeTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1376A69F2A4A7E1E00D4C851 /* CourseChargeTCell.swift */; };
 		1376A6A22A4A7E1E00D4C851 /* CourseChargeTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1376A6A02A4A7E1E00D4C851 /* CourseChargeTCell.xib */; };
 		137801862A3B01FA00414959 /* ActivitySignupDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 137801842A3B01FA00414959 /* ActivitySignupDetailVC.swift */; };
@@ -394,6 +394,7 @@
 		1304B85B2A4EB0F8000D4F2E /* SearchBannerCCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SearchBannerCCell.xib; sourceTree = "<group>"; };
 		1304B85E2A4EB59F000D4F2E /* SearchStoreListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchStoreListVC.swift; sourceTree = "<group>"; };
 		1304B85F2A4EB59F000D4F2E /* SearchStoreListVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SearchStoreListVC.xib; sourceTree = "<group>"; };
+		1304CF722DD0E168007132D9 /* Impact.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Impact.ttf; sourceTree = "<group>"; };
 		1306580A2B22C1BB008B2500 /* WanPaiRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = WanPaiRelease.entitlements; sourceTree = "<group>"; };
 		130A592F2D9406A40094D92D /* CardCenterSheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardCenterSheetView.swift; sourceTree = "<group>"; };
 		130A59312D9406AB0094D92D /* CardCenterSheetView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CardCenterSheetView.xib; sourceTree = "<group>"; };
@@ -503,7 +504,6 @@
 		1376A6932A4A765700D4C851 /* StudentInfo_3_TCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudentInfo_3_TCell.swift; sourceTree = "<group>"; };
 		1376A6942A4A765700D4C851 /* StudentInfo_3_TCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StudentInfo_3_TCell.xib; sourceTree = "<group>"; };
 		1376A6972A4A7B7A00D4C851 /* StudentCourseDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudentCourseDetailVC.swift; sourceTree = "<group>"; };
-		1376A69C2A4A7C6000D4C851 /* Impact.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Impact.ttf; sourceTree = "<group>"; };
 		1376A69F2A4A7E1E00D4C851 /* CourseChargeTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseChargeTCell.swift; sourceTree = "<group>"; };
 		1376A6A02A4A7E1E00D4C851 /* CourseChargeTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseChargeTCell.xib; sourceTree = "<group>"; };
 		137801842A3B01FA00414959 /* ActivitySignupDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivitySignupDetailVC.swift; sourceTree = "<group>"; };
@@ -925,7 +925,7 @@
 		1376A69B2A4A7C5000D4C851 /* Resources */ = {
 			isa = PBXGroup;
 			children = (
-				1376A69C2A4A7C6000D4C851 /* Impact.ttf */,
+				1304CF722DD0E168007132D9 /* Impact.ttf */,
 			);
 			path = Resources;
 			sourceTree = "<group>";
@@ -1725,7 +1725,6 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				1376A69D2A4A7C6000D4C851 /* Impact.ttf in Resources */,
 				13801CC52A4D26D90041454D /* CommonSingleTCell.xib in Resources */,
 				1394023F2AB456DB003CF61E /* PaymentCourseView.xib in Resources */,
 				133A618D2A4E7AF90066C4E6 /* CustomerContentTCell.xib in Resources */,
@@ -1738,6 +1737,7 @@
 				139402432AB4588F003CF61E /* PaymentCourseTCell.xib in Resources */,
 				8D8400DE2A2F1432003AF6A2 /* LaunchScreen.storyboard in Resources */,
 				13801CC92A4D29740041454D /* ChooseNumberView.xib in Resources */,
+				1304CF732DD0E168007132D9 /* Impact.ttf in Resources */,
 				133435042A40407200F23951 /* CalendarItemCCell.xib in Resources */,
 				13638ACD2B95AE8900ABDD0D /* StudentChoose2View.xib in Resources */,
 				133FAE9A2B96F658005CF2F2 /* CommonYearsPickerView.xib in Resources */,
@@ -2311,9 +2311,10 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = WanPai/WanPaiDebug.entitlements;
+				CODE_SIGN_IDENTITY = "Apple Development";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Manual;
-				CURRENT_PROJECT_VERSION = 16;
+				CURRENT_PROJECT_VERSION = 18;
 				DEVELOPMENT_TEAM = "";
 				"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 2MWV8K39DV;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -2342,7 +2343,7 @@
 					"$(inherited)",
 					"$(PROJECT_DIR)/WanPai/YYPaymentManager/WeChatPay",
 				);
-				MARKETING_VERSION = 2.0.6;
+				MARKETING_VERSION = 2.0.8;
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",
@@ -2476,9 +2477,9 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = WanPai/WanPaiRelease.entitlements;
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Manual;
-				CURRENT_PROJECT_VERSION = 16;
+				CURRENT_PROJECT_VERSION = 18;
 				DEVELOPMENT_TEAM = "";
 				"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 2MWV8K39DV;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -2507,7 +2508,7 @@
 					"$(inherited)",
 					"$(PROJECT_DIR)/WanPai/YYPaymentManager/WeChatPay",
 				);
-				MARKETING_VERSION = 2.0.6;
+				MARKETING_VERSION = 2.0.8;
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",
@@ -2622,7 +2623,7 @@
 				PRODUCT_BUNDLE_IDENTIFIER = com.sinata.WeParkLife;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
-				"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = adHoc_profile;
+				"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = dev_profile;
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
 				SUPPORTS_MACCATALYST = NO;
 				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
diff --git a/WanPai/AppDelegate.swift b/WanPai/AppDelegate.swift
index 6602376..8297a2d 100644
--- a/WanPai/AppDelegate.swift
+++ b/WanPai/AppDelegate.swift
@@ -94,7 +94,7 @@
 //								welfareVCNav.tabBarItem = UITabBarItem(title: "使用福利", image: UIImage(named: "tabbar_welfare"), selectedImage: UIImage(named: "tabbar_welfare_s")!.withRenderingMode(.alwaysOriginal))
 
         let carderCenterVCNav = BaseNav(rootViewController: CardCenterVC())
-        carderCenterVCNav.tabBarItem = UITabBarItem(title: "惠民卡", image: UIImage(named: "tabbar_welfare"), selectedImage: UIImage(named: "tabbar_welfare_s")!.withRenderingMode(.alwaysOriginal))
+        carderCenterVCNav.tabBarItem = UITabBarItem(title: "玩湃惠民卡", image: UIImage(named: "tabbar_welfare"), selectedImage: UIImage(named: "tabbar_welfare_s")!.withRenderingMode(.alwaysOriginal))
 
 								let searchVCNav = BaseNav(rootViewController: SearchVC())
 								searchVCNav.tabBarItem = UITabBarItem(title: "我的玩湃", image: UIImage(named: "tabbar_search"), selectedImage: UIImage(named: "tabbar_search_s")!.withRenderingMode(.alwaysOriginal))
diff --git a/WanPai/Base/BaseVC.swift b/WanPai/Base/BaseVC.swift
index 096ce16..19aea4d 100644
--- a/WanPai/Base/BaseVC.swift
+++ b/WanPai/Base/BaseVC.swift
@@ -59,9 +59,9 @@
 
     func refreshUI(){}
 
-    func push(vc:UIViewController){
+    func push(vc:UIViewController,animated:Bool = true){
         vc.hidesBottomBarWhenPushed = true
-        navigationController?.pushViewController(vc, animated: true)
+        navigationController?.pushViewController(vc, animated: animated)
     }
 
     override var preferredStatusBarStyle: UIStatusBarStyle{
diff --git a/WanPai/Config/Enums.swift b/WanPai/Config/Enums.swift
index c38e428..78dbdd0 100644
--- a/WanPai/Config/Enums.swift
+++ b/WanPai/Config/Enums.swift
@@ -411,7 +411,7 @@
 				var title:String{
 								switch self {
 												case .club:return "俱乐部之星"
-												case .sport:return "运动大人"
+												case .sport:return "运动达人"
 												case .communtiy:return "社区之王"
 												case .deepPlayer:return "深度玩家"
 												case .winner:return "常胜将军"
@@ -425,7 +425,7 @@
 
 
 					mentals.append(MentalInfo(img: UIImage(named: "icon_coupon_1"), t1: "COURSE", t2: "俱乐部之星"))
-					mentals.append(MentalInfo(img: UIImage(named: "icon_coupon_2"), t1: "EVENTS", t2: "运动大人"))
+					mentals.append(MentalInfo(img: UIImage(named: "icon_coupon_2"), t1: "EVENTS", t2: "运动达人"))
 					mentals.append(MentalInfo(img: UIImage(named: "icon_coupon_3"), t1: "KING", t2: "社区之王"))
 					mentals.append(MentalInfo(img: UIImage(named: "icon_coupon_4"), t1: "APPOINTMENT", t2: "深度玩家"))
 					mentals.append(MentalInfo(img: UIImage(named: "icon_coupon_5"), t1: "EVENTS", t2: "月度冠军"))
diff --git a/WanPai/Network/Services.swift b/WanPai/Network/Services.swift
index 5386607..501077e 100644
--- a/WanPai/Network/Services.swift
+++ b/WanPai/Network/Services.swift
@@ -13,7 +13,8 @@
 
 #if DEBUG
 //let All_Url = "http://192.168.110.80:56666" //正式地址
-let All_Url = "http://vbef9arg13uu.guyubao.com"
+//let All_Url = "http://vbef9arg13uu.guyubao.com"
+let All_Url = "http://8.137.22.229:56666" //正式地址
 let Game_Url = "https://try.daowepark.com"
 //let Socket_Url = "192.168.110.22"
 #else
@@ -1447,12 +1448,12 @@
         return NetworkRequest.request(params: params, method: .post, progress: true)
     }
 
-    class func getMyHuiminCard(page:Int,pageSize:Int = 20)->Observable<BaseResponse<[HuiminCardMyItemModel]>>{
+    class func getMyHuiminCard(page:Int,pageSize:Int = 20,progress:Bool = false)->Observable<BaseResponse<[HuiminCardMyItemModel]>>{
         let params = ParamsAppender.build(url: All_Url)
             .interface(url: "/activity/huimin/myHuiminCardList")
             .append(key: "pageNo", value: page)
             .append(key: "pageSize", value: pageSize)
-        return NetworkRequest.request(params: params, method: .post, progress: false)
+        return NetworkRequest.request(params: params, method: .post, progress: progress)
     }
 
     class func payHuiminCard(id:Int,payType:PayType,studentIds:String)->Observable<BaseResponse<PaymentModel>>{
diff --git a/WanPai/Root/CardCenter/VC/CardCenterAddUserVC.swift b/WanPai/Root/CardCenter/VC/CardCenterAddUserVC.swift
index 6e31a0c..8caa1be 100644
--- a/WanPai/Root/CardCenter/VC/CardCenterAddUserVC.swift
+++ b/WanPai/Root/CardCenter/VC/CardCenterAddUserVC.swift
@@ -19,6 +19,7 @@
     @IBOutlet weak var btn_complete: UIButton!
     @IBOutlet weak var label_rule: UILabel!
     var studentModel = StudentProfileModel()
+    var isFirstOne = false //是否第一次添加人员
 
     var profileImg:UIImage?
 
@@ -120,7 +121,8 @@
         alertSuccess(msg: text)
         DispatchQueue.main.asyncAfter(deadline: .now()+1) {
             NotificationCenter.default.post(name: Noti_hiddenCardCenter_Add, object: false)
-//            NotificationCenter.default.post(name: StudentUpdate_Nofi, object: ["needShow":true])
+            NotificationCenter.default.post(name: StudentUpdate_Nofi, object: ["needShow":self.isFirstOne])
+            print("打印:发送通知1111:\n")
             self.navigationController?.popViewController()
         }
     }
diff --git a/WanPai/Root/CardCenter/VC/CardCenterAddUserVC.xib b/WanPai/Root/CardCenter/VC/CardCenterAddUserVC.xib
index 679b067..067c4f6 100644
--- a/WanPai/Root/CardCenter/VC/CardCenterAddUserVC.xib
+++ b/WanPai/Root/CardCenter/VC/CardCenterAddUserVC.xib
@@ -241,7 +241,7 @@
                         </view>
                     </subviews>
                 </stackView>
-                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请选择您要绑定使用本张“惠民卡”的人员,如果您是第1次购买,请点击右上角”添加人员“添加使用者”" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jlC-ya-Z7x">
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请选择您要绑定使用本张“玩湃惠民卡”的人员,如果您是第1次购买,请点击右上角”添加人员“添加使用者”" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jlC-ya-Z7x">
                     <rect key="frame" x="14" y="421" width="365" height="28.666666666666686"/>
                     <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="12"/>
                     <color key="textColor" name="FE6E0D"/>
diff --git a/WanPai/Root/CardCenter/VC/CardCenterDetailVC.swift b/WanPai/Root/CardCenter/VC/CardCenterDetailVC.swift
index 40a5a6f..c24017d 100644
--- a/WanPai/Root/CardCenter/VC/CardCenterDetailVC.swift
+++ b/WanPai/Root/CardCenter/VC/CardCenterDetailVC.swift
@@ -34,7 +34,7 @@
 
     override func viewDidLoad() {
         super.viewDidLoad()
-        title = "惠民卡详情"
+        title = "玩湃惠民卡详情"
 
         Services.getHuiminDetail(id: id, storeId: storeId).subscribe(onNext: {[unowned self]data in
             if let m = data.data{
diff --git a/WanPai/Root/CardCenter/VC/CardCenterVC.swift b/WanPai/Root/CardCenter/VC/CardCenterVC.swift
index 257c623..e57bf5d 100644
--- a/WanPai/Root/CardCenter/VC/CardCenterVC.swift
+++ b/WanPai/Root/CardCenter/VC/CardCenterVC.swift
@@ -10,6 +10,14 @@
 import WebKit
 import JQTools
 
+/*
+ 将数据分为两个section,他们的数据源是同一个,为了让二维码先展示,放入section0,反之 放入section1
+    section:0
+        QRCode != 空:展示
+    section:1
+        QRCode == 空:展示
+
+ */
 class CardCenterVC: BaseVC {
 
     private var sotreId:Int?
@@ -34,6 +42,9 @@
                 tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[unowned self] in
                     self.getData()
                 })
+                tableView.mj_footer = MJRefreshAutoNormalFooter (refreshingBlock: {[unowned self] in
+                    self.moreData()
+                })
                 tableView.mj_header?.ignoredScrollViewContentInsetTop = 30
                 tableView.mj_header?.beginRefreshing()
             }
@@ -42,8 +53,8 @@
 
     override func viewDidLoad() {
         super.viewDidLoad()
-            title = "惠民卡"
-        view.backgroundColor = .clear
+            title = "玩湃惠民卡"
+        view.backgroundColor = .white
     }
 
     override func setRx() {
@@ -55,7 +66,7 @@
     private func getData(){
         page = 1
         guard  let s = sotreId else {return}
-
+        tableView.mj_footer?.resetNoMoreData()
         Services.getHuiminAgreementAndList(page: page, storeId: s).subscribe(onNext: {[unowned self]data in
             self.model = data.data
 
@@ -81,6 +92,24 @@
         }).disposed(by: disposeBag)
     }
 
+    private func moreData(){
+        page+=1
+        guard  let s = sotreId else {return}
+
+
+        Services.getHuiminAgreementAndList(page: page, storeId: s).subscribe(onNext: {[unowned self]data in
+
+            if data.data?.cardList.count == 0{
+                self.tableView.mj_footer?.endRefreshingWithNoMoreData();return
+            }
+            self.model?.cardList.append(contentsOf: data.data?.cardList ?? [])
+            self.tableView.reloadData()
+            self.tableView.mj_footer?.endRefreshing()
+        },onError: { _ in
+            self.tableView.mj_footer?.endRefreshing()
+        }).disposed(by: disposeBag)
+    }
+
     override func setUI() {
 
         view.addSubview(view_BgGradView)
@@ -94,7 +123,7 @@
         tableView.showsVerticalScrollIndicator = false
         tableView.separatorStyle = .none
         tableView.backgroundColor = .clear
-        tableView.contentInset = UIEdgeInsets(top: 31, left: 0, bottom: 0, right: 0)
+//        tableView.contentInset = UIEdgeInsets(top: 31, left: 0, bottom: 0, right: 0)
         tableView.register(UINib(nibName: "CardCenterTCell", bundle: nil), forCellReuseIdentifier: "_CardCenterTCell")
         tableView.register(UINib(nibName: "CardCenterTopQRCodeTCell", bundle: nil), forCellReuseIdentifier: "_CardCenterTopQRCodeTCell")
 
@@ -179,6 +208,10 @@
             }
             return 480
         }else{
+            let m = model?.cardList[indexPath.row]
+            if !(m?.qrCode?.isEmpty ?? true){
+                return 0
+            }
             return (JQ_ScreenW - 40) * 0.4841 + 20
         }
     }
diff --git a/WanPai/Root/CardCenter/View/CardCenterSheetView.swift b/WanPai/Root/CardCenter/View/CardCenterSheetView.swift
index 10cbc4f..3252f71 100644
--- a/WanPai/Root/CardCenter/View/CardCenterSheetView.swift
+++ b/WanPai/Root/CardCenter/View/CardCenterSheetView.swift
@@ -29,17 +29,20 @@
     @IBOutlet weak var btn_agreement: UIButton!
     @IBOutlet weak var text_view_height: NSLayoutConstraint!
     @IBOutlet weak var label_rule: UILabel!
-
+    @IBOutlet weak var label_add_info: UILabel!
+    
 
     let disposeBag = DisposeBag()
     private var subscriptions = Set<AnyCancellable>()
     private var model:HuiminCardDetailModel?
     private var selectStudents = [StudentProfile1Model]()
     private var students = [StudentProfile1Model]()
+    private var studentChoose3View:StudentChoose3View?
 
 
     override func awakeFromNib() {
         super.awakeFromNib()
+        label_add_info.isHidden = false
         btn_addUser.imagePosition = .right
         btn_addUser.spacingBetweenImageAndTitle = 3
         cons_bottom.constant = -(JQ_ScreenW * 1.1)
@@ -72,7 +75,7 @@
         }.store(in: &subscriptions)
 
         text_view.publisher(for: \.contentSize).sink {[unowned self] size in
-            self.text_view_height.constant = size.height
+            self.text_view_height.constant = 60
         }.store(in: &subscriptions)
 
         NotificationCenter.default.rx.notification(Noti_hiddenCardCenter_Add).take(until: self.rx.deallocated).subscribe(onNext: {[unowned self] noti in
@@ -81,7 +84,8 @@
         }).disposed(by: disposeBag)
 
 
-        NotificationCenter.default.rx.notification(StudentUpdate_Nofi, object: nil).subscribe(onNext: {value in
+        NotificationCenter.default.rx.notification(StudentUpdate_Nofi, object: nil).take(until: self.rx.deallocated).subscribe(onNext: {value in
+            print("打印:通知1111:\(self)\n")
             var needShow = true
             if let v = value.object as? [String:Bool]{
                 needShow = v["needShow"] ?? true
@@ -91,7 +95,7 @@
         }).disposed(by: disposeBag)
 
 
-        NotificationCenter.default.rx.notification(Noti_showSheetView, object: nil).subscribe(onNext: {value in
+        NotificationCenter.default.rx.notification(Noti_showSheetView, object: nil).take(until: self.rx.deallocated).subscribe(onNext: {value in
             self.alpha = 1
         }).disposed(by: disposeBag)
 
@@ -135,10 +139,18 @@
         Services.startCourceStudentList().subscribe(onNext: {data in
             self.students = data.data ?? []
             if (data.data?.count ?? 0) > 0 && needShow{
-                StudentChoose3View.show(defaultStu: Set(self.selectStudents)) { m in
+                guard self.studentChoose3View == nil else {return}
+                guard sceneDelegate?.window?.viewWithTag(1293) == nil else {
+                    return
+                }
+
+                self.studentChoose3View = StudentChoose3View.show(defaultStu: Set(self.selectStudents)) { m in
                     self.selectStudents = m.shuffled()
                     self.tableView.reloadData()
                     self.updatePrice()
+                    self.studentChoose3View = nil
+                } closeClouse: {
+                    self.studentChoose3View = nil
                 }
             }
         }).disposed(by: self.disposeBag)
@@ -151,23 +163,31 @@
         self.text_view.isHidden = self.selectStudents.count > 0 ? false:true
         self.btn_agreement.isHidden = self.selectStudents.count > 0 ? false:true
         self.label_rule.isHidden = self.selectStudents.count > 0 ? false:true
+        self.label_add_info.isHidden = (self.selectStudents.count) > 0 ?true:false
     }
 
     @IBAction func addPersionAction(_ sender: QMUIButton) {
         if students.count == 0{
             NotificationCenter.default.post(name: Noti_hiddenCardCenter_Add, object: true)
             let vc = CardCenterAddUserVC()
+            vc.isFirstOne = true
             JQ_currentNavigationController().pushViewController(vc)
         }else{
-            StudentChoose3View.show(defaultStu: Set(selectStudents)) { m in
+            guard self.studentChoose3View == nil else {return}
+            self.studentChoose3View = StudentChoose3View.show(defaultStu: Set(selectStudents)) { m in
                 self.selectStudents = m.shuffled()
                 self.tableView.reloadData()
                 self.updatePrice()
+                self.studentChoose3View = nil
+            } closeClouse: {
+                self.studentChoose3View = nil
             }
         }
     }
 
     @IBAction func closeAction(_ sender: UIButton) {
+
+        NotificationCenter.default.removeObserver(self)
 
         self.cons_bottom.constant = -(JQ_ScreenW * 1.1)
         UIView.animate(withDuration: 0.4) {
@@ -175,6 +195,9 @@
             self.layoutIfNeeded()
         } completion: { _ in
             self.removeFromSuperview()
+            if let subV = sceneDelegate?.window?.viewWithTag(1293) as? CardCenterSheetView{
+                subV.removeFromSuperview()
+            }
         }
     }
 
@@ -186,6 +209,10 @@
 
         guard let m = model else{return}
 
+        guard selectStudents.count != 0 else{
+            alertError(msg: "请选择人员");return
+        }
+
         guard btn_agreement.isSelected else {
             let v = m.agreementSettings.map { m in
                 return "《\(m.agreementName)》"
@@ -193,9 +220,6 @@
             alertError(msg: "请先阅读协议\(v)");return
         }
 
-        guard selectStudents.count != 0 else{
-            alertError(msg: "请选择人员");return
-        }
 
         let totalMoney = (model?.salesMoney ?? 0) * Double(selectStudents.count)
         updatePrice()
diff --git a/WanPai/Root/CardCenter/View/CardCenterSheetView.xib b/WanPai/Root/CardCenter/View/CardCenterSheetView.xib
index 944757c..a0d8f96 100644
--- a/WanPai/Root/CardCenter/View/CardCenterSheetView.xib
+++ b/WanPai/Root/CardCenter/View/CardCenterSheetView.xib
@@ -16,7 +16,7 @@
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Dmv-6M-oIS">
-                    <rect key="frame" x="0.0" y="414.33333333333326" width="393" height="437.66666666666674"/>
+                    <rect key="frame" x="0.0" y="425.33333333333326" width="393" height="426.66666666666674"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="立即购买" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7ML-ec-5XF">
                             <rect key="frame" x="160.66666666666666" y="25" width="71.666666666666657" height="21"/>
@@ -36,7 +36,7 @@
                             </connections>
                         </button>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Ue-WJ-3bR">
-                            <rect key="frame" x="0.0" y="320.66666666666669" width="393" height="75"/>
+                            <rect key="frame" x="0.0" y="309.66666666666669" width="393" height="75"/>
                             <subviews>
                                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8Uw-le-5KY">
                                     <rect key="frame" x="199" y="17.666666666666629" width="180" height="40"/>
@@ -101,10 +101,10 @@
                             <nil key="highlightedColor"/>
                         </label>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t1u-Um-DQ1" customClass="QMUIButton">
-                            <rect key="frame" x="223" y="76" width="155" height="17"/>
+                            <rect key="frame" x="264" y="76" width="114" height="17"/>
                             <fontDescription key="fontDescription" type="system" pointSize="14"/>
                             <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                            <state key="normal" title="添加或绑定新的使用者" image="btn_add_1">
+                            <state key="normal" title="添加新的使用者" image="btn_add_1">
                                 <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.56999999999999995" colorSpace="custom" customColorSpace="sRGB"/>
                             </state>
                             <connections>
@@ -118,14 +118,14 @@
                                 <constraint firstAttribute="height" constant="80" id="iVi-HV-o6B"/>
                             </constraints>
                         </tableView>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请选择您要绑定使用本张“惠民卡”的人员,如果您是第1次购买,请点击右上角”添加人员“添加使用者”" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="D3R-6U-qpx">
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请选择您要绑定使用本张“玩湃惠民卡”的人员,如果您是第1次购买,请点击右上角”添加人员“添加使用者”" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="D3R-6U-qpx">
                             <rect key="frame" x="14" y="211.00000000000006" width="365" height="33.666666666666657"/>
                             <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
                             <color key="textColor" name="FE6E0D"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kB3-1G-xSk">
-                            <rect key="frame" x="14" y="267.66666666666669" width="22" height="22"/>
+                            <rect key="frame" x="14" y="260.66666666666669" width="22" height="22"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="22" id="2nW-js-vH8"/>
                                 <constraint firstAttribute="width" constant="22" id="Pao-2s-Csu"/>
@@ -138,7 +138,7 @@
                             </connections>
                         </button>
                         <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="6do-vD-Z6i">
-                            <rect key="frame" x="42" y="271.66666666666669" width="337" height="35"/>
+                            <rect key="frame" x="42" y="264.66666666666669" width="337" height="35"/>
                             <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="35" id="3KD-xV-b9j"/>
@@ -147,16 +147,24 @@
                             <fontDescription key="fontDescription" type="system" pointSize="14"/>
                             <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                         </textView>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="点击右上方+号添加新的使用者" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p9f-we-9eh">
+                            <rect key="frame" x="0.0" y="93.000000000000043" width="393" height="216.66666666666663"/>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
+                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
                     </subviews>
                     <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                     <constraints>
                         <constraint firstItem="D3R-6U-qpx" firstAttribute="leading" secondItem="Dmv-6M-oIS" secondAttribute="leading" constant="14" id="2ju-1P-nqD"/>
                         <constraint firstAttribute="trailing" secondItem="t1u-Um-DQ1" secondAttribute="trailing" constant="15" id="7MF-gl-Q4o"/>
                         <constraint firstItem="1Ue-WJ-3bR" firstAttribute="leading" secondItem="Dmv-6M-oIS" secondAttribute="leading" id="8Em-Dm-2F5"/>
+                        <constraint firstAttribute="trailing" secondItem="p9f-we-9eh" secondAttribute="trailing" id="ErM-by-hXE"/>
                         <constraint firstAttribute="trailing" secondItem="6do-vD-Z6i" secondAttribute="trailing" constant="14" id="LJp-gD-UQS"/>
                         <constraint firstItem="uUb-ON-HeD" firstAttribute="centerY" secondItem="7ML-ec-5XF" secondAttribute="centerY" id="N4H-rH-5fq"/>
+                        <constraint firstItem="1Ue-WJ-3bR" firstAttribute="top" secondItem="p9f-we-9eh" secondAttribute="bottom" id="NZ9-A5-HIY"/>
                         <constraint firstItem="iMf-wL-jMK" firstAttribute="leading" secondItem="Dmv-6M-oIS" secondAttribute="leading" constant="14" id="Qwl-g4-VYv"/>
-                        <constraint firstItem="6do-vD-Z6i" firstAttribute="top" secondItem="D3R-6U-qpx" secondAttribute="bottom" constant="27" id="UsW-bP-DUr"/>
+                        <constraint firstItem="6do-vD-Z6i" firstAttribute="top" secondItem="D3R-6U-qpx" secondAttribute="bottom" constant="20" id="UsW-bP-DUr"/>
                         <constraint firstItem="kB3-1G-xSk" firstAttribute="top" secondItem="6do-vD-Z6i" secondAttribute="top" constant="-4" id="W4H-tB-cRX"/>
                         <constraint firstItem="xf9-5v-5BE" firstAttribute="top" secondItem="iMf-wL-jMK" secondAttribute="bottom" constant="25" id="Wiu-U5-E5e"/>
                         <constraint firstAttribute="trailing" secondItem="xf9-5v-5BE" secondAttribute="trailing" constant="14" id="ZlM-RF-sA1"/>
@@ -167,12 +175,14 @@
                         <constraint firstItem="iMf-wL-jMK" firstAttribute="top" secondItem="7ML-ec-5XF" secondAttribute="bottom" constant="30" id="j6A-Ho-eBK"/>
                         <constraint firstItem="xf9-5v-5BE" firstAttribute="leading" secondItem="Dmv-6M-oIS" secondAttribute="leading" constant="14" id="k7e-jC-AiQ"/>
                         <constraint firstItem="7ML-ec-5XF" firstAttribute="centerX" secondItem="Dmv-6M-oIS" secondAttribute="centerX" id="lND-vS-cjZ"/>
+                        <constraint firstItem="p9f-we-9eh" firstAttribute="top" secondItem="iMf-wL-jMK" secondAttribute="bottom" id="m5B-v9-dVG"/>
                         <constraint firstAttribute="trailing" secondItem="uUb-ON-HeD" secondAttribute="trailing" constant="20" id="oAU-Jw-UDh"/>
                         <constraint firstAttribute="bottomMargin" secondItem="1Ue-WJ-3bR" secondAttribute="bottom" id="poN-6s-FIl"/>
+                        <constraint firstItem="p9f-we-9eh" firstAttribute="leading" secondItem="Dmv-6M-oIS" secondAttribute="leading" id="tKC-at-VWT"/>
                         <constraint firstAttribute="trailing" secondItem="D3R-6U-qpx" secondAttribute="trailing" constant="14" id="tmn-Lh-8ME"/>
                         <constraint firstItem="7ML-ec-5XF" firstAttribute="top" secondItem="Dmv-6M-oIS" secondAttribute="top" constant="25" id="wH2-Xr-ENO"/>
                         <constraint firstAttribute="trailing" secondItem="1Ue-WJ-3bR" secondAttribute="trailing" id="x2M-A9-Abk"/>
-                        <constraint firstItem="1Ue-WJ-3bR" firstAttribute="top" secondItem="6do-vD-Z6i" secondAttribute="bottom" constant="14" id="xGO-kZ-eUd"/>
+                        <constraint firstItem="1Ue-WJ-3bR" firstAttribute="top" secondItem="6do-vD-Z6i" secondAttribute="bottom" constant="10" id="xGO-kZ-eUd"/>
                     </constraints>
                 </view>
             </subviews>
@@ -188,6 +198,7 @@
                 <outlet property="btn_buyment" destination="8Uw-le-5KY" id="5th-Af-0vn"/>
                 <outlet property="cons_bottom" destination="Fxh-4P-J6S" id="tL1-cE-rzk"/>
                 <outlet property="cons_table_height" destination="iVi-HV-o6B" id="wRr-JR-xIi"/>
+                <outlet property="label_add_info" destination="p9f-we-9eh" id="cl3-Gr-rpX"/>
                 <outlet property="label_price" destination="2GF-2e-CsH" id="ssf-5c-ZY4"/>
                 <outlet property="label_rule" destination="D3R-6U-qpx" id="qJH-wV-706"/>
                 <outlet property="tableView" destination="xf9-5v-5BE" id="2O6-DY-WIQ"/>
diff --git a/WanPai/Root/Course/VC/AddStudentVC.swift b/WanPai/Root/Course/VC/AddStudentVC.swift
index bac4229..2f427bc 100644
--- a/WanPai/Root/Course/VC/AddStudentVC.swift
+++ b/WanPai/Root/Course/VC/AddStudentVC.swift
@@ -243,6 +243,7 @@
 				}
 
 				deinit{
+        NotificationCenter.default.removeObserver(self, name: StudentUpdate_Nofi, object: nil)
 								JQ_ImagePickerTool.destroy()
 				}
 }
diff --git a/WanPai/Root/Home/VC/HomeVC.swift b/WanPai/Root/Home/VC/HomeVC.swift
index 9f59dd5..182a5bf 100644
--- a/WanPai/Root/Home/VC/HomeVC.swift
+++ b/WanPai/Root/Home/VC/HomeVC.swift
@@ -135,42 +135,48 @@
 												if let m = item as? HomeStoreConfigModel{
 																queue.async(group: group){ () in
 																				group.enter()
-																				guard SDImageCache.shared.diskImageDataExists(withKey: m.backgroundImage) else {
-																								SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in
-																								} completed: { image, data, error, status in
-
-                            m.imageSize = image?.size ?? .zero
-																												guard !m.backgroundImage.isEmpty else {
-                                if image?.size.width ?? 0 > image?.size.height ?? 0{
-                                    m.displayType = 1
-                                }else{
-                                    m.displayType = 2
-                                }
-																																group.leave()
-																																return
-																												}
-																												group.leave()
-																								}
-																								return
-																				}
-																				if let data = SDImageCache.shared.diskCache.data(forKey: m.backgroundImage),let img = UIImage(data: data){
-                        m.imageSize = img.size
-                        if img.size.width > img.size.height{
-                            m.displayType = 1
-                        }else{
-                            m.displayType = 2
+                    if SDImageCache.shared.diskImageDataExists(withKey: m.backgroundImage){
+                        if let data = SDImageCache.shared.diskCache.data(forKey: m.backgroundImage),let img = UIImage(data: data){
+                            m.imageSize = img.size
+                            if img.size.width > img.size.height{
+                                m.displayType = 1
+                            }else{
+                                m.displayType = 2
+                            }
+                            group.leave()
                         }
-																								group.leave()
-																				}
+                    }else{
+                        SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in
+                        } completed: { image, data, error, status in
+                            m.imageSize = image?.size ?? .zero
+                            if image?.size.width ?? 0 > image?.size.height ?? 0{
+                                m.displayType = 1
+                            }else{
+                                m.displayType = 2
+                            }
+                            group.leave()
+                        }
+                    }
 																}
 												}
 
 												if let m = item as? HomeStoreTopBannerModel{
 																queue.async(group: group){() in
 																				group.enter()
-																				guard SDImageCache.shared.diskImageDataExists(withKey: m.backgroundImage) else {
-																								SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in
-																								} completed: { image, data, error, status in
+
+                    if SDImageCache.shared.diskImageDataExists(withKey: m.backgroundImage){
+                        if let data = SDImageCache.shared.diskCache.data(forKey: m.backgroundImage),let img = UIImage(data: data){
+                            m.imageSize = img.size
+                            if img.size.width > img.size.height{
+                                m.displayType = 1
+                            }else{
+                                m.displayType = 2
+                            }
+                            group.leave()
+                        }
+                    }else{
+                        SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in
+                        } completed: { image, data, error, status in
                             if let img = image{
                                 m.imageSize = img.size
                                 if img.size.width > img.size.height{
@@ -179,20 +185,9 @@
                                     m.displayType = 2
                                 }
                             }
-																												group.leave()
-																								}
-																								return
-																				}
-
-																				if let data = SDImageCache.shared.diskCache.data(forKey: m.backgroundImage),let img = UIImage(data: data){
-                        m.imageSize = img.size
-                        if img.size.width > img.size.height{
-                            m.displayType = 1
-                        }else{
-                            m.displayType = 2
+                            group.leave()
                         }
-																								group.leave()
-																				}
+                    }
 																}
 												}
 								}
@@ -232,7 +227,6 @@
 																return ""
 												}
 
-
             var displayItems_row = [Any]() //竖
 
             for v in self.items{
@@ -259,8 +253,8 @@
             }
             self.items_1.append(InnerItemModel(contents: displayItems_row, displayType: 2))
 
-												self.layout.collectionView?.reloadData()
 												self.collectionView.reloadData()
+            self.layout.collectionView?.reloadData()
 								}
 				}
 
@@ -361,7 +355,6 @@
             if m.displayType == 2{
                 return (JQ_ScreenW - 78) / 2 / m.imageSize.aspectRatio
             }
-
             return (JQ_ScreenW - 78) / m.imageSize.aspectRatio
         }
 
@@ -369,7 +362,6 @@
             if m.displayType == 2{
                 return (JQ_ScreenW - 78) / 2 / m.imageSize.aspectRatio
             }
-
             return (JQ_ScreenW - 78) / m.imageSize.aspectRatio
         }
         return 0
@@ -382,7 +374,9 @@
 												simpleModel = NormalSimpleModel(id: storeModel!.storeId, name: storeModel!.name)
 								}
 
-								let item = items[indexPath.row]
+        let v = items_1[indexPath.section]
+
+        let item = v.contents[indexPath.row]
 								if let m = item as? HomeStoreConfigModel{
 												switch m.type{
 																case .worldcup:
diff --git a/WanPai/Root/Other/VC/PaymentResultVC.swift b/WanPai/Root/Other/VC/PaymentResultVC.swift
index 1e3b1af..e8d6f78 100644
--- a/WanPai/Root/Other/VC/PaymentResultVC.swift
+++ b/WanPai/Root/Other/VC/PaymentResultVC.swift
@@ -253,7 +253,7 @@
                     case .success:
                         NotificationCenter.default.post(name: UpdateCurrentStore_Noti, object: nil)
                         btn_again.isHidden = false
-                        btn_again.setTitle("查看惠民卡", for: .normal)
+                        btn_again.setTitle("查看玩湃惠民卡", for: .normal)
                         btn_back.setTitleColor(Def_ThemeColor, for: .normal)
                         btn_back.backgroundColor = .white
                         btn_back.setTitle("返回首页", for: .normal)
@@ -298,7 +298,7 @@
 												case "查看排名":
 																let vc  = WorldCupVC()
 																jumpAndRemoveSelfVC(vc)
-            case "查看惠民卡":
+            case "查看玩湃惠民卡":
                 let vc = MyCardListVC()
                 jumpAndRemoveSelfVC(vc)
 												case "查看预约":
diff --git a/WanPai/Root/Other/View/StudentChoose3View.swift b/WanPai/Root/Other/View/StudentChoose3View.swift
index 30b10f3..7e97c32 100644
--- a/WanPai/Root/Other/View/StudentChoose3View.swift
+++ b/WanPai/Root/Other/View/StudentChoose3View.swift
@@ -21,6 +21,7 @@
     @IBOutlet weak var cons_tableHei: NSLayoutConstraint!
 
     private var clickClouse:((Set<StudentProfile1Model>)->Void)!
+    private var closeClouse:(()->Void)!
     private var needAddClouse:(()->Void)!
     private var disposeBag = DisposeBag()
     private var selectStudents = Set<StudentProfile1Model>()
@@ -47,11 +48,14 @@
         }).disposed(by: disposeBag)
     }
 
-    static func show(defaultStu:Set<StudentProfile1Model>? = nil,clickClouse:@escaping (Set<StudentProfile1Model>)->Void){
+    @discardableResult
+    static func show(defaultStu:Set<StudentProfile1Model>? = nil,clickClouse:@escaping (Set<StudentProfile1Model>)->Void,closeClouse:@escaping()->Void)->StudentChoose3View{
         let studentChooseView = StudentChoose3View.jq_loadNibView()
         if defaultStu != nil{
             studentChooseView.selectStudents = defaultStu!
         }
+        studentChooseView.closeClouse = closeClouse
+        studentChooseView.tag = 1293
         studentChooseView.tableView.register(UINib(nibName: "StudentInfo_2_2_TCell", bundle: nil), forCellReuseIdentifier: "_StudentInfo_2_2_TCell")
         studentChooseView.frame = sceneDelegate?.window?.frame ?? .zero
         studentChooseView.clickClouse = clickClouse
@@ -65,6 +69,7 @@
             studentChooseView.layoutIfNeeded()
             studentChooseView.tableView.reloadData()
         }
+        return studentChooseView
     }
 
     private func setRx(){
@@ -94,6 +99,7 @@
 
     private func closeAction(){
         self.cons_bottom.constant = -(JQ_ScreenW * 1.1)
+        self.closeClouse?()
         UIView.animate(withDuration: 0.4) {
             self.alpha = 0
             self.layoutIfNeeded()
diff --git a/WanPai/Root/Search/TCell/MyCardTCell.swift b/WanPai/Root/Search/TCell/MyCardTCell.swift
index 2081dfe..6ec3139 100644
--- a/WanPai/Root/Search/TCell/MyCardTCell.swift
+++ b/WanPai/Root/Search/TCell/MyCardTCell.swift
@@ -17,6 +17,7 @@
     @IBOutlet weak var img: UIImageView!
     @IBOutlet weak var label_title: UILabel!
     @IBOutlet weak var label_subTitle: UILabel!
+    @IBOutlet weak var img_h: NSLayoutConstraint!
     private var model:HuiminCardMyItemModel?
     private var disposeBag = DisposeBag()
 
@@ -33,7 +34,9 @@
 
     override func layoutSubviews() {
         super.layoutSubviews()
-        img.jq_addCorners(corner: [.topRight,.topLeft], radius: 10, width: JQ_ScreenW - 40, height: 220)
+        //0.4841
+        img_h.constant = (JQ_ScreenW - 40) * 0.4841
+        img.jq_addCorners(corner: [.topRight,.topLeft], radius: 10, width: JQ_ScreenW - 40, height: (JQ_ScreenW - 40) * 0.4841)
     }
 
     @IBAction func refundAction(_ sender: UIButton) {
diff --git a/WanPai/Root/Search/TCell/MyCardTCell.xib b/WanPai/Root/Search/TCell/MyCardTCell.xib
index 1c34bae..e8a2c29 100644
--- a/WanPai/Root/Search/TCell/MyCardTCell.xib
+++ b/WanPai/Root/Search/TCell/MyCardTCell.xib
@@ -10,15 +10,15 @@
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="275" id="KGk-i7-Jjw" customClass="MyCardTCell" customModule="WanPai" customModuleProvider="target">
-            <rect key="frame" x="0.0" y="0.0" width="320" height="275"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="305" id="KGk-i7-Jjw" customClass="MyCardTCell" customModule="WanPai" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="305"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
-                <rect key="frame" x="0.0" y="0.0" width="320" height="275"/>
+                <rect key="frame" x="0.0" y="0.0" width="320" height="305"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xRS-EW-0ze">
-                        <rect key="frame" x="20" y="0.0" width="280" height="255"/>
+                        <rect key="frame" x="20" y="0.0" width="280" height="285"/>
                         <subviews>
                             <view contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="nf4-Ou-Ude">
                                 <rect key="frame" x="0.0" y="0.0" width="280" height="200"/>
@@ -52,13 +52,13 @@
                                 </connections>
                             </button>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zUg-yp-Y13">
-                                <rect key="frame" x="14" y="214" width="160" height="19.333333333333343"/>
+                                <rect key="frame" x="14" y="214" width="160" height="37"/>
                                 <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/>
                                 <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oOa-ct-EVe">
-                                <rect key="frame" x="14" y="235.33333333333334" width="156" height="17"/>
+                                <rect key="frame" x="14" y="253" width="156" height="17"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="17" id="nSz-8n-8Gv"/>
                                 </constraints>
@@ -69,6 +69,7 @@
                         </subviews>
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
+                            <constraint firstAttribute="bottom" secondItem="oOa-ct-EVe" secondAttribute="bottom" constant="15" id="07q-Kt-HGL"/>
                             <constraint firstItem="oOa-ct-EVe" firstAttribute="top" secondItem="zUg-yp-Y13" secondAttribute="bottom" constant="2" id="43O-Ph-nvu"/>
                             <constraint firstAttribute="trailing" secondItem="jhO-J2-YDG" secondAttribute="trailing" constant="14" id="8Dn-fM-3Pk"/>
                             <constraint firstItem="zUg-yp-Y13" firstAttribute="top" secondItem="nf4-Ou-Ude" secondAttribute="bottom" constant="14" id="9Fn-Uq-Nfo"/>
@@ -93,11 +94,12 @@
             <connections>
                 <outlet property="btn_refund" destination="jhO-J2-YDG" id="i1Q-o0-j0R"/>
                 <outlet property="img" destination="GpB-g5-DS4" id="WDc-Rb-08i"/>
+                <outlet property="img_h" destination="vMj-JC-qaG" id="zhQ-tH-97d"/>
                 <outlet property="label_subTitle" destination="oOa-ct-EVe" id="zec-ke-0xQ"/>
                 <outlet property="label_title" destination="zUg-yp-Y13" id="AWF-35-mcb"/>
                 <outlet property="view_container" destination="xRS-EW-0ze" id="LKd-wp-xIx"/>
             </connections>
-            <point key="canvasLocation" x="138.93129770992365" y="101.05633802816902"/>
+            <point key="canvasLocation" x="138.93129770992365" y="111.61971830985917"/>
         </tableViewCell>
     </objects>
     <resources>
diff --git a/WanPai/Root/Search/VC/MyCardItemVC.swift b/WanPai/Root/Search/VC/MyCardItemVC.swift
index 56ff403..1801400 100644
--- a/WanPai/Root/Search/VC/MyCardItemVC.swift
+++ b/WanPai/Root/Search/VC/MyCardItemVC.swift
@@ -32,7 +32,7 @@
     
     override func viewDidLoad() {
         super.viewDidLoad()
-        title = "我的惠民卡"
+        title = "我的玩湃惠民卡"
 
         Services.myHuiminCardDetail(id: id).subscribe(onNext: {data in
             if let m = data.data{
@@ -43,7 +43,7 @@
                 self.label_time.attributedText = AttributedStringbuilder.build().add(string: "该卡有效期至 ", withFont: .systemFont(ofSize: 16, weight: .medium), withColor: .black)
                     .add(string: m.endTime, withFont: .systemFont(ofSize: 16), withColor: UIColor(hexString: "#ff7300")!).mutableAttributedString
 
-                self.imgCode.image = UIImage.jq_GenerateQRCode(with: m.huiminCard?.qrCode ?? "", width: 250)
+                self.imgCode.image = UIImage.jq_GenerateQRCode(with: m.qrCode, width: 250)
                 self.webView.loadHTMLString(m.introduce.jq_wrapHtml(), baseURL: nil)
             }
         }).disposed(by: disposeBag)
diff --git a/WanPai/Root/Search/VC/MyCardListVC.swift b/WanPai/Root/Search/VC/MyCardListVC.swift
index b06a5f0..fd0e37d 100644
--- a/WanPai/Root/Search/VC/MyCardListVC.swift
+++ b/WanPai/Root/Search/VC/MyCardListVC.swift
@@ -25,18 +25,21 @@
     private var tableView:UITableView!
     private var sotreId:Int?
     private var model:HuiminCardModel?
+    var jumpToFirst:HuiminCardMyItemModel? //如果只有一张卡,直接跳详情
 
     override func viewDidLoad() {
         super.viewDidLoad()
-        title = "我的惠民卡"
+        title = "我的玩湃惠民卡"
 
-        viewModel.dataSource.subscribe(onNext: {[unowned self] data in
-            if data.count == 1,let model = data.first,model.isExpire == 0,model.status == 2{
-                let vc = MyCardItemVC(id: model.id)
-                self.push(vc: vc)
-            }
-            self.tableView.reloadData()
-        }).disposed(by: disposeBag)
+        if let m = jumpToFirst{
+            guard m.isExpire == 0 else{return}
+
+            if m.status == 3{return}
+
+            if m.isRefund == 2{return}
+            let vc = MyCardItemVC(id: m.id)
+            push(vc: vc)
+        }
     }
 
     override func setUI() {
@@ -98,9 +101,9 @@
         return cell
     }
 
-    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
-        return 290
-    }
+//    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
+//        return 290
+//    }
 
 
 }
diff --git a/WanPai/Root/Search/VC/SearchVC.swift b/WanPai/Root/Search/VC/SearchVC.swift
index cf9ef9f..f6aff50 100644
--- a/WanPai/Root/Search/VC/SearchVC.swift
+++ b/WanPai/Root/Search/VC/SearchVC.swift
@@ -265,8 +265,18 @@
 																let vc = RechargeRecordVC(coin: benefitHomeModel?.wpCoin ?? 0,subtype: .coin)
 																push(vc: vc)
                 case "玩湃惠民卡":
-                let vc = MyCardListVC()
-                self.push(vc: vc)
+                Services.getMyHuiminCard(page: 1,progress: true).subscribe(onNext: {data in
+                    var firstM:HuiminCardMyItemModel?
+                    if data.data?.count == 1,let m = data.data?.first{
+                        firstM = m
+                    }
+                    let vc = MyCardListVC()
+                    vc.jumpToFirst = firstM
+                    self.push(vc: vc,animated: false)
+
+                }).disposed(by: disposeBag)
+
+
 																case "裁判入口":
 																let vc = JudgeListVC()
 																push(vc: vc)

--
Gitblit v1.7.1