New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_more_y@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_more_y@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
| | |
| | | return |
| | | } |
| | | |
| | | if viewController is MatchDetailVC{ |
| | | if #available(iOS 15.0, *) { |
| | | navigationBar.standardAppearance.backgroundImage = nil |
| | | navigationBar.scrollEdgeAppearance?.backgroundImage = nil |
| | | }else{ |
| | | navigationBar.setBackgroundImage(UIImage(), for: .default) |
| | | navigationBar.shadowImage = UIImage() |
| | | } |
| | | return |
| | | } |
| | | |
| | | let status = lucencyVCs.contains(where: {$0 == viewController.classForCoder}) |
| | | if (navigationController.viewControllers.count == 1 || status) && !(viewController is WelfareVC){ |
| | | if #available(iOS 15.0, *) { |
| | |
| | | // |
| | | // CommonBannerView.swift |
| | | // WanPai |
| | | // |
| | | // Created by 无故事王国 on 2023/6/30. |
| | | // |
| | | // |
| | | // CommonBannerView.swift |
| | | // WanPai |
| | | // |
| | | // Created by 无故事王国 on 2023/6/30. |
| | | // |
| | | |
| | | import UIKit |
| | | import SDWebImage |
| | | struct CommonBannerModel { |
| | | var index = 0 //自定义索引 |
| | | var id:Int? //ID |
| | | var name:String? //名称 |
| | | var resource:String? //数据源:URL等 |
| | | var mediaType:CommonBannerView.MediaType? |
| | | var index = 0 //自定义索引 |
| | | var id:Int? //ID |
| | | var name:String? //名称 |
| | | var resource:String? //数据源:URL等 |
| | | var mediaType:CommonBannerView.MediaType? |
| | | } |
| | | |
| | | class CommonBannerView: UIView, UICollectionViewDelegate, UICollectionViewDataSource,UICollectionViewDelegateFlowLayout { |
| | | |
| | | enum MediaType { |
| | | case videoUrl,imageUrl,imageLocal,videoLocal |
| | | } |
| | | |
| | | private lazy var collectionView:UICollectionView = { |
| | | var layout = UICollectionViewFlowLayout() |
| | | layout.minimumLineSpacing = 0 |
| | | layout.minimumInteritemSpacing = 0 |
| | | layout.scrollDirection = .horizontal |
| | | layout.sectionInset = .zero |
| | | layout.headerReferenceSize = .zero |
| | | layout.footerReferenceSize = .zero |
| | | layout.itemSize = CGSize(width: self.width, height: self.height) |
| | | let collectionView = UICollectionView(frame:CGRect(x: 0, y: 0, width: self.width, height: self.height), collectionViewLayout: layout) |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.isPagingEnabled = true |
| | | collectionView.showsHorizontalScrollIndicator = false |
| | | collectionView.register(CommonBannerViewCell.self, forCellWithReuseIdentifier: "BannerView") |
| | | collectionView.decelerationRate = .normal |
| | | collectionView.contentInsetAdjustmentBehavior = .never |
| | | collectionView.backgroundColor = .white |
| | | collectionView.bounces = false |
| | | return collectionView |
| | | }() |
| | | |
| | | private lazy var pageControl:UIPageControl = { |
| | | let control = UIPageControl() |
| | | control.currentPageIndicatorTintColor = .white |
| | | control.pageIndicatorTintColor = .gray.withAlphaComponent(0.6) |
| | | return control |
| | | }() |
| | | |
| | | private var timer:Timer? |
| | | |
| | | private var items = [CommonBannerModel]() |
| | | private var selectClouse:((CommonBannerModel)->Void)? |
| | | private var autoRoll:Bool = true |
| | | private var currentPage:Int = 0 |
| | | private var timeInterval:Int = 5 |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | setUI() |
| | | } |
| | | |
| | | public func setItems(items:[CommonBannerModel],autoRoll:Bool = true,selectClouse:((CommonBannerModel)->Void)? = nil){ |
| | | |
| | | self.items = items |
| | | if items.count > 1{ |
| | | self.items.append(items.first!) |
| | | } |
| | | self.autoRoll = autoRoll |
| | | self.selectClouse = selectClouse |
| | | if items.count <= 1{self.autoRoll = false} |
| | | |
| | | setUI() |
| | | collectionView.reloadData() |
| | | |
| | | if self.autoRoll{ |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+5) { |
| | | self.startTimer() |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func setUI(){ |
| | | addSubview(collectionView) |
| | | collectionView.snp.makeConstraints { make in |
| | | make.edges.equalToSuperview() |
| | | } |
| | | |
| | | if items.count > 1{ |
| | | pageControl.numberOfPages = items.count - 1 |
| | | |
| | | addSubview(pageControl) |
| | | pageControl.snp.makeConstraints { make in |
| | | make.centerX.equalToSuperview() |
| | | make.bottom.equalToSuperview().offset(-10) |
| | | make.height.equalTo(8) |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func startTimer(){ |
| | | timer = Timer(timeInterval: TimeInterval(timeInterval), repeats: true, block: {[weak self] t in |
| | | guard let weakSelf = self else { return } |
| | | |
| | | var page = weakSelf.collectionView.contentOffset.x / weakSelf.collectionView.width |
| | | weakSelf.currentPage = Int(page + 1) |
| | | |
| | | if weakSelf.currentPage >= weakSelf.pageControl.numberOfPages{ |
| | | weakSelf.currentPage = 0 |
| | | weakSelf.collectionView.setContentOffset(.zero, animated: false) |
| | | weakSelf.pageControl.currentPage = 0 |
| | | } |
| | | weakSelf.collectionView.setContentOffset(CGPoint(x: weakSelf.currentPage * Int(weakSelf.width), y: 0), animated: true) |
| | | }) |
| | | timer?.fire() |
| | | RunLoop.current.add(timer!, forMode: .common) |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | return items.count |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | | let item = items[indexPath.row] |
| | | selectClouse?(item) |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { |
| | | return CGSize(width:collectionView.bounds.size.width,height:ceil(collectionView.bounds.size.height)) |
| | | } |
| | | |
| | | func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { |
| | | print("--开始滑动") |
| | | timer?.fireDate = Date.distantFuture |
| | | } |
| | | |
| | | func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { |
| | | let page = scrollView.contentOffset.x / scrollView.width |
| | | if page.int >= pageControl.numberOfPages{ |
| | | pageControl.currentPage = 0 |
| | | }else{ |
| | | pageControl.currentPage = page.int |
| | | } |
| | | print("--结束滑动") |
| | | timer?.fireDate = Date.init(timeIntervalSinceNow: 3.0) //3秒后开启 |
| | | } |
| | | |
| | | func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) { |
| | | let page = scrollView.contentOffset.x / scrollView.width |
| | | if page.int >= pageControl.numberOfPages{ |
| | | pageControl.currentPage = 0 |
| | | }else{ |
| | | pageControl.currentPage = page.int |
| | | } |
| | | } |
| | | |
| | | func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { |
| | | let page = scrollView.contentOffset.x / scrollView.width |
| | | if page.int >= pageControl.numberOfPages{ |
| | | pageControl.currentPage = 0 |
| | | collectionView.setContentOffset(.zero, animated: false) |
| | | }else{ |
| | | pageControl.currentPage = page.int |
| | | } |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "BannerView", for: indexPath) as! CommonBannerViewCell |
| | | let item = items[indexPath.row] |
| | | |
| | | switch item.mediaType { |
| | | case .imageUrl: |
| | | if let i = item.resource{ |
| | | cell.imgView.sd_setImage(with: URL(string: i)) |
| | | enum MediaType { |
| | | case videoUrl,imageUrl,imageLocal,videoLocal |
| | | } |
| | | case .imageLocal: |
| | | if let i = item.resource{ |
| | | cell.imgView.image = UIImage(named: i) |
| | | |
| | | private lazy var collectionView:UICollectionView = { |
| | | var layout = UICollectionViewFlowLayout() |
| | | layout.minimumLineSpacing = 0 |
| | | layout.minimumInteritemSpacing = 0 |
| | | layout.scrollDirection = .horizontal |
| | | layout.sectionInset = .zero |
| | | layout.headerReferenceSize = .zero |
| | | layout.footerReferenceSize = .zero |
| | | layout.itemSize = CGSize(width: self.width, height: self.height) |
| | | let collectionView = UICollectionView(frame:CGRect(x: 0, y: 0, width: self.width, height: self.height), collectionViewLayout: layout) |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.isPagingEnabled = true |
| | | collectionView.showsHorizontalScrollIndicator = false |
| | | collectionView.register(CommonBannerViewCell.self, forCellWithReuseIdentifier: "BannerView") |
| | | collectionView.decelerationRate = .normal |
| | | collectionView.contentInsetAdjustmentBehavior = .never |
| | | collectionView.backgroundColor = .white |
| | | collectionView.bounces = false |
| | | return collectionView |
| | | }() |
| | | |
| | | private lazy var pageControl:UIPageControl = { |
| | | let control = UIPageControl() |
| | | control.currentPageIndicatorTintColor = .white |
| | | control.pageIndicatorTintColor = .gray.withAlphaComponent(0.6) |
| | | return control |
| | | }() |
| | | |
| | | private var timer:Timer? |
| | | |
| | | private var items = [CommonBannerModel]() |
| | | private var selectClouse:((CommonBannerModel)->Void)? |
| | | private var autoRoll:Bool = true |
| | | private var currentPage:Int = 0 |
| | | private var timeInterval:Int = 5 |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | setUI() |
| | | } |
| | | default:break |
| | | } |
| | | return cell |
| | | } |
| | | |
| | | public func setItems(items:[CommonBannerModel],autoRoll:Bool = true,selectClouse:((CommonBannerModel)->Void)? = nil){ |
| | | |
| | | self.items = items |
| | | if items.count > 1{ |
| | | self.items.append(items.first!) |
| | | } |
| | | self.autoRoll = autoRoll |
| | | self.selectClouse = selectClouse |
| | | if items.count <= 1{self.autoRoll = false} |
| | | |
| | | setUI() |
| | | collectionView.reloadData() |
| | | |
| | | if self.autoRoll{ |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+5) { |
| | | self.startTimer() |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func setUI(){ |
| | | addSubview(collectionView) |
| | | collectionView.snp.makeConstraints { make in |
| | | make.edges.equalToSuperview() |
| | | } |
| | | |
| | | if items.count > 1{ |
| | | pageControl.numberOfPages = items.count - 1 |
| | | |
| | | addSubview(pageControl) |
| | | pageControl.snp.makeConstraints { make in |
| | | make.centerX.equalToSuperview() |
| | | make.bottom.equalToSuperview().offset(-10) |
| | | make.height.equalTo(8) |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func startTimer(){ |
| | | timer = Timer(timeInterval: TimeInterval(timeInterval), repeats: true, block: {[weak self] t in |
| | | guard let weakSelf = self else { return } |
| | | |
| | | var page = weakSelf.collectionView.contentOffset.x / weakSelf.collectionView.width |
| | | weakSelf.currentPage = Int(page + 1) |
| | | |
| | | if weakSelf.currentPage >= weakSelf.pageControl.numberOfPages{ |
| | | weakSelf.currentPage = 0 |
| | | weakSelf.collectionView.setContentOffset(.zero, animated: false) |
| | | weakSelf.pageControl.currentPage = 0 |
| | | } |
| | | weakSelf.collectionView.setContentOffset(CGPoint(x: weakSelf.currentPage * Int(weakSelf.width), y: 0), animated: true) |
| | | }) |
| | | timer?.fire() |
| | | RunLoop.current.add(timer!, forMode: .common) |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | return items.count |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | | let item = items[indexPath.row] |
| | | selectClouse?(item) |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { |
| | | return CGSize(width:collectionView.bounds.size.width,height:ceil(collectionView.bounds.size.height)) |
| | | } |
| | | |
| | | func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { |
| | | print("--开始滑动") |
| | | timer?.fireDate = Date.distantFuture |
| | | } |
| | | |
| | | func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { |
| | | let page = scrollView.contentOffset.x / scrollView.width |
| | | if page.int >= pageControl.numberOfPages{ |
| | | pageControl.currentPage = 0 |
| | | }else{ |
| | | pageControl.currentPage = page.int |
| | | } |
| | | print("--结束滑动") |
| | | timer?.fireDate = Date.init(timeIntervalSinceNow: 3.0) //3秒后开启 |
| | | } |
| | | |
| | | func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) { |
| | | let page = scrollView.contentOffset.x / scrollView.width |
| | | if page.int >= pageControl.numberOfPages{ |
| | | pageControl.currentPage = 0 |
| | | }else{ |
| | | pageControl.currentPage = page.int |
| | | } |
| | | } |
| | | |
| | | func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { |
| | | let page = scrollView.contentOffset.x / scrollView.width |
| | | if page.int >= pageControl.numberOfPages{ |
| | | pageControl.currentPage = 0 |
| | | collectionView.setContentOffset(.zero, animated: false) |
| | | }else{ |
| | | pageControl.currentPage = page.int |
| | | } |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "BannerView", for: indexPath) as! CommonBannerViewCell |
| | | let item = items[indexPath.row] |
| | | |
| | | switch item.mediaType { |
| | | case .imageUrl: |
| | | if let i = item.resource{ |
| | | cell.imgView.sd_setImage(with: URL(string: i)) |
| | | } |
| | | case .imageLocal: |
| | | if let i = item.resource{ |
| | | cell.imgView.image = UIImage(named: i) |
| | | } |
| | | default:break |
| | | } |
| | | return cell |
| | | } |
| | | } |
| | | |
| | | class CommonBannerViewCell: UICollectionViewCell { |
| | | |
| | | lazy var imgView:UIImageView = { |
| | | let img = UIImageView() |
| | | img.contentMode = .scaleToFill |
| | | return img |
| | | }() |
| | | lazy var imgView:UIImageView = { |
| | | let img = UIImageView() |
| | | img.contentMode = .scaleToFill |
| | | return img |
| | | }() |
| | | |
| | | override init(frame: CGRect) { |
| | | super.init(frame: frame) |
| | | contentView.addSubview(imgView) |
| | | imgView.snp.makeConstraints { make in |
| | | make.edges.equalToSuperview() |
| | | } |
| | | } |
| | | override init(frame: CGRect) { |
| | | super.init(frame: frame) |
| | | contentView.addSubview(imgView) |
| | | imgView.snp.makeConstraints { make in |
| | | make.edges.equalToSuperview() |
| | | } |
| | | } |
| | | |
| | | required init?(coder aDecoder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | required init?(coder aDecoder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | enum GenderType:Int,HandyJSONEnum{ |
| | | case none = 0 |
| | | case man = 1 |
| | | case woman = 2 |
| | | } |
| | |
| | | case sport = 2 |
| | | case communtiy = 3 |
| | | case deepPlayer = 4 |
| | | case more = 5 |
| | | case winner = 5 |
| | | case counter = 6 |
| | | case more = 7 |
| | | |
| | | |
| | | var image:UIImage{ |
| | |
| | | case .sport:return UIImage(named: "icon_coupon_2")! |
| | | case .communtiy:return UIImage(named: "icon_coupon_3")! |
| | | case .deepPlayer:return UIImage(named: "icon_coupon_4")! |
| | | case .winner:return UIImage(named: "icon_coupon_4")! |
| | | case .counter:return UIImage(named: "icon_coupon_4")! |
| | | case .more:return UIImage(named: "icon_coupon_6")! |
| | | } |
| | | } |
| | |
| | | case .sport:return "EVENTS" |
| | | case .communtiy:return "ON_LINE" |
| | | case .deepPlayer:return "APPOINTMENT" |
| | | case .winner:return "WINNER" |
| | | case .counter:return "COUNTER" |
| | | case .more:return "MORE" |
| | | } |
| | | } |
| | |
| | | case .sport:return "运动大人" |
| | | case .communtiy:return "社区之王" |
| | | case .deepPlayer:return "深度玩家" |
| | | case .winner:return "常胜将军" |
| | | case .counter:return "越战越勇" |
| | | case .more:return "更多" |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | /// 删除参赛人员 |
| | | class func deleParticipant(id:Int)->Observable<BaseResponse<SimpleModel>>{ |
| | | class func deleParticipant(id:Int,isStudent:Int)->Observable<BaseResponse<SimpleModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | .interface(url: "competition/api/participant/delParticipant") |
| | | .append(key: "id", value: id) |
| | | .append(key: "isStudent", value: isStudent) |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | } |
| | | |
| | |
| | | return NetworkRequest.request(params: params, method: .post, progress: false) |
| | | } |
| | | |
| | | class func cancelMyWorldCup(id:Int)->Observable<BaseResponse<SimpleModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | .interface(url: "/communityWorldCup/api/worldCup/cancelMyWorldCup") |
| | | .append(key: "id", value: id) |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | guard let weakSelf = self else { return } |
| | | if status{ |
| | | let m = weakSelf.viewModel.dataSource.value[index.row] |
| | | Services.deleParticipant(id: m.id).subscribe(onNext: { data in |
| | | Services.deleParticipant(id: m.id, isStudent: m.isStudent).subscribe(onNext: { data in |
| | | weakSelf.viewModel.beginRefresh() |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | |
| | | @IBOutlet weak var label_distance: UILabel! |
| | | @IBOutlet weak var btn_exchange: QMUIButton! |
| | | |
| | | |
| | | private var clouse:((Bool)->Void)! |
| | | private var storeType:StoreType! |
| | | |
| | | enum StoreType{ |
| | | case normal |
| | | case worldCup |
| | | } |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | |
| | | } |
| | | } |
| | | |
| | | static func show(_ activityModel:ActivityDetailStoreModel,clouse:@escaping (Bool)->Void){ |
| | | static func show(_ activityModel:ActivityDetailStoreModel,type:StoresInfoView.StoreType = .normal,clouse:@escaping (Bool)->Void){ |
| | | let storesView = StoresInfoView.jq_loadNibView() |
| | | storesView.frame = sceneDelegate?.window?.frame ?? .zero |
| | | storesView.label_topTitle.text = "请确认预约门店" |
| | | |
| | | if type == .normal{ |
| | | storesView.label_topTitle.text = "请确认预约门店" |
| | | storesView.btn_exchange.setTitle("更换门店", for: .normal) |
| | | }else{ |
| | | storesView.label_topTitle.text = "请确认参与赛点" |
| | | storesView.btn_exchange.setTitle("更换赛点", for: .normal) |
| | | } |
| | | |
| | | |
| | | storesView.img_logo.sd_setImage(with: URL(string: activityModel.storeCoverDrawing)) |
| | | storesView.label_title.text = activityModel.name |
| | | storesView.label_address.text = activityModel.address |
| | |
| | | img_profile.sd_setImage(with: URL(string: studentInfo!.stuHeadImg)) |
| | | studentModel.headImg = studentInfo!.stuHeadImg |
| | | studentModel.stuId = studentInfo!.stuId |
| | | tf_gender.text = studentModel.sex == .man ? "男":"女" |
| | | tf_gender.text = studentInfo!.sex == .man ? "男":"女" |
| | | } |
| | | }else{ |
| | | view_profile.isHidden = true |
| | | view_profile.isHidden = false |
| | | title = "添加人员" |
| | | tf_name.placeholder = "请输入人员姓名" |
| | | tf_height.placeholder = "请输入身高" |
| | |
| | | |
| | | |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | | if studentInfo == nil && type == .course{ |
| | | guard profileImg != nil else {alertError(msg: "请上传运动营成员头像");return} |
| | | if studentInfo == nil{ |
| | | guard profileImg != nil else { |
| | | |
| | | if type == .course{ |
| | | alertError(msg: "请上传运动营成员头像"); |
| | | }else{ |
| | | alertError(msg: "请上传人员头像"); |
| | | } |
| | | |
| | | return} |
| | | } |
| | | |
| | | guard !tf_name.text!.isEmpty else {alertError(msg: tf_name.placeholder!);return} |
| | |
| | | guard tf_phone.text!.jq_isPhone else {alertError(msg: "请输入正确的手机号");return} |
| | | } |
| | | |
| | | // if !tf_idCard.isEmpty || activityDetailPartModel != nil{ |
| | | // |
| | | // } |
| | | guard tf_idCard.text!.jq_idCard() else {alertError(msg: "请输入正确的身份证号码");return} |
| | | if !tf_idCard.isEmpty || activityDetailPartModel != nil{ |
| | | guard tf_idCard.text!.jq_idCard() else {alertError(msg: "请输入正确的身份证号码");return} |
| | | } |
| | | |
| | | studentModel.birthday = tf_birthday.text! |
| | | studentModel.name = tf_name.text! |
| | |
| | | |
| | | private func addStudent(){ |
| | | if type == .course{ |
| | | if studentInfo == nil{ |
| | | Services.addStudent(studentModel).subscribe(onNext: { [weak self] data in |
| | | self?.addStudentSuccess(text: "编辑成功") |
| | | }).disposed(by: disposeBag) |
| | | }else{ |
| | | if studentInfo != nil{ |
| | | Services.editStu(studentModel).subscribe(onNext: {[weak self]data in |
| | | self?.addStudentSuccess(text: "添加成功") |
| | | self?.addStudentSuccess(text: "编辑成功") |
| | | NotificationCenter.default.post(name: StudentUpdate_Nofi, object: nil) |
| | | }) { error in |
| | | |
| | | }.disposed(by: disposeBag) |
| | | }else{ |
| | | Services.addStudent(studentModel).subscribe(onNext: { [weak self] data in |
| | | self?.addStudentSuccess(text: "添加成功") |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | }else{ |
| | | if activityDetailPartModel != nil{ |
| | |
| | | } |
| | | |
| | | if textField == tf_gender{ |
| | | |
| | | let alertVC = UIAlertController(title: "性别", message: nil, preferredStyle: .actionSheet) |
| | | alertVC.addAction(UIAlertAction(title: "男", style: .default) { _ in |
| | | self.tf_gender.text = "男" |
| | | self.studentModel.sex = .man |
| | | self.activityDetailPartModel?.gender = .man |
| | | self.studentInfo?.sex = .man |
| | | }) |
| | | |
| | | alertVC.addAction(UIAlertAction(title: "女", style: .default) { _ in |
| | | self.tf_gender.text = "女" |
| | | self.studentModel.sex = .woman |
| | | self.activityDetailPartModel?.gender = .woman |
| | | self.studentInfo?.sex = .woman |
| | | }) |
| | | |
| | | alertVC.addAction(UIAlertAction(title: "取消", style: .cancel)) |
| | |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="身份证号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JjF-jS-GPH"> |
| | | <rect key="frame" x="30.000000000000004" y="16.666666666666629" width="57.333333333333343" height="17"/> |
| | | <rect key="frame" x="14.000000000000004" y="16.666666666666629" width="57.333333333333343" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_item_p" translatesAutoresizingMaskIntoConstraints="NO" id="Udv-bd-yGQ"> |
| | | <rect key="frame" x="15" y="19" width="12" height="12"/> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入运动营成员身份证号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="LD0-ej-DmH"> |
| | | <rect key="frame" x="120" y="0.0" width="233" height="49.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | |
| | | <constraint firstItem="LD0-ej-DmH" firstAttribute="top" secondItem="eXg-lM-iFa" secondAttribute="top" id="2K7-zV-OyA"/> |
| | | <constraint firstAttribute="bottom" secondItem="NlW-dD-gIp" secondAttribute="bottom" id="9Mu-Gg-yex"/> |
| | | <constraint firstItem="LD0-ej-DmH" firstAttribute="leading" secondItem="eXg-lM-iFa" secondAttribute="leading" constant="120" id="9U6-rD-Jfd"/> |
| | | <constraint firstItem="JjF-jS-GPH" firstAttribute="centerY" secondItem="Udv-bd-yGQ" secondAttribute="centerY" id="9u5-dT-w12"/> |
| | | <constraint firstItem="JjF-jS-GPH" firstAttribute="leading" secondItem="Udv-bd-yGQ" secondAttribute="trailing" constant="3" id="D3m-eN-BHV"/> |
| | | <constraint firstItem="JjF-jS-GPH" firstAttribute="leading" secondItem="eXg-lM-iFa" secondAttribute="leading" constant="14" id="Im9-5F-1xr"/> |
| | | <constraint firstItem="NlW-dD-gIp" firstAttribute="leading" secondItem="eXg-lM-iFa" secondAttribute="leading" constant="14" id="Qir-9y-1mQ"/> |
| | | <constraint firstAttribute="trailing" secondItem="NlW-dD-gIp" secondAttribute="trailing" constant="14" id="jSc-75-egP"/> |
| | | <constraint firstItem="NlW-dD-gIp" firstAttribute="top" secondItem="LD0-ej-DmH" secondAttribute="bottom" id="mxF-BK-Axi"/> |
| | | <constraint firstAttribute="height" constant="50" id="ngz-MT-wKh"/> |
| | | <constraint firstItem="Udv-bd-yGQ" firstAttribute="leading" secondItem="eXg-lM-iFa" secondAttribute="leading" constant="15" id="vAa-A7-sCK"/> |
| | | <constraint firstItem="JjF-jS-GPH" firstAttribute="centerY" secondItem="eXg-lM-iFa" secondAttribute="centerY" id="xph-Ep-7kc"/> |
| | | </constraints> |
| | | </view> |
| | |
| | | var lon: String = "" |
| | | var matchNumber: Int = 0 |
| | | var name: String = "" |
| | | var registrationClosingTime: String = "" |
| | | var registrationClosingTime:String? |
| | | |
| | | var worldCupId:Int = 0 |
| | | } |
| | |
| | | var intro: String = "" |
| | | var name: String = "" |
| | | var paiCoin: Int = 0 |
| | | var registrationClosingTime: String = "" |
| | | var registrationClosingTime:String? |
| | | var startTime: String = "" |
| | | var storeInfos = [ActivityDetailStoreModel]() |
| | | |
| | |
| | | var revocable:Int = 0 //是否可取消 是否可取消(0=否,1=是) |
| | | var status:SignupType = .cancel//比赛状态 比赛状态(1=未开始,2=已开始,3=已结束,4=已取消) |
| | | var unitPrice:Double = 0 |
| | | var payType:PayType = .free |
| | | var province:String = "" |
| | | var city:String = "" |
| | | |
| | | |
| | | } |
| | |
| | | var lon: Double = 0 |
| | | var matchNumber: Int = 0 |
| | | var name: String = "" |
| | | var registrationClosingTime: String = "" |
| | | var registrationClosingTime:String? |
| | | } |
| | | |
| | | struct WorldCupRankModel:HandyJSON { |
| | |
| | | collectionView.dataSource = self |
| | | collectionView.backgroundColor = .white |
| | | collectionView.register(UINib(nibName: "HomeCCell", bundle: nil), forCellWithReuseIdentifier: "_HomeCCell") |
| | | // collectionView.jq_setEmptyView("无数据", image: UIImage(named: "icon_LOGO")?.jq_imageWithTintColor(color: .gray), foregroundColor: .gray, clouse: nil) |
| | | } |
| | | |
| | | override func setRx() { |
| | |
| | | |
| | | func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { |
| | | let headView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "_headerView") as! WorldCupHeadView |
| | | headView.tableView = tableView |
| | | headView.delegate = self |
| | | return headView |
| | | } |
| | |
| | | |
| | | func atPoint(_ btn: QMUIButton) { |
| | | hotView?.removeFromSuperview() |
| | | conditionView?.removeFromSuperview() |
| | | pointView = CourseSubTypeView.show(inView: self.view, afterView: btn, items: pointData,selectModel: viewModel.storeId.value) {[weak self] model in |
| | | if model.name == "全部"{ |
| | | btn.setTitle("所在赛点", for: .normal) |
| | |
| | | @IBOutlet weak var btn_condition: QMUIButton! |
| | | @IBOutlet weak var btn_hot: QMUIButton! |
| | | var delegate:WorldCupHeadDelegate? |
| | | var tableView: UITableView? |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | |
| | | } |
| | | |
| | | @IBAction func atPointAction(_ sender: QMUIButton) { |
| | | guard !sender.isSelected else{return} |
| | | if tableView?.mj_header?.isRefreshing ?? false{return} |
| | | btn_point.isSelected = true |
| | | btn_condition.isSelected = false |
| | | btn_hot.isSelected = false |
| | |
| | | } |
| | | |
| | | @IBAction func atCoditionAction(_ sender: QMUIButton) { |
| | | guard !sender.isSelected else{return} |
| | | if tableView?.mj_header?.isRefreshing ?? false{return} |
| | | btn_condition.isSelected = true |
| | | btn_point.isSelected = false |
| | | btn_hot.isSelected = false |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <capability name="Named colors" 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"/> |
| | |
| | | <subviews> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UqK-cy-hEv" customClass="QMUIButton"> |
| | | <rect key="frame" x="0.0" y="0.0" width="79" height="52"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" relation="lessThanOrEqual" constant="180" id="lDb-Gs-6wa"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="所在赛点" image="icon_down_arrow"> |
| | |
| | | class LoginRegOrForgotVC: BaseVC { |
| | | |
| | | |
| | | private var type:GetSMSCodeType! |
| | | private var type:GetSMSCodeType! |
| | | |
| | | @IBOutlet weak var tf_phone: QMUITextField! |
| | | @IBOutlet weak var tf_code: QMUITextField! |
| | | @IBOutlet weak var tf_pwd: QMUITextField! |
| | | @IBOutlet weak var tf_invitePhone: QMUITextField! |
| | | @IBOutlet weak var view_invite: UIView! |
| | | @IBOutlet weak var view_placeholder: UIView! |
| | | @IBOutlet weak var tf_phone: QMUITextField! |
| | | @IBOutlet weak var tf_code: QMUITextField! |
| | | @IBOutlet weak var tf_pwd: QMUITextField! |
| | | @IBOutlet weak var tf_invitePhone: QMUITextField! |
| | | @IBOutlet weak var view_invite: UIView! |
| | | @IBOutlet weak var view_placeholder: UIView! |
| | | |
| | | private var force:String = "" |
| | | private var force:String = "" |
| | | |
| | | required init(type:GetSMSCodeType,force:String = "") { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.type = type |
| | | self.force = force |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = type.titleStr |
| | | tf_pwd.maximumTextLength = 18 |
| | | |
| | | tf_phone.text = force |
| | | if !force.isEmpty{alert(msg: "请修改密码")} |
| | | view_invite.isHidden = type != .register |
| | | view_placeholder.isHidden = type != .register |
| | | } |
| | | |
| | | @IBAction func eyeAction(_ sender: UIButton) { |
| | | sender.isSelected = !sender.isSelected |
| | | tf_pwd.isSecureTextEntry = !sender.isSelected |
| | | } |
| | | |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | | guard !tf_phone.text!.isEmpty else {alertError(msg: tf_phone.placeholder!);return} |
| | | guard tf_phone.text!.jq_isPhone else {alertError(msg: "请输入正确的手机号");return} |
| | | guard !tf_code.text!.isEmpty else {alertError(msg: tf_code.placeholder!);return} |
| | | guard !tf_pwd.text!.isEmpty else {alertError(msg: tf_pwd.placeholder!);return} |
| | | guard tf_pwd.text!.jq_isComplexPassword else {alertError(msg: "请输入6-18位包含数字和字母的密码");return} |
| | | |
| | | let phone = tf_phone.text! |
| | | let pwd = tf_pwd.text! |
| | | let code = tf_code.text! |
| | | |
| | | switch type{ |
| | | case .register: |
| | | |
| | | var invitePhone:String? |
| | | if !tf_invitePhone.isEmpty{invitePhone = tf_invitePhone.text!} |
| | | if invitePhone != nil{ |
| | | guard tf_phone.text!.jq_isPhone else { |
| | | alert(msg: "请输入正确的推广手机号码");return |
| | | } |
| | | required init(type:GetSMSCodeType,force:String = "") { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.type = type |
| | | self.force = force |
| | | } |
| | | |
| | | Services.register(phone: phone, password: pwd, code: code,invitePhone: invitePhone).subscribe(onNext: { result in |
| | | alertSuccess(msg: "注册成功") |
| | | DispatchQueue.main.asyncAfter(wallDeadline: .now()+1) { |
| | | app.registerAndLoginSuccess() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | case .forgotPwd: |
| | | Services.forgetPwd(phone: phone, password: pwd, code: code).subscribe(onNext: { result in |
| | | alertSuccess(msg: "修改成功") |
| | | DispatchQueue.main.asyncAfter(wallDeadline: .now()+1) { |
| | | self.navigationController?.popViewController() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | case .updatePwd: |
| | | Services.updatePwd(phone: phone, password: pwd, code: code).subscribe(onNext: { result in |
| | | alertSuccess(msg: "修改成功") |
| | | DispatchQueue.main.asyncAfter(wallDeadline: .now()+1) { |
| | | self.navigationController?.popViewController() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | default:break |
| | | } |
| | | } |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | @IBAction func getCodeAction(_ sender: UIButton) { |
| | | guard !tf_phone.text!.isEmpty else {alertError(msg: tf_phone.placeholder!);return} |
| | | guard tf_phone.text!.jq_isPhone else {alertError(msg: "请输入正确的手机号");return} |
| | | Services.getSMSCode(phone: tf_phone.text!, type: type).subscribe(onNext: {result in |
| | | sender.openCountDown() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = type.titleStr |
| | | tf_pwd.maximumTextLength = 18 |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .default |
| | | } |
| | | tf_phone.text = force |
| | | if !force.isEmpty{alert(msg: "请修改密码")} |
| | | view_invite.isHidden = type != .register |
| | | view_placeholder.isHidden = type != .register |
| | | } |
| | | |
| | | @IBAction func eyeAction(_ sender: UIButton) { |
| | | sender.isSelected = !sender.isSelected |
| | | tf_pwd.isSecureTextEntry = !sender.isSelected |
| | | } |
| | | |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | | guard !tf_phone.text!.isEmpty else {alertError(msg: tf_phone.placeholder!);return} |
| | | guard tf_phone.text!.jq_isPhone else {alertError(msg: "请输入正确的手机号");return} |
| | | guard !tf_code.text!.isEmpty else {alertError(msg: tf_code.placeholder!);return} |
| | | guard !tf_pwd.text!.isEmpty else {alertError(msg: tf_pwd.placeholder!);return} |
| | | guard tf_pwd.text!.jq_isComplexPassword else {alertError(msg: "请输入6-18位包含数字和字母的密码");return} |
| | | |
| | | let phone = tf_phone.text! |
| | | let pwd = tf_pwd.text! |
| | | let code = tf_code.text! |
| | | |
| | | switch type{ |
| | | case .register: |
| | | |
| | | var invitePhone:String? |
| | | if !tf_invitePhone.isEmpty{invitePhone = tf_invitePhone.text!} |
| | | if invitePhone != nil{ |
| | | guard tf_phone.text!.jq_isPhone else { |
| | | alert(msg: "请输入正确的推广手机号码");return |
| | | } |
| | | } |
| | | |
| | | Services.register(phone: phone, password: pwd, code: code,invitePhone: invitePhone).subscribe(onNext: { result in |
| | | alertSuccess(msg: "注册成功") |
| | | DispatchQueue.main.asyncAfter(wallDeadline: .now()+1) { |
| | | app.registerAndLoginSuccess() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | case .forgotPwd: |
| | | Services.forgetPwd(phone: phone, password: pwd, code: code).subscribe(onNext: { result in |
| | | alertSuccess(msg: "修改成功") |
| | | DispatchQueue.main.asyncAfter(wallDeadline: .now()+1) { |
| | | self.navigationController?.popViewController() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | case .updatePwd: |
| | | Services.updatePwd(phone: phone, password: pwd, code: code).subscribe(onNext: { result in |
| | | alertSuccess(msg: "修改成功") |
| | | DispatchQueue.main.asyncAfter(wallDeadline: .now()+1) { |
| | | self.navigationController?.popViewController() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | default:break |
| | | } |
| | | } |
| | | |
| | | @IBAction func getCodeAction(_ sender: UIButton) { |
| | | guard !tf_phone.text!.isEmpty else {alertError(msg: tf_phone.placeholder!);return} |
| | | guard tf_phone.text!.jq_isPhone else {alertError(msg: "请输入正确的手机号");return} |
| | | Services.getSMSCode(phone: tf_phone.text!, type: type).subscribe(onNext: {result in |
| | | sender.openCountDown() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .default |
| | | } |
| | | |
| | | } |
| | |
| | | case .success: |
| | | label_content.text = "报名成功,请等待平台通知具体开赛时间" |
| | | self.btn_back.setTitle("返回首页", for: .normal) |
| | | self.btn_again.setTitle("查看排名", for: .normal) |
| | | self.btn_again.setTitle("查看报名", for: .normal) |
| | | |
| | | case .fail(let string, let code): |
| | | self.btn_back.setTitle("返回", for: .normal) |
| | |
| | | NotificationCenter.default.post(name: UpdateCurrentStore_Noti, object: nil) |
| | | NotificationCenter.default.post(name: StudentRefresh_Nofi, object: nil) |
| | | case "查看报名": |
| | | let vc = ActivitySignupListVC() |
| | | jumpAndRemoveSelfVC(vc) |
| | | if objType == .worldCup{ |
| | | let vc = WorldCupVC() |
| | | jumpAndRemoveSelfVC(vc) |
| | | }else{ |
| | | let vc = ActivitySignupListVC() |
| | | jumpAndRemoveSelfVC(vc) |
| | | } |
| | | case "再次支付": |
| | | if objType == .courseApply{ |
| | | navigationController?.popViewController(animated: true, {[weak self] in |
| | |
| | | }, clipSize: CGSize(width: JQ_ScreenW, height: JQ_ScreenW)) |
| | | } |
| | | |
| | | @IBAction func updatePwdAction(_ sender: Any) { |
| | | let vc = LoginRegOrForgotVC(type: .updatePwd) |
| | | push(vc: vc) |
| | | } |
| | | |
| | | @IBAction func userAgreementAction(_ sender: Any) { |
| | | push(vc: CommonWebVC(type: .user)) |
| | | } |
| | | |
| | | @IBAction func privacyAgreementAction(_ sender: Any) { |
| | | push(vc: CommonWebVC(type: .privacy)) |
| | | } |
| | | |
| | | |
| | | @IBAction func dismissAccountAction(_ sender: UIButton) { |
| | | |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <capability name="Named colors" minToolsVersion="9.0"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | |
| | | </connections> |
| | | </button> |
| | | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="R9B-6k-bGu"> |
| | | <rect key="frame" x="0.0" y="253" width="393" height="306"/> |
| | | <rect key="frame" x="0.0" y="253" width="393" height="459"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="b2k-2V-k9C"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="51"/> |
| | |
| | | <constraint firstAttribute="trailing" secondItem="Xkh-Hd-htf" secondAttribute="trailing" constant="17" id="feQ-Qt-XfD"/> |
| | | </constraints> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aso-eB-Jim" customClass="TapBtn" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="306" width="393" height="51"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SLz-E6-EPU"> |
| | | <rect key="frame" x="14" y="50.666666666666629" width="365" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.83137254900000002" green="0.83137254900000002" blue="0.83137254900000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.5" id="CAc-BC-e3a"/> |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pEn-a6-qmn"> |
| | | <rect key="frame" x="14.000000000000004" y="17" width="57.333333333333343" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.99215686274509807" green="0.49019607843137253" blue="0.0078431372549019607" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more_y" translatesAutoresizingMaskIntoConstraints="NO" id="qUv-ob-kMX"> |
| | | <rect key="frame" x="368" y="19" width="8" height="13"/> |
| | | </imageView> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="51" id="8MJ-n9-d5E"/> |
| | | <constraint firstItem="pEn-a6-qmn" firstAttribute="centerY" secondItem="aso-eB-Jim" secondAttribute="centerY" id="FO6-2p-wvq"/> |
| | | <constraint firstAttribute="trailing" secondItem="SLz-E6-EPU" secondAttribute="trailing" constant="14" id="Jrt-m4-UqB"/> |
| | | <constraint firstAttribute="trailing" secondItem="qUv-ob-kMX" secondAttribute="trailing" constant="17" id="MlX-2j-Pyx"/> |
| | | <constraint firstItem="qUv-ob-kMX" firstAttribute="centerY" secondItem="aso-eB-Jim" secondAttribute="centerY" id="ebm-DD-4tP"/> |
| | | <constraint firstItem="pEn-a6-qmn" firstAttribute="leading" secondItem="aso-eB-Jim" secondAttribute="leading" constant="14" id="gth-DS-Xey"/> |
| | | <constraint firstAttribute="bottom" secondItem="SLz-E6-EPU" secondAttribute="bottom" id="opp-Jf-hI6"/> |
| | | <constraint firstItem="SLz-E6-EPU" firstAttribute="leading" secondItem="aso-eB-Jim" secondAttribute="leading" constant="14" id="t1v-7m-CO7"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="updatePwdAction:" destination="-1" eventType="touchUpInside" id="Vzm-fA-XKJ"/> |
| | | </connections> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a63-aL-Eid" customClass="TapBtn" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="357" width="393" height="51"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EkC-Bl-hHR"> |
| | | <rect key="frame" x="14" y="50.666666666666629" width="365" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.83137254900000002" green="0.83137254900000002" blue="0.83137254900000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.5" id="Aev-y4-DHo"/> |
| | | </constraints> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more_y" translatesAutoresizingMaskIntoConstraints="NO" id="9S4-qi-vaZ"> |
| | | <rect key="frame" x="368" y="19" width="8" height="13"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="用户协议" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HaZ-hn-5rr"> |
| | | <rect key="frame" x="14.000000000000004" y="17" width="57.333333333333343" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.99215686274509807" green="0.49019607843137253" blue="0.0078431372549019607" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="51" id="4EW-cg-s06"/> |
| | | <constraint firstItem="9S4-qi-vaZ" firstAttribute="centerY" secondItem="a63-aL-Eid" secondAttribute="centerY" id="4Vd-WS-SzJ"/> |
| | | <constraint firstItem="HaZ-hn-5rr" firstAttribute="centerY" secondItem="a63-aL-Eid" secondAttribute="centerY" id="8KB-sH-D4g"/> |
| | | <constraint firstItem="HaZ-hn-5rr" firstAttribute="leading" secondItem="a63-aL-Eid" secondAttribute="leading" constant="14" id="B9X-cp-07Q"/> |
| | | <constraint firstItem="EkC-Bl-hHR" firstAttribute="leading" secondItem="a63-aL-Eid" secondAttribute="leading" constant="14" id="OLO-rC-rbt"/> |
| | | <constraint firstAttribute="bottom" secondItem="EkC-Bl-hHR" secondAttribute="bottom" id="nEh-g5-PJM"/> |
| | | <constraint firstAttribute="trailing" secondItem="EkC-Bl-hHR" secondAttribute="trailing" constant="14" id="rGm-Rf-FM7"/> |
| | | <constraint firstAttribute="trailing" secondItem="9S4-qi-vaZ" secondAttribute="trailing" constant="17" id="uv0-5f-OxN"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="userAgreementAction:" destination="-1" eventType="touchUpInside" id="io5-1K-Mso"/> |
| | | </connections> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tYi-Sq-9DM" customClass="TapBtn" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="408" width="393" height="51"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9AA-Gm-jhb"> |
| | | <rect key="frame" x="14" y="50.666666666666629" width="365" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.83137254900000002" green="0.83137254900000002" blue="0.83137254900000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.5" id="Xkf-ds-Ako"/> |
| | | </constraints> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more_y" translatesAutoresizingMaskIntoConstraints="NO" id="IWJ-Hr-d0k"> |
| | | <rect key="frame" x="368" y="19" width="8" height="13"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="隐私协议" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Zuo-b2-tac"> |
| | | <rect key="frame" x="14.000000000000004" y="17" width="57.333333333333343" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.99215686270000003" green="0.49019607840000001" blue="0.0078431372550000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="trailing" secondItem="IWJ-Hr-d0k" secondAttribute="trailing" constant="17" id="E2s-3s-LxE"/> |
| | | <constraint firstItem="Zuo-b2-tac" firstAttribute="leading" secondItem="tYi-Sq-9DM" secondAttribute="leading" constant="14" id="E3j-KS-wM1"/> |
| | | <constraint firstItem="Zuo-b2-tac" firstAttribute="centerY" secondItem="tYi-Sq-9DM" secondAttribute="centerY" id="FkA-gs-1KF"/> |
| | | <constraint firstAttribute="bottom" secondItem="9AA-Gm-jhb" secondAttribute="bottom" id="Olv-4Q-30b"/> |
| | | <constraint firstItem="9AA-Gm-jhb" firstAttribute="leading" secondItem="tYi-Sq-9DM" secondAttribute="leading" constant="14" id="hmy-7l-SRg"/> |
| | | <constraint firstAttribute="trailing" secondItem="9AA-Gm-jhb" secondAttribute="trailing" constant="14" id="vR5-Je-hF3"/> |
| | | <constraint firstItem="IWJ-Hr-d0k" firstAttribute="centerY" secondItem="tYi-Sq-9DM" secondAttribute="centerY" id="xQC-Gb-HD9"/> |
| | | <constraint firstAttribute="height" constant="51" id="ytx-zO-bvu"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="privacyAgreementAction:" destination="-1" eventType="valueChanged" id="ise-7d-JPs"/> |
| | | </connections> |
| | | </view> |
| | | </subviews> |
| | | </stackView> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Bn-Ou-0kZ"> |
| | |
| | | </objects> |
| | | <resources> |
| | | <image name="btn_camera" width="22" height="20"/> |
| | | <image name="icon_more_y" width="8" height="13"/> |
| | | <namedColor name="FE6E0D"> |
| | | <color red="0.99199998378753662" green="0.53299999237060547" blue="0.0080000003799796104" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </namedColor> |
| | |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | <systemColor name="systemGroupedBackgroundColor"> |
| | | <color red="0.94901960780000005" green="0.94901960780000005" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <color red="0.94901960784313721" green="0.94901960784313721" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
| | |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | years = (Date().jq_nowYear()-5...Date().jq_nowYear()).map{$0} |
| | | years = (Date().jq_nowYear()-5...Date().jq_nowYear()).map{$0}.sorted(by: {$0 > $1}) |
| | | years.insert(0, at: 0) |
| | | cons_bottom.constant = -(JQ_ScreenW * 1.1) |
| | | pickerView.delegate = self |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <capability name="Named colors" minToolsVersion="9.0"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请选择参与年份" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F88-Cm-Utq"> |
| | | <rect key="frame" x="139.33333333333334" y="18" width="114.33333333333334" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9bC-Lz-I50"> |
| | |
| | | label_title.text = model.name |
| | | label_state.text = model.status.rawTitle |
| | | label_time.text = "活动时间:\(model.activeTime)" |
| | | label_times.text = "已比赛场次数:\(model.matchNumber)" |
| | | label_times.text = "已比赛次数:\(model.matchNumber)" |
| | | btn_begin.isHidden = model.status != .ongoing |
| | | } |
| | | |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_MyQRCodeTCell" rowHeight="207" id="KGk-i7-Jjw" customClass="MyQRCodeTCell" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="462" height="207"/> |
| | | <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_MyQRCodeTCell" rowHeight="82" id="KGk-i7-Jjw" customClass="MyQRCodeTCell" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="385" height="82"/> |
| | | <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="462" height="207"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="385" height="82"/> |
| | | <autoresizingMask key="autoresizingMask"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OzX-LD-ebb"> |
| | | <rect key="frame" x="14" y="7" width="434" height="193"/> |
| | | <rect key="frame" x="14" y="7" width="357" height="68"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="姓名:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWx-WW-QMK"> |
| | | <rect key="frame" x="8" y="88" width="36" height="17"/> |
| | | <rect key="frame" x="8" y="15" width="36" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hlr-vD-idp"> |
| | | <rect key="frame" x="44" y="88" width="13.333333333333336" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <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="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KwF-AF-WE6"> |
| | | <rect key="frame" x="105.33333333333333" y="88" width="13.333333333333329" height="17"/> |
| | | <rect key="frame" x="44" y="36" width="13.333333333333336" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="hOG-rl-POS"> |
| | | <rect key="frame" x="357" y="66.666666666666671" width="60" height="60"/> |
| | | <rect key="frame" x="280" y="4" width="60" height="60"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="60" id="MdW-PM-sUS"/> |
| | | <constraint firstAttribute="width" constant="60" id="PTp-ML-UZf"/> |
| | | </constraints> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="年龄:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZFl-29-gbc"> |
| | | <rect key="frame" x="69.333333333333329" y="88" width="36" height="17"/> |
| | | <rect key="frame" x="8" y="36" width="36" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="点击查看二维码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Kr-Zx-4BQ"> |
| | | <rect key="frame" x="251" y="88" width="100" height="17"/> |
| | | <rect key="frame" x="174" y="25.666666666666664" width="100" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.30980392156862746" green="0.30588235294117649" blue="0.30196078431372547" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hlr-vD-idp"> |
| | | <rect key="frame" x="49" y="15" width="13.333333333333336" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="Hlr-vD-idp" firstAttribute="centerY" secondItem="DWx-WW-QMK" secondAttribute="centerY" id="1dd-64-UKe"/> |
| | | <constraint firstItem="ZFl-29-gbc" firstAttribute="leading" secondItem="DWx-WW-QMK" secondAttribute="leading" id="2bp-jS-OMm"/> |
| | | <constraint firstItem="4Kr-Zx-4BQ" firstAttribute="centerY" secondItem="OzX-LD-ebb" secondAttribute="centerY" id="692-Pc-K0C"/> |
| | | <constraint firstItem="KwF-AF-WE6" firstAttribute="leading" secondItem="ZFl-29-gbc" secondAttribute="trailing" id="7aV-MS-9Iw"/> |
| | | <constraint firstItem="DWx-WW-QMK" firstAttribute="leading" secondItem="OzX-LD-ebb" secondAttribute="leading" constant="8" id="HC2-wx-Td9"/> |
| | | <constraint firstItem="Hlr-vD-idp" firstAttribute="leading" secondItem="DWx-WW-QMK" secondAttribute="trailing" id="Laa-j8-s7g"/> |
| | | <constraint firstItem="DWx-WW-QMK" firstAttribute="leading" secondItem="OzX-LD-ebb" secondAttribute="leading" constant="8" id="FPd-J4-BUg"/> |
| | | <constraint firstItem="hOG-rl-POS" firstAttribute="centerY" secondItem="OzX-LD-ebb" secondAttribute="centerY" id="Hg3-aH-8vx"/> |
| | | <constraint firstAttribute="bottom" secondItem="ZFl-29-gbc" secondAttribute="bottom" constant="15" id="OpY-il-HQo"/> |
| | | <constraint firstItem="hOG-rl-POS" firstAttribute="leading" secondItem="4Kr-Zx-4BQ" secondAttribute="trailing" constant="6" id="TBX-Ot-GVW"/> |
| | | <constraint firstItem="DWx-WW-QMK" firstAttribute="centerY" secondItem="OzX-LD-ebb" secondAttribute="centerY" id="TF3-1A-eXd"/> |
| | | <constraint firstItem="ZFl-29-gbc" firstAttribute="leading" secondItem="Hlr-vD-idp" secondAttribute="trailing" constant="12" id="TNA-r7-InE"/> |
| | | <constraint firstItem="Hlr-vD-idp" firstAttribute="centerY" secondItem="DWx-WW-QMK" secondAttribute="centerY" id="bbG-vu-r9O"/> |
| | | <constraint firstItem="hOG-rl-POS" firstAttribute="centerY" secondItem="DWx-WW-QMK" secondAttribute="centerY" id="jaS-7D-1N9"/> |
| | | <constraint firstItem="4Kr-Zx-4BQ" firstAttribute="centerY" secondItem="DWx-WW-QMK" secondAttribute="centerY" id="uGo-RE-QzM"/> |
| | | <constraint firstItem="ZFl-29-gbc" firstAttribute="centerY" secondItem="DWx-WW-QMK" secondAttribute="centerY" id="vH0-Ra-M3e"/> |
| | | <constraint firstItem="Hlr-vD-idp" firstAttribute="leading" secondItem="DWx-WW-QMK" secondAttribute="trailing" constant="5" id="bSA-ha-W1b"/> |
| | | <constraint firstItem="KwF-AF-WE6" firstAttribute="centerY" secondItem="ZFl-29-gbc" secondAttribute="centerY" id="vpB-YO-2zI"/> |
| | | <constraint firstAttribute="trailing" secondItem="hOG-rl-POS" secondAttribute="trailing" constant="17" id="wan-ln-9Vq"/> |
| | | <constraint firstItem="DWx-WW-QMK" firstAttribute="top" secondItem="OzX-LD-ebb" secondAttribute="top" constant="15" id="zj4-oa-CE9"/> |
| | | </constraints> |
| | | </view> |
| | | </subviews> |
| | |
| | | <outlet property="label_name" destination="Hlr-vD-idp" id="VDh-wm-WCH"/> |
| | | <outlet property="view_container" destination="OzX-LD-ebb" id="7ap-FZ-Wsy"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="247.32824427480915" y="77.816901408450704"/> |
| | | <point key="canvasLocation" x="188.54961832061068" y="33.802816901408455"/> |
| | | </tableViewCell> |
| | | </objects> |
| | | <resources> |
| | |
| | | label_hotNum.text = "\(model.heat)" |
| | | label_desc.text = model.content |
| | | img_cover.sd_setImage(with: URL(string: model.coverImg)) |
| | | label_dealTime.text = "截止报名:\(model.registrationClosingTime)" |
| | | if model.registrationClosingTime == nil{ |
| | | label_dealTime.text = "截止报名:无截止时间" |
| | | }else{ |
| | | label_dealTime.text = "截止报名:\(model.registrationClosingTime!)" |
| | | } |
| | | |
| | | label_age.text = model.age + "岁" |
| | | } |
| | | } |
| | |
| | | extension JudgeListVC:UITableViewDelegate{ |
| | | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
| | | let model = viewModel.dataSource.value[indexPath.row] |
| | | guard model.status != .cancel else {return} |
| | | let vc = MatchDetailVC(model: model) |
| | | push(vc: vc) |
| | | if model.status == .ongoing{ |
| | | let vc = MatchDetailVC(model: model) |
| | | push(vc: vc) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | @IBOutlet weak var view_blue2Img: UIImageView! |
| | | @IBOutlet weak var view_blue3: UIView! |
| | | @IBOutlet weak var view_blue3Img: UIImageView! |
| | | |
| | | |
| | | @IBOutlet weak var view_device: UIView! |
| | | @IBOutlet weak var label_deviceTitle: UILabel! |
| | | @IBOutlet weak var label_matchPoint: UILabel! |
| | |
| | | @IBOutlet weak var redStackView: UIStackView! |
| | | @IBOutlet weak var blueStackView: UIStackView! |
| | | @IBOutlet weak var btn_handle: UIButton! |
| | | |
| | | |
| | | private var redTeamItems = [WorldCupPeopleModel]() |
| | | private var blueTeamItems = [WorldCupPeopleModel]() |
| | | private var model:WorldCupJudgeModel! |
| | |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.model = model |
| | | } |
| | | |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | super.viewDidLoad() |
| | | title = model.name |
| | | view.backgroundColor = .white |
| | | } |
| | | } |
| | | |
| | | override func setUI() { |
| | | view_red1.isHidden = true |
| | |
| | | tempArray.append(TempModel(id: blue.id, participantType: blue.participantType, type: "blue").toJSON()!) |
| | | } |
| | | |
| | | CommonAlertView.show(title: "提示", content: "确认开启当前比赛吗?") {[weak self] status in |
| | | CommonAlertView.show(title: "提示", content: "确认开启当前比赛吗?",cancelStr: "关闭") {[weak self] status in |
| | | guard let weakSelf = self else { return } |
| | | if status{ |
| | | Services.startWorldCup(code: devCode, people: tempArray.jq_toJson1(), worldCupId: weakSelf.model.id).subscribe(onNext: {data in |
| | | if let _ = data.data{ |
| | | weakSelf.btn_handle.isEnabled = false |
| | | alert(msg: "比赛已开始") |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+0.5) { |
| | | weakSelf.navigationController?.popViewController() |
| | | } |
| | | alert(msg: "比赛开始") |
| | | weakSelf.redTeamItems.removeAll() |
| | | weakSelf.blueTeamItems.removeAll() |
| | | weakSelf.updateUserView() |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | |
| | | present(scan, animated: true) |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Lx-0R-Sfa"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <color key="backgroundColor" red="0.098039215686274508" green="0.18431372549019609" blue="0.44705882352941173" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <color key="backgroundColor" red="0.098039215686274508" green="0.18431372549019609" blue="0.44705882352941173" alpha="0.90000000000000002" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_ad" translatesAutoresizingMaskIntoConstraints="NO" id="Mp4-s0-svz"> |
| | | <rect key="frame" x="0.0" y="-100" width="453" height="918"/> |
| | |
| | | </connections> |
| | | </button> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="所属赛点:--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ohX-Ys-LLn"> |
| | | <rect key="frame" x="50.000000000000007" y="120.33333333333337" width="84.666666666666686" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/> |
| | | <color key="textColor" red="0.95686274510000002" green="0.97254901959999995" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="所属场地:--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="api-DT-2Ga"> |
| | | <rect key="frame" x="258.33333333333331" y="120.33333333333337" width="84.666666666666686" height="17"/> |
| | | <rect key="frame" x="50.000000000000007" y="47" width="84.666666666666686" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/> |
| | | <color key="textColor" red="0.95686274510000002" green="0.97254901959999995" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="设备信息" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YhX-W2-lV6"> |
| | | <rect key="frame" x="50" y="93.333333333333371" width="57.333333333333343" height="17"/> |
| | | <rect key="frame" x="50" y="20" width="57.333333333333343" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/> |
| | | <color key="textColor" red="0.95686274510000002" green="0.97254901959999995" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="所属场地:--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="api-DT-2Ga"> |
| | | <rect key="frame" x="50.000000000000007" y="74" width="84.666666666666686" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/> |
| | | <color key="textColor" red="0.95686274510000002" green="0.97254901959999995" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </subviews> |
| | | <constraints> |
| | | <constraint firstItem="Irm-Cr-MTn" firstAttribute="leading" secondItem="t22-L5-pNm" secondAttribute="leading" constant="50" id="3rp-0Z-Qwm"/> |
| | | <constraint firstItem="api-DT-2Ga" firstAttribute="trailing" secondItem="Irm-Cr-MTn" secondAttribute="trailing" id="5ZY-iW-zQk"/> |
| | | <constraint firstAttribute="bottom" secondItem="Irm-Cr-MTn" secondAttribute="bottom" constant="18" id="6Id-bE-iUp"/> |
| | | <constraint firstItem="YhX-W2-lV6" firstAttribute="top" secondItem="t22-L5-pNm" secondAttribute="top" constant="20" id="Dh7-6i-5tB"/> |
| | | <constraint firstItem="api-DT-2Ga" firstAttribute="top" secondItem="ohX-Ys-LLn" secondAttribute="bottom" constant="10" id="PAa-ii-7dm"/> |
| | | <constraint firstItem="ohX-Ys-LLn" firstAttribute="leading" secondItem="Irm-Cr-MTn" secondAttribute="leading" id="b1Z-1C-bF9"/> |
| | | <constraint firstItem="api-DT-2Ga" firstAttribute="centerY" secondItem="ohX-Ys-LLn" secondAttribute="centerY" id="hW6-K4-aMF"/> |
| | | <constraint firstItem="ohX-Ys-LLn" firstAttribute="leading" secondItem="YhX-W2-lV6" secondAttribute="leading" id="hdc-Bh-kzQ"/> |
| | | <constraint firstItem="ohX-Ys-LLn" firstAttribute="top" secondItem="YhX-W2-lV6" secondAttribute="bottom" constant="10" id="jmI-FW-Qgm"/> |
| | | <constraint firstItem="Irm-Cr-MTn" firstAttribute="top" secondItem="ohX-Ys-LLn" secondAttribute="bottom" constant="15" id="tnE-mo-ybC"/> |
| | | <constraint firstItem="api-DT-2Ga" firstAttribute="leading" secondItem="YhX-W2-lV6" secondAttribute="leading" id="mdi-J6-um5"/> |
| | | <constraint firstAttribute="trailing" secondItem="Irm-Cr-MTn" secondAttribute="trailing" constant="50" id="yMS-xi-PG3"/> |
| | | </constraints> |
| | | </view> |
| | |
| | | </connections> |
| | | </button> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="红队" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J3j-Sw-JFA"> |
| | | <rect key="frame" x="192.33333333333334" y="89" width="28.666666666666657" height="17"/> |
| | | <rect key="frame" x="182.33333333333334" y="89" width="28.666666666666657" height="17"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="28.666666666666657" id="we1-a5-5EW"/> |
| | | </constraints> |
| | |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RED" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ewM-XU-TUF"> |
| | | <rect key="frame" x="146" y="89" width="36.333333333333343" height="17"/> |
| | | <rect key="frame" x="144.66666666666666" y="89" width="27.666666666666657" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fgq-No-gPy"> |
| | | <rect key="frame" x="231" y="82.666666666666671" width="30" height="30"/> |
| | | <rect key="frame" x="221" y="82.666666666666671" width="30" height="30"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="30" id="Fd3-ah-9BK"/> |
| | | <constraint firstAttribute="width" constant="30" id="HTZ-8V-Hze"/> |
| | |
| | | <constraint firstItem="PHe-Tf-02i" firstAttribute="centerX" secondItem="UgK-2f-Czf" secondAttribute="centerX" id="3Ys-OJ-Zeg"/> |
| | | <constraint firstAttribute="bottomMargin" secondItem="Mp4-s0-svz" secondAttribute="bottom" id="4Wx-ez-kmY"/> |
| | | <constraint firstItem="Mp4-s0-svz" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="4vc-K6-Zgw"/> |
| | | <constraint firstItem="J3j-Sw-JFA" firstAttribute="centerX" secondItem="UgK-2f-Czf" secondAttribute="centerX" id="9BH-JN-IQb"/> |
| | | <constraint firstItem="DWj-Io-Gyo" firstAttribute="centerY" secondItem="PHe-Tf-02i" secondAttribute="centerY" id="9ld-fM-YQ7"/> |
| | | <constraint firstItem="7Lx-0R-Sfa" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="ANk-R7-pWs"/> |
| | | <constraint firstItem="PHe-Tf-02i" firstAttribute="top" secondItem="0Qm-bc-Lz6" secondAttribute="bottom" constant="20" id="CmA-gL-adv"/> |
| | |
| | | <constraint firstItem="Mp4-s0-svz" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="-100" id="jDc-pE-715"/> |
| | | <constraint firstItem="fgq-No-gPy" firstAttribute="leading" secondItem="J3j-Sw-JFA" secondAttribute="trailing" constant="10" id="lGe-Qq-MOP"/> |
| | | <constraint firstItem="IM3-iJ-n3i" firstAttribute="centerX" secondItem="UgK-2f-Czf" secondAttribute="centerX" id="lGl-2M-6nl"/> |
| | | <constraint firstItem="ewM-XU-TUF" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="146" id="m92-2t-84l"/> |
| | | <constraint firstItem="J3j-Sw-JFA" firstAttribute="leading" secondItem="ewM-XU-TUF" secondAttribute="trailing" constant="10" id="n9u-su-mxT"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="fgq-No-gPy" secondAttribute="trailing" constant="132" id="oK6-Sq-J93"/> |
| | | <constraint firstItem="Mp4-s0-svz" firstAttribute="trailing" secondItem="fnl-2z-Ty3" secondAttribute="trailing" constant="60" id="pcf-l6-NAl"/> |
| | | <constraint firstItem="J3j-Sw-JFA" firstAttribute="centerY" secondItem="ewM-XU-TUF" secondAttribute="centerY" id="sN2-la-Oom"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="t22-L5-pNm" secondAttribute="bottom" id="t8q-DK-9CO"/> |
| | |
| | | title = "我的二维码" |
| | | |
| | | |
| | | Services.queryProtocol(.matchStore, progress: false).subscribe(onNext: {[weak self] text in |
| | | Services.queryProtocol(.useStore, progress: false).subscribe(onNext: {[weak self] text in |
| | | self?.label_content.text = (text.data ?? "").jq_filterFromHTML_1() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | var benefitHomeModel:BenefitHomeModel? |
| | | private var models = [StartClouseExploreModel]() |
| | | |
| | | private var items = ["我的二维码","我的预约","社区世界杯","已报名活动","我的运动营","人员管理","我的券包","兑换记录","消费记录","积分明细","我的玩湃币"] |
| | | private var itemsImg = ["me_code","me_yard","me_wordCup","me_activity","me_camp","me_judge","me_coupons","me_withdrawRec","me_consume","me_coin","me_payCoin","me_judge"] |
| | | private var items = ["我的二维码","我的订场","社区世界杯","已报名活动","我的运动营","人员管理","我的券包","兑换记录","消费记录","积分明细","我的玩湃币"] |
| | | private var itemsImg = ["me_code","me_yard","me_wordCup","me_activity","me_camp","me_peoples","me_coupons","me_withdrawRec","me_consume","me_coin","me_payCoin","me_judge"] |
| | | |
| | | override func viewDidDisappear(_ animated: Bool) { |
| | | super.viewDidDisappear(animated) |
| | |
| | | case "我的二维码": |
| | | let vc = MeQRCodeVC() |
| | | push(vc: vc) |
| | | case "我的预约": |
| | | case "我的订场": |
| | | let vc = YardBookingListVC() |
| | | push(vc: vc) |
| | | case "社区世界杯": |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <accessibilityOverrides/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <capability name="Named colors" 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"/> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Jbe-CY-MmI"> |
| | | <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jbe-CY-MmI"> |
| | | <rect key="frame" x="0.0" y="59" width="393" height="759"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="w1y-Zq-96N"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="1140.6666666666667"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="1160.3333333333333"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Yu-z5-de2"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="300"/> |
| | |
| | | </constraints> |
| | | </view> |
| | | <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="16" translatesAutoresizingMaskIntoConstraints="NO" id="W2A-PE-Zq8"> |
| | | <rect key="frame" x="26" y="923.66666666666663" width="341" height="161.99999999999989"/> |
| | | <rect key="frame" x="26" y="943.33333333333348" width="341" height="162"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lz2-Km-ydI" customClass="TapBtn" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="162.66666666666666" height="162"/> |
| | |
| | | <rect key="frame" x="15" y="15" width="45" height="38"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CONTACTS US" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Md-SF-0cM"> |
| | | <rect key="frame" x="13.999999999999993" y="72.000000000000114" width="109.33333333333331" height="22"/> |
| | | <rect key="frame" x="13.999999999999993" y="71.999999999999886" width="109.33333333333331" height="22"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="22" id="HM2-qC-zym"/> |
| | | </constraints> |
| | |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="客服中心" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Y6t-EV-EyM"> |
| | | <rect key="frame" x="15" y="99.000000000000114" width="65.333333333333329" height="22"/> |
| | | <rect key="frame" x="15" y="98.999999999999886" width="65.333333333333329" height="22"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="22" id="duk-64-lzR"/> |
| | | </constraints> |
| | |
| | | <rect key="frame" x="15" y="15" width="48" height="36"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ABOUT US" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qdw-6R-Ebr"> |
| | | <rect key="frame" x="14" y="70.000000000000114" width="79.666666666666671" height="22"/> |
| | | <rect key="frame" x="14" y="69.999999999999886" width="79.666666666666671" height="22"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="22" id="xax-sJ-ZYz"/> |
| | | </constraints> |
| | |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="关于玩湃" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bus-yA-9bf"> |
| | | <rect key="frame" x="15" y="97.000000000000114" width="65.333333333333329" height="22"/> |
| | | <rect key="frame" x="15" y="96.999999999999886" width="65.333333333333329" height="22"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="22" id="Z4Q-9e-vKA"/> |
| | | </constraints> |
| | |
| | | </constraints> |
| | | </stackView> |
| | | <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" pagingEnabled="YES" showsHorizontalScrollIndicator="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="GVG-mQ-5A4"> |
| | | <rect key="frame" x="0.0" y="650" width="393" height="235.66666666666663"/> |
| | | <rect key="frame" x="0.0" y="650" width="393" height="255.33333333333337"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" secondItem="GVG-mQ-5A4" secondAttribute="height" multiplier="1:0.6" id="X5h-hG-CdI"/> |
| | | <constraint firstAttribute="width" secondItem="GVG-mQ-5A4" secondAttribute="height" multiplier="1:0.65" id="X5h-hG-CdI"/> |
| | | </constraints> |
| | | <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="10" minimumInteritemSpacing="10" id="QDn-jj-8xs"> |
| | | <size key="itemSize" width="128" height="128"/> |
| | |
| | | guard let weakSelf = self else { return } |
| | | if status{ |
| | | let m = weakSelf.viewModel.dataSource.value[index.row] |
| | | Services.deleParticipant(id: m.id).subscribe(onNext: { data in |
| | | Services.deleParticipant(id: m.id,isStudent: m.isStudent).subscribe(onNext: { data in |
| | | weakSelf.viewModel.beginRefresh() |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | |
| | | } |
| | | bannerView.setItems(items: items) |
| | | |
| | | let endDateTimeInterval = Date.jq_StringToTimeInterval(detailModel.registrationClosingTime, "yyyy-MM-dd HH:mm") |
| | | if endDateTimeInterval < Date().timeIntervalSince1970{ |
| | | btn_enroll.setTitle("报名已截止", for: .normal) |
| | | btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | if let endDate = detailModel.registrationClosingTime{ |
| | | let endDateTimeInterval = Date.jq_StringToTimeInterval(endDate, "yyyy-MM-dd HH:mm") |
| | | if endDateTimeInterval < Date().timeIntervalSince1970{ |
| | | btn_enroll.setTitle("报名已截止", for: .normal) |
| | | btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | btn_enroll.isEnabled = false |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | label_title.text = detailModel.name |
| | | label_hot.text = "\(detailModel.heat)" |
| | | label_duetime.text = detailModel.registrationClosingTime |
| | | |
| | | if detailModel.registrationClosingTime != nil{ |
| | | label_duetime.text = detailModel.registrationClosingTime |
| | | }else{ |
| | | label_duetime.text = "无截止时间" |
| | | } |
| | | |
| | | |
| | | label_starttime.text = detailModel.startTime |
| | | label_endtime.text = detailModel.endTime |
| | | label_ageScope.text = detailModel.age + "岁" |
| | |
| | | case 2:label_genderCond.text = "女" |
| | | default:label_genderCond.text = "全部" |
| | | } |
| | | label_city.text = "" |
| | | label_city.text = [detailModel.province,detailModel.city].joined(separator: "|") |
| | | label_address.text = detailModel.address |
| | | label_matchPoint.text = detailModel.storeInfos.map({$0.name}).joined(separator: "、") |
| | | |
| | | label_pay_money.text = detailModel.cash == 0 ? "免费":"¥\(detailModel.cash)/人" |
| | | label_pay_coin.text = detailModel.paiCoin == 0 ? "免费":"\(detailModel.paiCoin)币/人" |
| | | label_pay_course.text = detailModel.classHour == 0 ? "免费":"\(detailModel.classHour)课时/人" |
| | | |
| | | } |
| | | |
| | | override func setRx() { |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | StoresInfoView.show(detailModel.storeInfos.first ?? ActivityDetailStoreModel()) {[weak self] status in |
| | | StoresInfoView.show(detailModel.storeInfos.first ?? ActivityDetailStoreModel(),type: .worldCup) {[weak self] status in |
| | | guard let weakSelf = self else { return } |
| | | if status{ |
| | | var result = [Dictionary<String,Int>]() |
| | |
| | | var paiCoin:Int = 0 |
| | | var classHour:Int = 0 |
| | | |
| | | money = weakSelf.detailModel.cash |
| | | paiCoin = weakSelf.detailModel.paiCoin |
| | | classHour = weakSelf.detailModel.classHour |
| | | money = weakSelf.detailModel.cash * Double(weakSelf.students.count) |
| | | paiCoin = weakSelf.detailModel.paiCoin * weakSelf.students.count |
| | | classHour = weakSelf.detailModel.classHour * weakSelf.students.count |
| | | |
| | | if money == 0 && paiCoin == 0 && classHour == 0{ |
| | | weakSelf.payment(payType: .free, result: result) |
| | |
| | | weakSelf.payment(payType: payType, result: result) |
| | | } |
| | | } |
| | | }else{ |
| | | weakSelf.navigationController?.popToRootViewController(animated: true) |
| | | NotificationCenter.default.post(name: ChooseHomeStore_Noti, object: nil) |
| | | } |
| | | } |
| | | } |
| | |
| | | <constraint firstAttribute="height" constant="1" id="2Ww-G7-0ug"/> |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="活动费用" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oPd-tE-l3b"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="比赛费用" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oPd-tE-l3b"> |
| | | <rect key="frame" x="14" y="15" width="365" height="21"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/> |
| | | <nil key="textColor"/> |
| | |
| | | |
| | | self?.label_title.text = model.name |
| | | self?.label_hot.text = "\(model.heat)" |
| | | self?.label_duetime.text = model.registrationClosingTime |
| | | if model.registrationClosingTime == nil{ |
| | | self?.label_duetime.text = "无截止时间" |
| | | }else{ |
| | | self?.label_duetime.text = model.registrationClosingTime |
| | | } |
| | | |
| | | self?.label_starttime.text = model.startTime |
| | | self?.label_endtime.text = model.endTime |
| | | self?.label_ageScope.text = model.age + "岁" |
| | |
| | | case 2:self?.label_genderCond.text = "女" |
| | | default:self?.label_genderCond.text = "全部" |
| | | } |
| | | self?.label_city.text = "" |
| | | self?.label_city.text = [model.province,model.city].joined(separator: "|") |
| | | self?.label_address.text = model.address |
| | | self?.label_matchPoint.text = model.storeInfos.map({$0.name}).joined(separator: "、") |
| | | |
| | |
| | | } |
| | | |
| | | if model.classHour == 0{ |
| | | self?.label_pay_coin.text = "免费" |
| | | self?.label_pay_course.text = "免费" |
| | | }else{ |
| | | self?.label_pay_course.text = "\(model.classHour)课时/人" |
| | | } |
| | |
| | | |
| | | self?.webView.loadHTMLString(model.content.jq_wrapHtml(), baseURL: nil) |
| | | |
| | | let endDateTimeInterval = Date.jq_StringToTimeInterval(model.registrationClosingTime, "yyyy-MM-dd HH:mm") |
| | | if endDateTimeInterval < Date().timeIntervalSince1970{ |
| | | self?.btn_enroll.setTitle("报名已截止", for: .normal) |
| | | self?.btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | |
| | | if let endDate = model.registrationClosingTime{ |
| | | let endDateTimeInterval = Date.jq_StringToTimeInterval(endDate, "yyyy-MM-dd HH:mm") |
| | | if endDateTimeInterval < Date().timeIntervalSince1970{ |
| | | self?.btn_enroll.setTitle("报名已截止", for: .normal) |
| | | self?.btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | self?.btn_enroll.isEnabled = false |
| | | } |
| | | } |
| | | |
| | | |
| | | self?.detailModel = model |
| | | } |
| | | }).disposed(by: disposeBag) |
| | |
| | | <constraint firstAttribute="height" constant="1" id="pmf-vb-0Ww"/> |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="活动费用" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H2m-qM-cUy"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="比赛费用" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H2m-qM-cUy"> |
| | | <rect key="frame" x="14" y="15" width="365" height="21"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/> |
| | | <nil key="textColor"/> |
| | |
| | | self?.bannerView.setItems(items: items) |
| | | self?.label_title.text = model.name |
| | | self?.label_hot.text = "\(model.heat)" |
| | | self?.label_duetime.text = model.registrationClosingTime |
| | | if model.registrationClosingTime == nil{ |
| | | self?.label_duetime.text = "无截止时间" |
| | | }else{ |
| | | self?.label_duetime.text = model.registrationClosingTime |
| | | } |
| | | |
| | | self?.label_starttime.text = model.startTime |
| | | self?.label_endtime.text = model.endTime |
| | | self?.label_ageScope.text = model.age + "岁" |
| | |
| | | self?.label_joinCondition.text = "仅限女生" |
| | | } |
| | | self?.label_introducion.text = model.intro |
| | | self?.label_money.text = "¥\(model.unitPrice.jq_formatFloat)/人" |
| | | self?.label_money_total.text = String(format: "合计:¥%.2f", model.expense) |
| | | |
| | | |
| | | switch model.payType { |
| | | case .aliPay,.wechat: |
| | | self?.label_money.text = "¥\(model.unitPrice.jq_formatFloat)/人" |
| | | self?.label_money_total.text = String(format: "合计:¥%.2f", model.expense) |
| | | case .coin: |
| | | self?.label_money.text = "\(model.unitPrice.jq_formatFloat) 玩湃币/人" |
| | | self?.label_money_total.text = String(format: "合计:%.2f 玩湃币", model.expense) |
| | | case .courseNum: |
| | | self?.label_money.text = "\(model.unitPrice.jq_formatFloat) 课时/人" |
| | | self?.label_money_total.text = String(format: "合计:%.2f 课时", model.expense) |
| | | case .free: |
| | | self?.label_money.text = "免费" |
| | | self?.label_money_total.text = "免费" |
| | | default: |
| | | self?.label_money.text = "未知" |
| | | self?.label_money_total.text = "未知" |
| | | } |
| | | |
| | | |
| | | self?.label_address.text = model.address |
| | | self?.label_city.text = "" |
| | | self?.label_city.text = [model.province,model.city].joined(separator: "|") |
| | | self?.label_matchStore.text = model.storeInfos.map({$0.name}).joined(separator: "、") |
| | | self?.btn_moreMatchStore.isHidden = model.storeInfos.count == 1 |
| | | self?.tableView.reloadData() |
| | |
| | | self?.btn_cancel.isHidden = model.revocable == 0 |
| | | self?.cons__cancelBtnHei.constant = model.revocable == 0 ? 0:40 |
| | | |
| | | let endDateTimeInterval = Date.jq_StringToTimeInterval(model.registrationClosingTime, "yyyy-MM-dd HH:mm") |
| | | if endDateTimeInterval < Date().timeIntervalSince1970{ |
| | | self?.btn_enroll.setTitle("报名已截止", for: .normal) |
| | | self?.btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | |
| | | switch model.status { |
| | | case .cancel: |
| | | self?.btn_enroll.setTitle("已取消", for: .normal) |
| | | self?.btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | self?.btn_enroll.isEnabled = false |
| | | case .over: |
| | | self?.btn_enroll.setTitle("已结束", for: .normal) |
| | | self?.btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | self?.btn_enroll.isEnabled = false |
| | | default:break |
| | | } |
| | | |
| | | if let endDate = model.registrationClosingTime{ |
| | | let endDateTimeInterval = Date.jq_StringToTimeInterval(endDate, "yyyy-MM-dd HH:mm") |
| | | |
| | | if Date.jq_CalByDays(startDate: Date(), endDate: Date(timeIntervalSince1970: endDateTimeInterval)) <= 1{ |
| | | self?.btn_enroll.setTitle("取消", for: .normal) |
| | | self?.btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | self?.btn_enroll.isEnabled = false |
| | | } |
| | | |
| | | |
| | | if endDateTimeInterval < Date().timeIntervalSince1970{ |
| | | self?.btn_enroll.setTitle("报名已截止", for: .normal) |
| | | self?.btn_enroll.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | self?.btn_enroll.isEnabled = false |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | let text = detailModel.storeInfos.map({$0.name}).joined(separator: "、") |
| | | AgreentView.show(type: .matchPoint, content: text) |
| | | } |
| | | |
| | | @IBAction func cancelAction(_ sender: UIButton) { |
| | | guard let m = detailModel else { return } |
| | | CommonAlertView.show(title: "提示", content: "是否确认取消?") {[weak self] state in |
| | | guard let weakSelf = self else { return } |
| | | if state{ |
| | | Services.cancelMyWorldCup(id: m.id).subscribe(onNext: { data in |
| | | sender.setTitle("已取消", for: .normal) |
| | | sender.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | sender.isEnabled = false |
| | | NotificationCenter.default.post(name: WorldCupRefresh_Noti, object: nil) |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | extension WorldCupContentDetailVC:UITableViewDelegate{ |
| | |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="取消"/> |
| | | <connections> |
| | | <action selector="cancelAction:" destination="-1" eventType="touchUpInside" id="zIz-pF-pa2"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | |
| | | import RxSwift |
| | | import RxRelay |
| | | |
| | | let WorldCupRefresh_Noti = Notification.Name.init("WorldCupRefresh_Noti") |
| | | |
| | | class WorldCupContentViewModel:RefreshModel<WorldCupListModel>{ |
| | | |
| | | var studentID = BehaviorRelay<Int>(value:0) |
| | |
| | | self?.viewModel.beginRefresh() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | NotificationCenter.default.rx.notification(WorldCupRefresh_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in |
| | | self?.viewModel.beginRefresh() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | } |
| | | |
| | |
| | | import RxRelay |
| | | |
| | | class RechargeRecordViewModel:RefreshModel<BillingModel>{ |
| | | var coin = BehaviorRelay<Int>(value: 0) |
| | | var type = BehaviorRelay<Int?>(value: nil) |
| | | var subType = BehaviorRelay<RechargeRecordVC.RechargeRecordType>(value: .coin) |
| | | var yearMonth = BehaviorRelay<String>(value: "") |
| | | override func api() -> (Observable<BaseResponse<[BillingModel]>>)? { |
| | | return Services.voucherDetail(recordType: type.value, yearMonth: yearMonth.value,page: page,pageSize: pageSize, subType: subType.value) |
| | | } |
| | | var coin = BehaviorRelay<Int>(value: 0) |
| | | var type = BehaviorRelay<Int?>(value: nil) |
| | | var subType = BehaviorRelay<RechargeRecordVC.RechargeRecordType>(value: .coin) |
| | | var yearMonth = BehaviorRelay<String>(value: "") |
| | | override func api() -> (Observable<BaseResponse<[BillingModel]>>)? { |
| | | return Services.voucherDetail(recordType: type.value, yearMonth: yearMonth.value,page: page,pageSize: pageSize, subType: subType.value) |
| | | } |
| | | } |
| | | |
| | | class RechargeRecordVC: BaseVC { |
| | | |
| | | enum RechargeRecordType { |
| | | case coin //玩湃币 |
| | | case integral //积分 |
| | | } |
| | | |
| | | @IBOutlet weak var view_topBg: UIView! |
| | | @IBOutlet weak var view_cion: JQ_RollNumberLabel! |
| | | @IBOutlet weak var btn_rechange: UIButton! |
| | | @IBOutlet weak var view_container: UIView! |
| | | @IBOutlet weak var tableView: BaseTableView! |
| | | @IBOutlet weak var btn_filter: QMUIButton! |
| | | @IBOutlet weak var btn_date: UIButton! |
| | | |
| | | |
| | | private let viewModel = RechargeRecordViewModel() |
| | | |
| | | required init(coin:Int,subtype:RechargeRecordType) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.viewModel.coin.accept(coin) |
| | | self.viewModel.subType.accept(subtype) |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | view_cion.font = UIFont.init(name: "Impact", size: 36)! |
| | | view_cion.textColor = .white |
| | | btn_rechange.isHidden = viewModel.subType.value == .integral |
| | | title = viewModel.subType.value == .coin ? "充值明细":"积分明细" |
| | | viewModel.beginRefresh() |
| | | } |
| | | |
| | | override func viewDidAppear(_ animated: Bool) { |
| | | super.viewDidAppear(animated) |
| | | self.view_cion.valueNumber = NSNumber(value: self.viewModel.coin.value) |
| | | } |
| | | |
| | | |
| | | override func setUI() { |
| | | btn_filter.imagePosition = .right |
| | | btn_filter.spacingBetweenImageAndTitle = 3 |
| | | view_container.jq_addShadows(shadowColor: UIColor(hexStr: "#D5D5D5").withAlphaComponent(0.5), corner: 10, radius: 4, offset: CGSize(width: 0, height: 2), opacity: 1) |
| | | |
| | | tableView.delegate = self |
| | | tableView.dataSource = self |
| | | tableView.separatorStyle = .none |
| | | tableView.register(UINib(nibName: "BillInfoTCell", bundle: nil), forCellReuseIdentifier:"_BillInfoTCell") |
| | | // tableView.jq_setEmptyView() |
| | | |
| | | viewModel.yearMonth.accept(Date().jq_format("yyyy-MM")) |
| | | btn_date.setTitle("\(Date().jq_format("yyyy年MM月"))>", for: .normal) |
| | | viewModel.configure(tableView) |
| | | } |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(UpdateWelfare_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in |
| | | guard let weakSelf = self else { return } |
| | | Services.benefitHome().subscribe(onNext: {[weak self] data in |
| | | if let model = data.data{ |
| | | self?.viewModel.coin.accept(model.wpCoin) |
| | | self?.viewModel.beginRefresh() |
| | | enum RechargeRecordType { |
| | | case coin //玩湃币 |
| | | case integral //积分 |
| | | } |
| | | }) { error in |
| | | |
| | | }.disposed(by: weakSelf.disposeBag) |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | @IBOutlet weak var view_topBg: UIView! |
| | | @IBOutlet weak var view_cion: JQ_RollNumberLabel! |
| | | @IBOutlet weak var btn_rechange: UIButton! |
| | | @IBOutlet weak var view_container: UIView! |
| | | @IBOutlet weak var tableView: BaseTableView! |
| | | @IBOutlet weak var btn_filter: QMUIButton! |
| | | @IBOutlet weak var btn_date: UIButton! |
| | | |
| | | override func viewDidLayoutSubviews() { |
| | | super.viewDidLayoutSubviews() |
| | | let colors = [UIColor(hexStr: "#FD8C02").cgColor, |
| | | UIColor(hexStr: "#FD7202").cgColor,] |
| | | view_topBg.jq_gradientColor(colorArr: colors,bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW, height: JQ_ScreenW * 0.5923)) |
| | | btn_rechange.jq_gradientNibColor(colorArr: colors, cornerRadius: 20) |
| | | } |
| | | |
| | | @IBAction func datetimeAction(_ sender: UIButton) { |
| | | CommonDatePickerView.show(before: 3, after: 0, type: .YM) {[weak self] year, month, day,_,_ in |
| | | self?.btn_date.setTitle(String(format: "%ld年%02ld月>", year!,month!), for: .normal) |
| | | self?.viewModel.yearMonth.accept(String(format: "%ld-%02ld", year!,month!)) |
| | | self?.viewModel.beginRefresh() |
| | | } |
| | | } |
| | | private let viewModel = RechargeRecordViewModel() |
| | | |
| | | @IBAction func filterAction(_ sender: QMUIButton) { |
| | | JQ_MenuView().show(self, tapView: sender, items: ["全部记录","充值","扣除"], tableHei: 150) {[weak self] index, str in |
| | | self?.btn_filter.setTitle(str, for: .normal) |
| | | if index == 0{ |
| | | self?.viewModel.type.accept(nil) |
| | | }else{ |
| | | self?.viewModel.type.accept(index) |
| | | } |
| | | self?.viewModel.beginRefresh() |
| | | } |
| | | } |
| | | required init(coin:Int,subtype:RechargeRecordType) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.viewModel.coin.accept(coin) |
| | | self.viewModel.subType.accept(subtype) |
| | | } |
| | | |
| | | @IBAction func rechargeAction(_ sender: UIButton) { |
| | | let vc = RechargeCenterVC() |
| | | push(vc: vc) |
| | | } |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | view_cion.font = UIFont.init(name: "Impact", size: 36)! |
| | | view_cion.textColor = .white |
| | | btn_rechange.isHidden = viewModel.subType.value == .integral |
| | | title = viewModel.subType.value == .coin ? "充值明细":"积分明细" |
| | | viewModel.beginRefresh() |
| | | } |
| | | |
| | | override func viewDidAppear(_ animated: Bool) { |
| | | super.viewDidAppear(animated) |
| | | self.view_cion.valueNumber = NSNumber(value: self.viewModel.coin.value) |
| | | } |
| | | |
| | | |
| | | override func setUI() { |
| | | btn_filter.imagePosition = .right |
| | | btn_filter.spacingBetweenImageAndTitle = 3 |
| | | view_container.jq_addShadows(shadowColor: UIColor(hexStr: "#D5D5D5").withAlphaComponent(0.5), corner: 10, radius: 4, offset: CGSize(width: 0, height: 2), opacity: 1) |
| | | |
| | | tableView.delegate = self |
| | | tableView.dataSource = self |
| | | tableView.separatorStyle = .none |
| | | tableView.register(UINib(nibName: "BillInfoTCell", bundle: nil), forCellReuseIdentifier:"_BillInfoTCell") |
| | | // tableView.jq_setEmptyView() |
| | | |
| | | viewModel.yearMonth.accept(Date().jq_format("yyyy-MM")) |
| | | btn_date.setTitle("\(Date().jq_format("yyyy年MM月"))>", for: .normal) |
| | | if viewModel.subType.value == .coin{ |
| | | viewModel.configure(tableView,needMore: true) |
| | | }else{ |
| | | viewModel.configure(tableView,needMore: false) |
| | | } |
| | | |
| | | } |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(UpdateWelfare_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in |
| | | guard let weakSelf = self else { return } |
| | | Services.benefitHome().subscribe(onNext: {[weak self] data in |
| | | if let model = data.data{ |
| | | self?.viewModel.coin.accept(model.wpCoin) |
| | | self?.viewModel.beginRefresh() |
| | | } |
| | | }) { error in |
| | | |
| | | }.disposed(by: weakSelf.disposeBag) |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | override func viewDidLayoutSubviews() { |
| | | super.viewDidLayoutSubviews() |
| | | let colors = [UIColor(hexStr: "#FD8C02").cgColor, |
| | | UIColor(hexStr: "#FD7202").cgColor,] |
| | | view_topBg.jq_gradientColor(colorArr: colors,bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW, height: JQ_ScreenW * 0.5923)) |
| | | btn_rechange.jq_gradientNibColor(colorArr: colors, cornerRadius: 20) |
| | | } |
| | | |
| | | @IBAction func datetimeAction(_ sender: UIButton) { |
| | | CommonDatePickerView.show(before: 3, after: 0, type: .YM) {[weak self] year, month, day,_,_ in |
| | | self?.btn_date.setTitle(String(format: "%ld年%02ld月>", year!,month!), for: .normal) |
| | | self?.viewModel.yearMonth.accept(String(format: "%ld-%02ld", year!,month!)) |
| | | self?.viewModel.beginRefresh() |
| | | } |
| | | } |
| | | |
| | | @IBAction func filterAction(_ sender: QMUIButton) { |
| | | JQ_MenuView().show(self, tapView: sender, items: ["全部记录","充值","扣除"], tableHei: 150) {[weak self] index, str in |
| | | self?.btn_filter.setTitle(str, for: .normal) |
| | | if index == 0{ |
| | | self?.viewModel.type.accept(nil) |
| | | }else{ |
| | | self?.viewModel.type.accept(index) |
| | | } |
| | | self?.viewModel.beginRefresh() |
| | | } |
| | | } |
| | | |
| | | @IBAction func rechargeAction(_ sender: UIButton) { |
| | | let vc = RechargeCenterVC() |
| | | push(vc: vc) |
| | | } |
| | | } |
| | | |
| | | extension RechargeRecordVC:UITableViewDelegate{ |
| | |
| | | } |
| | | |
| | | extension RechargeRecordVC:UITableViewDataSource{ |
| | | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| | | let model = viewModel.dataSource.value[indexPath.row] |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_BillInfoTCell") as! BillInfoTCell |
| | | cell.billingModel = model |
| | | return cell |
| | | } |
| | | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| | | let model = viewModel.dataSource.value[indexPath.row] |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_BillInfoTCell") as! BillInfoTCell |
| | | cell.billingModel = model |
| | | return cell |
| | | } |
| | | |
| | | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| | | return viewModel.dataSource.value.count |
| | | } |
| | | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| | | return viewModel.dataSource.value.count |
| | | } |
| | | } |
| | |
| | | self.btn.imageView?.contentMode = .scaleAspectFit |
| | | self.btn.titleLabel?.font = UIFont.systemFont(ofSize: 15, weight: .medium) |
| | | self.webView.loadHTMLString(data.content.jq_wrapHtml(), baseURL: nil) |
| | | |
| | | self.btn.isHidden = data.turnId == 0 |
| | | self.model = data |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | view.backgroundColor = .white |
| | | |
| | | } |
| | | |
| | |
| | | webView = WKWebView(frame: .zero) |
| | | view.addSubview(webView) |
| | | webView.snp.makeConstraints { make in |
| | | make.edges.equalToSuperview() |
| | | make.edges.equalToSuperview().inset(UIEdgeInsets(top: 0, left: 0, bottom: 75, right: 0)) |
| | | } |
| | | |
| | | btn = UIButton(type: .custom) |
| | | btn.backgroundColor = Def_ThemeColor |
| | | btn.addTarget(self, action: #selector(jumpAction), for: .touchUpInside) |
| | | btn.setTitle("查看详情", for: .normal) |
| | | btn.setTitleColor(.white, for: .normal) |
| | | btn.cornerRadius = 20 |
| | | view.addSubview(btn) |