From 15e31ebcd757fcb488291807feed5e9a83378555 Mon Sep 17 00:00:00 2001 From: Daria Golova Date: Fri, 25 Aug 2023 14:26:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/base/BaseInput.vue | 1 + src/components/base/BaseInputDate.vue | 7 +- .../components/CalendarRecordCard.vue | 30 +- .../components/CreateEventForm.vue | 2 +- .../BasicDataForms/DocumentsForm.vue | 73 ++--- .../BasicDataForms/InsuranceForm.vue | 298 +++++------------- .../MedicalProtocolCreateModal.vue | 18 +- .../components/MedicalBasicDataWrapper.vue | 4 +- .../newMedicalCard/utils/medicalConfig.js | 2 +- src/store/modules/medicalCard.js | 28 +- 10 files changed, 164 insertions(+), 299 deletions(-) diff --git a/src/components/base/BaseInput.vue b/src/components/base/BaseInput.vue index 3c9bb6c..d17b07a 100644 --- a/src/components/base/BaseInput.vue +++ b/src/components/base/BaseInput.vue @@ -55,6 +55,7 @@ export default { default: false, }, type: { + type: String, default: "text", }, accept: { diff --git a/src/components/base/BaseInputDate.vue b/src/components/base/BaseInputDate.vue index 470827f..70ba445 100644 --- a/src/components/base/BaseInputDate.vue +++ b/src/components/base/BaseInputDate.vue @@ -147,7 +147,12 @@ export default { return date && date?.length === 10 ? date : null; }, defaultRule(val) { - return !val || moment(this.convertRUFormat(val)).isValid(); + return ( + !val || + moment( + this.checkFormat(val) ? this.convertRUFormat(val) : null + ).isValid() + ); }, closeCalendar() { this.calendarVisibility = false; diff --git a/src/pages/newCalendar/components/CalendarRecordCard.vue b/src/pages/newCalendar/components/CalendarRecordCard.vue index 7822534..5cdec80 100644 --- a/src/pages/newCalendar/components/CalendarRecordCard.vue +++ b/src/pages/newCalendar/components/CalendarRecordCard.vue @@ -64,15 +64,27 @@ export default { }, computed: { contacts() { - let contactList = this.record?.person?.contacts - ?.filter( - (elem) => elem.category === "PHONE" || elem.category === "EMAIL" - ) - ?.map((elem) => ({ - kind: elem.category, - icon: networks.find((item) => item.id === elem.category)?.icon, - value: elem.value, - })); + let contactList = []; + this.record?.person?.contacts?.find((elem) => { + if (elem.category === "PHONE") { + contactList.push({ + kind: elem?.category, + icon: networks?.find((item) => item.id === elem.category)?.icon, + value: elem?.value, + }); + return true; + } + }); + this.record?.person?.contacts?.find((elem) => { + if (elem.category === "EMAIL") { + contactList.push({ + kind: elem?.category, + icon: networks?.find((item) => item.id === elem.category)?.icon, + value: elem?.value, + }); + return true; + } + }); if (this.collapsedDisplayCondition) { contactList.length = 1; return contactList; diff --git a/src/pages/newCalendar/components/CreateEventForm.vue b/src/pages/newCalendar/components/CreateEventForm.vue index 180d70a..9921e06 100644 --- a/src/pages/newCalendar/components/CreateEventForm.vue +++ b/src/pages/newCalendar/components/CreateEventForm.vue @@ -57,7 +57,7 @@ export default { return { patient: {}, phone: "", - birth_date: {}, + birth_date: "", time: {}, patientData: patientData, currentStatus: patientData.statuses.find((e) => e.name === "Не принят"), diff --git a/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue b/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue index f620345..df7b46a 100644 --- a/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue +++ b/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue @@ -46,7 +46,7 @@ v-if="field.type === 'date'", v-model="docData[data.dataKey][field.key]", :name="data.dataKey + ':' + field.key", - @update:model-value="checkChangeDocData(data.dataKey)", + @update:model-value="checkChangeDocData", :readonly="!isEdit", :width="302", :mask="field?.inputMask", @@ -57,7 +57,7 @@ v-if="field.type === 'text'", v-model="docData[data.dataKey][field.key]", :name="data.dataKey + ':' + field.key", - @update:model-value="checkChangeDocData(data.dataKey)", + @update:model-value="checkChangeDocData", :readonly="!isEdit", :type="field.type", :width="302", @@ -105,7 +105,6 @@ export default { docData: null, isCheckChange: false, isLoadingData: true, - approvedPassportData: false, copiedFields: [ "series", "number", @@ -165,15 +164,13 @@ export default { .getValidationComponents() .filter((elem) => !this.personDataField.includes(elem.name)) .forEach((elem) => elem.resetValidation()); - this.approvedPassportData = true; return true; } - this.approvedPassportData = false; return defaultRule(val); }, removeImage(docKey, field) { this.docData[docKey][field] = {}; - this.isCheckChange = true; + this.checkChangeDocData(); }, copyValue(text) { navigator.clipboard.writeText(text); @@ -182,15 +179,7 @@ export default { return !this.isEdit && this.copiedFields.some((elem) => elem === key); }, cancelEdit() { - const { passport, insurance_number, tax_identification_number } = - this.initialDocData; - this.docData = { - passport: JSON.parse(JSON.stringify(passport)), - insurance_number: JSON.parse(JSON.stringify(insurance_number)), - tax_identification_number: JSON.parse( - JSON.stringify(tax_identification_number) - ), - }; + this.docData = this.destruct(this.initialDocData); this.isEdit = false; this.isCheckChange = false; this.$refs.documentForm.resetValidation(); @@ -198,10 +187,10 @@ export default { openEdit() { this.isEdit = true; }, - checkChangeDocData(key) { + checkChangeDocData() { this.isCheckChange = checkChangeData( - this.initialDocData?.[key], - this.docData?.[key] + this.destruct(this.initialDocData), + this.docData ); }, openModal(id) { @@ -231,7 +220,6 @@ export default { Object.keys(this.docData).forEach((elem) => { this.checkChangePhoto(elem, "attachments"); let newData = JSON.parse(JSON.stringify(this.docData[elem])); - console.log("prep", newData); newData.attachments = {}; if (!checkChangeData(this.initialDocData?.[elem], newData)) return; delete newData.id; @@ -243,24 +231,24 @@ export default { delete newData.issued_by_org_code; } delete newData.attachments; + Object.keys(this.docData[elem])?.forEach((key) => { + if (!this.docData[elem]?.[key]) delete newData?.[key]; + }); if (!this.initialDocData?.[elem]?.id) { - console.log("post", newData); newData.person_id = this.$store.state.medical?.basicData?.personalData?.id; - console.log("create", newData); - //request.push(this.createData("documents/", newData)); + request.push(this.createData("documents/", newData)); } else { - console.log("create", newData); - // request.push( - // this.updateData( - // `documents/${this.initialDocData?.[elem]?.id}`, - // newData - // ) - // ); + request.push( + this.updateData( + `documents/${this.initialDocData?.[elem]?.id}`, + newData + ) + ); } }); Promise.allSettled(request).then(() => { - this.getMedicalCardData(this.$route.params.id); + this.getMedicalDataById(this.$route.params.id); this.isEdit = false; this.isCheckChange = false; this.$refs.form?.resetValidation(); @@ -292,26 +280,25 @@ export default { return date ? date.split(".").reverse().join("-") : ""; }, ...mapActions({ - getMedicalCardData: "getMedicalCardDataById", + getMedicalDataById: "getMedicalDataById", }), + destruct(data) { + const { passport, insurance_number, tax_identification_number } = + JSON.parse(JSON.stringify(data)); + return { + passport: passport, + insurance_number: insurance_number, + tax_identification_number: tax_identification_number, + }; + }, }, watch: { initialDocData: { deep: true, immediate: true, handler(value) { - if (Object.keys(value).length) { - const { passport, insurance_number, tax_identification_number } = - value; - this.docData = { - passport: JSON.parse(JSON.stringify(passport)), - insurance_number: JSON.parse(JSON.stringify(insurance_number)), - tax_identification_number: JSON.parse( - JSON.stringify(tax_identification_number) - ), - }; - console.log(this.docData); - } else this.docData = this.initializationData; + if (Object.keys(value).length) this.docData = this.destruct(value); + else this.docData = this.initializationData; }, }, }, diff --git a/src/pages/newMedicalCard/components/BasicDataForms/InsuranceForm.vue b/src/pages/newMedicalCard/components/BasicDataForms/InsuranceForm.vue index f93daa9..c47f6cf 100644 --- a/src/pages/newMedicalCard/components/BasicDataForms/InsuranceForm.vue +++ b/src/pages/newMedicalCard/components/BasicDataForms/InsuranceForm.vue @@ -17,23 +17,27 @@ :style="{marginTop: field.label === 'Документы' ? '20px' : null}" ) .label-field.font-sm.text-sm.whitespace-nowrap {{`${field.label} :`}} - .avatar-field.flex.gap-3.items-center.h-10.w-10(v-if="field.type === 'attachments'") - .flex.w-10.h-10.relative(v-if="insuranceData[insurance.insuranceKey][field.key]?.photo") + .flex.gap-3.items-center.h-10.w-10( + v-if="field.type === 'photo'", + :style="{'min-width': field.label === 'Документы' ? '324px' : '302px'}" + ) + .flex.w-10.h-10.relative(v-if="insuranceData[insurance.insuranceKey]?.attachments?.photo") img.rounded.avatar.object-cover( - :src="insuranceData[insurance.insuranceKey][field.key]?.photo", + :src="insuranceData[insurance.insuranceKey]?.attachments?.photo", alt="AV" ) q-badge.delete( floating, v-if="isEdit", @click="removeImage(insurance?.insuranceKey, field?.key)", - rounded + rounded, + :style="{padding: 0}" ) - q-icon(name="app:icon-cancel", size="8px") + q-icon.cancel-icon(name="app:cancel-mini", size="16px") .replace-photo.font-medium.text-base.cursor-pointer( v-if="isEdit", @click="changeModal(insurance.insuranceKey)" - ) {{ insuranceData[insurance.insuranceKey][field.key]?.photo ? "Заменить фото" : "Добавить фото" }} + ) {{ insuranceData[insurance.insuranceKey]?.attachments?.photo ? "Заменить фото" : "Добавить фото" }} base-modal( v-if="insurance.insuranceKey === photoId" v-model="showModal", @@ -48,7 +52,7 @@ .category-select.flex.items-center.change.px-4.rounded {{selectCategory(basic[insurance.insuranceKey][field.key])}} q-btn.change.flex.w-7.h-9.rounded-md( v-if="isEdit", - @click="showModalCategories = true", + @click="openModalCategories", dense, padding="8px" ) @@ -75,28 +79,26 @@ span( :style="{color: 'var(--font-dark-blue-color)'}" ) {{"\xa0" + basic?.benefit[insurance?.discount] + "%"}} - .input-container.flex.flex-col.relative(v-if="field.type === 'text'") + .input-container.flex.flex-col.relative(v-else) base-input( v-model="insuranceData[insurance.insuranceKey][field.key]", - @update:model-value="checkChangeInput(insurance.insuranceKey)", - :mask="field?.inputMask", + @update:model-value="checkChangeInput", :readonly="!isEdit", - :type="field.type", size="M", :name="insurance.insuranceKey + ':' + field.key", - :rule="[(val) => checkFields(val, insurance.insuranceKey, field.key, field.rules)]" + :rule="[(val) => checkFields(val, insurance.insuranceKey, field.rules)]" ) q-icon.my-auto.text-lg.label-field.cursor-pointer.copy( size="18px", name="app:copy", - v-if="checkCopiedFields(field.key, basic[insurance.insuranceKey])", - @click="copyValue(basic[insurance.insuranceKey][field.key])" + v-if="checkCopiedFields(field.key, insuranceData[insurance.insuranceKey])", + @click="copyValue(insuranceData[insurance.insuranceKey][field.key])" )