307 lines
8.3 KiB
JavaScript
307 lines
8.3 KiB
JavaScript
import { fetchWrapper } from "@/shared/fetchWrapper";
|
|
import { genderOptions } from "@/pages/newMedicalCard/utils/medicalConfig";
|
|
import { getConfidantObject } from "@/pages/newMedicalCard/utils/gettersObjects";
|
|
|
|
const state = () => ({
|
|
medicalCard: {},
|
|
confidantData: [],
|
|
personFiltredList: [],
|
|
contactsData: {
|
|
phones: [],
|
|
emails: [],
|
|
networks: [],
|
|
},
|
|
basicData: {
|
|
personalData: {
|
|
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,
|
|
},
|
|
insuranceDMS: {
|
|
series: null,
|
|
number: null,
|
|
photo: null,
|
|
id: null,
|
|
organization: null,
|
|
},
|
|
insuranceOMS: {
|
|
series: null,
|
|
number: null,
|
|
photo: null,
|
|
id: null,
|
|
organization: null,
|
|
},
|
|
benefit: {
|
|
id: null,
|
|
discount: null,
|
|
name: null,
|
|
photo: null,
|
|
},
|
|
},
|
|
documents: {},
|
|
allergies: [],
|
|
avatar: "",
|
|
benefitData: [],
|
|
});
|
|
|
|
const getters = {
|
|
getBasicData(state, rootState) {
|
|
let registrationAddress =
|
|
state.medicalCard?.person?.address?.find((el) => el.registration_flg) ||
|
|
{};
|
|
let residenceAddress =
|
|
state?.medicalCard?.person?.address?.find((el) => el.residence_flg) || {};
|
|
let person = state.medicalCard.person;
|
|
let OMS = person?.insurance_policy?.find((e) => e.title === "OMS");
|
|
let DMS = person?.insurance_policy?.find((e) => e.title === "DMS");
|
|
return {
|
|
personalData: {
|
|
last_name: person?.last_name || "",
|
|
first_name: person?.first_name || "",
|
|
patronymic: person?.patronymic || "",
|
|
gender:
|
|
(person?.gender &&
|
|
genderOptions.find((el) => el.id === person?.gender)) ||
|
|
"",
|
|
birth_date: person?.birth_date ? new Date(person?.birth_date) : "",
|
|
photo: person?.photo
|
|
? {
|
|
photo: rootState.getUrl + person.photo,
|
|
file: null,
|
|
}
|
|
: {},
|
|
id: person?.id,
|
|
},
|
|
registrationAddress: {
|
|
region: registrationAddress?.region || "",
|
|
city: registrationAddress?.city || "",
|
|
street: registrationAddress?.street || "",
|
|
house_number: registrationAddress?.house_number || "",
|
|
apartment_number: registrationAddress?.apartment_number || "",
|
|
id: registrationAddress?.id || "",
|
|
},
|
|
residenceAddress: {
|
|
region: residenceAddress?.region || "",
|
|
city: residenceAddress?.city || "",
|
|
street: residenceAddress?.street || "",
|
|
house_number: residenceAddress?.house_number || "",
|
|
apartment_number: residenceAddress?.apartment_number || "",
|
|
id: residenceAddress?.id || "",
|
|
},
|
|
insuranceDMS: {
|
|
series: DMS?.series,
|
|
number: DMS?.number,
|
|
photo: DMS?.photo
|
|
? {
|
|
photo: rootState.getUrl + DMS?.photo,
|
|
file: null,
|
|
}
|
|
: {},
|
|
id: DMS?.id,
|
|
organization: DMS?.organization,
|
|
},
|
|
insuranceOMS: {
|
|
series: OMS?.series,
|
|
number: OMS?.number,
|
|
photo: OMS?.photo
|
|
? {
|
|
photo: rootState.getUrl + OMS?.photo,
|
|
file: null,
|
|
}
|
|
: {},
|
|
id: OMS?.id,
|
|
organization: OMS?.organization,
|
|
},
|
|
benefit: {
|
|
name: person?.benefit?.name,
|
|
id: person?.benefit?.id,
|
|
discount: person?.benefit?.discount,
|
|
photo: person?.photo_benefit
|
|
? {
|
|
photo: rootState.getUrl + person?.photo_benefit,
|
|
file: null,
|
|
}
|
|
: {},
|
|
},
|
|
};
|
|
},
|
|
getDocumentsData(state, rootState) {
|
|
let person = state.medicalCard?.person;
|
|
const passport = person?.identity_document.find(
|
|
(el) => el.kind === "PASSPORT"
|
|
);
|
|
return {
|
|
passport: {
|
|
id: passport?.id ?? "",
|
|
series: passport?.series ?? "",
|
|
number: passport?.number ?? "",
|
|
issued_by_org: passport?.issued_by_org ?? "",
|
|
issued_by_org_code: passport?.issued_by_org_code ?? "",
|
|
issued_by_date: passport?.issued_by_date
|
|
? new Date(passport?.issued_by_date)
|
|
: null,
|
|
photo: passport?.photo
|
|
? {
|
|
photo: rootState.getUrl + passport.photo,
|
|
file: null,
|
|
}
|
|
: {},
|
|
},
|
|
insurance_number: {
|
|
insurance_number: person?.insurance_number ?? "",
|
|
photo_insurance_number: person?.photo_insurance_number
|
|
? {
|
|
photo: rootState.getUrl + person.photo_insurance_number,
|
|
file: null,
|
|
}
|
|
: {},
|
|
},
|
|
tax_identification_number: {
|
|
tax_identification_number: person?.tax_identification_number ?? "",
|
|
photo_tax_identification_number: person?.photo_tax_identification_number
|
|
? {
|
|
photo: rootState.getUrl + person?.photo_tax_identification_number,
|
|
file: null,
|
|
}
|
|
: {},
|
|
},
|
|
};
|
|
},
|
|
getContactsData(state) {
|
|
let phones = state.medicalCard.person.contacts
|
|
.filter((el) => el.kind === "PHONE")
|
|
.map((el) => ({ ...el }));
|
|
let emails = state.medicalCard.person.contacts
|
|
.filter((el) => el.kind === "EMAIL")
|
|
.map((el) => ({ ...el }));
|
|
let networks = state.medicalCard.person.contacts
|
|
.filter((el) => el.kind !== "PHONE" && el.kind !== "EMAIL")
|
|
.map((el) => ({ ...el }));
|
|
return {
|
|
phones: [...phones],
|
|
emails: [...emails],
|
|
networks: [...networks],
|
|
};
|
|
},
|
|
getAllergiesData(state) {
|
|
return [...state.medicalCard.person.allergic.map((el) => ({ ...el }))];
|
|
},
|
|
getConfidantData(state) {
|
|
return [...state.medicalCard.confidant.map((el) => getConfidantObject(el))];
|
|
},
|
|
getAvatar(state) {
|
|
let lastName = state?.medicalCard?.person?.last_name;
|
|
let firstName = state?.medicalCard?.person?.first_name;
|
|
return lastName?.[0] + firstName?.[0];
|
|
},
|
|
};
|
|
|
|
const actions = {
|
|
getBenefitData({ commit }) {
|
|
fetchWrapper.get("general/benefit/").then((res) => {
|
|
commit("setBenefitData", res.results);
|
|
});
|
|
},
|
|
getBenefitDataSearch({ commit }) {
|
|
fetchWrapper
|
|
.get(`general/benefit/?name=${localStorage.getItem("searchBenefit")}`)
|
|
.then((res) => {
|
|
commit("setBenefitData", res.results);
|
|
});
|
|
},
|
|
|
|
getMedicalCardData({ commit }) {
|
|
fetchWrapper
|
|
.get(
|
|
`medical_card/medical_history/${localStorage.getItem(
|
|
"medicalId"
|
|
)}/detail/`
|
|
)
|
|
.then((res) => {
|
|
commit("setMedicalCard", res);
|
|
commit("setBasicData");
|
|
commit("setContactsData");
|
|
commit("setDocumentsData");
|
|
commit("setAllergiesData");
|
|
commit("setConfidantData");
|
|
});
|
|
},
|
|
getPersonsFiltredList() {
|
|
return fetchWrapper
|
|
.get(
|
|
`general/person/?last_name=${localStorage.getItem("searchConfidant")}`
|
|
)
|
|
.then((res) => res.results);
|
|
},
|
|
returnInitData({ commit }) {
|
|
commit("setBasicData");
|
|
commit("setContactsData");
|
|
commit("setAllergiesData");
|
|
commit("setConfidantData");
|
|
},
|
|
removeMedicalCardData({ commit, rootState }) {
|
|
fetchWrapper
|
|
.del(
|
|
`medical_card/medical_history/${localStorage.getItem(
|
|
"medicalId"
|
|
)}/delete/`
|
|
)
|
|
.then(() => {
|
|
rootState.routingHistory.back();
|
|
commit("setMedicalCard", {});
|
|
localStorage.removeItem("medicalId");
|
|
});
|
|
},
|
|
};
|
|
|
|
const mutations = {
|
|
setBenefitData(state, data) {
|
|
state.benefitData = data;
|
|
},
|
|
setMedicalCard(state, card) {
|
|
state.medicalCard = card;
|
|
},
|
|
setBasicData(state) {
|
|
state.basicData = { ...this.getters.getBasicData };
|
|
},
|
|
setContactsData(state) {
|
|
state.contactsData = { ...this.getters.getContactsData };
|
|
},
|
|
setDocumentsData(state) {
|
|
state.documents = { ...this.getters.getDocumentsData };
|
|
},
|
|
setAllergiesData(state) {
|
|
state.allergies = this.getters.getAllergiesData;
|
|
},
|
|
setConfidantData(state) {
|
|
state.confidantData = this.getters.getConfidantData;
|
|
},
|
|
setPersonFiltredList(state, persons) {
|
|
state.personFiltredList = persons;
|
|
},
|
|
};
|
|
|
|
export default {
|
|
state,
|
|
getters,
|
|
actions,
|
|
mutations,
|
|
};
|