ingMaskIntoConstraints="NO" id="0O4-xB-jPJ"> 257
+                                                <rect key="frame" x="16" y="8" width="32" height="32"/>
258
+                                            </imageView>
259
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="给我评分" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JAf-2j-KJO">
260
+                                                <rect key="frame" x="62" y="14" width="66" height="20"/>
261
+                                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
262
+                                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
263
+                                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
264
+                                                <nil key="highlightedColor"/>
265
+                                            </label>
266
+                                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="列表箭头" translatesAutoresizingMaskIntoConstraints="NO" id="vLw-Zd-Mis">
267
+                                                <rect key="frame" x="349" y="6" width="24" height="36"/>
268
+                                            </imageView>
269
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FIE-jb-ZGu">
270
+                                                <rect key="frame" x="0.0" y="0.0" width="383" height="48"/>
271
+                                            </button>
272
+                                        </subviews>
273
+                                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
315 274
                                         <constraints>
316
-                                            <constraint firstAttribute="height" constant="0.5" id="A4X-Nh-oXs"/>
275
+                                            <constraint firstItem="vLw-Zd-Mis" firstAttribute="centerY" secondItem="EVY-h5-0pO" secondAttribute="centerY" id="1E7-1z-kZ7"/>
276
+                                            <constraint firstItem="0O4-xB-jPJ" firstAttribute="centerY" secondItem="EVY-h5-0pO" secondAttribute="centerY" id="ALT-hh-MTM"/>
277
+                                            <constraint firstItem="FIE-jb-ZGu" firstAttribute="leading" secondItem="EVY-h5-0pO" secondAttribute="leading" id="D6N-Si-qSV"/>
278
+                                            <constraint firstItem="JAf-2j-KJO" firstAttribute="centerY" secondItem="EVY-h5-0pO" secondAttribute="centerY" id="KPu-br-EtQ"/>
279
+                                            <constraint firstItem="FIE-jb-ZGu" firstAttribute="top" secondItem="EVY-h5-0pO" secondAttribute="top" id="b5a-HR-UrD"/>
280
+                                            <constraint firstItem="0O4-xB-jPJ" firstAttribute="leading" secondItem="EVY-h5-0pO" secondAttribute="leading" constant="16" id="cMg-7o-zGG"/>
281
+                                            <constraint firstAttribute="trailing" secondItem="vLw-Zd-Mis" secondAttribute="trailing" constant="10" id="dMD-tt-A3K"/>
282
+                                            <constraint firstAttribute="height" constant="48" id="fsu-NH-yPo"/>
283
+                                            <constraint firstAttribute="bottom" secondItem="FIE-jb-ZGu" secondAttribute="bottom" id="jvn-QK-tPP"/>
284
+                                            <constraint firstAttribute="trailing" secondItem="FIE-jb-ZGu" secondAttribute="trailing" id="rKv-jZ-8C3"/>
285
+                                            <constraint firstItem="JAf-2j-KJO" firstAttribute="leading" secondItem="0O4-xB-jPJ" secondAttribute="trailing" constant="14" id="zGg-au-jbn"/>
317 286
                                         </constraints>
318 287
                                     </view>
319
-                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8wT-3F-YEB">
320
-                                        <rect key="frame" x="62" y="47.5" width="321" height="0.5"/>
321
-                                        <color key="backgroundColor" red="0.90588235289999997" green="0.90588235289999997" blue="0.90588235289999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
288
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hN9-6g-QCB" userLabel="User Agreement View">
289
+                                        <rect key="frame" x="0.0" y="96" width="383" height="48"/>
290
+                                        <subviews>
291
+                                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="about-userAgreement" translatesAutoresizingMaskIntoConstraints="NO" id="u6G-8X-fqc">
292
+                                                <rect key="frame" x="16" y="8" width="32" height="32"/>
293
+                                            </imageView>
294
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="用户协议" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="COm-64-2lk">
295
+                                                <rect key="frame" x="62" y="14" width="66" height="20"/>
296
+                                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
297
+                                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
298
+                                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
299
+                                                <nil key="highlightedColor"/>
300
+                                            </label>
301
+                                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="列表箭头" translatesAutoresizingMaskIntoConstraints="NO" id="mhJ-Uj-tdj">
302
+                                                <rect key="frame" x="349" y="6" width="24" height="36"/>
303
+                                            </imageView>
304
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VGv-oO-leT">
305
+                                                <rect key="frame" x="0.0" y="0.0" width="383" height="48"/>
306
+                                            </button>
307
+                                        </subviews>
308
+                                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
322 309
                                         <constraints>
