├── .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 | 
9 | 
10 | 
11 | 
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 |
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 |
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 |
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 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

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 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
|
27 |

28 |
29 |
30 |
33 |
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 |
--------------------------------------------------------------------------------