7 changed files with 166 additions and 109 deletions
@ -1,112 +1,11 @@ |
|||||
<template> |
<template> |
||||
<div> |
|
||||
<div class="card"> |
|
||||
<div class="card-header">Služby</div> |
|
||||
<div class="card-body"> |
|
||||
<div class="list-group list-group-flush"> |
|
||||
<a v-on:click="aktivniSluzba = sluzba" v-for="sluzba, i in sluzby" :key="i" href="#" class="list-group-item list-group-item-action">{{ sluzba.nazev }}</a> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div v-if="aktivniSluzba" class="card"> |
|
||||
<div class="card-header d-flex justify-content-between"> |
|
||||
<div>Možnosti: {{ aktivniSluzba.nazev }}</div> |
|
||||
<div><button v-on:click="aktivniSluzba = null" class="btn btn-sm btn-secondary">×</button></div> |
|
||||
</div> |
|
||||
<div class="card-body"> |
|
||||
<div v-if="aktivniSluzba.akce == 1"> |
|
||||
<p> |
|
||||
Cena za metr čtvereční: {{ aktivniSluzba.cenaMetr }} Kč |
|
||||
</p> |
|
||||
<input v-model="posekaniZahrady" class="form-control" type="number" min="1" step="1"> |
|
||||
<p> |
|
||||
Výsledná cena: {{ posekaniZahrady * aktivniSluzba.cenaMetr }} Kč |
|
||||
</p> |
|
||||
<p> |
|
||||
<button v-on:click="kosikPosekaniZahrady()" class="btn btn-primary">Do košíku</button> |
|
||||
</p> |
|
||||
</div> |
|
||||
<div v-else-if="aktivniSluzba.akce == 2"> |
|
||||
<p> |
|
||||
Zvolte strom |
|
||||
</p> |
|
||||
<select v-model="strom" class="form-select"> |
|
||||
<option :value="strom" v-for="strom, i in aktivniSluzba.stromy" :key="i"> |
|
||||
{{ strom.nazev }}, {{ strom.cena }} Kč |
|
||||
</option> |
|
||||
</select> |
|
||||
<input v-model="stromPocet" type="number" class="form-control" step="1" min="1"> |
|
||||
<p v-if="strom"> |
|
||||
Výsledná cena: {{ strom.cena * stromPocet }} Kč |
|
||||
</p> |
|
||||
<p> |
|
||||
<button v-on:click="kosikVysaditStrom()" class="btn btn-primary">Do košíku</button> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div v-if="kosik"> |
|
||||
<div v-for="item, i in kosik" :key="i"> |
|
||||
{{ item.nazev }} <br> |
|
||||
{{ item.polozka }} <br> |
|
||||
{{ item.cena }} Kč <br> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
<div id="nav"> |
||||
|
<router-link to="/">Home</router-link> | |
||||
|
<router-link to="/kosik">Košík</router-link> |
||||
|
</div> |
||||
|
<router-view/> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: "App", |
|
||||
data: function () { |
|
||||
return { |
|
||||
sluzby: [ |
|
||||
{ |
|
||||
nazev: "posekání zahrady", |
|
||||
akce: 1, |
|
||||
cenaMetr: 1.5, |
|
||||
}, |
|
||||
{ |
|
||||
nazev: "vysázení stromu", |
|
||||
akce: 2, |
|
||||
stromy: [ |
|
||||
{ nazev: "bříza", cena: 49 }, |
|
||||
{ nazev: "dub", cena: 89 }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
nazev: "jezírko - čištění", |
|
||||
akce: 3, |
|
||||
cenaKubik: 22, |
|
||||
}, |
|
||||
], |
|
||||
aktivniSluzba: null, |
|
||||
posekaniZahrady: 1, |
|
||||
strom: null, |
|
||||
stromPocet: 1, |
|
||||
kosik: [], |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
kosikPosekaniZahrady: function() { |
|
||||
this.kosik.push({ |
|
||||
nazev: this.aktivniSluzba.nazev, |
|
||||
polozka: "počet metrů: " + this.posekaniZahrady, |
|
||||
cena: this.posekaniZahrady * this.aktivniSluzba.cenaMetr, |
|
||||
}) |
|
||||
}, |
|
||||
kosikVysaditStrom: function() { |
|
||||
this.kosik.push({ |
|
||||
nazev: this.aktivniSluzba.nazev, |
|
||||
polozka: "strom: " + this.strom.nazev + ", počet: " + this.stromPocet, |
|
||||
cena: this.strom.cena * this.stromPocet, |
|
||||
}) |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style> |
<style> |
||||
|
|
||||
</style> |
</style> |
||||
|
@ -1,4 +1,5 @@ |
|||||
import { createApp } from 'vue' |
import { createApp } from 'vue' |
||||
import App from './App.vue' |
import App from './App.vue' |
||||
|
import router from './router' |
||||
|
|
||||
createApp(App).mount('#app') |
|
||||
|
createApp(App).use(router).mount('#app') |
||||
|
@ -0,0 +1,25 @@ |
|||||
|
import { createRouter, createWebHistory } from 'vue-router' |
||||
|
import Home from '../views/Home.vue' |
||||
|
|
||||
|
const routes = [ |
||||
|
{ |
||||
|
path: '/', |
||||
|
name: 'Home', |
||||
|
component: Home |
||||
|
}, |
||||
|
{ |
||||
|
path: '/kosik', |
||||
|
name: 'Košík', |
||||
|
// route level code-splitting
|
||||
|
// this generates a separate chunk (about.[hash].js) for this route
|
||||
|
// which is lazy-loaded when the route is visited.
|
||||
|
component: () => import(/* webpackChunkName: "about" */ '../views/Kosik.vue') |
||||
|
} |
||||
|
] |
||||
|
|
||||
|
const router = createRouter({ |
||||
|
history: createWebHistory(process.env.BASE_URL), |
||||
|
routes |
||||
|
}) |
||||
|
|
||||
|
export default router |
@ -0,0 +1,112 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="card"> |
||||
|
<div class="card-header">Služby</div> |
||||
|
<div class="card-body"> |
||||
|
<div class="list-group list-group-flush"> |
||||
|
<a v-on:click="aktivniSluzba = sluzba" v-for="sluzba, i in sluzby" :key="i" href="#" class="list-group-item list-group-item-action">{{ sluzba.nazev }}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="aktivniSluzba" class="card"> |
||||
|
<div class="card-header d-flex justify-content-between"> |
||||
|
<div>Možnosti: {{ aktivniSluzba.nazev }}</div> |
||||
|
<div><button v-on:click="aktivniSluzba = null" class="btn btn-sm btn-secondary">×</button></div> |
||||
|
</div> |
||||
|
<div class="card-body"> |
||||
|
<div v-if="aktivniSluzba.akce == 1"> |
||||
|
<p> |
||||
|
Cena za metr čtvereční: {{ aktivniSluzba.cenaMetr }} Kč |
||||
|
</p> |
||||
|
<input v-model="posekaniZahrady" class="form-control" type="number" min="1" step="1"> |
||||
|
<p> |
||||
|
Výsledná cena: {{ posekaniZahrady * aktivniSluzba.cenaMetr }} Kč |
||||
|
</p> |
||||
|
<p> |
||||
|
<button v-on:click="kosikPosekaniZahrady()" class="btn btn-primary">Do košíku</button> |
||||
|
</p> |
||||
|
</div> |
||||
|
<div v-else-if="aktivniSluzba.akce == 2"> |
||||
|
<p> |
||||
|
Zvolte strom |
||||
|
</p> |
||||
|
<select v-model="strom" class="form-select"> |
||||
|
<option :value="strom" v-for="strom, i in aktivniSluzba.stromy" :key="i"> |
||||
|
{{ strom.nazev }}, {{ strom.cena }} Kč |
||||
|
</option> |
||||
|
</select> |
||||
|
<input v-model="stromPocet" type="number" class="form-control" step="1" min="1"> |
||||
|
<p v-if="strom"> |
||||
|
Výsledná cena: {{ strom.cena * stromPocet }} Kč |
||||
|
</p> |
||||
|
<p> |
||||
|
<button v-on:click="kosikVysaditStrom()" class="btn btn-primary">Do košíku</button> |
||||
|
</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div v-if="kosik"> |
||||
|
<div v-for="item, i in kosik" :key="i"> |
||||
|
{{ item.nazev }} <br> |
||||
|
{{ item.polozka }} <br> |
||||
|
{{ item.cena }} Kč <br> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "Home", |
||||
|
data: function () { |
||||
|
return { |
||||
|
sluzby: [ |
||||
|
{ |
||||
|
nazev: "posekání zahrady", |
||||
|
akce: 1, |
||||
|
cenaMetr: 1.5, |
||||
|
}, |
||||
|
{ |
||||
|
nazev: "vysázení stromu", |
||||
|
akce: 2, |
||||
|
stromy: [ |
||||
|
{ nazev: "bříza", cena: 49 }, |
||||
|
{ nazev: "dub", cena: 89 }, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
nazev: "jezírko - čištění", |
||||
|
akce: 3, |
||||
|
cenaKubik: 22, |
||||
|
}, |
||||
|
], |
||||
|
aktivniSluzba: null, |
||||
|
posekaniZahrady: 1, |
||||
|
strom: null, |
||||
|
stromPocet: 1, |
||||
|
kosik: [], |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
kosikPosekaniZahrady: function() { |
||||
|
this.kosik.push({ |
||||
|
nazev: this.aktivniSluzba.nazev, |
||||
|
polozka: "počet metrů: " + this.posekaniZahrady, |
||||
|
cena: this.posekaniZahrady * this.aktivniSluzba.cenaMetr, |
||||
|
}) |
||||
|
}, |
||||
|
kosikVysaditStrom: function() { |
||||
|
this.kosik.push({ |
||||
|
nazev: this.aktivniSluzba.nazev, |
||||
|
polozka: "strom: " + this.strom.nazev + ", počet: " + this.stromPocet, |
||||
|
cena: this.strom.cena * this.stromPocet, |
||||
|
}) |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
</style> |
@ -0,0 +1,5 @@ |
|||||
|
<template> |
||||
|
<div class="about"> |
||||
|
<h1>Toto je košík</h1> |
||||
|
</div> |
||||
|
</template> |
Loading…
Reference in new issue