├── .env
├── babel.config.js
├── dist
├── favicon.ico
├── img
│ ├── 1.bf6cea83.png
│ ├── 2.cea943ba.png
│ ├── 21.9d4abc76.png
│ ├── 26.2a33fc9e.png
│ ├── 8.0eb10bab.png
│ ├── ball.cea943ba.png
│ ├── home.168d16a8.png
│ ├── shop.10d9bde9.png
│ ├── truck.52c2bb1f.png
│ ├── loading.45600eb9.gif
│ ├── slide_0.49751d34.jpg
│ ├── slide_1.3d9834ff.jpg
│ ├── slide_2.48e1a668.jpg
│ ├── slide_3.b79dd75a.jpg
│ ├── slide_4.2dd28d57.jpg
│ └── pokemon_store.7524e985.png
├── css
│ ├── chunk-316959a4.55c94f94.css
│ ├── chunk-31edb82a.a350a04e.css
│ ├── chunk-747baa50.79e452b8.css
│ ├── app.d6285bd9.css
│ ├── chunk-35b60dcf.85ea5138.css
│ ├── chunk-3fe68e77.32c2391b.css
│ ├── chunk-27c45dba.37ebeb03.css
│ └── chunk-6ea5a30a.fb23fb19.css
├── js
│ ├── chunk-316959a4.38429096.js
│ ├── chunk-b4219176.3f38bbef.js
│ ├── chunk-31edb82a.cee782b9.js
│ ├── chunk-f13ff028.594ed7c8.js
│ ├── chunk-747baa50.e0f1e4d8.js
│ ├── chunk-35b60dcf.1efe0943.js
│ ├── chunk-3fe68e77.81690a58.js
│ ├── chunk-5f581666.1b7c0109.js
│ ├── chunk-27c45dba.99553c78.js
│ ├── chunk-316959a4.38429096.js.map
│ ├── chunk-b4219176.3f38bbef.js.map
│ ├── chunk-71bb01f7.39e68d4d.js
│ ├── chunk-6ea5a30a.db915e1e.js
│ └── app.afa7a8b3.js
└── index.html
├── public
├── favicon.ico
└── index.html
├── src
├── assets
│ ├── logo.png
│ ├── img
│ │ ├── bg.jpg
│ │ ├── ball.png
│ │ ├── home.png
│ │ ├── pika.gif
│ │ ├── shop.png
│ │ ├── truck.png
│ │ ├── ball_bg.png
│ │ ├── favicon.png
│ │ ├── home_bg.jpg
│ │ ├── loading.gif
│ │ ├── products
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ ├── 4.png
│ │ │ ├── 5.png
│ │ │ ├── 6.png
│ │ │ ├── 7.png
│ │ │ ├── 8.png
│ │ │ ├── 9.png
│ │ │ ├── 10.png
│ │ │ ├── 12.png
│ │ │ ├── 13.png
│ │ │ ├── 14.png
│ │ │ ├── 15.png
│ │ │ ├── 16.png
│ │ │ ├── 17.png
│ │ │ ├── 18.png
│ │ │ ├── 19.png
│ │ │ ├── 20.png
│ │ │ ├── 21.png
│ │ │ ├── 22.png
│ │ │ ├── 23.png
│ │ │ ├── 24.png
│ │ │ ├── 25.png
│ │ │ └── 26.png
│ │ ├── pokemon_store.png
│ │ ├── slide
│ │ │ ├── slide_0.jpg
│ │ │ ├── slide_1.jpg
│ │ │ ├── slide_2.jpg
│ │ │ ├── slide_3.jpg
│ │ │ └── slide_4.jpg
│ │ └── pokemon_center.png
│ └── all.scss
├── filters
│ ├── date.js
│ ├── textlength.js
│ └── currency.js
├── App.vue
├── components
│ ├── loading.vue
│ ├── breadcrumb.vue
│ ├── alert.vue
│ ├── Pagination.vue
│ ├── bottom.vue
│ ├── slide.vue
│ ├── navbar.vue
│ ├── products.vue
│ └── car.vue
├── main.js
├── views
│ ├── admin.vue
│ ├── home.vue
│ ├── orderManager.vue
│ ├── signin.vue
│ ├── productInfo.vue
│ ├── comfirm.vue
│ ├── cupconManager.vue
│ ├── checkout.vue
│ └── categories.vue
├── router.js
└── store.js
├── vue.config.js
├── .gitignore
├── package.json
└── README.md
/.env:
--------------------------------------------------------------------------------
1 | VUE_APP_APIPATH=https://vue-course-api.hexschool.io
2 | VUE_APP_CUSTOMPATH=icguanyu
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/app'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/dist/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/favicon.ico
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/src/assets/img/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/bg.jpg
--------------------------------------------------------------------------------
/dist/img/1.bf6cea83.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/1.bf6cea83.png
--------------------------------------------------------------------------------
/dist/img/2.cea943ba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/2.cea943ba.png
--------------------------------------------------------------------------------
/dist/img/21.9d4abc76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/21.9d4abc76.png
--------------------------------------------------------------------------------
/dist/img/26.2a33fc9e.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/26.2a33fc9e.png
--------------------------------------------------------------------------------
/dist/img/8.0eb10bab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/8.0eb10bab.png
--------------------------------------------------------------------------------
/src/assets/img/ball.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/ball.png
--------------------------------------------------------------------------------
/src/assets/img/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/home.png
--------------------------------------------------------------------------------
/src/assets/img/pika.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/pika.gif
--------------------------------------------------------------------------------
/src/assets/img/shop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/shop.png
--------------------------------------------------------------------------------
/src/assets/img/truck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/truck.png
--------------------------------------------------------------------------------
/dist/img/ball.cea943ba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/ball.cea943ba.png
--------------------------------------------------------------------------------
/dist/img/home.168d16a8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/home.168d16a8.png
--------------------------------------------------------------------------------
/dist/img/shop.10d9bde9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/shop.10d9bde9.png
--------------------------------------------------------------------------------
/dist/img/truck.52c2bb1f.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/truck.52c2bb1f.png
--------------------------------------------------------------------------------
/src/assets/img/ball_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/ball_bg.png
--------------------------------------------------------------------------------
/src/assets/img/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/favicon.png
--------------------------------------------------------------------------------
/src/assets/img/home_bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/home_bg.jpg
--------------------------------------------------------------------------------
/src/assets/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/loading.gif
--------------------------------------------------------------------------------
/dist/img/loading.45600eb9.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/loading.45600eb9.gif
--------------------------------------------------------------------------------
/dist/img/slide_0.49751d34.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/slide_0.49751d34.jpg
--------------------------------------------------------------------------------
/dist/img/slide_1.3d9834ff.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/slide_1.3d9834ff.jpg
--------------------------------------------------------------------------------
/dist/img/slide_2.48e1a668.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/slide_2.48e1a668.jpg
--------------------------------------------------------------------------------
/dist/img/slide_3.b79dd75a.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/slide_3.b79dd75a.jpg
--------------------------------------------------------------------------------
/dist/img/slide_4.2dd28d57.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/slide_4.2dd28d57.jpg
--------------------------------------------------------------------------------
/src/assets/img/products/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/1.png
--------------------------------------------------------------------------------
/src/assets/img/products/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/2.png
--------------------------------------------------------------------------------
/src/assets/img/products/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/3.png
--------------------------------------------------------------------------------
/src/assets/img/products/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/4.png
--------------------------------------------------------------------------------
/src/assets/img/products/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/5.png
--------------------------------------------------------------------------------
/src/assets/img/products/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/6.png
--------------------------------------------------------------------------------
/src/assets/img/products/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/7.png
--------------------------------------------------------------------------------
/src/assets/img/products/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/8.png
--------------------------------------------------------------------------------
/src/assets/img/products/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/9.png
--------------------------------------------------------------------------------
/src/assets/img/pokemon_store.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/pokemon_store.png
--------------------------------------------------------------------------------
/src/assets/img/products/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/10.png
--------------------------------------------------------------------------------
/src/assets/img/products/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/12.png
--------------------------------------------------------------------------------
/src/assets/img/products/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/13.png
--------------------------------------------------------------------------------
/src/assets/img/products/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/14.png
--------------------------------------------------------------------------------
/src/assets/img/products/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/15.png
--------------------------------------------------------------------------------
/src/assets/img/products/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/16.png
--------------------------------------------------------------------------------
/src/assets/img/products/17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/17.png
--------------------------------------------------------------------------------
/src/assets/img/products/18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/18.png
--------------------------------------------------------------------------------
/src/assets/img/products/19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/19.png
--------------------------------------------------------------------------------
/src/assets/img/products/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/20.png
--------------------------------------------------------------------------------
/src/assets/img/products/21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/21.png
--------------------------------------------------------------------------------
/src/assets/img/products/22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/22.png
--------------------------------------------------------------------------------
/src/assets/img/products/23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/23.png
--------------------------------------------------------------------------------
/src/assets/img/products/24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/24.png
--------------------------------------------------------------------------------
/src/assets/img/products/25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/25.png
--------------------------------------------------------------------------------
/src/assets/img/products/26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/products/26.png
--------------------------------------------------------------------------------
/src/assets/img/slide/slide_0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/slide/slide_0.jpg
--------------------------------------------------------------------------------
/src/assets/img/slide/slide_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/slide/slide_1.jpg
--------------------------------------------------------------------------------
/src/assets/img/slide/slide_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/slide/slide_2.jpg
--------------------------------------------------------------------------------
/src/assets/img/slide/slide_3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/slide/slide_3.jpg
--------------------------------------------------------------------------------
/src/assets/img/slide/slide_4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/slide/slide_4.jpg
--------------------------------------------------------------------------------
/src/assets/img/pokemon_center.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/src/assets/img/pokemon_center.png
--------------------------------------------------------------------------------
/dist/img/pokemon_store.7524e985.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icguanyu/pokeStore/HEAD/dist/img/pokemon_store.7524e985.png
--------------------------------------------------------------------------------
/src/filters/date.js:
--------------------------------------------------------------------------------
1 | export default function (time) {
2 | const date = new Date(time * 1000);
3 | return date.toLocaleDateString();
4 | }
--------------------------------------------------------------------------------
/src/filters/textlength.js:
--------------------------------------------------------------------------------
1 | export default function (text) {
2 | let len = 30
3 | let textlen = text.length
4 | if(textlen>len){
5 | text = text.substring(0,len-1)+"...";
6 | }
7 | return text
8 | }
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | lintOnSave: false,
3 | baseUrl: 'pokeStore/dist',
4 | outputDir: undefined,
5 | assetsDir: undefined,
6 | runtimeCompiler: undefined,
7 | productionSourceMap: undefined,
8 | parallel: undefined,
9 | css: undefined
10 | }
11 |
--------------------------------------------------------------------------------
/src/filters/currency.js:
--------------------------------------------------------------------------------
1 | export default function (num) {
2 | const n = Number(num);
3 | return `$${n.toFixed(0).replace(/./g, (c, i, a) => {
4 | const currency = (i && c !== '.' && ((a.length - i) % 3 === 0) ? `, ${c}`.replace(/\s/g, '') : c);
5 | return currency;
6 | })}`;
7 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | #/dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw*
22 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
24 |
--------------------------------------------------------------------------------
/src/components/loading.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |

4 |
5 |
6 |
7 |
12 |
13 |
33 |
--------------------------------------------------------------------------------
/dist/css/chunk-316959a4.55c94f94.css:
--------------------------------------------------------------------------------
1 | a[data-v-5dbdd936]{color:#fff}.board[data-v-5dbdd936]{width:100%}.navbar[data-v-5dbdd936]{width:100%;padding:20px 0;background:#184b80}.navbar .container[data-v-5dbdd936]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 20px;max-width:1080px;margin:auto;color:#fff}.navbar .container .title[data-v-5dbdd936]{font-size:16px;letter-spacing:3px;margin-right:30px}.navbar .container ul[data-v-5dbdd936]{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar .container li[data-v-5dbdd936]{cursor:pointer;margin:0 10px}
--------------------------------------------------------------------------------
/src/components/breadcrumb.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 首頁 /
4 | - {{categories}} /
5 | - {{productTitle}}
6 |
7 |
8 |
9 |
15 |
16 |
39 |
--------------------------------------------------------------------------------
/dist/js/chunk-316959a4.38429096.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-316959a4"],{"34c8":function(t,i,n){},"5ebc":function(t,i,n){"use strict";var a=n("34c8"),o=n.n(a);o.a},b6a5:function(t,i,n){"use strict";n.r(i);var a=function(){var t=this,i=t.$createElement,n=t._self._c||i;return n("div",{staticClass:"board"},[n("div",{staticClass:"navbar"},[n("div",{staticClass:"container"},[n("ul",[n("router-link",{attrs:{to:"/admin"}},[n("li",[t._v("產品管理")])]),n("router-link",{attrs:{to:"/admin/orderManager"}},[n("li",[t._v("訂單管理")])]),n("router-link",{attrs:{to:"/admin/cupconManager"}},[n("li",[t._v("優惠券")])])],1),n("ul",[n("router-link",{attrs:{to:"/"}},[n("li",[t._v("回到首頁")])]),n("li",{on:{click:t.signout}},[t._v("登出")])],1)])]),n("router-view")],1)},o=[],s=(n("1157"),{name:"admin",methods:{signout:function(){var t=this,i="".concat("https://vue-course-api.hexschool.io","/logout");t.isLoading=!0,this.$http.post(i).then(function(i){i.data.success&&(t.$router.push("/"),t.isLoading=!1)})}}}),e=s,r=(n("5ebc"),n("2877")),c=Object(r["a"])(e,a,o,!1,null,"5dbdd936",null);c.options.__file="admin.vue";i["default"]=c.exports}}]);
2 | //# sourceMappingURL=chunk-316959a4.38429096.js.map
--------------------------------------------------------------------------------
/src/components/alert.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
21 |
22 |
64 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import store from './store'
5 |
6 | import vuex from 'vuex'
7 | import axios from 'axios'
8 | import VueAxios from 'vue-axios'
9 | import VeeValidate from 'vee-validate'
10 | import attributesTW from 'vee-validate/dist/locale/zh_TW.js'
11 | import currencyFilter from './filters/currency'
12 | import dateFilter from './filters/date'
13 | import textlength from './filters/textlength'
14 | import 'bootstrap'
15 |
16 | Vue.use(vuex)
17 | Vue.use(VueAxios, axios)
18 | Vue.use(VeeValidate)
19 |
20 | VeeValidate.Validator.localize('zh_TW', attributesTW)
21 |
22 | Vue.filter('currency', currencyFilter)
23 | Vue.filter('dateFilter', dateFilter)
24 | Vue.filter('textlength', textlength)
25 |
26 | axios.defaults.withCredentials = true
27 | Vue.config.productionTip = false
28 |
29 | new Vue({
30 | router,
31 | store,
32 | render: h => h(App)
33 | }).$mount('#app')
34 |
35 | router.beforeEach((to, from, next) => {
36 | if (to.meta.requiresAuth) {
37 | const api = `${process.env.VUE_APP_APIPATH}/api/user/check`
38 | axios.post(api).then(res => {
39 | console.log(res.data)
40 | if (res.data.success) {
41 | next()
42 | } else {
43 | alert('請重新登入')
44 | next({
45 | path: '/signin'
46 | })
47 | }
48 | })
49 | } else {
50 | next()
51 | }
52 | })
53 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pokestore3.0",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "axios": "^0.18.0",
12 | "bootstrap": "^4.1.3",
13 | "jquery": "^3.3.1",
14 | "popper": "^1.0.1",
15 | "popper.js": "^1.14.4",
16 | "vee-validate": "^2.1.0-beta.9",
17 | "vue": "^2.5.17",
18 | "vue-awesome-swiper": "^3.1.3",
19 | "vue-axios": "^2.1.4",
20 | "vue-router": "^3.0.1",
21 | "vuex": "^3.0.1"
22 | },
23 | "devDependencies": {
24 | "@vue/cli-plugin-babel": "^3.0.4",
25 | "@vue/cli-plugin-eslint": "^3.0.4",
26 | "@vue/cli-service": "^3.0.4",
27 | "@vue/eslint-config-standard": "^3.0.4",
28 | "node-sass": "^4.9.0",
29 | "sass-loader": "^7.0.1",
30 | "vue-template-compiler": "^2.5.17"
31 | },
32 | "eslintConfig": {
33 | "root": true,
34 | "env": {
35 | "node": true
36 | },
37 | "extends": [
38 | "plugin:vue/essential",
39 | "@vue/standard"
40 | ],
41 | "rules": {},
42 | "parserOptions": {
43 | "parser": "babel-eslint"
44 | }
45 | },
46 | "postcss": {
47 | "plugins": {
48 | "autoprefixer": {}
49 | }
50 | },
51 | "browserslist": [
52 | "> 1%",
53 | "last 2 versions",
54 | "not ie <= 8"
55 | ]
56 | }
57 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | PokeStore寶可商店3.0
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
25 |
26 |
27 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/assets/all.scss:
--------------------------------------------------------------------------------
1 | @import url(//fonts.googleapis.com/earlyaccess/notosanstc.css);
2 |
3 | body,
4 | html {
5 | margin: 0;
6 | padding: 0;
7 | width: 100%;
8 | min-height: 100vh;
9 | font-family: "Noto Sans TC", sans-serif;
10 | position: relative;
11 | display: flex;
12 | justify-content: center;
13 | //border-top: 2px solid #fbc324;
14 | overflow-x: hidden;
15 | }
16 | a {
17 | text-decoration: none;
18 | color: #333;
19 | }
20 | h1,
21 | h2,
22 | h3,
23 | h4,
24 | h5,
25 | h6,
26 | p,
27 | span,
28 | ul,
29 | li {
30 | padding: 0;
31 | margin: 0;
32 | }
33 |
34 | table {
35 | width: 100%;
36 | margin-bottom: 20px;
37 | border-collapse: collapse; //摺疊邊框
38 | thead {
39 | background: #eee;
40 | th{
41 | font-weight: normal;
42 | height: 40px;
43 | }
44 | }
45 | tr{
46 | border-bottom: 1px solid #ccc;
47 | }
48 | td {
49 | padding: 6px;
50 | font-weight: 200;
51 | color: #333;
52 | font-weight: normal;
53 | i{
54 | cursor: pointer;
55 | }
56 | }
57 | }
58 | ::placeholder{
59 | font-family: "Noto Sans TC", sans-serif;
60 | letter-spacing: 1px;
61 | font-size: 16px;
62 | color: #aaa;
63 | }
64 | label{
65 | display: block;
66 | margin: 0 5px;
67 | }
68 | input,
69 | button,textarea {
70 | font-size: 16px;
71 | color: #666;
72 | outline: none;
73 | border: 1px solid #ccc;
74 | padding: 5px;
75 | margin: 5px;
76 | letter-spacing: 2px;
77 | background: #fff;
78 | font-family: "Noto Sans TC", sans-serif;
79 | border-radius: 3px;
80 | transition: all .3s;
81 | box-sizing: border-box;
82 | }
--------------------------------------------------------------------------------
/src/components/Pagination.vue:
--------------------------------------------------------------------------------
1 |
2 |
28 |
29 |
30 |
45 |
48 |
--------------------------------------------------------------------------------
/src/components/bottom.vue:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 |
27 |
28 |
70 |
--------------------------------------------------------------------------------
/src/views/admin.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | - 產品管理
7 | - 訂單管理
8 | - 優惠券
9 |
10 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
40 |
41 |
76 |
--------------------------------------------------------------------------------
/src/router.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 |
4 | Vue.use(Router)
5 |
6 | export default new Router({
7 | routes: [
8 | {
9 | path: '*',
10 | redirect: '/'
11 | },
12 | {
13 | path: '/',
14 | name: 'Home',
15 | component: () => import('@/views/home')
16 | },
17 | {
18 | path: '/categories',
19 | name: 'categories',
20 | component: () => import('@/views/categories')
21 | },
22 | {
23 | path: '/categories/:productId',
24 | name: 'productInfo',
25 | component: () => import('@/views/productInfo')
26 | },
27 | {
28 | path: '/checkout',
29 | name: 'Checkout',
30 | component: () => import('@/views/checkout')
31 | },
32 | {
33 | path: '/comfirm/:orderId',
34 | name: 'comfirm',
35 | component: () => import('@/views/comfirm')
36 | },
37 | {
38 | path: '/signin',
39 | name: 'signin',
40 | component: () => import('@/views/signin')
41 | },
42 | {
43 | path: '',
44 | name: 'admin',
45 | component: () => import('@/views/admin'),
46 | children: [
47 | {
48 | path: '/admin',
49 | name: 'productsManger',
50 | component: () => import('@/views/productsManager'),
51 | meta: { requiresAuth: true }
52 | },
53 | {
54 | path: '/admin/orderManager',
55 | name: 'orderManager',
56 | component: () => import('@/views/orderManager'),
57 | meta: { requiresAuth: true }
58 | },
59 | {
60 | path: '/admin/cupconManager',
61 | name: 'cupconManager',
62 | component: () => import('@/views/cupconManager'),
63 | meta: { cupconManager: true }
64 | }
65 | ]
66 | }
67 | ]
68 | })
69 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # pokestore 寶可電商
2 |
3 | 
4 |
5 | ## Demo
6 | [https://icguanyu.github.io/pokeStore/dist/#/](https://icguanyu.github.io/pokeStore/dist/#/)
7 |
8 | ## 簡介
9 | 此為前端練習作品,主要功能為:
10 |
11 | + 前台: 商品展示(分類、單一商品詳細介紹)、購物車功能、下單、結帳資訊、管理員登入等
12 | + 後台: 產品管理(新增/修改/刪除)、訂單管理、優惠券管理。
13 |
14 | ### 主要練習
15 | + VueCli (2) --> (3) 10/8
16 | + Vuex
17 | + VueRouter
18 | + 元件概念
19 | + Webpack
20 | + API操作
21 | + RWD
22 | + 手刻前台css
23 |
24 | ## 內容介紹
25 | ### loading
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 | 後台並無特別客製或RWD,主要使用bootstrap
56 | 
57 |
58 | ## 使用外掛
59 | + [bootstrap](https://bootstrap.hexschool.com/) (僅後台使用)
60 | + [vue-axios](https://www.npmjs.com/package/vue-axios)
61 | + [swiper](http://idangero.us/swiper/) (可滑動的slideshow)
62 | + [VeeValidate](https://baianat.github.io/vee-validate/) (驗證)
63 |
64 | ## 過濾功能
65 | + 價格符號與分位
66 | + 字數限制
67 | + 日期轉換(後台)
68 |
69 | [詳細內容](https://github.com/icguanyu/pokeStore/tree/master/src/filters)
70 |
71 | ## 耗費工時
72 | 約5個工作天,每日八小時(或以上)。
73 |
74 | ## 感謝
75 | + [六角學院Vue出一個電商網站](https://www.udemy.com/vue-hexschool/learn/v4/content)
76 | + pokemon
77 |
78 | 仍有許多內容未完善,實際體驗架設一個小電商後才發現:
79 | > 要完成的細節真的太多了,難怪架一個好的電商要幾十萬或上百萬(汗,而且真的不是一個人能完成的。
80 |
81 |
82 | ## 內容來源
83 | + google: pokemon
84 | + https://www.pokemon.com/us/
--------------------------------------------------------------------------------
/dist/css/chunk-31edb82a.a350a04e.css:
--------------------------------------------------------------------------------
1 | .signin[data-v-7803ff9a]{width:100%;height:100vh;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.box[data-v-7803ff9a]{width:300px;border-radius:10px;margin-bottom:60px}.box img[data-v-7803ff9a]{width:100%;margin-bottom:20px}input[data-v-7803ff9a]{width:100%}input[data-v-7803ff9a]:focus{padding:10px 5px}button[data-v-7803ff9a]{cursor:pointer;border:none;width:100%;background:#e65a41;color:#fff;-webkit-transition:all .3s;transition:all .3s}button[data-v-7803ff9a]:hover{background:#d93113}.anibox[data-v-7803ff9a]{padding-bottom:20px;max-width:1080px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;margin:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative}.anibox .home img[data-v-7803ff9a]{width:160px}.anibox .truck[data-v-7803ff9a]{position:absolute;bottom:-10px;-webkit-animation:drive-data-v-7803ff9a 10s linear infinite;animation:drive-data-v-7803ff9a 10s linear infinite}.anibox .truck img[data-v-7803ff9a]{width:80px;-webkit-animation:wave-data-v-7803ff9a .5s linear infinite;animation:wave-data-v-7803ff9a .5s linear infinite}@-webkit-keyframes drive-data-v-7803ff9a{0%{right:-20%}40%{right:45%}60%{right:45%}to{right:100%}}@keyframes drive-data-v-7803ff9a{0%{right:-20%}40%{right:45%}60%{right:45%}to{right:100%}}@-webkit-keyframes wave-data-v-7803ff9a{0%{-webkit-transform:translateY(3%);transform:translateY(3%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes wave-data-v-7803ff9a{0%{-webkit-transform:translateY(3%);transform:translateY(3%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}
--------------------------------------------------------------------------------
/dist/js/chunk-b4219176.3f38bbef.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-b4219176"],{"05b4":function(a,t,e){"use strict";var n=e("8252"),i=e.n(n);i.a},1799:function(a,t,e){"use strict";var n=function(){var a=this,t=a.$createElement,e=a._self._c||t;return a.pagination?e("nav",{attrs:{"aria-label":"Page navigation example"}},[e("ul",{staticClass:"pagination"},[e("li",{staticClass:"page-item",class:{disabled:!a.pagination.has_pre},on:{click:function(t){t.preventDefault(),a.updatePage(a.pagination.current_page-1)}}},[a._m(0)]),a._l(a.pagination.total_pages,function(t){return e("li",{key:t,staticClass:"page-item",class:{active:a.pagination.current_page===t},on:{click:function(e){e.preventDefault(),a.updatePage(t)}}},[e("a",{staticClass:"page-link",attrs:{href:"#"}},[a._v(a._s(t))])])}),e("li",{staticClass:"page-item",class:{disabled:!a.pagination.has_next},on:{click:function(t){t.preventDefault(),a.updatePage(a.pagination.current_page+1)}}},[a._m(1)])],2)]):a._e()},i=[function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("a",{staticClass:"page-link",attrs:{href:"#","aria-label":"Previous"}},[e("span",{attrs:{"aria-hidden":"true"}},[a._v("«")]),e("span",{staticClass:"sr-only"},[a._v("Previous")])])},function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("a",{staticClass:"page-link",attrs:{href:"#","aria-label":"Next"}},[e("span",{attrs:{"aria-hidden":"true"}},[a._v("»")]),e("span",{staticClass:"sr-only"},[a._v("Next")])])}],s=e("c93e"),c=e("2f62"),r={name:"Navbar",methods:{updatePage:function(a){var t="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/products?page=").concat(a);this.$store.dispatch("getProducts",t)}},computed:Object(s["a"])({},Object(c["c"])(["pagination"]))},l=r,o=(e("05b4"),e("2877")),p=Object(o["a"])(l,n,i,!1,null,"a0f2a93c",null);p.options.__file="Pagination.vue";t["a"]=p.exports},8252:function(a,t,e){}}]);
2 | //# sourceMappingURL=chunk-b4219176.3f38bbef.js.map
--------------------------------------------------------------------------------
/dist/js/chunk-31edb82a.cee782b9.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-31edb82a"],{1815:function(t,e,s){t.exports=s.p+"img/home.168d16a8.png"},"716b":function(t,e,s){},"94d3":function(t,e,s){t.exports=s.p+"img/pokemon_store.7524e985.png"},a068:function(t,e,s){"use strict";var a=s("716b"),n=s.n(a);n.a},ac9e:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"signin"},[t.isLoading?a("loading"):t._e(),a("div",{staticClass:"box"},[a("img",{attrs:{src:s("94d3"),alt:""}}),t._m(0),a("input",{directives:[{name:"model",rawName:"v-model",value:t.user.username,expression:"user.username"}],attrs:{type:"text",placeholder:"abc@gmail.com",autocomplete:"true"},domProps:{value:t.user.username},on:{input:function(e){e.target.composing||t.$set(t.user,"username",e.target.value)}}}),a("input",{directives:[{name:"model",rawName:"v-model",value:t.user.password,expression:"user.password"}],attrs:{type:"password",placeholder:"******",autocomplete:"true"},domProps:{value:t.user.password},on:{input:function(e){e.target.composing||t.$set(t.user,"password",e.target.value)}}}),a("button",{on:{click:t.signin}},[t._v("登入")]),a("router-link",{attrs:{to:"back"}},[a("button",{staticClass:"back"},[t._v("返回")])])],1)],1)},n=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"anibox"},[a("div",{staticClass:"home"},[a("img",{attrs:{src:s("1815"),alt:""}})]),a("div",{staticClass:"truck"},[a("img",{attrs:{src:s("ec2d"),alt:""}})])])}],i=(s("cadf"),s("551c"),s("097d"),s("1157"),s("c428")),o={name:"signin",components:{loading:i["a"]},data:function(){return{user:{username:"",password:""},isLoading:!1}},methods:{signin:function(){var t=this,e="".concat("https://vue-course-api.hexschool.io","/admin/signin");t.isLoading=!0,this.$http.post(e,t.user).then(function(e){e.data.success?(t.$router.push("/"),t.isLoading=!1):(alert("資料錯誤"),t.isLoading=!1)})}}},r=o,u=(s("a068"),s("2877")),c=Object(u["a"])(r,a,n,!1,null,"7803ff9a",null);c.options.__file="signin.vue";e["default"]=c.exports},ec2d:function(t,e,s){t.exports=s.p+"img/truck.52c2bb1f.png"}}]);
2 | //# sourceMappingURL=chunk-31edb82a.cee782b9.js.map
--------------------------------------------------------------------------------
/dist/css/chunk-747baa50.79e452b8.css:
--------------------------------------------------------------------------------
1 | ul[data-v-d034d3c8]{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;margin:8px 0;padding:5px 0;color:#999}ul li[data-v-d034d3c8]{font-size:14px;letter-spacing:2px;color:#4287d7}@media screen and (max-width:640px){ul[data-v-d034d3c8]{margin:8px 15px}ul li[data-v-d034d3c8]{letter-spacing:0}}.products_info[data-v-02061eb6]{max-width:1080px;width:100%;margin:0 auto;background-position:50%;background-size:cover}.products_info h1[data-v-02061eb6]{color:#2b447d;margin:20px auto;width:18em;border-right:.05em solid;overflow:hidden;font-weight:900;white-space:nowrap;-webkit-animation:typing 3s steps(18),insert 1s steps(1) infinite;animation:typing 3s steps(18),insert 1s steps(1) infinite}.categories_titel[data-v-02061eb6]{position:relative;font-size:20px;font-weight:600;color:#53acac;margin-bottom:10px}.products_box[data-v-02061eb6]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.left[data-v-02061eb6],.right[data-v-02061eb6]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:20px;margin:5px;border:1px solid #eee}.imgbox[data-v-02061eb6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:20px}.imgbox img[data-v-02061eb6]{max-width:100%;max-height:100%}.info_box[data-v-02061eb6]{color:#444;font-size:14px;letter-spacing:1px;margin-bottom:40px}.info_box .title[data-v-02061eb6]{font-size:18px;padding:20px 0;margin-bottom:10px;color:#555;border-bottom:1px solid #ddd}.right .product_title[data-v-02061eb6]{font-size:24px;margin:10px 0;letter-spacing:3px}.right .ori_price[data-v-02061eb6]{font-size:14px;color:#666}.right .sale_price[data-v-02061eb6]{font-size:22px;font-weight:600;color:#3cb1a6}select[data-v-02061eb6]{margin:10px 0;padding:10px;outline:none;width:100%;font-size:16px;letter-spacing:2px;font-family:Noto Sans TC,sans-serif}button[data-v-02061eb6]{cursor:pointer;margin:0;width:100%;background:#fc6767;border:none;color:#fff}button[data-v-02061eb6]:hover{background:#ef1c1c}.out[data-v-02061eb6],.out[data-v-02061eb6]:hover{background:#999}@media screen and (max-width:640px){.products_box[data-v-02061eb6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}
--------------------------------------------------------------------------------
/dist/css/app.d6285bd9.css:
--------------------------------------------------------------------------------
1 | @import url(//fonts.googleapis.com/earlyaccess/notosanstc.css);.loading{background:hsla(0,0%,100%,.8);width:100%;height:100vh;overflow:hidden;position:fixed;top:0;left:0;z-index:1000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.loading img{width:120px;opacity:.9}.alert[data-v-a0bb0fce]{width:100%;position:fixed;top:0;left:0;padding:20px 0;background:#f8e55c;z-index:100;opacity:0;-webkit-transform:translateY(-120%);transform:translateY(-120%);-webkit-transition:all .3s;transition:all .3s}.alert p[data-v-a0bb0fce]{text-align:center;letter-spacing:2px;position:relative}.alert i[data-v-a0bb0fce]{font-size:24px;position:absolute;cursor:pointer;margin:0 20px;right:0;top:0}.showalert[data-v-a0bb0fce]{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}@media screen and (max-width:640px){.alert p[data-v-a0bb0fce]{font-size:14px;letter-spacing:1px}.alert i[data-v-a0bb0fce]{display:none}}body,html{margin:0;padding:0;width:100%;min-height:100vh;font-family:Noto Sans TC,sans-serif;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow-x:hidden}a{text-decoration:none;color:#333}h1,h2,h3,h4,h5,h6,li,p,span,ul{padding:0;margin:0}table{width:100%;margin-bottom:20px;border-collapse:collapse}table thead{background:#eee}table thead th{font-weight:400;height:40px}table tr{border-bottom:1px solid #ccc}table td{padding:6px;font-weight:200;color:#333;font-weight:400}table td i{cursor:pointer}::-webkit-input-placeholder{font-family:Noto Sans TC,sans-serif;letter-spacing:1px;font-size:16px;color:#aaa}::-ms-input-placeholder{font-family:Noto Sans TC,sans-serif;letter-spacing:1px;font-size:16px;color:#aaa}::placeholder{font-family:Noto Sans TC,sans-serif;letter-spacing:1px;font-size:16px;color:#aaa}label{display:block;margin:0 5px}button,input,textarea{font-size:16px;color:#666;outline:none;border:1px solid #ccc;padding:5px;margin:5px;letter-spacing:2px;background:#fff;font-family:Noto Sans TC,sans-serif;border-radius:3px;-webkit-transition:all .3s;transition:all .3s;-webkit-box-sizing:border-box;box-sizing:border-box}#app{width:100%}
--------------------------------------------------------------------------------
/src/views/home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
"冒險者!歡迎來到神奇寶貝購物中心"
6 |
7 |
2018.09.21緊急因真新鎮受超夢大軍侵襲,暫時停止營業,不便之處,敬請見諒。
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
46 |
47 |
48 |
105 |
--------------------------------------------------------------------------------
/src/views/orderManager.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | | 購買時間 |
7 | Email |
8 | 購買款項 |
9 | 應付金額 |
10 | 是否付款 |
11 |
12 |
13 |
14 |
17 | | {{ item.create_at | dateFilter }} |
18 | |
19 |
20 |
21 | -
22 | {{ product.product.title }} 數量:{{ product.qty }}
23 | {{ product.product.unit }}
24 |
25 |
26 | |
27 | {{ item.total | currency }} |
28 |
29 | 已付款
30 | 尚未付款
31 | |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/src/components/slide.vue:
--------------------------------------------------------------------------------
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 |
60 |
61 |
62 |
111 |
--------------------------------------------------------------------------------
/dist/js/chunk-f13ff028.594ed7c8.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-f13ff028"],{1959:function(t,n,e){"use strict";e.r(n);var r=function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"orderbox"},[e("table",{staticClass:"table"},[t._m(0),e("tbody",t._l(t.sortOrder,function(n,r){return t.orders.length?e("tr",{key:r,class:{"text-secondary":!n.is_paid}},[e("td",[t._v(t._s(t._f("dateFilter")(n.create_at)))]),e("td",[n.user?e("span",{domProps:{textContent:t._s(n.user.email)}}):t._e()]),e("td",[e("ul",{staticClass:"list-unstyled"},t._l(n.products,function(n,r){return e("li",{key:r},[t._v("\n "+t._s(n.product.title)+" 數量:"+t._s(n.qty)+"\n "+t._s(n.product.unit)+"\n ")])}))]),e("td",{staticClass:"text-right"},[t._v(t._s(t._f("currency")(n.total)))]),e("td",[n.is_paid?e("strong",{staticClass:"text-success"},[t._v("已付款")]):e("span",{staticClass:"text-muted"},[t._v("尚未付款")])])]):t._e()}))]),e("Pagination",{attrs:{pages:t.pagination},on:{emitPages:t.getOrders}})],1)},s=[function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("thead",[e("tr",[e("td",[t._v("購買時間")]),e("td",[t._v("Email")]),e("td",[t._v("購買款項")]),e("td",[t._v("應付金額")]),e("td",[t._v("是否付款")])])])}],a=(e("55dd"),e("f751"),e("cadf"),e("551c"),e("097d"),e("1799")),o={components:{Pagination:a["a"]},data:function(){return{orders:[],pagination:{}}},methods:{getOrders:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=this,e="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/orders?page=").concat(t);n.$store.dispatch("updateLoading",!0),this.$http.get(e).then(function(t){n.orders=t.data.orders,n.pagination=t.data.pagination,n.$store.dispatch("updateLoading",!1)})},openDeleteModel:function(t){this.tempProduct=Object.assign({},t),$("#delProductModal").modal("show")}},computed:{sortOrder:function(){var t=this,n=[];return t.orders.length&&(n=t.orders.sort(function(t,n){var e=t.is_paid?1:0,r=n.is_paid?1:0;return r-e})),n}},created:function(){this.getOrders()}},i=o,c=(e("4c9f"),e("2877")),d=Object(c["a"])(i,r,s,!1,null,"2bedc2cc",null);d.options.__file="orderManager.vue";n["default"]=d.exports},2621:function(t,n){n.f=Object.getOwnPropertySymbols},"2f21":function(t,n,e){"use strict";var r=e("79e5");t.exports=function(t,n){return!!t&&r(function(){n?t.call(null,function(){},1):t.call(null)})}},"4c9f":function(t,n,e){"use strict";var r=e("84a1"),s=e.n(r);s.a},"55dd":function(t,n,e){"use strict";var r=e("5ca1"),s=e("d8e8"),a=e("4bf8"),o=e("79e5"),i=[].sort,c=[1,2,3];r(r.P+r.F*(o(function(){c.sort(void 0)})||!o(function(){c.sort(null)})||!e("2f21")(i)),"Array",{sort:function(t){return void 0===t?i.call(a(this)):i.call(a(this),s(t))}})},7333:function(t,n,e){"use strict";var r=e("0d58"),s=e("2621"),a=e("52a7"),o=e("4bf8"),i=e("626a"),c=Object.assign;t.exports=!c||e("79e5")(function(){var t={},n={},e=Symbol(),r="abcdefghijklmnopqrst";return t[e]=7,r.split("").forEach(function(t){n[t]=t}),7!=c({},t)[e]||Object.keys(c({},n)).join("")!=r})?function(t,n){var e=o(t),c=arguments.length,d=1,u=s.f,l=a.f;while(c>d){var f,p=i(arguments[d++]),_=u?r(p).concat(u(p)):r(p),h=_.length,v=0;while(h>v)l.call(p,f=_[v++])&&(e[f]=p[f])}return e}:c},"84a1":function(t,n,e){},f751:function(t,n,e){var r=e("5ca1");r(r.S+r.F,"Object",{assign:e("7333")})}}]);
2 | //# sourceMappingURL=chunk-f13ff028.594ed7c8.js.map
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 | PokeStore寶可商店3.0
--------------------------------------------------------------------------------
/src/views/signin.vue:
--------------------------------------------------------------------------------
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 |
62 |
63 |
146 |
--------------------------------------------------------------------------------
/dist/js/chunk-747baa50.e0f1e4d8.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-747baa50"],{"1aae":function(t,a,e){"use strict";var c=e("6fc7"),s=e.n(c);s.a},"6fc7":function(t,a,e){},"90df":function(t,a,e){"use strict";var c=e("b31b"),s=e.n(c);s.a},b31b:function(t,a,e){},b3a4:function(t,a,e){"use strict";var c=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ul",[e("li",[e("router-link",{attrs:{to:"/"}},[t._v("首頁 / ")])],1),t.categories?e("li",[t._v(t._s(t.categories)+" / ")]):t._e(),t.productTitle?e("li",[t._v(t._s(t.productTitle))]):t._e()])},s=[],o={props:["categories","productTitle"],name:"breadcrumb"},i=o,r=(e("1aae"),e("2877")),n=Object(r["a"])(i,c,s,!1,null,"d034d3c8",null);n.options.__file="breadcrumb.vue";a["a"]=n.exports},d601:function(t,a,e){"use strict";e.r(a);var c=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"products_info"},[e("navbar"),e("breadcrumb",{attrs:{categories:t.product.category,productTitle:t.product.title}}),e("div",{staticClass:"products_box"},[e("div",{staticClass:"left"},[e("div",{staticClass:"imgbox"},[e("img",{attrs:{src:t.product.imageUrl,alt:""}})]),e("div",{staticClass:"info_box"},[e("p",{staticClass:"title"},[t._v("商品介紹")]),e("p",{staticClass:"text"},[t._v(t._s(t.product.description))])]),t._m(0)]),e("div",{staticClass:"right"},[e("div",{staticClass:"product_title"},[t._v(t._s(t.product.title))]),e("div",{staticClass:"ori_price"},[t._v("原價 NT"+t._s(t._f("currency")(t.product.origin_price)))]),e("div",{staticClass:"sale_price"},[t._v("特價 NT"+t._s(t._f("currency")(t.product.price)))]),e("select",{directives:[{name:"model",rawName:"v-model",value:t.counts,expression:"counts"}],attrs:{name:"count",id:"count"},on:{change:function(a){var e=Array.prototype.filter.call(a.target.options,function(t){return t.selected}).map(function(t){var a="_value"in t?t._value:t.value;return a});t.counts=a.target.multiple?e:e[0]}}},[e("option",{attrs:{value:"0",selected:"",disabled:""}},[t._v("請選擇數量")]),t._l(10,function(a){return e("option",{key:a,domProps:{value:a}},[t._v("\n 選購 "+t._s(a)+" "+t._s(t.product.unit)+"\n ")])})],2),t.product.is_enabled?e("button",{on:{click:function(a){t.addtoCart(t.product.id,t.product.title,t.counts)}}},[t._v("\n 小計 "),e("strong",[t._v(t._s(t._f("currency")(t.counts*t.product.price)))]),t._v(" 元 / 加入購物車\n ")]):e("button",{staticClass:"out"},[t._v("已售完")]),t._m(1)])]),e("car"),e("bottom")],1)},s=[function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"info_box"},[e("p",{staticClass:"title"},[t._v("運費資訊")]),e("p",{staticClass:"text"},[t._v("無")])])},function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"info_box"},[e("p",{staticClass:"title"},[t._v("注意事項")]),e("p",{staticClass:"text"},[t._v("無")])])}],o=(e("2f62"),e("9d8d")),i=e("b3a4"),r=e("5ae2"),n=e("21a8"),u={name:"categories",data:function(){return{productId:"",product:[],counts:0}},components:{breadcrumb:i["a"],bottom:n["a"],navbar:o["a"],car:r["a"]},methods:{getProduct:function(){var t=this,a="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/product/").concat(t.productId);t.$store.dispatch("updateLoading",!0),this.$http.get(a).then(function(a){a.data.success?(t.product=a.data.product,t.$store.dispatch("updateLoading",!1)):console.log(a.data.message)})},getCart:function(){this.$store.dispatch("getCart")},addtoCart:function(t,a){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(this.counts<1)alert("請選擇數量");else{var c={boolean:!0,title:"已將「".concat(a," x ").concat(this.counts," ").concat(this.product.unit,"」加入購物車")};this.$store.dispatch("addtoCart",{id:t,alertinfo:c,qty:e})}},closealert:function(){var t={boolean:!1,title:""};this.$store.dispatch("closealert",t)}},created:function(){this.productId=this.$route.params.productId,this.getProduct()}},d=u,l=(e("90df"),e("2877")),p=Object(l["a"])(d,c,s,!1,null,"02061eb6",null);p.options.__file="productInfo.vue";a["default"]=p.exports}}]);
2 | //# sourceMappingURL=chunk-747baa50.e0f1e4d8.js.map
--------------------------------------------------------------------------------
/src/store.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import vuex from 'vuex'
3 | import axios from 'axios'
4 | Vue.use(vuex)
5 |
6 | export default new vuex.Store({
7 | strict: true,
8 | state: {
9 | status: false,
10 | isLoading: false,
11 | cart: {
12 | carts: []
13 | },
14 | alert: {
15 | boolean: false,
16 | title: ''
17 | },
18 | products: [],
19 | pagination: {}
20 | },
21 | actions: {
22 | updateLoading (context, status) {
23 | context.commit('LOADING', status)
24 | },
25 | getCart (context) {
26 | const api = `${process.env.VUE_APP_APIPATH}/api/${process.env.VUE_APP_CUSTOMPATH}/cart`;
27 | context.commit('LOADING', true)
28 | axios.get(api).then(function (response) {
29 | context.commit('CARTS', response.data.data)
30 | context.commit('LOADING', false)
31 | })
32 | },
33 | showalert (context, payload) {
34 | context.commit('ALERT', payload)
35 | setTimeout(() => {
36 | let temp = {
37 | boolean: false
38 | }
39 | context.commit('ALERT', temp)
40 | }, 2000)
41 | },
42 | closealert (context, payload) {
43 | context.commit('ALERT', payload)
44 | },
45 | check (context) {
46 | const api = `${process.env.VUE_APP_APIPATH}/api/user/check`;
47 | axios.post(api).then(res => {
48 | if (res.data.success) {
49 | context.commit('STATUS', true)
50 | } else {
51 | context.commit('STATUS', false)
52 | }
53 | })
54 | },
55 | getProducts (context, payload) {
56 | const api = payload
57 | context.commit('LOADING', true)
58 | axios.get(api).then(function (response) {
59 | context.commit('PRODUCTS', response.data.products)
60 | context.commit('PAGINATION', response.data.pagination)
61 | context.commit('LOADING', false)
62 | })
63 | },
64 | addtoCart (context, { id, alertinfo,qty }) {
65 | const api = `${process.env.VUE_APP_APIPATH}/api/${process.env.VUE_APP_CUSTOMPATH}/cart`;
66 | const cart = {
67 | product_id: id,
68 | qty
69 | }
70 | context.commit('LOADING', true)
71 | axios.post(api, { data: cart }).then(function (response) {
72 | context.dispatch('getCart')
73 | context.dispatch('showalert', alertinfo)
74 | context.commit('LOADING', false)
75 | })
76 | },
77 | removeCartItem (context, id) {
78 | const api = `${process.env.VUE_APP_APIPATH}/api/${process.env.VUE_APP_CUSTOMPATH}/cart/${id}`;
79 | context.commit('LOADING', true)
80 | axios.delete(api).then(function (response) {
81 | context.dispatch('getCart')
82 | })
83 | },
84 | addCouponCode (context, coupon) {
85 | const api = `${process.env.VUE_APP_APIPATH}/api/${process.env.VUE_APP_CUSTOMPATH}/coupon`;
86 | const cupcondata = {
87 | code: coupon
88 | }
89 | axios.post(api, { data: cupcondata }).then(function (response) {
90 | context.dispatch('getCart')
91 | })
92 | }
93 | },
94 | mutations: {
95 | LOADING (state, status) {
96 | state.isLoading = status
97 | },
98 | CARTS (state, payload) {
99 | state.cart = payload
100 | },
101 | ALERT (state, payload) {
102 | state.alert = payload
103 | },
104 | STATUS (state, payload) {
105 | state.status = payload
106 | },
107 | PRODUCTS (state, payload) {
108 | state.products = payload
109 | },
110 | PAGINATION (state, payload) {
111 | state.pagination = payload
112 | }
113 | },
114 | getters: {
115 | status: state => { return state.status },
116 | isLoading: state => { return state.isLoading },
117 | cart: state => { return state.cart },
118 | alert: state => { return state.alert },
119 | products: state => { return state.products },
120 | pagination: state => { return state.pagination }
121 | }
122 | })
123 |
--------------------------------------------------------------------------------
/dist/js/chunk-35b60dcf.1efe0943.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-35b60dcf"],{"585e":function(t,s,e){},"5a77":function(t,s,e){"use strict";var a=e("585e"),i=e.n(a);i.a},6511:function(t,s,e){"use strict";e.r(s);var a=function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"topSlide"},[e("navbar"),e("slide"),e("h1",[t._v(""冒險者!歡迎來到神奇寶貝購物中心"")]),t._m(0),e("products"),e("car"),e("bottom")],1)},i=[function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"news"},[e("p",[t._v("2018.09.21"),e("span",{staticClass:"class emergency"},[t._v("緊急")]),t._v("因真新鎮受超夢大軍侵襲,暫時停止營業,不便之處,敬請見諒。")])])}],c=e("9d8d"),r=e("d1d6"),o=e("5ae2"),n=function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",[a("p",{staticClass:"categories_titel"},[t._v("商品分類")]),a("div",{staticClass:"categories"},[a("div",{staticClass:"items"},[a("router-link",{staticClass:"item",attrs:{to:"/categories"}},[a("img",{attrs:{src:e("9837"),alt:""}}),a("p",{staticClass:"item_name"},[t._v("精選商品")])]),a("router-link",{staticClass:"item",attrs:{to:"/categories"}},[a("img",{attrs:{src:e("bf32"),alt:""}}),a("p",{staticClass:"item_name"},[t._v("精靈球")])]),a("router-link",{staticClass:"item",attrs:{to:"/categories"}},[a("img",{attrs:{src:e("6caa"),alt:""}}),a("p",{staticClass:"item_name"},[t._v("藥品補給")])]),a("router-link",{staticClass:"item",attrs:{to:"/categories"}},[a("img",{attrs:{src:e("bfdd"),alt:""}}),a("p",{staticClass:"item_name"},[t._v("野外求生道具")])]),a("router-link",{staticClass:"item",attrs:{to:"/categories"}},[a("img",{attrs:{src:e("1211"),alt:""}}),a("p",{staticClass:"item_name"},[t._v("精選組合包")])])],1)]),a("p",{staticClass:"categories_titel"},[t._v("最新上架")]),a("div",{staticClass:"products_list"},[a("swiper",{attrs:{options:t.swiperOption}},[t._l(t.products,function(s){return a("swiper-slide",{key:s.id},[a("div",{staticClass:"categories"},[t._v(t._s(s.category))]),a("img",{attrs:{src:s.imageUrl,alt:""}}),a("div",{staticClass:"title"},[t._v(t._s(s.title))]),a("p",{staticClass:"intro"},[t._v(t._s(t._f("textlength")(s.description)))]),a("div",{staticClass:"price"},[a("div",{staticClass:"onsale_price"},[t._v("NT"+t._s(t._f("currency")(s.price))+"元")]),a("div",{staticClass:"ori_price"},[t._v("原價"+t._s(t._f("currency")(s.origin_price))+"元")])]),a("div",{staticClass:"more"},[s.is_enabled?a("div",{staticClass:"read_more"},[a("router-link",{attrs:{to:"/categories/"+s.id}},[t._v("詳細介紹")])],1):t._e(),s.is_enabled?a("div",{staticClass:"add_cart",on:{click:function(e){t.addtoCart(s.id,s.title)}}},[t._v("加入購物車")]):a("div",{staticClass:"add_cart"},[t._v("已售完")])])])}),a("div",{staticClass:"swiper-pagination",attrs:{slot:"pagination"},slot:"pagination"})],2)],1)])},l=[],d=e("c93e"),p=e("2f62"),u=(e("dfa4"),e("7212")),_={name:"products",components:{swiper:u["swiper"],swiperSlide:u["swiperSlide"]},data:function(){return{swiperOption:{slidesPerView:4,spaceBetween:10,speed:600,autoplay:{delay:5e3},pagination:{el:".swiper-pagination",clickable:!0},breakpoints:{480:{slidesPerView:1,spaceBetween:20},640:{slidesPerView:2,spaceBetween:30},800:{slidesPerView:3,spaceBetween:30}}},tempProduct:{},screenWidth:document.body.clientWidth}},methods:{getPorducts:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,s="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/products?page=").concat(t);this.$store.dispatch("getProducts",s)},addtoCart:function(t,s){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a={boolean:!0,title:"已將「".concat(s," x1 」 加入購物車")};this.$store.dispatch("addtoCart",{id:t,alertinfo:a,qty:e})}},created:function(){this.getPorducts()},computed:Object(d["a"])({},Object(p["c"])(["products","pagination"]))},v=_,m=(e("5a77"),e("2877")),g=Object(m["a"])(v,n,l,!1,null,"1850b579",null);g.options.__file="products.vue";var C=g.exports,f=e("21a8"),h={name:"Home",components:{bottom:f["a"],navbar:c["a"],slide:r["a"],car:o["a"],products:C},methods:{getCart:function(){this.$store.dispatch("getCart")},closealert:function(){this.$store.dispatch("closealert",!1)}},created:function(){this.getCart()}},w=h,b=(e("8600"),Object(m["a"])(w,a,i,!1,null,"f3a412f6",null));b.options.__file="home.vue";s["default"]=b.exports},"6e50":function(t,s,e){},8600:function(t,s,e){"use strict";var a=e("6e50"),i=e.n(a);i.a}}]);
2 | //# sourceMappingURL=chunk-35b60dcf.1efe0943.js.map
--------------------------------------------------------------------------------
/dist/js/chunk-3fe68e77.81690a58.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3fe68e77"],{"1aae":function(t,i,a){"use strict";var s=a("6fc7"),e=a.n(s);e.a},"5f29":function(t,i,a){"use strict";a.r(i);var s=function(){var t=this,i=t.$createElement,s=t._self._c||i;return s("div",{staticClass:"topSlide"},[s("navbar"),s("slide"),s("breadcrumb",{attrs:{categories:t.categories}}),s("div",{staticClass:"products_box"},[s("div",{staticClass:"categories"},[s("div",{staticClass:"items"},[s("div",{staticClass:"item",on:{click:function(i){t.categories="所有商品",t.getProducts()}}},[s("img",{attrs:{src:a("9837"),alt:""}}),s("p",{staticClass:"item_name"},[t._v("所有商品")])]),s("div",{staticClass:"item",on:{click:function(i){t.categories="精靈球",t.getProducts()}}},[s("img",{attrs:{src:a("bf32"),alt:""}}),s("p",{staticClass:"item_name"},[t._v("精靈球")])]),s("div",{staticClass:"item",on:{click:function(i){t.categories="藥品",t.getProducts()}}},[s("img",{attrs:{src:a("6caa"),alt:""}}),s("p",{staticClass:"item_name"},[t._v("藥品")])]),s("div",{staticClass:"item",on:{click:function(i){t.categories="道具",t.getProducts()}}},[s("img",{attrs:{src:a("bfdd"),alt:""}}),s("p",{staticClass:"item_name"},[t._v("道具")])]),s("div",{staticClass:"item",on:{click:function(i){t.categories="商城",t.getProducts()}}},[s("img",{attrs:{src:a("1211"),alt:""}}),s("p",{staticClass:"item_name"},[t._v("商城")])])])]),s("div",{staticClass:"products_list"},[s("div",{staticClass:"categories_titel"},[t._v(t._s(t.categories))]),s("div",{staticClass:"list"},t._l(t.filterData,function(i){return s("div",{key:i.id,staticClass:"item"},[s("div",{staticClass:"bgimg",style:{backgroundImage:"url("+i.imageUrl+")"}}),s("div",{staticClass:"card-body"},[s("span",{staticClass:"category"},[t._v(t._s(i.category))]),s("p",{staticClass:"title"},[t._v(t._s(i.title))]),s("p",{staticClass:"text"},[t._v(t._s(t._f("textlength")(i.description)))]),i.price==i.origin_price?s("div",{staticClass:"origin_price"},[t._v("原價 NT"+t._s(t._f("currency")(i.origin_price))+" 元")]):t._e(),i.price!==i.origin_price?s("div",{staticClass:"sale_price"},[t._v("\n 特價 NT"+t._s(t._f("currency")(i.price))+" 元\n ")]):t._e()]),s("div",{staticClass:"cardaction"},[i.is_enabled?s("button",{attrs:{type:"button"}},[s("router-link",{attrs:{to:"/categories/"+i.id}},[t._v("查看更多")])],1):t._e(),i.is_enabled?s("button",{attrs:{type:"button"},on:{click:function(a){t.addtoCart(i.id,i.title)}}},[t._v("加到購物車")]):s("button",[t._v("已售完")])])])})),s("Pagination")],1)]),s("car"),s("bottom")],1)},e=[],c=a("c93e"),r=a("2f62"),o=a("9d8d"),n=a("b3a4"),l=a("5ae2"),u=a("d1d6"),d=a("21a8"),_=a("1799"),g={name:"categories",data:function(){return{categories:"所有商品"}},components:{breadcrumb:n["a"],bottom:d["a"],navbar:o["a"],slide:u["a"],car:l["a"],Pagination:_["a"]},methods:{getProducts:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i="所有商品"==this.categories?"".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/products?page=").concat(t):"".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/products/all");this.$store.dispatch("getProducts",i)},getCart:function(){this.$store.dispatch("getCart")},addtoCart:function(t,i){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s={boolean:!0,title:"已將「".concat(i," x1 」 加入購物車")};this.$store.dispatch("addtoCart",{id:t,alertinfo:s,qty:a})},closealert:function(){var t={boolean:!1,title:""};this.$store.dispatch("closealert",t)}},computed:Object(c["a"])({filterData:function(){var t=this;return t.products.filter(function(i){return"所有商品"===t.categories?i:i.category===t.categories})}},Object(r["c"])(["products"])),created:function(){this.getProducts()}},p=g,v=(a("989c"),a("2877")),f=Object(v["a"])(p,s,e,!1,null,"2562fb42",null);f.options.__file="categories.vue";i["default"]=f.exports},"6fc7":function(t,i,a){},"989c":function(t,i,a){"use strict";var s=a("d586"),e=a.n(s);e.a},b3a4:function(t,i,a){"use strict";var s=function(){var t=this,i=t.$createElement,a=t._self._c||i;return a("ul",[a("li",[a("router-link",{attrs:{to:"/"}},[t._v("首頁 / ")])],1),t.categories?a("li",[t._v(t._s(t.categories)+" / ")]):t._e(),t.productTitle?a("li",[t._v(t._s(t.productTitle))]):t._e()])},e=[],c={props:["categories","productTitle"],name:"breadcrumb"},r=c,o=(a("1aae"),a("2877")),n=Object(o["a"])(r,s,e,!1,null,"d034d3c8",null);n.options.__file="breadcrumb.vue";i["a"]=n.exports},d586:function(t,i,a){}}]);
2 | //# sourceMappingURL=chunk-3fe68e77.81690a58.js.map
--------------------------------------------------------------------------------
/dist/css/chunk-35b60dcf.85ea5138.css:
--------------------------------------------------------------------------------
1 | .swiper-container[data-v-1850b579]{max-width:1080px;width:100%;height:340px;padding-bottom:20px}.swiper-slide[data-v-1850b579]{border:1px solid #ddd;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:5px 15px;-webkit-box-sizing:border-box;box-sizing:border-box}.swiper-slide .categories[data-v-1850b579]{background:#ff4c4c;font-size:14px;display:inline-block;color:#fff;position:absolute;top:0;margin:0;right:0;padding:3px 5px;border-radius:5px;border:2px solid #fff}.swiper-slide img[data-v-1850b579]{max-width:140px;max-height:140px;padding:10px}.swiper-slide .title[data-v-1850b579]{font-size:18px;-ms-flex-item-align:start;align-self:flex-start}.swiper-slide .intro[data-v-1850b579]{-ms-flex-item-align:start;align-self:flex-start;font-weight:400;color:#666;font-size:14px;padding-bottom:10px;border-bottom:1px solid #ccc}.swiper-slide .price[data-v-1850b579]{font-weight:400;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swiper-slide .price .onsale_price[data-v-1850b579]{font-size:16px;letter-spacing:1px;color:#48a38e;font-weight:600}.swiper-slide .price .ori_price[data-v-1850b579]{font-size:12px;color:#888}.swiper-pagination[data-v-1850b579]{bottom:0}.categories_titel[data-v-1850b579]{position:relative;font-size:20px;font-weight:600;color:#53acac;padding:10px}.categories[data-v-1850b579]{margin:10px 0}.categories .items[data-v-1850b579]{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.categories .items .item[data-v-1850b579],.categories .items[data-v-1850b579]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal}.categories .items .item[data-v-1850b579]{cursor:pointer;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:10px;border-radius:5px;border:.5px solid #ccc;margin:5px;-webkit-transition:all .3s;transition:all .3s}.categories .items .item[data-v-1850b579]:hover{border:.5px solid #0077c7}.categories .items .item img[data-v-1850b579]{max-width:50px;max-height:50px}.categories .items .item .item_name[data-v-1850b579]{color:#333;margin-left:10px}.more[data-v-1850b579]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.more .add_cart[data-v-1850b579],.more .read_more[data-v-1850b579]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:5px 0;border:1px solid #ccc;cursor:pointer}.more .read_more[data-v-1850b579]{margin-right:5px}.more .read_more[data-v-1850b579]:hover{background:#ffc238;border:1px solid #ffc238}.more .add_cart[data-v-1850b579]:hover{background:#ff4c4c;border:1px solid #ff4c4c;color:#fff}.products_list[data-v-1850b579]{padding:20px 0}@media screen and (max-width:640px){.swiper-container[data-v-1850b579]{width:95%}.swiper-slide .categories[data-v-1850b579]{font-size:16px;margin:6px}.categories[data-v-1850b579]{margin:0}.categories .items .item[data-v-1850b579]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-size:12px}}.topSlide[data-v-f3a412f6]{max-width:1080px;width:100%;margin:0 auto;background-position:50%;background-size:cover}.topSlide h1[data-v-f3a412f6]{color:#2b447d;margin:20px auto;width:18em;border-right:.05em solid;overflow:hidden;font-weight:900;white-space:nowrap;-webkit-animation:typing-data-v-f3a412f6 3s steps(18),insert-data-v-f3a412f6 1s steps(1) infinite;animation:typing-data-v-f3a412f6 3s steps(18),insert-data-v-f3a412f6 1s steps(1) infinite}.news[data-v-f3a412f6]{letter-spacing:1px;color:#666;padding:10px;margin-bottom:30px;-webkit-box-shadow:1px 3px 5px #eee;box-shadow:1px 3px 5px #eee}.news .class[data-v-f3a412f6]{border-radius:5px;padding:0 4px;font-style:14px;margin:0 10px;color:#fff}.news .emergency[data-v-f3a412f6]{background:red}@-webkit-keyframes insert-data-v-f3a412f6{50%{border-color:transparent}}@keyframes insert-data-v-f3a412f6{50%{border-color:transparent}}@-webkit-keyframes typing-data-v-f3a412f6{0%{width:0}}@keyframes typing-data-v-f3a412f6{0%{width:0}}@media screen and (max-width:640px){.topSlide h1[data-v-f3a412f6]{font-size:20px}.news[data-v-f3a412f6]{width:90%;margin:auto}}
--------------------------------------------------------------------------------
/dist/css/chunk-3fe68e77.32c2391b.css:
--------------------------------------------------------------------------------
1 | ul[data-v-d034d3c8]{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;margin:8px 0;padding:5px 0;color:#999}ul li[data-v-d034d3c8]{font-size:14px;letter-spacing:2px;color:#4287d7}@media screen and (max-width:640px){ul[data-v-d034d3c8]{margin:8px 15px}ul li[data-v-d034d3c8]{letter-spacing:0}}.topSlide[data-v-2562fb42]{max-width:1080px;width:100%;margin:0 auto;background-position:50%;background-size:cover}.topSlide h1[data-v-2562fb42]{color:#2b447d;margin:20px auto;width:18em;border-right:.05em solid;overflow:hidden;font-weight:900;white-space:nowrap;-webkit-animation:typing 3s steps(18),insert 1s steps(1) infinite;animation:typing 3s steps(18),insert 1s steps(1) infinite}.categories_titel[data-v-2562fb42]{position:relative;font-size:20px;font-weight:600;color:#53acac;margin-bottom:10px}.products_box[data-v-2562fb42]{display:-webkit-box;display:-ms-flexbox;display:flex}.categories[data-v-2562fb42]{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.categories .items[data-v-2562fb42]{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.categories .items .item[data-v-2562fb42],.categories .items[data-v-2562fb42]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal}.categories .items .item[data-v-2562fb42]{cursor:pointer;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;max-width:180px;padding:5px;border-radius:5px;border:.5px solid #ccc;margin-bottom:10px;-webkit-transition:all .3s;transition:all .3s}.categories .items .item[data-v-2562fb42]:hover{border:.5px solid #0077c7}.categories .items .item img[data-v-2562fb42]{max-width:50px;max-height:50px}.categories .items .item .item_name[data-v-2562fb42]{color:#333;margin-left:10px}.products_list[data-v-2562fb42]{-webkit-box-flex:6;-ms-flex:6;flex:6;padding:10px;border:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.list[data-v-2562fb42]{-ms-flex-wrap:wrap;flex-wrap:wrap}.item[data-v-2562fb42],.list[data-v-2562fb42]{display:-webkit-box;display:-ms-flexbox;display:flex}.item[data-v-2562fb42]{cursor:pointer;position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:275px;padding:5px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-bottom:8px;margin-right:8px;border:1px solid #eee}.item:hover .cardaction[data-v-2562fb42]{opacity:1}.item .bgimg[data-v-2562fb42]{margin:20px 0;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:120px;background-size:contain;background-repeat:no-repeat;background-position:50%}.item .category[data-v-2562fb42]{position:absolute;top:0;right:0;color:#fff;font-size:14px;padding:0 5px;background:#68cab3}.item .title[data-v-2562fb42]{font-weight:400;letter-spacing:3px;margin:5px 0;font-size:18px}.item .text[data-v-2562fb42]{font-size:14px;letter-spacing:1px;color:#666}.item .sale_price[data-v-2562fb42]{font-weight:600;font-size:16px;color:#fb5b5b}.item .origin_price[data-v-2562fb42]{font-size:14px}.cardaction[data-v-2562fb42]{display:inline-block;opacity:0;width:100%;height:100%;top:0;left:0;background:rgba(0,0,0,.3);position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:all .5s;transition:all .5s}.cardaction a[data-v-2562fb42],.cardaction button[data-v-2562fb42]{color:#fff;-webkit-transition:all .3s;transition:all .3s}.cardaction button[data-v-2562fb42]{cursor:pointer;border:1px solid #fff;background:none}.cardaction button[data-v-2562fb42]:hover{color:#000;background:#fff}.cardaction button:hover a[data-v-2562fb42]{color:#333}@media screen and (max-width:640px){.products_box[data-v-2562fb42]{width:95%;margin:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.categories .items[data-v-2562fb42]{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.categories .items .item[data-v-2562fb42],.categories .items[data-v-2562fb42]{-webkit-box-direction:normal;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.categories .items .item[data-v-2562fb42]{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:14px}.categories .items .item img[data-v-2562fb42]{width:30px}.list .item[data-v-2562fb42]{cursor:auto;width:100%}.cardaction[data-v-2562fb42]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1;width:100%;height:0;height:auto;background:none;margin-top:5px}.cardaction a[data-v-2562fb42]{color:#333}.cardaction button[data-v-2562fb42]{-webkit-box-flex:1;-ms-flex:1;flex:1;border:1px solid #888;color:#666;font-size:14px;padding:2px 5px;margin:0;margin-right:5px}.cardaction button[data-v-2562fb42]:hover{color:#fff;border:1px solid #68cab3;background:#68cab3}.cardaction button:hover a[data-v-2562fb42]{color:#fff}}
--------------------------------------------------------------------------------
/src/views/productInfo.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
![]()
9 |
10 |
11 |
商品介紹
12 |
{{product.description}}
13 |
14 |
18 |
19 |
20 |
{{product.title}}
21 |
原價 NT{{product.origin_price|currency}}
22 |
特價 NT{{product.price|currency}}
23 |
29 |
30 |
33 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
109 |
110 |
111 |
218 |
--------------------------------------------------------------------------------
/src/views/comfirm.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
確認訂單
7 |
付款完成,感謝購買!
8 |
9 |
10 |
11 |

12 |
13 |
14 |

15 |
16 |
17 |
72 |
73 |
74 |
75 |
76 |
77 |
129 |
130 |
131 |
230 |
--------------------------------------------------------------------------------
/dist/js/chunk-5f581666.1b7c0109.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5f581666"],{"158c":function(t,a,s){},1815:function(t,a,s){t.exports=s.p+"img/home.168d16a8.png"},"21a8":function(t,a,s){"use strict";var i=function(){var t=this,a=t.$createElement;t._self._c;return t._m(0)},e=[function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("footer",[i("div",{staticClass:"shop"},[i("img",{attrs:{src:s("6d88"),alt:""}})]),i("div",{staticClass:"container"},[i("img",{attrs:{src:s("94d3"),alt:""}}),i("div",{staticClass:"info"},[i("p",[t._v("實體店面:真新鎮大木路一段6號")]),i("p",[t._v("營業時間:00:00-24:00")])]),i("div",[i("p",[t._v("作者:icguanyu "),i("a",{attrs:{href:"https://github.com/icguanyu",target:"_blank"}},[t._v("Github")]),t._v("|"),i("a",{attrs:{href:"https://codepen.io/icguanyu/",target:"_blank"}},[t._v("Codepen")])]),i("p",[t._v("練習作品|"),i("a",{attrs:{href:"https://www.pokemon.com/us/",target:"_blank"}},[t._v("圖片來源:https://www.pokemon.com/us/")])])])])])}],o=(s("1157"),{name:"bottom"}),c=o,n=(s("f8e8"),s("2877")),r=Object(n["a"])(c,i,e,!1,null,"a6310b40",null);r.options.__file="bottom.vue";a["a"]=r.exports},"5ae2":function(t,a,s){"use strict";var i=function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",[s("div",{staticClass:"inner_car",class:{showCart:t.show}},[s("h1",[t._v("我的購物車")]),t._m(0),s("div",{staticClass:"list"},[0==!t.cart.carts.length?s("table",[t._m(1),s("tbody",t._l(t.cart.carts,function(a){return s("tr",{key:a.id},[s("td",[t._v(t._s(a.product.title))]),s("td",[t._v(t._s(a.qty)+"/"+t._s(a.product.unit))]),s("td",[t._v(t._s(t._f("currency")(a.final_total)))]),s("td",{on:{click:function(s){t.removeCartItem(a.id)}}},[s("i",{staticClass:"material-icons"},[t._v("delete_outline")])])])}))]):s("p",{staticClass:"empty"},[t._v("購物車還沒有任何東西哦")])]),s("div",{staticClass:"total"},[s("p",[t._v("小計:NT"+t._s(t._f("currency")(t.cart.total)))]),t.cart.final_total!==t.cart.total?s("p",{staticClass:"onsale"},[t._v("折扣價:NT$"+t._s(t.cart.final_total))]):t._e()]),s("div",{staticClass:"cupcon"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.coupon_code,expression:"coupon_code"}],attrs:{type:"text",placeholder:"請輸入優惠碼"},domProps:{value:t.coupon_code},on:{input:function(a){a.target.composing||(t.coupon_code=a.target.value)}}}),s("button",{on:{click:function(a){t.addCouponCode(t.coupon_code)}}},[t._v("套用優惠碼")])]),s("div",{staticClass:"action"},[s("button",{on:{click:function(a){t.show=!t.show}}},[t._v("再逛逛")]),s("router-link",{attrs:{to:"/checkout"}},[s("button",[t._v("結帳去")])])],1)]),s("div",{staticClass:"car",on:{click:function(a){t.show=!t.show}}},[s("p",[t._v(t._s(t.cart.carts.length))])])])},e=[function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("div",{staticClass:"anibox"},[i("div",{staticClass:"home"},[i("img",{attrs:{src:s("1815"),alt:""}})]),i("div",{staticClass:"truck"},[i("img",{attrs:{src:s("ec2d"),alt:""}})])])},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("thead",[s("tr",[s("td",[t._v("品名")]),s("td",[t._v("品項")]),s("td",[t._v("金額")]),s("td",[t._v("刪除")])])])}],o=s("c93e"),c=(s("cadf"),s("551c"),s("097d"),s("2f62")),n={name:"car",data:function(){return{show:!1,coupon_code:""}},methods:Object(o["a"])({},Object(c["b"])(["getCart","addCouponCode","removeCartItem"])),computed:Object(o["a"])({},Object(c["c"])(["isLoading","cart"])),created:function(){this.getCart()}},r=n,u=(s("df25"),s("2877")),l=Object(u["a"])(r,i,e,!1,null,"0e0ccad6",null);l.options.__file="car.vue";a["a"]=l.exports},"6d88":function(t,a,s){t.exports=s.p+"img/shop.10d9bde9.png"},"725c":function(t,a,s){},"94d3":function(t,a,s){t.exports=s.p+"img/pokemon_store.7524e985.png"},"990b":function(t,a,s){},"9d8d":function(t,a,s){"use strict";var i=function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("div",[i("div",{staticClass:"navbar"},[i("div",{staticClass:"logo"},[i("router-link",{attrs:{to:"/"}},[i("img",{attrs:{src:s("94d3"),alt:""}})])],1),i("div",{staticClass:"top_right"},[i("ul",[i("router-link",{attrs:{to:"/signin"}},[t.status?t._e():i("li",{staticClass:"sign"},[t._v("管理員登入")])]),t.status?i("li",{staticClass:"sign",on:{click:t.signout}},[t._v("登出")]):t._e(),i("router-link",{attrs:{to:"/checkout"}},[t.status?t._e():i("li",{staticClass:"cart"},[t._v("購物車("+t._s(t.cart.carts.length)+")")])]),i("router-link",{attrs:{to:"/admin"}},[t.status?i("li",{staticClass:"sign"},[t._v("進入後台")]):t._e()])],1),i("div",{staticClass:"hamburgur",on:{click:function(a){a.stopPropagation(),t.hamburger=!t.hamburger,t.mm=!t.mm}}},[i("div",{staticClass:"nav_icon",class:{nav_open:t.hamburger}})])])]),i("div",{staticClass:"main_menu"},[i("ul",[i("router-link",{attrs:{to:"/"}},[i("li",[t._v("回首頁")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("精靈球")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("藥品補給")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("生活道具")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("購物商城")])])],1)]),i("div",{staticClass:"mobile_menu",class:{active:t.mm},on:{click:function(a){a.stopPropagation(),t.hamburger=!t.hamburger,t.mm=!t.mm}}},[i("ul",{staticClass:"option"},[i("router-link",{attrs:{to:"/admin"}},[t.status?i("li",{staticClass:"sign"},[t._v("進入後台管理")]):t._e()]),i("router-link",{attrs:{to:"/signin"}},[t.status?t._e():i("li",{staticClass:"sign"},[t._v("登入/註冊")])]),t.status?i("li",{staticClass:"sign",on:{click:t.signout}},[t._v("登出!")]):t._e()],1),i("ul",{staticClass:"menu"},[i("router-link",{attrs:{to:"/"}},[i("li",[t._v("回首頁")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("精靈球")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("藥品補給")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("生活道具")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("購物商城")])])],1)])])},e=[],o=s("c93e"),c=s("2f62"),n={name:"navbar",data:function(){return{hamburger:!1,mm:!1}},methods:{signout:function(){var t=this,a="".concat("https://vue-course-api.hexschool.io","/logout");t.$store.dispatch("updateLoading",!0),this.$http.post(a).then(function(a){a.data.success&&(t.$router.push("/signin"),t.$store.dispatch("updateLoading",!1))})}},computed:Object(o["a"])({},Object(c["c"])(["cart","status"])),created:function(){this.$store.dispatch("check")}},r=n,u=(s("f627"),s("2877")),l=Object(u["a"])(r,i,e,!1,null,"aa58a8be",null);l.options.__file="navbar.vue";a["a"]=l.exports},df25:function(t,a,s){"use strict";var i=s("725c"),e=s.n(i);e.a},ec2d:function(t,a,s){t.exports=s.p+"img/truck.52c2bb1f.png"},f627:function(t,a,s){"use strict";var i=s("158c"),e=s.n(i);e.a},f8e8:function(t,a,s){"use strict";var i=s("990b"),e=s.n(i);e.a}}]);
2 | //# sourceMappingURL=chunk-5f581666.1b7c0109.js.map
--------------------------------------------------------------------------------
/src/components/navbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |

6 |
7 |
8 |
9 | - 管理員登入
10 | - 登出
11 | - 購物車({{cart.carts.length}})
12 | - 進入後台
13 |
14 |
17 |
18 |
19 |
20 |
21 | - 回首頁
22 | - 精靈球
23 | - 藥品補給
24 | - 生活道具
25 | - 購物商城
26 |
27 |
28 |
42 |
43 |
44 |
45 |
46 |
78 |
79 |
248 |
--------------------------------------------------------------------------------
/dist/css/chunk-27c45dba.37ebeb03.css:
--------------------------------------------------------------------------------
1 | .navbar[data-v-aa58a8be]{z-index:10;max-width:1080px;margin:0 auto;width:100%;padding:10px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar .logo[data-v-aa58a8be]{width:240px;padding:10px}.navbar .logo img[data-v-aa58a8be]{width:100%}.navbar .top_right[data-v-aa58a8be]{font-size:14px}.navbar .top_right ul[data-v-aa58a8be]{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none}.navbar .top_right li[data-v-aa58a8be]{cursor:pointer;padding:10px 10px;margin:0 5px;-webkit-transition:all .3s cubic-bezier(.5,0,.32,1.88);transition:all .3s cubic-bezier(.5,0,.32,1.88)}.navbar .top_right li[data-v-aa58a8be]:hover{-webkit-box-shadow:inset 0 -3px 0 #fb2424;box-shadow:inset 0 -3px 0 #fb2424}.hamburgur[data-v-aa58a8be]{cursor:pointer;padding:20px 10px;display:none}.hamburgur .nav_icon[data-v-aa58a8be]{background:#000;display:block;height:2px;position:relative;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;width:24px}.hamburgur .nav_icon[data-v-aa58a8be]:after,.hamburgur .nav_icon[data-v-aa58a8be]:before{background:#000;content:"";display:block;height:100%;position:absolute;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;width:100%}.hamburgur .nav_icon[data-v-aa58a8be]:before{top:-6px}.hamburgur .nav_icon[data-v-aa58a8be]:after{top:6px}.hamburgur .nav_open[data-v-aa58a8be]{background:transparent}.hamburgur .nav_open[data-v-aa58a8be]:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.hamburgur .nav_open[data-v-aa58a8be]:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.main_menu[data-v-aa58a8be]{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:1080px;font-size:16px;margin:auto}.main_menu ul[data-v-aa58a8be]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;list-style:none}.main_menu li[data-v-aa58a8be]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;cursor:pointer;padding:10px 20px;margin:0 5px;-webkit-transition:all .3s cubic-bezier(.5,0,.32,1.88);transition:all .3s cubic-bezier(.5,0,.32,1.88)}.main_menu li[data-v-aa58a8be]:hover{-webkit-box-shadow:inset 0 -3px 0 #fb2424;box-shadow:inset 0 -3px 0 #fb2424}.mobile_menu[data-v-aa58a8be]{display:none;height:100vh;width:100%;color:#fff;overflow-y:hidden;background:rgba(255,212,89,.95);opacity:0;position:absolute;-webkit-transform:translateX(-100%);transform:translateX(-100%);z-index:9;-webkit-transition:all .3s;transition:all .3s}.mobile_menu ul[data-v-aa58a8be]{list-style:none}.mobile_menu ul li[data-v-aa58a8be]{cursor:pointer;font-size:18px;padding:20px 20px;letter-spacing:3px;color:#333}.mobile_menu ul li[data-v-aa58a8be]:hover{background:#ffe9aa}.mobile_menu .option ul[data-v-aa58a8be]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding-right:20px}.active[data-v-aa58a8be]{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}@media screen and (max-width:640px){.navbar[data-v-aa58a8be]{padding:0}.navbar .logo[data-v-aa58a8be]{width:180px}.navbar .top_right[data-v-aa58a8be]{display:-webkit-box;display:-ms-flexbox;display:flex}.navbar .top_right ul .sign[data-v-aa58a8be]{display:none}.navbar .top_right ul .cart[data-v-aa58a8be]{padding:10px 0}.navbar .top_right .hamburgur[data-v-aa58a8be]{display:block}.main_menu ul[data-v-aa58a8be]{display:none}.mobile_menu[data-v-aa58a8be]{display:block}}footer[data-v-a6310b40]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}footer .shop img[data-v-a6310b40]{max-width:800px;width:100%}footer .container[data-v-a6310b40]{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;color:#666;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:1080px;width:100%;padding:20px 0;margin:0 auto;border-top:1px solid #aaa}footer .container img[data-v-a6310b40]{height:40px}footer .container a[data-v-a6310b40]{color:#666}@media screen and (max-width:640px){footer .container[data-v-a6310b40]{padding:10px 20px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-sizing:border-box;box-sizing:border-box}}p[data-v-40a21183]{margin:0}.checkout[data-v-40a21183]{max-width:1080px;padding:30px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:auto}.title[data-v-40a21183]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.title img[data-v-40a21183]{width:48px}.title p[data-v-40a21183]{font-size:24px;font-weight:900;padding:0 20px;color:#444;letter-spacing:4px;margin:0}button[data-v-40a21183]{cursor:pointer;width:100%;-webkit-transition:all .3s;transition:all .3s}button[data-v-40a21183]:hover{color:#000;border:1px solid #ffd459;background:#ffd459}.text-success[data-v-40a21183]{color:green}.anibox[data-v-40a21183]{padding:20px 0;max-width:1080px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;margin:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative}.anibox .home img[data-v-40a21183]{width:160px}.anibox .truck[data-v-40a21183]{position:absolute;bottom:-10px;-webkit-animation:drive-data-v-40a21183 10s linear infinite;animation:drive-data-v-40a21183 10s linear infinite}.anibox .truck img[data-v-40a21183]{width:80px;-webkit-animation:wave-data-v-40a21183 .5s linear infinite;animation:wave-data-v-40a21183 .5s linear infinite}@-webkit-keyframes drive-data-v-40a21183{0%{right:-20%}40%{right:45%}60%{right:45%}to{right:100%}}@keyframes drive-data-v-40a21183{0%{right:-20%}40%{right:45%}60%{right:45%}to{right:100%}}@-webkit-keyframes wave-data-v-40a21183{0%{-webkit-transform:translateY(3%);transform:translateY(3%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes wave-data-v-40a21183{0%{-webkit-transform:translateY(3%);transform:translateY(3%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@media screen and (max-width:640px){.action[data-v-40a21183]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.action button[data-v-40a21183],.action input[data-v-40a21183]{font-size:14px;margin-bottom:5px}}
--------------------------------------------------------------------------------
/dist/js/chunk-27c45dba.99553c78.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-27c45dba"],{"158c":function(t,s,a){},1815:function(t,s,a){t.exports=a.p+"img/home.168d16a8.png"},"21a8":function(t,s,a){"use strict";var i=function(){var t=this,s=t.$createElement;t._self._c;return t._m(0)},r=[function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("footer",[i("div",{staticClass:"shop"},[i("img",{attrs:{src:a("6d88"),alt:""}})]),i("div",{staticClass:"container"},[i("img",{attrs:{src:a("94d3"),alt:""}}),i("div",{staticClass:"info"},[i("p",[t._v("實體店面:真新鎮大木路一段6號")]),i("p",[t._v("營業時間:00:00-24:00")])]),i("div",[i("p",[t._v("作者:icguanyu "),i("a",{attrs:{href:"https://github.com/icguanyu",target:"_blank"}},[t._v("Github")]),t._v("|"),i("a",{attrs:{href:"https://codepen.io/icguanyu/",target:"_blank"}},[t._v("Codepen")])]),i("p",[t._v("練習作品|"),i("a",{attrs:{href:"https://www.pokemon.com/us/",target:"_blank"}},[t._v("圖片來源:https://www.pokemon.com/us/")])])])])])}],e=(a("1157"),{name:"bottom"}),o=e,n=(a("f8e8"),a("2877")),c=Object(n["a"])(o,i,r,!1,null,"a6310b40",null);c.options.__file="bottom.vue";s["a"]=c.exports},"457a":function(t,s,a){"use strict";var i=a("b49c"),r=a.n(i);r.a},"6d88":function(t,s,a){t.exports=a.p+"img/shop.10d9bde9.png"},"94d3":function(t,s,a){t.exports=a.p+"img/pokemon_store.7524e985.png"},"990b":function(t,s,a){},"9d8d":function(t,s,a){"use strict";var i=function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",[i("div",{staticClass:"navbar"},[i("div",{staticClass:"logo"},[i("router-link",{attrs:{to:"/"}},[i("img",{attrs:{src:a("94d3"),alt:""}})])],1),i("div",{staticClass:"top_right"},[i("ul",[i("router-link",{attrs:{to:"/signin"}},[t.status?t._e():i("li",{staticClass:"sign"},[t._v("管理員登入")])]),t.status?i("li",{staticClass:"sign",on:{click:t.signout}},[t._v("登出")]):t._e(),i("router-link",{attrs:{to:"/checkout"}},[t.status?t._e():i("li",{staticClass:"cart"},[t._v("購物車("+t._s(t.cart.carts.length)+")")])]),i("router-link",{attrs:{to:"/admin"}},[t.status?i("li",{staticClass:"sign"},[t._v("進入後台")]):t._e()])],1),i("div",{staticClass:"hamburgur",on:{click:function(s){s.stopPropagation(),t.hamburger=!t.hamburger,t.mm=!t.mm}}},[i("div",{staticClass:"nav_icon",class:{nav_open:t.hamburger}})])])]),i("div",{staticClass:"main_menu"},[i("ul",[i("router-link",{attrs:{to:"/"}},[i("li",[t._v("回首頁")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("精靈球")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("藥品補給")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("生活道具")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("購物商城")])])],1)]),i("div",{staticClass:"mobile_menu",class:{active:t.mm},on:{click:function(s){s.stopPropagation(),t.hamburger=!t.hamburger,t.mm=!t.mm}}},[i("ul",{staticClass:"option"},[i("router-link",{attrs:{to:"/admin"}},[t.status?i("li",{staticClass:"sign"},[t._v("進入後台管理")]):t._e()]),i("router-link",{attrs:{to:"/signin"}},[t.status?t._e():i("li",{staticClass:"sign"},[t._v("登入/註冊")])]),t.status?i("li",{staticClass:"sign",on:{click:t.signout}},[t._v("登出!")]):t._e()],1),i("ul",{staticClass:"menu"},[i("router-link",{attrs:{to:"/"}},[i("li",[t._v("回首頁")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("精靈球")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("藥品補給")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("生活道具")])]),i("router-link",{attrs:{to:"/categories"}},[i("li",[t._v("購物商城")])])],1)])])},r=[],e=a("c93e"),o=a("2f62"),n={name:"navbar",data:function(){return{hamburger:!1,mm:!1}},methods:{signout:function(){var t=this,s="".concat("https://vue-course-api.hexschool.io","/logout");t.$store.dispatch("updateLoading",!0),this.$http.post(s).then(function(s){s.data.success&&(t.$router.push("/signin"),t.$store.dispatch("updateLoading",!1))})}},computed:Object(e["a"])({},Object(o["c"])(["cart","status"])),created:function(){this.$store.dispatch("check")}},c=n,u=(a("f627"),a("2877")),l=Object(u["a"])(c,i,r,!1,null,"aa58a8be",null);l.options.__file="navbar.vue";s["a"]=l.exports},b49c:function(t,s,a){},d5a2:function(t,s,a){"use strict";a.r(s);var i=function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",[a("navbar"),a("div",{staticClass:"checkout"},[a("div",{staticClass:"title"},[t.order.is_paid?a("p",[t._v("付款完成,感謝購買!")]):a("p",[t._v("確認訂單")])]),t._m(0),a("form",{staticClass:"mt-3 col-md-12",on:{submit:function(s){return s.preventDefault(),t.payOrder(s)}}},[t.order.is_paid?t._e():a("table",[t._m(1),a("tbody",t._l(t.order.products,function(s){return a("tr",{key:s.id},[a("td",{staticClass:"align-middle"},[t._v(t._s(s.product.title))]),a("td",{staticClass:"align-middle"},[t._v(t._s(s.qty)+"/"+t._s(s.product.unit))]),a("td",{staticClass:"align-middle text-right"},[t._v(t._s(s.final_total))])])})),a("tfoot",[a("tr",[a("td",{staticClass:"text-right",attrs:{colspan:"2"}},[t._v("總計")]),a("td",{staticClass:"text-right"},[t._v(t._s(t.order.total))])])])]),a("div",{staticClass:"title"},[t.order.is_paid?t._e():a("p",[t._v("訂單地址")])]),a("table",[a("tbody",[a("tr",[a("td",{attrs:{widtd:"10%"}},[t._v("Email")]),a("td",[t._v(t._s(t.order.user.email))])]),a("tr",[a("td",[t._v("姓名")]),a("td",[t._v(t._s(t.order.user.name))])]),a("tr",[a("td",[t._v("收件人電話")]),a("td",[t._v(t._s(t.order.user.tel))])]),a("tr",[a("td",[t._v("收件人地址")]),a("td",[t._v(t._s(t.order.user.address))])]),a("tr",[a("td",[t._v("付款狀態")]),a("td",[t.order.is_paid?a("span",{staticClass:"text-success"},[t._v("付款完成")]):a("span",[t._v("尚未付款")])])])])]),!1===t.order.is_paid?a("div",{staticClass:"text-center"},[a("button",[t._v("確認付款去")])]):t._e()])]),a("bottom")],1)},r=[function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",{staticClass:"anibox"},[i("div",{staticClass:"home"},[i("img",{attrs:{src:a("1815"),alt:""}})]),i("div",{staticClass:"truck"},[i("img",{attrs:{src:a("ec2d"),alt:""}})])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("thead",[a("th",[t._v("品名")]),a("th",[t._v("數量")]),a("th",[t._v("單價")])])}],e=a("9d8d"),o=a("21a8"),n={name:"custom_order",data:function(){return{orderId:"",order:{user:{}}}},components:{bottom:o["a"],navbar:e["a"]},methods:{payOrder:function(){var t=this,s="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/pay/").concat(t.orderId);t.$store.dispatch("updateLoading",!0),this.$http.post(s).then(function(s){t.getOrder(),t.showalert(),t.$store.dispatch("updateLoading",!1)})},showalert:function(t){var s={boolean:!0,title:"完成付款!感謝您的體驗!"};this.$store.dispatch("showalert",s)},getOrder:function(){var t=this,s="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/order/").concat(t.orderId);t.$store.dispatch("updateLoading",!0),this.$http.get(s).then(function(s){t.order=s.data.order,t.$store.dispatch("updateLoading",!1)})}},created:function(){this.orderId=this.$route.params.orderId,this.getOrder()}},c=n,u=(a("457a"),a("2877")),l=Object(u["a"])(c,i,r,!1,null,"40a21183",null);l.options.__file="comfirm.vue";s["default"]=l.exports},ec2d:function(t,s,a){t.exports=a.p+"img/truck.52c2bb1f.png"},f627:function(t,s,a){"use strict";var i=a("158c"),r=a.n(i);r.a},f8e8:function(t,s,a){"use strict";var i=a("990b"),r=a.n(i);r.a}}]);
2 | //# sourceMappingURL=chunk-27c45dba.99553c78.js.map
--------------------------------------------------------------------------------
/dist/js/chunk-316959a4.38429096.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///./src/views/admin.vue?0f10","webpack:///./src/views/admin.vue?6595","webpack:///src/views/admin.vue","webpack:///./src/views/admin.vue?6dd6","webpack:///./src/views/admin.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_admin_vue_vue_type_style_index_0_id_5dbdd936_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_admin_vue_vue_type_style_index_0_id_5dbdd936_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","n","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","to","_v","on","click","signout","staticRenderFns","adminvue_type_script_lang_js_","name","methods","vm","api","concat","isLoading","$http","post","then","res","data","success","$router","push","views_adminvue_type_script_lang_js_","component","Object","componentNormalizer","options","__file","__webpack_exports__"],"mappings":"2IAAA,IAAAA,EAAAC,EAAA,QAAAC,EAAAD,EAAAE,EAAAH,GAAiiBE,EAAG,4CCApiB,IAAAE,EAAA,WAA0B,IAAAC,EAAAC,KAAaC,EAAAF,EAAAG,eAA0BC,EAAAJ,EAAAK,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,WAAqBF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,MAAAA,EAAA,eAA6BG,OAAOC,GAAA,YAAeJ,EAAA,MAAAJ,EAAAS,GAAA,YAAAL,EAAA,eAAgDG,OAAOC,GAAA,yBAA4BJ,EAAA,MAAAJ,EAAAS,GAAA,YAAAL,EAAA,eAAgDG,OAAOC,GAAA,0BAA6BJ,EAAA,MAAAJ,EAAAS,GAAA,eAAAL,EAAA,MAAAA,EAAA,eAA4DG,OAAOC,GAAA,OAAUJ,EAAA,MAAAJ,EAAAS,GAAA,YAAAL,EAAA,MAAuCM,IAAIC,MAAAX,EAAAY,WAAqBZ,EAAAS,GAAA,gBAAAL,EAAA,oBAC1iBS,KCqBAC,cACAC,KAAA,QACAC,SACAJ,QADA,WAEA,IAAAK,EAAAhB,KACAiB,EAAA,GAAAC,OAAA,iDACAF,EAAAG,WAAA,EACAnB,KAAAoB,MAAAC,KAAAJ,GAAAK,KAAA,SAAAC,GACAA,EAAAC,KAAAC,UACAT,EAAAU,QAAAC,KAAA,KACAX,EAAAG,WAAA,SChC+US,EAAA,0BCQ/UC,EAAgBC,OAAAC,EAAA,KAAAD,CACdF,EACA9B,EACAc,GACF,EACA,KACA,WACA,MAIAiB,EAAAG,QAAAC,OAAA,YACeC,EAAA,WAAAL","file":"js/chunk-316959a4.38429096.js","sourcesContent":["import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/lib/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin.vue?vue&type=style&index=0&id=5dbdd936&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/lib/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin.vue?vue&type=style&index=0&id=5dbdd936&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"board\"},[_c('div',{staticClass:\"navbar\"},[_c('div',{staticClass:\"container\"},[_c('ul',[_c('router-link',{attrs:{\"to\":\"/admin\"}},[_c('li',[_vm._v(\"產品管理\")])]),_c('router-link',{attrs:{\"to\":\"/admin/orderManager\"}},[_c('li',[_vm._v(\"訂單管理\")])]),_c('router-link',{attrs:{\"to\":\"/admin/cupconManager\"}},[_c('li',[_vm._v(\"優惠券\")])])],1),_c('ul',[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('li',[_vm._v(\"回到首頁\")])]),_c('li',{on:{\"click\":_vm.signout}},[_vm._v(\"登出\")])],1)])]),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n
\r\n
\r\n
\r\n - 產品管理
\r\n - 訂單管理
\r\n - 優惠券
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./admin.vue?vue&type=template&id=5dbdd936&scoped=true&\"\nimport script from \"./admin.vue?vue&type=script&lang=js&\"\nexport * from \"./admin.vue?vue&type=script&lang=js&\"\nimport style0 from \"./admin.vue?vue&type=style&index=0&id=5dbdd936&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5dbdd936\",\n null\n \n)\n\ncomponent.options.__file = \"admin.vue\"\nexport default component.exports"],"sourceRoot":""}
--------------------------------------------------------------------------------
/dist/css/chunk-6ea5a30a.fb23fb19.css:
--------------------------------------------------------------------------------
1 | .navbar[data-v-aa58a8be]{z-index:10;max-width:1080px;margin:0 auto;width:100%;padding:10px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar .logo[data-v-aa58a8be]{width:240px;padding:10px}.navbar .logo img[data-v-aa58a8be]{width:100%}.navbar .top_right[data-v-aa58a8be]{font-size:14px}.navbar .top_right ul[data-v-aa58a8be]{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none}.navbar .top_right li[data-v-aa58a8be]{cursor:pointer;padding:10px 10px;margin:0 5px;-webkit-transition:all .3s cubic-bezier(.5,0,.32,1.88);transition:all .3s cubic-bezier(.5,0,.32,1.88)}.navbar .top_right li[data-v-aa58a8be]:hover{-webkit-box-shadow:inset 0 -3px 0 #fb2424;box-shadow:inset 0 -3px 0 #fb2424}.hamburgur[data-v-aa58a8be]{cursor:pointer;padding:20px 10px;display:none}.hamburgur .nav_icon[data-v-aa58a8be]{background:#000;display:block;height:2px;position:relative;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;width:24px}.hamburgur .nav_icon[data-v-aa58a8be]:after,.hamburgur .nav_icon[data-v-aa58a8be]:before{background:#000;content:"";display:block;height:100%;position:absolute;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;width:100%}.hamburgur .nav_icon[data-v-aa58a8be]:before{top:-6px}.hamburgur .nav_icon[data-v-aa58a8be]:after{top:6px}.hamburgur .nav_open[data-v-aa58a8be]{background:transparent}.hamburgur .nav_open[data-v-aa58a8be]:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.hamburgur .nav_open[data-v-aa58a8be]:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.main_menu[data-v-aa58a8be]{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:1080px;font-size:16px;margin:auto}.main_menu ul[data-v-aa58a8be]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;list-style:none}.main_menu li[data-v-aa58a8be]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;cursor:pointer;padding:10px 20px;margin:0 5px;-webkit-transition:all .3s cubic-bezier(.5,0,.32,1.88);transition:all .3s cubic-bezier(.5,0,.32,1.88)}.main_menu li[data-v-aa58a8be]:hover{-webkit-box-shadow:inset 0 -3px 0 #fb2424;box-shadow:inset 0 -3px 0 #fb2424}.mobile_menu[data-v-aa58a8be]{display:none;height:100vh;width:100%;color:#fff;overflow-y:hidden;background:rgba(255,212,89,.95);opacity:0;position:absolute;-webkit-transform:translateX(-100%);transform:translateX(-100%);z-index:9;-webkit-transition:all .3s;transition:all .3s}.mobile_menu ul[data-v-aa58a8be]{list-style:none}.mobile_menu ul li[data-v-aa58a8be]{cursor:pointer;font-size:18px;padding:20px 20px;letter-spacing:3px;color:#333}.mobile_menu ul li[data-v-aa58a8be]:hover{background:#ffe9aa}.mobile_menu .option ul[data-v-aa58a8be]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding-right:20px}.active[data-v-aa58a8be]{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}@media screen and (max-width:640px){.navbar[data-v-aa58a8be]{padding:0}.navbar .logo[data-v-aa58a8be]{width:180px}.navbar .top_right[data-v-aa58a8be]{display:-webkit-box;display:-ms-flexbox;display:flex}.navbar .top_right ul .sign[data-v-aa58a8be]{display:none}.navbar .top_right ul .cart[data-v-aa58a8be]{padding:10px 0}.navbar .top_right .hamburgur[data-v-aa58a8be]{display:block}.main_menu ul[data-v-aa58a8be]{display:none}.mobile_menu[data-v-aa58a8be]{display:block}}footer[data-v-a6310b40]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}footer .shop img[data-v-a6310b40]{max-width:800px;width:100%}footer .container[data-v-a6310b40]{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;color:#666;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:1080px;width:100%;padding:20px 0;margin:0 auto;border-top:1px solid #aaa}footer .container img[data-v-a6310b40]{height:40px}footer .container a[data-v-a6310b40]{color:#666}@media screen and (max-width:640px){footer .container[data-v-a6310b40]{padding:10px 20px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-sizing:border-box;box-sizing:border-box}}p[data-v-7be4bc9a]{margin:0}.empty[data-v-7be4bc9a]{margin:20px 0;text-align:center;padding:30px 0;background:#eee;border-radius:10px;font-size:16px;letter-spacing:2px}.checkout[data-v-7be4bc9a]{max-width:1080px;padding:30px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:auto}.title[data-v-7be4bc9a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.title img[data-v-7be4bc9a]{width:60px}.title p[data-v-7be4bc9a]{font-size:30px;font-weight:900;padding:0 20px;color:#444;letter-spacing:4px;margin:0}.cartlist[data-v-7be4bc9a]{margin:15px 0;padding:20px 10px;border-radius:10px}.cartlist table[data-v-7be4bc9a]{font-size:14px;width:100%;border-collapse:collapse}.cartlist table .item_title[data-v-7be4bc9a]{width:40%}.cartlist table .item_count[data-v-7be4bc9a]{width:15%}.cartlist table .item_price[data-v-7be4bc9a]{width:40%}.cartlist table .item_delete[data-v-7be4bc9a]{width:5%}.cartlist table tr[data-v-7be4bc9a]{height:40px;padding:10px 0;border-top:1px solid #ccc}.cartlist table td[data-v-7be4bc9a]{text-align:left;padding:6px;font-weight:200;color:#333;font-weight:400}.cartlist table td span[data-v-7be4bc9a]{color:#228b22}.cartlist table td i[data-v-7be4bc9a]{cursor:pointer}.cartlist table .total[data-v-7be4bc9a]{font-size:14px;color:#666}.cartlist table .total .onsale[data-v-7be4bc9a]{font-size:16px;color:red}.cartlist button[data-v-7be4bc9a],.cartlist input[data-v-7be4bc9a]{cursor:pointer;font-size:16px;color:#666;outline:none;border:1px solid #ccc;padding:5px;margin:0 5px;letter-spacing:2px;background:#fff;font-family:Noto Sans TC,sans-serif;border-radius:3px}.cartlist .action[data-v-7be4bc9a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:10px}.cartlist .action button[data-v-7be4bc9a]{-webkit-transition:all .3s;transition:all .3s}.cartlist .action button[data-v-7be4bc9a]:hover{color:#000;border:1px solid #ffd459;background:#ffd459}button[data-v-7be4bc9a],input[data-v-7be4bc9a],textarea[data-v-7be4bc9a]{width:100%}.text-danger[data-v-7be4bc9a]{color:red;margin:0 5px}button[data-v-7be4bc9a]{cursor:pointer;-webkit-transition:all .3s;transition:all .3s}button[data-v-7be4bc9a]:hover{color:#000;border:1px solid #ffd459;background:#ffd459}input[data-v-7be4bc9a]:focus{padding:10px;border:1px solid #42cdcd}@media screen and (max-width:640px){.action[data-v-7be4bc9a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.action button[data-v-7be4bc9a],.action input[data-v-7be4bc9a]{font-size:14px;margin-bottom:5px}}
--------------------------------------------------------------------------------
/src/components/products.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
商品分類
4 |
5 |
6 |
7 |
8 | 精選商品
9 |
10 |
11 |
12 | 精靈球
13 |
14 |
15 |
16 | 藥品補給
17 |
18 |
19 |
20 | 野外求生道具
21 |
22 |
23 |
24 | 精選組合包
25 |
26 |
27 |
28 |
最新上架
29 |
30 |
31 |
32 |
33 | {{ product.category }}
34 |
35 | {{ product.title }}
36 | {{ product.description | textlength }}
37 |
38 |
NT{{product.price | currency}}元
39 |
原價{{ product.origin_price | currency}}元
40 |
41 |
42 |
43 | 詳細介紹
44 |
45 |
已售完
46 |
加入購物車
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
119 |
120 |
278 |
--------------------------------------------------------------------------------
/src/views/cupconManager.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
11 | | 名稱 |
12 | 折扣百分比 |
13 | 到期日 |
14 | 是否啟用 |
15 | 編輯 |
16 |
17 |
18 |
19 |
20 | | {{ item.title }} |
21 | {{ item.percent }}% |
22 | {{ item.due_date | dateFilter}} |
23 |
24 | 啟用
25 | 未啟用
26 | |
27 |
28 |
31 |
32 | |
33 |
34 |
35 |
36 |
87 |
89 |
90 |
91 |
99 |
100 | 是否刪除 {{tempCoupon.title}} 商品(刪除後將無法恢復)。
101 |
102 |
106 |
107 |
108 |
109 |
110 |
111 |
202 |
--------------------------------------------------------------------------------
/src/components/car.vue:
--------------------------------------------------------------------------------
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 | | {{ item.product.title }} |
26 | {{ item.qty }}/{{ item.product.unit }} |
27 | {{ item.final_total|currency }} |
28 | delete_outline |
29 |
30 |
31 |
32 |
購物車還沒有任何東西哦
33 |
34 |
35 |
36 |
小計:NT{{ cart.total|currency }}
37 |
折扣價:NT${{ cart.final_total }}
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
{{cart.carts.length}}
50 |
51 |
52 |
53 |
54 |
55 |
76 |
77 |
358 |
--------------------------------------------------------------------------------
/src/views/checkout.vue:
--------------------------------------------------------------------------------
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 | | {{ item.product.title }}
28 | |已折價
29 | |
30 | {{ item.qty }}/{{ item.product.unit }} |
31 |
32 | 原價:NT{{ item.total|currency }}
33 | 優惠價:NT{{ item.final_total|currency }}
34 | |
35 | delete_outline |
36 |
37 |
38 |
39 |
40 | | 總計 |
41 |
42 | 原價NT{{ cart.total|currency }}
43 |
44 | 折扣價:NT{{ cart.final_total|currency }}
45 |
46 | |
47 |
48 |
49 |
50 |
51 |
52 |

53 |
帳單資訊
54 |
55 |
58 |
59 |
60 |
61 |
64 |
66 |
67 |
68 |
71 |
73 |
74 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
154 |
155 |
156 |
304 |
--------------------------------------------------------------------------------
/dist/js/chunk-b4219176.3f38bbef.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///./src/components/Pagination.vue?a26b","webpack:///./src/components/Pagination.vue?34f7","webpack:///src/components/Pagination.vue","webpack:///./src/components/Pagination.vue?23e0","webpack:///./src/components/Pagination.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Pagination_vue_vue_type_style_index_0_id_a0f2a93c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Pagination_vue_vue_type_style_index_0_id_a0f2a93c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","n","render","_vm","this","_h","$createElement","_c","_self","attrs","aria-label","staticClass","class","disabled","pagination","has_pre","on","click","$event","preventDefault","updatePage","current_page","_m","_l","page","key","active","href","_v","_s","has_next","_e","staticRenderFns","aria-hidden","Paginationvue_type_script_lang_js_","name","methods","api","concat","$store","dispatch","computed","Object","objectSpread","vuex_esm","components_Paginationvue_type_script_lang_js_","component","componentNormalizer","options","__file","__webpack_exports__"],"mappings":"kHAAA,IAAAA,EAAAC,EAAA,QAAAC,EAAAD,EAAAE,EAAAH,GAAsiBE,EAAG,qCCAziB,IAAAE,EAAA,WAA0B,IAAAC,EAAAC,KAAaC,EAAAF,EAAAG,eAA0BC,EAAAJ,EAAAK,MAAAD,IAAAF,EAAwB,OAAAF,EAAA,WAAAI,EAAA,OAAkCE,OAAOC,aAAA,6BAAwCH,EAAA,MAAWI,YAAA,eAAyBJ,EAAA,MAAWI,YAAA,YAAAC,OAA+BC,UAAAV,EAAAW,WAAAC,SAAoCC,IAAKC,MAAA,SAAAC,GAAyBA,EAAAC,iBAAwBhB,EAAAiB,WAAAjB,EAAAW,WAAAO,aAAA,OAAkDlB,EAAAmB,GAAA,KAAAnB,EAAAoB,GAAApB,EAAAW,WAAA,qBAAAU,GAAiE,OAAAjB,EAAA,MAAgBkB,IAAAD,EAAAb,YAAA,YAAAC,OAAwCc,OAAAvB,EAAAW,WAAAO,eAAAG,GAA4CR,IAAKC,MAAA,SAAAC,GAAyBA,EAAAC,iBAAwBhB,EAAAiB,WAAAI,OAAuBjB,EAAA,KAAUI,YAAA,YAAAF,OAA+BkB,KAAA,OAAYxB,EAAAyB,GAAAzB,EAAA0B,GAAAL,UAA2BjB,EAAA,MAAWI,YAAA,YAAAC,OAA+BC,UAAAV,EAAAW,WAAAgB,UAAqCd,IAAKC,MAAA,SAAAC,GAAyBA,EAAAC,iBAAwBhB,EAAAiB,WAAAjB,EAAAW,WAAAO,aAAA,OAAkDlB,EAAAmB,GAAA,WAAAnB,EAAA4B,MAC73BC,GAAA,WAAoC,IAAA7B,EAAAC,KAAaC,EAAAF,EAAAG,eAA0BC,EAAAJ,EAAAK,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,KAAeI,YAAA,YAAAF,OAA+BkB,KAAA,IAAAjB,aAAA,cAAoCH,EAAA,QAAaE,OAAOwB,cAAA,UAAsB9B,EAAAyB,GAAA,OAAArB,EAAA,QAA2BI,YAAA,YAAsBR,EAAAyB,GAAA,iBAAyB,WAAc,IAAAzB,EAAAC,KAAaC,EAAAF,EAAAG,eAA0BC,EAAAJ,EAAAK,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,KAAeI,YAAA,YAAAF,OAA+BkB,KAAA,IAAAjB,aAAA,UAAgCH,EAAA,QAAaE,OAAOwB,cAAA,UAAsB9B,EAAAyB,GAAA,OAAArB,EAAA,QAA2BI,YAAA,YAAsBR,EAAAyB,GAAA,sCC8B/hBM,GACAC,KAAA,SACAC,SACAhB,WADA,SACAI,GACA,IAAAa,EAAA,GAAAC,OAAA,+CAAAA,OAAA,8BAAAA,OAAAd,GACApB,KAAAmC,OAAAC,SAAA,cAAAH,KAGAI,SAAAC,OAAAC,EAAA,KAAAD,IACAA,OAAAE,EAAA,KAAAF,EAAA,iBCxCoVG,EAAA,0BCQpVC,EAAgBJ,OAAAK,EAAA,KAAAL,CACdG,EACA3C,EACA8B,GACF,EACA,KACA,WACA,MAIAc,EAAAE,QAAAC,OAAA,iBACeC,EAAA,KAAAJ","file":"js/chunk-b4219176.3f38bbef.js","sourcesContent":["import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/lib/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=style&index=0&id=a0f2a93c&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/lib/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=style&index=0&id=a0f2a93c&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.pagination)?_c('nav',{attrs:{\"aria-label\":\"Page navigation example\"}},[_c('ul',{staticClass:\"pagination\"},[_c('li',{staticClass:\"page-item\",class:{'disabled': !_vm.pagination.has_pre},on:{\"click\":function($event){$event.preventDefault();_vm.updatePage(_vm.pagination.current_page - 1)}}},[_vm._m(0)]),_vm._l((_vm.pagination.total_pages),function(page){return _c('li',{key:page,staticClass:\"page-item\",class:{'active':_vm.pagination.current_page===page},on:{\"click\":function($event){$event.preventDefault();_vm.updatePage(page)}}},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(page))])])}),_c('li',{staticClass:\"page-item\",class:{'disabled': !_vm.pagination.has_next},on:{\"click\":function($event){$event.preventDefault();_vm.updatePage(_vm.pagination.current_page + 1)}}},[_vm._m(1)])],2)]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\",\"aria-label\":\"Previous\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"«\")]),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Previous\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\",\"aria-label\":\"Next\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"»\")]),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Next\")])])}]\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Pagination.vue?vue&type=template&id=a0f2a93c&scoped=true&\"\nimport script from \"./Pagination.vue?vue&type=script&lang=js&\"\nexport * from \"./Pagination.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Pagination.vue?vue&type=style&index=0&id=a0f2a93c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a0f2a93c\",\n null\n \n)\n\ncomponent.options.__file = \"Pagination.vue\"\nexport default component.exports"],"sourceRoot":""}
--------------------------------------------------------------------------------
/dist/js/chunk-71bb01f7.39e68d4d.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-71bb01f7"],{2621:function(t,e){e.f=Object.getOwnPropertySymbols},"28a5":function(t,e,o){o("214f")("split",2,function(t,e,a){"use strict";var n=o("aae3"),s=a,i=[].push,l="split",c="length",d="lastIndex";if("c"=="abbc"[l](/(b)*/)[1]||4!="test"[l](/(?:)/,-1)[c]||2!="ab"[l](/(?:ab)*/)[c]||4!="."[l](/(.?)(.?)/)[c]||"."[l](/()()/)[c]>1||""[l](/.?/)[c]){var u=void 0===/()??/.exec("")[1];a=function(t,e){var o=String(this);if(void 0===t&&0===e)return[];if(!n(t))return s.call(o,t,e);var a,l,r,p,m,v=[],b=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),C=0,f=void 0===e?4294967295:e>>>0,h=new RegExp(t.source,b+"g");u||(a=new RegExp("^"+h.source+"$(?!\\s)",b));while(l=h.exec(o)){if(r=l.index+l[0][c],r>C&&(v.push(o.slice(C,l.index)),!u&&l[c]>1&&l[0].replace(a,function(){for(m=1;m1&&l.index=f))break;h[d]===l.index&&h[d]++}return C===o[c]?!p&&h.test("")||v.push(""):v.push(o.slice(C)),v[c]>f?v.slice(0,f):v}}else"0"[l](void 0,0)[c]&&(a=function(t,e){return void 0===t&&0===e?[]:s.call(this,t,e)});return[function(o,n){var s=t(this),i=void 0==o?void 0:o[e];return void 0!==i?i.call(o,s,n):a.call(String(s),o,n)},a]})},"569c":function(t,e,o){"use strict";o.r(e);var a=function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("div",{staticClass:"cupconbox"},[o("div",{staticClass:"text-right"},[o("button",{staticClass:"btn btn-primary ",on:{click:function(e){t.openCouponModal(!0)}}},[t._v("\n 建立新的優惠券\n ")])]),o("table",{staticClass:"table mt-4"},[t._m(0),o("tbody",t._l(t.coupons,function(e,a){return o("tr",{key:a},[o("td",[t._v(t._s(e.title))]),o("td",[t._v(t._s(e.percent)+"%")]),o("td",[t._v(t._s(t._f("dateFilter")(e.due_date)))]),o("td",[1===e.is_enabled?o("span",{staticClass:"text-success"},[t._v("啟用")]):o("span",{staticClass:"text-muted"},[t._v("未啟用")])]),o("td",[o("button",{staticClass:"btn btn-outline-primary btn-sm",on:{click:function(o){t.openCouponModal(!1,e)}}},[t._v("編輯")]),o("button",{staticClass:"btn btn-outline-danger btn-sm",on:{click:function(o){t.DeleteCouponModel(e)}}},[t._v("刪除")])])])}))]),o("div",{staticClass:"modal fade",attrs:{id:"couponModal",tabindex:"-1",role:"dialog","aria-labelledby":"exampleModalLabel","aria-hidden":"true"}},[o("div",{staticClass:"modal-dialog",attrs:{role:"document"}},[o("div",{staticClass:"modal-content"},[t._m(1),o("div",{staticClass:"modal-body"},[o("div",{staticClass:"form-group"},[o("label",{attrs:{for:"title"}},[t._v("標題")]),o("input",{directives:[{name:"model",rawName:"v-model",value:t.tempCoupon.title,expression:"tempCoupon.title"}],staticClass:"form-control",attrs:{type:"text",id:"title",placeholder:"請輸入標題"},domProps:{value:t.tempCoupon.title},on:{input:function(e){e.target.composing||t.$set(t.tempCoupon,"title",e.target.value)}}})]),o("div",{staticClass:"form-group"},[o("label",{attrs:{for:"coupon_code"}},[t._v("優惠碼")]),o("input",{directives:[{name:"model",rawName:"v-model",value:t.tempCoupon.code,expression:"tempCoupon.code"}],staticClass:"form-control",attrs:{type:"text",id:"coupon_code",placeholder:"請輸入優惠碼"},domProps:{value:t.tempCoupon.code},on:{input:function(e){e.target.composing||t.$set(t.tempCoupon,"code",e.target.value)}}})]),o("div",{staticClass:"form-group"},[o("label",{attrs:{for:"due_date"}},[t._v("到期日")]),o("input",{directives:[{name:"model",rawName:"v-model",value:t.due_date,expression:"due_date"}],staticClass:"form-control",attrs:{type:"date",id:"due_date"},domProps:{value:t.due_date},on:{input:function(e){e.target.composing||(t.due_date=e.target.value)}}})]),o("div",{staticClass:"form-group"},[o("label",{attrs:{for:"price"}},[t._v("折扣百分比")]),o("input",{directives:[{name:"model",rawName:"v-model",value:t.tempCoupon.percent,expression:"tempCoupon.percent"}],staticClass:"form-control",attrs:{type:"number",id:"price",placeholder:"請輸入折扣百分比"},domProps:{value:t.tempCoupon.percent},on:{input:function(e){e.target.composing||t.$set(t.tempCoupon,"percent",e.target.value)}}})]),o("div",{staticClass:"form-group"},[o("div",{staticClass:"form-check"},[o("input",{directives:[{name:"model",rawName:"v-model",value:t.tempCoupon.is_enabled,expression:"tempCoupon.is_enabled"}],staticClass:"form-check-input",attrs:{type:"checkbox","true-value":1,"false-value":0,id:"is_enabled"},domProps:{checked:Array.isArray(t.tempCoupon.is_enabled)?t._i(t.tempCoupon.is_enabled,null)>-1:t._q(t.tempCoupon.is_enabled,1)},on:{change:function(e){var o=t.tempCoupon.is_enabled,a=e.target,n=a.checked?1:0;if(Array.isArray(o)){var s=null,i=t._i(o,s);a.checked?i<0&&t.$set(t.tempCoupon,"is_enabled",o.concat([s])):i>-1&&t.$set(t.tempCoupon,"is_enabled",o.slice(0,i).concat(o.slice(i+1)))}else t.$set(t.tempCoupon,"is_enabled",n)}}}),o("label",{staticClass:"form-check-label",attrs:{for:"is_enabled"}},[t._v("\n 是否啟用\n ")])])])]),o("div",{staticClass:"modal-footer"},[o("button",{staticClass:"btn btn-secondary",attrs:{type:"button","data-dismiss":"modal"}},[t._v("Close")]),o("button",{staticClass:"btn btn-primary",attrs:{type:"button"},on:{click:t.updateCoupon}},[t._v("更新優惠券")])])])])]),o("div",{staticClass:"modal fade",attrs:{id:"delCouponModal",tabindex:"-1",role:"dialog","aria-labelledby":"delCouponModal","aria-hidden":"true"}},[o("div",{staticClass:"modal-dialog",attrs:{role:"document"}},[o("div",{staticClass:"modal-content border-0"},[t._m(2),o("div",{staticClass:"modal-body"},[t._v("\n 是否刪除 "),o("strong",{staticClass:"text-danger"},[t._v(t._s(t.tempCoupon.title))]),t._v(" 商品(刪除後將無法恢復)。\n ")]),o("div",{staticClass:"modal-footer"},[o("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button","data-dismiss":"modal"}},[t._v("取消")]),o("button",{staticClass:"btn btn-danger",attrs:{type:"button"},on:{click:t.deleteCoupon}},[t._v("確認刪除")])])])])])])},n=[function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("thead",[o("tr",[o("th",[t._v("名稱")]),o("th",[t._v("折扣百分比")]),o("th",[t._v("到期日")]),o("th",[t._v("是否啟用")]),o("th",[t._v("編輯")])])])},function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("div",{staticClass:"modal-header"},[o("h5",{staticClass:"modal-title",attrs:{id:"exampleModalLabel"}},[t._v("Modal title")]),o("button",{staticClass:"close",attrs:{type:"button","data-dismiss":"modal","aria-label":"Close"}},[o("span",{attrs:{"aria-hidden":"true"}},[t._v("×")])])])},function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("div",{staticClass:"modal-header bg-danger text-white"},[o("h5",{staticClass:"modal-title",attrs:{id:"exampleModalLabel"}},[o("span",[t._v("刪除優惠券")])]),o("button",{staticClass:"close",attrs:{type:"button","data-dismiss":"modal","aria-label":"Close"}},[o("span",{attrs:{"aria-hidden":"true"}},[t._v("×")])])])}],s=(o("28a5"),o("f751"),o("1157")),i=o.n(s),l={props:{config:Object},data:function(){return{coupons:{},tempCoupon:{id:"",title:"",is_enabled:0,percent:100,due_date:0,code:""},due_date:new Date,isNew:!1}},watch:{due_date:function(){var t=this,e=Math.floor(new Date(t.due_date)/1e3);t.tempCoupon.due_date=e}},methods:{openCouponModal:function(t,e){var o=this;if(i()("#couponModal").modal("show"),o.isNew=t,o.isNew)o.tempCoupon={};else{o.tempCoupon=Object.assign({},e);var a=new Date(1e3*o.tempCoupon.due_date).toISOString().split("T");o.due_date=a[0]}},DeleteCouponModel:function(t){this.tempCoupon=Object.assign({},t),i()("#delCouponModal").modal("show")},deleteCoupon:function(){var t=this,e="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/admin/coupon/").concat(t.tempCoupon.id);this.$http.delete(e).then(function(e){e.data.success?(i()("#delCouponModal").modal("hide"),t.getCoupons()):console.log(e.data)})},getCoupons:function(){var t=this,e="".concat("https://vue-course-api.hexschool.io","/api/icguanyu/admin/coupons");this.$http.get(e,t.tempProduct).then(function(e){t.coupons=e.data.coupons})},updateCoupon:function(){var t=this,e=this;if(e.isNew){var o="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/admin/coupon");this.$http.post(o,{data:e.tempCoupon}).then(function(e){i()("#couponModal").modal("hide"),t.getCoupons()})}else{var a="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/admin/coupon/").concat(e.tempCoupon.id);e.due_date=new Date(1e3*e.tempCoupon.due_date),this.$http.put(a,{data:e.tempCoupon}).then(function(e){i()("#couponModal").modal("hide"),t.getCoupons()})}}},created:function(){this.getCoupons()}},c=l,d=(o("bcce"),o("2877")),u=Object(d["a"])(c,a,n,!1,null,"3af4921a",null);u.options.__file="cupconManager.vue";e["default"]=u.exports},7333:function(t,e,o){"use strict";var a=o("0d58"),n=o("2621"),s=o("52a7"),i=o("4bf8"),l=o("626a"),c=Object.assign;t.exports=!c||o("79e5")(function(){var t={},e={},o=Symbol(),a="abcdefghijklmnopqrst";return t[o]=7,a.split("").forEach(function(t){e[t]=t}),7!=c({},t)[o]||Object.keys(c({},e)).join("")!=a})?function(t,e){var o=i(t),c=arguments.length,d=1,u=n.f,r=s.f;while(c>d){var p,m=l(arguments[d++]),v=u?a(m).concat(u(m)):a(m),b=v.length,C=0;while(b>C)r.call(m,p=v[C++])&&(o[p]=m[p])}return o}:c},aae3:function(t,e,o){var a=o("d3f4"),n=o("2d95"),s=o("2b4c")("match");t.exports=function(t){var e;return a(t)&&(void 0!==(e=t[s])?!!e:"RegExp"==n(t))}},bcce:function(t,e,o){"use strict";var a=o("f722"),n=o.n(a);n.a},f722:function(t,e,o){},f751:function(t,e,o){var a=o("5ca1");a(a.S+a.F,"Object",{assign:o("7333")})}}]);
2 | //# sourceMappingURL=chunk-71bb01f7.39e68d4d.js.map
--------------------------------------------------------------------------------
/src/views/categories.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |

11 |
所有商品
12 |
13 |
14 |

15 |
精靈球
16 |
17 |
18 |

19 |
藥品
20 |
21 |
22 |

23 |
道具
24 |
25 |
26 |

27 |
商城
28 |
29 |
30 |
31 |
32 |
33 |
{{categories}}
34 |
35 |
36 |
37 |
38 |
{{item.category}}
39 |
{{item.title}}
40 |
{{item.description|textlength}}
41 |
原價 NT{{ item.origin_price |currency }} 元
42 |
43 | 特價 NT{{ item.price|currency }} 元
44 |
45 |
46 |
47 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
130 |
131 |
132 |
353 |
--------------------------------------------------------------------------------
/dist/js/chunk-6ea5a30a.db915e1e.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-6ea5a30a"],{"0715":function(t,e,a){"use strict";var s=a("64dc"),r=a.n(s);r.a},"158c":function(t,e,a){},"21a8":function(t,e,a){"use strict";var s=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},r=[function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("footer",[s("div",{staticClass:"shop"},[s("img",{attrs:{src:a("6d88"),alt:""}})]),s("div",{staticClass:"container"},[s("img",{attrs:{src:a("94d3"),alt:""}}),s("div",{staticClass:"info"},[s("p",[t._v("實體店面:真新鎮大木路一段6號")]),s("p",[t._v("營業時間:00:00-24:00")])]),s("div",[s("p",[t._v("作者:icguanyu "),s("a",{attrs:{href:"https://github.com/icguanyu",target:"_blank"}},[t._v("Github")]),t._v("|"),s("a",{attrs:{href:"https://codepen.io/icguanyu/",target:"_blank"}},[t._v("Codepen")])]),s("p",[t._v("練習作品|"),s("a",{attrs:{href:"https://www.pokemon.com/us/",target:"_blank"}},[t._v("圖片來源:https://www.pokemon.com/us/")])])])])])}],o=(a("1157"),{name:"bottom"}),i=o,n=(a("f8e8"),a("2877")),c=Object(n["a"])(i,s,r,!1,null,"a6310b40",null);c.options.__file="bottom.vue";e["a"]=c.exports},"64dc":function(t,e,a){},"6d88":function(t,e,a){t.exports=a.p+"img/shop.10d9bde9.png"},"94d3":function(t,e,a){t.exports=a.p+"img/pokemon_store.7524e985.png"},9837:function(t,e,a){t.exports=a.p+"img/1.bf6cea83.png"},"990b":function(t,e,a){},"9d8d":function(t,e,a){"use strict";var s=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("div",{staticClass:"navbar"},[s("div",{staticClass:"logo"},[s("router-link",{attrs:{to:"/"}},[s("img",{attrs:{src:a("94d3"),alt:""}})])],1),s("div",{staticClass:"top_right"},[s("ul",[s("router-link",{attrs:{to:"/signin"}},[t.status?t._e():s("li",{staticClass:"sign"},[t._v("管理員登入")])]),t.status?s("li",{staticClass:"sign",on:{click:t.signout}},[t._v("登出")]):t._e(),s("router-link",{attrs:{to:"/checkout"}},[t.status?t._e():s("li",{staticClass:"cart"},[t._v("購物車("+t._s(t.cart.carts.length)+")")])]),s("router-link",{attrs:{to:"/admin"}},[t.status?s("li",{staticClass:"sign"},[t._v("進入後台")]):t._e()])],1),s("div",{staticClass:"hamburgur",on:{click:function(e){e.stopPropagation(),t.hamburger=!t.hamburger,t.mm=!t.mm}}},[s("div",{staticClass:"nav_icon",class:{nav_open:t.hamburger}})])])]),s("div",{staticClass:"main_menu"},[s("ul",[s("router-link",{attrs:{to:"/"}},[s("li",[t._v("回首頁")])]),s("router-link",{attrs:{to:"/categories"}},[s("li",[t._v("精靈球")])]),s("router-link",{attrs:{to:"/categories"}},[s("li",[t._v("藥品補給")])]),s("router-link",{attrs:{to:"/categories"}},[s("li",[t._v("生活道具")])]),s("router-link",{attrs:{to:"/categories"}},[s("li",[t._v("購物商城")])])],1)]),s("div",{staticClass:"mobile_menu",class:{active:t.mm},on:{click:function(e){e.stopPropagation(),t.hamburger=!t.hamburger,t.mm=!t.mm}}},[s("ul",{staticClass:"option"},[s("router-link",{attrs:{to:"/admin"}},[t.status?s("li",{staticClass:"sign"},[t._v("進入後台管理")]):t._e()]),s("router-link",{attrs:{to:"/signin"}},[t.status?t._e():s("li",{staticClass:"sign"},[t._v("登入/註冊")])]),t.status?s("li",{staticClass:"sign",on:{click:t.signout}},[t._v("登出!")]):t._e()],1),s("ul",{staticClass:"menu"},[s("router-link",{attrs:{to:"/"}},[s("li",[t._v("回首頁")])]),s("router-link",{attrs:{to:"/categories"}},[s("li",[t._v("精靈球")])]),s("router-link",{attrs:{to:"/categories"}},[s("li",[t._v("藥品補給")])]),s("router-link",{attrs:{to:"/categories"}},[s("li",[t._v("生活道具")])]),s("router-link",{attrs:{to:"/categories"}},[s("li",[t._v("購物商城")])])],1)])])},r=[],o=a("c93e"),i=a("2f62"),n={name:"navbar",data:function(){return{hamburger:!1,mm:!1}},methods:{signout:function(){var t=this,e="".concat("https://vue-course-api.hexschool.io","/logout");t.$store.dispatch("updateLoading",!0),this.$http.post(e).then(function(e){e.data.success&&(t.$router.push("/signin"),t.$store.dispatch("updateLoading",!1))})}},computed:Object(o["a"])({},Object(i["c"])(["cart","status"])),created:function(){this.$store.dispatch("check")}},c=n,l=(a("f627"),a("2877")),u=Object(l["a"])(c,s,r,!1,null,"aa58a8be",null);u.options.__file="navbar.vue";e["a"]=u.exports},bf32:function(t,e,a){t.exports=a.p+"img/2.cea943ba.png"},e86f:function(t,e,a){"use strict";a.r(e);var s=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("navbar"),a("div",{staticClass:"checkout"},[t._m(0),t.cart.carts.length?a("div",{staticClass:"cartlist"},[a("div",{staticClass:"action"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.coupon_code,expression:"coupon_code"}],attrs:{type:"text",placeholder:"請輸入優惠碼 試試abc?"},domProps:{value:t.coupon_code},on:{input:function(e){e.target.composing||(t.coupon_code=e.target.value)}}}),a("button",{on:{click:function(e){t.addCouponCode(t.coupon_code)}}},[t._v("套用優惠碼")]),a("button",[t._v("想要優惠碼?")])]),a("table",[t._m(1),a("tbody",t._l(t.cart.carts,function(e){return a("tr",{key:e.id},[a("td",[t._v(t._s(e.product.title)+"\n "),e.coupon?a("span",[t._v("|已折價")]):t._e()]),a("td",[t._v(t._s(e.qty)+"/"+t._s(e.product.unit))]),a("td",[a("p",[t._v("原價:NT"+t._s(t._f("currency")(e.total)))]),e.final_total!==e.total?a("span",[t._v("優惠價:NT"+t._s(t._f("currency")(e.final_total)))]):t._e()]),a("td",[a("i",{staticClass:"material-icons",on:{click:function(a){t.removeCartItem(e.id)}}},[t._v("delete_outline")])])])})),a("tfoot",[a("tr",{staticClass:"total"},[a("td",{attrs:{colspan:"2"}},[t._v("總計")]),a("td",{attrs:{colspan:"2"}},[a("p",[t._v(" 原價NT"+t._s(t._f("currency")(t.cart.total)))]),t.cart.final_total!==t.cart.total?a("p",{staticClass:"onsale"},[t._v("\n 折扣價:NT"+t._s(t._f("currency")(t.cart.final_total))+"\n ")]):t._e()])])])])]):a("p",{staticClass:"empty"},[t._v("購物車沒有東西哦!")]),t._m(2),a("label",{attrs:{for:"useremail"}},[t._v("Email\n "),t.errors.has("name")?a("span",{staticClass:"text-danger"},[t._v("請輸入正確格式的信箱")]):t._e()]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.form.user.email,expression:"form.user.email"},{name:"validate",rawName:"v-validate",value:"required|email",expression:"'required|email'"}],attrs:{type:"email",name:"email",autocomplete:"on",placeholder:"請輸入 Email"},domProps:{value:t.form.user.email},on:{input:function(e){e.target.composing||t.$set(t.form.user,"email",e.target.value)}}}),a("label",{attrs:{for:"username"}},[t._v("收件人姓名\n "),t.errors.has("name")?a("span",{staticClass:"text-danger"},[t._v("請輸入姓名")]):t._e()]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.form.user.name,expression:"form.user.name"},{name:"validate",rawName:"v-validate",value:"required",expression:"'required'"}],staticClass:"form-control",attrs:{type:"text",autocomplete:"on",name:"name",placeholder:"輸入姓名"},domProps:{value:t.form.user.name},on:{input:function(e){e.target.composing||t.$set(t.form.user,"name",e.target.value)}}}),a("label",{attrs:{for:"usertel"}},[t._v("收件人電話\n "),t.errors.has("regex")?a("span",{staticClass:"text-danger"},[t._v("請輸入十碼正確手機號碼")]):t._e()]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.form.user.tel,expression:"form.user.tel"},{name:"validate",rawName:"v-validate",value:{required:!0,regex:/^[09]{2}[0-9]{8}$/},expression:"{required:true,regex: /^[09]{2}[0-9]{8}$/}"}],staticClass:"form-control",attrs:{type:"text",autocomplete:"on",name:"regex",placeholder:"請輸入電話"},domProps:{value:t.form.user.tel},on:{input:function(e){e.target.composing||t.$set(t.form.user,"tel",e.target.value)}}}),a("label",{attrs:{for:"useraddress"}},[t._v("收件人地址\n "),t.errors.has("address")?a("span",{staticClass:"text-danger"},[t._v("地址欄位不得留空")]):t._e()]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.form.user.address,expression:"form.user.address"},{name:"validate",rawName:"v-validate",value:"required",expression:"'required'"}],staticClass:"form-control",attrs:{type:"text",name:"address",autocomplete:"on",placeholder:"請輸入地址"},domProps:{value:t.form.user.address},on:{input:function(e){e.target.composing||t.$set(t.form.user,"address",e.target.value)}}}),a("label",{attrs:{for:"useraddress"}},[t._v("特殊需求")]),a("textarea",{directives:[{name:"model",rawName:"v-model",value:t.form.message,expression:"form.message"}],staticClass:"form-control",attrs:{name:"",id:"",cols:"10",rows:"3"},domProps:{value:t.form.message},on:{input:function(e){e.target.composing||t.$set(t.form,"message",e.target.value)}}}),a("button",{on:{click:t.createOrder}},[t._v("送出訂單")])]),a("bottom")],1)},r=[function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"title"},[s("img",{attrs:{src:a("bf32"),alt:""}}),s("p",[t._v("購物車")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("thead",[a("tr",[a("td",{staticClass:"item_title"},[t._v("品名")]),a("td",{staticClass:"item_count"},[t._v("數量")]),a("td",{staticClass:"item_price"},[t._v("單價")]),a("td",{staticClass:"item_delete"},[t._v("刪除")])])])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"title"},[s("img",{attrs:{src:a("9837"),alt:""}}),s("p",[t._v("帳單資訊")])])}],o=a("c93e"),i=(a("cadf"),a("551c"),a("097d"),a("2f62")),n=a("9d8d"),c=a("21a8"),l={name:"Home",data:function(){return{coupon_code:"",orderId:"",order:{user:{}},form:{user:{email:"",name:"",tel:"",address:""},message:""}}},components:{bottom:c["a"],navbar:n["a"]},methods:Object(o["a"])({createOrder:function(){var t=this,e="".concat("https://vue-course-api.hexschool.io","/api/").concat("icguanyu","/order");t.$validator.validate().then(function(a){a?(t.$store.dispatch("updateLoading",!0),t.$http.post(e,{data:t.form}).then(function(e){e.data.success&&(t.showalert(),setTimeout(function(){t.$router.push("/comfirm/".concat(e.data.orderId))},3e3)),t.$store.dispatch("updateLoading",!1)})):console.log("欄位不完整")})},showalert:function(t){var e={boolean:!0,title:"訂單已送出!"};this.$store.dispatch("showalert",e)}},Object(i["b"])(["getCart","removeCartItem","addCouponCode"])),computed:Object(o["a"])({},Object(i["c"])(["cart"])),created:function(){this.getCart()}},u=l,m=(a("0715"),a("2877")),d=Object(m["a"])(u,s,r,!1,null,"7be4bc9a",null);d.options.__file="checkout.vue";e["default"]=d.exports},f627:function(t,e,a){"use strict";var s=a("158c"),r=a.n(s);r.a},f8e8:function(t,e,a){"use strict";var s=a("990b"),r=a.n(s);r.a}}]);
2 | //# sourceMappingURL=chunk-6ea5a30a.db915e1e.js.map
--------------------------------------------------------------------------------
/dist/js/app.afa7a8b3.js:
--------------------------------------------------------------------------------
1 | (function(e){function t(t){for(var a,c,u=t[0],i=t[1],s=t[2],f=0,l=[];ft&&(e=e.substring(0,t-1)+"..."),e};n("4989");a["a"].use(f["a"]),a["a"].use(w.a,T.a),a["a"].use(C["a"]),C["a"].Validator.localize("zh_TW",x.a),a["a"].filter("currency",P),a["a"].filter("dateFilter",N),a["a"].filter("textlength",E),T.a.defaults.withCredentials=!0,a["a"].config.productionTip=!1,new a["a"]({router:A,store:_,render:function(e){return e(v)}}).$mount("#app"),A.beforeEach(function(e,t,n){if(e.meta.requiresAuth){var a="".concat("https://vue-course-api.hexschool.io","/api/user/check");T.a.post(a).then(function(e){console.log(e.data),e.data.success?n():(alert("請重新登入"),n({path:"/signin"}))})}else n()})},"5c0b":function(e,t,n){"use strict";var a=n("2856"),c=n.n(a);c.a},bc50:function(e,t,n){},c428:function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},c=[function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"loading"},[a("img",{attrs:{src:n("f8b2"),alt:""}})])}],o={name:"loading"},r=o,u=(n("13eb"),n("2877")),i=Object(u["a"])(r,a,c,!1,null,null,null);i.options.__file="loading.vue";t["a"]=i.exports},f5ba:function(e,t,n){"use strict";var a=n("bc50"),c=n.n(a);c.a},f8b2:function(e,t,n){e.exports=n.p+"img/loading.45600eb9.gif"}});
2 | //# sourceMappingURL=app.afa7a8b3.js.map
--------------------------------------------------------------------------------