Merge branch 'dev' into 8406-crudModelUpdate
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
commit
0502abfca5
|
@ -35,6 +35,7 @@ const $props = defineProps({
|
|||
selectType: { type: Boolean, default: false },
|
||||
justInput: { type: Boolean, default: false },
|
||||
goTo: { type: String, default: '' },
|
||||
useUserRelation: { type: Boolean, default: true },
|
||||
});
|
||||
|
||||
const { t } = useI18n();
|
||||
|
@ -54,6 +55,26 @@ const defaultObservationType = computed(
|
|||
let savedNote = false;
|
||||
let originalText;
|
||||
|
||||
onBeforeRouteLeave((to, from, next) => {
|
||||
if (
|
||||
(newNote.text && !$props.justInput) ||
|
||||
(newNote.text !== originalText && $props.justInput)
|
||||
)
|
||||
quasar.dialog({
|
||||
component: VnConfirm,
|
||||
componentProps: {
|
||||
title: t('globals.unsavedPopup.title'),
|
||||
message: t('globals.unsavedPopup.subtitle'),
|
||||
promise: () => next(),
|
||||
},
|
||||
});
|
||||
else next();
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
nextTick(() => (componentIsRendered.value = true));
|
||||
});
|
||||
|
||||
function handleClick(e) {
|
||||
if (e.shiftKey && e.key === 'Enter') return;
|
||||
if ($props.justInput) confirmAndUpdate();
|
||||
|
@ -108,22 +129,6 @@ async function update() {
|
|||
);
|
||||
}
|
||||
|
||||
onBeforeRouteLeave((to, from, next) => {
|
||||
if (
|
||||
(newNote.text && !$props.justInput) ||
|
||||
(newNote.text !== originalText && $props.justInput)
|
||||
)
|
||||
quasar.dialog({
|
||||
component: VnConfirm,
|
||||
componentProps: {
|
||||
title: t('globals.unsavedPopup.title'),
|
||||
message: t('globals.unsavedPopup.subtitle'),
|
||||
promise: () => next(),
|
||||
},
|
||||
});
|
||||
else next();
|
||||
});
|
||||
|
||||
function fetchData([data]) {
|
||||
newNote.text = data?.notes;
|
||||
originalText = data?.notes;
|
||||
|
@ -137,16 +142,38 @@ const handleObservationTypes = (data) => {
|
|||
}
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
nextTick(() => (componentIsRendered.value = true));
|
||||
});
|
||||
|
||||
async function saveAndGo() {
|
||||
savedNote = false;
|
||||
await insert();
|
||||
await savedNote;
|
||||
router.push({ path: $props.goTo });
|
||||
}
|
||||
|
||||
function getUserFilter() {
|
||||
const newUserFilter = $props.userFilter ?? {};
|
||||
const userInclude = {
|
||||
relation: 'user',
|
||||
scope: {
|
||||
fields: ['id', 'nickname', 'name'],
|
||||
},
|
||||
};
|
||||
if (newUserFilter.include) {
|
||||
if (Array.isArray(newUserFilter.include)) {
|
||||
newUserFilter.include.push(userInclude);
|
||||
} else {
|
||||
newUserFilter.include = [userInclude, newUserFilter.include];
|
||||
}
|
||||
} else {
|
||||
newUserFilter.include = userInclude;
|
||||
}
|
||||
|
||||
if ($props.useUserRelation) {
|
||||
return {
|
||||
...newUserFilter,
|
||||
...$props.userFilter,
|
||||
};
|
||||
}
|
||||
return $props.filter;
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<Teleport
|
||||
|
@ -242,7 +269,7 @@ async function saveAndGo() {
|
|||
:url="$props.url"
|
||||
order="created DESC"
|
||||
:limit="0"
|
||||
:user-filter="userFilter"
|
||||
:user-filter="getUserFilter()"
|
||||
:filter="filter"
|
||||
auto-load
|
||||
ref="vnPaginateRef"
|
||||
|
@ -261,15 +288,15 @@ async function saveAndGo() {
|
|||
<QCardSection horizontal>
|
||||
<VnAvatar
|
||||
:descriptor="false"
|
||||
:worker-id="note.workerFk"
|
||||
:worker-id="note.user?.id"
|
||||
size="md"
|
||||
:title="note.worker?.user.nickname"
|
||||
:title="note.user?.nickname"
|
||||
/>
|
||||
<div class="full-width row justify-between q-pa-xs">
|
||||
<div>
|
||||
<VnUserLink
|
||||
:name="`${note.worker.user.name}`"
|
||||
:worker-id="note.worker.id"
|
||||
:name="`${note.user?.name}`"
|
||||
:worker-id="note.user?.id"
|
||||
/>
|
||||
<QBadge
|
||||
class="q-ml-xs"
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
<script setup>
|
||||
import { computed } from 'vue';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { useState } from 'src/composables/useState';
|
||||
import VnNotes from 'src/components/ui/VnNotes.vue';
|
||||
|
||||
const route = useRoute();
|
||||
const state = useState();
|
||||
const user = state.getUser();
|
||||
|
||||
const $props = defineProps({
|
||||
id: { type: [Number, String], default: null },
|
||||
|
@ -15,24 +12,13 @@ const $props = defineProps({
|
|||
const claimId = computed(() => $props.id || route.params.id);
|
||||
|
||||
const claimFilter = {
|
||||
fields: ['id', 'created', 'workerFk', 'text'],
|
||||
include: {
|
||||
relation: 'worker',
|
||||
scope: {
|
||||
fields: ['id', 'firstName', 'lastName'],
|
||||
fields: ['id', 'created', 'userFk', 'text'],
|
||||
include: {
|
||||
relation: 'user',
|
||||
scope: {
|
||||
fields: ['id', 'nickname', 'name'],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const body = {
|
||||
claimFk: claimId.value,
|
||||
workerFk: user.value.id,
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -43,7 +29,9 @@ const body = {
|
|||
:add-note="$props.addNote"
|
||||
:user-filter="claimFilter"
|
||||
:filter="{ where: { claimFk: claimId } }"
|
||||
:body="body"
|
||||
:body="{
|
||||
claimFk: claimId,
|
||||
}"
|
||||
v-bind="$attrs"
|
||||
style="overflow-y: auto"
|
||||
/>
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
<script setup>
|
||||
import VnNotes from 'src/components/ui/VnNotes.vue';
|
||||
import { useState } from 'src/composables/useState';
|
||||
const state = useState();
|
||||
const user = state.getUser();
|
||||
</script>
|
||||
<template>
|
||||
<VnNotes
|
||||
url="clientObservations"
|
||||
:add-note="true"
|
||||
:filter="{ where: { clientFk: $route.params.id } }"
|
||||
:body="{ clientFk: $route.params.id }"
|
||||
:body="{ clientFk: $route.params.id, userFk: user.id }"
|
||||
style="overflow-y: auto"
|
||||
:select-type="true"
|
||||
required
|
||||
|
|
|
@ -76,7 +76,7 @@ const columns = computed(() => [
|
|||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'workerFk',
|
||||
name: 'userFk',
|
||||
label: t('Author'),
|
||||
tooltip: t('Worker who made the last observation'),
|
||||
columnFilter: {
|
||||
|
@ -155,7 +155,7 @@ function exprBuilder(param, value) {
|
|||
return { [`c.${param}`]: value };
|
||||
case 'payMethod':
|
||||
return { [`c.payMethodFk`]: value };
|
||||
case 'workerFk':
|
||||
case 'userFk':
|
||||
return { [`co.${param}`]: value };
|
||||
case 'departmentFk':
|
||||
return { [`c.${param}`]: value };
|
||||
|
@ -229,10 +229,10 @@ function exprBuilder(param, value) {
|
|||
<DepartmentDescriptorProxy :id="row.departmentFk" />
|
||||
</span>
|
||||
</template>
|
||||
<template #column-workerFk="{ row }">
|
||||
<template #column-userFk="{ row }">
|
||||
<span class="link" @click.stop>
|
||||
{{ row.workerName }}
|
||||
<WorkerDescriptorProxy :id="row.workerFk" />
|
||||
<WorkerDescriptorProxy :id="row.userFk" />
|
||||
</span>
|
||||
</template>
|
||||
</VnTable>
|
||||
|
|
|
@ -18,7 +18,7 @@ const noteFilter = computed(() => {
|
|||
|
||||
const body = {
|
||||
vehicleFk: vehicleId.value,
|
||||
workerFk: user.value.id,
|
||||
userFk: user.value.id,
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
|
@ -1,28 +1,26 @@
|
|||
<script setup>
|
||||
import { useRoute } from 'vue-router';
|
||||
|
||||
import { useState } from 'src/composables/useState';
|
||||
import VnNotes from 'src/components/ui/VnNotes.vue';
|
||||
|
||||
const route = useRoute();
|
||||
const state = useState();
|
||||
const user = state.getUser();
|
||||
|
||||
const userFilter = {
|
||||
order: 'created DESC',
|
||||
|
||||
include: {
|
||||
relation: 'worker',
|
||||
scope: {
|
||||
fields: ['id', 'firstName', 'lastName'],
|
||||
include: {
|
||||
relation: 'user',
|
||||
scope: {
|
||||
fields: ['id', 'nickname', 'name'],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const body = { workerFk: route.params.id };
|
||||
const body = {
|
||||
workerFk: route.params.id,
|
||||
userFk: user.value.id,
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
Loading…
Reference in New Issue