WanPai/Common/View/CommonBannerView.swift
@@ -68,6 +68,7 @@ self.addSubview(scrollView) var image = UIImageView() image.sizeToFit() image.frame = CGRect(x:0,y:0,width:width,height:height) image.contentMode = .scaleToFill image.isUserInteractionEnabled = true @@ -84,6 +85,7 @@ addTapGesWithImage(image: image) } image = UIImageView() image.sizeToFit() image.frame = CGRect(x:width * CGFloat(images.count + 1),y:0,width:width,height:height) image.contentMode = .scaleToFill WanPai/Model/CommonModels.swift
@@ -543,9 +543,9 @@ struct CouponModelRuleModel:HandyJSON{ /// 满X元 条件 var conditionalAmount: Double = 0 var conditionalAmount: String = "" /// (减)抵扣金额 var deductionAmount: Double = 0 var deductionAmount: String = "" /// 名称 var experienceName: String = "" @@ -689,7 +689,7 @@ } struct CourseRecordModel:HandyJSON{ var purchaseAmount:Double = 0 var purchaseAmount:String = "" var purchaseTime = "" var purchaseType = "" } @@ -768,6 +768,7 @@ var type: CouponType = .discount var userPopulation: Int = 0 var useScope: Int = 0 var available:String = "" } struct YardBookingDetailModel:HandyJSON{ WanPai/Network/Services.swift
@@ -266,7 +266,7 @@ let params = ParamsAppender.build(url: All_Url) .interface(url: "/activity/api/coupon/queryCouponPackage") .append(key: "couponType", value: type) .append(key: "yearMonth", value: useStatus) .append(key: "useStatus", value: useStatus) return NetworkRequest.request(params: params, method: .post, progress: false) } @@ -533,13 +533,15 @@ /// 学员预约课程列表 static func studentAppointList(stuId:Int,status:StudentAppointType?,search:String,timeType:StudentAppointDateType)->Observable<BaseResponse<[StudentAppointModel]>>{ static func studentAppointList(page:Int,stuId:Int,status:StudentAppointType?,search:String,timeType:StudentAppointDateType)->Observable<BaseResponse<[StudentAppointModel]>>{ let params = ParamsAppender.build(url: All_Url) .interface(url: "/account/api/startCource/stuAppointList") .append(key: "status", value: status?.rawValue) .append(key: "timeType", value: timeType.rawValue) .append(key: "search", value: search) .append(key: "stuId", value: stuId) .append(key: "page", value: page) .append(key: "size", value: 20) return NetworkRequest.request(params: params, method: .post, progress: false) } WanPai/Root/Course/TCell/CourseBooking_1_TCell.swift
@@ -17,6 +17,7 @@ didSet{ label_title.text = studentAppointModel.coursePackageName label_courseNum.text = "\(studentAppointModel.courseHours)课时" view_courseNum.isHidden = studentAppointModel.courseHours == 0 label_address.text = studentAppointModel.storeNameAddr label_datetime.text = studentAppointModel.timeFrame label_status.text = studentAppointModel.status.strTitle @@ -34,7 +35,8 @@ @IBOutlet weak var label_title: UILabel! @IBOutlet weak var label_courseNum: UILabel! @IBOutlet weak var label_address: UILabel! @IBOutlet weak var view_courseNum: UIView! @IBOutlet weak var label_address: UILabel! @IBOutlet weak var label_datetime: UILabel! @IBOutlet weak var btn_exercise: UIButton! @IBOutlet weak var label_status: UILabel! @@ -82,7 +84,7 @@ var times = [OpenDoorTimeModel]() for (index,v) in a1.enumerated(){ let startTime = Date.jq_StringToTimeInterval(String(format: "%@ %@", date!,v), "yyyy.MM.dd HH:mm:ss") - 15 * 3600 let startTime = Date.jq_StringToTimeInterval(String(format: "%@ %@", date!,v), "yyyy.MM.dd HH:mm:ss") let endTime = Date.jq_StringToTimeInterval(String(format: "%@ %@", date!,b1[index]),"yyyy.MM.dd HH:mm:ss") times.append(OpenDoorTimeModel(start_time: startTime, end_time: endTime)) } WanPai/Root/Course/TCell/CourseBooking_1_TCell.xib
@@ -1,9 +1,9 @@ <?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="22155" 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="22130"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> <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"/> @@ -221,6 +221,7 @@ <outlet property="label_datetime" destination="Ezt-vJ-DRh" id="eSv-rM-t8Y"/> <outlet property="label_status" destination="99b-Wb-RuW" id="VWI-IV-HY9"/> <outlet property="label_title" destination="LvX-FX-4Fb" id="bgZ-DE-fLm"/> <outlet property="view_courseNum" destination="gIS-0j-Yxd" id="Ub0-a6-Sdh"/> </connections> <point key="canvasLocation" x="157.25190839694656" y="52.464788732394368"/> </tableViewCell> WanPai/Root/Course/TCell/CourseChargeTCell.swift
@@ -14,13 +14,12 @@ didSet{ label_typeName.text = courseRecordModel.purchaseType label_datetime.text = courseRecordModel.purchaseTime label_price.text = courseRecordModel.purchaseAmount if courseRecordModel.purchaseAmount > 0{ label_price.text = "+\(courseRecordModel.purchaseAmount.jq_formatFloat)" label_price.textColor = UIColor(hexStr: "#6CC366") if courseRecordModel.purchaseAmount.contains("-"){ label_price.textColor = UIColor(hexStr: "#E32910") }else{ label_price.text = "-\(courseRecordModel.purchaseAmount.jq_formatFloat)" label_price.textColor = UIColor(hexStr: "#E32910") label_price.textColor = UIColor(hexStr: "#6CC366") } } } WanPai/Root/Course/VC/CourseBookingSubListVC.swift
@@ -18,7 +18,7 @@ let timeType = BehaviorRelay<StudentAppointDateType>(value: .all) override func api() -> (Observable<BaseResponse<[StudentAppointModel]>>)? { Services.studentAppointList(stuId: studentId.value, status: status.value,search: search.value,timeType: timeType.value) Services.studentAppointList(page:page,stuId: studentId.value, status: status.value,search: search.value,timeType: timeType.value) } } @@ -51,7 +51,7 @@ override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white viewModel.configure(tableView,needMore: false) viewModel.configure(tableView,needMore: true) viewModel.beginRefresh() } WanPai/Root/Course/VC/CourseDetailApplyVC.swift
@@ -54,16 +54,17 @@ super.viewDidLoad() title = "课程详情" if let m = detailModel{ if let m = detailModel{ view_banner.setImages(images: m.detailDrawing.components(separatedBy: ","), type: .URL) { index in } label_title.text = m.name label_listenWeek.text = "每" + m.weeks.joined(separator: "、") label_title.text = m.name label_listenWeek.text = "每" + m.weeks.joined(separator: "、") label_listenTime.text = m.times.joined(separator: "|") label_store.text = m.storeName label_address.text = m.storeAddress label_store.text = m.storeName label_address.text = m.storeAddress label_vaild.text = m.time label_courseType.text = m.type.strTitle @@ -84,13 +85,13 @@ studentModels.append(m.student!) } cons_collHei.constant = ceil(Double(m.list.count) / 3.0) * CellH + floor(Double(m.list.count) / 3.0) * 21.0 collectionView.reloadData() cons_collHei.constant = ceil(Double(m.list.count) / 3.0) * CellH + floor(Double(m.list.count) / 3.0) * 21.0 collectionView.reloadData() cons_tableHei.constant = CGFloat(studentModels.count * 87) tableView.reloadData() changePrice(selectClassIndex) } cons_tableHei.constant = CGFloat(studentModels.count * 87) tableView.reloadData() changePrice(selectClassIndex) } btn_addStudent.isHidden = isExtend @@ -99,6 +100,8 @@ }else{ btn_handleBtn.setTitle("立即报名", for: .normal) } viewDidLayoutSubviews() } override func setUI() { @@ -333,11 +336,10 @@ var price:Double? switch subM.payType{ case .cash: case .cash,.cashCoin: price = subM.originalPrice == 0 ? subM.vipPrice : subM.originalPrice case .coin: price = Double(subM.playPaiCoin) case .cashCoin:break } guard price != nil else { WanPai/Root/Course/VC/CourseInfoVC.swift
@@ -97,63 +97,7 @@ override func viewDidLoad() { super.viewDidLoad() if let m = startClouseHomeModel{ img_header.sd_setImage(with: URL(string: m.stuImg)) label_stu_name.text = m.stuName img_gender.image = m.stuSex == .man ? UIImage(named: "icon_man") : UIImage(named: "icon_woman") label_age.text = "/\(m.stuAge)岁" label_stu_hei.attributedText = setAttribute(t1: "\(m.height)", t2: "cm") label_stu_wei.attributedText = setAttribute(t1: "\(m.weight)", t2: "kg") label_stu_BMI.attributedText = setAttribute(t1: m.bmi.jq_formatFloat, t2: m.bodyStatus) if m.courseList.count > 0{ pageMenu.frame = CGRect(origin: .zero, size: CGSize(width: JQ_ScreenW - 100, height: 25)) pageMenu.delegate = self view_menu.addSubview(pageMenu) cons_menuHeight.constant = 25 pageMenu.setItems(m.courseList.map({$0.courseName}), selectedItemIndex: 0) } view_menu.addSubview(btn_dispatchCourse) btn_dispatchCourse.snp.makeConstraints { make in make.right.equalTo(-19) make.centerY.equalToSuperview() make.height.equalTo(25) } exerciseCollectionView.reloadData() label_totalNums.text = "总课时数\( m.courseList.first?.totalNums ?? 0)" label_deductedNums.text = "已扣课时数\( m.courseList.first?.deductedNums ?? 0)" label_remainingNums.text = "剩余课时数\( m.courseList.first?.remainingNums ?? 0)" exerciseCollectionView.isHidden = m.exerciseVideoList.isEmpty view_exerciseTitle.isHidden = m.exerciseVideoList.isEmpty view_footer.isHidden = m.exerciseVideoList.isEmpty Services.studMedalList(studentId: m.stuId).subscribe(onNext: {[weak self] data in guard let weakSelf = self else { return } if let models = data.data{ weakSelf.mentals = models weakSelf.mentalCollectionView.reloadData() let he = ceil(Double(models.count) / 3) * 91 + floor(Double(models.count) / 3) * 35 weakSelf.cons_mentalViewHei.constant = he UIView.animate(withDuration: 0.3) { weakSelf.view.layoutIfNeeded() } } }).disposed(by: disposeBag) Services.weeksOfGetHours().subscribe(onNext: {[weak self] data in // self?.btn_dispatchCourse.isHidden = data.data == 0 self?.unDispatchNum = data.data }) { error in }.disposed(by: disposeBag) getSelectDayData() } updateData() } @@ -213,9 +157,7 @@ Services.startCourseHome().subscribe(onNext: {[weak self] data in if let model = data.data{ self?.startClouseHomeModel = model if model.courseList.count > 0{ self?.pageMenu.setItems(model.courseList.map({$0.courseName}), selectedItemIndex: 0) } self?.updateData() } }).disposed(by: weakSelf.disposeBag) }).disposed(by: disposeBag) @@ -249,7 +191,62 @@ } private func updateData(){ if let m = startClouseHomeModel{ img_header.sd_setImage(with: URL(string: m.stuImg)) label_stu_name.text = m.stuName img_gender.image = m.stuSex == .man ? UIImage(named: "icon_man") : UIImage(named: "icon_woman") label_age.text = "/\(m.stuAge)岁" label_stu_hei.attributedText = setAttribute(t1: "\(m.height)", t2: "cm") label_stu_wei.attributedText = setAttribute(t1: "\(m.weight)", t2: "kg") label_stu_BMI.attributedText = setAttribute(t1: m.bmi.jq_formatFloat, t2: m.bodyStatus) if m.courseList.count > 0{ pageMenu.frame = CGRect(origin: .zero, size: CGSize(width: JQ_ScreenW - 100, height: 25)) pageMenu.delegate = self view_menu.addSubview(pageMenu) cons_menuHeight.constant = 25 pageMenu.setItems(m.courseList.map({$0.courseName}), selectedItemIndex: 0) } view_menu.addSubview(btn_dispatchCourse) btn_dispatchCourse.snp.makeConstraints { make in make.right.equalTo(-19) make.centerY.equalToSuperview() make.height.equalTo(25) } exerciseCollectionView.reloadData() label_totalNums.text = "总课时数\( m.courseList.first?.totalNums ?? 0)" label_deductedNums.text = "已扣课时数\( m.courseList.first?.deductedNums ?? 0)" label_remainingNums.text = "剩余课时数\( m.courseList.first?.remainingNums ?? 0)" exerciseCollectionView.isHidden = m.exerciseVideoList.isEmpty view_exerciseTitle.isHidden = m.exerciseVideoList.isEmpty // view_footer.isHidden = m.exerciseVideoList.isEmpty Services.studMedalList(studentId: m.stuId).subscribe(onNext: {[weak self] data in guard let weakSelf = self else { return } if let models = data.data{ weakSelf.mentals = models weakSelf.mentalCollectionView.reloadData() let he = ceil(Double(models.count) / 3) * 91 + floor(Double(models.count) / 3) * 35 weakSelf.cons_mentalViewHei.constant = he UIView.animate(withDuration: 0.3) { weakSelf.view.layoutIfNeeded() } } }).disposed(by: disposeBag) Services.weeksOfGetHours().subscribe(onNext: {[weak self] data in // self?.btn_dispatchCourse.isHidden = data.data == 0 self?.unDispatchNum = data.data }) { error in }.disposed(by: disposeBag) getSelectDayData() } } private func setAttribute(t1:String,t2:String)->NSMutableAttributedString{ @@ -282,6 +279,8 @@ push(vc: vc) } @IBAction func reportAction(_ sender: UIButton) { guard startClouseHomeModel != nil else {return} let vc = StudentReportVC(stuId: startClouseHomeModel!.stuId) @@ -303,6 +302,7 @@ @IBAction func renewalAction(_ sender: UIButton) { let index = pageMenu.selectedItemIndex let models = startClouseHomeModel!.courseList guard index < models.count else {return} Services.queryCourseInfo(id: models[index].courseId).subscribe(onNext: {[weak self] data in if let m = data.data{ let vc = CourseDetailApplyVC(detailModel: m,isExtend: true) @@ -334,8 +334,13 @@ let nextPage = pageViewController.currentPage + 1 pageViewController.scroll(toPage: nextPage, animation: true) } @IBAction func exerciseAction(_ sender: UITapGestureRecognizer) { let vc = CourseExerciseSubListVC() push(vc: vc) } private func getSelectDayData(){ if let model = startClouseHomeModel{ if let storeStr = UserDefaults.standard.object(forKey: "CurrentStore") as? String{ @@ -397,15 +402,16 @@ if status{ Services.startCourceRreverse(courseId: m.id, time: weakSelf.currentDate.jq_format("yyyy-MM-dd"), stuId: stuId).subscribe(onNext: { data in alertSuccess(msg: "请假成功") tableView.beginUpdates() weakSelf.weeklyCourseModel?.data.remove(at: indexPath.row) tableView.deleteRows(at: [indexPath], with: .automatic) tableView.endUpdates() weakSelf.cons_tableHei.constant = 58 + 70 * Double(weakSelf.weeklyCourseModel?.data.count ?? 0) UIView.animate(withDuration: 0.3) { weakSelf.view.layoutIfNeeded() weakSelf.viewDidLayoutSubviews() } weakSelf.tableView.reloadData() // tableView.beginUpdates() // weakSelf.weeklyCourseModel?.data.remove(at: indexPath.row) // tableView.deleteRows(at: [indexPath], with: .automatic) // tableView.endUpdates() // weakSelf.cons_tableHei.constant = 58 + 70 * Double(weakSelf.weeklyCourseModel?.data.count ?? 0) // UIView.animate(withDuration: 0.3) { // weakSelf.view.layoutIfNeeded() // weakSelf.viewDidLayoutSubviews() // } }).disposed(by: weakSelf.disposeBag) } } WanPai/Root/Course/VC/CourseInfoVC.xib
@@ -549,9 +549,13 @@ <nil key="highlightedColor"/> </label> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="QzF-py-N1Y"> <rect key="frame" x="320" y="13.666666666666742" width="11" height="18"/> <rect key="frame" x="338" y="13.666666666666742" width="11" height="18"/> <constraints> <constraint firstAttribute="width" constant="11" id="kXb-mK-G8o"/> <constraint firstAttribute="height" constant="18" id="t4I-dh-vqj"/> </constraints> </imageView> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cCf-d4-Lya"> <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cCf-d4-Lya"> <rect key="frame" x="0.0" y="0.0" width="349" height="1"/> <color key="backgroundColor" red="0.59215686274509804" green="0.59215686274509804" blue="0.59215686274509804" alpha="0.25" colorSpace="custom" customColorSpace="sRGB"/> <constraints> @@ -560,9 +564,10 @@ </view> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <gestureRecognizers/> <constraints> <constraint firstItem="ePu-MW-XRF" firstAttribute="leading" secondItem="CO6-fV-eyD" secondAttribute="trailing" constant="5" id="7oH-Sj-65i"/> <constraint firstAttribute="trailing" secondItem="QzF-py-N1Y" secondAttribute="trailing" constant="18" id="A9R-XH-SY7"/> <constraint firstAttribute="trailing" secondItem="QzF-py-N1Y" secondAttribute="trailing" id="A9R-XH-SY7"/> <constraint firstItem="cCf-d4-Lya" firstAttribute="top" secondItem="a77-hD-aIq" secondAttribute="top" id="KVw-as-teS"/> <constraint firstAttribute="trailing" secondItem="cCf-d4-Lya" secondAttribute="trailing" id="NwP-aE-cVx"/> <constraint firstItem="CO6-fV-eyD" firstAttribute="leading" secondItem="a77-hD-aIq" secondAttribute="leading" id="SOL-E2-179"/> @@ -572,6 +577,9 @@ <constraint firstItem="CO6-fV-eyD" firstAttribute="centerY" secondItem="a77-hD-aIq" secondAttribute="centerY" id="o5y-zC-TXv"/> <constraint firstItem="cCf-d4-Lya" firstAttribute="leading" secondItem="a77-hD-aIq" secondAttribute="leading" id="wJf-Sl-t3g"/> </constraints> <connections> <outletCollection property="gestureRecognizers" destination="7Oy-Qp-JRw" appends="YES" id="Prc-MW-JeP"/> </connections> </view> </subviews> </stackView> @@ -696,6 +704,11 @@ </constraints> <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/> </view> <tapGestureRecognizer id="7Oy-Qp-JRw"> <connections> <action selector="exerciseAction:" destination="-1" id="pFN-s1-aid"/> </connections> </tapGestureRecognizer> </objects> <resources> <image name="bg_home_3" width="390" height="206"/> WanPai/Root/Course/VC/CourseOnlineListVC.swift
@@ -71,7 +71,7 @@ flowlayout.minimumLineSpacing = 22 // flowlayout.sectionHeadersPinToVisibleBounds = true flowlayout.headerReferenceSize = CGSize(width: JQ_ScreenW, height: 52) flowlayout.footerReferenceSize = CGSize(width: JQ_ScreenW, height: 1) flowlayout.footerReferenceSize = CGSize(width: JQ_ScreenW, height: 10) collectionView = BaseCollectionView(frame: .zero, collectionViewLayout: flowlayout) collectionView.register(UINib(nibName: "CourseOnlineCCell", bundle: nil), forCellWithReuseIdentifier: "_CourseOnlineCCell") collectionView.register(UINib(nibName: "CourseOnlineHeadView", bundle: nil), forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "_CourseOnlineHeadView") @@ -136,7 +136,14 @@ if kind == UICollectionView.elementKindSectionFooter{ var footerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "_footer", for: indexPath) footerView.backgroundColor = UIColor(hexStr: "#979797").withAlphaComponent(0.29) let lineView = UIView() lineView.backgroundColor = UIColor(hexStr: "#979797").withAlphaComponent(0.29) footerView.addSubview(lineView) lineView.snp.makeConstraints { make in make.left.right.bottom.equalToSuperview() make.height.equalTo(1) } return footerView } WanPai/Root/Course/VC/StudentCourseDetailVC.swift
@@ -214,14 +214,36 @@ extension StudentCourseDetailVC:SPPageMenuDelegate{ func pageMenu(_ pageMenu: SPPageMenu, itemSelectedAt index: Int) { defaultIndex = index var totoalNum = 0 var totalDeductedNum = 0 var totalRemainingNum = 0 for m in models{ totoalNum += m.totalNums totalDeductedNum = m.deductedNums totalRemainingNum = m.remainingNums } let model = models[index] headView.label_deductedNums.text = "\(model.deductedNums)" headView.label_totalNums.text = "\(model.totalNums)" headView.label_remainingNums.text = "\(model.remainingNums)" headView.label_deductedNums.text = "\(totalDeductedNum)" headView.label_totalNums.text = "\(totoalNum)" headView.label_remainingNums.text = "\(totalRemainingNum)" headView.label_preDeductedNums.text = "\(model.deductedNums)" headView.label_preTotalNums.text = "\(model.totalNums)" headView.label_preRemainingNums.text = "\(model.remainingNums)" headView.label_datetime.text = "有效期:\(model.periodOfValidity)" headView.label_deductedNums_1.text = "\(model.deductedNums)" viewModel.lessionId.accept(model.courseId) viewModel.beginRefresh() // // Services.lessonDetails(lessonId: model.courseId, stuId: studentModel.stuId).subscribe(onNext: { data in // // }).disposed(by: disposeBag) } } WanPai/Root/Course/View/CourseBookingFuncView.xib
@@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> <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"> <device id="retina6_12" orientation="portrait" appearance="light"/> <dependencies> <deployment identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> <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"/> @@ -19,14 +19,14 @@ <rect key="frame" x="0.0" y="0.0" width="393" height="87"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="741-8S-sGc"> <rect key="frame" x="14" y="9" width="326" height="38"/> <rect key="frame" x="14" y="9" width="326" height="30"/> <subviews> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_search" translatesAutoresizingMaskIntoConstraints="NO" id="6og-yb-vZ5"> <rect key="frame" x="4" y="10.666666666666668" width="17" height="17"/> <rect key="frame" x="4" y="6.6666666666666661" width="17" height="17"/> </imageView> <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="输入场地名称,门店名称" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Mrw-tc-NDG" customClass="QMUITextField"> <rect key="frame" x="25" y="0.0" width="291" height="38"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="输入课程名称" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Mrw-tc-NDG" customClass="QMUITextField"> <rect key="frame" x="25" y="0.0" width="291" height="30"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> <textInputTraits key="textInputTraits" returnKeyType="search"/> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> @@ -38,7 +38,7 @@ <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="trailing" secondItem="Mrw-tc-NDG" secondAttribute="trailing" constant="10" id="BDs-R7-YHd"/> <constraint firstAttribute="height" constant="38" id="BjA-Dw-5pe"/> <constraint firstAttribute="height" constant="30" id="BjA-Dw-5pe"/> <constraint firstItem="6og-yb-vZ5" firstAttribute="leading" secondItem="741-8S-sGc" secondAttribute="leading" constant="4" id="Mff-k6-Q10"/> <constraint firstItem="6og-yb-vZ5" firstAttribute="centerY" secondItem="741-8S-sGc" secondAttribute="centerY" id="X7V-A7-tMd"/> <constraint firstItem="Mrw-tc-NDG" firstAttribute="top" secondItem="741-8S-sGc" secondAttribute="top" id="agy-MK-ZhI"/> @@ -52,7 +52,7 @@ </userDefinedRuntimeAttributes> </view> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yjj-rT-1Pw"> <rect key="frame" x="340" y="9" width="53" height="38"/> <rect key="frame" x="340" y="9" width="53" height="30"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> <state key="normal" title="搜索"> @@ -60,10 +60,10 @@ </state> </button> <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="hMR-Pb-2D7"> <rect key="frame" x="14" y="47" width="86" height="40"/> <rect key="frame" x="14" y="39" width="79" height="48"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m0Y-Ci-yzA" customClass="QMUIButton"> <rect key="frame" x="0.0" y="0.0" width="86" height="40"/> <rect key="frame" x="0.0" y="0.0" width="79" height="48"/> <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"> @@ -119,8 +119,8 @@ </view> </objects> <resources> <image name="icon_down_arrow" width="20" height="14"/> <image name="icon_down_arrow_s" width="20" height="14"/> <image name="icon_down_arrow" width="13" height="8"/> <image name="icon_down_arrow_s" width="13" height="8"/> <image name="icon_search" width="17" height="17"/> <namedColor name="FE6E0D"> <color red="0.99199998378753662" green="0.53299999237060547" blue="0.0080000003799796104" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> WanPai/Root/Course/View/StudentCourseDetailHeadView.swift
@@ -19,7 +19,12 @@ @IBOutlet weak var label_datetime: UILabel! @IBOutlet weak var label_stuName: UILabel! @IBOutlet weak var img_stuProfile: UIImageView! @IBOutlet weak var label_deductedNums_1: UILabel! @IBOutlet weak var label_preDeductedNums: UILabel! @IBOutlet weak var label_preTotalNums: UILabel! @IBOutlet weak var label_preRemainingNums: UILabel! var renewalClouse:(()->Void)? WanPai/Root/Course/View/StudentCourseDetailHeadView.xib
@@ -1,9 +1,9 @@ <?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="22155" 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="22131"/> <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"/> @@ -254,6 +254,8 @@ <outlet property="label_datetime" destination="wUX-EU-sza" id="8xl-B9-xob"/> <outlet property="label_deductedNums" destination="2MH-wg-za7" id="XcX-S4-4IQ"/> <outlet property="label_deductedNums_1" destination="Spc-8e-GZC" id="Uxh-Xk-1q9"/> <outlet property="label_preRemainingNums" destination="RT1-4p-mDy" id="9YY-hM-VnL"/> <outlet property="label_preTotalNums" destination="qub-6X-WLy" id="1kl-3X-88q"/> <outlet property="label_remainingNums" destination="jO2-AH-Mno" id="9rd-Fz-8EI"/> <outlet property="label_stuName" destination="ctC-Za-6Wl" id="CB4-4t-Skp"/> <outlet property="label_totalNums" destination="G2G-fo-yih" id="3nc-RK-Dja"/> WanPai/Root/Home/VC/HomeVC.swift
@@ -213,7 +213,7 @@ guard let weakSelf = self else { return } weakSelf.storeId = store.id weakSelf.label_store.text = store.name weakSelf.storeModel = HomeStoreModel(isVip: weakSelf.storeModel!.isVip, storeId: store.id, name: store.name, lon: 0, lat: 0, province: province.name, provinceCode: province.code, city: city.name, cityCode: city.code) weakSelf.storeModel = HomeStoreModel(isVip: weakSelf.storeModel?.isVip ?? 0, storeId: store.id, name: store.name, lon: 0, lat: 0, province: province.name, provinceCode: province.code, city: city.name, cityCode: city.code) weakSelf.items.removeAll() weakSelf.getStoreItemList() WanPai/Root/Other/CCell/CouponCCell.swift
@@ -15,22 +15,24 @@ @IBOutlet weak var label_name: UILabel! @IBOutlet weak var label_fullMinus: UILabel! @IBOutlet weak var label_vaildTime: UILabel! @IBOutlet weak var label_useCity: UILabel! var showDetailClouse:(()->Void)? var courseCouponModel:CourseCouponModel!{ didSet{ if let m = courseCouponModel{ label_name.text = m.type.rawTitle label_useCity.text = m.available let ruleModel = CouponModelRuleModel.deserialize(from: m.content) switch m.type { case .discount: label_money.text = "\(ruleModel?.deductionAmount.jq_formatFloat ?? "")元" label_money.text = ruleModel?.deductionAmount ?? "" label_fullMinus.isHidden = false label_fullMinus.text = String(format: "满%@元可用", ruleModel?.conditionalAmount.jq_formatFloat ?? "--") label_fullMinus.text = ruleModel?.conditionalAmount ?? "" case .voucher: label_money.text = "\(ruleModel?.conditionalAmount.jq_formatFloat ?? "")元" label_money.text = ruleModel?.conditionalAmount ?? "" label_fullMinus.isHidden = true case .experience: label_money.text = ruleModel?.experienceName ?? "" WanPai/Root/Other/CCell/CouponCCell.xib
@@ -1,9 +1,9 @@ <?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="22155" 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="22130"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> <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"/> @@ -99,6 +99,12 @@ <action selector="showContentAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="tE2-yA-Wuz"/> </connections> </button> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c3B-oX-Uzt"> <rect key="frame" x="32.666666666666664" y="76.666666666666671" width="31" height="14.333333333333329"/> <fontDescription key="fontDescription" type="system" pointSize="12"/> <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> @@ -114,10 +120,12 @@ <constraint firstAttribute="trailing" secondItem="DLn-XT-0Qj" secondAttribute="trailing" constant="9" id="ONW-N8-KWx"/> <constraint firstItem="943-VV-dPw" firstAttribute="trailing" secondItem="OKL-S9-8uc" secondAttribute="trailing" constant="-3" id="WDa-vh-Zz9"/> <constraint firstItem="s4d-Hy-Gra" firstAttribute="leading" secondItem="OKL-S9-8uc" secondAttribute="trailing" id="bZg-Yq-qYQ"/> <constraint firstAttribute="bottom" secondItem="c3B-oX-Uzt" secondAttribute="bottom" constant="12" id="bqW-FM-RlI"/> <constraint firstItem="OKL-S9-8uc" firstAttribute="top" secondItem="mnx-Jv-DFb" secondAttribute="top" id="ctI-2Y-KVB"/> <constraint firstItem="DLn-XT-0Qj" firstAttribute="centerY" secondItem="943-VV-dPw" secondAttribute="centerY" id="fg2-s8-8hM"/> <constraint firstItem="943-VV-dPw" firstAttribute="bottom" secondItem="OKL-S9-8uc" secondAttribute="bottom" constant="-8" id="gDi-cg-pJq"/> <constraint firstAttribute="bottom" secondItem="s4d-Hy-Gra" secondAttribute="bottom" id="pBu-iF-fVd"/> <constraint firstItem="c3B-oX-Uzt" firstAttribute="centerX" secondItem="943-VV-dPw" secondAttribute="centerX" id="yZR-IB-sdY"/> <constraint firstItem="943-VV-dPw" firstAttribute="leading" secondItem="OKL-S9-8uc" secondAttribute="leading" constant="3" id="zzE-HG-7TH"/> </constraints> </view> @@ -132,9 +140,10 @@ </constraints> <size key="customSize" width="417" height="123"/> <connections> <outlet property="label_fullMinus" destination="gEm-JU-PoK" id="Hj9-Wb-JqI"/> <outlet property="label_fullMinus" destination="c3B-oX-Uzt" id="J1c-9b-uXy"/> <outlet property="label_money" destination="943-VV-dPw" id="tMl-vP-5mZ"/> <outlet property="label_name" destination="OYF-uW-SFs" id="bRA-ib-61b"/> <outlet property="label_useCity" destination="gEm-JU-PoK" id="X6R-hy-ZDD"/> <outlet property="label_vaildTime" destination="7Qw-dg-xym" id="rrz-7l-kG2"/> </connections> <point key="canvasLocation" x="319.84732824427482" y="44.014084507042256"/> WanPai/Root/Welfare/TCell/WelfareCouponsTCell.swift
@@ -30,11 +30,11 @@ var indexPath:IndexPath! var couponModel:CouponModel!{ didSet{ label_price.text = couponModel.ruleModel?.deductionAmount.currency() label_useCon.isHidden = couponModel.ruleModel?.conditionalAmount == 0 label_price.text = couponModel.ruleModel?.deductionAmount label_useCon.isHidden = couponModel.ruleModel?.conditionalAmount.isEmpty ?? true if let amount = couponModel.ruleModel?.conditionalAmount{ label_useCon.text = String(format: "满%@可用",amount) label_useCon.text = amount } label_title.text = couponModel.name @@ -65,6 +65,17 @@ btn_detail.isHidden = couponModel.useCondition == .nationwide label_info.text = couponModel.instructionsForUse switch couponModel.type { case .none: break case .discount: break case .voucher: break case .experience: label_price.text = "体验" } } } WanPai/Root/Welfare/VC/WelfareCouponsListVC.swift
@@ -108,7 +108,7 @@ } @objc func fliterAction(){ JQ_MenuView().show(self, tapView: btn_filter, items: ["全部","已使用","未使用","已过期"], tableHei: 230) {[weak self] index, str in JQ_MenuView().show(self, tapView: btn_filter, items: ["全部","未使用","已使用","已过期"], tableHei: 230) {[weak self] index, str in self?.btn_filter.setTitle(str, for: .normal) if let vc = self?.pageViewController.currentController as? WelfareCouponsSubListVC{ if index == 0{ WanPai/Root/Yard/VC/YardDetailDateTimeVC.swift
@@ -10,6 +10,9 @@ import RxRelay import RxSwift let UpdateDetailDate_Noti = Notification.Name.init("UpdateDetailDate_Noti") class YardDetailDateTimeVC: BaseVC { private var collectionView:UICollectionView! @@ -66,6 +69,16 @@ querySiteTimes(halfName: halfName, siteName: siteName) } override func setRx() { NotificationCenter.default.rx.notification(UpdateDetailDate_Noti, object: nil).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] data in guard let weakSelf = self else { return } self?.selects.removeAll() self?.drop1 = nil self?.drop2 = nil self?.querySiteTimes(halfName: weakSelf.halfName, siteName: weakSelf.siteName) }).disposed(by: disposeBag) } //清除水 public func clearALL(){ drop1 = nil WanPai/Root/Yard/VC/YardDetailVC.swift
@@ -378,11 +378,13 @@ YYPaymentManager.shared.sendPaymentRequest(YYAlipayRequest(orderString: m.orderString)) { result in switch result { case .success: NotificationCenter.default.post(name: UpdateDetailDate_Noti, object: nil) let vc = PaymentResultVC(result: .success, objType: .yard,handleVC: nil) weakSelf.push(vc: vc) case .cancel: alert(msg: "交易取消") case .failure(_): NotificationCenter.default.post(name: UpdateDetailDate_Noti, object: nil) let vc = PaymentResultVC(result: .fail("交易失败",0), objType: .yard,handleVC: nil) weakSelf.push(vc: vc) } @@ -390,6 +392,7 @@ case .wechat,.integral:break case .coin: NotificationCenter.default.post(name: UpdateDetailDate_Noti, object: nil) let vc = PaymentResultVC(result: .success, objType: .yard,handleVC: nil) weakSelf.push(vc: vc) case .courseNum:break @@ -399,12 +402,14 @@ if let er = error as? NetworkRequest.NetRequestError{ switch er { case .Other(let code,let string): NotificationCenter.default.post(name: UpdateDetailDate_Noti, object: nil) let vc = PaymentResultVC(result: .fail(string,code), objType: .yard){[weak self] in let vc1 = YardBookingListVC(page: 5) self?.push(vc: vc1) } self?.push(vc: vc) default: NotificationCenter.default.post(name: UpdateDetailDate_Noti, object: nil) let vc = PaymentResultVC(result: .fail("支付失败",0), objType: .yard){[weak self] in let vc1 = YardBookingListVC(page: 5) self?.push(vc: vc1)