WanPai.xcodeproj/project.pbxproj
@@ -157,6 +157,8 @@ 13801CC52A4D26D90041454D /* CommonSingleTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13801CC32A4D26D90041454D /* CommonSingleTCell.xib */; }; 13801CC72A4D294D0041454D /* ChooseNumberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13801CC62A4D294D0041454D /* ChooseNumberView.swift */; }; 13801CC92A4D29740041454D /* ChooseNumberView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13801CC82A4D29740041454D /* ChooseNumberView.xib */; }; 1381BBA42DB21BB9000717EB /* CardCenterTopQRCodeTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1381BBA32DB21BB9000717EB /* CardCenterTopQRCodeTCell.xib */; }; 1381BBA52DB21BB9000717EB /* CardCenterTopQRCodeTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1381BBA22DB21BB9000717EB /* CardCenterTopQRCodeTCell.swift */; }; 1384F6DF2AB97E5700A8B620 /* ExperienceCourseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1384F6DD2AB97E5700A8B620 /* ExperienceCourseVC.swift */; }; 1384F6E02AB97E5700A8B620 /* ExperienceCourseVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1384F6DE2AB97E5700A8B620 /* ExperienceCourseVC.xib */; }; 138667F52A428E4000484FEA /* WelfareWeeklyDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138667F32A428E4000484FEA /* WelfareWeeklyDetailVC.swift */; }; @@ -534,6 +536,8 @@ 13801CC32A4D26D90041454D /* CommonSingleTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CommonSingleTCell.xib; sourceTree = "<group>"; }; 13801CC62A4D294D0041454D /* ChooseNumberView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChooseNumberView.swift; sourceTree = "<group>"; }; 13801CC82A4D29740041454D /* ChooseNumberView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ChooseNumberView.xib; sourceTree = "<group>"; }; 1381BBA22DB21BB9000717EB /* CardCenterTopQRCodeTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardCenterTopQRCodeTCell.swift; sourceTree = "<group>"; }; 1381BBA32DB21BB9000717EB /* CardCenterTopQRCodeTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CardCenterTopQRCodeTCell.xib; sourceTree = "<group>"; }; 1384F6DD2AB97E5700A8B620 /* ExperienceCourseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExperienceCourseVC.swift; sourceTree = "<group>"; }; 1384F6DE2AB97E5700A8B620 /* ExperienceCourseVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ExperienceCourseVC.xib; sourceTree = "<group>"; }; 138667F32A428E4000484FEA /* WelfareWeeklyDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelfareWeeklyDetailVC.swift; sourceTree = "<group>"; }; @@ -1082,6 +1086,8 @@ children = ( 13E82AAD2D93CE32006116E3 /* CardCenterTCell.swift */, 13E82AAE2D93CE32006116E3 /* CardCenterTCell.xib */, 1381BBA22DB21BB9000717EB /* CardCenterTopQRCodeTCell.swift */, 1381BBA32DB21BB9000717EB /* CardCenterTopQRCodeTCell.xib */, ); path = TCell; sourceTree = "<group>"; @@ -1812,6 +1818,7 @@ 13EC6DDD2A493D23009FC09A /* WelfareCoinCCell.xib in Resources */, 8DF184452A332CCD0095687B /* StudentInfoTCell.xib in Resources */, 13D7BA962A4BD4760007E4B7 /* BillInfoTCell.xib in Resources */, 1381BBA42DB21BB9000717EB /* CardCenterTopQRCodeTCell.xib in Resources */, 132876632A49A18700FC9122 /* StudentExchangeVC.xib in Resources */, 132876692A49A4CB00FC9122 /* StudentReportVC.xib in Resources */, 138D4D002A47EF4C005233E7 /* CourseDatetimeCCell.xib in Resources */, @@ -1978,6 +1985,7 @@ 13FBB8D62A4ED96C00FF70DB /* SearchStoreDetailFeedbackVC.swift in Sources */, 8DFA9B8B2A317DAA00E99281 /* CourseVC.swift in Sources */, 8DAEB54B2A30593C00814766 /* BaseVC.swift in Sources */, 1381BBA52DB21BB9000717EB /* CardCenterTopQRCodeTCell.swift in Sources */, 1387B6662A4AB66300BF2F2E /* CourseBookingListVC.swift in Sources */, 8DAEB54E2A305A0100814766 /* Colors.swift in Sources */, 130A59302D9406A40094D92D /* CardCenterSheetView.swift in Sources */, WanPai/Model/CommonModels.swift
@@ -990,6 +990,10 @@ var cover = "" var id = 0 var isBuy = 0 var qrCode:String? var huiminName:String? var studentName:String? var endTime:String? } struct HuiminCardDetailModel:HandyJSON{ @@ -1068,6 +1072,12 @@ var studentList = [HuiminCardItemStuModel]() } struct HuiminCardStuModel:HandyJSON{ var endTime = "" var qrCode = "" var studentName = "" } struct HuiminCardRuleInfoModel:HandyJSON{ var addUserRemark = "" var id = 0 WanPai/Network/Services.swift
@@ -1483,6 +1483,21 @@ .interface(url: "/activity/huimin/getContentForStudent") return NetworkRequest.request(params: params, method: .post, progress: true) } class func getStudentListByCarId(id:Int)->Observable<BaseResponse<[HuiminCardItemStuModel]>>{ let params = ParamsAppender.build(url: All_Url) .interface(url: "/activity/huimin/getStudentListByCarId") .append(key: "id", value: id) return NetworkRequest.request(params: params, method: .post, progress: true) } class func getQRCodeByStuId(cardId:Int,studentId:Int)->Observable<BaseResponse<HuiminCardStuModel>>{ let params = ParamsAppender.build(url: All_Url) .interface(url: "/activity/huimin/getQrCodeByStudentId") .append(key: "cardId", value: cardId) .append(key: "studentId", value: studentId) return NetworkRequest.request(params: params, method: .post, progress: true) } } extension Services{ WanPai/Root/CardCenter/TCell/CardCenterTCell.swift
@@ -15,6 +15,8 @@ super.awakeFromNib() selectionStyle = .none img_bg.cornerRadius = 10 backgroundColor = .clear contentView.backgroundColor = .clear } WanPai/Root/CardCenter/TCell/CardCenterTCell.xib
@@ -4,7 +4,6 @@ <dependencies> <deployment identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/> <capability name="System colors in document resources" minToolsVersion="11.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <objects> @@ -24,7 +23,6 @@ <rect key="frame" x="0.0" y="0.0" width="704" height="285"/> </imageView> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstItem="B5d-EI-Qow" firstAttribute="leading" secondItem="qoX-GF-JqO" secondAttribute="leading" id="8tU-q8-yzI"/> <constraint firstItem="B5d-EI-Qow" firstAttribute="top" secondItem="qoX-GF-JqO" secondAttribute="top" id="HOz-It-sNj"/> @@ -48,8 +46,5 @@ </objects> <resources> <image name="icon_card_mask" width="350" height="140"/> <systemColor name="systemBackgroundColor"> <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </systemColor> </resources> </document> WanPai/Root/CardCenter/TCell/CardCenterTopQRCodeTCell.swift
New file @@ -0,0 +1,55 @@ // // CardCenterTopQRCodeTCell.swift // WanPai // // Created by 无故事王国 on 2025/4/18. // import UIKit import RxSwift class CardCenterTopQRCodeTCell: UITableViewCell { @IBOutlet weak var label_name: UILabel! @IBOutlet weak var label_time: UILabel! @IBOutlet weak var img_qrCode: UIImageView! var indexPath:IndexPath? private var clouseStudentsClouse:(([HuiminCardItemStuModel],IndexPath)->Void)? private var disposeBag = DisposeBag() private var model:HuiminCardItemModel? override func awakeFromNib() { super.awakeFromNib() contentView.backgroundColor = .clear backgroundColor = .clear selectionStyle = .none } func setModel(_ model:HuiminCardItemModel?,cache:HuiminCardStuModel? = nil){ guard let m = model else {return} self.model = m if let c = cache{ img_qrCode.image = UIImage.jq_GenerateQRCode(with: c.qrCode, width: 250) label_name.text = "\(c.studentName)的入场二维码(\(m.huiminName ?? ""))" label_time.text = "有效期至:" + (c.endTime) }else{ img_qrCode.image = UIImage.jq_GenerateQRCode(with: m.qrCode ?? "", width: 250) label_name.text = "\(m.studentName ?? "")的入场二维码(\(m.huiminName ?? ""))" label_time.text = "有效期至:" + (m.endTime ?? "") } } func studentListClouse(_ clouse:@escaping ( [HuiminCardItemStuModel],IndexPath)->Void){ self.clouseStudentsClouse = clouse } @IBAction func chooseAction(_ sender: UIButton) { guard let m = model else {return} Services.getStudentListByCarId(id: m.id).subscribe(onNext: {[unowned self] data in if let m = data.data{ self.clouseStudentsClouse?(m,indexPath!) } }).disposed(by: disposeBag) } } WanPai/Root/CardCenter/TCell/CardCenterTopQRCodeTCell.xib
New file @@ -0,0 +1,117 @@ <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" 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="23506"/> <capability name="Named colors" minToolsVersion="9.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" rowHeight="536" id="KGk-i7-Jjw" customClass="CardCenterTopQRCodeTCell" customModule="WanPai" customModuleProvider="target"> <rect key="frame" x="0.0" y="0.0" width="437" height="536"/> <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="437" height="536"/> <autoresizingMask key="autoresizingMask"/> <subviews> <view contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="7gx-hd-vvE"> <rect key="frame" x="0.0" y="0.0" width="437" height="536"/> <subviews> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_card_1" translatesAutoresizingMaskIntoConstraints="NO" id="uIn-27-5dS"> <rect key="frame" x="0.0" y="0.0" width="437" height="536"/> </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--的玩湃惠民卡入场二维码" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uZE-gl-BDJ"> <rect key="frame" x="20" y="17" width="397" height="28"/> <constraints> <constraint firstAttribute="height" constant="28" id="gGg-JC-1dS"/> </constraints> <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="20"/> <nil key="textColor"/> <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="vC2-gF-8aP"> <rect key="frame" x="177" y="49" width="83" height="20"/> <constraints> <constraint firstAttribute="height" constant="20" id="FQp-m9-hOr"/> </constraints> <fontDescription key="fontDescription" type="system" weight="medium" 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> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="AQ9-dy-TAu"> <rect key="frame" x="93.666666666666686" y="120" width="250" height="250"/> <constraints> <constraint firstAttribute="width" constant="250" id="InI-ht-b6d"/> <constraint firstAttribute="height" constant="250" id="Jp4-IM-Bq1"/> </constraints> </imageView> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="imP-A8-Y6L"> <rect key="frame" x="146.66666666666666" y="380" width="143.99999999999997" height="44"/> <constraints> <constraint firstAttribute="height" constant="44" id="ZiS-4G-e9J"/> <constraint firstAttribute="width" constant="144" id="u04-cU-FOk"/> </constraints> <fontDescription key="fontDescription" type="system" pointSize="15"/> <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> <state key="normal" title="人员切换"> <color key="titleColor" name="FE6E0D"/> </state> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="color" keyPath="ld_borderColorXIB"> <color key="value" name="FE6E0D"/> </userDefinedRuntimeAttribute> <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/> <userDefinedRuntimeAttribute type="number" keyPath="ld_borderWidthXIB"> <real key="value" value="1"/> </userDefinedRuntimeAttribute> <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB"> <real key="value" value="20"/> </userDefinedRuntimeAttribute> </userDefinedRuntimeAttributes> <connections> <action selector="chooseAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="sXA-lh-w3z"/> </connections> </button> </subviews> <constraints> <constraint firstItem="imP-A8-Y6L" firstAttribute="centerX" secondItem="uZE-gl-BDJ" secondAttribute="centerX" id="3pb-Tn-VUz"/> <constraint firstItem="uZE-gl-BDJ" firstAttribute="leading" secondItem="7gx-hd-vvE" secondAttribute="leading" constant="20" id="4tm-OU-lAv"/> <constraint firstItem="uIn-27-5dS" firstAttribute="top" secondItem="7gx-hd-vvE" secondAttribute="top" id="7xJ-Os-LkT"/> <constraint firstAttribute="trailing" secondItem="uIn-27-5dS" secondAttribute="trailing" id="9fH-PD-CiG"/> <constraint firstItem="vC2-gF-8aP" firstAttribute="centerX" secondItem="uZE-gl-BDJ" secondAttribute="centerX" id="Mug-tn-n1c"/> <constraint firstItem="uIn-27-5dS" firstAttribute="leading" secondItem="7gx-hd-vvE" secondAttribute="leading" id="Q3v-vm-vYS"/> <constraint firstItem="imP-A8-Y6L" firstAttribute="top" secondItem="AQ9-dy-TAu" secondAttribute="bottom" constant="10" id="Sqp-d2-mK8"/> <constraint firstItem="vC2-gF-8aP" firstAttribute="top" secondItem="uZE-gl-BDJ" secondAttribute="bottom" constant="4" id="UNi-u9-4z3"/> <constraint firstItem="AQ9-dy-TAu" firstAttribute="top" secondItem="vC2-gF-8aP" secondAttribute="bottom" constant="51" id="WJ2-Mr-TA6"/> <constraint firstAttribute="bottom" secondItem="uIn-27-5dS" secondAttribute="bottom" id="XUn-4C-qD9"/> <constraint firstItem="AQ9-dy-TAu" firstAttribute="centerX" secondItem="uZE-gl-BDJ" secondAttribute="centerX" id="Y60-VD-gXZ"/> <constraint firstAttribute="trailing" secondItem="uZE-gl-BDJ" secondAttribute="trailing" constant="20" id="Zhe-Pa-3ig"/> <constraint firstItem="uZE-gl-BDJ" firstAttribute="top" secondItem="7gx-hd-vvE" secondAttribute="top" constant="17" id="jsv-W1-LEm"/> </constraints> </view> </subviews> <constraints> <constraint firstItem="7gx-hd-vvE" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="Igf-Kc-M8m"/> <constraint firstItem="7gx-hd-vvE" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="Zb9-qP-Uyt"/> <constraint firstAttribute="bottom" secondItem="7gx-hd-vvE" secondAttribute="bottom" id="gtR-ZY-zel"/> <constraint firstAttribute="trailing" secondItem="7gx-hd-vvE" secondAttribute="trailing" id="hDM-24-AgC"/> </constraints> </tableViewCellContentView> <connections> <outlet property="img_qrCode" destination="AQ9-dy-TAu" id="8eo-30-u7v"/> <outlet property="label_name" destination="uZE-gl-BDJ" id="dQh-oX-NBI"/> <outlet property="label_time" destination="vC2-gF-8aP" id="AYT-mE-vsS"/> </connections> <point key="canvasLocation" x="161.06870229007632" y="78.873239436619727"/> </tableViewCell> </objects> <resources> <image name="bg_card_1" width="388" height="456"/> <namedColor name="FE6E0D"> <color red="0.99199998378753662" green="0.53299999237060547" blue="0.0080000003799796104" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> </namedColor> </resources> </document> WanPai/Root/CardCenter/VC/CardCenterDetailVC.swift
@@ -17,7 +17,7 @@ @IBOutlet weak var view_banner: UIView! @IBOutlet weak var label_cardName: UILabel! @IBOutlet weak var label_price: UILabel! @IBOutlet weak var label_useInfo: UILabel! // @IBOutlet weak var label_useInfo: UILabel! @IBOutlet weak var label_limit: UILabel! @IBOutlet weak var webView: WKWebView! @IBOutlet weak var cons_web_hei: NSLayoutConstraint! @@ -43,7 +43,7 @@ self.label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 20, weight: .medium), withColor: UIColor(hexStr: "#EE0B0B")) .add(string: m.salesMoney.jq_unit(), withFont: .systemFont(ofSize: 20, weight: .medium), withColor: UIColor(hexStr: "#EE0B0B")) .add(string:"/人", withFont: .systemFont(ofSize: 14, weight: .medium), withColor: UIColor(hexStr: "#EE0B0B")).mutableAttributedString self.label_useInfo.text = m.unBuyRemark // self.label_useInfo.text = m.unBuyRemark self.label_limit.text = m.buyRemark self.webView.loadHTMLString(m.introduce.jq_wrapHtml(), baseURL: nil) WanPai/Root/CardCenter/VC/CardCenterDetailVC.xib
@@ -18,7 +18,6 @@ <outlet property="label_cardName" destination="gem-q8-tP4" id="RGx-1X-h0S"/> <outlet property="label_limit" destination="aY2-I8-jwa" id="TL7-5E-isk"/> <outlet property="label_price" destination="kbe-fI-u7Z" id="cxJ-Sm-PFC"/> <outlet property="label_useInfo" destination="R3I-hK-J6L" id="xVA-dl-VoM"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> <outlet property="view_banner" destination="svJ-l8-0wE" id="er9-8g-WBX"/> <outlet property="webView" destination="Kgb-Eb-ct0" id="fm8-z2-a1y"/> @@ -33,7 +32,7 @@ <rect key="frame" x="0.0" y="59" width="393" height="674"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="neQ-Hk-azv"> <rect key="frame" x="0.0" y="0.0" width="393" height="556.33333333333337"/> <rect key="frame" x="0.0" y="0.0" width="393" height="457.66666666666669"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="svJ-l8-0wE"> <rect key="frame" x="0.0" y="0.0" width="393" height="221.66666666666666"/> @@ -43,7 +42,7 @@ </constraints> </view> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="Tsv-eq-RRP"> <rect key="frame" x="0.0" y="221.66666666666669" width="393" height="234.66666666666669"/> <rect key="frame" x="0.0" y="221.66666666666669" width="393" height="136"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MRq-zG-DKW"> <rect key="frame" x="0.0" y="0.0" width="393" height="53"/> @@ -83,52 +82,11 @@ <constraint firstItem="H5g-yH-jhe" firstAttribute="leading" secondItem="MRq-zG-DKW" secondAttribute="leading" constant="13" id="yvM-jx-xyh"/> </constraints> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="l89-wo-ZXq"> <rect key="frame" x="0.0" y="53.000000000000007" width="393" height="98.666666666666686"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8Dk-bv-8cZ"> <rect key="frame" x="13" y="97.666666666666629" width="380" height="1"/> <color key="backgroundColor" red="0.59215686270000001" green="0.59215686270000001" blue="0.59215686270000001" alpha="0.22" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="height" constant="1" id="SQf-IX-8EA"/> </constraints> </view> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="使用说明" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="exf-iq-DtT"> <rect key="frame" x="14" y="14" width="365" height="22"/> <constraints> <constraint firstAttribute="height" constant="22" id="jXo-GP-OTd"/> </constraints> <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1231231123123112312311231231123123112312311231231123123112312311231231" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="R3I-hK-J6L"> <rect key="frame" x="14" y="48" width="365" height="33.666666666666657"/> <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="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstItem="R3I-hK-J6L" firstAttribute="leading" secondItem="l89-wo-ZXq" secondAttribute="leading" constant="14" id="2tZ-L3-KEG"/> <constraint firstAttribute="trailing" secondItem="8Dk-bv-8cZ" secondAttribute="trailing" id="7sS-N4-THQ"/> <constraint firstAttribute="trailing" secondItem="exf-iq-DtT" secondAttribute="trailing" constant="14" id="Alj-jO-gTb"/> <constraint firstItem="8Dk-bv-8cZ" firstAttribute="leading" secondItem="l89-wo-ZXq" secondAttribute="leading" constant="13" id="B4r-L0-9Dl"/> <constraint firstAttribute="trailing" secondItem="R3I-hK-J6L" secondAttribute="trailing" constant="14" id="Jq8-jw-zmI"/> <constraint firstItem="exf-iq-DtT" firstAttribute="leading" secondItem="l89-wo-ZXq" secondAttribute="leading" constant="14" id="VYy-i4-uS0"/> <constraint firstItem="exf-iq-DtT" firstAttribute="top" secondItem="l89-wo-ZXq" secondAttribute="top" constant="14" id="W01-AY-2LT"/> <constraint firstItem="8Dk-bv-8cZ" firstAttribute="top" secondItem="R3I-hK-J6L" secondAttribute="bottom" constant="16" id="ajg-ew-Cuh"/> <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="53" id="jay-oI-x2J"/> <constraint firstItem="R3I-hK-J6L" firstAttribute="top" secondItem="exf-iq-DtT" secondAttribute="bottom" constant="12" id="sVF-6S-uzt"/> <constraint firstAttribute="bottom" secondItem="8Dk-bv-8cZ" secondAttribute="bottom" id="vc7-om-CzV"/> </constraints> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HXu-4C-sU8"> <rect key="frame" x="0.0" y="151.66666666666663" width="393" height="83"/> <rect key="frame" x="0.0" y="53" width="393" height="83"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uvP-gJ-d1J"> <rect key="frame" x="13" y="82.000000000000057" width="380" height="1"/> <rect key="frame" x="13" y="82" width="380" height="1"/> <color key="backgroundColor" red="0.59215686270000001" green="0.59215686270000001" blue="0.59215686270000001" alpha="0.22" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="height" constant="1" id="ecK-aa-VGv"/> @@ -168,7 +126,7 @@ </subviews> </stackView> <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kgb-Eb-ct0"> <rect key="frame" x="0.0" y="456.33333333333337" width="393" height="100"/> <rect key="frame" x="0.0" y="357.66666666666669" width="393" height="100"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <constraints> <constraint firstAttribute="height" constant="100" id="mNq-vI-2Xl"/> WanPai/Root/CardCenter/VC/CardCenterVC.swift
@@ -18,6 +18,14 @@ private var page:Int = 1 private var model:HuiminCardModel? // private var currentStuCode:HuiminCardItemModel? private var cacheSet = [IndexPath:HuiminCardStuModel]() private var view_BgGradView:UIView = { let bgView = UIView() return bgView }() override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if let storeStr = UserDefaults.standard.object(forKey: "CurrentStore") as? String{ @@ -35,6 +43,7 @@ override func viewDidLoad() { super.viewDidLoad() title = "惠民卡" view.backgroundColor = .clear } override func setRx() { @@ -45,8 +54,17 @@ private func getData(){ page = 1 Services.getHuiminAgreementAndList(page: page, storeId: sotreId!).subscribe(onNext: {data in guard let s = sotreId else {return} Services.getHuiminAgreementAndList(page: page, storeId: s).subscribe(onNext: {[unowned self]data in self.model = data.data // for v in data.data?.cardList ?? []{ // if !(v.qrCode?.isEmpty ?? true){ // self.currentStuCode = v;break // } // } if data.data?.showType == 2{ self.webView.isHidden = true self.tableView.reloadData() @@ -65,11 +83,21 @@ override func setUI() { view.addSubview(view_BgGradView) view_BgGradView.snp.makeConstraints { make in make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top) make.left.right.equalToSuperview() make.height.equalTo(400) } tableView = UITableView(frame: .zero, style: .plain) tableView.showsVerticalScrollIndicator = false tableView.separatorStyle = .none tableView.backgroundColor = .clear tableView.contentInset = UIEdgeInsets(top: 31, left: 0, bottom: 0, right: 0) tableView.register(UINib(nibName: "CardCenterTCell", bundle: nil), forCellReuseIdentifier: "_CardCenterTCell") tableView.register(UINib(nibName: "CardCenterTopQRCodeTCell", bundle: nil), forCellReuseIdentifier: "_CardCenterTopQRCodeTCell") tableView.delegate = self tableView.dataSource = self @@ -85,11 +113,16 @@ webView.snp.makeConstraints { make in make.edges.equalToSuperview() } let colors = [UIColor(hexStr: "#FD7202").cgColor, UIColor.white.cgColor,] view_BgGradView.jq_gradientColor(colorArr: colors, cornerRadius: 0, startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 1), bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW, height: 400), locations: nil, clear: false) } } extension CardCenterVC:UITableViewDelegate{ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { guard indexPath.section == 1 else {return} let model = model!.cardList[indexPath.row] let vc = CardCenterDetailVC(id:model.id,storeId: sotreId!) push(vc: vc) @@ -98,17 +131,55 @@ extension CardCenterVC:UITableViewDataSource{ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if section == 0{ return model?.cardList.count ?? 0 } return model?.cardList.count ?? 0 } func numberOfSections(in tableView: UITableView) -> Int { return 2 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let model = model!.cardList[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "_CardCenterTCell") as! CardCenterTCell cell.setHuiminCardItemModel(model) return cell if indexPath.section == 0{ let cell = tableView.dequeueReusableCell(withIdentifier: "_CardCenterTopQRCodeTCell") as! CardCenterTopQRCodeTCell cell.indexPath = indexPath cell.setModel(model!.cardList[indexPath.row],cache: cacheSet[indexPath]) cell.studentListClouse { list, index in CommonAlertSheetView.show(items: list.map({$0.name})) {[unowned self] i in if let m = model?.cardList[indexPath.row]{ Services.getQRCodeByStuId(cardId: m.id, studentId: list[i].id).subscribe(onNext: {data in self.cacheSet[indexPath] = data.data self.tableView.reloadRows(at: [indexPath], with: .automatic) }).disposed(by: self.disposeBag) } } } return cell } if indexPath.section == 1{ let model = model!.cardList[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "_CardCenterTCell") as! CardCenterTCell cell.setHuiminCardItemModel(model) return cell } return UITableViewCell() } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return (JQ_ScreenW - 40) * 0.4841 + 20 if indexPath.section == 0{ let m = model?.cardList[indexPath.row] if m?.qrCode?.isEmpty ?? true{ return 0 } return 480 }else{ return (JQ_ScreenW - 40) * 0.4841 + 20 } } } WanPai/Root/CardCenter/View/CardCenterSheetView.xib
@@ -101,10 +101,10 @@ <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t1u-Um-DQ1" customClass="QMUIButton"> <rect key="frame" x="306" y="76" width="72" height="17"/> <rect key="frame" x="223" y="76" width="155" height="17"/> <fontDescription key="fontDescription" type="system" pointSize="14"/> <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> <state key="normal" title="添加人员" image="btn_add_1"> <state key="normal" title="添加或绑定新的使用者" image="btn_add_1"> <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.56999999999999995" colorSpace="custom" customColorSpace="sRGB"/> </state> <connections> WanPai/Root/Other/View/StudentChoose3View.xib
@@ -48,13 +48,13 @@ </connections> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DSm-33-mVo" customClass="QMUIButton"> <rect key="frame" x="306" y="23" width="72" height="25"/> <rect key="frame" x="223" y="23" width="155" height="25"/> <constraints> <constraint firstAttribute="height" constant="25" id="B2b-1b-rhb"/> </constraints> <fontDescription key="fontDescription" type="system" pointSize="14"/> <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> <state key="normal" title="添加人员" image="btn_add_1"> <state key="normal" title="添加或绑定新的使用者" image="btn_add_1"> <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.56999999999999995" colorSpace="custom" customColorSpace="sRGB"/> </state> <connections> WanPai/Root/Search/VC/MyCardItemVC.swift
@@ -11,6 +11,7 @@ import Combine class MyCardItemVC: BaseVC { @IBOutlet weak var label_item_title: UILabel! @IBOutlet weak var label_time: UILabel! @IBOutlet weak var imgCode: UIImageView! @IBOutlet weak var webView: WKWebView! @@ -35,6 +36,9 @@ Services.myHuiminCardDetail(id: id).subscribe(onNext: {data in if let m = data.data{ let names = m.studentList.map({$0.name}).joined(separator: ",") self.label_item_title.text = String(format: "%@的玩湃惠民卡入场二维码", names) self.label_time.attributedText = AttributedStringbuilder.build().add(string: "该卡有效期至 ", withFont: .systemFont(ofSize: 16, weight: .medium), withColor: .black) .add(string: m.endTime, withFont: .systemFont(ofSize: 16), withColor: UIColor(hexString: "#ff7300")!).mutableAttributedString @@ -46,7 +50,7 @@ } override func setUI() { view.backgroundColor = UIColor(hexStr: "#F5F5F5") view.backgroundColor = UIColor.white view_container.jq_cornerRadius = 10 let colors = [UIColor(hexStr: "#FD7202").cgColor, UIColor.white.cgColor,] @@ -58,4 +62,7 @@ self.cons_web_hei.constant = size.height }.store(in: &subscriptions) } @IBAction func backAction(_ sender: UIButton) { navigationController?.popViewController() } } WanPai/Root/Search/VC/MyCardItemVC.xib
@@ -13,6 +13,7 @@ <connections> <outlet property="cons_web_hei" destination="MNE-uE-3VM" id="Q7H-jh-Lmv"/> <outlet property="imgCode" destination="oxM-V6-RBZ" id="aBd-Lj-ob4"/> <outlet property="label_item_title" destination="lgX-3Z-YWn" id="4RZ-i3-hg2"/> <outlet property="label_time" destination="kZR-m1-pa5" id="nVr-pY-xR6"/> <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> <outlet property="view_bg_grand" destination="6b1-tx-BuI" id="Yt5-XV-lDr"/> @@ -36,10 +37,10 @@ <rect key="frame" x="0.0" y="59" width="393" height="759"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5Md-qP-As0"> <rect key="frame" x="0.0" y="0.0" width="393" height="465"/> <rect key="frame" x="0.0" y="0.0" width="393" height="494.66666666666669"/> <subviews> <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rz3-cG-W2c"> <rect key="frame" x="0.0" y="365" width="393" height="100"/> <rect key="frame" x="0.0" y="394.66666666666669" width="393" height="100"/> <constraints> <constraint firstAttribute="height" constant="100" id="MNE-uE-3VM"/> </constraints> @@ -49,37 +50,49 @@ </wkWebViewConfiguration> </wkWebView> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="p5w-FE-4ga"> <rect key="frame" x="15" y="20" width="363" height="345"/> <rect key="frame" x="15" y="20" width="363" height="374.66666666666669"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您的玩湃惠民卡入场二维码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lgX-3Z-YWn"> <rect key="frame" x="74.333333333333329" y="20" width="214.33333333333337" height="21.666666666666671"/> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您的玩湃惠民卡入场二维码" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lgX-3Z-YWn"> <rect key="frame" x="20" y="20" width="323" height="21.666666666666671"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="oxM-V6-RBZ"> <rect key="frame" x="81.666666666666686" y="61.666666666666657" width="200" height="199.99999999999997"/> <rect key="frame" x="81.666666666666686" y="91.666666666666657" width="200" height="199.99999999999997"/> <constraints> <constraint firstAttribute="height" constant="200" id="T4E-zx-rdu"/> <constraint firstAttribute="width" constant="200" id="fwC-Hx-uzO"/> </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="kZR-m1-pa5"> <rect key="frame" x="175" y="281.66666666666669" width="13" height="17"/> <rect key="frame" x="175" y="311.66666666666669" width="13" 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> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tyy-Fl-vSU"> <rect key="frame" x="127.33333333333334" y="51.666666666666657" width="108.33333333333334" height="35"/> <state key="normal" title="Button"/> <buttonConfiguration key="configuration" style="tinted" title="切换使用者"/> <connections> <action selector="backAction:" destination="-1" eventType="touchUpInside" id="Fsa-NZ-Rc1"/> </connections> </button> </subviews> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstAttribute="bottom" secondItem="kZR-m1-pa5" secondAttribute="bottom" constant="46" id="BR3-3p-pgg"/> <constraint firstItem="Tyy-Fl-vSU" firstAttribute="top" secondItem="lgX-3Z-YWn" secondAttribute="bottom" constant="10" id="CFK-39-TRK"/> <constraint firstItem="kZR-m1-pa5" firstAttribute="top" secondItem="oxM-V6-RBZ" secondAttribute="bottom" constant="20" id="CU7-Sr-fHt"/> <constraint firstItem="oxM-V6-RBZ" firstAttribute="centerX" secondItem="p5w-FE-4ga" secondAttribute="centerX" id="J0X-rk-fWA"/> <constraint firstItem="kZR-m1-pa5" firstAttribute="centerX" secondItem="p5w-FE-4ga" secondAttribute="centerX" id="MPg-jJ-Jii"/> <constraint firstAttribute="width" secondItem="p5w-FE-4ga" secondAttribute="height" multiplier="1:0.95" id="RXn-EL-vpD"/> <constraint firstItem="oxM-V6-RBZ" firstAttribute="top" secondItem="lgX-3Z-YWn" secondAttribute="bottom" constant="20" id="lf1-cD-09i"/> <constraint firstAttribute="trailing" secondItem="lgX-3Z-YWn" secondAttribute="trailing" constant="20" id="cVY-4S-sK0"/> <constraint firstItem="lgX-3Z-YWn" firstAttribute="leading" secondItem="p5w-FE-4ga" secondAttribute="leading" constant="20" id="iMQ-re-gby"/> <constraint firstItem="oxM-V6-RBZ" firstAttribute="top" secondItem="lgX-3Z-YWn" secondAttribute="bottom" constant="50" id="lf1-cD-09i"/> <constraint firstItem="lgX-3Z-YWn" firstAttribute="centerX" secondItem="p5w-FE-4ga" secondAttribute="centerX" id="mwq-Im-LMk"/> <constraint firstItem="lgX-3Z-YWn" firstAttribute="top" secondItem="p5w-FE-4ga" secondAttribute="top" constant="20" id="tIk-Kd-ufU"/> <constraint firstItem="Tyy-Fl-vSU" firstAttribute="centerX" secondItem="lgX-3Z-YWn" secondAttribute="centerX" id="vYL-P0-VFq"/> </constraints> </view> </subviews>