vorstand can change group for jobkind
This commit is contained in:
		
							parent
							
								
									4af0d77584
								
							
						
					
					
						commit
						9bd854209e
					
				| 
						 | 
				
			
			@ -1,43 +1,62 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <v-card tile :loading="jobkindsLoading">
 | 
			
		||||
      <v-card-title>
 | 
			
		||||
        Dienstarten
 | 
			
		||||
        <v-spacer />
 | 
			
		||||
        <v-btn fab small color="primary" @click="add()">
 | 
			
		||||
          <v-icon>
 | 
			
		||||
            {{ plusIcon }}
 | 
			
		||||
          </v-icon>
 | 
			
		||||
        </v-btn>
 | 
			
		||||
      </v-card-title>
 | 
			
		||||
      <v-card-text>
 | 
			
		||||
        <v-card tile v-for="jobkind in jobkinds" :key="jobkind.id">
 | 
			
		||||
          <v-card-text class="black--text">
 | 
			
		||||
            <v-row class="ml-3 mr-3">
 | 
			
		||||
              {{ jobkind.name }}
 | 
			
		||||
              <v-spacer />
 | 
			
		||||
              <v-btn icon @click="editJobKind(jobkind)">
 | 
			
		||||
                <v-icon>
 | 
			
		||||
                  {{ editIcon }}
 | 
			
		||||
                </v-icon>
 | 
			
		||||
              </v-btn>
 | 
			
		||||
              <v-btn icon @click="deleteJobKind(jobkind)">
 | 
			
		||||
                <v-icon>
 | 
			
		||||
                  {{ deleteIcon }}
 | 
			
		||||
                </v-icon>
 | 
			
		||||
              </v-btn>
 | 
			
		||||
            </v-row>
 | 
			
		||||
          </v-card-text>
 | 
			
		||||
        </v-card>
 | 
			
		||||
      </v-card-text>
 | 
			
		||||
    </v-card>
 | 
			
		||||
    <v-data-table
 | 
			
		||||
      :items="jobkinds"
 | 
			
		||||
      :headers="header"
 | 
			
		||||
      :loading="jobkindsLoading || workgroupsLoading"
 | 
			
		||||
      :search="search"
 | 
			
		||||
    >
 | 
			
		||||
      <template v-slot:top>
 | 
			
		||||
        <v-toolbar flat color="white">
 | 
			
		||||
          <v-toolbar-title>
 | 
			
		||||
            Dienstarten
 | 
			
		||||
          </v-toolbar-title>
 | 
			
		||||
          <v-spacer />
 | 
			
		||||
          <v-text-field
 | 
			
		||||
            v-model="search"
 | 
			
		||||
            label="Suche Dienstart"
 | 
			
		||||
            single-line
 | 
			
		||||
            hide-details
 | 
			
		||||
          >
 | 
			
		||||
            <template v-slot:append>
 | 
			
		||||
              <v-icon>{{ searchIcon }}</v-icon>
 | 
			
		||||
            </template>
 | 
			
		||||
          </v-text-field>
 | 
			
		||||
          <v-btn fab small color="primary" @click="add()">
 | 
			
		||||
            <v-icon>{{ plusIcon }}</v-icon>
 | 
			
		||||
          </v-btn>
 | 
			
		||||
        </v-toolbar>
 | 
			
		||||
      </template>
 | 
			
		||||
      <template v-slot:item.workgroup="{ item }">
 | 
			
		||||
        {{ item.workgroup === null ? 'Alle' : item.workgroup.name }}
 | 
			
		||||
      </template>
 | 
			
		||||
      <template v-slot:item.actions="{item}">
 | 
			
		||||
        <v-icon x-small @click="editJobKind(item)">{{editIcon}}</v-icon>
 | 
			
		||||
        <v-icon x-small @click="deleteJobKind(item)">{{deleteIcon}}</v-icon>
 | 
			
		||||
      </template>
 | 
			
		||||
    </v-data-table>
 | 
			
		||||
    <v-dialog v-model="dialog">
 | 
			
		||||
      <v-card>
 | 
			
		||||
        <v-card-title>
 | 
			
		||||
          {{ title }}
 | 
			
		||||
        </v-card-title>
 | 
			
		||||
        <v-card-text>
 | 
			
		||||
          <v-text-field outlined label="Name" v-model="editedItem.name" />
 | 
			
		||||
          <v-row>
 | 
			
		||||
            <v-col>
 | 
			
		||||
              <v-text-field outlined label="Name" v-model="editedItem.name" />
 | 
			
		||||
            </v-col>
 | 
			
		||||
            <v-col>
 | 
			
		||||
              <v-autocomplete
 | 
			
		||||
                outlined
 | 
			
		||||
                return-object
 | 
			
		||||
                label="Arbeitsgruppe"
 | 
			
		||||
                v-model="editedItem.workgroup"
 | 
			
		||||
                item-text="name"
 | 
			
		||||
                item-value="id"
 | 
			
		||||
                :items="[...workgroups, { id: -1, name: 'Alle' }]"
 | 
			
		||||
              />
 | 
			
		||||
            </v-col>
 | 
			
		||||
          </v-row>
 | 
			
		||||
        </v-card-text>
 | 
			
		||||
        <v-card-actions>
 | 
			
		||||
          <v-spacer />
 | 
			
		||||
