add work reprt in the community skellet

This commit is contained in:
ogerly 2021-03-17 09:33:42 +01:00
parent 8c14a07872
commit 15f43d7351
22 changed files with 354 additions and 111 deletions

View File

@ -4,8 +4,7 @@
</header>
<div class="">
<particles-bg type="custom" :config="config" :bg="true" />
<router-view />
<router-view />
</div>
</div>
</template>
@ -19,17 +18,25 @@ export default {
components: {
ParticlesBg
},
created () {
//console.log("this.$cookies.get('gdd_session_id') ", this.$cookies.get('gdd_session_id') )
console.log(" $cookies.isKey('gdd_session_id') ", this.$cookies.isKey("gdd_session_id") )
if ( this.$cookies.isKey('gdd_session_id') ) {
mounted() {
console.log("mounted")
console.log(" $cookies.get('gdd_session_id') ", $cookies.get("gdd_session_id") )
console.log(" $cookies.isKey('gdd_session_id') ", $cookies.isKey("gdd_session_id") )
const isSession = $cookies.isKey("gdd_session_id")
const getSession = $cookies.get("gdd_session_id")
console.log("this.isSession ", this.isSession )
if ( $cookies.isKey("gdd_session_id")) {
//this.$store.state.email = this.$cookies.get('gdd_u')
console.log("login to kontooverview")
this.$router.push('/KontoOverview')
console.log("router to overview")
this.$router.push("/overview")
}else {
console.log("login to LOGIN")
this.$router.push("/Login")
console.log("router to LOGIN")
//this.$router.push("/login")
}
},
created () {
console.log("created")
},
data() {
return {
@ -52,7 +59,7 @@ export default {
}
</script>
<style>
.btn {
.btn-primary pim{
background-color: #5A7B02;
border-color: #5e72e4;
}

View File

@ -1,6 +1,9 @@
import axios from 'axios';
import CONFIG from '../config'
// axios.defaults.withCredentials = true. Dies ist erforderlich, da Axios standardmäßig keine Cookies weitergibt.
axios.defaults.withCredentials = true
const apiGet = async (url) => {
try {
const result = await axios.get(url);

View File

@ -7,6 +7,9 @@ const EMAIL_TYPE = {
ADMIN: 5, // if user was registered by an admin
}
// axios.defaults.withCredentials = true. Dies ist erforderlich, da Axios standardmäßig keine Cookies weitergibt.
axios.defaults.withCredentials = true
const apiPost = async (url, payload) => {
try {
const result = await axios.post(url, payload);

View File

@ -1,7 +1,7 @@
<template>
<bread-crumb list-classes="breadcrumb-links breadcrumb-dark">
<BreadCrumbItem>
<router-link to="/">
<router-link to="/overview">
<i class="fas fa-home"></i>
</router-link>
</BreadCrumbItem>

View File

@ -6,12 +6,12 @@
<navbar-toggle-button @click.native="showSidebar">
</navbar-toggle-button>
<router-link class="navbar-brand" to="/">
<router-link class="navbar-brand" to="/overview">
<img :src="logo" class="navbar-brand-img" alt="...">
</router-link>
<slot name="mobile-right">
<ul class="nav align-items-center d-md-none">
<ul class="nav align-items-center d-md-none">
<base-dropdown class="nav-item" menu-on-right tag="li" title-tag="a">
<a slot="title-container" class="nav-link" href="#" role="button">
@ -22,7 +22,7 @@
</div>
</a>
<router-link to="/KontoOverview" class="dropdown-item text-lg text-muted">
<router-link to="/overview" class="dropdown-item text-lg text-muted">
<i class="ni ni-single-02"></i>
<span>{{ $t('site.overview.account_overview')}}</span>
</router-link>
@ -40,10 +40,10 @@
</router-link>
<div class="dropdown-divider"></div>
<router-link @click="logout" class="dropdown-item text-lg text-muted">
<div @click="logout" class="dropdown-item text-lg text-muted" >
<i class="ni ni-support-16"></i>
<span>{{ $t('logout') }}</span>
</router-link>
{{ $t('logout') }}
</div>
</base-dropdown>
</ul>
</slot>
@ -53,7 +53,7 @@
<div class="navbar-collapse-header d-md-none">
<div class="row">
<div class="col-6 collapse-brand">
<router-link to="/">
<router-link to="/overview">
<img :src="logo">
</router-link>
</div>
@ -62,26 +62,20 @@
</div>
</div>
</div>
<ul class="navbar-nav">
<slot name="links">
</slot>
</ul>
<hr class="my-3">
<ul class="navbar-nav mb-md-3">
<hr class="my-3">
<ul class="navbar-nav mb-md-3">
<li class="nav-item">
<a class="nav-link text-lg bg-light" href="#!" @click="logout">
{{ $t('logout') }}
</a>
</li>
</ul>
</div>
</ul>
</div>
</div>
</nav>
</template>
<script>
@ -96,7 +90,7 @@
logo: {
type: String,
default: 'img/brand/green.png',
description: 'Sidebar app logo'
description: 'Gradido Sidebar app logo'
},
autoClose: {
type: Boolean,
@ -116,17 +110,9 @@
showSidebar() {
this.$sidebar.displaySidebar(true)
},
setLocale(locale) {
this.$i18n.locale = locale
//this.$router.push({
// params: { lang: locale }
//})
//this.hideDropdown()
},
logout(){
//console.log("DashboardNavbar.vue user logout() : ")
this.$store.dispatch('logout')
}
logout(){
this.$store.dispatch('logout')
}
},
beforeDestroy() {
if (this.$sidebar.showSidebar) {

View File

@ -29,6 +29,7 @@ import { messages } from 'vee-validate/dist/locale/en.json';
import VueQrcodeReader from "vue-qrcode-reader";
import VueQrcode from "vue-qrcode";
import VueFlatPickr from 'vue-flatpickr-component';
import VueGoodTablePlugin from 'vue-good-table';
// import the styles
@ -54,6 +55,7 @@ export default {
Vue.use(VueMoment);
Vue.use(VueQrcodeReader);
Vue.use(VueQrcode);
Vue.use(VueFlatPickr);
configure({
classes: {
valid: 'is-valid',

View File

@ -2,7 +2,7 @@ import DashboardLayout from '@/views/Layout/DashboardLayout.vue'
import AuthLayoutGDD from '@/views/Layout/AuthLayout_gdd.vue'
import AuthLayout from '@/views/Layout/AuthLayout.vue'
import NotFound from '@/views/NotFoundPage.vue'
// import NotFound from '@/views/NotFoundPage.vue'
const routes = [
@ -31,11 +31,11 @@ const routes = [
},
{
path: '/',
redirect: 'KontoOverview',
redirect: 'overview',
component: DashboardLayout,
children: [
{
path: '/KontoOverview',
path: '/overview',
component: () => import('../views/KontoOverview.vue'),
meta: {
requiresAuth: true
@ -70,15 +70,6 @@ const routes = [
}
}
]
},
{
path: '/',
redirect: 'login',
component: AuthLayout,
children: [
{ path: '*', component: NotFound }
]
}
];

View File

@ -6,6 +6,8 @@ import loginAPI from '../apis/loginAPI'
import communityAPI from '../apis/communityAPI'
import axios from 'axios'
// axios.defaults.withCredentials = true. Dies ist erforderlich, da Axios standardmäßig keine Cookies weitergibt.
axios.defaults.withCredentials = true
export const store = new Vuex.Store({
state: {
@ -68,7 +70,7 @@ export const store = new Vuex.Store({
commit('email', data.email)
$cookies.set('gdd_session_id', result.result.data.session_id);
$cookies.set('gdd_u', data.email);
router.push('/KontoOverview')
router.push('/overview')
} else {
// Register failed, we perform a logout
dispatch('logout')
@ -88,7 +90,7 @@ export const store = new Vuex.Store({
commit('email', data.email)
$cookies.set('gdd_session_id', result.result.data.session_id);
$cookies.set('gdd_u', data.email);
router.push('/KontoOverview')
router.push('/overview')
} else {
// Register failed, we perform a logout
dispatch('logout')

View File

@ -226,6 +226,8 @@
import AdminUserCreation from './AdminOverview/AdminUserCreation';
import axios from 'axios';
// axios.defaults.withCredentials = true. Dies ist erforderlich, da Axios standardmäßig keine Cookies weitergibt.
axios.defaults.withCredentials = true
export default {
components: {

View File

@ -6,37 +6,41 @@
<gdd-sent />
<hr>
<gdd-table />
<hr>
<div>
<gdd-add-work />
<gdd-add-work-2 />
</div>
<br>
<!--
<!--
<div>
<gdd-add-work />
</div>
<br>
-->
<div>
<gdd-work-table />
</div>
-->
</div>
</base-header>
<hr>
</div>
</template>
<script>
import GddStatus from './KontoOverview/GddStatus.vue';
import GddSent from './KontoOverview/GddSent.vue';
import GddTable from './KontoOverview/GddTable.vue';
import GddAddWork from './KontoOverview/GddAddWork.vue';
// import GddWorkTable from './KontoOverview/GddWorkTable.vue';
import GddStatus from './KontoOverview/GddStatus.vue';
import GddSent from './KontoOverview/GddSent.vue';
import GddTable from './KontoOverview/GddTable.vue';
//import GddAddWork from './KontoOverview/GddAddWork.vue';
import GddAddWork2 from './KontoOverview/GddAddWork2.vue';
import GddWorkTable from './KontoOverview/GddWorkTable.vue';
export default {
name: "Overview",
components: {
GddStatus,
GddSent,
GddTable,
GddAddWork
//GddWorkTable
GddStatus,
GddSent,
GddTable,
//GddAddWork,
GddAddWork2,
GddWorkTable
},
created() {
this.$store.dispatch('accountBalance')

View File

@ -70,6 +70,15 @@
<base-input label="Beitrag">
<textarea class="form-control form-control-lg" rows="3" v-model="form.text" ></textarea>
</base-input>
<b-row class="form-group">
<label class="col-md-2 col-form-label form-control-label form-control-lg">Tätigkeit</label>
<b-col md="8">
<base-input placeholder="Tätigkeit" v-model="form.location" class="form-control-lg"></base-input>
</b-col>
<b-col md="2">
<base-input placeholder="Stunden" v-model="form.location" class="form-control-lg"></base-input>
</b-col>
</b-row>
<br>

View File

@ -0,0 +1,240 @@
<template>
<div>
<b-tabs content-class="mt-3" fill>
<b-tab :title="names.thisMonth" active>
<b-row>
<b-col cols="3">
<base-input label="Arbeitstunden" >
<b-form-input type="number" placeholder="23" />
</base-input>
<base-input label="Datum / Zeitraum" >
<flat-pickr class="form-control" v-model="date" :config="config"></flat-pickr>
</base-input>
</b-col>
<b-col cols="9">
<base-input label="Arbeitsreport">
<textarea class="form-control" rows="5" @focus="textFocus"></textarea>
</base-input>
</b-col>
</b-row>
<b-row>
<b-col><button class="btn btn-info text-right" @click.prevent="newWorkForm">weiteren Report hinzufügen</button></b-col>
<b-col>
<div class="text-right">
<button class="btn btn-info text-right" @click.prevent="submitForm2">save new Report</button>
</div>
</b-col>
</b-row>
</b-tab>
<b-tab :title="names.lastMonth">
<b-row>
<b-col cols="3">
<base-input label="Arbeitstunden" >
<b-form-input type="number" placeholder="23" />
</base-input>
<base-input label="Datum / Zeitraum" >
<flat-pickr class="form-control" v-model="date" :config="lastConfig"></flat-pickr>
</base-input>
</b-col>
<b-col cols="9">
<base-input label="Arbeitsreport">
<textarea class="form-control" rows="5" @focus="textFocus"></textarea>
</base-input>
</b-col>
</b-row>
<b-row>
<b-col><button class="btn btn-warning text-right" @click.prevent="newWorkForm">+ weiteren Report hinzufügen</button></b-col>
<b-col>
<div class="text-right">
<button class="btn btn-info text-right" @click.prevent="submitForm2">save new Report</button>
</div>
</b-col>
</b-row>
<hr>
<pre>Selected date is - {{date}}</pre>
<p>{{days.lastMonth}} Days in {{names.lastMonth}} </p>
<p>Du hast diesen Monat
{{stundenSumme>0 ? 'schon ' : 'noch keine' }}
{{stundenSumme>0 ? ''+ stundenSumme : '' }}
Stunden eingetragen</p>
</b-tab>
<b-tab :title="names.beforLastMonth">
<b-row>
<b-col cols="3">
<base-input label="Arbeitstunden" >
<b-form-input type="number" placeholder="23" />
</base-input>
<base-input label="Datum / Zeitraum" >
<flat-pickr class="form-control" v-model="date" :config="beforLastConfig"></flat-pickr>
</base-input>
</b-col>
<b-col cols="9">
<base-input label="Arbeitsreport">
<textarea class="form-control" rows="5" @focus="textFocus"></textarea>
</base-input>
</b-col>
</b-row>
<b-row>
<b-col><button class="btn btn-warning text-right" @click.prevent="newWorkForm">+ weiteren Report hinzufügen</button></b-col>
<b-col>
<div class="text-right">
<button class="btn btn-info text-right" @click.prevent="submitForm3">save new Report</button>
</div>
</b-col>
</b-row>
<hr>
<pre>Selected date is - {{date}}</pre>
<p>{{days.beforLastMonth}} Days in {{names.beforLastMonth}} </p>
<p>Du hast noch keine Einträge </p>
</b-tab>
</b-tabs>
</div>
</template>
<script>
import flatPickr from "vue-flatpickr-component"
import "flatpickr/dist/flatpickr.css"
export default {
name: 'GDDAddWork2',
components: {flatPickr},
data(){
return {
date: null,
config: {
altInput: false,
dateFormat: "d-m-Y",
minDate: this.$moment().startOf('month').format("DD.MM.YYYY"),
maxDate: this.$moment().format("DD.MM.YYYY"),
mode: 'range'
},
lastConfig:{
altInput: false,
dateFormat: "d-m-Y",
minDate: this.$moment().month(this.$moment().month()-1).startOf('month').format("DD.MM.YYYY"),
maxDate: this.$moment().month(this.$moment().month()-1).endOf('month').format("DD.MM.YYYY"),
mode: 'range'
},
beforLastConfig:{
altInput: false,
dateFormat: "d-m-Y",
minDate: this.$moment().month(this.$moment().month()-2).startOf('month').format("DD.MM.YYYY"),
maxDate: this.$moment().month(this.$moment().month()-2).endOf('month').format("DD.MM.YYYY"),
mode: 'range'
},
index: 0,
form:[],
stundenSumme: 0,
messages: [],
submitted:false,
days: {
thisMonth: this.$moment().month(this.$moment().month()).daysInMonth(),
lastMonth: this.$moment().month(this.$moment().month()-1).daysInMonth(),
beforLastMonth: this.$moment().month(this.$moment().month()-2).daysInMonth(),
},
names: {
thisMonth: this.$moment().month(this.$moment().month()).format('MMMM'),
lastMonth: this.$moment().month(this.$moment().month()-1).format('MMMM'),
beforLastMonth: this.$moment().month(this.$moment().month()-2).format('MMMM')
}
}
},
created() {
},
watch: {
$form: function(){
stunden(this.form)
}
},
methods: {
getTR(m,i){
console.log(m+"-"+i)
},
stunden(hour, i, mon) {
let n = 0
console.log("stunden(form)=>", hour)
console.log("stunden(i)=>", i)
console.log("stunden(mon)=>", mon)
console.log("this.stundenSumme start=> ", this.stundenSumme)
this.stundenSumme = 0
console.log("arr.length => ", this.form.length)
for (n; n < this.form.length; n++){
console.log(">arr[n]=> ",this.form[n])
if (this.form[n] > 0) {
this.stundenSumme += parseInt(this.form[n]) ;
}
}
this.messages.push({
id: this.index,
MonthsNumber: mon,
DaysNumber: i,
HoursNumber: hour,
DestinationText: '',
TextDecoded: ''
});
this.index++
console.log("this.stundenSumme ende=> ", this.stundenSumme)
},
addNewMessage: function(){
this.messages.push({
DaysNumber: '',
TextDecoded: ''
});
},
deleteNewMessage: function(event) {
console.log("deleteNewMessage:event) => ", event)
//console.log("deleteNewMessage:this.events.splice(this.event) => ", this.events.splice(this.event))
this.form.splice(event, null);
this.messages.splice(index, 1);
this.index--
},
submitForm: function(e) {
console.log(this.messages);
this.messages = [{ DaysNumber: '', TextDecoded: '' }];
this.submitted = true;
},
submitForm2() {
console.log("submitForm2 TODO")
},
submitForm3() {
console.log("submitForm3 TODO")
},
textFocus(){
console.log("textFocus TODO")
},
newWorkForm(){
console.log("newWorkForm TODO")
}
}
};
</script>

View File

@ -41,6 +41,9 @@
<script>
import axios from 'axios';
// axios.defaults.withCredentials = true. Dies ist erforderlich, da Axios standardmäßig keine Cookies weitergibt.
axios.defaults.withCredentials = true
export default {
name: 'GddTable',
data(){

View File

@ -1,20 +1,18 @@
<template>
<div>
<b-list-group >
<b-list-group-item v-for="item in items" :key="item.id">
<div class="d-flex w-100 justify-content-between" @click="toogle(item)" >
<b-icon v-if="item.status == 'submitted'" icon="clock-history" class="m-1" font-scale="2" style="color:orange"></b-icon>
<b-icon v-else icon="check2-all" class="m-1" font-scale="2" style="color:green" ></b-icon>
<h2 class="text-muted"><small>{{item.datel}}</small> - {{item.text}}</h2>
</div>
</b-list-group-item>
</b-list-group>
<b-list-group >
<b-list-group-item v-for="item in items" :key="item.id">
<div class="d-flex w-100 justify-content-between" @click="toogle(item)" >
<b-icon v-if="item.status == 'submitted'" icon="clock-history" class="m-1" font-scale="2" style="color:orange"></b-icon>
<b-icon v-else icon="check2-all" class="m-1" font-scale="2" style="color:green" ></b-icon>
<h2 class="text-muted"><small>{{item.datel}}</small> - {{item.text}}</h2>
</div>
</b-list-group-item>
</b-list-group>
</div>
</template>
<script>
export default {
name: 'GddWorkTable',
data(){
@ -22,8 +20,8 @@ export default {
form: [],
items: [
{ id: 1, text: 'Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '12.12.2020 14:04', status: 'submitted' },
{ id: 2, text: 'Larsen Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '22.06.2020 22:23', status: 'submitted' },
{ id: 3, text: 'Geneva Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '15.04.2020 12:55', status: 'confirmed' },
{ id: 2, text: 'Larsen Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '22.06.2020 22:23', status: 'submitted' },
{ id: 3, text: 'Geneva Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '15.04.2020 12:55', status: 'confirmed' },
{ id: 4, text: 'Community Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '10.03.2020 18:20', status: 'confirmed'}
]
};
@ -37,10 +35,7 @@ export default {
},
toogle(item) {
const temp = '<b-collapse visible v-bind:id="item.id">xxx <small class="text-muted">porta</small></b-collapse>'
}
},
watch: {
}
};
</script>

View File

@ -10,7 +10,7 @@
<b-col xl="5" lg="6" md="6" class="px-5">
<h1 class="text-light">Landing Gradido</h1>
<br>
<router-link to="/KontoOverview" class="font-weight-bold text-white mt-5"> LoginUser</router-link>
<router-link to="/overview" class="font-weight-bold text-white mt-5"> LoginUser</router-link>
<br><br>
<router-link to="/AdminOverview" class="font-weight-bold text-white mt-5"> Login Admin</router-link>
<br><br>

View File

@ -6,7 +6,7 @@
<sidebar-item
:link="{
name: 'Kontoübersicht',
path: 'KontoOverview',
path: '/overview',
icon: 'ni ni-tv-2 text-primary',
}"
>

View File

@ -8,7 +8,7 @@
expand="lg"
>
<div slot="brand" class="navbar-wrapper">
<b-navbar-brand to="/">
<b-navbar-brand to="/overview">
<img src="img/brand/white.png">
</b-navbar-brand>
</div>
@ -17,7 +17,7 @@
<div class="navbar-collapse-header">
<b-row>
<b-col cols="6" class="collapse-brand">
<router-link to="/">
<router-link to="/overview">
<img src="img/brand/green.png">
</router-link>
</b-col>

View File

@ -13,17 +13,17 @@
</div>
</b-col>
<b-col xl="6" class="col-xl-6">
<b-nav class="nav-footer justify-content-center justify-content-xl-end">
<b-nav-item ref="https://www.creative-tim.com" target="_blank">
<b-nav class="nav-footer justify-content-center justify-content-lg-end">
<b-nav-item ref="https://gradido.net/" target="_blank">
Gradido
</b-nav-item>
<b-nav-item href="https://www.creative-tim.com/presentation" target="_blank">
<b-nav-item href="https://gradido.net/" target="_blank">
{{$t('imprint')}}
</b-nav-item>
<b-nav-item href="http://blog.creative-tim.com" target="_blank">
<b-nav-item href="https://gradido.net/" target="_blank">
{{$t('privacy_policy')}}
</b-nav-item>
<b-nav-item href="https://www.creative-tim.com/license" target="_blank">
<b-nav-item href="https://gradido.net/" target="_blank">
{{$t('license')}}
</b-nav-item>
</b-nav>

View File

@ -4,7 +4,7 @@
<side-bar>
<template slot="links" >
<b-nav-item href="#!" to="/KontoOverview">
<b-nav-item href="#!" to="/overview">
<b-nav-text class="p-0 text-lg text-muted">Senden</b-nav-text>
</b-nav-item>
@ -58,7 +58,7 @@
import DashboardNavbar from './DashboardNavbar.vue';
import ContentFooter from './ContentFooter.vue';
import DashboardContent from './Content.vue';
// import DashboardContent from './Content.vue';
import { FadeTransition } from 'vue2-transitions';
export default {
@ -74,11 +74,7 @@
if (isWindows) {
initScrollbar('sidenav');
}
},
logout(){
//console.log("DashboardLayout.vue user logout() : ")
this.$store.dispatch('logout')
}
}
},
mounted() {
this.initScrollbar()

View File

@ -34,12 +34,12 @@
title-tag="a"
title-classes="nav-link pr-0">
<a href="#" class="nav-link pr-0" @click.prevent slot="title-container">
<b-media no-body class="align-items-center">
<span class="avatar avatar-sm rounded-circle">
<vue-qrcode :value="$store.state.email" />
</span>
<b-media no-body class="align-items-center">
<b-media-body class="ml-2 d-none d-lg-block">
<span class="avatar avatar-sm rounded-circle">
<vue-qrcode :value="$store.state.email" type="image/png"/>
</span>
<span class="mb-0 text-lg font-weight-bold">{{this.$store.state.email}}</span>
</b-media-body>
</b-media>
@ -50,7 +50,7 @@
<b-dropdown-header class="noti-title">
<h6 class="text-overflow m-0"> {{ $t('welcome') }}</h6>
</b-dropdown-header>
<b-dropdown-item href="#!" to="/KontoOverview">
<b-dropdown-item href="#!" to="/overview">
<i class="ni ni-single-02"></i>
<span>{{ $t('site.overview.account_overview')}}</span>
</b-dropdown-item>

View File

@ -348,7 +348,7 @@
<div class="pr-md-5">
<h1 class="text-light"> {{ $t('site.landing1.explore') }}</h1>
<p class="text-light">{{ $t('site.landing1.text') }}</p>
<router-link to="/user" class="font-weight-bold text-warning mt-5">{{ $t('site.landing1.link') }}</router-link>
<router-link to="/overview" class="font-weight-bold text-warning mt-5">{{ $t('site.landing1.link') }}</router-link>
</div>
</b-col>
</b-row>

View File

@ -4,7 +4,7 @@
<b-col lg="3" class="order-lg-2">
<div class="card-profile-image">
<a href="#">
<vue-qrcode :value="$store.state.email" />
<vue-qrcode :value="$store.state.email" type="image/png"/>
</a>
</div>
</b-col>