salix-front/src/pages/Worker/Card/WorkerSummary.vue

149 lines
6.1 KiB
Vue

<script setup>
import { ref, onBeforeMount, computed } from 'vue';
import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n';
import { dashIfEmpty, toDate } from 'src/filters';
import VnLv from 'src/components/ui/VnLv.vue';
import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
import CardSummary from 'components/ui/CardSummary.vue';
import VnUserLink from 'src/components/ui/VnUserLink.vue';
import VnTitle from 'src/components/common/VnTitle.vue';
import RoleDescriptorProxy from 'src/pages/Account/Role/Card/RoleDescriptorProxy.vue';
import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
import { useAdvancedSummary } from 'src/composables/useAdvancedSummary';
import WorkerDescriptorMenu from './WorkerDescriptorMenu.vue';
const route = useRoute();
const { t } = useI18n();
const $props = defineProps({
id: {
type: Number,
default: 0,
},
});
const entityId = computed(() => $props.id || route.params.id);
const basicDataUrl = ref(null);
const advancedSummary = ref();
onBeforeMount(async () => {
advancedSummary.value = await useAdvancedSummary('Workers', entityId.value);
basicDataUrl.value = `#/worker/${entityId.value}/basic-data`;
});
</script>
<template>
<CardSummary
ref="summary"
:url="`Workers/summary`"
:filter="{ where: { id: entityId } }"
data-key="Worker"
>
<template #header="{ entity }">
<div>{{ entity.id }} - {{ entity.firstName }} {{ entity.lastName }}</div>
</template>
<template #menu="{ entity }">
<WorkerDescriptorMenu :worker="entity" :is-excluded="workerExcluded" />
</template>
<template #body="{ entity: worker }">
<QCard class="vn-one">
<VnTitle :url="basicDataUrl" :text="t('globals.summary.basicData')" />
<VnLv :label="t('globals.name')" :value="worker.user?.nickname" />
<VnLv :label="t('worker.list.department')">
<template #value>
<span class="link" v-text="worker.department?.department?.name" />
<DepartmentDescriptorProxy
:id="worker.department?.department?.id"
/>
</template>
</VnLv>
<VnLv :label="t('worker.summary.boss')" link>
<template #value>
<VnUserLink
v-if="worker.boss"
:name="dashIfEmpty(worker.boss?.name)"
:worker-id="worker.bossFk"
/>
</template>
</VnLv>
<VnLv :value="worker.mobileExtension">
<template #label>
{{ t('worker.summary.phoneExtension') }}
<VnLinkPhone :phone-number="worker.mobileExtension" />
</template>
</VnLv>
<VnLv :value="worker.phone">
<template #label>
{{ t('worker.summary.entPhone') }}
<VnLinkPhone :phone-number="worker.phone" />
</template>
</VnLv>
<VnLv :value="advancedSummary?.client?.phone">
<template #label>
{{ t('worker.summary.personalPhone') }}
<VnLinkPhone :phone-number="advancedSummary?.client?.phone" />
</template>
</VnLv>
</QCard>
<QCard class="vn-one" v-if="advancedSummary">
<VnTitle :url="basicDataUrl" :text="t('globals.summary.basicData')" />
<VnLv
:label="t('worker.summary.fiDueDate')"
:value="toDate(advancedSummary.fiDueDate)"
/>
<VnLv :label="t('worker.summary.sex')" :value="worker.sex" />
<VnLv
:label="t('worker.summary.seniority')"
:value="toDate(advancedSummary.seniority)"
/>
<VnLv :label="t('worker.summary.fi')" :value="advancedSummary.fi" />
<VnLv
:label="t('worker.summary.birth')"
:value="toDate(advancedSummary.birth)"
/>
<VnLv
:label="t('worker.summary.isFreelance')"
:value="advancedSummary.isFreelance"
/>
<VnLv
:label="t('worker.summary.isSsDiscounted')"
:value="advancedSummary.isSsDiscounted"
/>
<VnLv
:label="t('worker.summary.hasMachineryAuthorized')"
:value="advancedSummary.hasMachineryAuthorized"
/>
<VnLv
:label="t('worker.summary.isDisable')"
:value="advancedSummary.isDisable"
/>
</QCard>
<QCard class="vn-one">
<VnTitle :text="t('worker.summary.userData')" />
<VnLv :label="t('globals.name')" :value="worker?.user?.nickname" />
<VnLv
:label="t('globals.params.email')"
:value="worker.user?.emailUser?.email"
copy
/>
<VnLv :label="t('worker.summary.role')">
<template #value>
<span class="link">
{{ worker?.user?.role?.name }}
<RoleDescriptorProxy :id="worker?.user?.role?.id" />
</span>
</template>
</VnLv>
<VnLv :value="worker?.sip?.extension">
<template #label>
{{ t('worker.summary.sipExtension') }}
<VnLinkPhone :phone-number="worker?.sip?.extension" />
</template>
</VnLv>
<VnLv :label="t('queue')" :value="worker.sip?.queueMember?.queue" />
</QCard>
</template>
</CardSummary>
</template>