| 
						 | 
				
			
			@ -51,22 +70,42 @@
 | 
			
		|||
 | 
			
		||||
<script>
 | 
			
		||||
import { mapGetters, mapActions } from 'vuex'
 | 
			
		||||
import { mdiPencil, mdiDelete, mdiPlus } from '@mdi/js'
 | 
			
		||||
import { mdiPencil, mdiDelete, mdiPlus, mdiMagnify } from '@mdi/js'
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'JobKindManager',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      search: null,
 | 
			
		||||
      editIcon: mdiPencil,
 | 
			
		||||
      deleteIcon: mdiDelete,
 | 
			
		||||
      plusIcon: mdiPlus,
 | 
			
		||||
      searchIcon: mdiMagnify,
 | 
			
		||||
      dialog: false,
 | 
			
		||||
      header: [
 | 
			
		||||
        { text: 'Name', value: 'name' },
 | 
			
		||||
        { text: 'Zugewiesene Arbeitsgruppe', value: 'workgroup' },
 | 
			
		||||
        {
 | 
			
		||||
          text: 'Aktionen',
 | 
			
		||||
          value: 'actions',
 | 
			
		||||
          filterable: false,
 | 
			
		||||
          sortable: false
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      editedItem: {
 | 
			
		||||
        id: -1,
 | 
			
		||||
        name: null
 | 
			
		||||
        name: null,
 | 
			
		||||
        workgroup: {
 | 
			
		||||
          id: -1,
 | 
			
		||||
          name: null
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      defaultItem: {
 | 
			
		||||
        id: -1,
 | 
			
		||||
        name: null
 | 
			
		||||
        name: null,
 | 
			
		||||
        workgroup: {
 | 
			
		||||
          id: -1,
 | 
			
		||||
          name: null
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +114,8 @@ export default {
 | 
			
		|||
      getAllJobKinds: 'jkm/getAllJobKinds',
 | 
			
		||||
      addingJobKind: 'jkm/addJobKind',
 | 
			
		||||
      updateJobKind: 'jkm/updateJobKind',
 | 
			
		||||
      deletingJobKind: 'jkm/deleteJobKind'
 | 
			
		||||
      deletingJobKind: 'jkm/deleteJobKind',
 | 
			
		||||
      getAllWorkgroups: 'wm/getAllWorkgroups'
 | 
			
		||||
    }),
 | 
			
		||||
    add() {
 | 
			
		||||
      this.dialog = true
 | 
			
		||||
| 
						 | 
				
			
			@ -83,9 +123,13 @@ export default {
 | 
			
		|||
    editJobKind(jobkind) {
 | 
			
		||||
      this.dialog = true
 | 
			
		||||
      this.editedItem = Object.assign({}, jobkind)
 | 
			
		||||
      if (this.editedItem.workgroup === null) {
 | 
			
		||||
        this.editedItem.workgroup = Object.assign({}, this.defaultItem.workgroup)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    deleteJobKind(jobkind) {
 | 
			
		||||
      confirm("Willst du diese Dienstart wirklich löschen") && this.deletingJobKind(jobkind)
 | 
			
		||||
      confirm('Willst du diese Dienstart wirklich löschen') &&
 | 
			
		||||
        this.deletingJobKind(jobkind)
 | 
			
		||||
      this.close()
 | 
			
		||||
    },
 | 
			
		||||
    close() {
 | 
			
		||||
| 
						 | 
				
			
			@ -95,14 +139,20 @@ export default {
 | 
			
		|||
      }, 200)
 | 
			
		||||
    },
 | 
			
		||||
    save() {
 | 
			
		||||
      this.editedItem.id === -1 ? this.addingJobKind(this.editedItem) : this.updateJobKind(this.editedItem)
 | 
			
		||||
      if (this.editedItem.workgroup.id === -1)
 | 
			
		||||
        this.editedItem.workgroup = null
 | 
			
		||||
      this.editedItem.id === -1
 | 
			
		||||
        ? this.addingJobKind(this.editedItem)
 | 
			
		||||
        : this.updateJobKind(this.editedItem)
 | 
			
		||||
      this.close()
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapGetters({
 | 
			
		||||
      jobkinds: 'jkm/jobkinds',
 | 
			
		||||
      jobkindsLoading: 'jkm/jobkindsLoading'
 | 
			
		||||
      jobkindsLoading: 'jkm/jobkindsLoading',
 | 
			
		||||
      workgroups: 'wm/workgroups',
 | 
			
		||||
      workgroupsLoading: 'wm/workgroupLoading'
 | 
			
		||||
    }),
 | 
			
		||||
    title() {
 | 
			
		||||
      return this.editedItem.id === -1
 | 
			
		||||
| 
						 | 
				
			
			@ -112,6 +162,8 @@ export default {
 | 
			
		|||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    this.getAllJobKinds()
 | 
			
		||||
    this.getAllWorkgroups()
 | 
			
		||||
    console.log(this.jobkinds)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,15 +45,16 @@
 | 
			
		|||
            <v-row>
 | 
			
		||||
              <v-col>
 | 
			
		||||
                <v-autocomplete
 | 
			
		||||
                        chips
 | 
			
		||||
                        multiple
 | 
			
		||||
                  chips
 | 
			
		||||
                  multiple
 | 
			
		||||
                  v-model="editedItem.workgroups"
 | 
			
		||||
                  label="AG's"
 | 
			
		||||
                  outlined
 | 
			
		||||
                  :items="workgroups"
 | 
			
		||||
                  item-value="id"
 | 
			
		||||
                  item-text="name"
 | 
			
		||||
                  return-object></v-autocomplete>
 | 
			
		||||
                  return-object
 | 
			
		||||
                ></v-autocomplete>
 | 
			
		||||
              </v-col>
 | 
			
		||||
            </v-row>
 | 
			
		||||
          </v-container>
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +66,12 @@
 | 
			
		|||
        </v-card-actions>
 | 
			
		||||
      </v-card>
 | 
			
		||||
    </v-dialog>
 | 
			
		||||
    <v-data-table :headers="header" :items="users" :search="search" :loading="usersLoading || statusLoading">
 | 
			
		||||
    <v-data-table
 | 
			
		||||
      :headers="header"
 | 
			
		||||
      :items="users"
 | 
			
		||||
      :search="search"
 | 
			
		||||
      :loading="usersLoading || statusLoading"
 | 
			
		||||
    >
 | 
			
		||||
      <template v-slot:top>
 | 
			
		||||
        <v-toolbar flat color="white">
 | 
			
		||||
          <v-toolbar-title>Mitgliederliste</v-toolbar-title>
 | 
			
		||||
| 
						 | 
				
			
			@ -82,12 +88,12 @@
 | 
			
		|||
          </v-text-field>
 | 
			
		||||
        </v-toolbar>
 | 
			
		||||
      </template>
 | 
			
		||||
      <template v-slot:item.workgroups="{item}">
 | 
			
		||||
          <div>
 | 
			
		||||
            <v-chip v-for="group in item.workgroups" :key="group.id" x-small>
 | 
			
		||||
              {{group.name}}
 | 
			
		||||
            </v-chip>
 | 
			
		||||
          </div>
 | 
			
		||||
      <template v-slot:item.workgroups="{ item }">
 | 
			
		||||
        <div>
 | 
			
		||||
          <v-chip v-for="group in item.workgroups" :key="group.id" x-small>
 | 
			
		||||
            {{ group.name }}
 | 
			
		||||
          </v-chip>
 | 
			
		||||
        </div>
 | 
			
		||||
      </template>
 | 
			
		||||
      <template v-slot:item.statusgroup="{ item }">
 | 
			
		||||
        {{ computeStatus(item.statusgroup) }}
 | 
			
		||||
| 
						 | 
				
			
			@ -138,7 +144,7 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { mdiPencil, mdiMagnify, } from '@mdi/js'
 | 
			
		||||
import { mdiPencil, mdiMagnify } from '@mdi/js'
 | 
			
		||||
import { mapActions, mapGetters } from 'vuex'
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'UserManager',
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +159,7 @@ export default {
 | 
			
		|||
      header: [
 | 
			
		||||
        { text: 'Nachname', value: 'lastname' },
 | 
			
		||||
        { text: 'Vorname(n)', value: 'firstname' },
 | 
			
		||||
        { text: 'AG\'s', value: 'workgroups'},
 | 
			
		||||
        { text: "AG's", value: 'workgroups' },
 | 
			
		||||
        { text: 'Status', value: 'statusgroup' },
 | 
			
		||||
        { text: 'Stimmrecht', value: 'voting' },
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -196,9 +202,8 @@ export default {
 | 
			
		|||
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.$nextTick(function() {
 | 
			
		||||
        window.addEventListener('resize', this.getWindowWidth);
 | 
			
		||||
      window.addEventListener('resize', this.getWindowWidth)
 | 
			
		||||
      this.getWindowWidth()
 | 
			
		||||
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -211,9 +216,9 @@ export default {
 | 
			
		|||
      updateWorkgroups: 'usermanager/updateWorkgroups',
 | 
			
		||||
      getAllWorkgroups: 'wm/getAllWorkgroups'
 | 
			
		||||
    }),
 | 
			
		||||
     getWindowWidth() {
 | 
			
		||||
        this.isFulllineText = document.documentElement.clientWidth <= 750;
 | 
			
		||||
      },
 | 
			
		||||
    getWindowWidth() {
 | 
			
		||||
      this.isFulllineText = document.documentElement.clientWidth <= 750
 | 
			
		||||
    },
 | 
			
		||||
    close() {
 | 
			
		||||
      this.editUser = false
 | 
			
		||||
      setTimeout(() => {
 | 
			
		||||
| 
						 | 
				
			
			@ -226,8 +231,12 @@ export default {
 | 
			
		|||
        {},
 | 
			
		||||
        this.status.find(a => a.id == item.statusgroup)
 | 
			
		||||
      )
 | 
			
		||||
      this.editedItem.voting = Object.assign({},
 | 
			
		||||
      item.voting ? {value: true, text: 'ja'} : {value: false, text: 'nein'})
 | 
			
		||||
      this.editedItem.voting = Object.assign(
 | 
			
		||||
        {},
 | 
			
		||||
        item.voting
 | 
			
		||||
          ? { value: true, text: 'ja' }
 | 
			
		||||
          : { value: false, text: 'nein' }
 | 
			
		||||
      )
 | 
			
		||||
      this.clickItem(this.editedItem.statusgroup)
 | 
			
		||||
      this.editUser = true
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -255,8 +264,14 @@ export default {
 | 
			
		|||
      }
 | 
			
		||||
    },
 | 
			
		||||
    save() {
 | 
			
		||||
      this.updateStatusUser({username: this.editedItem.username, status: this.editedItem.statusgroup})
 | 
			
		||||
      this.updateVoting({username: this.editedItem.username, voting: this.editedItem.voting.value})
 | 
			
		||||
      this.updateStatusUser({
 | 
			
		||||
        username: this.editedItem.username,
 | 
			
		||||
        status: this.editedItem.statusgroup
 | 
			
		||||
      })
 | 
			
		||||
      this.updateVoting({
 | 
			
		||||
        username: this.editedItem.username,
 | 
			
		||||
        voting: this.editedItem.voting.value
 | 
			
		||||
      })
 | 
			
		||||
      this.updateWorkgroups(this.editedItem)
 | 
			
		||||
      this.close()
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -282,7 +297,7 @@ export default {
 | 
			
		|||
      }).length
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    allActiveUsers(){
 | 
			
		||||
    allActiveUsers() {
 | 
			
		||||
      return this.users.filter(a => {
 | 
			
		||||
        return a.statusgroup === 1
 | 
			
		||||
      }).length
 | 
			
		||||
| 
						 | 
				
			
			@ -297,7 +312,7 @@ export default {
 | 
			
		|||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
.fulllineText{
 | 
			
		||||
.fulllineText {
 | 
			
		||||
  flex-basis: unset;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@ const mutations = {
 | 
			
		|||
    console.log(exists)
 | 
			
		||||
    if (exists) {
 | 
			
		||||
      exists.name = jobkind.name
 | 
			
		||||
      exists.workgroup = jobkind.workgroup
 | 
			
		||||
    } else {
 | 
			
		||||
      state.jobkinds.push(jobkind)
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue