Merge branch 'feature/user' into develop
This commit is contained in:
commit
aa0279c5b8
|
@ -0,0 +1,21 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDazCCAlOgAwIBAgIJAJGH2ozWvd1RMA0GCSqGSIb3DQEBCwUAMFMxCzAJBgNV
|
||||||
|
BAYTAkRFMQ8wDQYDVQQIDAZTYXhvbnkxEDAOBgNVBAcMB0RyZXNkZW4xITAfBgNV
|
||||||
|
BAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDAxMTcwOTA0MDFaFw0z
|
||||||
|
MDAxMDQwOTA0MDFaMEQxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZTYXhvbnkxEDAO
|
||||||
|
BgNVBAcMB0RyZXNkZW4xEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN
|
||||||
|
AQEBBQADggEPADCCAQoCggEBALlkr1UOQypLKicESRnse52d5mAX9MjZQpH0/Y5u
|
||||||
|
V5WxpPSasmOpt4MRj5MWTfTK2ukj/jLtPAMsggUh7wMXb1uytHj7T5mtiahXBM0H
|
||||||
|
1sUi2nScXR6doQZlmqKWDGrVS7WHULM01WhirsnxI8S8e6Evpk4F5/RafKA8FgYI
|
||||||
|
Ongg6S1B16+7T0e/FnILoMjKr1jpgzXnVkPFIneu/qVevSNco5/aw+bc6sjeS/ZA
|
||||||
|
65dXFGpDlw0lPRHLT5/CgNyMyiLYov7KwMycZw7uxa1ynO+73tqe5tvO/DiMpAPJ
|
||||||
|
EkrSz/StYBsGJxDhwq5RT31tHVtHhTf0rk1BmaoQJ0Aq7iECAwEAAaNRME8wHwYD
|
||||||
|
VR0jBBgwFoAUt8P5gBfN9hCUAiWhtPH5fTWnctAwCQYDVR0TBAIwADALBgNVHQ8E
|
||||||
|
BAMCBPAwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQCD
|
||||||
|
fBByVq8AbV1DMrY+MElb/nZA5/cuGnUpBpjSlk5OnYHWtywuQk6veiiJ0S2fNfqf
|
||||||
|
RzwOFuZDHKmIcH0574VssLfUynMKP3w3xb2ZNic3AxAdhzZ6LXLx6+qF5tYcL7oC
|
||||||
|
UWmj5Mo9SkX5HZLEGamQlVyGOGKNatxep4liyoSeKXr0AOHYfB4AkDhVZn7yQc/v
|
||||||
|
But42fLBg4mE+rk4UBYOHA4XdoFwqgTCNZq2RxKzvG9LIcok6lOc6gDnfTsH8GqE
|
||||||
|
byGpfIIQAXF8aftCm4dGXxtzMh8C5d0t2Ell9g+Rr8i/enebT2nJ9B9ptldDjhcZ
|
||||||
|
7I0ywGsXwrh0EwFsX74/
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,28 @@
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5ZK9VDkMqSyon
|
||||||
|
BEkZ7HudneZgF/TI2UKR9P2ObleVsaT0mrJjqbeDEY+TFk30ytrpI/4y7TwDLIIF
|
||||||
|
Ie8DF29bsrR4+0+ZrYmoVwTNB9bFItp0nF0enaEGZZqilgxq1Uu1h1CzNNVoYq7J
|
||||||
|
8SPEvHuhL6ZOBef0WnygPBYGCDp4IOktQdevu09HvxZyC6DIyq9Y6YM151ZDxSJ3
|
||||||
|
rv6lXr0jXKOf2sPm3OrI3kv2QOuXVxRqQ5cNJT0Ry0+fwoDcjMoi2KL+ysDMnGcO
|
||||||
|
7sWtcpzvu97anubbzvw4jKQDyRJK0s/0rWAbBicQ4cKuUU99bR1bR4U39K5NQZmq
|
||||||
|
ECdAKu4hAgMBAAECggEABoMQ3Y34sf2d52zxHGYAGZM4SlvND1kCS5otZdleXjW1
|
||||||
|
M5pTdci6V3JAdswrxNNzSQkonqVSnFHt5zw/5v3lvXTTfgRl0WIVGcKkuobx9k65
|
||||||
|
Gat8YdzrkQv0mI1otj/zvtaX8ROEA3yj4xgDR5/PP+QqlUcD1MNw6TfzFhcn5pxB
|
||||||
|
/RDPmvarMhzMdDW60Uub6Z7e/kVPuXWrW4bDyULd1d1NoSibnFZi+vGY0Lc1ctDW
|
||||||
|
2Vl7A8RFTcQi6Cjx/FwgPGJTBE4UMjIBO3wnoPQBMrsSxeGhcarerqIlEafgT4XN
|
||||||
|
p9BMtRyaXE7TTb1BXc35ZYNJLDLJKQxABhrEHtFreQKBgQDpiGwuKAFK8BLPlbAx
|
||||||
|
zkShhKd9fhlwm2bfRv3cojPQZsxn0BjefmtrISbKCD79Ivyn7TnOyYAoKAxdp2q9
|
||||||
|
wtz94aAXV2lfhUw2lhcb/aw4sXuY/s1XnVyoglOO8pYRCUN0o80pKuWFsaDyy/uL
|
||||||
|
LhINff1oMNCa7vmMdu8Ccz0o/wKBgQDLOqdTQhSFs4f1yhlDDH3pqT6eKvtFNeRJ
|
||||||
|
usxYDnAyRXHRqwhQ86z1nBZIgwXqq7PfO9V5Y/l6/2HmmA2ufjS8aBTNpCUMuvJk
|
||||||
|
y98Z4hTjKRdnVlMUjHq9ahCixJVQ8pcCnWRFdeAwSKhHQiJEFLYeYOIrUeCIYJI4
|
||||||
|
FiCshSPI3wKBgGU0ErWZ7p18FprRIs8itYlNhIwUxo+POPCPwloIDO5GblSa0Pwy
|
||||||
|
yvhdIIMzOaDXtahMXN3pYtmEKX+4msBrnvuC+K7E2cxkZtfNCWy+7RCQkaCG45QR
|
||||||
|
hOMdv3pWVIRDgHEevz0U8uySQs6VaYgySe6A5/1sEiriX1DpBcEJEbsfAoGAKUCb
|
||||||
|
rGvSbJ1XsM24OQL1IBQJsON6o77fuxOe3RT5M0sjYnL8OipsZmKrp0ZpUgxOc7ba
|
||||||
|
i0x+3LewMLWWuV/G5qOd7WwvVRkxkMJNZByfLskthf1g2d/2HjLEc7XBtW+4tYAr
|
||||||
|
VWoq+sIU3noPKJCnsxzpa++vyx8HLzlWoo5YCDMCgYBJvGH2zMgInlQNO/2XY5nl
|
||||||
|
E53EZMex+RDq8Wzr4tRM3IrCGc2t8WKEQ/9teKNH0tg9xib0vhqqmiGl1xNfqJVo
|
||||||
|
ePJyfgFabeUx9goG3mgTdV9woSRlBJso62dM0DAC/jsJoHnVzgokysR4/BfW9Da+
|
||||||
|
AYTxRZSNbfmsTHawXqG8Fw==
|
||||||
|
-----END PRIVATE KEY-----
|
|
@ -45,7 +45,9 @@
|
||||||
"@vue/prettier",
|
"@vue/prettier",
|
||||||
"eslint:recommended"
|
"eslint:recommended"
|
||||||
],
|
],
|
||||||
"rules": {},
|
"rules": {
|
||||||
|
"no-console": "off"
|
||||||
|
},
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"parser": "babel-eslint"
|
"parser": "babel-eslint"
|
||||||
}
|
}
|
||||||
|
|
10
src/App.vue
10
src/App.vue
|
@ -1,18 +1,20 @@
|
||||||
<template>
|
<template>
|
||||||
<v-app>
|
<v-app>
|
||||||
|
<TitleBar />
|
||||||
<router-view />
|
<router-view />
|
||||||
<v-footer app>
|
<v-footer app>
|
||||||
<span class="px-4">© {{ new Date().getFullYear()}} Studentenclub Wu 5 e.v.</span>
|
<span class="px-4"
|
||||||
|
>© {{ new Date().getFullYear() }} Studentenclub Wu 5 e.v.</span
|
||||||
|
>
|
||||||
</v-footer>
|
</v-footer>
|
||||||
</v-app>
|
</v-app>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import TitleBar from './components/TitleBar'
|
||||||
export default {
|
export default {
|
||||||
name: 'App',
|
name: 'App',
|
||||||
|
components: { TitleBar },
|
||||||
components: {},
|
|
||||||
|
|
||||||
data: () => ({
|
data: () => ({
|
||||||
//
|
//
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<v-app-bar app clipped-left hide-on-scroll color="blue accent-4" class="elevation-4" dark>
|
<v-app-bar app clipped-left clipped-right hide-on-scroll color="blue accent-4" class="elevation-4" dark>
|
||||||
<v-btn icon>
|
<v-btn icon>
|
||||||
<v-img src="@/assets/logo-big.png" contain height="40"></v-img>
|
<v-img src="@/assets/logo-big.png" contain height="40"></v-img>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
|
@ -8,42 +8,27 @@
|
||||||
<v-btn icon v-if="isFinanzer" href="finanzer">
|
<v-btn icon v-if="isFinanzer" href="finanzer">
|
||||||
<v-icon>attach_money</v-icon>
|
<v-icon>attach_money</v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
<v-btn icon v-if="isBar" href="bar">
|
<v-btn icon v-if="isBar">
|
||||||
<v-icon>local_bar</v-icon>
|
<v-icon>local_bar</v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
<v-btn v-if="isLoggedIn" @click="logout">Logout</v-btn>
|
<v-btn icon v-if="isUser">
|
||||||
|
<v-icon>person</v-icon>
|
||||||
|
</v-btn>
|
||||||
</v-app-bar>
|
</v-app-bar>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapActions } from 'vuex'
|
import { mapActions, mapGetters } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TitleBar',
|
name: 'TitleBar',
|
||||||
computed: {
|
computed: {
|
||||||
isBar() {
|
...mapGetters(['isBar', 'isFinanzer', 'isUser', 'isLoggedIn'])
|
||||||
try {
|
|
||||||
return this.$store.getters.getGroup.includes('bar') ? true : false
|
|
||||||
} catch (e) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isFinanzer() {
|
|
||||||
try {
|
|
||||||
return this.$store.getters.getGroup.includes('moneymaster')
|
|
||||||
? true
|
|
||||||
: false
|
|
||||||
} catch (e) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isLoggedIn() {
|
|
||||||
return this.$store.getters.getToken
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions(['logout'])
|
...mapActions(['logout'])
|
||||||
}
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<template>
|
||||||
|
<v-list>
|
||||||
|
<v-list-item link to="/main/bar/geruecht">
|
||||||
|
<v-list-item-icon>
|
||||||
|
<v-icon>local_drink</v-icon>
|
||||||
|
</v-list-item-icon>
|
||||||
|
<v-list-item-title>
|
||||||
|
Geruecht
|
||||||
|
</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
</v-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'BarNavigation'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,49 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<v-list>
|
||||||
|
<v-list-item
|
||||||
|
class="title"
|
||||||
|
link
|
||||||
|
to="/main/finanzer/overview"
|
||||||
|
>
|
||||||
|
<v-list-item-icon>
|
||||||
|
<v-icon>home</v-icon>
|
||||||
|
</v-list-item-icon>
|
||||||
|
<v-list-item-title>Gesamtübersicht</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
</v-list>
|
||||||
|
<v-divider />
|
||||||
|
<v-list>
|
||||||
|
<div v-for="user in users" v-bind:key="users.indexOf(user)">
|
||||||
|
<v-list-item
|
||||||
|
:to="{ name: 'activeUser', params: { id: user.username } }"
|
||||||
|
link
|
||||||
|
>
|
||||||
|
<v-list-item-title
|
||||||
|
>{{ user.lastname }}, {{ user.firstname }}
|
||||||
|
</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
</div>
|
||||||
|
</v-list>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapGetters, mapActions } from 'vuex'
|
||||||
|
export default {
|
||||||
|
name: 'FinanzerNavigation',
|
||||||
|
methods: {
|
||||||
|
...mapActions({
|
||||||
|
addUser: 'finanzerUsers/addUser',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters({
|
||||||
|
users: 'finanzerUsers/users',
|
||||||
|
allUsers: 'finanzerUsers/allUsers'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<v-content>
|
||||||
<v-toolbar tile>
|
<v-toolbar tile>
|
||||||
<v-toolbar-title>Gesamtübersicht</v-toolbar-title>
|
<v-toolbar-title>Gesamtübersicht</v-toolbar-title>
|
||||||
<v-spacer />
|
<v-spacer />
|
||||||
|
@ -17,12 +17,23 @@
|
||||||
<v-spacer />
|
<v-spacer />
|
||||||
<v-toolbar-items>
|
<v-toolbar-items>
|
||||||
<v-btn text @click="sendMails">Emails senden</v-btn>
|
<v-btn text @click="sendMails">Emails senden</v-btn>
|
||||||
<v-text-field
|
<v-autocomplete
|
||||||
v-model="filter"
|
|
||||||
style="margin-top: 3px"
|
|
||||||
append-icon="search"
|
|
||||||
outlined
|
outlined
|
||||||
></v-text-field>
|
return-object
|
||||||
|
v-model="user"
|
||||||
|
style="margin-top: 3px"
|
||||||
|
placeholder="Suche Person"
|
||||||
|
:items="allUsers"
|
||||||
|
item-text="fullName"
|
||||||
|
prepend-inner-icon="search"
|
||||||
|
full-width
|
||||||
|
:search-input.sync="filter"
|
||||||
|
/>
|
||||||
|
<v-btn
|
||||||
|
text
|
||||||
|
@click="addToUser(user)"
|
||||||
|
>Hinzufügen</v-btn
|
||||||
|
>
|
||||||
</v-toolbar-items>
|
</v-toolbar-items>
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
<v-expand-transition>
|
<v-expand-transition>
|
||||||
|
@ -189,7 +200,7 @@
|
||||||
</v-container>
|
</v-container>
|
||||||
</v-card>
|
</v-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</v-content>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -204,6 +215,7 @@ export default {
|
||||||
errorExpand: false,
|
errorExpand: false,
|
||||||
|
|
||||||
filter: '',
|
filter: '',
|
||||||
|
user: null,
|
||||||
|
|
||||||
amount: null,
|
amount: null,
|
||||||
isNumber: value => !isNaN(value) || 'Betrag muss eine Zahl sein.',
|
isNumber: value => !isNaN(value) || 'Betrag muss eine Zahl sein.',
|
||||||
|
@ -238,7 +250,8 @@ export default {
|
||||||
addAmount: 'finanzerUsers/addAmount',
|
addAmount: 'finanzerUsers/addAmount',
|
||||||
addCredit: 'finanzerUsers/addCredit',
|
addCredit: 'finanzerUsers/addCredit',
|
||||||
countYear: 'finanzerUsers/countYear',
|
countYear: 'finanzerUsers/countYear',
|
||||||
sendMails: 'finanzerUsers/sendMails'
|
sendMails: 'finanzerUsers/sendMails',
|
||||||
|
addUser: 'finanzerUsers/addUser'
|
||||||
}),
|
}),
|
||||||
async getData(promise) {
|
async getData(promise) {
|
||||||
return await promise
|
return await promise
|
||||||
|
@ -307,10 +320,18 @@ export default {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
isFiltered(user) {
|
isFiltered(user) {
|
||||||
return (
|
try {
|
||||||
user.firstname.toLowerCase().includes(this.filter.toLowerCase()) ||
|
return (
|
||||||
user.lastname.toLowerCase().includes(this.filter.toLowerCase())
|
user.firstname.toLowerCase().includes(this.filter.toLowerCase()) ||
|
||||||
)
|
user.lastname.toLowerCase().includes(this.filter.toLowerCase())
|
||||||
|
)
|
||||||
|
} catch (e) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addToUser(user) {
|
||||||
|
this.addUser(user)
|
||||||
|
this.$router.push({name: 'activeUser', params: {id: user.username}})
|
||||||
},
|
},
|
||||||
createDefault() {
|
createDefault() {
|
||||||
this.amount = null
|
this.amount = null
|
||||||
|
@ -344,6 +365,7 @@ export default {
|
||||||
},
|
},
|
||||||
...mapGetters({
|
...mapGetters({
|
||||||
users: 'finanzerUsers/users',
|
users: 'finanzerUsers/users',
|
||||||
|
allUsers: 'finanzerUsers/allUsers',
|
||||||
errorMails: 'finanzerUsers/errorMails',
|
errorMails: 'finanzerUsers/errorMails',
|
||||||
year: 'finanzerUsers/year',
|
year: 'finanzerUsers/year',
|
||||||
years: 'finanzerUsers/years',
|
years: 'finanzerUsers/years',
|
||||||
|
|
|
@ -1,15 +1,21 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<v-content v-if="activeUser">
|
||||||
<v-toolbar tile>
|
<v-toolbar tile>
|
||||||
<v-toolbar-title>{{activeUser.lastname}}, {{activeUser.firstname}}</v-toolbar-title>
|
<v-toolbar-title
|
||||||
|
>{{ activeUser.lastname }}, {{ activeUser.firstname }}</v-toolbar-title
|
||||||
|
>
|
||||||
<v-spacer />
|
<v-spacer />
|
||||||
<v-toolbar-items>
|
<v-toolbar-items>
|
||||||
<v-btn @click="sendMail({username: activeUser.username})" text>Email senden</v-btn>
|
<v-btn @click="sendMail({ username: activeUser.username })" text
|
||||||
|
>Email senden</v-btn
|
||||||
|
>
|
||||||
</v-toolbar-items>
|
</v-toolbar-items>
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
<v-expand-transition>
|
<v-expand-transition>
|
||||||
<v-card style="margin-top: 3px" v-show="errorMail">
|
<v-card style="margin-top: 3px" v-show="errorMail">
|
||||||
<v-alert dense :type="computeError(errorMail)">{{errorMessage(errorMail)}}</v-alert>
|
<v-alert dense :type="computeError(errorMail)">{{
|
||||||
|
errorMessage(errorMail)
|
||||||
|
}}</v-alert>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-expand-transition>
|
</v-expand-transition>
|
||||||
<v-card style="margin-top: 3px;">
|
<v-card style="margin-top: 3px;">
|
||||||
|
@ -24,12 +30,16 @@
|
||||||
<v-chip
|
<v-chip
|
||||||
outlined
|
outlined
|
||||||
:text-color="getLockedColor(activeUser.locked)"
|
:text-color="getLockedColor(activeUser.locked)"
|
||||||
>{{activeUser.locked ? 'Gesperrt': 'nicht Gesperrt'}}</v-chip>
|
>{{ activeUser.locked ? 'Gesperrt' : 'nicht Gesperrt' }}</v-chip
|
||||||
|
>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col>
|
<v-col>
|
||||||
<v-btn
|
<v-btn
|
||||||
@click="doLock({user: activeUser, locked: !activeUser.locked})"
|
@click="
|
||||||
>{{activeUser.locked ? 'Entperren' : 'Sperren'}}</v-btn>
|
doLock({ user: activeUser, locked: !activeUser.locked })
|
||||||
|
"
|
||||||
|
>{{ activeUser.locked ? 'Entperren' : 'Sperren' }}</v-btn
|
||||||
|
>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-divider style="margin-bottom: 15px;" />
|
<v-divider style="margin-bottom: 15px;" />
|
||||||
|
@ -46,7 +56,10 @@
|
||||||
return-object
|
return-object
|
||||||
v-model="autoLock"
|
v-model="autoLock"
|
||||||
label="Automatische Sperre"
|
label="Automatische Sperre"
|
||||||
:items="[{value: true, text: 'Aktiviert'}, {value: false, text: 'Deaktiviert'}]"
|
:items="[
|
||||||
|
{ value: true, text: 'Aktiviert' },
|
||||||
|
{ value: false, text: 'Deaktiviert' }
|
||||||
|
]"
|
||||||
item-text="text"
|
item-text="text"
|
||||||
item-value="value"
|
item-value="value"
|
||||||
/>
|
/>
|
||||||
|
@ -55,8 +68,15 @@
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-btn
|
<v-btn
|
||||||
block
|
block
|
||||||
@click="saveConfig({user: activeUser, limit: limit, autoLock: autoLock.value})"
|
@click="
|
||||||
>Speichern</v-btn>
|
saveConfig({
|
||||||
|
user: activeUser,
|
||||||
|
limit: limit,
|
||||||
|
autoLock: autoLock.value
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>Speichern</v-btn
|
||||||
|
>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-form>
|
</v-form>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
|
@ -67,14 +87,21 @@
|
||||||
<v-form style="margin-left: 15px; margin-right: 15px">
|
<v-form style="margin-left: 15px; margin-right: 15px">
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col>
|
<v-col>
|
||||||
<v-text-field :rules="[isNumber]" label="Betrag" v-model="amount"></v-text-field>
|
<v-text-field
|
||||||
|
:rules="[isNumber]"
|
||||||
|
label="Betrag"
|
||||||
|
v-model="amount"
|
||||||
|
></v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col>
|
<v-col>
|
||||||
<v-select
|
<v-select
|
||||||
return-object
|
return-object
|
||||||
v-model="type"
|
v-model="type"
|
||||||
label="Typ"
|
label="Typ"
|
||||||
:items="[{value: 'amount', text: 'Schulden'}, {value: 'credit', text: 'Guthaben'}]"
|
:items="[
|
||||||
|
{ value: 'amount', text: 'Schulden' },
|
||||||
|
{ value: 'credit', text: 'Guthaben' }
|
||||||
|
]"
|
||||||
item-text="text"
|
item-text="text"
|
||||||
item-value="value"
|
item-value="value"
|
||||||
></v-select>
|
></v-select>
|
||||||
|
@ -108,7 +135,7 @@
|
||||||
</v-card>
|
</v-card>
|
||||||
<div v-for="year in years" :key="years.indexOf(year)">
|
<div v-for="year in years" :key="years.indexOf(year)">
|
||||||
<v-card style="margin-top: 3px;">
|
<v-card style="margin-top: 3px;">
|
||||||
<v-card-title>{{year}}</v-card-title>
|
<v-card-title>{{ year }}</v-card-title>
|
||||||
<Table v-bind:user="activeUser" v-bind:year="year" />
|
<Table v-bind:user="activeUser" v-bind:year="year" />
|
||||||
<v-container fluid>
|
<v-container fluid>
|
||||||
<v-col>
|
<v-col>
|
||||||
|
@ -119,8 +146,13 @@
|
||||||
<v-col>
|
<v-col>
|
||||||
<v-chip
|
<v-chip
|
||||||
outlined
|
outlined
|
||||||
:text-color="getLastColor(activeUser.creditList[year][1].last)"
|
:text-color="
|
||||||
>{{(activeUser.creditList[year][1].last / 100).toFixed(2)}}</v-chip>
|
getLastColor(activeUser.creditList[year][1].last)
|
||||||
|
"
|
||||||
|
>{{
|
||||||
|
(activeUser.creditList[year][1].last / 100).toFixed(2)
|
||||||
|
}}</v-chip
|
||||||
|
>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col>
|
<v-col>
|
||||||
<v-label>Gesamt:</v-label>
|
<v-label>Gesamt:</v-label>
|
||||||
|
@ -129,10 +161,23 @@
|
||||||
<v-chip
|
<v-chip
|
||||||
outlined
|
outlined
|
||||||
x-large
|
x-large
|
||||||
:text-color="getLastColor(getAllSum(activeUser.creditList[year][2].sum ,activeUser.creditList[year][1].last))"
|
:text-color="
|
||||||
|
getLastColor(
|
||||||
|
getAllSum(
|
||||||
|
activeUser.creditList[year][2].sum,
|
||||||
|
activeUser.creditList[year][1].last
|
||||||
|
)
|
||||||
|
)
|
||||||
|
"
|
||||||
>
|
>
|
||||||
{{(getAllSum(activeUser.creditList[year][2].sum ,activeUser.creditList[year][1].last) /
|
{{
|
||||||
100).toFixed(2)}}
|
(
|
||||||
|
getAllSum(
|
||||||
|
activeUser.creditList[year][2].sum,
|
||||||
|
activeUser.creditList[year][1].last
|
||||||
|
) / 100
|
||||||
|
).toFixed(2)
|
||||||
|
}}
|
||||||
</v-chip>
|
</v-chip>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
@ -140,7 +185,7 @@
|
||||||
</v-container>
|
</v-container>
|
||||||
</v-card>
|
</v-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</v-content>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -148,6 +193,9 @@ import Table from './Table'
|
||||||
import { mapGetters, mapActions } from 'vuex'
|
import { mapGetters, mapActions } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
name: 'User',
|
name: 'User',
|
||||||
|
props: {
|
||||||
|
id: String
|
||||||
|
},
|
||||||
components: { Table },
|
components: { Table },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -180,11 +228,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.limit = (this.activeUser.limit / 100).toFixed(2)
|
this.setActiveUser(this.$route.params.id)
|
||||||
this.autoLock = {
|
|
||||||
value: this.activeUser.autoLock,
|
|
||||||
text: this.activeUser.autoLock ? 'Aktiviert' : 'Deaktiviert'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions({
|
...mapActions({
|
||||||
|
@ -192,7 +236,8 @@ export default {
|
||||||
addCredit: 'finanzerUsers/addCredit',
|
addCredit: 'finanzerUsers/addCredit',
|
||||||
sendMail: 'finanzerUsers/sendMail',
|
sendMail: 'finanzerUsers/sendMail',
|
||||||
doLock: 'finanzerUsers/doLock',
|
doLock: 'finanzerUsers/doLock',
|
||||||
saveConfig: 'finanzerUsers/saveConfig'
|
saveConfig: 'finanzerUsers/saveConfig',
|
||||||
|
setActiveUser: 'finanzerUsers/setActiveUser'
|
||||||
}),
|
}),
|
||||||
getLastColor(value) {
|
getLastColor(value) {
|
||||||
return value < 0 ? 'red' : 'green'
|
return value < 0 ? 'red' : 'green'
|
||||||
|
@ -296,15 +341,19 @@ export default {
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
activeUser(newVal) {
|
activeUser(newVal) {
|
||||||
|
console.log(newVal)
|
||||||
this.limit = (newVal.limit / 100).toFixed(2)
|
this.limit = (newVal.limit / 100).toFixed(2)
|
||||||
this.autoLock = {
|
this.autoLock = {
|
||||||
value: newVal.autoLock,
|
value: newVal.autoLock,
|
||||||
text: newVal.autoLock ? 'Aktiviert' : 'Deaktiviert'
|
text: newVal.autoLock ? 'Aktiviert' : 'Deaktiviert'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
id(newVal) {
|
||||||
|
console.log(newVal)
|
||||||
|
this.setActiveUser(newVal)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped></style>
|
||||||
</style>
|
|
||||||
|
|
|
@ -0,0 +1,132 @@
|
||||||
|
<template>
|
||||||
|
<v-container v-if="user">
|
||||||
|
<v-card>
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-title class="title"
|
||||||
|
>{{ user.firstname }} {{ user.lastname }}</v-list-item-title
|
||||||
|
>
|
||||||
|
</v-list-item>
|
||||||
|
<v-card-text>
|
||||||
|
<v-row>
|
||||||
|
<v-col cols="10">
|
||||||
|
<v-row>
|
||||||
|
<v-col>
|
||||||
|
<v-btn
|
||||||
|
class="creditBtn"
|
||||||
|
block
|
||||||
|
@click="addAmount(200)"
|
||||||
|
:color="color"
|
||||||
|
:disabled="user.locked"
|
||||||
|
>2 €</v-btn
|
||||||
|
>
|
||||||
|
</v-col>
|
||||||
|
<v-col>
|
||||||
|
<v-btn
|
||||||
|
class="creditBtn"
|
||||||
|
block
|
||||||
|
@click="addAmount(100)"
|
||||||
|
:color="color"
|
||||||
|
:disabled="user.locked"
|
||||||
|
>1 €</v-btn
|
||||||
|
>
|
||||||
|
</v-col>
|
||||||
|
<v-col>
|
||||||
|
<v-btn
|
||||||
|
class="creditBtn"
|
||||||
|
block
|
||||||
|
@click="addAmount(50)"
|
||||||
|
:color="color"
|
||||||
|
:disabled="user.locked"
|
||||||
|
>0,50 €</v-btn
|
||||||
|
>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-row>
|
||||||
|
<v-col>
|
||||||
|
<v-btn
|
||||||
|
class="creditBtn"
|
||||||
|
block
|
||||||
|
@click="addAmount(40)"
|
||||||
|
:color="color"
|
||||||
|
:disabled="user.locked"
|
||||||
|
>0,40 €</v-btn
|
||||||
|
>
|
||||||
|
</v-col>
|
||||||
|
<v-col>
|
||||||
|
<v-btn
|
||||||
|
class="creditBtn"
|
||||||
|
block
|
||||||
|
@click="addAmount(20)"
|
||||||
|
:color="color"
|
||||||
|
:disabled="user.locked"
|
||||||
|
>0,20 €</v-btn
|
||||||
|
>
|
||||||
|
</v-col>
|
||||||
|
<v-col>
|
||||||
|
<v-btn
|
||||||
|
class="creditBtn"
|
||||||
|
block
|
||||||
|
@click="addAmount(10)"
|
||||||
|
:color="color"
|
||||||
|
:disabled="user.locked"
|
||||||
|
>0,10 €</v-btn
|
||||||
|
>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-col>
|
||||||
|
<v-col align-self="center">
|
||||||
|
<v-row>
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-action-text :class="getColor(getAllSum())"
|
||||||
|
>{{
|
||||||
|
(getAllSum() / 100).toFixed(2)
|
||||||
|
}}
|
||||||
|
€</v-list-item-action-text
|
||||||
|
>
|
||||||
|
</v-list-item>
|
||||||
|
</v-row>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-alert v-if="user.locked" type="error"
|
||||||
|
>{{ user.firstname }} darf nicht mehr anschreiben.
|
||||||
|
{{ user.firstname }} sollte sich lieber mal beim Finanzer
|
||||||
|
melden.</v-alert
|
||||||
|
>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {mapGetters, mapActions} from 'vuex'
|
||||||
|
export default {
|
||||||
|
name: 'AddAmount',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
color: 'green accent-4'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapActions({
|
||||||
|
addAmount: 'user/addAmount'
|
||||||
|
}),
|
||||||
|
getColor(value) {
|
||||||
|
return value >= 0 ? 'title green--text' : 'title red--text'
|
||||||
|
},
|
||||||
|
getAllSum() {
|
||||||
|
console.log("getAllSum", this.user)
|
||||||
|
if (this.user)
|
||||||
|
return this.user.creditList[this.year][2].sum + this.user.creditList[this.year][1].last
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters({
|
||||||
|
user: 'user/user',
|
||||||
|
year: 'user/year'
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,107 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<v-toolbar>
|
||||||
|
<v-toolbar-title>Gesamtübersicht</v-toolbar-title>
|
||||||
|
<v-spacer />
|
||||||
|
<v-toolbar-items>
|
||||||
|
<v-text-field
|
||||||
|
v-model="filter"
|
||||||
|
style="margin-top: 3px"
|
||||||
|
append-icon="search"
|
||||||
|
outlined
|
||||||
|
:rules="[isNumber]"
|
||||||
|
></v-text-field>
|
||||||
|
</v-toolbar-items>
|
||||||
|
</v-toolbar>
|
||||||
|
<div v-for="year in years" :key="years.indexOf(year)">
|
||||||
|
<v-card style="margin-top: 3px" v-if="isFiltered(year)">
|
||||||
|
<v-card-title>{{ year }}</v-card-title>
|
||||||
|
<Table v-bind:user="user" v-bind:year="year" />
|
||||||
|
<v-container fluid>
|
||||||
|
<v-col>
|
||||||
|
<v-row>
|
||||||
|
<v-col>
|
||||||
|
<v-label>Vorjahr:</v-label>
|
||||||
|
</v-col>
|
||||||
|
<v-col>
|
||||||
|
<v-chip
|
||||||
|
outlined
|
||||||
|
:text-color="getLastColor(user.creditList[year][1].last)"
|
||||||
|
>{{ (user.creditList[year][1].last / 100).toFixed(2) }}
|
||||||
|
</v-chip>
|
||||||
|
</v-col>
|
||||||
|
<v-col>
|
||||||
|
<v-label>Gesamt:</v-label>
|
||||||
|
</v-col>
|
||||||
|
<v-col>
|
||||||
|
<v-chip
|
||||||
|
outlined
|
||||||
|
x-large
|
||||||
|
:text-color="
|
||||||
|
getLastColor(
|
||||||
|
getAllSum(
|
||||||
|
user.creditList[year][2].sum,
|
||||||
|
user.creditList[year][1].last
|
||||||
|
)
|
||||||
|
)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
{{
|
||||||
|
(
|
||||||
|
getAllSum(
|
||||||
|
user.creditList[year][2].sum,
|
||||||
|
user.creditList[year][1].last
|
||||||
|
) / 100
|
||||||
|
).toFixed(2)
|
||||||
|
}}
|
||||||
|
</v-chip>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-col>
|
||||||
|
</v-container>
|
||||||
|
</v-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
import Table from '../finanzer/Table'
|
||||||
|
export default {
|
||||||
|
name: 'CreditOverview',
|
||||||
|
components: { Table },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isNumber: value => Number.isInteger(parseInt(value === '' ? 0 : value)) || "Muss eine Zahl sein.",
|
||||||
|
filter: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getLastColor(value) {
|
||||||
|
return value < 0 ? 'red' : 'green'
|
||||||
|
},
|
||||||
|
getAllSum(sum, lastYear) {
|
||||||
|
return lastYear + sum
|
||||||
|
},
|
||||||
|
isFiltered(value) {
|
||||||
|
return value.toString().includes(this.filter)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters({
|
||||||
|
user: 'user/user'
|
||||||
|
}),
|
||||||
|
years() {
|
||||||
|
let years = []
|
||||||
|
if (this.user) {
|
||||||
|
for (let year in this.user.creditList) {
|
||||||
|
years.unshift(parseInt(year))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return years
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<template>
|
||||||
|
<v-list>
|
||||||
|
<v-list-item link to="/main/user/add">
|
||||||
|
<v-list-item-icon>
|
||||||
|
<v-icon>home</v-icon>
|
||||||
|
</v-list-item-icon>
|
||||||
|
<v-list-item-title>
|
||||||
|
Home
|
||||||
|
</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item link to="/main/user/overview">
|
||||||
|
<v-list-item-icon>
|
||||||
|
<v-icon>account_balance</v-icon>
|
||||||
|
</v-list-item-icon>
|
||||||
|
<v-list-item-title>Finanzübersicht</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
</v-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'UserNavigation'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -1,5 +1,5 @@
|
||||||
//const main = 'http://192.168.5.118:5000/'
|
//const main = 'http://192.168.5.118:5000/'
|
||||||
const main = 'http://localhost:5000/'
|
const main = 'https://localhost:5000/'
|
||||||
|
|
||||||
const url = {
|
const url = {
|
||||||
login: main + 'login',
|
login: main + 'login',
|
||||||
|
@ -15,7 +15,9 @@ const url = {
|
||||||
finanzerSetConfig: main + 'finanzerSetConfig',
|
finanzerSetConfig: main + 'finanzerSetConfig',
|
||||||
finanzerAddUser: main + 'finanzerAddUser',
|
finanzerAddUser: main + 'finanzerAddUser',
|
||||||
finanzerSendAllMail: main + 'finanzerSendAllMail',
|
finanzerSendAllMail: main + 'finanzerSendAllMail',
|
||||||
finanzerSendOneMail: main + 'finanzerSendOneMail'
|
finanzerSendOneMail: main + 'finanzerSendOneMail',
|
||||||
|
userMain: main + 'user/main',
|
||||||
|
userAddAmount: main + 'user/addAmount'
|
||||||
}
|
}
|
||||||
|
|
||||||
export default url
|
export default url
|
||||||
|
|
|
@ -3,7 +3,17 @@ import VueRouter from 'vue-router'
|
||||||
import FinanzerView from '@/views/FinanzerView'
|
import FinanzerView from '@/views/FinanzerView'
|
||||||
import Login from '@/views/Login'
|
import Login from '@/views/Login'
|
||||||
import store from '@/store/index'
|
import store from '@/store/index'
|
||||||
import BarView from '@/views/BarView'
|
import GeruechteView from '../views/contents/GeruechteView'
|
||||||
|
import AddAmount from '../components/user/AddAmount'
|
||||||
|
import CreditOverview from '../components/user/CreditOverview'
|
||||||
|
import MainView from '../views/MainView'
|
||||||
|
import UserView from '../views/UserView'
|
||||||
|
import BarView from '../views/BarView'
|
||||||
|
import UserNavigation from '../components/user/UserNavigation'
|
||||||
|
import BarNavigation from '../components/baruser/BarNavigation'
|
||||||
|
import FinanzerNavigation from '../components/finanzer/FinanzerNavigation'
|
||||||
|
import Overview from '../components/finanzer/Overview'
|
||||||
|
import User from '../components/finanzer/User'
|
||||||
|
|
||||||
Vue.use(VueRouter)
|
Vue.use(VueRouter)
|
||||||
|
|
||||||
|
@ -14,14 +24,57 @@ const routes = [
|
||||||
component: Login
|
component: Login
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/finanzer',
|
path: '/main',
|
||||||
name: 'finanzer',
|
name: 'main',
|
||||||
component: FinanzerView
|
component: MainView,
|
||||||
},
|
children: [
|
||||||
{
|
{
|
||||||
path: '/bar',
|
path: 'user',
|
||||||
name: 'bar',
|
name: 'user',
|
||||||
component: BarView
|
components: { userNav: UserNavigation, default: UserView },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'add',
|
||||||
|
name: 'add',
|
||||||
|
component: AddAmount
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'overview',
|
||||||
|
name: 'userOverview',
|
||||||
|
component: CreditOverview
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'bar',
|
||||||
|
name: 'bar',
|
||||||
|
components: { userNav: BarNavigation, default: BarView },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'geruecht',
|
||||||
|
name: 'geruecht',
|
||||||
|
component: GeruechteView
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'finanzer',
|
||||||
|
name: 'finanzer',
|
||||||
|
components: { default: FinanzerView, finanzerNav: FinanzerNavigation },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'overview',
|
||||||
|
component: Overview
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'user/:id',
|
||||||
|
name: 'activeUser',
|
||||||
|
props: true,
|
||||||
|
component: User
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '*',
|
path: '*',
|
||||||
|
@ -39,18 +92,23 @@ const router = new VueRouter({
|
||||||
|
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
store.dispatch('fetchAccessToken')
|
store.dispatch('fetchAccessToken')
|
||||||
let sites = ['/finanzer', '/bar']
|
console.log('fullPath', to.fullPath)
|
||||||
if (sites.includes(to.fullPath)) {
|
if (to.fullPath.includes('/main')) {
|
||||||
if (to.fullPath === '/finanzer') {
|
if (to.fullPath.includes('/main/finanzer')) {
|
||||||
if (!store.state.login.user.group.includes('moneymaster')) {
|
if (!store.state.login.user.group.includes('moneymaster')) {
|
||||||
next('/login')
|
next('/login')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (to.fullPath === '/bar') {
|
if (to.fullPath.includes('/main/bar')) {
|
||||||
if (!store.state.login.user.group.includes('bar')) {
|
if (!store.state.login.user.group.includes('bar')) {
|
||||||
next('/login')
|
next('/login')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (to.fullPath.includes('/main/user')) {
|
||||||
|
if (!store.state.login.user.group.includes('user')) {
|
||||||
|
next('/login')
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!store.state.login.user.accessToken) {
|
if (!store.state.login.user.accessToken) {
|
||||||
next('/login')
|
next('/login')
|
||||||
}
|
}
|
||||||
|
@ -58,9 +116,11 @@ router.beforeEach((to, from, next) => {
|
||||||
if (to.fullPath === '/login') {
|
if (to.fullPath === '/login') {
|
||||||
if (store.state.login.user.accessToken) {
|
if (store.state.login.user.accessToken) {
|
||||||
if (store.state.login.user.group.includes('moneymaster')) {
|
if (store.state.login.user.group.includes('moneymaster')) {
|
||||||
next('/finanzer')
|
next('/main/finanzer')
|
||||||
} else if (store.state.login.user.group.includes('bar')) {
|
} else if (store.state.login.user.group.includes('bar')) {
|
||||||
next('/bar')
|
next('/main/bar/geruecht')
|
||||||
|
} else if (store.state.login.user.group.includes('user')) {
|
||||||
|
next('/main/user/add')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ import Vuex from 'vuex'
|
||||||
import login from './modules/login'
|
import login from './modules/login'
|
||||||
import finanzerUsers from './modules/finanzerUsers'
|
import finanzerUsers from './modules/finanzerUsers'
|
||||||
import barUsers from '@/store/modules/barUsers'
|
import barUsers from '@/store/modules/barUsers'
|
||||||
|
import user from '@/store/modules/user'
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ export default new Vuex.Store({
|
||||||
modules: {
|
modules: {
|
||||||
login,
|
login,
|
||||||
finanzerUsers,
|
finanzerUsers,
|
||||||
barUsers
|
barUsers,
|
||||||
|
user
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,9 +4,7 @@ import url from '@/plugins/routes'
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
users: [],
|
users: [],
|
||||||
activeUser: {
|
activeUser: '',
|
||||||
username: null
|
|
||||||
},
|
|
||||||
allUsers: [],
|
allUsers: [],
|
||||||
user: null,
|
user: null,
|
||||||
errorMails: null,
|
errorMails: null,
|
||||||
|
@ -38,13 +36,8 @@ const mutations = {
|
||||||
state.allUsers[i].firstname + ' ' + state.allUsers[i].lastname
|
state.allUsers[i].firstname + ' ' + state.allUsers[i].lastname
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setActiveUser: (state, user) => {
|
setActiveUser: (state, username) => {
|
||||||
if (state.activeUser.username === user.username) {
|
state.activeUser = username
|
||||||
state.activeUser = { username: null }
|
|
||||||
} else {
|
|
||||||
state.activeUser = user
|
|
||||||
}
|
|
||||||
state.errorMail = null
|
|
||||||
},
|
},
|
||||||
setUsers: (state, users) => {
|
setUsers: (state, users) => {
|
||||||
for (let user in users) {
|
for (let user in users) {
|
||||||
|
@ -256,8 +249,8 @@ const actions = {
|
||||||
dispatch('logout', null, { root: true })
|
dispatch('logout', null, { root: true })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setActiveUser({ commit }, user) {
|
setActiveUser({ commit }, username) {
|
||||||
commit('setActiveUser', user)
|
commit('setActiveUser', username)
|
||||||
},
|
},
|
||||||
async addAmount({ commit, rootState, dispatch }, data) {
|
async addAmount({ commit, rootState, dispatch }, data) {
|
||||||
try {
|
try {
|
||||||
|
@ -390,7 +383,9 @@ const getters = {
|
||||||
return state.users
|
return state.users
|
||||||
},
|
},
|
||||||
activeUser: state => {
|
activeUser: state => {
|
||||||
return state.activeUser
|
return state.users.find(user => {
|
||||||
|
return user.username === state.activeUser
|
||||||
|
})
|
||||||
},
|
},
|
||||||
allUsers: state => {
|
allUsers: state => {
|
||||||
return state.allUsers
|
return state.allUsers
|
||||||
|
|
|
@ -55,9 +55,11 @@ const actions = {
|
||||||
commit('loginStop', null)
|
commit('loginStop', null)
|
||||||
commit('updateAccessToken', response.data)
|
commit('updateAccessToken', response.data)
|
||||||
if (state.user.group.includes('moneymaster')) {
|
if (state.user.group.includes('moneymaster')) {
|
||||||
router.push('/finanzer')
|
router.push('/main/finanzer/overview')
|
||||||
} else if (state.user.group.includes('bar')) {
|
} else if (state.user.group.includes('bar')) {
|
||||||
router.push('/bar')
|
router.push('/main/bar/geruecht')
|
||||||
|
} else if (state.user.group.includes('user')) {
|
||||||
|
router.push('/main/user/add')
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
commit('loginStop', err.response.data.error)
|
commit('loginStop', err.response.data.error)
|
||||||
|
@ -96,6 +98,30 @@ const getters = {
|
||||||
},
|
},
|
||||||
loginError: state => {
|
loginError: state => {
|
||||||
return state.loginError
|
return state.loginError
|
||||||
|
},
|
||||||
|
isBar: state => {
|
||||||
|
try {
|
||||||
|
return state.user.group.includes('bar') ? true : false
|
||||||
|
} catch (e) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isFinanzer: state => {
|
||||||
|
try {
|
||||||
|
return state.user.group.includes('moneymaster') ? true : false
|
||||||
|
} catch (e) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isUser: state => {
|
||||||
|
try {
|
||||||
|
return state.user.group.includes('user') ? true : false
|
||||||
|
} catch (e) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isLoggedIn: state => {
|
||||||
|
return state.user.accessToken ? true : false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,168 @@
|
||||||
|
import axios from 'axios'
|
||||||
|
import url from '@/plugins/routes'
|
||||||
|
|
||||||
|
const state = {
|
||||||
|
user: null,
|
||||||
|
creditList: []
|
||||||
|
}
|
||||||
|
|
||||||
|
const mutations = {
|
||||||
|
setUser: (state, user) => {
|
||||||
|
state.user = user
|
||||||
|
let list = {}
|
||||||
|
for (let creditList in user['creditList']) {
|
||||||
|
console.log(creditList)
|
||||||
|
let amount = mutations.createAmount(user['creditList'][creditList])
|
||||||
|
let credit = mutations.createCredit(user['creditList'][creditList])
|
||||||
|
let sum = mutations.createSum(credit, amount)
|
||||||
|
list[creditList] = [{ ...credit }, { ...amount }, { ...sum }]
|
||||||
|
}
|
||||||
|
state.user.creditList = list
|
||||||
|
state.creditList = []
|
||||||
|
console.log(state.user)
|
||||||
|
},
|
||||||
|
createAmount(creditList) {
|
||||||
|
let amount = {
|
||||||
|
type: 'Schulden',
|
||||||
|
jan_amount: 0 - creditList.jan.depts,
|
||||||
|
feb_amount: 0 - creditList.feb.depts,
|
||||||
|
maer_amount: 0 - creditList.maer.depts,
|
||||||
|
apr_amount: 0 - creditList.apr.depts,
|
||||||
|
mai_amount: 0 - creditList.mai.depts,
|
||||||
|
jun_amount: 0 - creditList.jun.depts,
|
||||||
|
jul_amount: 0 - creditList.jul.depts,
|
||||||
|
aug_amount: 0 - creditList.aug.depts,
|
||||||
|
sep_amount: 0 - creditList.sep.depts,
|
||||||
|
okt_amount: 0 - creditList.okt.depts,
|
||||||
|
nov_amount: 0 - creditList.nov.depts,
|
||||||
|
dez_amount: 0 - creditList.dez.depts,
|
||||||
|
last: 0 - creditList['last']
|
||||||
|
}
|
||||||
|
|
||||||
|
amount.sum =
|
||||||
|
amount.jan_amount +
|
||||||
|
amount.feb_amount +
|
||||||
|
amount.maer_amount +
|
||||||
|
amount.apr_amount +
|
||||||
|
amount.mai_amount +
|
||||||
|
amount.jun_amount +
|
||||||
|
amount.jul_amount +
|
||||||
|
amount.aug_amount +
|
||||||
|
amount.sep_amount +
|
||||||
|
amount.okt_amount +
|
||||||
|
amount.nov_amount +
|
||||||
|
amount.dez_amount
|
||||||
|
return amount
|
||||||
|
},
|
||||||
|
createCredit(creditList) {
|
||||||
|
let credit = {
|
||||||
|
type: 'Guthaben',
|
||||||
|
jan_amount: creditList.jan.credit,
|
||||||
|
feb_amount: creditList.feb.credit,
|
||||||
|
maer_amount: creditList.maer.credit,
|
||||||
|
apr_amount: creditList.apr.credit,
|
||||||
|
mai_amount: creditList.mai.credit,
|
||||||
|
jun_amount: creditList.jun.credit,
|
||||||
|
jul_amount: creditList.jul.credit,
|
||||||
|
aug_amount: creditList.aug.credit,
|
||||||
|
sep_amount: creditList.sep.credit,
|
||||||
|
okt_amount: creditList.okt.credit,
|
||||||
|
nov_amount: creditList.nov.credit,
|
||||||
|
dez_amount: creditList.dez.credit
|
||||||
|
}
|
||||||
|
credit.sum =
|
||||||
|
credit.jan_amount +
|
||||||
|
credit.feb_amount +
|
||||||
|
credit.maer_amount +
|
||||||
|
credit.apr_amount +
|
||||||
|
credit.mai_amount +
|
||||||
|
credit.jun_amount +
|
||||||
|
credit.jul_amount +
|
||||||
|
credit.aug_amount +
|
||||||
|
credit.sep_amount +
|
||||||
|
credit.okt_amount +
|
||||||
|
credit.nov_amount +
|
||||||
|
credit.dez_amount
|
||||||
|
return credit
|
||||||
|
},
|
||||||
|
createSum(credit, amount) {
|
||||||
|
let sum = {
|
||||||
|
type: 'Summe',
|
||||||
|
jan_amount: credit.jan_amount + amount.jan_amount,
|
||||||
|
feb_amount: credit.feb_amount + amount.feb_amount,
|
||||||
|
maer_amount: credit.maer_amount + amount.maer_amount,
|
||||||
|
apr_amount: credit.apr_amount + amount.apr_amount,
|
||||||
|
mai_amount: credit.mai_amount + amount.mai_amount,
|
||||||
|
jun_amount: credit.jun_amount + amount.jun_amount,
|
||||||
|
jul_amount: credit.jul_amount + amount.jul_amount,
|
||||||
|
aug_amount: credit.aug_amount + amount.aug_amount,
|
||||||
|
sep_amount: credit.sep_amount + amount.sep_amount,
|
||||||
|
okt_amount: credit.okt_amount + amount.okt_amount,
|
||||||
|
nov_amount: credit.nov_amount + amount.nov_amount,
|
||||||
|
dez_amount: credit.dez_amount + amount.dez_amount
|
||||||
|
}
|
||||||
|
sum.sum =
|
||||||
|
sum.jan_amount +
|
||||||
|
sum.feb_amount +
|
||||||
|
sum.maer_amount +
|
||||||
|
sum.apr_amount +
|
||||||
|
sum.mai_amount +
|
||||||
|
sum.jun_amount +
|
||||||
|
sum.jul_amount +
|
||||||
|
sum.aug_amount +
|
||||||
|
sum.sep_amount +
|
||||||
|
sum.okt_amount +
|
||||||
|
sum.nov_amount +
|
||||||
|
sum.dez_amount
|
||||||
|
return sum
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const actions = {
|
||||||
|
async getUser({ commit, rootState, dispatch }) {
|
||||||
|
try {
|
||||||
|
const response = await axios.get(url.userMain, {
|
||||||
|
headers: { Token: rootState.login.user.accessToken }
|
||||||
|
})
|
||||||
|
commit('setUser', response.data)
|
||||||
|
} catch (e) {
|
||||||
|
if (e.response)
|
||||||
|
if (e.response.status === 401) dispatch('logout', null, { root: true })
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async addAmount({ commit, rootState, dispatch }, amount) {
|
||||||
|
try {
|
||||||
|
const response = await axios.post(
|
||||||
|
url.userAddAmount,
|
||||||
|
{ amount: amount },
|
||||||
|
{ headers: { Token: rootState.login.user.accessToken } }
|
||||||
|
)
|
||||||
|
commit('setUser', response.data)
|
||||||
|
} catch (e) {
|
||||||
|
if (e.response)
|
||||||
|
if (e.response.status === 401) dispatch('logout', null, { root: true })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getters = {
|
||||||
|
user: state => {
|
||||||
|
return state.user
|
||||||
|
},
|
||||||
|
year: state => {
|
||||||
|
let year = 0
|
||||||
|
for (let creditList in state.user.creditList) {
|
||||||
|
let currentYear = parseInt(creditList)
|
||||||
|
if (currentYear > year) year = currentYear
|
||||||
|
}
|
||||||
|
return year
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state,
|
||||||
|
mutations,
|
||||||
|
actions,
|
||||||
|
getters
|
||||||
|
}
|
|
@ -1,29 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<v-content>
|
||||||
<TitleBar />
|
<router-view/>
|
||||||
<v-content>
|
</v-content>
|
||||||
<SearchBar />
|
|
||||||
<CreditLists></CreditLists>
|
|
||||||
</v-content>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import TitleBar from '@/components/TitleBar'
|
|
||||||
import CreditLists from '@/components/baruser/CreditLists'
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
|
||||||
import axios from 'axios'
|
|
||||||
import SearchBar from '../components/baruser/SearchBar'
|
|
||||||
export default {
|
export default {
|
||||||
name: 'BarView',
|
name: 'BarView'
|
||||||
components: { SearchBar, CreditLists, TitleBar },
|
|
||||||
created() {},
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
methods: {}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped></style>
|
||||||
</style>
|
|
||||||
|
|
|
@ -1,27 +1,14 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<TitleBar />
|
<v-navigation-drawer
|
||||||
<v-navigation-drawer mini-variant expand-on-hover app clipped permanent overflow>
|
mini-variant
|
||||||
<v-list>
|
expand-on-hover
|
||||||
<v-list-item class="title" link @click="setActiveUser(activeUser)">
|
app
|
||||||
<v-list-item-icon>
|
clipped
|
||||||
<v-icon>home</v-icon>
|
permanent
|
||||||
</v-list-item-icon>
|
overflow
|
||||||
<v-list-item-title>Gesamtübersicht</v-list-item-title>
|
right
|
||||||
</v-list-item>
|
>
|
||||||
</v-list>
|
|
||||||
<v-divider />
|
|
||||||
<v-list>
|
|
||||||
<v-list-item
|
|
||||||
v-for="user in users"
|
|
||||||
v-bind:key="users.indexOf(user)"
|
|
||||||
:class="user.username === activeUser.username ? 'v-list-item--highlighted' : ''"
|
|
||||||
link
|
|
||||||
@click="setActiveUser(user)"
|
|
||||||
>
|
|
||||||
<v-list-item-title>{{user.lastname}}, {{user.firstname}}</v-list-item-title>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
<v-list>
|
<v-list>
|
||||||
<v-list-item>
|
<v-list-item>
|
||||||
|
@ -53,29 +40,22 @@
|
||||||
</v-list>
|
</v-list>
|
||||||
</template>
|
</template>
|
||||||
</v-navigation-drawer>
|
</v-navigation-drawer>
|
||||||
<v-content v-if="!activeUser.username">
|
<router-view />
|
||||||
<Overview />
|
|
||||||
</v-content>
|
|
||||||
<v-content v-else>
|
|
||||||
<User />
|
|
||||||
</v-content>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import TitleBar from '@/components/TitleBar'
|
|
||||||
import Overview from '../components/finanzer/Overview'
|
|
||||||
import User from '../components/finanzer/User'
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
import { mapActions } from 'vuex'
|
import { mapActions } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'FinanzerView',
|
name: 'FinanzerView',
|
||||||
components: { User, Overview, TitleBar },
|
components: {},
|
||||||
created() {
|
created() {
|
||||||
this.getAllUsers()
|
this.getAllUsers()
|
||||||
this.getUsers()
|
this.getUsers()
|
||||||
|
this.createYears()
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -86,7 +66,9 @@ export default {
|
||||||
getAllUsers: 'finanzerUsers/getAllUsers',
|
getAllUsers: 'finanzerUsers/getAllUsers',
|
||||||
setActiveUser: 'finanzerUsers/setActiveUser',
|
setActiveUser: 'finanzerUsers/setActiveUser',
|
||||||
getUsers: 'finanzerUsers/getUsers',
|
getUsers: 'finanzerUsers/getUsers',
|
||||||
finanzerUsers: 'finanzerUsers/addUser'
|
finanzerUsers: 'finanzerUsers/addUser',
|
||||||
|
createYears: 'finanzerUsers/createYears',
|
||||||
|
logout: 'logout'
|
||||||
}),
|
}),
|
||||||
computed: mapGetters({
|
computed: mapGetters({
|
||||||
users: 'finanzerUsers/users',
|
users: 'finanzerUsers/users',
|
||||||
|
@ -96,5 +78,4 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped></style>
|
||||||
</style>
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<TitleBar />
|
|
||||||
<v-content>
|
<v-content>
|
||||||
<v-container class="fill-height" fluid>
|
<v-container class="fill-height" fluid>
|
||||||
<v-row align="center" justify="center">
|
<v-row align="center" justify="center">
|
||||||
|
@ -19,7 +18,9 @@
|
||||||
type="text"
|
type="text"
|
||||||
v-model="username"
|
v-model="username"
|
||||||
ref="first"
|
ref="first"
|
||||||
@keyup.enter="doLogin({username: username, password: password})"
|
@keyup.enter="
|
||||||
|
doLogin({ username: username, password: password })
|
||||||
|
"
|
||||||
@input="resetLoginError"
|
@input="resetLoginError"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
@ -30,19 +31,26 @@
|
||||||
prepend-icon="lock"
|
prepend-icon="lock"
|
||||||
type="password"
|
type="password"
|
||||||
v-model="password"
|
v-model="password"
|
||||||
@keyup.enter="doLogin({username: username, password: password})"
|
@keyup.enter="
|
||||||
|
doLogin({ username: username, password: password })
|
||||||
|
"
|
||||||
@input="resetLoginError"
|
@input="resetLoginError"
|
||||||
/>
|
/>
|
||||||
</v-form>
|
</v-form>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
<v-alert v-if="loginError" dense type="error">{{ loginError }}</v-alert>
|
<v-alert v-if="loginError" dense type="error">{{
|
||||||
|
loginError
|
||||||
|
}}</v-alert>
|
||||||
<v-card-actions>
|
<v-card-actions>
|
||||||
<v-spacer />
|
<v-spacer />
|
||||||
<v-btn
|
<v-btn
|
||||||
@click="doLogin({username: username, password: password})"
|
@click="doLogin({ username: username, password: password })"
|
||||||
@submit.prevent="doLogin({username: username, password: password})"
|
@submit.prevent="
|
||||||
|
doLogin({ username: username, password: password })
|
||||||
|
"
|
||||||
color="primary"
|
color="primary"
|
||||||
>Login</v-btn>
|
>Login</v-btn
|
||||||
|
>
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
@ -53,13 +61,12 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import TitleBar from '@/components/TitleBar'
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
import { mapActions } from 'vuex'
|
import { mapActions } from 'vuex'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
name: 'Login',
|
name: 'Login',
|
||||||
components: { TitleBar },
|
components: {},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
username: null,
|
username: null,
|
||||||
|
@ -71,5 +78,4 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped></style>
|
||||||
</style>
|
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<v-navigation-drawer
|
||||||
|
v-if="isLoggedIn"
|
||||||
|
mini-variant
|
||||||
|
expand-on-hover
|
||||||
|
app
|
||||||
|
clipped
|
||||||
|
permanent
|
||||||
|
overflow
|
||||||
|
>
|
||||||
|
<v-list>
|
||||||
|
<v-list-item v-if="isUser" class="title" link to="/main/user/add">
|
||||||
|
<v-list-item-icon>
|
||||||
|
<v-icon>person</v-icon>
|
||||||
|
</v-list-item-icon>
|
||||||
|
<v-list-item-title>Account</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item v-if="isBar" class="title" link to="/main/bar/geruecht">
|
||||||
|
<v-list-item-icon>
|
||||||
|
<v-icon>local_bar</v-icon>
|
||||||
|
</v-list-item-icon>
|
||||||
|
<v-list-item-title>
|
||||||
|
Gerüchte
|
||||||
|
</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item v-if="isFinanzer" class="title" link to="/main/finanzer/overview">
|
||||||
|
<v-list-item-icon>
|
||||||
|
<v-icon>attach_money</v-icon>
|
||||||
|
</v-list-item-icon>
|
||||||
|
<v-list-item-title>Finanzer</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
</v-list>
|
||||||
|
<v-divider />
|
||||||
|
<router-view name="finanzerNav" />
|
||||||
|
<router-view name="userNav"/>
|
||||||
|
<router-view name="barNav"/>
|
||||||
|
<template v-slot:append>
|
||||||
|
<v-list>
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-icon>
|
||||||
|
<v-icon>exit_to_app</v-icon>
|
||||||
|
</v-list-item-icon>
|
||||||
|
<v-list-item-title>
|
||||||
|
<v-btn block text @click="logout">Logout</v-btn>
|
||||||
|
</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
</v-list>
|
||||||
|
</template>
|
||||||
|
</v-navigation-drawer>
|
||||||
|
<router-view />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapActions, mapGetters } from 'vuex'
|
||||||
|
export default {
|
||||||
|
name: 'MainView',
|
||||||
|
components: { },
|
||||||
|
created() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapActions({
|
||||||
|
logout: 'logout'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters({
|
||||||
|
group: 'group',
|
||||||
|
isBar: 'isBar',
|
||||||
|
isUser: 'isUser',
|
||||||
|
isFinanzer: 'isFinanzer',
|
||||||
|
isLoggedIn: 'isLoggedIn'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<template>
|
||||||
|
<v-content>
|
||||||
|
<router-view/>
|
||||||
|
</v-content>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapActions, mapGetters } from 'vuex'
|
||||||
|
export default {
|
||||||
|
name: 'UserView',
|
||||||
|
created() {
|
||||||
|
this.getUser()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapActions({
|
||||||
|
getUser: 'user/getUser'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters({
|
||||||
|
user: 'user/user'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<SearchBar />
|
||||||
|
<CreditLists></CreditLists>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import CreditLists from '@/components/baruser/CreditLists'
|
||||||
|
import { mapActions } from 'vuex'
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
import axios from 'axios'
|
||||||
|
import SearchBar from '../../components/baruser/SearchBar'
|
||||||
|
export default {
|
||||||
|
name: 'GeruechteView',
|
||||||
|
components: { SearchBar, CreditLists },
|
||||||
|
created() {},
|
||||||
|
data() {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapActions(['logout'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -1,8 +1,12 @@
|
||||||
|
//const fs = require('fs')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
"transpileDependencies": [
|
transpileDependencies: ['vuetify'],
|
||||||
"vuetify"
|
|
||||||
],
|
|
||||||
devServer: {
|
devServer: {
|
||||||
disableHostCheck: true
|
disableHostCheck: true
|
||||||
|
// https: {
|
||||||
|
// key: fs.readFileSync('./cert/server.key'),
|
||||||
|
// cert: fs.readFileSync('./cert/server.crt')
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue