├── .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 | 8 | 24 | -------------------------------------------------------------------------------- /src/components/loading.vue: -------------------------------------------------------------------------------- 1 | 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 | 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 | 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 | 29 | 30 | 45 | 48 | -------------------------------------------------------------------------------- /src/components/bottom.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 27 | 28 | 70 | -------------------------------------------------------------------------------- /src/views/admin.vue: -------------------------------------------------------------------------------- 1 | 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 | ![](https://i.imgur.com/zYDW0F1.png) 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 | ![](https://i.imgur.com/saYiiKX.png) 29 | 30 | ### 最新商品 31 | 最新上架的商品(由左至右),最多十筆 32 | ![](https://i.imgur.com/XRX4Kxm.png) 33 | 34 | ### 購物車 35 | 電腦版含購物車小動畫 36 | ![](https://i.imgur.com/fRPSwOK.png) 37 | 38 | ### 商品過濾 39 | ![](https://i.imgur.com/9vJ7EUl.png) 40 | 41 | ### 詳細內容 42 | 單一商品詳細介紹,自訂數量並顯示小計,同時加入購物車 43 | ![](https://i.imgur.com/Zk1fd73.png) 44 | 45 | ### 結帳資訊 46 | ![](https://i.imgur.com/iS2ShsA.png) 47 | 48 | ### 訂單資訊 49 | ![](https://i.imgur.com/kFEZYFH.png) 50 | 51 | ### 送出訂單 52 | ![](https://i.imgur.com/GDCLHty.png) 53 | 54 | ### 後台 55 | 後台並無特別客製或RWD,主要使用bootstrap 56 | ![](https://i.imgur.com/Zlb50NP.png) 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 | 14 | 15 | 46 | 47 | 48 | 105 | -------------------------------------------------------------------------------- /src/views/orderManager.vue: -------------------------------------------------------------------------------- 1 | 38 | 39 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /src/components/slide.vue: -------------------------------------------------------------------------------- 1 | 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 | 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 | 43 | 44 | 109 | 110 | 111 | 218 | -------------------------------------------------------------------------------- /src/views/comfirm.vue: -------------------------------------------------------------------------------- 1 | 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 | 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","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 | 54 | 55 | 119 | 120 | 278 | -------------------------------------------------------------------------------- /src/views/cupconManager.vue: -------------------------------------------------------------------------------- 1 | 111 | 202 | -------------------------------------------------------------------------------- /src/components/car.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 76 | 77 | 358 | -------------------------------------------------------------------------------- /src/views/checkout.vue: -------------------------------------------------------------------------------- 1 | 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","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 | 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 --------------------------------------------------------------------------------