WIP Доработал работу полей в форме Основных данных
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
medical-form-wrapper(title="Основные данные" :change-edit="changeEdit")
|
medical-form-wrapper(title="Основные данные" :cancel="cancelEdit" :open-edit="openEdit" :save="saveChange")
|
||||||
.form-wrap.gap-24.w-full
|
.form-wrap.gap-24.w-full
|
||||||
.data-section.flex.flex-col.gap-4(v-for="data in configData")
|
.data-section.flex.flex-col.gap-4(v-for="data in configData")
|
||||||
.font-semibold.text-sm.whitespace-nowrap {{data.dataLabel}}
|
.font-semibold.text-sm.whitespace-nowrap {{data.dataLabel}}
|
||||||
@@ -8,15 +8,15 @@
|
|||||||
.avatar-field.flex.gap-3.items-center(v-if="field.type === 'avatar'")
|
.avatar-field.flex.gap-3.items-center(v-if="field.type === 'avatar'")
|
||||||
base-avatar(:size="40")
|
base-avatar(:size="40")
|
||||||
img(
|
img(
|
||||||
v-if="basicData[data.dataKey][field.key]"
|
v-if="basic[data.dataKey][field.key]"
|
||||||
:src="url + basicData[data.dataKey][field.key]"
|
:src="url + basic[data.dataKey][field.key]"
|
||||||
alt="AV"
|
alt="AV"
|
||||||
)
|
)
|
||||||
span(v-else) {{ avatar }}
|
span(v-else) {{ avatar }}
|
||||||
.replace-photo.font-medium.text-base.cursor-pointer(v-if="isEdit") Заменить фото
|
.replace-photo.font-medium.text-base.cursor-pointer(v-if="isEdit") Заменить фото
|
||||||
.select(v-else-if="field.type === 'select'")
|
.select(v-else-if="field.type === 'select'")
|
||||||
base-select(
|
base-select(
|
||||||
v-model="basicData[data.dataKey][field.key]"
|
v-model="basic[data.dataKey][field.key]"
|
||||||
:hide-dropdown-icon="!isEdit"
|
:hide-dropdown-icon="!isEdit"
|
||||||
:disable="!isEdit"
|
:disable="!isEdit"
|
||||||
:outlined="isEdit"
|
:outlined="isEdit"
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
base-input(
|
base-input(
|
||||||
v-else
|
v-else
|
||||||
:disabled="!isEdit"
|
:disabled="!isEdit"
|
||||||
v-model="basicData[data.dataKey][field.key]"
|
v-model="basic[data.dataKey][field.key]"
|
||||||
:type="field.type"
|
:type="field.type"
|
||||||
:width="300"
|
:width="300"
|
||||||
:standout="!isEdit"
|
:standout="!isEdit"
|
||||||
@@ -45,7 +45,7 @@ import {
|
|||||||
baseDataForm,
|
baseDataForm,
|
||||||
genderOptions,
|
genderOptions,
|
||||||
} from "@/pages/newMedicalCard/utils/configMedical";
|
} from "@/pages/newMedicalCard/utils/configMedical";
|
||||||
import { mapGetters } from "vuex";
|
import { mapGetters, mapState } from "vuex";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "BasicDataForm",
|
name: "BasicDataForm",
|
||||||
@@ -57,14 +57,25 @@ export default {
|
|||||||
configData: baseDataForm,
|
configData: baseDataForm,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: mapGetters({
|
computed: {
|
||||||
basicData: "getBasicData",
|
...mapGetters({
|
||||||
url: "getUrl",
|
url: "getUrl",
|
||||||
avatar: "getAvatar",
|
avatar: "getAvatar",
|
||||||
}),
|
}),
|
||||||
|
...mapState({
|
||||||
|
basic: (state) => state.medical.basicData,
|
||||||
|
}),
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
changeEdit() {
|
cancelEdit() {
|
||||||
this.isEdit = !this.isEdit;
|
this.isEdit = false;
|
||||||
|
this.$store.dispatch("returnInitData");
|
||||||
|
},
|
||||||
|
saveChange() {
|
||||||
|
this.isEdit = false;
|
||||||
|
},
|
||||||
|
openEdit() {
|
||||||
|
this.isEdit = true;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -74,7 +85,7 @@ export default {
|
|||||||
.select
|
.select
|
||||||
width: 324px
|
width: 324px
|
||||||
.avatar-field
|
.avatar-field
|
||||||
min-width: 310px
|
min-width: 324px
|
||||||
.replace-photo
|
.replace-photo
|
||||||
color: var(--btn-blue-color)
|
color: var(--btn-blue-color)
|
||||||
.input
|
.input
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.sidebar-wrapper.h-full.rounded.px-2.py-6.flex.flex-col
|
.sidebar-wrapper.h-full.rounded.px-2.py-6.flex.flex-col
|
||||||
.menu-item.text-base.px-4.py-3.rounded(
|
.menu-item.text-base.px-4.py-3.rounded.cursor-pointer(
|
||||||
v-for="item in menuItem",
|
v-for="item in menuItem",
|
||||||
:key="item.id",
|
:key="item.id",
|
||||||
:id="item.id",
|
:id="item.id",
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
span.font-bold.text-base {{title}}
|
span.font-bold.text-base {{title}}
|
||||||
q-icon.edit-button.text-lg.cursor-pointer(name="app:edit" v-if="!isEdit" @click="clickEditForm" size="20")
|
q-icon.edit-button.text-lg.cursor-pointer(name="app:edit" v-if="!isEdit" @click="clickEditForm" size="20")
|
||||||
slot
|
slot
|
||||||
.flex.h-fit.w-fit.gap-2
|
.flex.h-fit.w-fit.gap-2(v-if="isEdit")
|
||||||
base-button.text-base.font-semibold(v-if="isEdit" outlined :size="40" @click="cancelEdit") Отменить
|
base-button.text-base.font-semibold(outlined :size="40" @click="cancelEdit") Отменить
|
||||||
base-button.text-base.font-semibold(v-if="isEdit" :size="40" @click="saveChangeForm") Сохранить изменения
|
base-button.text-base.font-semibold(:size="40" @click="saveChangeForm") Сохранить изменения
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -21,7 +21,15 @@ export default {
|
|||||||
components: { BaseButton, BaseLoader },
|
components: { BaseButton, BaseLoader },
|
||||||
props: {
|
props: {
|
||||||
title: String,
|
title: String,
|
||||||
changeEdit: {
|
cancel: {
|
||||||
|
type: Function,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
save: {
|
||||||
|
type: Function,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
openEdit: {
|
||||||
type: Function,
|
type: Function,
|
||||||
default: () => {},
|
default: () => {},
|
||||||
},
|
},
|
||||||
@@ -35,18 +43,18 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
clickEditForm() {
|
clickEditForm() {
|
||||||
this.isEdit = true;
|
this.isEdit = true;
|
||||||
this.changeEdit();
|
this.openEdit();
|
||||||
},
|
},
|
||||||
cancelEdit() {
|
cancelEdit() {
|
||||||
this.isEdit = false;
|
this.isEdit = false;
|
||||||
this.changeEdit();
|
this.cancel();
|
||||||
},
|
},
|
||||||
saveChangeForm() {
|
saveChangeForm() {
|
||||||
this.isLoadingData = true;
|
this.isLoadingData = true;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.isLoadingData = false;
|
this.isLoadingData = false;
|
||||||
this.isEdit = false;
|
this.isEdit = false;
|
||||||
this.changeEdit();
|
this.save();
|
||||||
}, 2000);
|
}, 2000);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -101,11 +101,11 @@ export const baseDataForm = [
|
|||||||
|
|
||||||
export const genderOptions = [
|
export const genderOptions = [
|
||||||
{
|
{
|
||||||
|
id: "MALE",
|
||||||
label: "Мужской",
|
label: "Мужской",
|
||||||
value: "MALE",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
id: "WOMEN",
|
||||||
label: "Женский",
|
label: "Женский",
|
||||||
value: "WOMEN",
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,7 +1,32 @@
|
|||||||
import { fetchWrapper } from "@/shared/fetchWrapper";
|
import { fetchWrapper } from "@/shared/fetchWrapper";
|
||||||
|
import { genderOptions } from "@/pages/newMedicalCard/utils/configMedical";
|
||||||
|
|
||||||
const state = () => ({
|
const state = () => ({
|
||||||
medicalCard: {},
|
medicalCard: {},
|
||||||
|
basicData: {
|
||||||
|
basicData: {
|
||||||
|
last_name: null,
|
||||||
|
first_name: null,
|
||||||
|
patronymic: null,
|
||||||
|
gender: null,
|
||||||
|
birth_date: null,
|
||||||
|
photo: null,
|
||||||
|
},
|
||||||
|
registrationAddress: {
|
||||||
|
region: null,
|
||||||
|
city: null,
|
||||||
|
street: null,
|
||||||
|
house_number: null,
|
||||||
|
apartment_number: null,
|
||||||
|
},
|
||||||
|
residenceAddress: {
|
||||||
|
region: null,
|
||||||
|
city: null,
|
||||||
|
street: null,
|
||||||
|
house_number: null,
|
||||||
|
apartment_number: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
avatar: "",
|
avatar: "",
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -18,7 +43,9 @@ const getters = {
|
|||||||
last_name: person?.last_name,
|
last_name: person?.last_name,
|
||||||
first_name: person?.first_name,
|
first_name: person?.first_name,
|
||||||
patronymic: person?.patronymic,
|
patronymic: person?.patronymic,
|
||||||
gender: person?.gender,
|
gender:
|
||||||
|
person?.gender &&
|
||||||
|
genderOptions.find((el) => el.id === person?.gender),
|
||||||
birth_date: person?.birth_date
|
birth_date: person?.birth_date
|
||||||
? new Date(person?.birth_date)
|
? new Date(person?.birth_date)
|
||||||
: new Date(),
|
: new Date(),
|
||||||
@@ -55,7 +82,13 @@ const actions = {
|
|||||||
"medicalId"
|
"medicalId"
|
||||||
)}/detail/`
|
)}/detail/`
|
||||||
)
|
)
|
||||||
.then((res) => commit("setMedicalCard", res));
|
.then((res) => {
|
||||||
|
commit("setMedicalCard", res);
|
||||||
|
commit("setBasicData");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
returnInitData({ commit }) {
|
||||||
|
commit("setBasicData");
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -63,6 +96,9 @@ const mutations = {
|
|||||||
setMedicalCard(state, card) {
|
setMedicalCard(state, card) {
|
||||||
state.medicalCard = card;
|
state.medicalCard = card;
|
||||||
},
|
},
|
||||||
|
setBasicData(state) {
|
||||||
|
state.basicData = { ...this.getters.getBasicData };
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|||||||
Reference in New Issue
Block a user