From 236402e01e25f6ffd9ca67ced01a297a80849ac6 Mon Sep 17 00:00:00 2001 From: megavrilinvv Date: Mon, 24 Apr 2023 12:14:12 +0300 Subject: [PATCH] =?UTF-8?q?[WIP]=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=B8=D0=B9=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=20=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=BB=D1=8C=D0=B3=D0=BE=D1=82=20=D0=BF=D1=80=D0=B8=20=D0=B2?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4=D0=B5=20=D1=82=D1=80=D0=B5=D1=85=20=D1=81?= =?UTF-8?q?=D0=B8=D0=BC=D0=B2=D0=BE=D0=BB=D0=BE=D0=B2,=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8F=D0=BB=20=D0=BC=D0=B5=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BC=D0=B8=20=D0=9E=D0=9C=D0=A1=20=D0=B8=20=D0=94=D0=9C=D0=A1?= =?UTF-8?q?,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=87=D0=B5?= =?UTF-8?q?=D0=BA=20=D0=B2=D1=8B=D0=B1=D1=80=D0=B0=D0=BD=D0=BD=D0=BE=D0=B9?= =?UTF-8?q?=20=D0=BB=D1=8C=D0=B3=D0=BE=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/base/BaseCategorySelection.vue | 30 ++++++++++-- src/components/base/BaseInput.vue | 2 + .../BasicDataForms/InsuranceForm.vue | 11 +++-- .../newMedicalCard/utils/medicalConfig.js | 46 +++++++++---------- 4 files changed, 60 insertions(+), 29 deletions(-) diff --git a/src/components/base/BaseCategorySelection.vue b/src/components/base/BaseCategorySelection.vue index 0b78313..acd1705 100644 --- a/src/components/base/BaseCategorySelection.vue +++ b/src/components/base/BaseCategorySelection.vue @@ -5,7 +5,9 @@ base-input( placeholder="Поиск", @keyup.enter="searchCategory", + @input="searchCategory", v-model="searchBenefit", + debounce="100", outlined, :width="300", iconLeft @@ -31,13 +33,13 @@ .buttons-group.flex.py-4.px-8.justify-center base-button.text-base.font-semibold(outlined, :size="40", @click="closeModalCategories") Отменить base-button.text-base.font-semibold( - v-if="selected.length > 0", + v-if="selected[0]?.id", :size="40", @click="saveCategories(selected[0])" ) Сохранить .right-side.flex.px-14.font-bold.relative q-icon(name="app:icon-cancel").text-sm.absolute.top-4.right-4.cursor-pointer(@click="closeModalCategories") - .flex.py-10.gap-y-6.flex-col(v-if="selected.length > 0 && selected[0]?.name !== 'Без льготы'") + .flex.py-10.gap-y-6.flex-col(v-if="selected[0]?.id && selected[0]?.name !== 'Без льготы'") .flex.text-6xl {{selected[0]?.name}} .flex.text-xm.flex-col.gap-y-3 Критерии: .flex.flex-col.gap-y-2 @@ -69,6 +71,7 @@ export default { closeModalCategories: Function, saveCategories: Function, showModal: Boolean, + basic: Object, }, data() { return { @@ -103,7 +106,28 @@ export default { showModal: { immediate: true, handler(newVal) { - if (!newVal) this.searchBenefit = ""; + if (!newVal) { + this.searchBenefit = ""; + } else { + this.selected.push( + this.benefitData.find((e) => e.name === "Без льготы") + ); + } + }, + }, + benefitData: { + immediate: true, + deep: true, + handler() { + if (this.benefitData && this.showModal && !this.basic.id) { + this.selected.push( + this.benefitData.find((e) => e.name === "Без льготы") + ); + } else if (this.basic.id) { + this.selected.push( + this.benefitData.find((e) => e.id === this.basic.id) + ); + } }, }, }, diff --git a/src/components/base/BaseInput.vue b/src/components/base/BaseInput.vue index 8caeb18..8c2e7a4 100644 --- a/src/components/base/BaseInput.vue +++ b/src/components/base/BaseInput.vue @@ -24,6 +24,7 @@ :square="square", :standout="standout" :accept="accept", + :debounce="debounce", hide-bottom-space ) template(v-slot:prepend, v-if="iconLeft") @@ -75,6 +76,7 @@ export default { default: "", }, mask: String, + debounce: [String, Number], width: Number, maxLength: Number, textColor: String, diff --git a/src/pages/newMedicalCard/components/BasicDataForms/InsuranceForm.vue b/src/pages/newMedicalCard/components/BasicDataForms/InsuranceForm.vue index fd5c3f8..f194858 100644 --- a/src/pages/newMedicalCard/components/BasicDataForms/InsuranceForm.vue +++ b/src/pages/newMedicalCard/components/BasicDataForms/InsuranceForm.vue @@ -57,6 +57,7 @@ :close-modal-categories="closeModalCategories", :save-categories="saveCategories", :show-modal="showModalCategories", + :basic="basic.benefit", @search="filterDataBenefit" ) .flex.font-medium.text-smm.absolute.top-11( @@ -81,7 +82,7 @@ q-icon.my-auto.text-lg.label-field.cursor-pointer( size="18px", name="app:icon-copy", - v-if="checkCopiedFields(field.key)", + v-if="checkCopiedFields(field.key, basic[insurance.insuranceKey])", @click="copyValue(basic[insurance.insuranceKey][field.key])" ) @@ -142,8 +143,12 @@ export default { localStorage.removeItem("searchBenefit", text); } }, - checkCopiedFields(key) { - return !this.isEdit && this.copiedFields.some((elem) => elem === key); + checkCopiedFields(key, item) { + return ( + !this.isEdit && + this.copiedFields.some((elem) => elem === key) && + item[key] + ); }, copyValue(text) { navigator.clipboard.writeText(text); diff --git a/src/pages/newMedicalCard/utils/medicalConfig.js b/src/pages/newMedicalCard/utils/medicalConfig.js index 0eed8f9..a739be9 100644 --- a/src/pages/newMedicalCard/utils/medicalConfig.js +++ b/src/pages/newMedicalCard/utils/medicalConfig.js @@ -292,29 +292,6 @@ export const baseInfoMenu = [ ]; export const baseInsuranceForm = [ - { - insuranceLabel: "ДМС", - insuranceKey: "insuranceDMS", - fields: [ - { - key: "series", - label: "Серия", - type: "text", - inputMask: "####", - }, - { - key: "number", - label: "Номер", - type: "text", - inputMask: "####-####-####", - }, - { - key: "photo", - label: "Фото ДМС", - type: "avatar", - }, - ], - }, { insuranceLabel: "ОМС", insuranceKey: "insuranceOMS", @@ -338,6 +315,29 @@ export const baseInsuranceForm = [ }, ], }, + { + insuranceLabel: "ДМС", + insuranceKey: "insuranceDMS", + fields: [ + { + key: "series", + label: "Серия", + type: "text", + inputMask: "####", + }, + { + key: "number", + label: "Номер", + type: "text", + inputMask: "####-####-####", + }, + { + key: "photo", + label: "Фото ДМС", + type: "avatar", + }, + ], + }, { insuranceLabel: "Категория льготы", insuranceKey: "benefit",