Bläddra i källkod

RA Image

为了集成进Redant Mobile 修改了部分类名
Ray Zhang 8 år sedan
förälder
incheckning
be4fef127f

+ 1 - 1
RA Image/BasicViewController.h

@@ -9,7 +9,7 @@
 #import <UIKit/UIKit.h>
 #import "const.h"
 #import "config.h"
-#import "RAINetwork.h"
+#import "RANetwork.h"
 #import "AppDelegate.h"
 #import "RAUtils.h"
 #import "JLKeyboardListener.h"

+ 12 - 12
RA Image/RA Image.xcodeproj/project.pbxproj

@@ -35,7 +35,7 @@
 		42E1B1041EB1CCB200EEF27C /* login.json in Resources */ = {isa = PBXBuildFile; fileRef = 42E1B1031EB1CCB200EEF27C /* login.json */; };
 		42E1B1081EB1D9B100EEF27C /* LoginSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42E1B1071EB1D9B100EEF27C /* LoginSettingViewController.m */; };
 		71114A9D1EB1BCB400D2200C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71114A9C1EB1BCB400D2200C /* LoginViewController.m */; };
-		71114AA31EB1C40900D2200C /* RAINetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 71114AA21EB1C40900D2200C /* RAINetwork.m */; };
+		71114AA31EB1C40900D2200C /* RANetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 71114AA21EB1C40900D2200C /* RANetwork.m */; };
 		71114AA61EB1C50D00D2200C /* RAUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 71114AA51EB1C50D00D2200C /* RAUtils.m */; };
 		71114AB21EB1C5C800D2200C /* AESCrypt.m in Sources */ = {isa = PBXBuildFile; fileRef = 71114AAA1EB1C5C800D2200C /* AESCrypt.m */; };
 		71114AB31EB1C5C800D2200C /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 71114AAB1EB1C5C800D2200C /* LICENSE */; };
@@ -63,7 +63,7 @@
 		71DCDC391EAF234E00BA045A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 71DCDC381EAF234E00BA045A /* main.m */; };
 		71DCDC3C1EAF234E00BA045A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 71DCDC3B1EAF234E00BA045A /* AppDelegate.m */; };
 		71DCDC3F1EAF234E00BA045A /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71DCDC3E1EAF234E00BA045A /* RootViewController.m */; };
-		71DCDC421EAF234E00BA045A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71DCDC401EAF234E00BA045A /* Main.storyboard */; };
+		71DCDC421EAF234E00BA045A /* RAImage.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71DCDC401EAF234E00BA045A /* RAImage.storyboard */; };
 		71DCDC441EAF234E00BA045A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 71DCDC431EAF234E00BA045A /* Assets.xcassets */; };
 		71DCDC471EAF234E00BA045A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71DCDC451EAF234E00BA045A /* LaunchScreen.storyboard */; };
 		71DCDC501EAF353000BA045A /* modelist.json in Resources */ = {isa = PBXBuildFile; fileRef = 71DCDC4F1EAF353000BA045A /* modelist.json */; };
@@ -124,8 +124,8 @@
 		42E1B1071EB1D9B100EEF27C /* LoginSettingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginSettingViewController.m; sourceTree = "<group>"; };
 		71114A9B1EB1BCB400D2200C /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; };
 		71114A9C1EB1BCB400D2200C /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; };
-		71114AA11EB1C40900D2200C /* RAINetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAINetwork.h; sourceTree = "<group>"; };
-		71114AA21EB1C40900D2200C /* RAINetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAINetwork.m; sourceTree = "<group>"; };
+		71114AA11EB1C40900D2200C /* RANetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RANetwork.h; sourceTree = "<group>"; };
+		71114AA21EB1C40900D2200C /* RANetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RANetwork.m; sourceTree = "<group>"; };
 		71114AA41EB1C50D00D2200C /* RAUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAUtils.h; path = "../../RedAnt ERP Mobile/common/RAUtils.h"; sourceTree = "<group>"; };
 		71114AA51EB1C50D00D2200C /* RAUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAUtils.m; path = "../../RedAnt ERP Mobile/common/RAUtils.m"; sourceTree = "<group>"; };
 		71114AA91EB1C5C800D2200C /* AESCrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AESCrypt.h; path = "../../RedAnt ERP Mobile/common/AES/AESCrypt.h"; sourceTree = "<group>"; };
@@ -180,7 +180,7 @@
 		71DCDC3B1EAF234E00BA045A /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
 		71DCDC3D1EAF234E00BA045A /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = "<group>"; };
 		71DCDC3E1EAF234E00BA045A /* RootViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = "<group>"; };
-		71DCDC411EAF234E00BA045A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		71DCDC411EAF234E00BA045A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/RAImage.storyboard; sourceTree = "<group>"; };
 		71DCDC431EAF234E00BA045A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		71DCDC461EAF234E00BA045A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
 		71DCDC481EAF234E00BA045A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -367,8 +367,8 @@
 			children = (
 				71E9F6B21F8B46380052C78E /* NetworkUtils.h */,
 				71E9F6B11F8B46380052C78E /* NetworkUtils.m */,
-				71114AA11EB1C40900D2200C /* RAINetwork.h */,
-				71114AA21EB1C40900D2200C /* RAINetwork.m */,
+				71114AA11EB1C40900D2200C /* RANetwork.h */,
+				71114AA21EB1C40900D2200C /* RANetwork.m */,
 				42F2B9FE1EC041A200AEEA34 /* upload */,
 			);
 			name = Network;
@@ -511,7 +511,7 @@
 				71DCDC3B1EAF234E00BA045A /* AppDelegate.m */,
 				42A829BE1EBC027100898B8A /* RootNavigationController.h */,
 				42A829BF1EBC027100898B8A /* RootNavigationController.m */,
-				71DCDC401EAF234E00BA045A /* Main.storyboard */,
+				71DCDC401EAF234E00BA045A /* RAImage.storyboard */,
 				71DCDC431EAF234E00BA045A /* Assets.xcassets */,
 				71DCDC451EAF234E00BA045A /* LaunchScreen.storyboard */,
 				71DCDC481EAF234E00BA045A /* Info.plist */,
@@ -607,7 +607,7 @@
 				71DCDC501EAF353000BA045A /* modelist.json in Resources */,
 				426E6B291EB8720400942BE1 /* Mode.storyboard in Resources */,
 				71114AEE1EB2DEF900D2200C /* cam_scan.storyboard in Resources */,
-				71DCDC421EAF234E00BA045A /* Main.storyboard in Resources */,
+				71DCDC421EAF234E00BA045A /* RAImage.storyboard in Resources */,
 				71114AB31EB1C5C800D2200C /* LICENSE in Resources */,
 				42BC2D011EBAC4310016B30D /* PhotoList.storyboard in Resources */,
 				42E1B1041EB1CCB200EEF27C /* login.json in Resources */,
@@ -645,7 +645,7 @@
 				71114AC81EB1C73B00D2200C /* unzip.c in Sources */,
 				71114AEF1EB2DEF900D2200C /* MenuViewController.m in Sources */,
 				71E9F6B31F8B46380052C78E /* NetworkUtils.m in Sources */,
-				71114AA31EB1C40900D2200C /* RAINetwork.m in Sources */,
+				71114AA31EB1C40900D2200C /* RANetwork.m in Sources */,
 				71114AC91EB1C73B00D2200C /* zip.c in Sources */,
 				428566D81EF122360041208A /* PhotoPreviewCell.m in Sources */,
 				71114AF31EB2DEF900D2200C /* SCShapeView.m in Sources */,
@@ -678,12 +678,12 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXVariantGroup section */
-		71DCDC401EAF234E00BA045A /* Main.storyboard */ = {
+		71DCDC401EAF234E00BA045A /* RAImage.storyboard */ = {
 			isa = PBXVariantGroup;
 			children = (
 				71DCDC411EAF234E00BA045A /* Base */,
 			);
-			name = Main.storyboard;
+			name = RAImage.storyboard;
 			sourceTree = "<group>";
 		};
 		71DCDC451EAF234E00BA045A /* LaunchScreen.storyboard */ = {

BIN
RA Image/RA Image.xcodeproj/project.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate


+ 1 - 1
RA Image/RA Image/AppDelegate.m

@@ -29,7 +29,7 @@
 
 - (void)showLoginVC {
     if (![self.window.rootViewController isKindOfClass:[LoginViewController class]]) {
-        LoginViewController *loginVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
+        LoginViewController *loginVC = [[UIStoryboard storyboardWithName:@"RAImage" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
         
         [self.window setRootViewController:loginVC];
         self.shouldAutoShowModeVC = YES;

+ 450 - 0
RA Image/RA Image/Base.lproj/RAImage.storyboard

@@ -0,0 +1,450 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="zf9-JT-Kr2">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/>
+        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--Root Navigation Controller-->
+        <scene sceneID="7ND-eH-sRU">
+            <objects>
+                <navigationController id="zf9-JT-Kr2" customClass="RootNavigationController" sceneMemberID="viewController">
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="fQ0-CT-SJq">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <connections>
+                        <segue destination="Dtz-oi-w09" kind="relationship" relationship="rootViewController" id="Pch-9t-uvy"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="yLH-TZ-voh" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-1220" y="92"/>
+        </scene>
+        <!--Root View Controller-->
+        <scene sceneID="OHA-Vc-Klx">
+            <objects>
+                <viewController id="Dtz-oi-w09" customClass="RootViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="qba-7X-gfw"/>
+                        <viewControllerLayoutGuide type="bottom" id="X0p-Er-QSV"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="0cG-hA-GsV">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="40" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="qOW-M6-IJk">
+                                <rect key="frame" x="0.0" y="135" width="375" height="481"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <prototypes>
+                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="RootModeCell" rowHeight="40" id="a3Z-Pv-WAq" customClass="RootModeCell">
+                                        <rect key="frame" x="0.0" y="28" width="375" height="40"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="a3Z-Pv-WAq" id="KU3-qN-JgJ">
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="40"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Mode" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wdD-Sc-rpM">
+                                                    <rect key="frame" x="10" y="5" width="355" height="29.5"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstAttribute="bottom" secondItem="wdD-Sc-rpM" secondAttribute="bottom" constant="5" id="BM5-GG-sTU"/>
+                                                <constraint firstItem="wdD-Sc-rpM" firstAttribute="top" secondItem="KU3-qN-JgJ" secondAttribute="top" constant="5" id="DDB-kZ-0Eq"/>
+                                                <constraint firstAttribute="trailing" secondItem="wdD-Sc-rpM" secondAttribute="trailing" constant="10" id="M73-FJ-0C5"/>
+                                                <constraint firstItem="wdD-Sc-rpM" firstAttribute="leading" secondItem="KU3-qN-JgJ" secondAttribute="leading" constant="10" id="zVe-cS-jj9"/>
+                                            </constraints>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="modeLabel" destination="wdD-Sc-rpM" id="WHN-fJ-nZN"/>
+                                        </connections>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="Dtz-oi-w09" id="jXK-hH-Zw4"/>
+                                    <outlet property="delegate" destination="Dtz-oi-w09" id="qej-WZ-udw"/>
+                                </connections>
+                            </tableView>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="76b-Zz-kRV">
+                                <rect key="frame" x="0.0" y="64" width="375" height="70"/>
+                                <subviews>
+                                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="AppIcon40x40" translatesAutoresizingMaskIntoConstraints="NO" id="jOJ-Py-4V7">
+                                        <rect key="frame" x="10" y="10" width="50" height="50"/>
+                                        <color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="50" id="bmP-nQ-OPw"/>
+                                            <constraint firstAttribute="width" constant="50" id="lZh-XL-7AP"/>
+                                        </constraints>
+                                    </imageView>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Npd" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jih-EZ-3Hj">
+                                        <rect key="frame" x="70" y="25" width="295" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="qYa-PP-rUN"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <nil key="textColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <constraints>
+                                    <constraint firstItem="jih-EZ-3Hj" firstAttribute="leading" secondItem="jOJ-Py-4V7" secondAttribute="trailing" constant="10" id="BPG-R3-znz"/>
+                                    <constraint firstAttribute="height" constant="70" id="InE-Jf-NGV"/>
+                                    <constraint firstItem="jOJ-Py-4V7" firstAttribute="top" secondItem="76b-Zz-kRV" secondAttribute="top" constant="10" id="LrP-ye-G0Q"/>
+                                    <constraint firstAttribute="trailing" secondItem="jih-EZ-3Hj" secondAttribute="trailing" constant="10" id="QNz-Zn-cTs"/>
+                                    <constraint firstItem="jOJ-Py-4V7" firstAttribute="leading" secondItem="76b-Zz-kRV" secondAttribute="leading" constant="10" id="hKT-Gc-IXr"/>
+                                    <constraint firstItem="jih-EZ-3Hj" firstAttribute="centerY" secondItem="jOJ-Py-4V7" secondAttribute="centerY" id="wxs-cU-63N"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="U7i-RF-fNv">
+                                <rect key="frame" x="0.0" y="132" width="375" height="1"/>
+                                <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="0.5" id="BoU-iz-Rb0"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="I9R-Zj-mk5">
+                                <rect key="frame" x="0.0" y="616" width="375" height="1"/>
+                                <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="0.5" id="s2D-BK-xN7"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TfJ-sO-Wub">
+                                <rect key="frame" x="0.0" y="617" width="375" height="50"/>
+                                <subviews>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="I2w-Kd-8pR">
+                                        <rect key="frame" x="10" y="8.5" width="110" height="33"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <state key="normal" title="upload setting">
+                                            <color key="titleColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="highlighted" title="upload setting"/>
+                                        <connections>
+                                            <action selector="uploadSettingBtnClick:" destination="Dtz-oi-w09" eventType="touchUpInside" id="oev-bL-zCh"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="50" id="hxt-9M-1T4"/>
+                                    <constraint firstItem="I2w-Kd-8pR" firstAttribute="centerY" secondItem="TfJ-sO-Wub" secondAttribute="centerY" id="vmW-3d-58x"/>
+                                    <constraint firstItem="I2w-Kd-8pR" firstAttribute="leading" secondItem="TfJ-sO-Wub" secondAttribute="leading" constant="10" id="wso-GZ-lSI"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <constraints>
+                            <constraint firstAttribute="bottom" secondItem="TfJ-sO-Wub" secondAttribute="bottom" id="17k-AL-bPf"/>
+                            <constraint firstItem="TfJ-sO-Wub" firstAttribute="leading" secondItem="0cG-hA-GsV" secondAttribute="leading" id="DHk-0v-LNU"/>
+                            <constraint firstItem="I9R-Zj-mk5" firstAttribute="width" secondItem="TfJ-sO-Wub" secondAttribute="width" id="G7R-Lf-7r1"/>
+                            <constraint firstItem="qOW-M6-IJk" firstAttribute="top" secondItem="76b-Zz-kRV" secondAttribute="bottom" constant="1" id="IKq-f3-3C9"/>
+                            <constraint firstAttribute="trailing" secondItem="76b-Zz-kRV" secondAttribute="trailing" id="QGk-4V-qOB"/>
+                            <constraint firstItem="U7i-RF-fNv" firstAttribute="leading" secondItem="76b-Zz-kRV" secondAttribute="leading" id="e40-iU-EoT"/>
+                            <constraint firstItem="76b-Zz-kRV" firstAttribute="leading" secondItem="0cG-hA-GsV" secondAttribute="leading" id="eXT-Ew-DCY"/>
+                            <constraint firstAttribute="trailing" secondItem="TfJ-sO-Wub" secondAttribute="trailing" id="iBQ-rl-Ihk"/>
+                            <constraint firstAttribute="trailing" secondItem="qOW-M6-IJk" secondAttribute="trailing" id="jxV-4b-nO7"/>
+                            <constraint firstItem="I9R-Zj-mk5" firstAttribute="top" secondItem="TfJ-sO-Wub" secondAttribute="top" constant="-1" id="khb-wd-8tZ"/>
+                            <constraint firstItem="U7i-RF-fNv" firstAttribute="bottom" secondItem="76b-Zz-kRV" secondAttribute="bottom" constant="-1" id="ocf-gQ-IUN"/>
+                            <constraint firstItem="76b-Zz-kRV" firstAttribute="top" secondItem="qba-7X-gfw" secondAttribute="bottom" id="qpe-mG-XQC"/>
+                            <constraint firstItem="I9R-Zj-mk5" firstAttribute="leading" secondItem="TfJ-sO-Wub" secondAttribute="leading" id="se4-kr-7RF"/>
+                            <constraint firstItem="TfJ-sO-Wub" firstAttribute="top" secondItem="qOW-M6-IJk" secondAttribute="bottom" constant="1" id="uaP-Zb-zmr"/>
+                            <constraint firstItem="qOW-M6-IJk" firstAttribute="leading" secondItem="0cG-hA-GsV" secondAttribute="leading" id="vgN-vX-TtL"/>
+                            <constraint firstItem="U7i-RF-fNv" firstAttribute="width" secondItem="76b-Zz-kRV" secondAttribute="width" id="zm7-mY-DJF"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="OjN-Xn-Hk9"/>
+                    <connections>
+                        <outlet property="companyIconView" destination="jOJ-Py-4V7" id="1Lr-g6-MVb"/>
+                        <outlet property="companyNameLabel" destination="jih-EZ-3Hj" id="uH7-PA-U0N"/>
+                        <outlet property="modeTable" destination="qOW-M6-IJk" id="ZxK-nd-nZ7"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="okF-58-x1C" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-282.39999999999998" y="96.7016491754123"/>
+        </scene>
+        <!--Login View Controller-->
+        <scene sceneID="5BS-AD-3M8">
+            <objects>
+                <viewController storyboardIdentifier="LoginViewController" id="l61-Sy-3V2" customClass="LoginViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="H4k-R1-29n"/>
+                        <viewControllerLayoutGuide type="bottom" id="p61-40-fkz"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="eFV-Mf-82R">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RA Image" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7Tz-Ne-9Q4">
+                                <rect key="frame" x="0.0" y="100" width="375" height="50"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="50" id="tbZ-ys-B3a"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
+                                <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" bouncesZoom="NO" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="50" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="ZEy-rA-ish">
+                                <rect key="frame" x="0.0" y="190" width="375" height="200"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="200" id="qNy-dF-L1y"/>
+                                </constraints>
+                                <prototypes>
+                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="LoginTextFiledCell" rowHeight="50" id="AzG-Bz-3Gu" customClass="LoginTextFiledCell">
+                                        <rect key="frame" x="0.0" y="28" width="375" height="50"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="AzG-Bz-3Gu" id="DIU-Qe-sGe">
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="50"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" placeholder="place order" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="YXP-if-YQ2">
+                                                    <rect key="frame" x="10" y="5" width="355" height="39.5"/>
+                                                    <nil key="textColor"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <textInputTraits key="textInputTraits"/>
+                                                    <connections>
+                                                        <outlet property="delegate" destination="l61-Sy-3V2" id="XFr-3Q-Gtn"/>
+                                                    </connections>
+                                                </textField>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstAttribute="bottom" secondItem="YXP-if-YQ2" secondAttribute="bottom" constant="5" id="4Sa-X2-GkU"/>
+                                                <constraint firstItem="YXP-if-YQ2" firstAttribute="leading" secondItem="DIU-Qe-sGe" secondAttribute="leading" constant="10" id="CZL-EC-3x4"/>
+                                                <constraint firstAttribute="trailing" secondItem="YXP-if-YQ2" secondAttribute="trailing" constant="10" id="FEh-AE-9gq"/>
+                                                <constraint firstItem="YXP-if-YQ2" firstAttribute="top" secondItem="DIU-Qe-sGe" secondAttribute="top" constant="5" id="lsm-A6-tLE"/>
+                                            </constraints>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="textBox" destination="YXP-if-YQ2" id="rLi-GD-e77"/>
+                                        </connections>
+                                    </tableViewCell>
+                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="LoginSwitchCell" rowHeight="50" id="LYr-Om-Dpu" customClass="LoginSwitchCell">
+                                        <rect key="frame" x="0.0" y="78" width="375" height="50"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="LYr-Om-Dpu" id="DQB-yC-XbO">
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="50"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="记住我的登录状态" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l0F-dN-mYq">
+                                                    <rect key="frame" x="10" y="5" width="285" height="39.5"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ayl-9L-kj9">
+                                                    <rect key="frame" x="315" y="9.5" width="52" height="31"/>
+                                                    <connections>
+                                                        <action selector="switchClick:" destination="LYr-Om-Dpu" eventType="valueChanged" id="AD8-uu-gGL"/>
+                                                    </connections>
+                                                </switch>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="l0F-dN-mYq" firstAttribute="leading" secondItem="DQB-yC-XbO" secondAttribute="leading" constant="10" id="2Pv-EG-Typ"/>
+                                                <constraint firstItem="Ayl-9L-kj9" firstAttribute="centerY" secondItem="l0F-dN-mYq" secondAttribute="centerY" id="6oC-p4-LHA"/>
+                                                <constraint firstItem="l0F-dN-mYq" firstAttribute="top" secondItem="DQB-yC-XbO" secondAttribute="top" constant="5" id="AS5-qb-qmA"/>
+                                                <constraint firstAttribute="trailing" secondItem="Ayl-9L-kj9" secondAttribute="trailing" constant="10" id="KKL-7Y-rGz"/>
+                                                <constraint firstAttribute="bottom" secondItem="l0F-dN-mYq" secondAttribute="bottom" constant="5" id="sMp-Be-x6B"/>
+                                                <constraint firstItem="Ayl-9L-kj9" firstAttribute="leading" secondItem="l0F-dN-mYq" secondAttribute="trailing" constant="20" id="szM-HB-JH2"/>
+                                                <constraint firstAttribute="trailing" secondItem="l0F-dN-mYq" secondAttribute="trailing" constant="80" id="wBz-OH-Old"/>
+                                            </constraints>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="msgLabel" destination="l0F-dN-mYq" id="0Wu-o2-zG7"/>
+                                            <outlet property="stateSwitch" destination="Ayl-9L-kj9" id="0Af-UQ-jWz"/>
+                                        </connections>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="l61-Sy-3V2" id="ftG-1q-g3I"/>
+                                    <outlet property="delegate" destination="l61-Sy-3V2" id="tqE-wd-DVH"/>
+                                </connections>
+                            </tableView>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qgm-gt-QHB">
+                                <rect key="frame" x="10" y="627" width="30" height="30"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="30" id="Zih-se-HAO"/>
+                                    <constraint firstAttribute="height" constant="30" id="jjZ-vh-Hjh"/>
+                                </constraints>
+                                <state key="normal" image="setting"/>
+                                <connections>
+                                    <action selector="settingBtnClick:" destination="l61-Sy-3V2" eventType="touchUpInside" id="ojR-rF-7SJ"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9eS-az-Avg">
+                                <rect key="frame" x="20" y="420" width="335" height="50"/>
+                                <color key="backgroundColor" cocoaTouchSystemColor="lightTextColor"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="50" id="q1V-lL-5KU"/>
+                                </constraints>
+                                <state key="normal" title="Login">
+                                    <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="loginBtnClick:" destination="l61-Sy-3V2" eventType="touchUpInside" id="ob0-JX-uK7"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="v1.0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KNq-Qe-MCi">
+                                <rect key="frame" x="337.5" y="637" width="27.5" height="20"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="20" id="pQX-il-KH2"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.21907718691379285" green="0.71136361904577949" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="Qgm-gt-QHB" firstAttribute="leading" secondItem="eFV-Mf-82R" secondAttribute="leading" constant="10" id="Di9-kk-t7S"/>
+                            <constraint firstAttribute="trailing" secondItem="ZEy-rA-ish" secondAttribute="trailing" id="NTf-3C-4Ro"/>
+                            <constraint firstAttribute="trailing" secondItem="KNq-Qe-MCi" secondAttribute="trailing" constant="10" id="V3y-Nf-hHp"/>
+                            <constraint firstItem="9eS-az-Avg" firstAttribute="top" secondItem="ZEy-rA-ish" secondAttribute="bottom" constant="30" id="VHh-eU-GOx"/>
+                            <constraint firstItem="7Tz-Ne-9Q4" firstAttribute="top" secondItem="H4k-R1-29n" secondAttribute="bottom" constant="80" id="aNW-Be-opP"/>
+                            <constraint firstItem="KNq-Qe-MCi" firstAttribute="bottom" secondItem="Qgm-gt-QHB" secondAttribute="bottom" id="dFz-ee-Wx1"/>
+                            <constraint firstItem="9eS-az-Avg" firstAttribute="leading" secondItem="eFV-Mf-82R" secondAttribute="leading" constant="20" id="dQN-LQ-RKc"/>
+                            <constraint firstItem="p61-40-fkz" firstAttribute="top" secondItem="Qgm-gt-QHB" secondAttribute="bottom" constant="10" id="dZy-Uz-47Q"/>
+                            <constraint firstItem="ZEy-rA-ish" firstAttribute="top" secondItem="7Tz-Ne-9Q4" secondAttribute="bottom" constant="40" id="dkW-VQ-pSb"/>
+                            <constraint firstAttribute="trailing" secondItem="7Tz-Ne-9Q4" secondAttribute="trailing" id="kYo-Ne-fAZ"/>
+                            <constraint firstItem="7Tz-Ne-9Q4" firstAttribute="leading" secondItem="eFV-Mf-82R" secondAttribute="leading" id="n2h-R0-gci"/>
+                            <constraint firstAttribute="trailing" secondItem="9eS-az-Avg" secondAttribute="trailing" constant="20" id="qS8-xf-h6A"/>
+                            <constraint firstItem="ZEy-rA-ish" firstAttribute="leading" secondItem="eFV-Mf-82R" secondAttribute="leading" id="w9O-y0-08A"/>
+                            <constraint firstItem="ZEy-rA-ish" firstAttribute="centerX" secondItem="eFV-Mf-82R" secondAttribute="centerX" id="zTH-G4-bdZ"/>
+                        </constraints>
+                    </view>
+                    <connections>
+                        <outlet property="loginBtn" destination="9eS-az-Avg" id="zus-dh-HZL"/>
+                        <outlet property="loginTable" destination="ZEy-rA-ish" id="OM0-gg-rrj"/>
+                        <outlet property="settingBtn" destination="Qgm-gt-QHB" id="W1I-7x-KJ6"/>
+                        <outlet property="versionLabel" destination="KNq-Qe-MCi" id="XzA-QQ-ZLM"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="QKd-iz-zHw" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="629.60000000000002" y="96.7016491754123"/>
+        </scene>
+        <!--Login Setting View Controller-->
+        <scene sceneID="g1f-oD-LiL">
+            <objects>
+                <viewController storyboardIdentifier="LoginSettingViewController" id="r7u-Ls-Lza" customClass="LoginSettingViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="pYb-eQ-flk"/>
+                        <viewControllerLayoutGuide type="bottom" id="dmd-sA-BVL"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="mu4-lc-PRk">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="T2p-m2-k3U">
+                                <rect key="frame" x="26" y="30" width="45" height="21"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Name" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="N4g-tS-PSF">
+                                <rect key="frame" x="26" y="61" width="323" height="30"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="m3z-CE-Fja"/>
+                                </constraints>
+                                <nil key="textColor"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits"/>
+                                <connections>
+                                    <outlet property="delegate" destination="r7u-Ls-Lza" id="XKz-18-Ndz"/>
+                                </connections>
+                            </textField>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Server" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l39-8d-pmH">
+                                <rect key="frame" x="26" y="101" width="323" height="20.5"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="blU-4o-XVJ">
+                                <rect key="frame" x="26" y="132" width="323" height="30"/>
+                                <nil key="textColor"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits"/>
+                                <connections>
+                                    <outlet property="delegate" destination="r7u-Ls-Lza" id="J8f-Pz-Gwg"/>
+                                </connections>
+                            </textField>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <constraints>
+                            <constraint firstItem="N4g-tS-PSF" firstAttribute="centerX" secondItem="mu4-lc-PRk" secondAttribute="centerX" id="4kc-tk-11e"/>
+                            <constraint firstItem="N4g-tS-PSF" firstAttribute="leading" secondItem="mu4-lc-PRk" secondAttribute="leadingMargin" constant="10" id="ES9-Ie-txh"/>
+                            <constraint firstItem="T2p-m2-k3U" firstAttribute="top" secondItem="pYb-eQ-flk" secondAttribute="bottom" constant="10" id="OaF-TU-6MG"/>
+                            <constraint firstItem="blU-4o-XVJ" firstAttribute="leading" secondItem="N4g-tS-PSF" secondAttribute="leading" id="TYO-qT-Lfe"/>
+                            <constraint firstItem="blU-4o-XVJ" firstAttribute="top" secondItem="l39-8d-pmH" secondAttribute="bottom" constant="10.5" id="aia-zU-K38"/>
+                            <constraint firstItem="T2p-m2-k3U" firstAttribute="leading" secondItem="mu4-lc-PRk" secondAttribute="leadingMargin" constant="10" id="bQX-1H-XT5"/>
+                            <constraint firstItem="blU-4o-XVJ" firstAttribute="trailing" secondItem="N4g-tS-PSF" secondAttribute="trailing" id="dzp-sl-pBk"/>
+                            <constraint firstItem="N4g-tS-PSF" firstAttribute="leading" secondItem="l39-8d-pmH" secondAttribute="leading" id="fYc-XM-SBg"/>
+                            <constraint firstItem="N4g-tS-PSF" firstAttribute="top" secondItem="T2p-m2-k3U" secondAttribute="bottom" constant="10" id="git-Pc-4Dz"/>
+                            <constraint firstItem="N4g-tS-PSF" firstAttribute="trailing" secondItem="l39-8d-pmH" secondAttribute="trailing" id="lkD-tS-c4j"/>
+                            <constraint firstItem="l39-8d-pmH" firstAttribute="top" secondItem="N4g-tS-PSF" secondAttribute="bottom" constant="10" id="m4L-qY-0Rn"/>
+                        </constraints>
+                    </view>
+                    <connections>
+                        <outlet property="internalTextField" destination="blU-4o-XVJ" id="Cz1-DP-Zrf"/>
+                        <outlet property="nameTextField" destination="N4g-tS-PSF" id="kdZ-Ct-VgR"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="pdO-Fj-tWK" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1652" y="123.68815592203899"/>
+        </scene>
+        <!--Title-->
+        <scene sceneID="ved-nH-EPI">
+            <objects>
+                <viewController id="aZG-eq-NWq" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="gWE-Fo-HhX"/>
+                        <viewControllerLayoutGuide type="bottom" id="X5T-cD-J90"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="sHb-9r-rGb">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pr4-hr-5Sm">
+                                <rect key="frame" x="46" y="605" width="33" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="scan"/>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j2w-9X-jhY">
+                                <rect key="frame" x="285" y="605" width="40" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="photo"/>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0K0-Hx-c1l">
+                                <rect key="frame" x="130" y="566" width="47" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="upload"/>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                    </view>
+                    <toolbarItems/>
+                    <navigationItem key="navigationItem" title="Title" id="L1B-gE-Sul">
+                        <barButtonItem key="rightBarButtonItem" title="Setting" id="q8u-PE-SyA"/>
+                    </navigationItem>
+                    <simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="2M2-NW-Ap7" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2593" y="106"/>
+        </scene>
+    </scenes>
+    <resources>
+        <image name="AppIcon40x40" width="16" height="16"/>
+        <image name="setting" width="60" height="60"/>
+    </resources>
+</document>

+ 1 - 1
RA Image/RA Image/BasicModeViewController.m

@@ -613,7 +613,7 @@
     dispatch_async(dispatch_get_global_queue(0, 0), ^{
     //    if (weakself) {
 //            __strong typeof(weakself) strongself = weakself;
-            NSDictionary *result_json = [RAINetwork Verify:params];
+            NSDictionary *result_json = [RANetwork Verify:params];
             dispatch_async(dispatch_get_main_queue(), ^{
                 [alert dismissWithClickedButtonIndex:0 animated:YES];
                 int result = [[result_json objectForKey:@"result"] intValue];

+ 1 - 1
RA Image/RA Image/Info.plist

@@ -29,7 +29,7 @@
 	<key>UILaunchStoryboardName</key>
 	<string>LaunchScreen</string>
 	<key>UIMainStoryboardFile</key>
-	<string>Main</string>
+	<string>RAImage</string>
 	<key>UIRequiredDeviceCapabilities</key>
 	<array>
 		<string>armv7</string>

+ 2 - 2
RA Image/RA Image/LoginViewController.m

@@ -216,7 +216,7 @@ static NSString *kLoginUserInfo = @"UserInfo";
     dispatch_async(dispatch_get_global_queue(0, 0), ^{
         if (weakself) {
             __strong typeof(weakself) strongself = weakself;
-            NSDictionary *loginDic = [RAINetwork Login:strongself.user password:strongself.pwd];
+            NSDictionary *loginDic = [RANetwork Login:strongself.user password:strongself.pwd];
             dispatch_async(dispatch_get_main_queue(), ^{
                 [alert dismissWithClickedButtonIndex:0 animated:YES];
                 int result = [[loginDic objectForKey:@"result"] intValue];
@@ -246,7 +246,7 @@ static NSString *kLoginUserInfo = @"UserInfo";
 
 - (IBAction)settingBtnClick:(UIButton *)sender {
     
-    LoginSettingViewController *loginSettingVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginSettingViewController"];
+    LoginSettingViewController *loginSettingVC = [[UIStoryboard storyboardWithName:@"RAImage" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginSettingViewController"];
     __weak typeof(self) weakself = self;
     loginSettingVC.returnValue = ^(NSString *address) {
         if (weakself) {

+ 1 - 1
RA Image/RA Image/ModelModeViewController.m

@@ -239,7 +239,7 @@
     if (barcode.length > 0) {
         UIAlertView *alert = [RAUtils waiting_alert:@"Loading model's manufactures" title:@"Waiting"];
         dispatch_async(dispatch_get_global_queue(0, 0), ^{
-            NSDictionary *modelManufacturs = [RAINetwork getModelManufacture:barcode];
+            NSDictionary *modelManufacturs = [RANetwork getModelManufacture:barcode];
             dispatch_async(dispatch_get_main_queue(), ^{
                 [alert dismissWithClickedButtonIndex:0 animated:YES];
                 int result = [[modelManufacturs objectForKey:@"result"] intValue];

+ 17 - 0
RA Image/RA Image/RANetwork.h

@@ -0,0 +1,17 @@
+//
+//  RAINetwork.h
+//  RA Image
+//
+//  Created by Ray on 27/04/2017.
+//  Copyright © 2017 USAI. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "NetworkUtils.h"
+
+@interface RANetwork : NetworkUtils
++(NSDictionary*)Login : (NSString*) user password:(NSString*) password;
++(NSDictionary*)logout;
++(NSDictionary*)Verify : (NSMutableDictionary*) params;
++ (NSDictionary *)getModelManufacture:(NSString *)model;
+@end

+ 170 - 0
RA Image/RA Image/RANetwork.m

@@ -0,0 +1,170 @@
+//
+//  RAINetwork.m
+//  RA Image
+//
+//  Created by Ray on 27/04/2017.
+//  Copyright © 2017 USAI. All rights reserved.
+//
+#import "config.h"
+#import "RANetwork.h"
+#import "AppDelegate.h"
+#import "AESCrypt.h"
+#import "RAUtils.h"
+
+@implementation RANetwork
+
++(NSMutableDictionary*) prepare_addtional_params:(NSMutableDictionary* ) params
+{
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:[AESCrypt AES128Encrypt:appDelegate.user key:@"usai"] forKey:@"user"];
+    if(appDelegate.password!=nil)
+        [params setValue:[AESCrypt AES128Encrypt:appDelegate.password key:@"usai"] forKey:@"password"];
+    
+    
+    
+    [params setValue:appDelegate.build forKey:@"app_ver"];
+    
+    NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
+    NSString* short_version =[infoDict objectForKey:@"CFBundleShortVersionString"];
+    [params setValue:short_version forKey:@"app_short_ver"];
+    
+    
+    
+#if TARGET_IPHONE_SIMULATOR//模拟器
+    [params setValue:@"simulator_uuid" forKey:@"deviceid"];
+#elif TARGET_OS_IPHONE//真机
+    UIDevice * dev = [UIDevice currentDevice];
+    NSUUID* uuid =dev.identifierForVendor;
+    [params setValue:uuid.UUIDString forKey:@"deviceid"];
+#endif
+    
+    return params;
+}
++(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params file:(NSString *) file //delegate:(id < NSURLConnectionDelegate >)delegate
+{
+    
+    
+    
+    
+    //    NSString* e=[AESCrypt AES128Encrypt:@"密码学中的高级加密标准(Advanced Encryption Standard,AES),又称 高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。 " key:@"usai2010"];
+    //    DebugLog(e);
+    //    NSString* d=[AESCrypt decrypt:@"VzB4+lENfbzWX7ggHh2Os1P69l5YBzKmM51yqA37AfoKgPY8bJgdK8M4WvF+wDyOsLWP\/o8H5+bHMivQp1u8wM2QV7SYzgzPwV85QKtYWIzEgLe9T0HO69EdutWz7k1rdAT\/mftsRin0Hy5SHk7txTZT\/zPH5X+FQiExCTFm5Zus39HYvp+VxCX4+kYeymn8B63AUd3mRQyscUvDjfgU2olKR\/TP8PV3g+VQMZxpKfol3P1iOtz3XQlHZV0pM6SAf+SwT0sPfrdn6CZFfNQlrKA9QjMrnBdMeSCquSIWXnmLv6okzvnlJnT0SjvJuUeqNdBC5EZ0ACnhI0MrXVZEsq1EuM9al7oPzvU5EZbjZpmx+fSFIkMzTT8bYClTnG1bsL1MCcU4pSODDorUj8zalA==" password:@"usai2010"];
+    params = [self prepare_addtional_params:params];
+    
+    return [super get_json:url parameters:params file:(NSString*)file err_recorder:URL_ERR_LOG result_handler:^NSMutableDictionary *(NSMutableDictionary *jsobj) {
+        int result=[[jsobj valueForKey:@"result"] intValue];
+        //        UIApplication * app = [UIApplication sharedApplication];
+        //        AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+        
+        switch (result) {
+            case 0:
+                [jsobj setValue:MSG_USERAUTH_ERROR forKey:@"err_msg"];
+                break;
+            case 1:
+                [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
+                break;
+            case 2:
+                [jsobj setValue:MSG_SUCCESS forKey:@"err_msg"];
+                break;
+            case 8:
+                [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
+                break;
+            case 9:
+                [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
+                break;
+            case 99:
+                [jsobj setValue:MSG_TIMEOUT forKey:@"err_msg"];
+                break;
+            default:
+                [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
+                break;
+        }
+        
+        
+        //        if([appDelegate.build intValue]< [[jsobj valueForKey:@"min_ver"]intValue])
+        //        {
+        //            [jsobj setValue:@"9" forKey:@"result"];
+        //            [jsobj setValue:MSG_VER_LOW forKey:@"err_msg"];
+        //        }
+        return jsobj;
+    } decrypt_handler:^NSMutableDictionary *(NSMutableDictionary *jsobj) {
+        
+        NSString* base64str = jsobj[@"str"];
+        NSString* decryptstr=[AESCrypt AES128Decrypt:base64str key:@"usai2010"];
+        jsobj=[[RAUtils string2dict:decryptstr] mutableCopy];
+        return jsobj;
+    }];
+    
+    
+    /*
+     
+     
+     
+     */
+    return nil;
+}
+
++ (NSDictionary *)Login:(NSString *)user password:(NSString *)password {
+
+
+    NSString* encryptu=[AESCrypt AES128Encrypt:user key:@"usai"];
+    NSString* encryptp=[AESCrypt AES128Encrypt:password key:@"usai"];
+    
+    NSMutableDictionary *params = @{@"user":encryptu,
+                                    @"password":encryptp,
+                                    @"_operate":@"handset_login"
+                                    }.mutableCopy;
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    
+    NSData *data = [self get_json:appDelegate.address parameters:params file:nil];
+    NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
+    return resultDic;
+}
+
++(NSDictionary*)Verify : (NSMutableDictionary*) params
+{
+
+    
+
+   // params[@"_operate"]=@"valid_upload";
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    
+    NSData *data = [self get_json:appDelegate.address parameters:params file:nil];
+    NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
+    return resultDic;
+}
+
++ (NSDictionary *)logout {
+//    NSMutableDictionary *params = @{@"_operate":@"handset_logout"
+//                                    }.mutableCopy;
+//    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+//    NSString *urlStr = appDelegate.address;
+//    
+//    NSData *data = [self get_json:urlStr parameters:params file:nil];
+//    NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
+//    return resultDic;
+    
+    return @{@"result" : @"2"};
+}
+
++ (NSDictionary *)getModelManufacture:(NSString *)model {
+    
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+
+    NSString* encryptu=[AESCrypt AES128Encrypt:appDelegate.user key:@"usai"];
+    NSString* encryptp=[AESCrypt AES128Encrypt:appDelegate.password key:@"usai"];
+    NSMutableDictionary *params = @{
+                                    @"user":encryptu,
+                                    @"password":encryptp,
+                                    @"_operate":@"handset_get_manufacturer",
+                                    @"barcode":model
+                                    }.mutableCopy;
+    
+    NSData *data = [self get_json:appDelegate.address parameters:params file:nil];
+    NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
+    return resultDic;
+
+}
+
+@end

+ 1 - 1
RA Image/RA Image/RootViewController.m

@@ -189,7 +189,7 @@ static NSString *kLastMode = @"lastChooseMode";
     __weak typeof(self) weakself = self;
     dispatch_async(dispatch_get_main_queue(), ^{
         
-        NSDictionary *logoutDic = [RAINetwork logout];
+        NSDictionary *logoutDic = [RANetwork logout];
         int result = [[logoutDic objectForKey:@"result"] intValue];
         dispatch_async(dispatch_get_main_queue(), ^{
             [alert dismissWithClickedButtonIndex:0 animated:YES];