New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "bg_worldCup@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "bg_worldCup@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
| | |
| | | /// 需要透明Nav的VC |
| | | private var lucencyVCs = [RechargeRecordVC.self,RechargeCenterVC.self] |
| | | |
| | | /// 世界杯风格 |
| | | private var worldCupVCs = [SearchVC.self,WorldCupVC.self,WorldCupHeaderVC.self,WorldCupMenuVC.self,WorldCupContentVC.self,WorldCupRecordVC.self,WorldCupRankVC.self] |
| | | |
| | | private let img = UIImage.jq_gradient([UIColor(hexStr: "#FD8C02"),UIColor(hexStr: "#FD7202")], size: CGSize(width: JQ_ScreenW, height: JQ_NavBarHeight), radius: 0, locations: [0,1], direction: .vertical) |
| | | |
| | | open override func viewDidLoad() { |
| | |
| | | } |
| | | |
| | | open func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { |
| | | |
| | | if worldCupVCs.contains(where: {$0 == viewController.classForCoder}){ |
| | | navigationBar.standardAppearance.backgroundImage = UIImage(named: "bg_worldCup") |
| | | navigationBar.scrollEdgeAppearance?.backgroundImage = UIImage(named: "bg_worldCup") |
| | | return |
| | | } |
| | | |
| | | let status = lucencyVCs.contains(where: {$0 == viewController.classForCoder}) |
| | | if (navigationController.viewControllers.count == 1 || status) && !(viewController is WelfareVC){ |
| | | if #available(iOS 15.0, *) { |
| | |
| | | |
| | | let attributed = AttributedStringbuilder.build() |
| | | |
| | | if type != .other && type != .matchStore && type != .useStore{ |
| | | if type != .other && type != .matchStore && type != .useStore && type != .matchPoint{ |
| | | Services.queryProtocol(type,progress: false).subscribe(onNext: { result in |
| | | if let text = result.data?.jq_wrapHtml(){ |
| | | attributed.add(string: text, withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "727272"), lineSpace: 4) |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22154" 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="22129"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | | <objects> |
| | |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.90000000000000002" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="trailing" secondItem="6HX-Cl-1DV" secondAttribute="trailing" constant="44" id="97i-gB-Zk8"/> |
| | | <constraint firstItem="Uua-ww-qMC" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="Hsf-NB-MIA"/> |
| | |
| | | } |
| | | |
| | | if page == "社区世界杯"{ |
| | | if type == "详情"{ |
| | | JQ_currentViewController().jq_push(vc: WorldCupContentApplyVC(id: id!)) |
| | | } |
| | | if type == "主页" || type == "列表"{ |
| | | JQ_currentViewController().jq_push(vc: WorldCupListVC()) |
| | | } |
| | | } |
| | | |
| | | case "开始课程": |
| | | if page == "主页"{ |
| | |
| | | ///智慧球场 |
| | | case wisdomCourt = 8 |
| | | |
| | | case worldcupDetail = 9 |
| | | |
| | | case nothing = -999 |
| | | |
| | | var defaultImg:UIImage{ |
| | |
| | | case .wisdomCourt: |
| | | return UIImage(named: "b_7")! |
| | | default: |
| | | return UIImage() |
| | | return UIImage(named: "b_1")! |
| | | } |
| | | } |
| | | } |
| | |
| | | #if DEBUG |
| | | //let All_Url = "http://192.168.110.27:56666" //罗易胜 |
| | | //let All_Url = "http://192.168.110.85:56666" //正式地址 |
| | | let All_Url = "http://192.168.110.80:56666" //正式地址 |
| | | //let All_Url = "http://192.168.110.80:56666" //正式地址 |
| | | let All_Url = "http://221.182.45.100:56666" |
| | | let Game_Url = "https://try.daowepark.com" |
| | | //let Socket_Url = "192.168.110.22" |
| | | #else |
| | |
| | | guard tf_phone.text!.jq_isPhone else {alertError(msg: "请输入正确的手机号");return} |
| | | } |
| | | |
| | | if !tf_idCard.isEmpty || activityDetailPartModel != nil{ |
| | | // 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! |
| | |
| | | <?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"/> |
| | |
| | | </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="14.000000000000004" y="16.666666666666629" width="57.333333333333343" height="17"/> |
| | | <rect key="frame" x="30.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="leading" secondItem="eXg-lM-iFa" secondAttribute="leading" constant="14" id="IKT-yR-MXN"/> |
| | | <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="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 sort:Int = 0 |
| | | var backgroundImage:String = "" |
| | | var cellHeight:Double = 270 |
| | | var id = 0 |
| | | } |
| | | |
| | | class HomeStoreTopBannerModel:HandyJSON{ |
| | |
| | | struct WorldCupDetailModel:HandyJSON{ |
| | | var address: String = "" |
| | | var age: String = "" |
| | | var cash: Int = 0 |
| | | var cash: Double = 0 |
| | | var classHour: Int = 0 |
| | | var content: String = "" |
| | | var endTime: String = "" |
| | |
| | | |
| | | } |
| | | |
| | | struct WorldCupDetailBannerModel:HandyJSON{ |
| | | var name = "" |
| | | var url = "" |
| | | } |
| | | |
| | | struct WorldCupJudgeModel:HandyJSON{ |
| | | var activeTime: String = "" |
| | | var id: Int = 0 |
| | |
| | | guard SDImageCache.shared.diskImageDataExists(withKey: m.backgroundImage) else { |
| | | SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in |
| | | } completed: { image, data, error, status in |
| | | |
| | | guard m.backgroundImage.isEmpty else { |
| | | m.cellHeight = 100 |
| | | group.leave() |
| | | return |
| | | } |
| | | |
| | | if let img = image{ |
| | | m.cellHeight = w / (img.size.width / img.size.height) |
| | | }else{ |
| | |
| | | } completed: { image, data, error, status in |
| | | if let img = image{ |
| | | m.cellHeight = w / (img.size.width / img.size.height) |
| | | }else{ |
| | | m.cellHeight = 100 |
| | | } |
| | | group.leave() |
| | | } |
| | |
| | | case .worldcup: |
| | | let vc = WorldCupIntroVC() |
| | | push(vc: vc) |
| | | case .worldcupDetail: |
| | | let vc = WorldCupContentApplyVC(id: m.id) |
| | | push(vc: vc) |
| | | case .course: |
| | | let vc = CourseListVC(selectStore: simpleModel) |
| | | push(vc: vc) |
| | |
| | | <?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="22505" 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="22504"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <constraint firstItem="pid-yy-hW2" firstAttribute="leading" secondItem="WGQ-UH-Uvg" secondAttribute="leading" id="y7p-rN-LaS"/> |
| | | </constraints> |
| | | </view> |
| | | <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="ysy-N3-BCh" customClass="BaseCollectionView" customModule="WanPai" customModuleProvider="target"> |
| | | <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="ysy-N3-BCh" customClass="BaseCollectionView" customModule="WanPai" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="290.33333333333331" width="393" height="527.66666666666674"/> |
| | | <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Hvc-jj-SAe"> |
| | | <size key="itemSize" width="128" height="128"/> |
| | |
| | | |
| | | override func api() -> (Observable<BaseResponse<[WorldCupListModel]>>)? { |
| | | let deserModel = HomeStoreModel.deserialize(from: UserDefaults.standard.object(forKey: "CurrentStore") as? String) |
| | | return Services.worldCupList(id: deserModel!.storeId, content: search.value, gender: gender.value.id, sort: sort.value, storeId: storeId.value?.id) |
| | | |
| | | var genderID:Int? |
| | | if gender.value.id == 0{ |
| | | genderID = nil |
| | | }else{ |
| | | genderID = gender.value.id |
| | | } |
| | | |
| | | return Services.worldCupList(id: deserModel!.storeId, content: search.value, gender:genderID, sort: sort.value, storeId: storeId.value?.id) |
| | | } |
| | | } |
| | | |
| | |
| | | <?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"/> |
| | |
| | | <subviews> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z7Q-0r-hlk" customClass="QMUIButton"> |
| | | <rect key="frame" x="0.0" y="0.0" width="79" height="52"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="ycg-Nq-H9l"/> |
| | | </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"> |
| | |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8O9-Hj-qgP" customClass="QMUIButton"> |
| | | <rect key="frame" x="113" y="0.0" width="79" height="52"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="ERe-vA-51w"/> |
| | | </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"> |
| | |
| | | } |
| | | |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | | // clickClouse!(selectStudents) |
| | | guard selectStudents != nil else { |
| | | alert(msg: "请选择" );return |
| | | } |
| | | clickClouse!(selectStudents!) |
| | | closeAction() |
| | | } |
| | | } |
| | |
| | | |
| | | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_StudentInfo_2_TCell") as! StudentInfo_2_TCell |
| | | cell.indexPath = indexPath |
| | | cell.activityDetailPartModel = viewModel.dataSource.value[indexPath.row] |
| | | cell.img_radio.isHidden = false |
| | | cell.btn_delete.isHidden = true |
| | | cell.btn_edit.isHidden = true |
| | | |
| | | cell.img_radio.image = UIImage(named: selectStudents?.id == viewModel.dataSource.value[indexPath.row].id ? "btn_select" : "btn_select_u") |
| | | return cell |
| | | } |
| | | } |
| | |
| | | label_state.text = model.status.rawTitle |
| | | label_time.text = "活动时间:\(model.activeTime)" |
| | | label_times.text = "已比赛场次数:\(model.matchNumber)" |
| | | btn_begin.isHidden = model.status == .cancel || model.status == .ongoing |
| | | btn_begin.isHidden = model.status != .ongoing |
| | | } |
| | | |
| | | } |
| | |
| | | private var userNameLabel:UILabel! |
| | | private var numerLabel:UILabel! |
| | | private var radioLabel:UILabel! |
| | | var indexPath:IndexPath! |
| | | |
| | | var model:WorldCupMatchRankModel?{ |
| | | didSet{ |
| | | if let m = model{ |
| | | userNameLabel.text = m.name |
| | | userImg.sd_setImage(with: URL(string: m.avatar)) |
| | | numerLabel.text = "\(m.totalSession)" |
| | | radioLabel.text = "\(m.winRate)%" |
| | | |
| | | rankImg.image = UIImage(named: "rank_\(indexPath.row + 1)") |
| | | switch indexPath.row{ |
| | | case 0...2: |
| | | rankImg.isHidden = false |
| | | rankLabel.text = "" |
| | | default: |
| | | rankImg.isHidden = true |
| | | rankLabel.text = "\(indexPath.row + 1)" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { |
| | | super.init(style: .default, reuseIdentifier: reuseIdentifier) |
| | |
| | | |
| | | selectionStyle = .none |
| | | |
| | | rankImg = UIImageView(image: UIImage(named: "rank_1")) |
| | | rankImg = UIImageView() |
| | | contentView.addSubview(rankImg) |
| | | rankImg.snp.makeConstraints { make in |
| | | make.left.equalTo(15) |
| | |
| | | } |
| | | |
| | | userNameLabel = UILabel() |
| | | userNameLabel.text = "wang" |
| | | userNameLabel.text = "" |
| | | userNameLabel.font = UIFont.systemFont(ofSize: 14, weight: .medium) |
| | | userNameLabel.textColor = .black |
| | | contentView.addSubview(userNameLabel) |
| | |
| | | override func api() -> (Observable<BaseResponse<[WorldCupJudgeModel]>>)? { |
| | | return Services.worldCupJudgeList(content: content.value, storeId: storeId.value?.id) |
| | | } |
| | | |
| | | } |
| | | |
| | | class JudgeListVC: BaseVC { |
| | |
| | | class MatchDetailVC: BaseVC { |
| | | |
| | | @IBOutlet weak var view_red1: UIView! |
| | | @IBOutlet weak var view_red1Img: UIImageView! |
| | | @IBOutlet weak var view_red2: UIView! |
| | | @IBOutlet weak var view_red2Img: UIImageView! |
| | | @IBOutlet weak var view_red3: UIView! |
| | | @IBOutlet weak var view_red3Img: UIImageView! |
| | | |
| | | @IBOutlet weak var view_blue1: UIView! |
| | | @IBOutlet weak var view_blue1Img: UIImageView! |
| | | @IBOutlet weak var view_blue2: UIView! |
| | | @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! |
| | |
| | | |
| | | @IBAction func deleRedUserAction(_ sender: UIButton) { |
| | | let index = sender.tag - 10 |
| | | |
| | | if index > redTeamItems.count{ |
| | | redTeamItems.removeLast() |
| | | }else{ |
| | | redTeamItems.remove(at: index) |
| | | redStackView.arrangedSubviews[index].isHidden = true |
| | | } |
| | | if index == 0{ |
| | | view_red1.isHidden = true |
| | | } |
| | | if index == 1{ |
| | | view_red2.isHidden = true |
| | | } |
| | | if index == 2{ |
| | | view_red3.isHidden = true |
| | | } |
| | | |
| | | } |
| | | |
| | | @IBAction func deleBlueUserAction(_ sender: UIButton) { |
| | | let index = sender.tag - 10 |
| | | let index = sender.tag - 20 |
| | | if index > blueTeamItems.count{ |
| | | blueTeamItems.removeLast() |
| | | }else{ |
| | | blueTeamItems.remove(at: index) |
| | | blueStackView.arrangedSubviews[index].isHidden = true |
| | | } |
| | | if index == 0{ |
| | | view_blue1.isHidden = true |
| | | } |
| | | if index == 1{ |
| | | view_blue2.isHidden = true |
| | | } |
| | | if index == 2{ |
| | | view_blue3.isHidden = true |
| | | } |
| | | } |
| | | |
| | | private func updateUserView(){ |
| | | for item in redTeamItems { |
| | | for subView in redStackView.arrangedSubviews{ |
| | | if subView.isHidden{ |
| | | if let img = subView.subviews.first as? UIImageView{ |
| | | img.sd_setImage(with: URL(string: item.avatar)) |
| | | subView.isHidden = false |
| | | break |
| | | |
| | | view_red1.isHidden = true |
| | | view_red2.isHidden = true |
| | | view_red3.isHidden = true |
| | | view_blue1.isHidden = true |
| | | view_blue2.isHidden = true |
| | | view_blue3.isHidden = true |
| | | |
| | | for (index,item) in redTeamItems.enumerated() { |
| | | if index == 0{ |
| | | view_red1.isHidden = false |
| | | view_red1Img.sd_setImage(with: URL(string: item.avatar)) |
| | | } |
| | | if index == 1{ |
| | | view_red2.isHidden = false |
| | | view_red2Img.sd_setImage(with: URL(string: item.avatar)) |
| | | } |
| | | |
| | | if index == 2{ |
| | | view_red3.isHidden = false |
| | | view_red3Img.sd_setImage(with: URL(string: item.avatar)) |
| | | } |
| | | } |
| | | |
| | | for item in blueTeamItems { |
| | | for subView in blueStackView.arrangedSubviews{ |
| | | if subView.isHidden{ |
| | | if let img = subView.subviews.first as? UIImageView{ |
| | | img.sd_setImage(with: URL(string: item.avatar)) |
| | | subView.isHidden = false |
| | | break |
| | | for (index,item) in blueTeamItems.enumerated() { |
| | | if index == 0{ |
| | | view_blue1.isHidden = false |
| | | view_blue1Img.sd_setImage(with: URL(string: item.avatar)) |
| | | } |
| | | if index == 1{ |
| | | view_blue2.isHidden = false |
| | | view_blue2Img.sd_setImage(with: URL(string: item.avatar)) |
| | | } |
| | | |
| | | if index == 2{ |
| | | view_blue3.isHidden = false |
| | | view_blue3Img.sd_setImage(with: URL(string: item.avatar)) |
| | | } |
| | | } |
| | | } |
| | |
| | | @IBAction func handleAction(_ sender: UIButton) { |
| | | |
| | | if sender.isSelected{ |
| | | #if !DEBUG |
| | | guard redTeamItems.count == 3 else{alert(msg: "红队人数不足");return} |
| | | guard blueTeamItems.count == 3 else{alert(msg: "蓝队人数不足");return} |
| | | #endif |
| | | guard let devCode = deviceQRCode else{alert(msg: "请扫描设备二维码");return} |
| | | |
| | | struct TempModel:HandyJSON{ |
| | |
| | | <?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="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <outlet property="redStackView" destination="IM3-iJ-n3i" id="rMz-jS-Vq6"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | <outlet property="view_blue1" destination="NC1-mI-zKx" id="tlf-qa-Zta"/> |
| | | <outlet property="view_blue1Img" destination="kwN-sM-5Jp" id="963-M8-A7H"/> |
| | | <outlet property="view_blue2" destination="MAY-fE-XVW" id="zXt-hK-2nw"/> |
| | | <outlet property="view_blue2Img" destination="4Ro-YL-VwE" id="I9u-ba-DRO"/> |
| | | <outlet property="view_blue3" destination="Pv2-U4-eh9" id="8Aa-BL-tOr"/> |
| | | <outlet property="view_blue3Img" destination="bcy-TN-a7B" id="uG4-ip-AIs"/> |
| | | <outlet property="view_device" destination="t22-L5-pNm" id="pM5-Hn-UwJ"/> |
| | | <outlet property="view_red1" destination="WaE-Ya-Qah" id="PZx-EF-S91"/> |
| | | <outlet property="view_red1Img" destination="WBK-jh-hgX" id="LMQ-F9-sL9"/> |
| | | <outlet property="view_red2" destination="DL1-JD-042" id="u4s-RH-wK5"/> |
| | | <outlet property="view_red2Img" destination="pDI-vT-Fpd" id="Pf2-kf-y1O"/> |
| | | <outlet property="view_red3" destination="yx0-w9-Zk2" id="PNW-Kh-vZM"/> |
| | | <outlet property="view_red3Img" destination="Duc-CA-hkw" id="6Zs-qv-zxe"/> |
| | | </connections> |
| | | </placeholder> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | |
| | | self?.items.append("裁判入口") |
| | | self?.func_collectionView.reloadData() |
| | | } |
| | | |
| | | #if DEBUG |
| | | self?.items.append("裁判入口") |
| | | self?.func_collectionView.reloadData() |
| | | #endif |
| | | } |
| | | }) { error in |
| | | |
| | |
| | | } |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .darkContent |
| | | return .lightContent |
| | | } |
| | | } |
| | | |
| | |
| | | return CGSize(width: JQ_ScreenW, height: JQ_ScreenW * 0.6541) |
| | | } |
| | | } |
| | | |
| | |
| | | @IBOutlet weak var btn_agreement: UIButton! |
| | | @IBOutlet weak var cons_tableHei: NSLayoutConstraint! |
| | | @IBOutlet weak var btn_addStudent: QMUIButton! |
| | | @IBOutlet weak var btn_enroll: UIButton! |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | bannerView.setItems(items: items) |
| | | |
| | | btn_moreStore.isHidden = detailModel.storeInfos.count > 1 |
| | | 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) |
| | | } |
| | | |
| | | |
| | | btn_moreStore.isHidden = detailModel.storeInfos.count == 1 |
| | | |
| | | label_title.text = detailModel.name |
| | | label_hot.text = "\(detailModel.heat)" |
| | |
| | | label_city.text = "" |
| | | label_address.text = detailModel.address |
| | | label_matchPoint.text = detailModel.storeInfos.map({$0.name}).joined(separator: "、") |
| | | label_pay_money.text = "¥\(detailModel.cash)/人" |
| | | label_pay_coin.text = "\(detailModel.paiCoin)币/人" |
| | | label_pay_course.text = "\(detailModel.classHour)课时/人" |
| | | |
| | | 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)课时/人" |
| | | |
| | | } |
| | | |
| | |
| | | for v in weakSelf.students{ |
| | | result.append(["id":v.id,"isStudent":v.isStudent]) |
| | | } |
| | | Services.worldCupPaymentCheck(id: weakSelf.detailModel.id, ids: result.jq_toJson1(), uid: nil).subscribe(onNext: {data in |
| | | if let model = data.data{ |
| | | |
| | | var money:Double? |
| | | var paiCoin:Int? |
| | | var classHour:Int? |
| | | var money:Double = 0 |
| | | var paiCoin:Int = 0 |
| | | var classHour:Int = 0 |
| | | |
| | | money = weakSelf.detailModel.cash.double |
| | | |
| | | if model.paiCoin == 1{ |
| | | money = weakSelf.detailModel.cash |
| | | paiCoin = weakSelf.detailModel.paiCoin |
| | | } |
| | | |
| | | if model.classHour == 1{ |
| | | classHour = weakSelf.detailModel.classHour |
| | | } |
| | | |
| | | if money == 0 && paiCoin == 0 && classHour == 0{ |
| | | weakSelf.payment(payType: .free, result: result) |
| | | }else{ |
| | | PaymentView.show(enumType: .worldCup, money: (ali: money, wx: money, coin: paiCoin, course:classHour, integral: nil)) {[weak self] payType in |
| | | guard let weakSelf = self else { return } |
| | | Services.worldCupPayment(id: weakSelf.detailModel.id, ids: result.jq_toJson1(), payType: payType, uid: nil).subscribe(onNext: {data in |
| | | weakSelf.payment(payType: payType, result: result) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func payment(payType:PayType,result:[Dictionary<String,Int>]){ |
| | | Services.worldCupPayment(id: detailModel.id, ids: result.jq_toJson1(), payType: payType, uid: nil).subscribe(onNext: {[weak self]data in |
| | | if let m = data.data{ |
| | | switch payType { |
| | | case .aliPay: |
| | |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | } |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | |
| | | <?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"/> |
| | |
| | | <connections> |
| | | <outlet property="btn_addStudent" destination="J6G-ci-uFv" id="NWF-LA-tm8"/> |
| | | <outlet property="btn_agreement" destination="q5y-in-bNV" id="dA7-bY-ILw"/> |
| | | <outlet property="btn_enroll" destination="kdj-bD-RIR" id="FnQ-m9-e5f"/> |
| | | <outlet property="btn_moreStore" destination="AgA-ET-N0O" id="u3j-bV-RNv"/> |
| | | <outlet property="cons_tableHei" destination="7Nj-Ch-Bss" id="g2d-CY-NCq"/> |
| | | <outlet property="label_address" destination="Mmh-IM-z9o" id="hJU-oa-HZD"/> |
| | |
| | | @IBOutlet weak var webView: WKWebView! |
| | | @IBOutlet weak var cons_webHei: NSLayoutConstraint! |
| | | @IBOutlet weak var btn_moreStore: UIButton! |
| | | @IBOutlet weak var btn_enroll: UIButton! |
| | | |
| | | private var detailModel:WorldCupDetailModel? |
| | | |
| | |
| | | } |
| | | self?.bannerView.setItems(items: items) |
| | | |
| | | self?.btn_moreStore.isHidden = model.storeInfos.count > 1 |
| | | self?.btn_moreStore.isHidden = model.storeInfos.count == 1 |
| | | |
| | | self?.label_title.text = model.name |
| | | self?.label_hot.text = "\(model.heat)" |
| | |
| | | self?.label_city.text = "" |
| | | self?.label_address.text = model.address |
| | | self?.label_matchPoint.text = model.storeInfos.map({$0.name}).joined(separator: "、") |
| | | |
| | | if model.cash == 0{ |
| | | self?.label_pay_money.text = "免费" |
| | | }else{ |
| | | self?.label_pay_money.text = "¥\(model.cash)/人" |
| | | } |
| | | |
| | | if model.paiCoin == 0{ |
| | | self?.label_pay_coin.text = "免费" |
| | | }else{ |
| | | self?.label_pay_coin.text = "\(model.paiCoin)币/人" |
| | | } |
| | | |
| | | if model.classHour == 0{ |
| | | self?.label_pay_coin.text = "免费" |
| | | }else{ |
| | | self?.label_pay_course.text = "\(model.classHour)课时/人" |
| | | } |
| | | |
| | | self?.label_desc.text = model.intro |
| | | |
| | | 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) |
| | | } |
| | | |
| | | self?.detailModel = model |
| | | } |
| | | }).disposed(by: disposeBag) |
| | |
| | | <?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"/> |
| | |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="WorldCupContentApplyVC" customModule="WanPai" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="btn_enroll" destination="3aZ-G8-j6f" id="hd5-No-xwO"/> |
| | | <outlet property="btn_moreStore" destination="8A3-ba-Lfp" id="gNd-9Y-tYk"/> |
| | | <outlet property="cons_webHei" destination="mZW-Bo-YeJ" id="jsg-oq-zAd"/> |
| | | <outlet property="label_address" destination="5zE-II-xtR" id="bgD-gj-Q7I"/> |
| | |
| | | @IBOutlet weak var webView: WKWebView! |
| | | @IBOutlet weak var cons_webHei: NSLayoutConstraint! |
| | | @IBOutlet weak var cons__cancelBtnHei: NSLayoutConstraint! |
| | | @IBOutlet weak var btn_enroll: UIButton! |
| | | |
| | | private var id:Int! |
| | | private lazy var bannerView:CommonBannerView = { |
| | |
| | | self?.label_address.text = model.address |
| | | self?.label_city.text = "" |
| | | self?.label_matchStore.text = model.storeInfos.map({$0.name}).joined(separator: "、") |
| | | self?.btn_moreMatchStore.isHidden = model.storeInfos.count > 1 |
| | | self?.btn_moreMatchStore.isHidden = model.storeInfos.count == 1 |
| | | self?.tableView.reloadData() |
| | | self?.webView.loadHTMLString(model.content.jq_wrapHtml(), baseURL: nil) |
| | | 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) |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | <?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"/> |
| | |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="WorldCupContentDetailVC" customModule="WanPai" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="btn_cancel" destination="Gkg-tn-WFH" id="u4S-QZ-qFa"/> |
| | | <outlet property="btn_enroll" destination="Gkg-tn-WFH" id="dHR-xr-fFS"/> |
| | | <outlet property="btn_moreMatchStore" destination="tjO-5y-Kg9" id="twv-r8-wNh"/> |
| | | <outlet property="cons__cancelBtnHei" destination="y3u-8o-eMw" id="eWN-fY-L44"/> |
| | | <outlet property="cons_tableHei" destination="HCn-5Z-SAr" id="JPW-ED-7vP"/> |
| | |
| | | } |
| | | |
| | | class WorldCupContentVC: BaseVC { |
| | | var currentPartModel:ActivityDetailPartModel? |
| | | |
| | | // var currentPartModel:ActivityDetailPartModel? |
| | | var partModel:BehaviorRelay<ActivityDetailPartModel?>? |
| | | var superScrollView:UIScrollView? |
| | | private var viewModel = WorldCupContentViewModel() |
| | | |
| | | private var tableView:UITableView! |
| | | private(set) var tableView:UITableView! |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | view.backgroundColor = .clear |
| | |
| | | |
| | | viewModel.configure(tableView) |
| | | |
| | | if let m = currentPartModel{ |
| | | viewModel.studentID.accept(m.id) |
| | | viewModel.isStudent.accept(m.isStudent) |
| | | viewModel.beginRefresh() |
| | | // if let m = currentPartModel{ |
| | | // viewModel.studentID.accept(m.id) |
| | | // viewModel.isStudent.accept(m.isStudent) |
| | | // viewModel.beginRefresh() |
| | | // } |
| | | |
| | | // tableView.panGestureRecognizer.delegate = self |
| | | } |
| | | |
| | | override func setRx() { |
| | | partModel?.subscribe(onNext: {[weak self] model in |
| | | if let m = model{ |
| | | self?.viewModel.studentID.accept(m.id) |
| | | self?.viewModel.isStudent.accept(m.isStudent) |
| | | self?.viewModel.beginRefresh() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | } |
| | | |
| | | extension WorldCupContentVC:UIScrollViewDelegate{ |
| | | |
| | | func scrollViewDidScroll(_ scrollView: UIScrollView) { |
| | | let off = superScrollView!.contentOffset.y + scrollView.contentOffset.y |
| | | superScrollView!.contentOffset.y = max(0,min(350,off)) |
| | | } |
| | | } |
| | | |
| | |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_WorldCupTCell") as! WorldCupTCell |
| | | cell.backgroundColor = .clear |
| | | cell.setWorldCupListModel(model) |
| | | cell.label_state.text = viewModel.state.value == 2 ? "未开始":"进行中" |
| | | cell.label_state.text = viewModel.state.value == 2 ? "进行中":"未开始" |
| | | return cell |
| | | } |
| | | |
| | |
| | | import UIKit |
| | | import QMUIKit |
| | | import JQTools |
| | | import RxRelay |
| | | |
| | | class WorldCupHeaderVC: BaseVC { |
| | | |
| | |
| | | @IBOutlet weak var label_loseNum: UILabel! |
| | | @IBOutlet weak var label_winRate: UILabel! |
| | | |
| | | var currentPartModel:ActivityDetailPartModel?{ |
| | | didSet{ |
| | | if let m = currentPartModel{ |
| | | label_name.text = m.name |
| | | if let qrCode = WorldCupUserInfoQRCodel(id: m.id, isStudent: m.isStudent).toJSONString(){ |
| | | img_QR.image = UIImage.jq_GenerateQRCode(with: "\(qrCode)", width: 76) |
| | | } |
| | | getData(id: m.id, isStudent: m.isStudent) |
| | | } |
| | | // var currentPartModel:ActivityDetailPartModel?{ |
| | | // didSet{ |
| | | // if let m = currentPartModel{ |
| | | // label_name.text = m.name |
| | | // if let qrCode = WorldCupUserInfoQRCodel(id: m.id, isStudent: m.isStudent).toJSONString(){ |
| | | // img_QR.image = UIImage.jq_GenerateQRCode(with: "\(qrCode)", width: 76) |
| | | // } |
| | | // getData(id: m.id, isStudent: m.isStudent) |
| | | // } |
| | | // |
| | | // } |
| | | // } |
| | | |
| | | } |
| | | } |
| | | var partModel:BehaviorRelay<ActivityDetailPartModel?>? |
| | | |
| | | var partModels = [ActivityDetailPartModel](){ |
| | | didSet{ |
| | | btn_exchange.isHidden = partModels.count <= 1 |
| | |
| | | |
| | | setProvince(rank: 0) |
| | | setCity(cityName: "", rank: 0) |
| | | } |
| | | |
| | | override func setRx() { |
| | | partModel?.subscribe(onNext: {[weak self]model in |
| | | if let m = model{ |
| | | self?.label_name.text = m.name |
| | | if let qrCode = WorldCupUserInfoQRCodel(id: m.id, isStudent: m.isStudent).toJSONString(){ |
| | | self?.img_QR.image = UIImage.jq_GenerateQRCode(with: "\(qrCode)", width: 76) |
| | | } |
| | | self?.getData(id: m.id, isStudent: m.isStudent) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | private func getData(id:Int,isStudent:Int){ |
| | |
| | | |
| | | @IBAction func exchangeAction(_ sender: Any) { |
| | | |
| | | StudentChoose2View.show { items in |
| | | |
| | | StudentChoose2View.show {[weak self] item in |
| | | self?.partModel?.accept(item) |
| | | } |
| | | } |
| | | } |
| | |
| | | class WorldCupRankVC: BaseVC { |
| | | |
| | | private var viewModel = WorldCupRankViewModel() |
| | | var currentPartModel:ActivityDetailPartModel? |
| | | var partModel:BehaviorRelay<ActivityDetailPartModel?>? |
| | | private var worldCupRankModel:WorldCupRankModel? |
| | | private let cityBtn = UIButton(type: .custom) |
| | | private let yearBtn = QMUIButton(type: .custom) |
| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | view.backgroundColor = .clear |
| | | if let model = currentPartModel{ |
| | | viewModel.id.accept(model.id) |
| | | viewModel.isStudent.accept(model.isStudent) |
| | | Services.getEntrantRank(id: model.id, isStudent: model.isStudent).subscribe(onNext: {[weak self] data in |
| | | if let model = data.data{ |
| | | self?.worldCupRankModel = model |
| | | self?.cityBtn.setTitle(model.cityName, for: .normal) |
| | | self?.cityBtn.layoutIfNeeded() |
| | | self?.cityBtn.layoutSubviews() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | // if let model = currentPartModel{ |
| | | // viewModel.id.accept(model.id) |
| | | // viewModel.isStudent.accept(model.isStudent) |
| | | // Services.getEntrantRank(id: model.id, isStudent: model.isStudent).subscribe(onNext: {[weak self] data in |
| | | // if let model = data.data{ |
| | | // self?.worldCupRankModel = model |
| | | // self?.cityBtn.setTitle(model.cityName, for: .normal) |
| | | // self?.cityBtn.layoutIfNeeded() |
| | | // self?.cityBtn.layoutSubviews() |
| | | // } |
| | | // }).disposed(by: disposeBag) |
| | | // } |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | stackView.addArrangedSubview(provinceBtn) |
| | | stackView.addArrangedSubview(cityBtn) |
| | | |
| | | viewModel.configure(tableView) |
| | | viewModel.configure(tableView,needMore: false) |
| | | viewModel.beginRefresh() |
| | | } |
| | | |
| | | override func setRx() { |
| | | partModel?.subscribe(onNext: {[weak self] model in |
| | | guard let weakSelf = self else { return } |
| | | if let m = model{ |
| | | self?.viewModel.id.accept(m.id) |
| | | self?.viewModel.isStudent.accept(m.isStudent) |
| | | |
| | | Services.getEntrantRank(id: m.id, isStudent: m.isStudent).subscribe(onNext: {[weak self] data in |
| | | if let model = data.data{ |
| | | self?.worldCupRankModel = model |
| | | self?.cityBtn.setTitle(model.cityName, for: .normal) |
| | | self?.cityBtn.layoutIfNeeded() |
| | | self?.cityBtn.layoutSubviews() |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | @objc func radiusAction(btn:UIButton){ |
| | |
| | | return cell! |
| | | } |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "rankTCell") as! WorldCupRankTCell |
| | | cell.indexPath = indexPath |
| | | cell.model = viewModel.dataSource.value[indexPath.row] |
| | | cell.addLine(UIColor(hexStr: "#E1E1E1"), false, true, false, true, 0.4) |
| | | return cell |
| | | } |
| | |
| | | |
| | | class WorldCupRecordVC: BaseVC { |
| | | |
| | | private var tableView:UITableView! |
| | | private(set) var tableView:UITableView! |
| | | private var viewModel = WorldCupRecordViewModel() |
| | | var partModel:BehaviorRelay<ActivityDetailPartModel?>? |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | view.backgroundColor = .clear |
| | |
| | | viewModel.configure(tableView) |
| | | viewModel.beginRefresh() |
| | | } |
| | | |
| | | override func setRx() { |
| | | partModel?.subscribe(onNext: {[weak self]model in |
| | | if let m = model{ |
| | | self?.viewModel.studentId.accept(m.id) |
| | | self?.viewModel.isStudent.accept(m.isStudent) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | } |
| | | |
| | | extension WorldCupRecordVC:UITableViewDelegate,UITableViewDataSource{ |
| | |
| | | import SPPageMenu |
| | | import FFPage |
| | | import JQTools |
| | | |
| | | import RxSwift |
| | | import RxRelay |
| | | import RxCocoa |
| | | import RxDataSources |
| | | import ReplayKit |
| | | |
| | | class WorldCupVC: BaseVC { |
| | | |
| | | private var partModels = [ActivityDetailPartModel](){ |
| | | didSet{ |
| | | currentPartModel = partModels.first |
| | | } |
| | | } |
| | | |
| | | private var currentPartModel:ActivityDetailPartModel?{ |
| | | didSet{ |
| | | headerVC.currentPartModel = currentPartModel |
| | | pageVC.reloadData() |
| | | } |
| | | } |
| | | private var partModels = [ActivityDetailPartModel]() |
| | | private var partModel = BehaviorRelay<ActivityDetailPartModel?>(value:nil) |
| | | |
| | | lazy var headerVC:WorldCupHeaderVC = { |
| | | let vc = WorldCupHeaderVC() |
| | | vc.partModel = partModel |
| | | return vc |
| | | }() |
| | | |
| | |
| | | vc.headViewController = headerVC |
| | | vc.menuViewController = menuVC |
| | | vc.pageViewController = pageVC |
| | | vc.style = .headRefresh |
| | | vc.headHeight = 350 |
| | | vc.menuHeight = 50 |
| | | vc.style = .subRefresh |
| | |
| | | } |
| | | |
| | | menuVC.pageMenu.delegate = self |
| | | |
| | | Services.getParticipant().subscribe(onNext: {[weak self ]data in |
| | | if let items = data.data{ |
| | | guard let weakSelf = self else { return } |
| | | weakSelf.partModels = items |
| | | weakSelf.headerVC.partModels = items |
| | | weakSelf.partModel.accept(items.first) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | headerVC.partModel = partModel |
| | | } |
| | | |
| | | override func setUI() { |
| | | |
| | | } |
| | | |
| | | override func setRx() { |
| | | // partModel.subscribe(onNext: { data in |
| | | // |
| | | // |
| | | // }).disposed(by: disposeBag) |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController { |
| | | if page <= 1{ |
| | | let contentVC = WorldCupContentVC(state:page + 1) |
| | | contentVC.currentPartModel = currentPartModel |
| | | var state = 1 |
| | | if page == 0{ |
| | | state = 2 |
| | | } |
| | | let contentVC = WorldCupContentVC(state:state) |
| | | contentVC.superScrollView = adapterVC.scrollview |
| | | contentVC.partModel = partModel |
| | | return contentVC |
| | | }else if page == 2{ |
| | | return WorldCupRecordVC() |
| | | let vc = WorldCupRecordVC() |
| | | vc.partModel = partModel |
| | | return vc |
| | | }else{ |
| | | let vc = WorldCupRankVC() |
| | | vc.currentPartModel = currentPartModel |
| | | vc.partModel = partModel |
| | | return vc |
| | | } |
| | | } |
| | |
| | | |
| | | @objc func jumpAction(){ |
| | | if let m = model{ |
| | | jumpPage(model: m.model, page: m.page, type: m.type, id: m.id) |
| | | jumpPage(model: m.model, page: m.page, type: m.type, id: m.turnId) |
| | | } |
| | | |
| | | } |