323
-                                            <constraint firstAttribute="height" constant="0.5" id="z9x-v3-pPw"/>
310
+                                            <constraint firstAttribute="bottom" secondItem="VGv-oO-leT" secondAttribute="bottom" id="0aT-Bt-dMd"/>
311
+                                            <constraint firstItem="u6G-8X-fqc" firstAttribute="leading" secondItem="hN9-6g-QCB" secondAttribute="leading" constant="16" id="624-Sr-wFs"/>
312
+                                            <constraint firstAttribute="trailing" secondItem="mhJ-Uj-tdj" secondAttribute="trailing" constant="10" id="EuA-km-rpD"/>
313
+                                            <constraint firstItem="VGv-oO-leT" firstAttribute="leading" secondItem="hN9-6g-QCB" secondAttribute="leading" id="OEU-mG-OlU"/>
314
+                                            <constraint firstAttribute="height" constant="48" id="OcV-Pt-Pdy"/>
315
+                                            <constraint firstAttribute="trailing" secondItem="VGv-oO-leT" secondAttribute="trailing" id="RGF-b4-y2h"/>
316
+                                            <constraint firstItem="COm-64-2lk" firstAttribute="centerY" secondItem="hN9-6g-QCB" secondAttribute="centerY" id="Uku-vk-bBm"/>
317
+                                            <constraint firstItem="COm-64-2lk" firstAttribute="leading" secondItem="u6G-8X-fqc" secondAttribute="trailing" constant="14" id="k2Q-Gl-cvs"/>
318
+                                            <constraint firstItem="u6G-8X-fqc" firstAttribute="centerY" secondItem="hN9-6g-QCB" secondAttribute="centerY" id="mCV-Uh-zpC"/>
319
+                                            <constraint firstItem="VGv-oO-leT" firstAttribute="top" secondItem="hN9-6g-QCB" secondAttribute="top" id="quD-eC-apC"/>
320
+                                            <constraint firstItem="mhJ-Uj-tdj" firstAttribute="centerY" secondItem="hN9-6g-QCB" secondAttribute="centerY" id="z8z-9u-ZAm"/>
324 321
                                         </constraints>
325 322
                                     </view>
326 323
                                 </subviews>
327 324
                                 <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94117647059999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
328 325
                                 <constraints>
