From 5f5507b50b59b8f302341f25e9079a83eda00bd1 Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Tue, 18 Apr 2023 18:26:38 +0300 Subject: [PATCH] =?UTF-8?q?WIP=20=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BasicDataForms/DocumentsForm.vue | 103 +++++++++++++++++- .../newMedicalCard/utils/medicalConfig.js | 2 +- src/shared/utils/changesObjects.js | 16 +-- 3 files changed, 107 insertions(+), 14 deletions(-) diff --git a/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue b/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue index 4ff43cb..bb3fce3 100644 --- a/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue +++ b/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue @@ -52,6 +52,9 @@ import BaseInput from "@/components/base/BaseInput.vue"; import BaseAvatar from "@/components/base/BaseAvatar.vue"; import BaseModal from "@/components/base/BaseModal.vue"; import BaseUploadPhoto from "@/components/base/BaseUploadPhoto.vue"; +import { checkChangeData } from "@/shared/utils/changesObjects.js"; +import { fetchWrapper } from "@/shared/fetchWrapper.js"; +import * as moment from "moment/moment"; export default { name: "DocumentsForm", components: { @@ -108,8 +111,7 @@ export default { this.isEdit = true; }, checkChangeDocData() { - this.isCheckChange = - JSON.stringify(this.docData) !== JSON.stringify(this.initialDocData); + this.isCheckChange = checkChangeData(this.initialDocData, this.docData); }, openModal(id) { this.photoId = id; @@ -120,7 +122,102 @@ export default { this.isCheckChange = true; }, saveChange() { - //console.log(this.docData); + this.updateDocData(); + }, + updateDocData() { + let { + passport, + insurance_number: insurance, + tax_identification_number: tax, + } = this.docData; + let documentsFormData = new FormData(); + let passportFormData = new FormData(); + let request = []; + if (insurance?.insurance_number) + documentsFormData.append( + "insurance_number", + insurance?.insurance_number + ); + if (tax?.tax_identification_number) + documentsFormData.append( + "tax_identification_number", + tax?.tax_identification_number + ); + if ( + insurance?.photo_insurance_number?.file && + insurance?.photo_insurance_number?.photo !== + this.initialDocData.insurance_number?.photo_insurance_number.photo + ) + documentsFormData.append( + "photo_insurance_number", + insurance?.photo_insurance_number?.file[0] + ); + if ( + tax?.photo_tax_identification_number?.file && + tax?.photo_tax_identification_number.photo !== + this.initialDocData.tax_identification_number + ?.photo_tax_identification_number.photo + ) + documentsFormData.append( + "photo_tax_identification_number", + tax?.photo_tax_identification_number?.file[0] + ); + Object.keys(passport).forEach((key) => { + if (key === "issued_by_date" && passport[key]) { + passportFormData.append( + "issued_by_date", + moment(passport.issued_by_date).format("YYYY-MM-DD") + ); + return; + } + if ( + key === "photo" && + passport?.photo?.file && + this.checkChangeField( + this.initialDocData?.passport?.photo, + passport?.photo, + "photo" + ) + ) { + passportFormData.append(key, passport[key]?.file[0]); + return; + } + if ( + key !== "photo" && + this.checkChangeField(this.initialDocData.passport, passport, key) + ) { + passportFormData.append(key, passport[key]); + return; + } + }); + if (!passport.id) + request.push( + this.sendData("general/identity_document/create/", passportFormData) + ); + else + request.push( + this.sendData( + `general/identity_document/${passport.id}/update/`, + passportFormData + ) + ); + request.push( + this.sendData( + `general/person/${this.$store.state.medical?.basicData?.personalData?.id}/update/`, + documentsFormData + ) + ); + Promise.allSettled(request).then(() => { + this.$store.dispatch("getMedicalCardData"); + this.isEdit = false; + this.isCheckChange = false; + }); + }, + checkChangeField(initObj, updatedObj, field) { + return initObj[field] !== updatedObj[field]; + }, + async sendData(url, body) { + return await fetchWrapper.post(url, body, "formData"); }, }, watch: { diff --git a/src/pages/newMedicalCard/utils/medicalConfig.js b/src/pages/newMedicalCard/utils/medicalConfig.js index 306ced4..ed57f4f 100644 --- a/src/pages/newMedicalCard/utils/medicalConfig.js +++ b/src/pages/newMedicalCard/utils/medicalConfig.js @@ -363,7 +363,7 @@ export const documentForm = [ { key: "tax_identification_number", label: "Номер ИНН", - type: "number", + type: "text", inputMask: "############", }, { diff --git a/src/shared/utils/changesObjects.js b/src/shared/utils/changesObjects.js index 45a57eb..93ba76f 100644 --- a/src/shared/utils/changesObjects.js +++ b/src/shared/utils/changesObjects.js @@ -20,14 +20,10 @@ export function getObjectChangeField(objInit, objUpdate) { return resultObj; } -export function checkChangeData(dataInit, dataChange) { - let initData = JSON.stringify(dataInit); - let changeData = JSON.stringify(dataChange); - return initData !== changeData; - //Алексей, какого черта!? - /*if (initData !== changeData) { - return true; - } else { - return false; - }*/ +export function checkTypeofObject(obj) { + return typeof obj === "object" && obj !== "null"; +} + +export function checkChangeData(dataInit, dataChange) { + return JSON.stringify(dataInit) !== JSON.stringify(dataChange); }