Refactor competence profile

This commit is contained in:
Daniel Egger 2022-10-07 17:08:55 +02:00
parent d42b32ef30
commit ebfeec4184
10 changed files with 64 additions and 37 deletions

View File

@ -22,7 +22,9 @@ const togglePerformanceCriteria = () => {
<div> <div>
<div :class="{ 'pb-8 border-b border-gray-500 mb-4': isOpen }" class="-mx-8 px-8"> <div :class="{ 'pb-8 border-b border-gray-500 mb-4': isOpen }" class="-mx-8 px-8">
<div class="mb-4 flex flex-row justify-between items-center"> <div class="mb-4 flex flex-row justify-between items-center">
<h2 class="text-large">{{ competence.title }}</h2> <h2 class="text-large">
{{ competence.competence_id }} {{ competence.title }}
</h2>
<button class="transition-transform" :class="{ 'rotate-180': isOpen }"> <button class="transition-transform" :class="{ 'rotate-180': isOpen }">
<it-icon-arrow-down <it-icon-arrow-down
class="h-10 w-10" class="h-10 w-10"

View File

@ -25,7 +25,9 @@ const props = withDefaults(defineProps<Props>(), {
<it-icon-smiley-neutral v-else></it-icon-smiley-neutral> <it-icon-smiley-neutral v-else></it-icon-smiley-neutral>
</div> </div>
<div class="pr-5 lg:mr-10 mb-4 lg:mb-0"> <div class="pr-5 lg:mr-10 mb-4 lg:mb-0">
<h4 class="text-bold mb-2">{{ criteria.title }}</h4> <h4 class="text-bold mb-2">
{{ criteria.competence_id }} {{ criteria.title }}
</h4>
<p> <p>
Lerneinheit: Lerneinheit:
<a class="link" :href="criteria.learning_unit.frontend_url"> <a class="link" :href="criteria.learning_unit.frontend_url">

View File

@ -72,7 +72,9 @@ function handleContinue() {
</p> </p>
<div class="mt-4 lg:mt-8 p-6 lg:p-12 border border-gray-500"> <div class="mt-4 lg:mt-8 p-6 lg:p-12 border border-gray-500">
<h2 class="heading-2">{{ currentQuestion.title }}</h2> <h2 class="heading-2">
{{ currentQuestion.competence_id }} {{ currentQuestion.title }}
</h2>
<div class="mt-4 lg:mt-8 flex flex-col lg:flex-row justify-between gap-6"> <div class="mt-4 lg:mt-8 flex flex-col lg:flex-row justify-between gap-6">
<button <button

View File

@ -6,7 +6,7 @@ import _ from "lodash";
import * as log from "loglevel"; import * as log from "loglevel";
import { computed } from "vue"; import { computed } from "vue";
log.debug("CompetencesMainView created"); log.debug("CompetenceIndexPage created");
const competenceStore = useCompetenceStore(); const competenceStore = useCompetenceStore();
@ -43,8 +43,11 @@ const countStatus = computed(() => {
</script> </script>
<template> <template>
<div class="container-large lg:mt-8"> <div class="container-large lg:mt-4">
<div class="flex flex-col lg:flex-row items-center justify-between mb-10"> <div
v-if="competenceStore.competenceProfilePage"
class="flex flex-col lg:flex-row items-center justify-between mb-10"
>
<h1>Kompetenzprofil</h1> <h1>Kompetenzprofil</h1>
<!-- <ItDropdownSelect--> <!-- <ItDropdownSelect-->
<!-- v-model="dropdownSelected"--> <!-- v-model="dropdownSelected"-->
@ -60,14 +63,17 @@ const countStatus = computed(() => {
class="py-4 flex flex-col lg:flex-row lg:items-center border-b border-gray-500 last:mb-8" class="py-4 flex flex-col lg:flex-row lg:items-center border-b border-gray-500 last:mb-8"
> >
<p class="mb-4 lg:mb-0 lg:w-1/4 inline-block lg:mr-5"> <p class="mb-4 lg:mb-0 lg:w-1/4 inline-block lg:mr-5">
{{ competence.title }} {{ competence.competence_id }} {{ competence.title }}
</p> </p>
<CompetenceProgress <CompetenceProgress
:status-count="competenceStore.calcStatusCount(competence.children)" :status-count="competenceStore.calcStatusCount(competence.children)"
></CompetenceProgress> ></CompetenceProgress>
</li> </li>
</ul> </ul>
<router-link to="/mediacenter/handlungsfeldlist" class="flex items-center"> <router-link
:to="`${competenceStore.competenceProfilePage?.frontend_url}/competences`"
class="flex items-center"
>
<span>Alle anschauen</span> <span>Alle anschauen</span>
<it-icon-arrow-right></it-icon-arrow-right> <it-icon-arrow-right></it-icon-arrow-right>
</router-link> </router-link>
@ -104,7 +110,10 @@ const countStatus = computed(() => {
</div> </div>
</li> </li>
</ul> </ul>
<router-link to="/mediacenter/handlungsfeldlist" class="flex items-center"> <router-link
:to="`${competenceStore.competenceProfilePage?.frontend_url}/criteria`"
class="flex items-center"
>
<span>Alle anschauen</span> <span>Alle anschauen</span>
<it-icon-arrow-right></it-icon-arrow-right> <it-icon-arrow-right></it-icon-arrow-right>
</router-link> </router-link>
@ -123,7 +132,10 @@ const countStatus = computed(() => {
<PerformanceCriteriaRow :criteria="criteria"></PerformanceCriteriaRow> <PerformanceCriteriaRow :criteria="criteria"></PerformanceCriteriaRow>
</li> </li>
</ul> </ul>
<router-link to="/mediacenter/handlungsfeldlist" class="flex items-center"> <router-link
:to="`${competenceStore.competenceProfilePage?.frontend_url}/criteria`"
class="flex items-center"
>
<span>Alle anschauen</span> <span>Alle anschauen</span>
<it-icon-arrow-right></it-icon-arrow-right> <it-icon-arrow-right></it-icon-arrow-right>
</router-link> </router-link>

View File

@ -11,7 +11,10 @@ const competenceStore = useCompetenceStore();
<template> <template>
<div class="container-large"> <div class="container-large">
<nav class="lg:mt-4"> <nav class="lg:mt-4">
<a class="block mb-8 cursor-pointer flex items-center" @click="router.go(-1)"> <a
class="block mb-8 cursor-pointer flex items-center"
:href="competenceStore.competenceProfilePage?.frontend_url"
>
<it-icon-arrow-left /> <it-icon-arrow-left />
<span>zurück</span></a <span>zurück</span></a
> >

View File

@ -3,7 +3,7 @@ import { useCompetenceStore } from "@/stores/competence";
import * as log from "loglevel"; import * as log from "loglevel";
import { onMounted } from "vue"; import { onMounted } from "vue";
log.debug("CometencesView created"); log.debug("CompetenceParentPage created");
const props = defineProps<{ const props = defineProps<{
competenceProfilePageSlug: string; competenceProfilePageSlug: string;

View File

@ -20,8 +20,11 @@ const shownCriteria = computed(() => {
<template> <template>
<div class="container-large"> <div class="container-large">
<nav> <nav class="lg:mt-4">
<a class="block mb-8 cursor-pointer flex items-center" @click="router.go(-1)"> <a
class="block mb-8 cursor-pointer flex items-center"
:href="`${competenceStore.competenceProfilePage?.frontend_url}`"
>
<it-icon-arrow-left /> <it-icon-arrow-left />
<span>zurück</span></a <span>zurück</span></a
> >

View File

@ -55,19 +55,19 @@ const router = createRouter({
{ {
path: "/competence/:competenceProfilePageSlug", path: "/competence/:competenceProfilePageSlug",
props: true, props: true,
component: () => import("@/pages/ComptencesView.vue"), component: () => import("@/pages/competence/CompetenceParentPage.vue"),
children: [ children: [
{ {
path: "", path: "",
component: () => import("@/pages/CompetencesMainView.vue"), component: () => import("@/pages/competence/CompetenceIndexPage.vue"),
}, },
{ {
path: "detail", path: "competences",
component: () => import("@/pages/CompetencesDetailView.vue"), component: () => import("@/pages/competence/CompetenceListPage.vue"),
}, },
{ {
path: "performancecriteria", path: "criteria",
component: () => import("@/pages/CompetencePerfomanceCriteriaView.vue"), component: () => import("@/pages/competence/PerformanceCriteriaPage.vue"),
}, },
], ],
}, },

View File

@ -373,7 +373,7 @@ def create_default_competence_profile():
competence_id="B4.2", competence_id="B4.2",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, dem Kunden die Vorschläge verständlich zu erläutern und die entsprechenden Informationspflichten zu erfüllen", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, dem Kunden die Vorschläge verständlich zu erläutern und die entsprechenden Informationspflichten zu erfüllen",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-lösung-lu-fahrzeug"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -381,7 +381,7 @@ def create_default_competence_profile():
competence_id="B4.3", competence_id="B4.3",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, auf Vorbehalte und/oder Fragen sachlich korrekt und (verhandlungs-)sicher einzugehen.", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, auf Vorbehalte und/oder Fragen sachlich korrekt und (verhandlungs-)sicher einzugehen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-lösung-lu-fahrzeug"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -389,7 +389,7 @@ def create_default_competence_profile():
competence_id="B4.4", competence_id="B4.4",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, nötige Anpassungen flexibel vorzunehmen.", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, nötige Anpassungen flexibel vorzunehmen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-lösung-lu-fahrzeug"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -397,7 +397,7 @@ def create_default_competence_profile():
competence_id="C1.1", competence_id="C1.1",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig durch eine Bestandesaufnahme der aktuellen Policen zu prüfen, ob die Leistungen dem Bedarf des Kunden entsprechen", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig durch eine Bestandesaufnahme der aktuellen Policen zu prüfen, ob die Leistungen dem Bedarf des Kunden entsprechen",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-lösung-lu-fahrzeug"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -405,7 +405,7 @@ def create_default_competence_profile():
competence_id="C1.2", competence_id="C1.2",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, den Kunden bedarfsgerechte Vorschläge für Anpassungen der Versicherungslösung zu unterbreiten (Up-Selling).", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, den Kunden bedarfsgerechte Vorschläge für Anpassungen der Versicherungslösung zu unterbreiten (Up-Selling).",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-lösung-lu-fahrzeug"
), ),
) )
@ -415,7 +415,7 @@ def create_default_competence_profile():
competence_id="B3.2", competence_id="B3.2",
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, eine Unterversicherung, eine Doppel- oder Überversicherung, einen fehlenden Versicherungsschutz und mögliches Optimierungspotential festzustellen.", title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, eine Unterversicherung, eine Doppel- oder Überversicherung, einen fehlenden Versicherungsschutz und mögliches Optimierungspotential festzustellen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-reisen" slug="versicherungsvermittlerin-lp-circle-lösung-lu-reisen"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -423,7 +423,7 @@ def create_default_competence_profile():
competence_id="B4.2", competence_id="B4.2",
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, dem Kunden die Vorschläge verständlich zu erläutern und die entsprechenden Informationspflichten zu erfüllen.", title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, dem Kunden die Vorschläge verständlich zu erläutern und die entsprechenden Informationspflichten zu erfüllen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-reisen" slug="versicherungsvermittlerin-lp-circle-lösung-lu-reisen"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -431,7 +431,7 @@ def create_default_competence_profile():
competence_id="B4.3", competence_id="B4.3",
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, auf Vorbehalte und/oder Fragen sachlich korrekt und (verhandlungs-)sicher einzugehen.", title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, auf Vorbehalte und/oder Fragen sachlich korrekt und (verhandlungs-)sicher einzugehen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-reisen" slug="versicherungsvermittlerin-lp-circle-lösung-lu-reisen"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -439,7 +439,7 @@ def create_default_competence_profile():
competence_id="B4.4", competence_id="B4.4",
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, nötige Anpassungen flexibel vorzunehmen.", title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, nötige Anpassungen flexibel vorzunehmen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-reisen" slug="versicherungsvermittlerin-lp-circle-lösung-lu-reisen"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -447,7 +447,7 @@ def create_default_competence_profile():
competence_id="C1.2", competence_id="C1.2",
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, den Kunden bedarfsgerechte Vorschläge für Anpassungen der Versicherungslösung zu unterbreiten (Up-Selling).", title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, den Kunden bedarfsgerechte Vorschläge für Anpassungen der Versicherungslösung zu unterbreiten (Up-Selling).",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-reisen" slug="versicherungsvermittlerin-lp-circle-lösung-lu-reisen"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -455,7 +455,7 @@ def create_default_competence_profile():
competence_id="C1.3", competence_id="C1.3",
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig aufgrund des Portfolios passende Zusatzprodukte anzubieten (Cross-Selling).", title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig aufgrund des Portfolios passende Zusatzprodukte anzubieten (Cross-Selling).",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-reisen" slug="versicherungsvermittlerin-lp-circle-lösung-lu-reisen"
), ),
) )
@ -465,7 +465,7 @@ def create_default_competence_profile():
competence_id="A1.2", competence_id="A1.2",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, geeignete Personen wie z.B. Garagisten, Architekten, Treuhänder auf die Vermittlung/Zusammenarbeit anzusprechen.", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, geeignete Personen wie z.B. Garagisten, Architekten, Treuhänder auf die Vermittlung/Zusammenarbeit anzusprechen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-abschluss-lu-fahrzeug"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -473,7 +473,7 @@ def create_default_competence_profile():
competence_id="A4.1", competence_id="A4.1",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, Kundendaten in Datenbanken (CRM) korrekt zu erfassen.", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, Kundendaten in Datenbanken (CRM) korrekt zu erfassen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-abschluss-lu-fahrzeug"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -481,7 +481,7 @@ def create_default_competence_profile():
competence_id="B4.6", competence_id="B4.6",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, Anträge korrekt auszufüllen.", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, Anträge korrekt auszufüllen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-abschluss-lu-fahrzeug"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -489,7 +489,7 @@ def create_default_competence_profile():
competence_id="C1.3", competence_id="C1.3",
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, aufgrund des Portfolios passende Zusatzprodukte anzubieten (Cross-Selling).", title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, aufgrund des Portfolios passende Zusatzprodukte anzubieten (Cross-Selling).",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-fahrzeug" slug="versicherungsvermittlerin-lp-circle-abschluss-lu-fahrzeug"
), ),
) )
@ -499,7 +499,7 @@ def create_default_competence_profile():
competence_id="B4.6", competence_id="B4.6",
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, Anträge korrekt auszufüllen.", title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, Anträge korrekt auszufüllen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-reisen" slug="versicherungsvermittlerin-lp-circle-abschluss-lu-reisen"
), ),
) )
PerformanceCriteriaFactory( PerformanceCriteriaFactory(
@ -507,6 +507,6 @@ def create_default_competence_profile():
competence_id="C3.1", competence_id="C3.1",
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, Kunden die Vorgehensweise für die Meldung des Schadens nachvollziehbar zu erläutern und sie bei Bedarf zu unterstützen.", title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, Kunden die Vorgehensweise für die Meldung des Schadens nachvollziehbar zu erläutern und sie bei Bedarf zu unterstützen.",
learning_unit=LearningUnit.objects.get( learning_unit=LearningUnit.objects.get(
slug="versicherungsvermittlerin-lp-circle-analyse-lu-reisen" slug="versicherungsvermittlerin-lp-circle-abschluss-lu-reisen"
), ),
) )

View File

@ -23,6 +23,9 @@ class CompetenceProfilePage(Page):
) )
super(CompetenceProfilePage, self).full_clean(*args, **kwargs) super(CompetenceProfilePage, self).full_clean(*args, **kwargs)
def get_frontend_url(self):
return f"/competence/{self.slug}"
@classmethod @classmethod
def get_serializer_class(cls): def get_serializer_class(cls):
return get_it_serializer_class( return get_it_serializer_class(