329
-                                    <constraint firstItem="8wT-3F-YEB" firstAttribute="bottom" secondItem="bc2-xm-kqy" secondAttribute="bottom" id="65g-jn-hcT"/>
330
-                                    <constraint firstAttribute="trailing" secondItem="8wT-3F-YEB" secondAttribute="trailing" id="6JQ-JS-Ip1"/>
331
-                                    <constraint firstItem="Nm2-xx-B3w" firstAttribute="leading" secondItem="kL5-iA-2wt" secondAttribute="leading" constant="16" id="84L-jD-Pw8"/>
332
-                                    <constraint firstItem="u4d-zF-dTA" firstAttribute="trailing" secondItem="kL5-iA-2wt" secondAttribute="trailing" constant="-10" id="COq-GW-r7X"/>
333
-                                    <constraint firstItem="CK4-vq-4yz" firstAttribute="centerY" secondItem="ibz-oi-jAe" secondAttribute="centerY" id="CjC-5P-Asn"/>
334
-                                    <constraint firstItem="CYk-cu-pHl" firstAttribute="centerY" secondItem="pVB-Uy-xXH" secondAttribute="centerY" id="Dls-Sb-Shh"/>
335
-                                    <constraint firstAttribute="trailing" secondItem="UVV-rB-BFU" secondAttribute="trailing" id="GMD-4v-LKH"/>
336
-                                    <constraint firstItem="kL5-iA-2wt" firstAttribute="top" secondItem="bc2-xm-kqy" secondAttribute="bottom" id="HFK-QN-Bvm"/>
337
-                                    <constraint firstItem="kxq-PT-sYi" firstAttribute="centerY" secondItem="CK4-vq-4yz" secondAttribute="centerY" id="Heg-aa-ECd"/>
338
-                                    <constraint firstItem="u4d-zF-dTA" firstAttribute="centerY" secondItem="kL5-iA-2wt" secondAttribute="centerY" id="Iak-6n-Gud"/>
339
-                                    <constraint firstItem="kL5-iA-2wt" firstAttribute="leading" secondItem="bjC-jQ-LOw" secondAttribute="leading" id="Jgh-wt-u9c"/>
340
-                                    <constraint firstAttribute="trailing" secondItem="kL5-iA-2wt" secondAttribute="trailing" id="Jwz-vj-QMP"/>
341
-                                    <constraint firstItem="bc2-xm-kqy" firstAttribute="leading" secondItem="bjC-jQ-LOw" secondAttribute="leading" id="NOF-oM-tG3"/>
342
-                                    <constraint firstAttribute="trailing" secondItem="ibz-oi-jAe" secondAttribute="trailing" id="Nuv-y4-nkd"/>
343
-                                    <constraint firstItem="UVV-rB-BFU" firstAttribute="bottom" secondItem="kL5-iA-2wt" secondAttribute="bottom" id="OtG-7N-4wa"/>
344
-                                    <constraint firstItem="UVV-rB-BFU" firstAttribute="leading" secondItem="Sh6-Re-Ry3" secondAttribute="leading" id="Pdb-aN-6A1"/>
345
-                                    <constraint firstItem="bc2-xm-kqy" firstAttribute="top" secondItem="bjC-jQ-LOw" secondAttribute="top" id="VaL-tC-Yca"/>
346
-                                    <constraint firstItem="pVB-Uy-xXH" firstAttribute="leading" secondItem="bc2-xm-kqy" secondAttribute="leading" constant="16" id="ZJr-HC-Ewa"/>
347
-                                    <constraint firstItem="pVB-Uy-xXH" firstAttribute="centerY" secondItem="bc2-xm-kqy" secondAttribute="centerY" id="bb6-Xu-bu5"/>
348
-                                    <constraint firstItem="YSe-Bt-0NL" firstAttribute="trailing" secondItem="ibz-oi-jAe" secondAttribute="trailing" constant="-10" id="blI-SI-Sre"/>
349
-                                    <constraint firstItem="ibz-oi-jAe" firstAttribute="top" secondItem="kL5-iA-2wt" secondAttribute="bottom" id="gpD-T1-aQn"/>
350
-                                    <constraint firstItem="MgR-ta-3jg" firstAttribute="centerY" secondItem="bc2-xm-kqy" secondAttribute="centerY" id="hhY-tM-Yro"/>
351
-                                    <constraint firstItem="ibz-oi-jAe" firstAttribute="leading" secondItem="bjC-jQ-LOw" secondAttribute="leading" id="hko-xh-GEk"/>
352
-                                    <constraint firstAttribute="trailing" secondItem="bc2-xm-kqy" secondAttribute="trailing" id="j9a-UG-jWX"/>
353
-                                    <constraint firstItem="Sh6-Re-Ry3" firstAttribute="leading" secondItem="Nm2-xx-B3w" secondAttribute="trailing" constant="14" id="jaA-Ms-RwN"/>
354
-                                    <constraint firstItem="8wT-3F-YEB" firstAttribute="leading" secondItem="CYk-cu-pHl" secondAttribute="leading" id="neI-9C-tLD"/>
355
-                                    <constraint firstItem="CK4-vq-4yz" firstAttribute="leading" secondItem="ibz-oi-jAe" secondAttribute="leading" constant="16" id="owu-tC-JjZ"/>
356
-                                    <constraint firstItem="CYk-cu-pHl" firstAttribute="leading" secondItem="pVB-Uy-xXH" secondAttribute="trailing" constant="14" id="rAe-Y2-twj"/>
357
-                                    <constraint firstItem="YSe-Bt-0NL" firstAttribute="centerY" secondItem="ibz-oi-jAe" secondAttribute="centerY" id="rIX-lQ-ZRW"/>
358
-                                    <constraint firstItem="MgR-ta-3jg" firstAttribute="trailing" secondItem="bc2-xm-kqy" secondAttribute="trailing" constant="-10" id="rej-aa-eUr"/>
359
-                                    <constraint firstItem="Sh6-Re-Ry3" firstAttribute="centerY" secondItem="Nm2-xx-B3w" secondAttribute="centerY" id="ubQ-U7-gLQ"/>
360
-                                    <constraint firstItem="Nm2-xx-B3w" firstAttribute="centerY" secondItem="kL5-iA-2wt" secondAttribute="centerY" id="vGp-DO-BSU"/>
361
-                                    <constraint firstItem="kxq-PT-sYi" firstAttribute="leading" secondItem="CK4-vq-4yz" secondAttribute="trailing" constant="14" id="x9l-O0-sX8"/>
326
+                                    <constraint firstItem="mae-VW-ed0" firstAttribute="leading" secondItem="bjC-jQ-LOw" secondAttribute="leading" id="25m-1u-PlX"/>
327
+                                    <constraint firstAttribute="trailing" secondItem="EVY-h5-0pO" secondAttribute="trailing" id="Cl6-If-4fD"/>
328
+                                    <constraint firstItem="EVY-h5-0pO" firstAttribute="leading" secondItem="bjC-jQ-LOw" secondAttribute="leading" id="Cmx-5f-fSM"/>
329
+                                    <constraint firstItem="EVY-h5-0pO" firstAttribute="top" secondItem="mae-VW-ed0" secondAttribute="bottom" id="Kg3-vC-Ohr"/>
330
+                                    <constraint firstAttribute="trailing" secondItem="mae-VW-ed0" secondAttribute="trailing" id="Qtq-6O-uU3"/>
331
+                                    <constraint firstItem="hN9-6g-QCB" firstAttribute="top" secondItem="EVY-h5-0pO" secondAttribute="bottom" id="SCp-cp-eDW"/>
332
+                                    <constraint firstItem="hN9-6g-QCB" firstAttribute="leading" secondItem="bjC-jQ-LOw" secondAttribute="leading" id="Ufj-Mi-XEY"/>
333
+                                    <constraint firstAttribute="trailing" secondItem="hN9-6g-QCB" secondAttribute="trailing" id="YLN-9T-LED"/>
334
+                                    <constraint firstItem="mae-VW-ed0" firstAttribute="top" secondItem="bjC-jQ-LOw" secondAttribute="top" id="qXw-XK-Fq0"/>
362 335
                                 </constraints>
363 336
                             </view>
337
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Copyright@pai.ai" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="inH-WZ-fdD">
338
+                                <rect key="frame" x="146.5" y="649" width="82" height="12"/>
339
+                                <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94117647059999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
340
+                                <fontDescription key="fontDescription" type="system" pointSize="10"/>
341
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
342
+                                <nil key="highlightedColor"/>
343
+                            </label>
344
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="版本:1.0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bEV-QT-Egq">
345
+                                <rect key="frame" x="161" y="628.5" width="53" height="14.5"/>
346
+                                <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94117647059999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
347
+                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
348
+                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
349
+                                <nil key="highlightedColor"/>
350
+                            </label>
364 351
                         </subviews>
365 352
                         <color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
366 353
                         <constraints>
367 354
                             <constraint firstItem="bjC-jQ-LOw" firstAttribute="leading" secondItem="gzV-sh-iNN" secondAttribute="leadingMargin" constant="-20" id="4XL-Mn-Bda"/>
368 355
                             <constraint firstAttribute="bottom" secondItem="bjC-jQ-LOw" secondAttribute="bottom" id="7cS-3o-xis"/>
369 356
                             <constraint firstItem="bjC-jQ-LOw" firstAttribute="centerX" secondItem="szY-tb-XAT" secondAttribute="centerX" id="B1z-7x-Vdk"/>
357
+                            <constraint firstItem="inH-WZ-fdD" firstAttribute="centerX" secondItem="gzV-sh-iNN" secondAttribute="centerX" id="BGs-5i-uoA"/>
358
+                            <constraint firstItem="bEV-QT-Egq" firstAttribute="centerX" secondItem="gzV-sh-iNN" secondAttribute="centerX" id="CGs-tu-a6G"/>
359
+                            <constraint firstItem="szY-tb-XAT" firstAttribute="bottom" secondItem="inH-WZ-fdD" secondAttribute="bottom" constant="6" id="XIG-RN-kfd"/>
370 360
                             <constraint firstItem="bjC-jQ-LOw" firstAttribute="top" secondItem="Str-BX-Lky" secondAttribute="bottom" id="dKZ-iN-vPM"/>
371 361
                             <constraint firstItem="szY-tb-XAT" firstAttribute="trailing" secondItem="Str-BX-Lky" secondAttribute="trailing" id="fpg-jU-lLU"/>
362
+                            <constraint firstItem="inH-WZ-fdD" firstAttribute="top" secondItem="bEV-QT-Egq" secondAttribute="bottom" constant="6" id="gQZ-xs-1i5"/>
372 363
                             <constraint firstItem="Str-BX-Lky" firstAttribute="top" secondItem="szY-tb-XAT" secondAttribute="top" id="n5h-V7-STS"/>
373 364
                             <constraint firstAttribute="trailingMargin" secondItem="bjC-jQ-LOw" secondAttribute="trailing" constant="-20" id="wJd-7K-65L"/>
374 365
                             <constraint firstItem="Str-BX-Lky" firstAttribute="leading" secondItem="szY-tb-XAT" secondAttribute="leading" id="x2e-5M-bfE"/>
@@ -377,14 +368,15 @@
377 368
                     </view>
378 369
                     <navigationItem key="navigationItem" id="plF-EP-Z5g"/>
379 370
                     <connections>
380
-                        <outlet property="scoreBtn" destination="kL5-iA-2wt" id="zao-TW-Rnn"/>
381
-                        <outlet property="scoreLabel" destination="Sh6-Re-Ry3" id="hBp-gS-PEs"/>
371
+                        <outlet property="contactUsBtn" destination="L1g-sb-a5F" id="t0g-Wx-dry"/>
372
+                        <outlet property="scoreBtn" destination="FIE-jb-ZGu" id="nmA-Dz-Bwe"/>
373
+                        <outlet property="userAgreementBtn" destination="VGv-oO-leT" id="Dzs-He-hds"/>
382 374
                         <outlet property="versionLabel" destination="bEV-QT-Egq" id="uQ9-IF-ImJ"/>
383 375
                     </connections>
384 376
                 </viewController>
385 377
                 <placeholder placeholderIdentifier="IBFirstResponder" id="i5Y-H4-CYK" userLabel="First Responder" sceneMemberID="firstResponder"/>
386 378
             </objects>
387
-            <point key="canvasLocation" x="144" y="926.53673163418296"/>
379
+            <point key="canvasLocation" x="143.19999999999999" y="926.08695652173924"/>
388 380
         </scene>
389 381
         <!--Mine Order View Controller-->
390 382
         <scene sceneID="3e4-t5-KsN">
@@ -632,10 +624,10 @@
632 624
     </scenes>
633 625
     <resources>
634 626
         <image name="Logo" width="140" height="140"/>
627
+        <image name="about-contactUs" width="32" height="32"/>
628
+        <image name="about-score" width="32" height="32"/>
629
+        <image name="about-userAgreement" width="32" height="32"/>
635 630
         <image name="navigation-background" width="12" height="132"/>
636
-        <image name="关于-用户协议 " width="32" height="32"/>
637
-        <image name="关于-联系我们" width="32" height="32"/>
638
-        <image name="关于-评分" width="32" height="32"/>
639 631
         <image name="列表箭头" width="24" height="36"/>
640 632
         <image name="注销切图" width="32" height="32"/>
641 633
         <image name="默认头像" width="240" height="240"/>

+ 44 - 29
PaiAi/Paiai_iOS/App/Mine/MineAboutViewController.swift

@@ -9,51 +9,66 @@
9 9
 import UIKit
10 10
 import PaiaiDataKit
11 11
 import PaiaiUIKit
12
+import RxSwift
12 13
 
13
-struct AboutWebModel {
14
-    
15
-}
16 14
 
