Files
Joris Slagter 791aebc346
Some checks failed
continuous-integration/drone/push Build is failing
Initial Nuxt frontend import
- Complete GGZ Ecademy Nuxt.js user portal
- Learning products browser and management
- Member management interface
- User authentication and roles
- Multi-language support (NL/EN)
- Vuex store for state management
- Component-based architecture
2025-12-02 17:48:48 +01:00

263 lines
6.6 KiB
Vue

<template>
<accordion-card :title="$t('learning.product_overview.administration')">
<v-row>
<v-col cols="12" sm="12" md="3">
<v-subheader class="txt--text font-weight-black in_the_picture"
>Van leden voor leden</v-subheader
>
</v-col>
<v-col cols="12" sm="12" md="9" class="mb-4 d-flex flex-column">
<div class="pb-0 mb-0 d-flex">
<v-switch
:disabled="!editMode"
inset
class="my-3 toggle"
v-model="for_members"
/>
</div>
</v-col>
</v-row>
<v-row>
<v-col cols="12" sm="12" md="3">
<v-subheader class="txt--text font-weight-black">{{
$t('learning.product_overview.owner')
}}</v-subheader>
</v-col>
<v-col cols="12" sm="12" md="6">
<v-text-field
v-model="owner"
:placeholder="$t('learning.product_overview.placeholder.description')"
:outlined="editMode"
:solo="!editMode"
:disabled="!editMode"
:flat="!editMode"
></v-text-field>
</v-col>
<v-col cols="12" sm="12" md="3"> </v-col>
</v-row>
<v-row>
<v-col cols="12" sm="12" md="3">
<v-subheader class="txt--text font-weight-black">{{
$t('learning.product_overview.partner')
}}</v-subheader>
</v-col>
<v-col cols="12" sm="12" md="6">
<v-text-field
v-model="partner"
:placeholder="$t('learning.product_overview.placeholder.description')"
:outlined="editMode"
:solo="!editMode"
:disabled="!editMode"
:flat="!editMode"
></v-text-field>
</v-col>
<v-col cols="12" sm="12" md="3"> </v-col>
</v-row>
<v-row>
<v-col cols="12" sm="12" md="3">
<v-subheader class="txt--text font-weight-black">
Leverancier
</v-subheader>
</v-col>
<v-col cols="12" sm="12" md="6">
<v-text-field
v-model="supplier"
:placeholder="$t('learning.product_overview.placeholder.description')"
:outlined="editMode"
:solo="!editMode"
:disabled="!editMode"
:flat="!editMode"
></v-text-field>
</v-col>
<v-col cols="12" sm="12" md="3"> </v-col>
</v-row>
<v-row>
<v-col cols="12" sm="12" md="3">
<v-subheader class="txt--text font-weight-black">{{
$t('learning.product_overview.contract_agreements')
}}</v-subheader>
</v-col>
<v-col cols="12" sm="12" md="6">
<quill-editor
v-model="contract_agreements"
:options="editorOption"
class="quill"
@focus="isEditorFocused = true"
@blur="isEditorFocused = false"
@change="onEditorChange()"
:class="{ focused: isEditorFocused }"
v-if="editMode"
/>
<span v-html="contract_agreements" v-else></span>
</v-col>
<v-col cols="12" sm="12" md="3"> </v-col>
</v-row>
<v-row>
<v-col cols="12" sm="12" md="3">
<v-subheader class="txt--text font-weight-black">
Prognose gebruik aantal leden
</v-subheader>
</v-col>
<v-col cols="12" sm="12" md="6">
<v-text-field
v-model="prognosis_members"
:outlined="editMode"
:solo="!editMode"
:disabled="!editMode"
:flat="!editMode"
></v-text-field>
</v-col>
<v-col cols="12" sm="12" md="3"> </v-col>
</v-row>
<v-row>
<v-col cols="12" sm="12" md="3">
<v-subheader class="txt--text font-weight-black">
Prognose gebruik aantal deelnemers
</v-subheader>
</v-col>
<v-col cols="12" sm="12" md="6">
<v-text-field
v-model="prognosis_attendees"
:outlined="editMode"
:solo="!editMode"
:disabled="!editMode"
:flat="!editMode"
></v-text-field>
</v-col>
<v-col cols="12" sm="12" md="3"> </v-col>
</v-row>
</accordion-card>
</template>
<script>
import accordionCard from '@/components/UI/AccordionCard/AccordionCard'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import { quillEditor } from 'vue-quill-editor'
export default {
components: {
accordionCard,
quillEditor,
},
props: {
editMode: {
type: Boolean,
default: false,
},
},
data() {
return {
isEditorFocused: false,
editorOption: {
modules: {
toolbar: [
[{ size: ['small', false, 'large'] }],
['bold', 'italic'],
[{ list: 'ordered' }, { list: 'bullet' }],
['link'],
],
},
},
}
},
computed: {
local() {
return this.$store.state.learning.local
},
owner: {
get() {
return this.local.owner || ''
},
set(value) {
this.$store.commit('learning/UPDATE_FIELD', {
field: 'owner',
value,
})
},
},
partner: {
get() {
return this.local.partner || ''
},
set(value) {
this.$store.commit('learning/UPDATE_FIELD', {
field: 'partner',
value,
})
},
},
supplier: {
get() {
return this.local.supplier || ''
},
set(value) {
this.$store.commit('learning/UPDATE_FIELD', {
field: 'supplier',
value,
})
},
},
contract_agreements: {
get() {
return this.local.contract_agreements || ''
},
set(value) {
this.$store.commit('learning/UPDATE_FIELD', {
field: 'contract_agreements',
value,
})
},
},
prognosis_members: {
get() {
return this.local.prognosis_members || ''
},
set(value) {
this.$store.commit('learning/UPDATE_FIELD', {
field: 'prognosis_members',
value,
})
},
},
prognosis_attendees: {
get() {
return this.local.prognosis_attendees || ''
},
set(value) {
this.$store.commit('learning/UPDATE_FIELD', {
field: 'prognosis_attendees',
value,
})
},
},
for_members: {
get() {
return this.local.for_members
},
set(value) {
this.$store.commit('learning/UPDATE_FIELD', {
field: 'for_members',
value,
})
},
},
},
methods: {
onEditorChange() {
if (!this.isEditorFocused) this.isEditorFocused = true
// console.log('editor change!', editor)
},
},
}
</script>