├── .angulardoc.json ├── .editorconfig ├── .gitignore ├── README.md ├── config.xml ├── ionic.config.json ├── ionic.starter.json ├── package-lock.json ├── package.json ├── resources ├── README.md ├── android │ ├── icon │ │ ├── drawable-hdpi-icon.png │ │ ├── drawable-ldpi-icon.png │ │ ├── drawable-mdpi-icon.png │ │ ├── drawable-xhdpi-icon.png │ │ ├── drawable-xxhdpi-icon.png │ │ └── drawable-xxxhdpi-icon.png │ └── splash │ │ ├── drawable-land-hdpi-screen.png │ │ ├── drawable-land-ldpi-screen.png │ │ ├── drawable-land-mdpi-screen.png │ │ ├── drawable-land-xhdpi-screen.png │ │ ├── drawable-land-xxhdpi-screen.png │ │ ├── drawable-land-xxxhdpi-screen.png │ │ ├── drawable-port-hdpi-screen.png │ │ ├── drawable-port-ldpi-screen.png │ │ ├── drawable-port-mdpi-screen.png │ │ ├── drawable-port-xhdpi-screen.png │ │ ├── drawable-port-xxhdpi-screen.png │ │ └── drawable-port-xxxhdpi-screen.png ├── icon.png ├── ios │ ├── icon │ │ ├── icon-1024.png │ │ ├── icon-40.png │ │ ├── icon-40@2x.png │ │ ├── icon-40@3x.png │ │ ├── icon-50.png │ │ ├── icon-50@2x.png │ │ ├── icon-60.png │ │ ├── icon-60@2x.png │ │ ├── icon-60@3x.png │ │ ├── icon-72.png │ │ ├── icon-72@2x.png │ │ ├── icon-76.png │ │ ├── icon-76@2x.png │ │ ├── icon-83.5@2x.png │ │ ├── icon-small.png │ │ ├── icon-small@2x.png │ │ ├── icon-small@3x.png │ │ ├── icon.png │ │ └── icon@2x.png │ └── splash │ │ ├── Default-568h@2x~iphone.png │ │ ├── Default-667h.png │ │ ├── Default-736h.png │ │ ├── Default-Landscape-736h.png │ │ ├── Default-Landscape@2x~ipad.png │ │ ├── Default-Landscape@~ipadpro.png │ │ ├── Default-Landscape~ipad.png │ │ ├── Default-Portrait@2x~ipad.png │ │ ├── Default-Portrait@~ipadpro.png │ │ ├── Default-Portrait~ipad.png │ │ ├── Default@2x~iphone.png │ │ ├── Default@2x~universal~anyany.png │ │ └── Default~iphone.png └── splash.png ├── src ├── app │ ├── app.component.ts │ ├── app.html │ ├── app.module.ts │ ├── app.scss │ └── main.ts ├── assets │ ├── css │ │ ├── flex.css │ │ └── swiper-3.4.2.min.css │ ├── icon │ │ └── favicon.ico │ ├── img │ │ ├── banner_1.jpg │ │ ├── bg960@2x.png │ │ ├── bg@2x.png │ │ ├── buy-logo.png │ │ ├── buy-pro1.jpg │ │ ├── common │ │ │ ├── act_coupon.png │ │ │ ├── act_secskll.png │ │ │ ├── back.png │ │ │ ├── benefit.icon.png │ │ │ ├── cart.empty.png │ │ │ ├── common_default.png │ │ │ ├── qq.png │ │ │ ├── register.png │ │ │ ├── return_password.png │ │ │ └── verify_code.jpg │ │ ├── cp1.jpg │ │ ├── cp2.jpg │ │ ├── cp3.jpg │ │ ├── details │ │ │ └── detail01.jpg │ │ ├── focus-icon.png │ │ ├── headerbg.png │ │ ├── home-ad-1.jpg │ │ ├── home-ad-2.jpg │ │ ├── home-ad-3.jpg │ │ ├── home-ad-4.jpg │ │ ├── home-ad-5.jpg │ │ ├── home-ad-6.jpg │ │ ├── home-headerSlide-1.jpg │ │ ├── home-headerSlide-2.jpg │ │ ├── home-headerSlide-3.jpg │ │ ├── home-headerSlide-4.jpg │ │ ├── home-headerSlide-5.jpg │ │ ├── home-theme-1.jpg │ │ ├── home-theme-2.jpg │ │ ├── home-theme-3.jpg │ │ ├── home-toutiao.jpg │ │ ├── nanz1.jpg │ │ ├── nanz2.jpg │ │ ├── nanz3.jpg │ │ ├── nanz4.jpg │ │ ├── nanz5.jpg │ │ ├── nanz6.jpg │ │ ├── nanz7.jpg │ │ ├── nanz8.jpg │ │ ├── nanz9.jpg │ │ ├── nav0.png │ │ ├── nav1.png │ │ ├── nav2.png │ │ ├── nav3.png │ │ ├── nav4.png │ │ ├── nav5.png │ │ ├── nav6.png │ │ ├── nav7.png │ │ ├── nz1.jpg │ │ ├── nz10.jpg │ │ ├── nz11.jpg │ │ ├── nz12.jpg │ │ ├── nz2.jpg │ │ ├── nz3.jpg │ │ ├── nz4.jpg │ │ ├── nz5.jpg │ │ ├── nz6.jpg │ │ ├── nz7.jpg │ │ ├── nz8.jpg │ │ ├── nz9.jpg │ │ ├── safe_icon.png │ │ ├── scroll-to-top-icon.png │ │ ├── seckill-icon.png │ │ ├── seckill_1.jpg │ │ ├── shop-icon.png │ │ ├── sprites.png │ │ └── sprits_btm_new.png │ ├── imgs │ │ └── logo.png │ └── js │ │ ├── SHA1.js │ │ ├── jquery-3.2.1.min.js │ │ └── swiper-3.4.2.min.js ├── declarations.d.ts ├── index.html ├── manifest.json ├── pages │ ├── login │ │ ├── login.html │ │ ├── login.module.ts │ │ ├── login.scss │ │ └── login.ts │ ├── register │ │ ├── register.html │ │ ├── register.module.ts │ │ ├── register.scss │ │ └── register.ts │ └── tab │ │ ├── good-detail │ │ ├── good-detail.html │ │ ├── good-detail.module.ts │ │ ├── good-detail.scss │ │ └── good-detail.ts │ │ ├── good-list │ │ ├── good-list.html │ │ ├── good-list.module.ts │ │ ├── good-list.scss │ │ └── good-list.ts │ │ ├── tab-broadcast │ │ ├── tab-broadcast.html │ │ ├── tab-broadcast.module.ts │ │ ├── tab-broadcast.scss │ │ └── tab-broadcast.ts │ │ ├── tab-discover │ │ ├── tab-discover.html │ │ ├── tab-discover.module.ts │ │ ├── tab-discover.scss │ │ └── tab-discover.ts │ │ ├── tab-home │ │ ├── tab-home.html │ │ ├── tab-home.module.ts │ │ ├── tab-home.scss │ │ └── tab-home.ts │ │ ├── tab-messages │ │ ├── tab-messages.html │ │ ├── tab-messages.module.ts │ │ ├── tab-messages.scss │ │ └── tab-messages.ts │ │ ├── tab-more │ │ ├── tab-more.html │ │ ├── tab-more.module.ts │ │ ├── tab-more.scss │ │ └── tab-more.ts │ │ ├── tab.html │ │ ├── tab.module.ts │ │ ├── tab.scss │ │ └── tab.ts ├── providers │ ├── Constants.ts │ ├── HttpUtils.ts │ ├── Utils.ts │ ├── data.ts │ ├── goods-service │ │ └── goods-service.ts │ └── look-service │ │ └── look-service.ts ├── service-worker.js └── theme │ └── variables.scss ├── tsconfig.json ├── tslint.json └── typings ├── cordova-typings.d.ts ├── globals ├── jquery │ ├── index.d.ts │ └── typings.json └── swiper │ ├── index.d.ts │ └── typings.json └── index.d.ts /.angulardoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "repoId": "34947807-0157-4927-a6e0-f3871352d36b", 3 | "lastSync": 0 4 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs 2 | # editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | indent_size = 2 9 | 10 | # We recommend you to keep these unchanged 11 | end_of_line = lf 12 | charset = utf-8 13 | trim_trailing_whitespace = true 14 | insert_final_newline = true 15 | 16 | [*.md] 17 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Specifies intentionally untracked files to ignore when using Git 2 | # http://git-scm.com/docs/gitignore 3 | 4 | *~ 5 | *.sw[mnpcod] 6 | *.log 7 | *.tmp 8 | *.tmp.* 9 | log.txt 10 | *.sublime-project 11 | *.sublime-workspace 12 | .vscode/ 13 | npm-debug.log* 14 | 15 | .idea/ 16 | .sourcemaps/ 17 | .sass-cache/ 18 | .tmp/ 19 | .versions/ 20 | coverage/ 21 | dist/ 22 | node_modules/ 23 | tmp/ 24 | temp/ 25 | hooks/ 26 | platforms/ 27 | plugins/ 28 | plugins/android.json 29 | plugins/ios.json 30 | www/ 31 | $RECYCLE.BIN/ 32 | 33 | .DS_Store 34 | Thumbs.db 35 | UserInterfaceState.xcuserstate 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ionic-JD 2 | ionic3+angular4写的京东商城demo 3 | 4 | npm install 5 | 6 | ionic serve 7 | 8 | ![Image_text](https://github.com/hzlshen/Imgage_box/blob/master/ionic-JD.jpg) 9 | ![](https://github.com/hzlshen/Imgage_box/blob/master/classification_JD.jpg) 10 | ![](https://github.com/hzlshen/Imgage_box/blob/master/login_jd.jpg) 11 | ![](https://github.com/hzlshen/Imgage_box/blob/master/shop_JD.jpg) 12 | -------------------------------------------------------------------------------- /config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ionic-JD 4 | An awesome Ionic/Cordova app. 5 | Ionic Framework Team 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /ionic.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ionic-JD", 3 | "app_id": "", 4 | "type": "ionic-angular", 5 | "integrations": { 6 | "cordova": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /ionic.starter.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Tabs Starter", 3 | "baseref": "master" 4 | } 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ionic-JD", 3 | "version": "0.0.1", 4 | "author": "Ionic Framework", 5 | "homepage": "http://ionicframework.com/", 6 | "private": true, 7 | "scripts": { 8 | "clean": "ionic-app-scripts clean", 9 | "build": "ionic-app-scripts build", 10 | "lint": "ionic-app-scripts lint", 11 | "ionic:build": "ionic-app-scripts build", 12 | "ionic:serve": "ionic-app-scripts serve" 13 | }, 14 | "dependencies": { 15 | "@angular/common": "5.0.3", 16 | "@angular/compiler": "5.0.3", 17 | "@angular/compiler-cli": "5.0.3", 18 | "@angular/core": "5.0.3", 19 | "@angular/forms": "5.0.3", 20 | "@angular/http": "5.0.3", 21 | "@angular/platform-browser": "5.0.3", 22 | "@angular/platform-browser-dynamic": "5.0.3", 23 | "@ionic-native/core": "4.4.0", 24 | "@ionic-native/splash-screen": "4.4.0", 25 | "@ionic-native/status-bar": "4.4.0", 26 | "@ionic/pro": "1.0.16", 27 | "@ionic/storage": "2.1.3", 28 | "hoek": "^5.0.3", 29 | "ionic-angular": "3.9.2", 30 | "ionicons": "3.0.0", 31 | "rxjs": "5.5.2", 32 | "sw-toolbox": "3.6.0", 33 | "zone.js": "0.8.18" 34 | }, 35 | "devDependencies": { 36 | "@ionic/app-scripts": "3.1.5", 37 | "typescript": "2.4.2" 38 | }, 39 | "description": "An Ionic project" 40 | } 41 | -------------------------------------------------------------------------------- /resources/README.md: -------------------------------------------------------------------------------- 1 | These are Cordova resources. You can replace icon.png and splash.png and run 2 | `ionic cordova resources` to generate custom icons and splash screens for your 3 | app. See `ionic cordova resources --help` for details. 4 | 5 | Cordova reference documentation: 6 | 7 | - Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html 8 | - Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/ 9 | -------------------------------------------------------------------------------- /resources/android/icon/drawable-hdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/icon/drawable-hdpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-ldpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/icon/drawable-ldpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-mdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/icon/drawable-mdpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-xhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/icon/drawable-xhdpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-xxhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/icon/drawable-xxhdpi-icon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-xxxhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/icon/drawable-xxxhdpi-icon.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-hdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-land-hdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-ldpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-land-ldpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-mdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-land-mdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-xhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-land-xhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-xxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-land-xxhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-land-xxxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-land-xxxhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-hdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-port-hdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-ldpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-port-ldpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-mdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-port-mdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-xhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-port-xhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-xxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-port-xxhdpi-screen.png -------------------------------------------------------------------------------- /resources/android/splash/drawable-port-xxxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/android/splash/drawable-port-xxxhdpi-screen.png -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/icon.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-1024.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-40.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-40@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-40@3x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-50.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-50@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-60.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-60@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-60@3x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-72.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-72@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-76.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-76@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-83.5@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-small.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-small@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon-small@3x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon.png -------------------------------------------------------------------------------- /resources/ios/icon/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/icon/icon@2x.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-568h@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-568h@2x~iphone.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-667h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-667h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-736h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-736h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape-736h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-Landscape-736h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-Landscape@2x~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape@~ipadpro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-Landscape@~ipadpro.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-Landscape~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Portrait@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-Portrait@2x~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Portrait@~ipadpro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-Portrait@~ipadpro.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Portrait~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default-Portrait~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default@2x~iphone.png -------------------------------------------------------------------------------- /resources/ios/splash/Default@2x~universal~anyany.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default@2x~universal~anyany.png -------------------------------------------------------------------------------- /resources/ios/splash/Default~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/ios/splash/Default~iphone.png -------------------------------------------------------------------------------- /resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/resources/splash.png -------------------------------------------------------------------------------- /src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, ViewChild} from '@angular/core'; 2 | import {Nav, Platform, ToastController} from 'ionic-angular'; 3 | import { StatusBar } from '@ionic-native/status-bar'; 4 | import { SplashScreen } from '@ionic-native/splash-screen'; 5 | import {TabPage} from "../pages/tab/tab"; 6 | 7 | 8 | @Component({ 9 | templateUrl: 'app.html' 10 | }) 11 | export class MyApp { 12 | rootPage:any = TabPage; 13 | platform:any = Platform; 14 | toast: any = ToastController; 15 | backButtonPressed:boolean = false; //判断返回键是否触发 16 | @ViewChild(Nav) nav :Nav; 17 | 18 | constructor(platform: Platform, statusBar: StatusBar, toast:ToastController, splashScreen: SplashScreen) { 19 | this.platform =platform; 20 | this.toast = toast; 21 | 22 | platform.ready().then(() => { 23 | // Okay, so the platform is ready and our plugins are available. 24 | // Here you can do any higher level native things you might need. 25 | statusBar.styleDefault(); 26 | splashScreen.hide(); 27 | }); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/app/app.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { LoginPage } from './../pages/login/login'; 2 | import { NgModule, ErrorHandler } from '@angular/core'; 3 | import { BrowserModule } from '@angular/platform-browser'; 4 | import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; 5 | import { MyApp } from './app.component'; 6 | 7 | 8 | import { StatusBar } from '@ionic-native/status-bar'; 9 | import { SplashScreen } from '@ionic-native/splash-screen'; 10 | import {TabPage} from "../pages/tab/tab"; 11 | import {TabHomePage} from "../pages/tab/tab-home/tab-home"; 12 | import {TabMessagesPage} from "../pages/tab/tab-messages/tab-messages"; 13 | import {TabDiscoverPage} from "../pages/tab/tab-discover/tab-discover"; 14 | import {TabMorePage} from "../pages/tab/tab-more/tab-more"; 15 | import {TabBroadcastPage} from "../pages/tab/tab-broadcast/tab-broadcast"; 16 | import { GoodsServiceProvider } from '../providers/goods-service/goods-service'; 17 | import { LookServiceProvider } from '../providers/look-service/look-service'; 18 | import {HttpModule} from "@angular/http"; 19 | // import {LazyLoadImageModule} from "ng-lazyload-image"; 20 | import { RegisterPage } from '../pages/register/register'; 21 | 22 | @NgModule({ 23 | declarations: [ 24 | MyApp, 25 | TabPage, 26 | TabHomePage, 27 | TabMessagesPage, 28 | TabDiscoverPage, 29 | TabMorePage, 30 | TabBroadcastPage, 31 | LoginPage, 32 | RegisterPage 33 | ], 34 | imports: [ 35 | // LazyLoadImageModule, 36 | HttpModule, 37 | BrowserModule, 38 | IonicModule.forRoot(MyApp) 39 | ], 40 | bootstrap: [IonicApp], 41 | entryComponents: [ 42 | MyApp, 43 | TabPage, 44 | TabHomePage, 45 | TabMessagesPage, 46 | TabDiscoverPage, 47 | TabMorePage, 48 | TabBroadcastPage, 49 | LoginPage, 50 | RegisterPage 51 | ], 52 | providers: [ 53 | StatusBar, 54 | SplashScreen, 55 | {provide: ErrorHandler, useClass: IonicErrorHandler}, 56 | GoodsServiceProvider, 57 | LookServiceProvider, 58 | ] 59 | }) 60 | export class AppModule {} 61 | -------------------------------------------------------------------------------- /src/app/app.scss: -------------------------------------------------------------------------------- 1 | // http://ionicframework.com/docs/theming/ 2 | 3 | 4 | // App Global Sass 5 | // -------------------------------------------------- 6 | // Put style rules here that you want to apply globally. These 7 | // styles are for the entire app and not just one component. 8 | // Additionally, this file can be also used as an entry point 9 | // to import other Sass files to be included in the output CSS. 10 | // 11 | // Shared Sass variables, which can be used to adjust Ionic's 12 | // default Sass variables, belong in "theme/variables.scss". 13 | // 14 | // To declare rules for a specific mode, create a child rule 15 | // for the .md, .ios, or .wp mode classes. The mode class is 16 | // automatically applied to the element in the app. 17 | -------------------------------------------------------------------------------- /src/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | 3 | import { AppModule } from './app.module'; 4 | 5 | platformBrowserDynamic().bootstrapModule(AppModule); 6 | -------------------------------------------------------------------------------- /src/assets/css/flex.css: -------------------------------------------------------------------------------- 1 | /*! https://github.com/lzxb/flex.css */[flex],[flex]>*,[flex]>[flex]{overflow:hidden}[flex]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}[flex]>*{display:block}[flex]>[flex]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}[flex~="dir:left"]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}[flex~="dir:right"]{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-box-pack:end}[flex~="dir:top"]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}[flex~="dir:bottom"]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:end}[flex~="main:left"]{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}[flex~="main:right"]{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}[flex~="main:justify"]{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}[flex~="main:center"]{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}[flex~="cross:top"]{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}[flex~="cross:bottom"]{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;-ms-grid-row-align:flex-end;align-items:flex-end}[flex~="cross:center"]{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}[flex~="cross:baseline"]{-webkit-box-align:baseline;-webkit-align-items:baseline;-ms-flex-align:baseline;-ms-grid-row-align:baseline;align-items:baseline}[flex~="cross:stretch"]{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;-ms-grid-row-align:stretch;align-items:stretch}[flex~="box:mean"]>*,[flex~="box:first"]>*,[flex~="box:last"]>*,[flex~="box:justify"]>*{width:0;height:auto;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}[flex~="box:first"]>:first-child,[flex~="box:last"]>:last-child,[flex~="box:justify"]>:first-child,[flex~="box:justify"]>:last-child{width:auto;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}[flex~="dir:top"][flex~="box:mean"]>*,[flex~="dir:top"][flex~="box:first"]>*,[flex~="dir:top"][flex~="box:last"]>*,[flex~="dir:top"][flex~="box:justify"]>*,[flex~="dir:bottom"][flex~="box:mean"]>*,[flex~="dir:bottom"][flex~="box:first"]>*,[flex~="dir:bottom"][flex~="box:last"]>*,[flex~="dir:bottom"][flex~="box:justify"]>*{width:auto;height:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}[flex~="dir:top"][flex~="box:first"]>:first-child,[flex~="dir:top"][flex~="box:last"]>:last-child,[flex~="dir:top"][flex~="box:justify"]>:first-child,[flex~="dir:top"][flex~="box:justify"]>:last-child,[flex~="dir:bottom"][flex~="box:first"]>:first-child,[flex~="dir:bottom"][flex~="box:last"]>:last-child,[flex~="dir:bottom"][flex~="box:justify"]>:first-child [flex~="dir:bottom"][flex~="box:justify"]>:last-child{height:auto;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}[flex-box="0"]{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}[flex-box="1"]{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}[flex-box="2"]{-webkit-box-flex:2;-webkit-flex-grow:2;-ms-flex-positive:2;flex-grow:2;-webkit-flex-shrink:2;-ms-flex-negative:2;flex-shrink:2}[flex-box="3"]{-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;-webkit-flex-shrink:3;-ms-flex-negative:3;flex-shrink:3}[flex-box="4"]{-webkit-box-flex:4;-webkit-flex-grow:4;-ms-flex-positive:4;flex-grow:4;-webkit-flex-shrink:4;-ms-flex-negative:4;flex-shrink:4}[flex-box="5"]{-webkit-box-flex:5;-webkit-flex-grow:5;-ms-flex-positive:5;flex-grow:5;-webkit-flex-shrink:5;-ms-flex-negative:5;flex-shrink:5}[flex-box="6"]{-webkit-box-flex:6;-webkit-flex-grow:6;-ms-flex-positive:6;flex-grow:6;-webkit-flex-shrink:6;-ms-flex-negative:6;flex-shrink:6}[flex-box="7"]{-webkit-box-flex:7;-webkit-flex-grow:7;-ms-flex-positive:7;flex-grow:7;-webkit-flex-shrink:7;-ms-flex-negative:7;flex-shrink:7}[flex-box="8"]{-webkit-box-flex:8;-webkit-flex-grow:8;-ms-flex-positive:8;flex-grow:8;-webkit-flex-shrink:8;-ms-flex-negative:8;flex-shrink:8}[flex-box="9"]{-webkit-box-flex:9;-webkit-flex-grow:9;-ms-flex-positive:9;flex-grow:9;-webkit-flex-shrink:9;-ms-flex-negative:9;flex-shrink:9}[flex-box="10"]{-webkit-box-flex:10;-webkit-flex-grow:10;-ms-flex-positive:10;flex-grow:10;-webkit-flex-shrink:10;-ms-flex-negative:10;flex-shrink:10} -------------------------------------------------------------------------------- /src/assets/css/swiper-3.4.2.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Swiper 3.4.2 3 | * Most modern mobile touch slider and framework with hardware accelerated transitions 4 | * 5 | * http://www.idangero.us/swiper/ 6 | * 7 | * Copyright 2017, Vladimir Kharlampidi 8 | * The iDangero.us 9 | * http://www.idangero.us/ 10 | * 11 | * Licensed under MIT 12 | * 13 | * Released on: March 10, 2017 14 | */ 15 | .swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate(0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-box-lines:multiple;-moz-box-lines:multiple;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex:0 0 auto;flex-shrink:0;width:100%;height:100%;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-transition-property:-webkit-transform,height;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform,height}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;-moz-background-size:27px 44px;-webkit-background-size:27px 44px;background-size:27px 44px;background-position:center;background-repeat:no-repeat}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-o-transform:translate(0,-50%);-ms-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;-moz-transform-origin:right top;-ms-transform-origin:right top;-o-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:rgba(255,255,255,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;-moz-perspective:1200px;-o-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-moz-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;-moz-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:50%;-webkit-background-size:100%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}} -------------------------------------------------------------------------------- /src/assets/icon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/icon/favicon.ico -------------------------------------------------------------------------------- /src/assets/img/banner_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/banner_1.jpg -------------------------------------------------------------------------------- /src/assets/img/bg960@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/bg960@2x.png -------------------------------------------------------------------------------- /src/assets/img/bg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/bg@2x.png -------------------------------------------------------------------------------- /src/assets/img/buy-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/buy-logo.png -------------------------------------------------------------------------------- /src/assets/img/buy-pro1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/buy-pro1.jpg -------------------------------------------------------------------------------- /src/assets/img/common/act_coupon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/act_coupon.png -------------------------------------------------------------------------------- /src/assets/img/common/act_secskll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/act_secskll.png -------------------------------------------------------------------------------- /src/assets/img/common/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/back.png -------------------------------------------------------------------------------- /src/assets/img/common/benefit.icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/benefit.icon.png -------------------------------------------------------------------------------- /src/assets/img/common/cart.empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/cart.empty.png -------------------------------------------------------------------------------- /src/assets/img/common/common_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/common_default.png -------------------------------------------------------------------------------- /src/assets/img/common/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/qq.png -------------------------------------------------------------------------------- /src/assets/img/common/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/register.png -------------------------------------------------------------------------------- /src/assets/img/common/return_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/return_password.png -------------------------------------------------------------------------------- /src/assets/img/common/verify_code.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/common/verify_code.jpg -------------------------------------------------------------------------------- /src/assets/img/cp1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/cp1.jpg -------------------------------------------------------------------------------- /src/assets/img/cp2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/cp2.jpg -------------------------------------------------------------------------------- /src/assets/img/cp3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/cp3.jpg -------------------------------------------------------------------------------- /src/assets/img/details/detail01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/details/detail01.jpg -------------------------------------------------------------------------------- /src/assets/img/focus-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/focus-icon.png -------------------------------------------------------------------------------- /src/assets/img/headerbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/headerbg.png -------------------------------------------------------------------------------- /src/assets/img/home-ad-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-ad-1.jpg -------------------------------------------------------------------------------- /src/assets/img/home-ad-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-ad-2.jpg -------------------------------------------------------------------------------- /src/assets/img/home-ad-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-ad-3.jpg -------------------------------------------------------------------------------- /src/assets/img/home-ad-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-ad-4.jpg -------------------------------------------------------------------------------- /src/assets/img/home-ad-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-ad-5.jpg -------------------------------------------------------------------------------- /src/assets/img/home-ad-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-ad-6.jpg -------------------------------------------------------------------------------- /src/assets/img/home-headerSlide-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-headerSlide-1.jpg -------------------------------------------------------------------------------- /src/assets/img/home-headerSlide-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-headerSlide-2.jpg -------------------------------------------------------------------------------- /src/assets/img/home-headerSlide-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-headerSlide-3.jpg -------------------------------------------------------------------------------- /src/assets/img/home-headerSlide-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-headerSlide-4.jpg -------------------------------------------------------------------------------- /src/assets/img/home-headerSlide-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-headerSlide-5.jpg -------------------------------------------------------------------------------- /src/assets/img/home-theme-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-theme-1.jpg -------------------------------------------------------------------------------- /src/assets/img/home-theme-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-theme-2.jpg -------------------------------------------------------------------------------- /src/assets/img/home-theme-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-theme-3.jpg -------------------------------------------------------------------------------- /src/assets/img/home-toutiao.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/home-toutiao.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz1.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz2.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz3.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz4.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz5.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz6.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz7.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz8.jpg -------------------------------------------------------------------------------- /src/assets/img/nanz9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nanz9.jpg -------------------------------------------------------------------------------- /src/assets/img/nav0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nav0.png -------------------------------------------------------------------------------- /src/assets/img/nav1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nav1.png -------------------------------------------------------------------------------- /src/assets/img/nav2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nav2.png -------------------------------------------------------------------------------- /src/assets/img/nav3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nav3.png -------------------------------------------------------------------------------- /src/assets/img/nav4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nav4.png -------------------------------------------------------------------------------- /src/assets/img/nav5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nav5.png -------------------------------------------------------------------------------- /src/assets/img/nav6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nav6.png -------------------------------------------------------------------------------- /src/assets/img/nav7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nav7.png -------------------------------------------------------------------------------- /src/assets/img/nz1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz1.jpg -------------------------------------------------------------------------------- /src/assets/img/nz10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz10.jpg -------------------------------------------------------------------------------- /src/assets/img/nz11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz11.jpg -------------------------------------------------------------------------------- /src/assets/img/nz12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz12.jpg -------------------------------------------------------------------------------- /src/assets/img/nz2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz2.jpg -------------------------------------------------------------------------------- /src/assets/img/nz3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz3.jpg -------------------------------------------------------------------------------- /src/assets/img/nz4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz4.jpg -------------------------------------------------------------------------------- /src/assets/img/nz5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz5.jpg -------------------------------------------------------------------------------- /src/assets/img/nz6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz6.jpg -------------------------------------------------------------------------------- /src/assets/img/nz7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz7.jpg -------------------------------------------------------------------------------- /src/assets/img/nz8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz8.jpg -------------------------------------------------------------------------------- /src/assets/img/nz9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/nz9.jpg -------------------------------------------------------------------------------- /src/assets/img/safe_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/safe_icon.png -------------------------------------------------------------------------------- /src/assets/img/scroll-to-top-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/scroll-to-top-icon.png -------------------------------------------------------------------------------- /src/assets/img/seckill-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/seckill-icon.png -------------------------------------------------------------------------------- /src/assets/img/seckill_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/seckill_1.jpg -------------------------------------------------------------------------------- /src/assets/img/shop-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/shop-icon.png -------------------------------------------------------------------------------- /src/assets/img/sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/sprites.png -------------------------------------------------------------------------------- /src/assets/img/sprits_btm_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/img/sprits_btm_new.png -------------------------------------------------------------------------------- /src/assets/imgs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hzlshen/ionic-JD/60ad9abbc5d69a9ec0fddcaac767c3a28d570889/src/assets/imgs/logo.png -------------------------------------------------------------------------------- /src/assets/js/SHA1.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by andy on 14-12-25. 3 | */ 4 | /** 5 | * 6 | * Secure Hash Algorithm (SHA1) 7 | * http://www.webtoolkit.info/ 8 | * 9 | **/ 10 | 11 | function SHA1(msg) { 12 | 13 | function rotate_left(n, s) { 14 | var t4 = (n << s) | (n >>> (32 - s)); 15 | return t4; 16 | }; 17 | 18 | function lsb_hex(val) { 19 | var str = ""; 20 | var i; 21 | var vh; 22 | var vl; 23 | 24 | for (i = 0; i <= 6; i += 2) { 25 | vh = (val >>> (i * 4 + 4)) & 0x0f; 26 | vl = (val >>> (i * 4)) & 0x0f; 27 | str += vh.toString(16) + vl.toString(16); 28 | } 29 | return str; 30 | }; 31 | 32 | function cvt_hex(val) { 33 | var str = ""; 34 | var i; 35 | var v; 36 | 37 | for (i = 7; i >= 0; i--) { 38 | v = (val >>> (i * 4)) & 0x0f; 39 | str += v.toString(16); 40 | } 41 | return str; 42 | }; 43 | 44 | 45 | function Utf8Encode(string) { 46 | string = string.replace(/\r\n/g, "\n"); 47 | var utftext = ""; 48 | 49 | for (var n = 0; n < string.length; n++) { 50 | 51 | var c = string.charCodeAt(n); 52 | 53 | if (c < 128) { 54 | utftext += String.fromCharCode(c); 55 | } else if ((c > 127) && (c < 2048)) { 56 | utftext += String.fromCharCode((c >> 6) | 192); 57 | utftext += String.fromCharCode((c & 63) | 128); 58 | } else { 59 | utftext += String.fromCharCode((c >> 12) | 224); 60 | utftext += String.fromCharCode(((c >> 6) & 63) | 128); 61 | utftext += String.fromCharCode((c & 63) | 128); 62 | } 63 | 64 | } 65 | 66 | return utftext; 67 | }; 68 | 69 | var blockstart; 70 | var i, j; 71 | var W = new Array(80); 72 | var H0 = 0x67452301; 73 | var H1 = 0xEFCDAB89; 74 | var H2 = 0x98BADCFE; 75 | var H3 = 0x10325476; 76 | var H4 = 0xC3D2E1F0; 77 | var A, B, C, D, E; 78 | var temp; 79 | 80 | msg = Utf8Encode(msg); 81 | 82 | var msg_len = msg.length; 83 | 84 | var word_array = new Array(); 85 | for (i = 0; i < msg_len - 3; i += 4) { 86 | j = msg.charCodeAt(i) << 24 | msg.charCodeAt(i + 1) << 16 | 87 | msg.charCodeAt(i + 2) << 8 | msg.charCodeAt(i + 3); 88 | word_array.push(j); 89 | } 90 | 91 | switch (msg_len % 4) { 92 | case 0: 93 | i = 0x080000000; 94 | break; 95 | case 1: 96 | i = msg.charCodeAt(msg_len - 1) << 24 | 0x0800000; 97 | break; 98 | 99 | case 2: 100 | i = msg.charCodeAt(msg_len - 2) << 24 | msg.charCodeAt(msg_len - 1) << 16 | 0x08000; 101 | break; 102 | 103 | case 3: 104 | i = msg.charCodeAt(msg_len - 3) << 24 | msg.charCodeAt(msg_len - 2) << 16 | msg.charCodeAt(msg_len - 1) << 8 | 0x80; 105 | break; 106 | } 107 | 108 | word_array.push(i); 109 | 110 | while ((word_array.length % 16) != 14) word_array.push(0); 111 | 112 | word_array.push(msg_len >>> 29); 113 | word_array.push((msg_len << 3) & 0x0ffffffff); 114 | 115 | 116 | for (blockstart = 0; blockstart < word_array.length; blockstart += 16) { 117 | 118 | for (i = 0; i < 16; i++) W[i] = word_array[blockstart + i]; 119 | for (i = 16; i <= 79; i++) W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); 120 | 121 | A = H0; 122 | B = H1; 123 | C = H2; 124 | D = H3; 125 | E = H4; 126 | 127 | for (i = 0; i <= 19; i++) { 128 | temp = (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff; 129 | E = D; 130 | D = C; 131 | C = rotate_left(B, 30); 132 | B = A; 133 | A = temp; 134 | } 135 | 136 | for (i = 20; i <= 39; i++) { 137 | temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff; 138 | E = D; 139 | D = C; 140 | C = rotate_left(B, 30); 141 | B = A; 142 | A = temp; 143 | } 144 | 145 | for (i = 40; i <= 59; i++) { 146 | temp = (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff; 147 | E = D; 148 | D = C; 149 | C = rotate_left(B, 30); 150 | B = A; 151 | A = temp; 152 | } 153 | 154 | for (i = 60; i <= 79; i++) { 155 | temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff; 156 | E = D; 157 | D = C; 158 | C = rotate_left(B, 30); 159 | B = A; 160 | A = temp; 161 | } 162 | 163 | H0 = (H0 + A) & 0x0ffffffff; 164 | H1 = (H1 + B) & 0x0ffffffff; 165 | H2 = (H2 + C) & 0x0ffffffff; 166 | H3 = (H3 + D) & 0x0ffffffff; 167 | H4 = (H4 + E) & 0x0ffffffff; 168 | 169 | } 170 | 171 | var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4); 172 | 173 | return temp.toLowerCase(); 174 | 175 | } -------------------------------------------------------------------------------- /src/declarations.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Declaration files are how the Typescript compiler knows about the type information(or shape) of an object. 3 | They're what make intellisense work and make Typescript know all about your code. 4 | 5 | A wildcard module is declared below to allow third party libraries to be used in an app even if they don't 6 | provide their own type declarations. 7 | 8 | To learn more about using third party libraries in an Ionic app, check out the docs here: 9 | http://ionicframework.com/docs/v2/resources/third-party-libs/ 10 | 11 | For more info on type definition files, check out the Typescript docs here: 12 | https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html 13 | */ 14 | declare module '*'; -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ionic App 6 | 7 | 8 | 9 | - 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ionic", 3 | "short_name": "Ionic", 4 | "start_url": "index.html", 5 | "display": "standalone", 6 | "icons": [{ 7 | "src": "assets/imgs/logo.png", 8 | "sizes": "512x512", 9 | "type": "image/png" 10 | }], 11 | "background_color": "#4e8ef7", 12 | "theme_color": "#4e8ef7" 13 | } -------------------------------------------------------------------------------- /src/pages/login/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 登录 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 用户名 16 | 17 | 18 | 19 | 密码 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/pages/login/login.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { LoginPage } from './login'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | LoginPage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(LoginPage), 11 | ], 12 | }) 13 | export class LoginPageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/login/login.scss: -------------------------------------------------------------------------------- 1 | page-login { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /src/pages/login/login.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { IonicPage, NavController, NavParams } from 'ionic-angular'; 3 | 4 | /** 5 | * Generated class for the LoginPage page. 6 | * 7 | * See https://ionicframework.com/docs/components/#navigation for more info on 8 | * Ionic pages and navigation. 9 | */ 10 | 11 | @IonicPage() 12 | @Component({ 13 | selector: 'page-login', 14 | templateUrl: 'login.html', 15 | }) 16 | export class LoginPage { 17 | 18 | constructor(public navCtrl: NavController, public navParams: NavParams) { 19 | } 20 | 21 | ionViewDidLoad() { 22 | console.log('ionViewDidLoad LoginPage'); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/pages/register/register.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | register 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/pages/register/register.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { RegisterPage } from './register'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | RegisterPage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(RegisterPage), 11 | ], 12 | }) 13 | export class RegisterPageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/register/register.scss: -------------------------------------------------------------------------------- 1 | page-register { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /src/pages/register/register.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { IonicPage, NavController, NavParams } from 'ionic-angular'; 3 | 4 | /** 5 | * Generated class for the RegisterPage page. 6 | * 7 | * See https://ionicframework.com/docs/components/#navigation for more info on 8 | * Ionic pages and navigation. 9 | */ 10 | 11 | @IonicPage() 12 | @Component({ 13 | selector: 'page-register', 14 | templateUrl: 'register.html', 15 | }) 16 | export class RegisterPage { 17 | 18 | constructor(public navCtrl: NavController, public navParams: NavParams) { 19 | } 20 | 21 | ionViewDidLoad() { 22 | console.log('ionViewDidLoad RegisterPage'); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/pages/tab/good-detail/good-detail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 19 | 20 | 21 |
22 |
23 |
    24 |
  • 25 | 26 |
  • 27 |