17 15
 final class MineAboutViewController: UIViewController {
18 16
 
19
-    // MARK: Storyboard property
20
-    @IBOutlet var versionLabel: UILabel!
17
+    @IBOutlet weak var contactUsBtn: UIButton!
21 18
     @IBOutlet weak var scoreBtn: UIButton!
22
-    @IBOutlet weak var scoreLabel: UILabel!
23
-
19
+    @IBOutlet weak var userAgreementBtn: UIButton!
20
+    @IBOutlet var versionLabel: UILabel!
21
+    
22
+    private var disposeBag = DisposeBag()
23
+    
24 24
     // MARK: view function
25 25
     override func viewDidLoad() {
26 26
         super.viewDidLoad()
27
-
27
+        
28 28
 //        scoreLabel.text = UserDefaults.Account.bool(forKey: .isAudit) ? "敬请期待" : "给我评分"
29 29
 //        scoreBtn.isEnabled = !(UserDefaults.Account.bool(forKey: .isAudit))
30
+        title = "关于"
30 31
         versionLabel.text = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
32
+        bindGestures()
31 33
     }
34
+}
32 35
 
33
-    override func viewWillAppear(_ animated: Bool) {
34
-        super.viewWillAppear(true)
35
-//        titleWithbackBar = "关于"
36
+fileprivate extension MineAboutViewController {
37
+    func bindGestures() {
38
+        bindGestureToContactUsAction()
39
+        bindGestureToScoreAction()
40
+        bindGestureToUserAgreementAction()
36 41
     }
37
-
38
-    // MARK: Storyboard  button function
39
-    @IBAction func giveFen() {
40
-        guard let url = URL(string: "https://itunes.apple.com/cn/app/pai-aipaiai/id1163960351?mt=8") else {
41
-            return
42
-        }
43
-        UIApplication.shared.openURL(url)
42
+    
43
+    func bindGestureToContactUsAction() {
44
+        contactUsBtn.rx.tap
45
+            .asObservable()
46
+            .subscribe { (_) in
47
+                let webVC = WebViewController(title: "联系我们",
48
+                                              path: "https://pai.ai/page/contact_us")
49
+                self.pushViewController(webVC)
50
+            }.disposed(by: disposeBag)
44 51
     }
45
-    @IBAction func contactUs(_ sender: UIButton) {
46
-//        let about = UIStoryboard.mine.instantiateController(AboutWebViewController.self)
47
-//        about.url = "http://xfoto.com.cn/page/contact_us"
48
-//        about.title = "联系我们"
49
-//        navigationController?.pushViewController(about, animated: true)
52
+    
53
+    func bindGestureToScoreAction() {
54
+        scoreBtn.rx.tap
55
+            .asObservable()
56
+            .subscribe { (_) in
57
+                guard let url = URL(string: "https://itunes.apple.com/cn/app/pai-aipaiai/id1163960351?mt=8") else {
58
+                    return
59
+                }
60
+                UIApplication.shared.open(url, options: [:], completionHandler: nil)
61
+            }.disposed(by: disposeBag)
50 62
     }
51
-
52
-    @IBAction func userAgreement(_ sender: UIButton) {
53
-//        let about = UIStoryboard.mine.instantiateController(AboutWebViewController.self)
54
-//        about.url = "http://xfoto.com.cn/page/user_agreement"
55
-//        about.title = "用户协议"
56
-//        navigationController?.pushViewController(about, animated: true)
63
+    
64
+    func bindGestureToUserAgreementAction() {
65
+        userAgreementBtn.rx.tap
66
+            .asObservable()
67
+            .subscribe { (_) in
68
+                let webVC = WebViewController(title: "用户协议",
69
+                                              path: "https://pai.ai/page/user_agreement")
70
+                self.pushViewController(webVC)
71
+            }.disposed(by: disposeBag)
57 72
     }
58 73
 }
59 74
 

+ 5 - 3
PaiAi/Paiai_iOS/App/Mine/MineCoordinator.swift

@@ -13,12 +13,12 @@ import PaiaiUIKit
13 13
 class MineCoordinator: Coordinator {
14 14
     
15 15
     let mineViewController: MineViewController
16
-    let containerViewController: ContainerViewController
16
+    let navigationController: UINavigationController
17 17
 //    let shareUserInfoViewModel
18 18
     
19
-    init(_ mineViewController: MineViewController, containerViewController: ContainerViewController) {
19
+    init(_ mineViewController: MineViewController, containerViewController: UINavigationController) {
20 20
         self.mineViewController = mineViewController
21
-        self.containerViewController = containerViewController
21
+        self.navigationController = navigationController
22 22
         self.mineViewController.delegate = self
23 23
     }
24 24
     
@@ -39,6 +39,7 @@ extension MineCoordinator: MineViewControllerDelegate {
39 39
         switch item {
40 40
         case .group:
41 41
             let vc = makeMineGroupViewController()
42
+            navigationController
42 43
             containerViewController.pushViewController(vc)
43 44
         case .order:
44 45
             let vc = makeMineOrderViewController()
@@ -77,6 +78,7 @@ fileprivate extension MineCoordinator {
77 78
     
78 79
     func makeMineFeedbackViewController() -> MineFeedbackViewController {
79 80
         let vc = UIStoryboard.mine.instantiateController(MineFeedbackViewController.self)
81
+        vc.feedbackAPI = FeedbackRemoteAPI()
80 82
         return vc
81 83
     }
82 84
     

+ 11 - 7
PaiAi/Paiai_iOS/App/Mine/MineFeedbackViewController.swift

@@ -19,20 +19,24 @@ final class MineFeedbackViewController: UIViewController {
19 19
     @IBOutlet var sendBtn: UIButton!
20 20
     fileprivate let disposeBag = DisposeBag()
21 21
     
22
-//    var viewModel: MineFeedbackViewModel!
22
+    var feedbackAPI: FeedbackRemoteAPI!
23
+    
23 24
     // MARK: view function
24 25
     override func viewDidLoad() {
25 26
         super.viewDidLoad()
27
+        title = "意见反馈"
26 28
         textView.placeholder = "您的建议是我们前进的动力"
27
-        configurationRx()
28
-    }
29
-    
30
-    func configurationRx() {
31
-        
29
+        bindTextViewToSendBtn()
32 30
     }
33 31
 
34 32
     @IBAction func sendFeedBack() {
35
-//        viewModel.submit(content)
33
+        feedbackAPI.submit(text: textView.text).subscribe(onCompleted: {[weak self] in
34
+            guard let `self` = self else { return }
35
+            self.popController()
36
+            Toast.show(message: "感谢您的建议")
37
+        }) { (error) in
38
+            
39
+        }.disposed(by: disposeBag)
36 40
     }
37 41
 
38 42
     @IBAction func tap() {

kodo - Gogs: Go Git Service

暫無描述

basic.html 8.8KB

    {% load staticfiles %} <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="format-detection" content="telephone=no,email=no,address=no"> <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <title>{% block title %}{% endblock %}</title> <link href="//cdnjs.cloudflare.com/ajax/libs/pure/0.6.2/pure-min.css" rel="stylesheet"> <link href="//cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/flexslider.min.css" rel="stylesheet"> <link href="//res.wx.qq.com/open/libs/weui/0.4.3/weui.min.css" rel="stylesheet" type="text/css" /> <link href="{% static 'page/css/flexslider.ext.css' %}" rel="stylesheet" type="text/css" /> <link href="{% static 'page/css/weui.ext.css' %}" rel="stylesheet" type="text/css" /> {% block link %}{% endblock %} <style> body { font-family: Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif !important; background: #fff; } img { pointer-events: none; } .clickable { pointer-events: auto; } /* Input 自动填充后,移除 Chrome 默认黄色 */ input:-webkit-autofill { box-shadow: 0 0 0 1000px white inset !important; } .container { padding-bottom: 45px; } .text-center { text-align: center; } .empty { color: #999; padding: .9375rem 0; font-size: .625rem; } .text_ellipsis { overflow:hidden; white-space:nowrap; text-overflow: ellipsis; } .fl { float: left; } .fr { float: right; } .clearfix { zoom: 1; } .clearfix:after { content: "\200B"; display: block; height: 0; clear: both; } </style> {% block tohomecss %} <style> .tohome { width: 40px; height: 40px; background-color: rgba(139, 139, 139, 0.7); position: fixed; right: 10px; bottom: 20px; border-radius: 9999px; border-top-left-radius: 9999px; border-top-right-radius: 9999px; border-bottom-left-radius: 9999px; border-bottom-right-radius: 9999px; z-index: 99999999; } .tohome img { display: block; width: 18px; height: 13px; margin: 6px auto 2px; } .tohome p { color: #ffffff; } </style> {% endblock %} {% block css %}{% endblock %} <script> {% block rem %} //这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作稿最大宽度,例如设计稿为750,最大宽度为750,则为(750,750) !function(e,t){function n(){var n=l.getBoundingClientRect().width;t=t||540,n>t&&(n=t);var i=100*n/e;r.innerHTML="html{font-size:"+i+"px;}"}var i,d=document,o=window,l=d.documentElement,r=document.createElement("style");if(l.firstElementChild)l.firstElementChild.appendChild(r);else{var a=d.createElement("div");a.appendChild(r),d.write(a.innerHTML),a=null}n(),o.addEventListener("resize",function(){clearTimeout(i),i=setTimeout(n,300)},!1),o.addEventListener("pageshow",function(e){e.persisted&&(clearTimeout(i),i=setTimeout(n,300))},!1),"complete"===d.readyState?d.body.style.fontSize="16px":d.addEventListener("DOMContentLoaded",function(e){d.body.style.fontSize="16px"},!1)}(750,750); {% endblock %} </script> </head> <body> {% block somehtml %}{% endblock %} <div class="container"> {% block container %}{% endblock %} {% block tohomehtml %} <div class="tohome"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAMAAABzP0xhAAAAS1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////+DmQsHAAAAGHRSTlMAoHDw+q0VCufg187DuI+OgGJUSDwyKCBlxSbJAAAAi0lEQVQ4y+3SuRKEIBBFUaQbcd+X9/9fOpRDjaXQGJnNiW/SiwpkmXpiW6C16Sav4dR5qtlKHMpNbhaCR4vUTIwfnuKNxoWONR1uunB0g4Cxt9EbRDSXVewVoqr9bNYCgmJV3kwQ0fxtRkYCj8oZ8GBQqieHIWByev9DEPjfeisy+mDk6Dy9/kevRR9/MjHbEpIcQAAAAABJRU5ErkJggg=="> <p style="text-align:center;font-size:8px">回首页</p> </div> {% endblock %} </div> {% block somehtml2 %}{% endblock %} <script> window.onerror = function(errorMessage, scriptURI, lineNo, columnNo, error) { // 构建错误对象 var errorObj = { lineNo: lineNo || null, columnNo: columnNo || null, scriptURI: scriptURI || null, errorMessage: errorMessage || null, stack: error && error.stack ? error.stack : null }; // 构建Http请求 if (XMLHttpRequest) { var xhr = new XMLHttpRequest(); xhr.open('post', '/e/report', true); xhr.setRequestHeader('Content-Type', 'application/json'); // 设置请求头 xhr.send(JSON.stringify(errorObj)); // 发送参数 } } </script> {# <script src="//cdnjs.cloudflare.com/ajax/libs/zepto/1.1.6/zepto.min.js"></script>#} <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/jquery.flexslider-min.js"></script> {% block script %}{% endblock %} <script> // History 压入本地连接 function pushHistory() { var state = { title: "title", url: "#" }; window.history.pushState(state, "title", "#"); } pushHistory(); // 延时监听 setTimeout(function () { // 监听``返回``、``后退``、``上一页`` window.addEventListener("popstate", function (e) { if (confirm("确认退出") == true) { window.history.back(-1); } else { pushHistory(); } }, false); }, 300); </script> <script> {% block glbjs %}{% endblock %} $(function() { /** 格式化输入字符串**/ //用法: "hello{0}".format('world');返回'hello world' String.prototype.format= function(){ var args = arguments; return this.replace(/\{(\d+)\}/g,function(s,i){ return args[i]; }); } {% block flexsliderjs %} // 轮播图 $('.flexslider').flexslider({ slideshowSpeed: 2000, pauseOnHover: true, controlNav: false, directionNav: false, }); {% endblock %} {% block tohomejs %} // 返回首页 $('.tohome').click(function () { window.location.href = '{{ domain }}/page/nav?{{ params|safe }}' }) {% endblock %} {% block js %}{% endblock %} }); </script> <script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/javascript" src="{% static 'machine/js/jswe-1.0.0.js' %}"></script> <script> {# V.initWxData({#} {# imgUrl: '{{ domain }}{% static 'page/img/logo.jpg' %}',#} {# link: 'http://hpsgift.hphcclub.com/we/ws',#} {# desc: '惠普销售红包系统',#} {# title: '惠普销售红包系统',#} {# timeLine: ''#} {# }, true);#} V.hideOptionMenu(); {% block jswe %}{% endblock %} </script> {% block scriptag %}{% endblock %} </body> </html>