28 |
1
29 |
30 |
31 | 32 | 33 |
34 |
若昕 韩版睡衣女冬法兰绒家居服加厚珊瑚绒女人卡通甜美睡衣秋冬套装 66651K 女 M
35 |
¥115.00
36 |
37 |
38 |
39 | 已选 40 | 66651k女 m 1件 41 |
42 |
43 | 颜色 44 |
45 | 46 | 47 |
48 |
49 |
50 | 尺寸 51 |
52 | 53 | 54 |
55 |
56 |
57 | 数量 58 |
59 | - 60 | 61 | + 62 |
63 | 64 |
65 |
66 |
67 |
68 | 送至 69 |

北京

70 |
71 |
72 | 运费 73 |

店铺单笔订单不满89元,货到付款运费10元,在线支付运费10元

74 |
75 |
76 | 服务 77 |

由澳贝琳官方旗舰店从广东广州市发货并提供售后服务

78 |
79 |
80 | 提示 81 |

该商品支持七天无理由退货

82 |
83 |
84 |
85 | 86 | 87 |
88 |
89 |
90 | 91 | 关注 92 |
93 |
94 | 95 | {{obj_cartCount.count}} 96 | 购物车 97 |
98 |
99 |
加入购物车
100 |
立即购买
101 |
102 |
103 | -------------------------------------------------------------------------------- /src/pages/tab/good-detail/good-detail.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { GoodDetailPage } from './good-detail'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | GoodDetailPage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(GoodDetailPage), 11 | ], 12 | }) 13 | export class GoodDetailPageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/tab/good-detail/good-detail.scss: -------------------------------------------------------------------------------- 1 | page-good-detail { 2 | #details input[type=radio]{ 3 | height: 0; 4 | width: 0; 5 | } 6 | 7 | #details input[text]{ 8 | padding: 0; 9 | margin-left: 10px; 10 | width: 60px; 11 | height: 30px; 12 | text-align: center; 13 | } 14 | 15 | #details .clearBoth{ 16 | clear: both; 17 | } 18 | 19 | #details .floatLeft{ 20 | float: left; 21 | } 22 | 23 | #details .chicun div span{ 24 | width: 30px; 25 | text-align: center; 26 | } 27 | #details .shuliang div{ 28 | margin-left: 7px; 29 | } 30 | #details ion-content{ 31 | overflow: scroll; 32 | background-color: #efeff4; 33 | padding-bottom: 60px; 34 | } 35 | 36 | #details i.badge { 37 | position: absolute; 38 | top: 5px; 39 | } 40 | 41 | #details div,ul,li,h1,h2,h3,img,a{ 42 | font-family:'PingHei'; 43 | font-size:16px; 44 | padding:0; 45 | margin:0; 46 | border:0; 47 | list-style:none; 48 | color:#666; 49 | font-weight:300; 50 | } 51 | #details a,span{ 52 | display:block; 53 | text-decoration:none; 54 | } 55 | #details body{ 56 | background-color:#f5f5f5; 57 | } 58 | #details #header{ 59 | display:block; 60 | background-color: #333; 61 | background-image:url('../assets/img/headerbg.png'); 62 | background-size:100% 44px; 63 | width:100%; 64 | height:44px; 65 | overflow:hidden; 66 | } 67 | #details .header-left{ 68 | width:40px; 69 | height:44px; 70 | position:absolute; 71 | } 72 | #details .header-left span{ 73 | width:20px; 74 | height:20px; 75 | margin:12px 0 0 10px; 76 | background-size:200px 200px; 77 | background-position:-20px 0; 78 | background-image:url('../assets/img/sprites.png'); 79 | } 80 | #details .header-center{ 81 | height:44px; 82 | position:absolute; 83 | left:40px; 84 | right:40px; 85 | } 86 | #details .header-center span{ 87 | width:96%; 88 | height:30px; 89 | color:#252525; 90 | text-align:center; 91 | line-height:44px; 92 | font-size:15px; 93 | font-family:'PingHei'; 94 | } 95 | #details .header-right{ 96 | width:40px; 97 | height:44px; 98 | position:absolute; 99 | right:0; 100 | } 101 | #details .header-right span{ 102 | width:20px; 103 | height:20px; 104 | margin:12px 0 0 10px; 105 | background-size:200px 200px; 106 | background-position:-60px 0; 107 | background-image:url('../assets/img/sprites.png'); 108 | } 109 | #details #view{ 110 | width:100%; 111 | height:320px; 112 | border-bottom:1px solid #dfdfdf; 113 | 114 | } 115 | #details .viewWarp{ 116 | width:320px; 117 | height:320px; 118 | margin:0 auto; 119 | overflow:hidden; 120 | position:relative; 121 | } 122 | #details .viewWarp img{ 123 | width:320px; 124 | height:320px; 125 | } 126 | #details .viewText{ 127 | position:absolute; 128 | bottom:5px; 129 | right:5px; 130 | background-color:rgba(0,0,0,.3); 131 | width:50px; 132 | height:50px; 133 | text-align:center; 134 | color:#fff; 135 | line-height:50px; 136 | border-radius:25px; 137 | font-weight:500; 138 | } 139 | #details .viewText span{ 140 | display:inline-block; 141 | font-size:20px; 142 | } 143 | #details #des{ 144 | margin:15px 10px; 145 | } 146 | #details #des .desText{ 147 | color:#000; 148 | } 149 | #details #des .desNumber{ 150 | margin-top:10px; 151 | color:#F15353; 152 | font-weight:700; 153 | font-size:22px; 154 | font-family:'微软雅黑'; 155 | } 156 | #details #list{ 157 | width:100%; 158 | height:150px; 159 | border-top:1px solid #dfdfdf; 160 | padding:10px 0 0 0; 161 | 162 | } 163 | #details #list span{ 164 | display:inline-block; 165 | color:#777; 166 | margin-bottom:10px; 167 | } 168 | #details #list div{ 169 | color:#000; 170 | } 171 | #details .listBox{ 172 | padding:3px 5px; 173 | border:1px solid #696969; 174 | color:#696969; 175 | border-radius:3px; 176 | } 177 | #details .listCurrent.listBox{ 178 | border:1px solid #f15353; 179 | color:#f15353; 180 | } 181 | #details .shuliang span{ 182 | display:block; 183 | float:left; 184 | } 185 | #details .listLeft{ 186 | margin-left:15px; 187 | padding:3px 10px; 188 | border:1px solid #696969; 189 | color:#696969; 190 | border-radius:3px 0 0 3px; 191 | } 192 | #details .listNum{ 193 | padding:3px 20px; 194 | border:1px solid #696969; 195 | color:#696969; 196 | } 197 | #details .listRight{ 198 | padding:3px 10px; 199 | border:1px solid #696969; 200 | color:#696969; 201 | border-radius:0px 3px 3px 0px; 202 | } 203 | #details #buy{ 204 | width:100%; 205 | height:50px; 206 | position:fixed; 207 | bottom:0; 208 | } 209 | #details .buyLeft{ 210 | float:left; 211 | width:40%; 212 | height:50px; 213 | background-color:rgba(0,0,0,.5); 214 | } 215 | #details .buyCenter{ 216 | float:left; 217 | width:30%; 218 | height:50px; 219 | background-color:#ffb03f; 220 | color:#fff; 221 | text-align:center; 222 | line-height:50px; 223 | font-weight:500; 224 | font-family:'微软雅黑'; 225 | } 226 | #details .buyRight{ 227 | float:left; 228 | width:30%; 229 | height:50px; 230 | background-color:#f15353; 231 | color:#fff; 232 | text-align:center; 233 | line-height:50px; 234 | font-weight:500; 235 | font-family:'微软雅黑'; 236 | } 237 | #details .buyLeft strong{ 238 | font-size:14px; 239 | color:#fff; 240 | font-weight:300; 241 | } 242 | #details .guanzhu{ 243 | width:50%; 244 | height:50px; 245 | text-align:center; 246 | float:left; 247 | } 248 | #details .gouwuche{ 249 | width:50%; 250 | height:50px; 251 | text-align:center; 252 | float:left; 253 | } 254 | #details .guanzhu span{ 255 | width:20px; 256 | height:20px; 257 | background-image:url('../assets/img/focus-icon.png'); 258 | background-size:100px 100px; 259 | margin:10px auto 0; 260 | } 261 | #details .gouwuche span{ 262 | width:27px; 263 | height:20px; 264 | background-image:url('../assets/img/sprits_btm_new.png'); 265 | background-position:0 -23px; 266 | background-size:50px 50px; 267 | margin:10px auto 0; 268 | } 269 | 270 | #details #list span{ 271 | font-size: 14px; 272 | color: #848689; 273 | margin-left: 8px; 274 | font-family: 'microsoft yahei',Verdana,Arial,Helvetica,sans-serif; 275 | } 276 | 277 | #details #otherInfo{ 278 | display: inline-block; 279 | font-family: 'microsoft yahei',Verdana,Arial,Helvetica,sans-serif; 280 | } 281 | 282 | #details #otherInfo span,p{ 283 | display: inline-block; 284 | } 285 | 286 | #details #otherInfo span{ 287 | font-size: 14px; 288 | color: #848689; 289 | float: left; 290 | margin-left: 8px; 291 | width: 10%; 292 | } 293 | 294 | #details #otherInfo p{ 295 | font-size: 14px; 296 | color: #000; 297 | padding-right: 5px; 298 | width: 80%; 299 | } 300 | } 301 | -------------------------------------------------------------------------------- /src/pages/tab/good-detail/good-detail.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { IonicPage, NavController, NavParams } from 'ionic-angular'; 3 | 4 | /** 5 | * Generated class for the GoodDetailPage page. 6 | * 7 | * See https://ionicframework.com/docs/components/#navigation for more info on 8 | * Ionic pages and navigation. 9 | */ 10 | 11 | @IonicPage() 12 | @Component({ 13 | selector: 'page-good-detail', 14 | templateUrl: 'good-detail.html', 15 | }) 16 | export class GoodDetailPage { 17 | 18 | obj_cartCount = { 19 | count: "0" 20 | } 21 | //通过后台获取到的商品详细信息 22 | obj_goodsInfo = { 23 | goodsId: "200067", 24 | description: "若昕 韩版睡衣女冬法兰绒家居服加厚珊瑚绒女人卡通甜美睡衣秋冬套装 66651K 女 M", 25 | prise: "66", 26 | picture: [], 27 | src: "", 28 | isFork: false, 29 | colorGroup: [{name: "红色", value: "red"}, {name: "蓝色", value: "blue"}], 30 | sizeGroup: [{name: "s", value: "s"}, {name: "m", value: "m"}, {name: "l", value: "l"}] 31 | }; 32 | 33 | obj_goodsDetailInfo = { 34 | goodsId: this.obj_goodsInfo.goodsId, 35 | isFork: this.obj_goodsInfo.isFork, 36 | description: this.obj_goodsInfo.description, 37 | src: this.obj_goodsInfo.src, 38 | prise: this.obj_goodsInfo.prise, 39 | color: "", 40 | size: "", 41 | number: 1 42 | } 43 | 44 | constructor(public navCtrl: NavController, public navParams: NavParams) { 45 | } 46 | 47 | ionViewDidLoad() { 48 | console.log('ionViewDidLoad GoodDetailPage'); 49 | } 50 | 51 | goBack(){ 52 | this.navCtrl.pop(); 53 | } 54 | 55 | //叠加 56 | jia1=function () { 57 | this.obj_goodsDetailInfo.number++; 58 | } 59 | // 数量减1 60 | jian1 = function () { 61 | if (this.obj_goodsDetailInfo.number != 1) { 62 | this.obj_goodsDetailInfo.number--; 63 | } 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /src/pages/tab/good-list/good-list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 15 | 16 | 31 | 32 | 33 | 34 | 39 | 40 | 41 | 42 | 43 |
44 |
45 |
46 |
47 | 48 | 49 | 50 | 51 |
52 | {{item.name}} 53 | ¥{{item.price}} 54 |
55 | {{item.haoping}}%好评 56 | {{item.buy}}人 57 |
58 |
59 |
60 |
61 |
62 |
63 | 64 | 67 | 68 | 69 |
70 |
71 | 72 | -------------------------------------------------------------------------------- /src/pages/tab/good-list/good-list.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { GoodListPage } from './good-list'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | GoodListPage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(GoodListPage), 11 | ], 12 | }) 13 | export class GoodListPageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/tab/good-list/good-list.scss: -------------------------------------------------------------------------------- 1 | page-good-list { 2 | #goodsList div,ul,li,h1,h2,h3,img,a{ 3 | font-family: 'pinghei'; 4 | font-size: 16px; 5 | padding: 0; 6 | margin: 0; 7 | border: 0; 8 | list-style: none; 9 | color: #666; 10 | font-weight: 300; 11 | } 12 | 13 | #goodsList ion-content{} 14 | 15 | #goodsList a,span{ 16 | display: block; 17 | text-decoration: none; 18 | } 19 | 20 | #goodsList body{ 21 | overflow-x: hidden; 22 | } 23 | 24 | #goodsList #header{ 25 | display: block; 26 | background-color: #333; 27 | background-image: url("../assets/img/headerbg.png"); 28 | background-size: 100% 44px; 29 | width: 100%; 30 | height: 44px; 31 | overflow: hidden; 32 | } 33 | 34 | #goodsList .header-left{ 35 | width: 40px; 36 | height: 44px; 37 | position: absolute; 38 | } 39 | 40 | #goodsList .header-left span{ 41 | width: 20px; 42 | height: 20px; 43 | margin: 12px 0 0 10px; 44 | background-size: 200px 200px; 45 | background-position: -20px 0; 46 | background-image: url("../assets/img/sprites.png"); 47 | } 48 | 49 | #goodsList .header-center{ 50 | height: 44px; 51 | position: absolute; 52 | left: 40px; 53 | right: 44px; 54 | } 55 | 56 | #goodsList .header-center span{ 57 | width:96%; 58 | height:30px; 59 | margin:6px 2%; 60 | background-color:#fff; 61 | border:2px solid #dfdfdf; 62 | border-radius: 5px; 63 | } 64 | #goodsList .header-right{ 65 | width:40px; 66 | height:44px; 67 | position:absolute; 68 | right:0; 69 | } 70 | #goodsList .header-right span{ 71 | width:20px; 72 | height:20px; 73 | margin:12px 0 0 10px; 74 | background-size:200px 200px; 75 | background-position:-60px 0; 76 | background-image:url('../assets/img/sprites.png'); 77 | } 78 | #goodsList #nav{ 79 | width:100%; 80 | height:42px; 81 | overflow:hidden; 82 | position:relative; 83 | background-color: #fff; 84 | } 85 | #goodsList .nav-all{ 86 | width:90px; 87 | height:41px; 88 | border-bottom:1px solid #dfdfdf; 89 | border-right:1px solid #dfdfdf; 90 | position:absolute; 91 | text-align:center; 92 | line-height:41px; 93 | color:red; 94 | } 95 | #goodsList .nav-warp{ 96 | height:50px; 97 | overflow-x:scroll; 98 | position:absolute; 99 | left:90px; 100 | right:0; 101 | } 102 | #goodsList .nav-warp ul{ 103 | width:560px; 104 | height:41px; 105 | border-bottom:1px solid #dfdfdf; 106 | } 107 | #goodsList .nav-warp li{ 108 | float:left; 109 | width:79px; 110 | height:41px; 111 | text-align:center; 112 | line-height:41px; 113 | border-right:1px solid #dfdfdf; 114 | } 115 | #goodsList .pro{ 116 | width:100%; 117 | overflow:hidden; 118 | } 119 | #goodsList .pro-warp{ 120 | background-color:#f3f5f7; 121 | width:100%; 122 | height:105px; 123 | border-top:1px solid #dfdfdf; 124 | border-bottom:1px solid #dfdfdf; 125 | } 126 | #goodsList .pro-body{ 127 | width:100%; 128 | overflow:hidden; 129 | } 130 | #goodsList .pro-body-des{ 131 | display:inline-block; 132 | position:absolute; 133 | left:8px; 134 | right:0; 135 | } 136 | #goodsList .pro-body-des img{ 137 | width:79px; 138 | height:79px; 139 | border:1px solid #dfdfdf; 140 | margin:10px 0 0 10px; 141 | } 142 | #goodsList .pro-body-des-text{ 143 | font-size:12px; 144 | position:absolute; 145 | left:101px; 146 | right:0; 147 | top:10px; 148 | bottom:10px; 149 | } 150 | #goodsList .pro-body-des-text span{ 151 | height:38px; 152 | overflow: hidden; 153 | width:85%; 154 | } 155 | #goodsList .pro-body-des-text b{ 156 | font-weight:300; 157 | margin-top:5px; 158 | display:block; 159 | color:red; 160 | } 161 | #goodsList .pro-body-des-con{ 162 | margin-top:5px; 163 | } 164 | #goodsList .pro-body-des-con span{ 165 | float:left; 166 | font-size:14px; 167 | margin-right:20px; 168 | width:30%; 169 | } 170 | 171 | 172 | } 173 | -------------------------------------------------------------------------------- /src/pages/tab/good-list/good-list.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { IonicPage, NavController, NavParams } from 'ionic-angular'; 3 | import {GoodsServiceProvider} from "../../../providers/goods-service/goods-service"; 4 | import {GoodDetailPage} from "../good-detail/good-detail"; 5 | 6 | 7 | @IonicPage() 8 | @Component({ 9 | selector: 'page-good-list', 10 | templateUrl: 'good-list.html', 11 | }) 12 | export class GoodListPage { 13 | 14 | index; 15 | obj_goodsListData=[]; 16 | 17 | constructor( 18 | public goodsService:GoodsServiceProvider, 19 | public navCtrl: NavController, 20 | public navParams: NavParams) { 21 | } 22 | 23 | goods:any; 24 | errorMessage:string; 25 | 26 | ionViewDidLoad() { 27 | 28 | this.index= this.navParams.get('item'); 29 | console.log('index'+this.index); 30 | this.loadData(); 31 | 32 | } 33 | 34 | private loadNetData(refresher: any) { 35 | this.goodsService.getGoodLists().subscribe( 36 | countries => this.obj_goodsListData = countries, 37 | error => this.errorMessage = error, 38 | function complete() { 39 | refresher.complete(); 40 | }, 41 | ); 42 | } 43 | 44 | private loadData(){ 45 | this.goodsService.getGoodLists().subscribe( 46 | countries=>this.obj_goodsListData=countries, 47 | error=>this.errorMessage=error, 48 | ); 49 | } 50 | 51 | doInfinite(infiniteScroll){ 52 | console.log("新年好!"); 53 | setTimeout(()=>{ 54 | infiniteScroll.complete(); 55 | },500); 56 | } 57 | 58 | doRefresh(refresher){ 59 | this.loadNetData(refresher); 60 | } 61 | 62 | goBack() { 63 | this.navCtrl.pop(); 64 | } 65 | startPage(index: number) { 66 | this.navCtrl.push(GoodDetailPage, { 67 | item: index 68 | }); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/pages/tab/tab-broadcast/tab-broadcast.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 17 | {{tab.Name}} 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | {{item.OriginStoreName}} 31 | 32 | 33 |

35 | {{ item.ProductName}}

36 |
37 |
38 | 39 | {{item.DiscountRate+"折"}} 40 |

{{ "月销"+item.SalesVolume}}

41 |
42 | 43 | {{item.PromotionInfoPrice}} 46 |
47 | {{item.QuanInfo}} 49 |
50 |
51 | 52 |
53 | 54 |
55 |
56 |
57 |
58 | -------------------------------------------------------------------------------- /src/pages/tab/tab-broadcast/tab-broadcast.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { TabBroadcastPage } from './tab-broadcast'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TabBroadcastPage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(TabBroadcastPage), 11 | ], 12 | }) 13 | export class TabBroadcastPageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/tab/tab-broadcast/tab-broadcast.scss: -------------------------------------------------------------------------------- 1 | page-tab-broadcast { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /src/pages/tab/tab-broadcast/tab-broadcast.ts: -------------------------------------------------------------------------------- 1 | import {Component, ViewChild} from '@angular/core'; 2 | import { NavController, NavParams, Slides} from 'ionic-angular'; 3 | import { LookServiceProvider } from "../../../providers/look-service/look-service"; 4 | import {GOODLIST_head_URL} from "../../../providers/Constants"; 5 | 6 | @Component({ 7 | selector: 'page-tab-broadcast-page', 8 | templateUrl: 'tab-broadcast.html', 9 | }) 10 | export class TabBroadcastPage { 11 | @ViewChild('mySlider') slider: Slides; 12 | tabToShow: Array = [true, true, true, true, true, true, true, true, true]; 13 | scrollableTabsopts: any = {}; 14 | obj_CategorysListData = []; 15 | obj_GoodsListData = []; 16 | tabsPlacement: string = "top"; 17 | errorMessage: string; 18 | Image_head_Url: string; 19 | 20 | constructor(public navCtrl: NavController, public navParams: NavParams, public lookservice:LookServiceProvider) { 21 | this.Image_head_Url=GOODLIST_head_URL; 22 | } 23 | 24 | ionViewDidLoad() { 25 | this.lookservice.getAllcategory().subscribe( 26 | countries => this.obj_CategorysListData = countries, 27 | error => this.errorMessage = error, 28 | function complete() { 29 | }, 30 | ); 31 | this.lookservice.getGoodsList().subscribe( 32 | countries => this.obj_GoodsListData = countries, 33 | error => this.errorMessage = error, 34 | function complete() { 35 | }, 36 | ); 37 | } 38 | 39 | 40 | selectedFriends(index) { 41 | console.log("Segment changed to", index); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/pages/tab/tab-discover/tab-discover.html: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 23 |
24 |
25 |
26 | 29 |
30 |
31 | 热卖品类 32 |
33 |
34 |
  • 35 | 36 | {{item.name}} 37 |
  • 38 |
    39 |
    40 | 冬季新品 41 |
    42 |
    43 |
  • 44 | 45 | {{item.name}} 46 |
  • 47 |
    48 |
    49 |
    50 |
    51 |
    52 |
    53 | -------------------------------------------------------------------------------- /src/pages/tab/tab-discover/tab-discover.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { TabDiscoverPage } from './tab-discover'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TabDiscoverPage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(TabDiscoverPage), 11 | ], 12 | }) 13 | export class TabDiscoverPageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/tab/tab-discover/tab-discover.scss: -------------------------------------------------------------------------------- 1 | page-tab-discover { 2 | #category{ 3 | background-image: none; 4 | background-color: white; 5 | } 6 | 7 | #category .has-header{ 8 | top:0; 9 | } 10 | 11 | #category div,ul,li,h1,h2,h3,img,a{ 12 | font-family: '微软雅黑'; 13 | font-size: 16px; 14 | padding: 0; 15 | margin: 0; 16 | border: 0; 17 | list-style: none; 18 | color: #666; 19 | font-weight: 300; 20 | } 21 | 22 | #category a,span{ 23 | display: block; 24 | text-decoration: none; 25 | } 26 | 27 | #category body{ 28 | overflow: hidden; 29 | } 30 | 31 | #category #header{ 32 | display: block; 33 | background-color: #333; 34 | background-image:url('../assets/img/headerbg.png'); 35 | background-size: 100% 44px; 36 | width: 100%; 37 | height: 44px; 38 | overflow: hidden; 39 | } 40 | 41 | #category .header-left{ 42 | width: 40px; 43 | height: 44px; 44 | position: absolute; 45 | } 46 | 47 | #category .header-left span{ 48 | width: 20px; 49 | height: 20px; 50 | margin: 12px 0 0 10px; 51 | background-size: 200px 200px; 52 | background-position: -20px 0; 53 | background-image: url("../assets/img/sprites.png"); 54 | } 55 | #category .header-center span{ 56 | width: 96%; 57 | height: 30px; 58 | margin: 6px 2%; 59 | background-color: white; 60 | border: 2px solid #dfdfdf; 61 | border-radius: 5px; 62 | } 63 | #category .header-right{ 64 | width: 40px; 65 | height: 40px; 66 | position: absolute; 67 | top:0; 68 | } 69 | #category .header-right span{ 70 | width: 20px; 71 | height: 20px; 72 | margin: 12px 0 0 10px; 73 | background-size: 200px 200px; 74 | background-image: url("../assets/sprites.png"); 75 | } 76 | #category #nav{ 77 | position: absolute; 78 | top: 45px; 79 | bottom: 0; 80 | width: 90px; 81 | overflow: hidden; 82 | } 83 | 84 | #category #nav ul{ 85 | display: block; 86 | width: 100px; 87 | height: 100%; 88 | overflow-x: hidden; 89 | overflow-y: scroll; 90 | } 91 | #category #nav ul li{ 92 | border-bottom: 1px solid #e0e0e0; 93 | text-align: center; 94 | line-height: 50px; 95 | width: 89px; 96 | height: 49px; 97 | font-size: 12px; 98 | } 99 | 100 | #category #nav .nav-blur{ 101 | color: #252525; 102 | border-right: 1px solid #e0e0e0; 103 | background-color: #f3f4f6; 104 | } 105 | 106 | #category #nav .nav-current{ 107 | color: red; 108 | border-right: 1px solid white; 109 | background-color: white; 110 | } 111 | #category #pro{ 112 | position: absolute; 113 | left: 90px; 114 | top: 45px; 115 | right: 0; 116 | bottom: 0;overflow: hidden; 117 | } 118 | 119 | #category .pro-scroll{ 120 | width: 200%; 121 | height: 100%; 122 | overflow-y: scroll; 123 | } 124 | #category .pro-warp{ 125 | width: 50%; 126 | background-color: white; 127 | } 128 | 129 | #category #pro .banner{ 130 | margin: 10px 12px; 131 | height: 94px; 132 | } 133 | #category #pro img{ 134 | width: 100%; 135 | height: 100%; 136 | } 137 | #category #nav .content{ 138 | overflow: hidden; 139 | } 140 | #category #pro .content-title{ 141 | margin-top: 15px; 142 | font-size: 12px; 143 | font-weight: 700; 144 | padding-left: 10px; 145 | font-family: '宋体'; 146 | } 147 | #category #pro .content-body{ 148 | margin:0px 12px; 149 | overflow:hidden; 150 | } 151 | #category #pro .content-body-list{ 152 | width:33%; 153 | height: 90px; 154 | margin-top:10px; 155 | float:left; 156 | } 157 | #category #pro .content-body-list img{ 158 | width:100%; 159 | height: 70%; 160 | } 161 | #category #pro .content-body-list span{ 162 | font-size:14px; 163 | text-align:center; 164 | font-family:'宋体'; 165 | } 166 | 167 | } 168 | -------------------------------------------------------------------------------- /src/pages/tab/tab-discover/tab-discover.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { IonicPage, NavController, NavParams } from 'ionic-angular'; 3 | import {GoodListPage} from "../good-list/good-list"; 4 | 5 | @IonicPage() 6 | @Component({ 7 | selector: 'page-tab-discover', 8 | templateUrl: 'tab-discover.html', 9 | }) 10 | export class TabDiscoverPage { 11 | 12 | public categoryData =[]; 13 | public categoryDetailData =[]; 14 | public select =0; 15 | 16 | 17 | constructor(public navCtrl: NavController, public navParams: NavParams) { 18 | } 19 | 20 | ionViewDidLoad() { 21 | // this.categoryData =this. 22 | console.log('ionViewDidLoad TabDiscoverPage'); 23 | } 24 | 25 | //数据 26 | private getCategoryDetailData(typeNumber:number){ 27 | if(typeNumber == 102){ 28 | this.categoryDetailData =[ 29 | { 30 | name:"毛呢大衣", 31 | src:"assets/img/nz1.jpg", 32 | typeNumber:'10001' 33 | },{ 34 | name:"羽绒服", 35 | src:"assets/img/nz2.jpg", 36 | typeNumber:'10002' 37 | },{ 38 | name:"针织衫", 39 | src:"assets/img/nz3.jpg", 40 | typeNumber:'10003' 41 | },{ 42 | name:"连衣裙", 43 | src:"assets/img/nz4.jpg", 44 | typeNumber:'10004' 45 | },{ 46 | name:"棉服", 47 | src:"assets/img/nz5.jpg", 48 | typeNumber:'10005' 49 | },{ 50 | name:"长袖T虚", 51 | src:"assets/img/nz6.jpg", 52 | typeNumber:'10006' 53 | },{ 54 | name:"羊绒衫", 55 | src:"assets/img/nz7.jpg", 56 | typeNumber:'10007' 57 | },{ 58 | name:"衬衫", 59 | src:"assets/img/nz8.jpg", 60 | typeNumber:'10008' 61 | },{ 62 | name:"风衣", 63 | src:"assets/img/nz9.jpg", 64 | typeNumber:'10009' 65 | },{ 66 | name:"皮衣", 67 | src:"assets/img/nz10.jpg", 68 | typeNumber:'100010' 69 | },{ 70 | name:"休闲裤", 71 | src:"assets/img/nz11.jpg", 72 | typeNumber:'100011' 73 | },{ 74 | name:"牛子裤", 75 | src:"assets/img/nz12.jpg", 76 | typeNumber:'100012' 77 | } 78 | ] 79 | } else { 80 | this.categoryDetailData = [ 81 | { 82 | name: "夹克", 83 | src: "assets/img/nanz1.jpg", 84 | typeNumber: '10013' 85 | }, 86 | { 87 | name: "衬衫", 88 | src: "assets/img/nanz2.jpg", 89 | typeNumber: '10014' 90 | }, 91 | { 92 | name: "牛仔裤", 93 | src: "assets/img/nanz3.jpg", 94 | typeNumber: '10015' 95 | }, 96 | { 97 | name: "羽绒服", 98 | src: "assets/img/nanz4.jpg", 99 | typeNumber: '10016' 100 | }, 101 | 102 | { 103 | name: "T恤", 104 | src: "assets/img/nanz5.jpg", 105 | typeNumber: '10017' 106 | }, 107 | { 108 | name: "休闲裤", 109 | src: "assets/img/nanz6.jpg", 110 | typeNumber: '10018' 111 | }, 112 | { 113 | name: "卫衣", 114 | src: "assets/img/nanz7.jpg", 115 | typeNumber: '10019' 116 | }, 117 | { 118 | name: "针织衫", 119 | src: "assets/img/nanz8.jpg", 120 | typeNumber: '10020' 121 | }, 122 | { 123 | name: "棉服", 124 | src: "assets/img/nanz9.jpg", 125 | typeNumber: '10021' 126 | } 127 | ]; 128 | } 129 | } 130 | 131 | //左列表 132 | private getCategoryData(){ 133 | return [ 134 | { 135 | name:"潮流女装", 136 | typeNumber:'102', 137 | isSelect:true 138 | }, 139 | { 140 | name:"品牌男装", 141 | typeNumber:'103', 142 | isSelect:true 143 | }, 144 | { 145 | name:"热门推荐", 146 | typeNumber:'101', 147 | isSelect:true 148 | }, 149 | { 150 | name:"内衣配饰", 151 | typeNumber:'104', 152 | isSelect:true 153 | }, 154 | { 155 | name:"家用电器", 156 | typeNumber:'105', 157 | isSelect:true 158 | }, 159 | { 160 | name:"电脑办公", 161 | typeNumber:'106', 162 | isSelect:true 163 | }, 164 | { 165 | name:"手机数码", 166 | typeNumber:'107', 167 | isSelect:true 168 | }, 169 | { 170 | name:"母婴频道", 171 | typeNumber:'108', 172 | isSelect:true 173 | }, 174 | { 175 | name:"图书", 176 | typeNumber:'109', 177 | isSelect:true 178 | }, 179 | { 180 | name:"家居家纺", 181 | typeNumber:'110', 182 | isSelect:true 183 | }, 184 | { 185 | name:"居家生活", 186 | typeNumber:'111', 187 | isSelect:true 188 | }, 189 | { 190 | name:"家具建材", 191 | typeNumber:'111', 192 | isSelect:true 193 | }, 194 | { 195 | name:"居家生活", 196 | typeNumber:'112', 197 | isSelect:true 198 | }, 199 | { 200 | name:"热门推荐", 201 | typeNumber:'101', 202 | isSelect:true 203 | }, 204 | { 205 | name:"居家生活", 206 | typeNumber:'101', 207 | isSelect:true 208 | } 209 | ]; 210 | } 211 | 212 | categoryLeftClick = function (index: number) { 213 | console.log("index"+index); 214 | 215 | this.categoryData[this.select].isSelect = false; 216 | let data = this.categoryData[index]; 217 | data.isSelect = true; 218 | this.select = index; 219 | }; 220 | 221 | startPage(index:number){ 222 | this.navCtrl.push(GoodListPage,{ 223 | item:index 224 | }); 225 | } 226 | goBack(){ 227 | console.log('goBack'); 228 | } 229 | 230 | } 231 | -------------------------------------------------------------------------------- /src/pages/tab/tab-home/tab-home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 | 6 |
    7 |
    8 | 11 | 12 | 13 |
    14 | 15 |
    16 |
    17 | 20 |
    21 |
    22 | 23 |
    24 | 25 |
    26 |
    27 |
    28 | {{item.alt}} 29 |
    30 |
    31 | 32 |
    33 |
    34 | 35 | 36 | 66 | 67 | 68 |
    69 | 70 |
    71 | 兰博丹尼 可爱零钱包 5555 72 |
    73 |
    74 | 75 | 76 |
    77 |
    78 | 79 |

    掌上秒杀

    80 |
    81 | 0 82 | 0 83 | : 84 | 0 85 | 0 86 | : 87 | 0 88 | 0 89 |
    90 |
    91 | 更多> 92 |
    93 |
    94 |
      95 |
    • 96 | 97 | ¥333.22 98 | ¥15.98 99 |
    • 100 |
    • 101 | 102 | ¥11.15 103 | ¥222.10 104 |
    • 105 |
    • 106 | 107 | ¥46.26 108 | 99.81 109 |
    • 110 |
    111 |
    112 | 113 | 114 |
    115 |
    116 | 主题街 117 |
    118 |
    119 |
    120 | 121 |
    122 |
    123 | 124 | 125 |
    126 |
    127 |
    128 | 129 | 130 |
    131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 |
    143 | 144 | 145 |
    146 |
    147 | 超值购 148 |
    149 |
    150 |
    151 | 152 |
    153 |
    154 | 155 | 156 |
    157 |
    158 |
    159 | 160 | 161 |
    162 |
    163 |
    164 | -------------------------------------------------------------------------------- /src/pages/tab/tab-home/tab-home.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { TabHomePage } from './tab-home'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TabHomePage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(TabHomePage), 11 | ], 12 | }) 13 | export class TabHomePageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/tab/tab-home/tab-home.scss: -------------------------------------------------------------------------------- 1 | page-tab-home { 2 | .swiper-container{ 3 | width: 100%; 4 | height:180px; 5 | text-align: center; 6 | font-size: 25px; 7 | color: #ffffff; 8 | .swiper-slide{} 9 | .swiper-img{ 10 | min-height:100px; 11 | width: 100%; 12 | height:auto; 13 | top: 0; 14 | left:0; 15 | } 16 | } 17 | .swiper-container2 { 18 | width: 100%; 19 | height: 140px; 20 | margin: 7px auto; 21 | .swiper-slide { 22 | text-align: center; 23 | font-size: 18px; 24 | background: #fff; 25 | /* Center slide text vertically */ 26 | display: -webkit-box; 27 | display: -ms-flexbox; 28 | display: -webkit-flex; 29 | display: flex; 30 | -webkit-box-pack: center; 31 | -ms-flex-pack: center; 32 | -webkit-justify-content: center; 33 | justify-content: center; 34 | -webkit-box-align: center; 35 | -ms-flex-align: center; 36 | -webkit-align-items: center; 37 | align-items: center; 38 | padding: 4px; 39 | img { 40 | width: 120px; 41 | height: 100px; 42 | } 43 | p { 44 | margin: 0 !important; 45 | color: #636363; 46 | font-size: 1.4rem; 47 | } 48 | } 49 | } 50 | 51 | #home ion-content{ 52 | overflow: scroll; 53 | } 54 | 55 | //头部搜索栏 56 | #home .headerBar{ 57 | background-color: transparent; 58 | position: fixed; 59 | top: 0; 60 | z-index: 2; 61 | display: inline-block; 62 | width: 100%; 63 | height: 35px; 64 | } 65 | 66 | #home #headerBar-bg{ 67 | background-color: #c91523; 68 | opacity: 0; 69 | height:35px; 70 | position: absolute; 71 | width: 100%; 72 | } 73 | 74 | #home .headerBar-logo{ 75 | position: absolute; 76 | margin: 0; 77 | padding: 0; 78 | width: 56px; 79 | height:35px; 80 | display: inline-block; 81 | } 82 | 83 | #home .headerBar-logo i{ 84 | display: inline-block; 85 | height: 21px; 86 | width: 56px; 87 | background: url("../assets/img/sprites.png")no-repeat; 88 | background-position: 0 -109px; 89 | background-size: 200px 200px; 90 | margin-left: 7px; 91 | margin-top: 7px; 92 | } 93 | #home .header-search{ 94 | position: absolute; 95 | left: 66px; 96 | right: 40px; 97 | width: auto; 98 | height: 25px; 99 | margin-top: 5px; 100 | color:#ffffff; 101 | display: inline-block; 102 | background-color: #fff; 103 | border-radius: 15px; 104 | } 105 | 106 | #home .header-search span{ 107 | display: inline-block; 108 | height: 20px; 109 | width: 20px; 110 | background: url("../assets/img/sprites.png")no-repeat -60px -109px; 111 | background-size: 200px 200px; 112 | margin-left: 5px; 113 | margin-top:3px; 114 | } 115 | 116 | #home .header-search div{ 117 | display: inline-block; 118 | height:100%; 119 | width: auto; 120 | } 121 | 122 | #home .header-search div input{ 123 | border: 0; 124 | background: 0; 125 | display: inline-block; 126 | font-size: 13px; 127 | line-height:1.2em; 128 | height: 1.4em; 129 | width: 100%; 130 | vertical-align: middle; 131 | margin-top: -15px; 132 | color: #989191; 133 | } 134 | 135 | #home .btn-login{ 136 | width: 30px; 137 | height:inherit; 138 | position: absolute; 139 | right: 7px; 140 | display: inline-block; 141 | } 142 | #home .btn-login span{ 143 | margin-top: 7px; 144 | color: #ffffff; 145 | font-size: 15px; 146 | display: inline-block; 147 | } 148 | 149 | //功能导航 150 | #home #nav{ 151 | height: 160px; 152 | width: 100%; 153 | padding: 0 3%; 154 | background-color: #ffffff; 155 | overflow: hidden; 156 | box-shadow: 0 1px 1px #ebebeb; 157 | } 158 | 159 | #home #nav span{ 160 | display: block; 161 | float: left; 162 | width: 25%; 163 | height: 60px; 164 | margin-top: 16px; 165 | } 166 | #home #nav span img{ 167 | display: block; 168 | width: 40px; 169 | height: 40px; 170 | margin:0 auto; 171 | } 172 | #home #nav span h2{ 173 | font-size: 14px; 174 | font-weight: 300; 175 | text-align: center; 176 | margin-top: 10px; 177 | } 178 | 179 | //京东头条 180 | #home .toutiao{ 181 | margin-top: 10px; 182 | position: relative; 183 | height:42px; 184 | width: 100%; 185 | background-color: white; 186 | align-items: center; 187 | display: -webkit-flex; 188 | padding-left: 5px; 189 | padding-right: 5px; 190 | } 191 | 192 | #home .toutiao img{ 193 | float: left; 194 | height: 28px; 195 | width: 25%; 196 | display: inline-block; 197 | } 198 | 199 | #home .toutiao #toutiaoSlider{ 200 | width: 75%; 201 | float: left; 202 | margin-top: -2px; 203 | margin-left: 10px; 204 | align-items: center; 205 | display: -webkit-flex; 206 | height: 10%; 207 | } 208 | 209 | //秒杀 210 | #home #content{ 211 | margin: 10px 5px; 212 | background-color: #fff; 213 | box-shadow: 0 1px 1px #dcdcdc; 214 | } 215 | #home .content-top{ 216 | height: 32px; 217 | overflow: hidden; 218 | } 219 | 220 | #home .content-top{ 221 | display: block; 222 | width: 16px; 223 | height: 20px; 224 | margin: 4px 4px 0 4px; 225 | background-image:url('../assets/img/seckill-icon.png'); 226 | background-size: 16px 20px; 227 | float: left; 228 | } 229 | 230 | #home .content-top h2{ 231 | float: left; 232 | font-size: 15px; 233 | color: #f00; 234 | line-height: 30px; 235 | margin-right: 10px; 236 | margin-top: 0; 237 | } 238 | 239 | #home .content-time span{ 240 | background-image:none; 241 | margin:5px 1px; 242 | width:5px; 243 | color:#5d5d5d; 244 | font-size:14px; 245 | font-weight:700; 246 | text-align:center; 247 | 248 | } 249 | 250 | #home .content-time .time-text{ 251 | color: #ffffff; 252 | font-size: 16px; 253 | width: 15px; 254 | font-weight: 300; 255 | background-color: #5d5d5d; 256 | } 257 | 258 | #home .content-more{ 259 | float: right; 260 | line-height: 30px; 261 | margin-right: 5px; 262 | font-size: 14px; 263 | } 264 | 265 | #home .content-btn{ 266 | padding-top: 7px; 267 | overflow: hidden; 268 | } 269 | 270 | #home .content-btn li{ 271 | width: 33.3%; 272 | float: left; 273 | } 274 | 275 | #home .content-btn li img{ 276 | display: block; 277 | border-right: 1px solid #e6e6e6; 278 | margin: 0; 279 | padding: 0; 280 | height:100px; 281 | width: 100%; 282 | } 283 | #home .toutiao img{ 284 | float: left; 285 | height: 28px; 286 | width: 25%; 287 | display: inline-block; 288 | } 289 | 290 | 291 | #home .content-btn li span{ 292 | display: block; 293 | text-align: center; 294 | font-size: 14px; 295 | } 296 | 297 | #home .seckill-now{ 298 | color: #f15353; 299 | } 300 | 301 | #home .seckill-old{ 302 | text-decoration: line-through; 303 | } 304 | 305 | //广告 306 | #home .ad ion-slide { 307 | 308 | } 309 | 310 | #home .ad ion-slide img { 311 | height: 15%; 312 | width: 100%; 313 | } 314 | 315 | #home .floor{ 316 | margin: 0 5px 5px; 317 | background-color:#fff; 318 | box-shadow:0 1px 1px #dcdcdc; 319 | overflow:hidden; 320 | } 321 | 322 | #home .floor-title{ 323 | font-size: 15px; 324 | padding:8px 0 7px 5px; 325 | } 326 | 327 | #home .floor-title:before{ 328 | display: inline-block; 329 | content: ''; 330 | width: 3px; 331 | height: 12px; 332 | background-color: #d8505c; 333 | margin: 1px 7px 0 0 ; 334 | } 335 | 336 | #home .floor-product{ 337 | width: 100%; 338 | } 339 | 340 | #home .product-list{ 341 | width: 50%; 342 | overflow: hidden; 343 | float: left; 344 | } 345 | 346 | #home .product-list img{ 347 | width: 100%; 348 | display: block; 349 | border-top: 1px solid #eee; 350 | } 351 | 352 | #home .floor-left{ 353 | border-right: 1px solid #eee; 354 | margin-left: -1px; 355 | } 356 | 357 | //置顶 358 | #home .back_top{ 359 | width: 35px; 360 | height: 35px; 361 | position: fixed; 362 | bottom: 55px; 363 | right: 10px; 364 | background: url('../assets/img/scroll-to-top-icon.png') no-repeat; 365 | background-size: 35px 35px; 366 | opacity: 1; 367 | transition: all .3s ease 0s; 368 | -webkit-transition: all .3s ease 0s; 369 | z-index: 100; 370 | } 371 | 372 | .password-content{ 373 | display: flex; 374 | flex-direction: row; 375 | border: 1px solid #EEEEEE; 376 | background-color: white; 377 | width: 90%; 378 | margin-left: 5%; 379 | margin-right: 5%; 380 | margin-top: 15px; 381 | border-radius: 5px; 382 | border: 1px solid #EEEEEE; 383 | } 384 | 385 | .content #password{ 386 | type: "password" 387 | } 388 | 389 | #btn_login { 390 | width: 90%; 391 | height: 45px; 392 | margin-left: 5%; 393 | margin-right: 5%; 394 | border-radius: 5px; 395 | border: 1px solid #EEEEEE; 396 | display: flex; 397 | justify-content: center; 398 | align-items: center; 399 | margin-top: 35px; 400 | background-color: #EEEEEE; 401 | } 402 | 403 | #register{ 404 | width: 90%; 405 | height: 45px; 406 | margin-left: 5%; 407 | margin-right: 5%; 408 | border-radius: 5px; 409 | border: 1px solid red; 410 | display: flex; 411 | justify-content: center; 412 | align-items: center; 413 | margin-top: 25px; 414 | background-color: white; 415 | } 416 | .div_login_check{ 417 | width: 90%; 418 | margin-left: 5%; 419 | margin-right: 5%; 420 | display: flex; 421 | margin-top: 15px; 422 | } 423 | #checkbox_login{ 424 | 425 | } 426 | .div_bttom_function{ 427 | width: 90%; 428 | margin-top: 10px; 429 | margin-left: 5%; 430 | margin-right: 5%; 431 | display: flex; 432 | justify-content: space-between; 433 | } 434 | 435 | } 436 | -------------------------------------------------------------------------------- /src/pages/tab/tab-home/tab-home.ts: -------------------------------------------------------------------------------- 1 | import { LoginPage } from './../../login/login'; 2 | import {Component, ElementRef, ViewChild} from '@angular/core'; 3 | import { IonicPage, NavController, NavParams } from 'ionic-angular'; 4 | // import * as Swiper from 'swiper'; 5 | // import * as Swiper from 'swiper'; 6 | // declare var Swiper; 7 | 8 | @IonicPage() 9 | @Component({ 10 | selector: 'page-tab-home', 11 | templateUrl: 'tab-home.html', 12 | }) 13 | export class TabHomePage { 14 | @ViewChild('lyScroll') 15 | lyScrollDiv: ElementRef; 16 | @ViewChild('headBgColor') 17 | greetBgDiv: ElementRef; 18 | @ViewChild('btnBackTop') 19 | bBackTop: ElementRef; 20 | 21 | // oSwiper1: any = null; 22 | public headerSlideData = []; 23 | 24 | constructor(public navCtrl: NavController, public navParams: NavParams, public el: ElementRef) { 25 | } 26 | 27 | ionViewDidLoad() { 28 | // this.initHeaderSlide(); 29 | this.headerSlideData = this.getHeaderSlideData(); 30 | this.headerChangeColor(); 31 | this.goTop(); 32 | // this.initToutiaoSlide(); 33 | this.countdown(); 34 | } 35 | 36 | 37 | private countdown() { 38 | let timer; 39 | if(timer) 40 | clearInterval(timer); 41 | // 倒计时 42 | var timeObj={ 43 | h:1, 44 | m:37, 45 | s:13 46 | }; 47 | var timeStr=toDouble(timeObj.h)+toDouble(timeObj.m)+toDouble(timeObj.s); 48 | var timeList=document.getElementsByClassName('time-text'); 49 | for(var i=0;i500){ 91 | console.dir("小雨200") 92 | btTop.style.opacity = 1; 93 | }else{ 94 | console.dir("大雨200") 95 | btTop.style.opacity = 0; 96 | } 97 | },false); 98 | 99 | btTop.onclick = function(){ 100 | lyBg.scrollTop = 0; 101 | } 102 | } 103 | 104 | private headerChangeColor() { 105 | //https://segmentfault.com/a/1190000008653690 106 | let headdiv = this.lyScrollDiv.nativeElement; 107 | var nowOpacity = 0; 108 | let lHeadBgdiv= this.greetBgDiv.nativeElement; 109 | headdiv.onscroll = function (event) { 110 | if (this.scrollTop / 250 < .85) { 111 | nowOpacity = this.scrollTop / 250; 112 | } 113 | lHeadBgdiv.style.opacity = nowOpacity; 114 | 115 | } 116 | } 117 | 118 | // 初始化京东头条滚动条 119 | // private initToutiaoSlide() { 120 | // new Swiper('#toutiaoSlider', { 121 | // direction:'vertical', 122 | // autoplay: 2000, 123 | // loop: true 124 | // }); 125 | // } 126 | // 初始化头部滚动条 127 | // private initHeaderSlide() { 128 | // this.oSwiper1 = new Swiper('.swiper-container', { 129 | // slidesPerView: 1, 130 | // paginationClickable: true, 131 | // centeredSlides: true, 132 | // autoplay: 2000, 133 | // autoplayDisableOnInteraction: false, 134 | // loop: true, 135 | // // 如果需要分页器 136 | // pagination: '.swiper-pagination', 137 | // // 改变自动更新 138 | // observer:true, 139 | // observeParents:true 140 | // }); 141 | // 142 | // } 143 | 144 | private getHeaderSlideData() { 145 | return [ 146 | { 147 | alt: "双十一预热主场会", 148 | src: "assets/img/home-headerSlide-1.jpg" 149 | }, 150 | { 151 | alt: "11月11天家电低价不停歇", 152 | src: "assets/img/home-headerSlide-2.jpg" 153 | }, 154 | { 155 | alt: "家具盛典 好货提前抢", 156 | src: "assets/img/home-headerSlide-3.jpg" 157 | }, 158 | { 159 | alt: "IT抢券节", 160 | src: "assets/img/home-headerSlide-4.jpg" 161 | }, 162 | { 163 | alt: "潮流数码 双11爽购攻略", 164 | src: "assets/img/home-headerSlide-5.jpg" 165 | } 166 | ]; 167 | } 168 | 169 | startPage(pageUrl) { 170 | if (pageUrl == "search") { 171 | 172 | } else if (pageUrl == "login") { 173 | //登录 174 | this.navCtrl.push(LoginPage) 175 | } 176 | 177 | } 178 | 179 | 180 | 181 | } 182 | -------------------------------------------------------------------------------- /src/pages/tab/tab-messages/tab-messages.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 购物车 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 | 20 | 登录后可同步电脑与手机购物车 21 | 22 |
    23 |
    24 |

    25 | 26 | 今日福利 27 |

    28 |
    29 |
    31 | 32 | 33 | 34 | 35 | 36 | 每日神券 37 | 38 |

    39 | 限量发放,快去抢 40 |

    41 |
    42 |
    43 | 44 | 45 | 46 | 47 | 整点秒杀 48 | 49 |

    50 | 限时抢购,拼手速 51 |

    52 |
    53 |
    54 |
    55 |
    56 |

    57 | 58 | 看看热卖 59 |

    60 |
    61 | 62 |
      63 |
    • 64 | 65 | 66 | 67 | 68 |

      {{item.ProductName}}

      69 |
      70 | 71 | 72 | 73 | {{"¥"+item.RealPrice}} 74 | 75 | 76 |

      看相似

      77 |
      78 |
      79 | 80 |
      81 |
    • 82 |
    83 |
    84 | 神威如狱 85 |
    86 |
    87 | -------------------------------------------------------------------------------- /src/pages/tab/tab-messages/tab-messages.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { TabMessagesPage } from './tab-messages'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TabMessagesPage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(TabMessagesPage), 11 | ], 12 | }) 13 | export class TabMessagesPageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/tab/tab-messages/tab-messages.scss: -------------------------------------------------------------------------------- 1 | page-tab-messages { 2 | .toolbar-background-ios{ 3 | background-color: #333; 4 | background-image: url('../assets/img/headerbg.png'); 5 | height: 44px; 6 | } 7 | #left_img{ 8 | display: block; 9 | text-decoration: none; 10 | width: 20px; 11 | height: 20px; 12 | background-size: 200px 200px; 13 | background-position: -20px 0; 14 | background-image: url('../assets/img/sprites.png'); 15 | } 16 | 17 | #right_img { 18 | display: block; 19 | text-decoration: none; 20 | width: 20px; 21 | height: 20px; 22 | background-size: 200px 200px; 23 | background-position: -60px 0; 24 | background-image: url('../assets/img/sprites.png'); 25 | } 26 | 27 | .cart_content{ 28 | width: 100%; 29 | height:100%; 30 | background-color: #f0f2f5; 31 | } 32 | 33 | .cart_content_head{ 34 | background-color: white; 35 | width: 100%; 36 | height: 55px; 37 | text-align: center; 38 | display: flex; 39 | display: -webkit-flex; 40 | justify-content:center; 41 | align-items: center; 42 | } 43 | 44 | .card_today_get{ 45 | margin-top: 10px; 46 | } 47 | .card_hot_sail{ 48 | margin-top: 10px; 49 | display: flex; 50 | display: -webkit-flex; 51 | justify-content: center; 52 | align-items: center; 53 | } 54 | .card-ios{ 55 | width:100%; 56 | margin: 0px; 57 | } 58 | .card-content-ios{ 59 | padding: 0px; 60 | } 61 | #reconmend_list .card-ios{ 62 | 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/pages/tab/tab-messages/tab-messages.ts: -------------------------------------------------------------------------------- 1 | // import { LookServiceProvider } from './../../../providers/look-service/look-service'; 2 | import { Component } from '@angular/core'; 3 | import { IonicPage, NavController, NavParams } from 'ionic-angular'; 4 | import {GOODLIST_head_URL} from "../../../providers/Constants"; 5 | 6 | /** 7 | * Generated class for the TabMessagesPage page. 8 | * 9 | * See https://ionicframework.com/docs/components/#navigation for more info on 10 | * Ionic pages and navigation. 11 | */ 12 | 13 | @IonicPage() 14 | @Component({ 15 | selector: 'page-tab-messages', 16 | templateUrl: 'tab-messages.html', 17 | }) 18 | export class TabMessagesPage { 19 | 20 | obj_ShopCartRecommendData = []; 21 | private errorMessage: String; 22 | Image_head_Url: string; 23 | 24 | constructor(public navCtrl: NavController, public navParams: NavParams) { 25 | this.Image_head_Url=GOODLIST_head_URL; 26 | } 27 | 28 | ionViewDidLoad() { 29 | console.log('ionViewDidLoad TabMessagesPage'); 30 | // this.lookservice.getGoodsList().subscribe( 31 | // countries => this.obj_ShopCartRecommendData = countries, 32 | // error => this.errorMessage = error, 33 | // function complete() { 34 | 35 | // }, 36 | // ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/pages/tab/tab-more/tab-more.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 | 5 |
    6 |
    7 | 登录 8 |
    9 |
    10 | 11 |
    12 |
    13 | 14 | 15 | 16 | 17 |
    18 | 19 | 20 | 21 | 22 |
    23 |
    24 | 25 | 26 |

    |

    27 | 28 |
    29 | 30 |
    31 |
    登录
    32 |
    33 |
    34 |
    注册
    35 |
    36 | 37 | 41 |
    42 |
    43 | 44 |

    找回密码

    45 |
    46 | 47 |
    48 | 49 |

    快速注册

    50 |
    51 |
    52 |
    54 |

    55 |

    其他登录方式

    56 |

    57 |
    58 |
    59 | 60 |

    QQ

    61 |
    62 |
    63 | -------------------------------------------------------------------------------- /src/pages/tab/tab-more/tab-more.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { TabMorePage } from './tab-more'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TabMorePage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(TabMorePage), 11 | ], 12 | }) 13 | export class TabMorePageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/tab/tab-more/tab-more.scss: -------------------------------------------------------------------------------- 1 | page-tab-more { 2 | #header{ 3 | display: block; 4 | background-color: #f9f9f9; 5 | background-size: 100% 44px; 6 | width: 100%; 7 | height:44px; 8 | overflow: hidden; 9 | } 10 | 11 | .header-left{ 12 | width: 40px; 13 | height:40px; 14 | position: absolute; 15 | } 16 | 17 | .header-left img{ 18 | width: 100%; 19 | height:100%; 20 | padding: 10px; 21 | } 22 | 23 | .header-center{ 24 | display: flex; 25 | height: 44px; 26 | position: absolute; 27 | left: 40px; 28 | right: 40px; 29 | align-items: center; 30 | justify-content: center; 31 | } 32 | 33 | .header-center span{ 34 | font-size: 17px; 35 | color: #616161; 36 | } 37 | .header-right{ 38 | width: 40px; 39 | height: 44px; 40 | position: absolute; 41 | right: 0; 42 | } 43 | 44 | .content{ 45 | display: flex; 46 | flex-direction: column; 47 | flex-flow: wrap; 48 | background-color: #f3f5f7; 49 | } 50 | .content #username{ 51 | width: 90%; 52 | margin: 15px 5px 0 5px; 53 | border-radius: 5px; 54 | border: 1px solid #eee; 55 | background-color: white; 56 | } 57 | 58 | .password-content{ 59 | display: flex; 60 | flex-direction: row; 61 | border: 1px solid #eeeeee; 62 | background-color: white; 63 | width: 90%; 64 | margin: 15px 5px 0 5px; 65 | border-radius: 5px; 66 | } 67 | 68 | .content #password{ 69 | type:"password" 70 | } 71 | 72 | #btn_login{ 73 | width: 90%; 74 | height:45px; 75 | margin: 0 5px; 76 | border-radius: 5px; 77 | border: 1px solid #eeeeee; 78 | display: flex; 79 | justify-content: center; 80 | align-items: center; 81 | margin-top: 35px; 82 | background-color: #EEEEEE; 83 | } 84 | 85 | #register{ 86 | width: 90%; 87 | height:45px; 88 | margin: 0 5px; 89 | border-radius: 5px; 90 | border: 1px solid red; 91 | display: flex; 92 | justify-content:center; 93 | align-items: center; 94 | margin-top: 25px; 95 | background-color: white; 96 | } 97 | 98 | .div_login_check{ 99 | width: 90%; 100 | margin: 0 5px; 101 | display: flex; 102 | margin-top: 15px; 103 | } 104 | 105 | #checkbox_login{ 106 | 107 | } 108 | 109 | .div_bttom_function{ 110 | width: 90%; 111 | margin: 10px 5px 0 5px; 112 | display: flex; 113 | justify-content: space-between; 114 | } 115 | 116 | } 117 | -------------------------------------------------------------------------------- /src/pages/tab/tab-more/tab-more.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { IonicPage, NavController, NavParams } from 'ionic-angular'; 3 | 4 | /** 5 | * Generated class for the TabMorePage page. 6 | * 7 | * See https://ionicframework.com/docs/components/#navigation for more info on 8 | * Ionic pages and navigation. 9 | */ 10 | 11 | @IonicPage() 12 | @Component({ 13 | selector: 'page-tab-more', 14 | templateUrl: 'tab-more.html', 15 | }) 16 | export class TabMorePage { 17 | 18 | constructor(public navCtrl: NavController, public navParams: NavParams) { 19 | } 20 | 21 | ionViewDidLoad() { 22 | console.log('ionViewDidLoad TabMorePage'); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/pages/tab/tab.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/pages/tab/tab.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicPageModule } from 'ionic-angular'; 3 | import { TabPage } from './tab'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TabPage, 8 | ], 9 | imports: [ 10 | IonicPageModule.forChild(TabPage), 11 | ], 12 | }) 13 | export class TabPageModule {} 14 | -------------------------------------------------------------------------------- /src/pages/tab/tab.scss: -------------------------------------------------------------------------------- 1 | page-tab { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /src/pages/tab/tab.ts: -------------------------------------------------------------------------------- 1 | import {Component, ViewChild} from '@angular/core'; 2 | import { IonicPage, NavController, NavParams ,Tabs} from 'ionic-angular'; 3 | import {TabHomePage} from "./tab-home/tab-home"; 4 | import {TabDiscoverPage} from "./tab-discover/tab-discover"; 5 | import {TabBroadcastPage} from "./tab-broadcast/tab-broadcast"; 6 | import {TabMessagesPage} from "./tab-messages/tab-messages"; 7 | import {TabMorePage} from "./tab-more/tab-more"; 8 | 9 | 10 | @IonicPage() 11 | @Component({ 12 | selector: 'page-tab', 13 | templateUrl: 'tab.html', 14 | }) 15 | export class TabPage { 16 | @ViewChild('mainTabs') tabs :Tabs; 17 | tab1Root:any = TabHomePage; 18 | tab2Root:any = TabDiscoverPage; 19 | tab3Root:any = TabBroadcastPage; 20 | tab4Root:any = TabMessagesPage; 21 | tab5Root:any = TabMorePage; 22 | constructor(public navCtrl: NavController, public navParams: NavParams) { 23 | } 24 | 25 | ionViewDidLoad() { 26 | console.log('ionViewDidLoad TabPage'); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/providers/Constants.ts: -------------------------------------------------------------------------------- 1 | export const GOODLIST_URL = 'http://rapapi.org/mockjsdata/18396/api/discove/goodlist'; 2 | export const GOODLIST_head_URL = 'http://img.lapin365.com/productpictures'; 3 | -------------------------------------------------------------------------------- /src/providers/HttpUtils.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Http, Response ,RequestOptions } from '@angular/http'; 3 | import { Observable } from 'rxjs/Observable'; 4 | import 'rxjs/add/operator/catch'; 5 | import 'rxjs/add/operator/map'; 6 | import {Utils} from "./Utils"; 7 | @Injectable() 8 | export class HttpUtils { 9 | 10 | constructor(public http: Http) { 11 | console.log('Hello HomeService Provider'); 12 | } 13 | public get(url: string, paramMap?: any): Observable { 14 | return this.http.get(url, new RequestOptions({ 15 | search: HttpUtils.buildURLSearchParams(paramMap) 16 | 17 | })); 18 | } 19 | public static buildURLSearchParams(paramMap): URLSearchParams { 20 | let params = new URLSearchParams(); 21 | if (!paramMap) { 22 | return params; 23 | } 24 | for (let key in paramMap) { 25 | let val = paramMap[key]; 26 | if (val instanceof Date) { 27 | val = Utils.dateFormat(val, 'yyyy-MM-dd hh:mm:ss') 28 | } 29 | params.set(key, val); 30 | } 31 | return params; 32 | } 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/providers/Utils.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Administrator on 2017/5/3 0003. 3 | */ 4 | import {Injectable} from '@angular/core'; 5 | 6 | /** 7 | * Utils类存放和业务无关的公共方法 8 | * @description 9 | */ 10 | @Injectable() 11 | export class Utils { 12 | 13 | constructor() { 14 | } 15 | 16 | static isEmpty(value): boolean { 17 | return value == null || typeof value === 'string' && value.length === 0; 18 | } 19 | 20 | static isNotEmpty(value): boolean { 21 | return !Utils.isEmpty(value); 22 | } 23 | 24 | /** 25 | * 格式“是”or“否” 26 | * @param value 27 | * @returns {string|string} 28 | */ 29 | static formatYesOrNo(value: number|string): string { 30 | return value == 1 ? '是' : (value == '0' ? '否' : null); 31 | } 32 | 33 | 34 | 35 | /** 36 | * 日期对象转为日期字符串 37 | * @param date 需要格式化的日期对象 38 | * @param sFormat 输出格式,默认为yyyy-MM-dd 年:y,月:M,日:d,时:h,分:m,秒:s 39 | * @example dateFormat(new Date()) "2017-02-28" 40 | * @example dateFormat(new Date(),'yyyy-MM-dd') "2017-02-28" 41 | * @example dateFormat(new Date(),'yyyy-MM-dd hh:mm:ss') "2017-02-28 09:24:00" 42 | * @example dateFormat(new Date(),'hh:mm') "09:24" 43 | * @example dateFormat(new Date(),'yyyy-MM-ddThh:mm:ss+08:00') "2017-02-28T09:24:00+08:00" 44 | * @returns {string} 45 | */ 46 | static dateFormat(date: Date, sFormat:string = 'yyyy-MM-dd'): string { 47 | let time = { 48 | Year: 0, 49 | TYear: '0', 50 | Month: 0, 51 | TMonth: '0', 52 | Day: 0, 53 | TDay: '0', 54 | Hour: 0, 55 | THour: '0', 56 | hour: 0, 57 | Thour: '0', 58 | Minute: 0, 59 | TMinute: '0', 60 | Second: 0, 61 | TSecond: '0', 62 | Millisecond: 0 63 | }; 64 | time.Year = date.getFullYear(); 65 | time.TYear = String(time.Year).substr(2); 66 | time.Month = date.getMonth() + 1; 67 | time.TMonth = time.Month < 10 ? "0" + time.Month : String(time.Month); 68 | time.Day = date.getDate(); 69 | time.TDay = time.Day < 10 ? "0" + time.Day : String(time.Day); 70 | time.Hour = date.getHours(); 71 | time.THour = time.Hour < 10 ? "0" + time.Hour : String(time.Hour); 72 | time.hour = time.Hour < 13 ? time.Hour : time.Hour - 12; 73 | time.Thour = time.hour < 10 ? "0" + time.hour : String(time.hour); 74 | time.Minute = date.getMinutes(); 75 | time.TMinute = time.Minute < 10 ? "0" + time.Minute : String(time.Minute); 76 | time.Second = date.getSeconds(); 77 | time.TSecond = time.Second < 10 ? "0" + time.Second : String(time.Second); 78 | time.Millisecond = date.getMilliseconds(); 79 | 80 | return sFormat.replace(/yyyy/ig, String(time.Year)) 81 | .replace(/yyy/ig, String(time.Year)) 82 | .replace(/yy/ig, time.TYear) 83 | .replace(/y/ig, time.TYear) 84 | .replace(/MM/g, time.TMonth) 85 | .replace(/M/g, String(time.Month)) 86 | .replace(/dd/ig, time.TDay) 87 | .replace(/d/ig, String(time.Day)) 88 | .replace(/HH/g, time.THour) 89 | .replace(/H/g, String(time.Hour)) 90 | .replace(/hh/g, time.Thour) 91 | .replace(/h/g, String(time.hour)) 92 | .replace(/mm/g, time.TMinute) 93 | .replace(/m/g, String(time.Minute)) 94 | .replace(/ss/ig, time.TSecond) 95 | .replace(/s/ig, String(time.Second)) 96 | .replace(/fff/ig, String(time.Millisecond)) 97 | } 98 | 99 | /** 100 | * 每次调用sequence加1 101 | * @type {()=>number} 102 | */ 103 | getSequence = (function () { 104 | let sequence = 100; 105 | return function () { 106 | return ++sequence; 107 | }; 108 | })(); 109 | } 110 | -------------------------------------------------------------------------------- /src/providers/data.ts: -------------------------------------------------------------------------------- 1 | import { Storage } from '@ionic/storage'; 2 | import {Injectable} from '@angular/core'; 3 | @Injectable() 4 | export class Data { 5 | constructor(public storage: Storage){ 6 | } 7 | getData() { 8 | return this.storage.get('todos'); 9 | } 10 | save(data){ 11 | let newData = JSON.stringify(data); 12 | this.storage.set('todos', newData); 13 | 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/providers/goods-service/goods-service.ts: -------------------------------------------------------------------------------- 1 | import {Injectable} from '@angular/core'; 2 | import {Http,Response } from '@angular/http'; 3 | import 'rxjs/add/operator/map'; 4 | import {GOODLIST_URL} from "../Constants"; 5 | import {Observable} from 'rxjs/Observable' 6 | import 'rxjs/add/operator/catch'; 7 | import 'rxjs/add/operator/map';; 8 | 9 | @Injectable() 10 | export class GoodsServiceProvider { 11 | 12 | constructor(public http: Http) { 13 | console.log('Hello GoodsServiceProvider Provider'); 14 | } 15 | 16 | public getGoodLists():Observable{ 17 | return this.http.get(GOODLIST_URL) 18 | .map(this.extractData) 19 | .catch(this.handleError); 20 | } 21 | 22 | private extractData(res:Response){ 23 | let body = res.json().data; 24 | return body || {}; 25 | } 26 | 27 | private handleError(error: Response | any) { 28 | let errMsg: string; 29 | if (error instanceof Response) { 30 | const body = error.json() || ''; 31 | const err = body.error || JSON.stringify(body); 32 | errMsg = `${error.status} - ${error.statusText || ''} ${err}`; 33 | } else { 34 | errMsg = error.message ? error.message : error.toString(); 35 | } 36 | console.error(errMsg); 37 | return Observable.throw(errMsg); 38 | } 39 | 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/providers/look-service/look-service.ts: -------------------------------------------------------------------------------- 1 | // import { HttpClient } from '@angular/common/http'; 2 | import { Injectable } from '@angular/core'; 3 | import {Http} from "@angular/http"; 4 | import {Observable} from "rxjs/Observable"; 5 | 6 | /* 7 | Generated class for the LookServiceProvider provider. 8 | 9 | See https://angular.io/guide/dependency-injection for more info on providers 10 | and Angular DI. 11 | */ 12 | @Injectable() 13 | export class LookServiceProvider { 14 | 15 | data:string; 16 | 17 | constructor(public http: Http) { 18 | console.log('Hello LookServiceProvider Provider'); 19 | } 20 | 21 | public getAllcategory():Observable{ 22 | return this.http.get("assets/json/allcategory.json") 23 | .map(res=>res.json().content); 24 | } 25 | 26 | public getGoodsList():Observable{ 27 | return this.http.get("assets/json/look_list.json") 28 | .map(res=>res.json().content); 29 | } 30 | 31 | public getShopCartRecommendList():Observable{ 32 | return this.http.get("assets/json/shopcart.json") 33 | .map(res=>res.json().content); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/service-worker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Check out https://googlechromelabs.github.io/sw-toolbox/ for 3 | * more info on how to use sw-toolbox to custom configure your service worker. 4 | */ 5 | 6 | 7 | 'use strict'; 8 | importScripts('./build/sw-toolbox.js'); 9 | 10 | self.toolbox.options.cache = { 11 | name: 'ionic-cache' 12 | }; 13 | 14 | // pre-cache our key assets 15 | self.toolbox.precache( 16 | [ 17 | './build/main.js', 18 | './build/vendor.js', 19 | './build/main.css', 20 | './build/polyfills.js', 21 | 'index.html', 22 | 'manifest.json' 23 | ] 24 | ); 25 | 26 | // dynamically cache any other local assets 27 | self.toolbox.router.any('/*', self.toolbox.fastest); 28 | 29 | // for any other requests go to the network, cache, 30 | // and then only use that cached resource if your user goes offline 31 | self.toolbox.router.default = self.toolbox.networkFirst; 32 | -------------------------------------------------------------------------------- /src/theme/variables.scss: -------------------------------------------------------------------------------- 1 | // Ionic Variables and Theming. For more info, please see: 2 | // http://ionicframework.com/docs/theming/ 3 | 4 | // Font path is used to include ionicons, 5 | // roboto, and noto sans fonts 6 | $font-path: "../assets/fonts"; 7 | 8 | 9 | // The app direction is used to include 10 | // rtl styles in your app. For more info, please see: 11 | // http://ionicframework.com/docs/theming/rtl-support/ 12 | $app-direction: ltr; 13 | 14 | 15 | @import "ionic.globals"; 16 | 17 | 18 | // Shared Variables 19 | // -------------------------------------------------- 20 | // To customize the look and feel of this app, you can override 21 | // the Sass variables found in Ionic's source scss files. 22 | // To view all the possible Ionic variables, see: 23 | // http://ionicframework.com/docs/theming/overriding-ionic-variables/ 24 | 25 | 26 | 27 | 28 | // Named Color Variables 29 | // -------------------------------------------------- 30 | // Named colors makes it easy to reuse colors on various components. 31 | // It's highly recommended to change the default colors 32 | // to match your app's branding. Ionic uses a Sass map of 33 | // colors so you can add, rename and remove colors as needed. 34 | // The "primary" color is the only required color in the map. 35 | 36 | $colors: ( 37 | primary: #488aff, 38 | secondary: #32db64, 39 | danger: #f53d3d, 40 | light: #f4f4f4, 41 | dark: #222 42 | ); 43 | 44 | 45 | // App iOS Variables 46 | // -------------------------------------------------- 47 | // iOS only Sass variables can go here 48 | 49 | 50 | 51 | 52 | // App Material Design Variables 53 | // -------------------------------------------------- 54 | // Material Design only Sass variables can go here 55 | 56 | 57 | 58 | 59 | // App Windows Variables 60 | // -------------------------------------------------- 61 | // Windows only Sass variables can go here 62 | 63 | 64 | 65 | 66 | // App Theme 67 | // -------------------------------------------------- 68 | // Ionic apps can have different themes applied, which can 69 | // then be future customized. This import comes last 70 | // so that the above variables are used and Ionic's 71 | // default are overridden. 72 | 73 | @import "ionic.theme.default"; 74 | 75 | 76 | // Ionicons 77 | // -------------------------------------------------- 78 | // The premium icon font for Ionic. For more info, please see: 79 | // http://ionicframework.com/docs/ionicons/ 80 | 81 | @import "ionic.ionicons"; 82 | 83 | 84 | // Fonts 85 | // -------------------------------------------------- 86 | 87 | @import "roboto"; 88 | @import "noto-sans"; 89 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "declaration": false, 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2015" 10 | ], 11 | "module": "es2015", 12 | "moduleResolution": "node", 13 | "sourceMap": true, 14 | "target": "es5", 15 | "typeRoots": [ 16 | "../node_modules/@types" 17 | ] 18 | }, 19 | "include": [ 20 | "src/**/*.ts" 21 | ], 22 | "exclude": [ 23 | "node_modules", 24 | "src/**/*.spec.ts", 25 | "src/**/__tests__/*.ts" 26 | ], 27 | "compileOnSave": false, 28 | "atom": { 29 | "rewriteTsconfig": false 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-duplicate-variable": true, 4 | "no-unused-variable": [ 5 | true 6 | ] 7 | }, 8 | "rulesDirectory": [ 9 | "node_modules/tslint-eslint-rules/dist/rules" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /typings/cordova-typings.d.ts: -------------------------------------------------------------------------------- 1 | 2 | /// 3 | /// -------------------------------------------------------------------------------- /typings/globals/jquery/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "resolution": "main", 3 | "tree": { 4 | "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/f4fdcaca9c94f90442dcedb0c8a84399c47e731f/jquery/index.d.ts", 5 | "raw": "registry:dt/jquery#1.10.0+20170310222111", 6 | "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/f4fdcaca9c94f90442dcedb0c8a84399c47e731f/jquery/index.d.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /typings/globals/swiper/index.d.ts: -------------------------------------------------------------------------------- 1 | // Generated by typings 2 | // Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/71006850d131d50bb2d5bb46f18ee63ab1ac9147/swiper/index.d.ts 3 | interface SwiperOptions { 4 | initialSlide?: number; 5 | direction?: string; 6 | speed?: number; 7 | setWrapperSize?: boolean; 8 | virtualTranslate?: boolean; 9 | width?: number; 10 | height?: number; 11 | autoHeight?: boolean; 12 | roundLengths?: boolean; 13 | nested?: boolean; 14 | 15 | // Autoplay 16 | autoplay?: number; 17 | autoplayStopOnLast?: boolean; 18 | autoplayDisableOnInteraction?: boolean; 19 | 20 | // Progress 21 | watchSlidesProgress?: boolean; 22 | watchSlidesVisibility?: boolean; 23 | 24 | // Freemode 25 | freeMode?: boolean; 26 | freeModeMomentum?: boolean; 27 | freeModeMomentumRatio?: number; 28 | freeModeMomentumBounce?: boolean; 29 | freeModeMomentumBounceRatio?: number; 30 | freeModeMinimumVelocity?: number; 31 | freeModeSticky?: boolean; 32 | 33 | // Effects 34 | effect?: string; 35 | fade?: {}; 36 | cube?: {}; 37 | coverflow?: {}; 38 | flip?: {}; 39 | 40 | // Parallax 41 | parallax?: boolean; 42 | 43 | // Slides grid 44 | spaceBetween?: number; 45 | slidesPerView?: number | string; 46 | slidesPerColumn?: number; 47 | slidesPerColumnFill?: string; 48 | slidesPerGroup?: number; 49 | centeredSlides?: boolean; 50 | slidesOffsetBefore?: number; 51 | slidesOffsetAfter?: number; 52 | 53 | // Grab Cursor 54 | grabCursor?: boolean; 55 | 56 | // Touches 57 | touchEventsTarget?: string; 58 | touchRatio?: number; 59 | touchAngle?: number; 60 | simulateTouch?: boolean; 61 | shortSwipes?: boolean; 62 | longSwipes?: boolean; 63 | longSwipesRatio?: number; 64 | longSwipesMs?: number; 65 | followFinger?: boolean; 66 | onlyExternal?: boolean; 67 | threshold?: number; 68 | touchMoveStopPropagation?: boolean; 69 | iOSEdgeSwipeDetection?: boolean; 70 | iOSEdgeSwipeThreshold?: number; 71 | 72 | // Touch Resistance 73 | resistance?: boolean; 74 | resistanceRatio?: number; 75 | 76 | // Clicks 77 | preventClicks?: boolean; 78 | preventClicksPropagation?: boolean; 79 | slideToClickedSlide?: boolean; 80 | 81 | // Swiping / No swiping 82 | allowSwipeToPrev?: boolean; 83 | allowSwipeToNext?: boolean; 84 | noSwiping?: boolean; 85 | noSwipingClass?: string; 86 | swipeHandler?: string | Element; 87 | 88 | // Navigation Controls 89 | uniqueNavElements?: boolean; 90 | 91 | // Pagination 92 | pagination?: string | Element; 93 | paginationType?: string; 94 | paginationHide?: boolean; 95 | paginationClickable?: boolean; 96 | paginationElement?: string; 97 | paginationBulletRender?: (swiper: Swiper, index: number, className: string) => void; 98 | paginationFractionRender?: (swiper: Swiper, currentClassName: string, totalClassName: string) => void; 99 | paginationProgressRender?: (swiper: Swiper, progressbarClass: string) => void; 100 | paginationCustomRender?: (swiper: Swiper, current: number, total: number) => void; 101 | 102 | // Navigation Buttons 103 | nextButton?: string | Element; 104 | prevButton?: string | Element; 105 | 106 | // Scollbar 107 | scrollbar?: string | Element | SwiperScrollbarOptions; 108 | scrollbarHide?: boolean; 109 | scrollbarDraggable?: boolean; 110 | scrollbarSnapOnRelease?: boolean; 111 | 112 | 113 | // Accessibility 114 | a11y?: boolean; 115 | prevSlideMessage?: string; 116 | nextSlideMessage?: string; 117 | firstSlideMessage?: string; 118 | lastSlideMessage?: string; 119 | paginationBulletMessage?: string; 120 | 121 | 122 | // Keyboard / Mousewheel 123 | keyboardControl?: boolean; 124 | mousewheelControl?: boolean; 125 | mousewheelForceToAxis?: boolean; 126 | mousewheelReleaseOnEdges?: boolean; 127 | mousewheelInvert?: boolean; 128 | mousewheelSensitivity?: number; 129 | 130 | // Hash Navigation 131 | hashnav?: boolean; 132 | hashnavWatchState?: boolean; 133 | history?: string; 134 | 135 | 136 | // Images 137 | preloadImages?: boolean; 138 | updateOnImagesReady?: boolean; 139 | lazyLoading?: boolean; 140 | lazyLoadingInPrevNext?: boolean; 141 | lazyLoadingInPrevNextAmount?: number; 142 | lazyLoadingOnTransitionStart?: boolean; 143 | 144 | // Loop 145 | loop?: boolean; 146 | loopAdditionalSlides?: number; 147 | loopedSlides?: number; 148 | 149 | zoom?: boolean; 150 | 151 | // Controller 152 | control?: Swiper; 153 | controlInverse?: boolean; 154 | controlBy?: string; 155 | 156 | // Observer 157 | observer?: boolean; 158 | observeParents?: boolean; 159 | 160 | // Breakpoints 161 | breakpoints?: {}; 162 | 163 | // Callbacks 164 | runCallbacksOnInit?: boolean; 165 | onInit?: (swiper: Swiper) => void; 166 | onSlideChangeStart?: (swiper: Swiper) => void; 167 | onSlideChangeEnd?: (swiper: Swiper) => void; 168 | onSlideNextStart?: (swiper: Swiper) => void; 169 | onSlideNextEnd?: (swiper: Swiper) => void; 170 | onSlidePrevStart?: (swiper: Swiper) => void; 171 | onSlidePrevEnd?: (swiper: Swiper) => void; 172 | onTransitionStart?: (swiper: Swiper) => void; 173 | onTransitionEnd?: (swiper: Swiper) => void; 174 | onTouchStart?: (swiper: Swiper, event: Event) => void; 175 | onTouchMove?: (swiper: Swiper, event: Event) => void; 176 | onTouchMoveOpposite?: (swiper: Swiper, event: Event) => void; 177 | onSliderMove?: (swiper: Swiper, event: Event) => void; 178 | onTouchEnd?: (swiper: Swiper, event: Event) => void; 179 | onClick?: (swiper: Swiper, event: Event) => void; 180 | onTap?: (swiper: Swiper, event: Event) => void; 181 | onDoubleTap?: (swiper: Swiper, event: Event) => void; 182 | onImagesReady?: (swiper: Swiper) => void; 183 | onProgress?: (swiper: Swiper, progress: number) => void; 184 | onReachBeginning?: (swiper: Swiper) => void; 185 | onReachEnd?: (swiper: Swiper) => void; 186 | onDestroy?: (swiper: Swiper) => void; 187 | onSetTranslate?: (swiper: Swiper, translate: any) => void; 188 | onSetTransition?: (swiper: Swiper, transition: any) => void; 189 | onAutoplay?: (swiper: Swiper) => void; 190 | onAutoplayStart?: (swiper: Swiper) => void; 191 | onAutoplayStop?: (swiper: Swiper) => void; 192 | onLazyImageLoad?: (swiper: Swiper, slide: any, image: any) => void; 193 | onLazyImageReady?: (swiper: Swiper, slide: any, image: any) => void; 194 | onPaginationRendered?: (swiper: Swiper, paginationContainer: any) => void; 195 | 196 | // Namespace 197 | slideClass?: string; 198 | slideActiveClass?: string; 199 | slideVisibleClass?: string; 200 | slideDuplicateClass?: string; 201 | slideNextClass?: string; 202 | slidePrevClass?: string; 203 | wrapperClass?: string; 204 | bulletClass?: string; 205 | bulletActiveClass?: string; 206 | paginationHiddenClass?: string; 207 | paginationCurrentClass?: string; 208 | paginationTotalClass?: string; 209 | paginationProgressbarClass?: string; 210 | buttonDisabledClass?: string; 211 | } 212 | 213 | interface SwiperScrollbarOptions { 214 | container: string; // Default: '.swiper-scrollbar' 215 | draggable?: boolean; // Default: true 216 | hide?: boolean; // Default: true 217 | snapOnRelease?: boolean; // Default: false 218 | } 219 | 220 | declare class SwiperSlide { 221 | append(): SwiperSlide; 222 | clone(): SwiperSlide; 223 | getWidth(): number; 224 | getHeight(): number; 225 | getOffset(): { top: number; left: number; }; 226 | insertAfter(index: number): SwiperSlide; 227 | prepend(): SwiperSlide; 228 | remove(): void; 229 | } 230 | 231 | declare class Swiper { 232 | constructor(container: string | Element, options?: SwiperOptions); 233 | 234 | // Properties 235 | width: number; 236 | height: number; 237 | params: any; 238 | positions: any; 239 | 240 | // Feature detection 241 | support: { 242 | touch: boolean; 243 | transforms: boolean; 244 | transforms3d: boolean; 245 | transitions: boolean; 246 | }; 247 | 248 | // Browser detection 249 | browser: { 250 | ie8: boolean; 251 | ie10: boolean; 252 | }; 253 | 254 | // Navigation 255 | activeIndex: number; 256 | activeLoopIndex: number; 257 | activeLoaderIndex: number; 258 | previousIndex: number; 259 | swipeNext(internal?: boolean): boolean; 260 | swipePrev(internal?: boolean): boolean; 261 | swipeReset(): boolean; 262 | swipeTo(index: number, speed?: number, runCallbacks?: boolean): boolean; 263 | activeSlide(): SwiperSlide; 264 | updateActiveSlide(index: number): void; 265 | 266 | // Events 267 | touches: any; 268 | isTouched: boolean; 269 | clickedSlideIndex: number; 270 | clickedSlide: SwiperSlide; 271 | wrapperTransitionEnd(callback: () => void, permanent: boolean): void; 272 | 273 | // Init/reset 274 | destroy(deleteInstance: boolean, cleanupStyles: boolean): void; 275 | reInit(forceCalcSlides?: boolean): void; 276 | resizeFix(reInit?: boolean): void; 277 | 278 | // Autoplaying 279 | autoplay: boolean; 280 | startAutoplay(): void; 281 | stopAutoplay(): void; 282 | 283 | // Other methods 284 | getWrapperTranslate(axis: string): number; // 'x' or 'y' 285 | setWrapperTranslate(x: number, y: number, z: number): void; 286 | setWrapperTransition(duration: any): void; 287 | 288 | // Slides API 289 | 290 | slides: SwiperSlide[]; 291 | 292 | slidePrev(runCallbacks?: boolean, speed?: number): void; 293 | slideNext(runCallbacks?: boolean, speed?: number): void; 294 | slideTo(index: number, runCallbacks?: boolean, speed?: number): void; 295 | update(updateTranslate?: boolean): void; 296 | onResize(): void; 297 | detachEvents(): void; 298 | attachEvents(): void; 299 | 300 | appendSlide(slides: HTMLElement | string | string[]): void; 301 | prependSlide(slides: HTMLElement | string | string[]): void; 302 | removeSlide(slideIndex: number): void; 303 | removeAllSlides(): void; 304 | 305 | lockSwipeToNext(): void; 306 | unlockSwipeToNext(): void; 307 | lockSwipeToPrev(): void; 308 | unlockSwipeToPrev(): void; 309 | lockSwipes(): void; 310 | unlockSwipes(): void; 311 | disableMousewheelControl(): void; 312 | enableMousewheelControl(): void; 313 | disableKeyboardControl(): void; 314 | enableKeyboardControl(): void; 315 | disableTouchContro(): void; 316 | enableTouchContro(): void; 317 | unsetGrabCursor(): void; 318 | setGrabCursor(): void; 319 | 320 | plugins?: { 321 | debugger?: (swiper: any, params: any) => void; 322 | }; 323 | } 324 | 325 | declare module "swiper" { 326 | const swiper: { 327 | new (element: Element | string, options?: SwiperOptions): Swiper; 328 | }; 329 | 330 | export = swiper; 331 | } 332 | -------------------------------------------------------------------------------- /typings/globals/swiper/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "resolution": "main", 3 | "tree": { 4 | "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/71006850d131d50bb2d5bb46f18ee63ab1ac9147/swiper/index.d.ts", 5 | "raw": "registry:dt/swiper#3.4.0+20170120190008", 6 | "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/71006850d131d50bb2d5bb46f18ee63ab1ac9147/swiper/index.d.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | --------------------------------------------------------------------------------