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 5ba1975..70ba445 100644 --- a/src/components/base/BaseInputDate.vue +++ b/src/components/base/BaseInputDate.vue @@ -9,7 +9,7 @@ :readonly="readonly", :disable="disabled", mask="##.##.####", - :rules="[checkInput]", + :rules="[(val) => rule ? rule(val) : defaultRule(val)]", :lazy-rules="lazyRule", :item-aligned="itemAligned", no-error-icon, @@ -60,7 +60,8 @@ export default { width: Number, lazyRule: [Boolean, String], itemAligned: Boolean, - modelValue: Date, + rule: Function, + modelValue: String, placeholder: String, disabled: Boolean, label: String, @@ -79,27 +80,15 @@ export default { computed: { value: { get() { - if ( - moment(this.modelValue).isValid() && - typeof this.modelValue === "object" - ) { - this.changeInternalDate(moment(this.modelValue)); - return moment(this.modelValue).format("DD.MM.YYYY"); - } - if (moment(this.convertFormat(this.modelValue)).isValid()) { - this.changeInternalDate(moment(this.modelValue)); - return this.modelValue; - } - this.changeInternalDate(null); - return null; - }, - set(value) { - this.$emit( - "update:modelValue", - moment(this.convertFormat(value)).isValid() - ? new Date(moment(this.convertFormat(value))) + this.changeInternalDate( + moment(this.checkFormat(this.modelValue)).isValid() + ? moment(this.modelValue) : null ); + return this.convertISOFormat(this.modelValue); + }, + set(value) { + this.$emit("update:modelValue", this.convertRUFormat(value)); }, }, sizeVariable() { @@ -148,13 +137,22 @@ export default { }, }, methods: { - convertFormat(date) { - return date && date?.length === 10 - ? date.split(".").reverse().join("-") - : null; + convertISOFormat(date) { + return date?.split("-")?.reverse()?.join("."); }, - checkInput(val) { - return moment(this.convertFormat(val)).isValid(); + convertRUFormat(date) { + return date?.split(".")?.reverse()?.join("-"); + }, + checkFormat(date) { + return date && date?.length === 10 ? date : null; + }, + defaultRule(val) { + 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 5032fd6..df7b46a 100644 --- a/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue +++ b/src/pages/newMedicalCard/components/BasicDataForms/DocumentsForm.vue @@ -19,19 +19,20 @@ q-avatar( rounded, size="40px", - v-if="docData[data.dataKey][field.key]?.photo" + v-if="docData[data.dataKey]?.attachments?.photo" ) img.h-10.w-10.object-cover( - :src="docData[data.dataKey][field.key]?.photo", + :src="docData[data.dataKey]?.attachments?.photo", :alt="docData[data.dataKey][field.label]" ) q-badge.delete( floating, v-if="isEdit", rounded, - @click="removeImage(data?.dataKey, field?.key)" + @click="removeImage(data?.dataKey, field?.key)", + :style="{padding: 0}" ) - q-icon.icon-cancel(name="app: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="openModal(data.dataKey)", @@ -44,46 +45,30 @@ base-input-date( v-if="field.type === 'date'", v-model="docData[data.dataKey][field.key]", - :name="field.key", + :name="data.dataKey + ':' + field.key", @update:model-value="checkChangeDocData", :readonly="!isEdit", :width="302", :mask="field?.inputMask", - :rule="[(val) => !personDataField.includes(field.key) ? checkPassportFields(val, field.rules) : field.rules(val)]", - :autogrow="field.key === 'issued_by_org'", - size="M" + :rule="(val) => !personDataField.includes(data.dataKey + ':' + field.key) ? checkPassportFields(val, field.rules) : field.rules(val)", + size="M", ) base-input( - v-if="field.type === 'text' && field.key !== 'issued_by_org'", + v-if="field.type === 'text'", v-model="docData[data.dataKey][field.key]", - :name="field.key", + :name="data.dataKey + ':' + field.key", @update:model-value="checkChangeDocData", :readonly="!isEdit", :type="field.type", :width="302", :mask="field?.inputMask", - :rule="[(val) => !personDataField.includes(field.key) ? checkPassportFields(val, field.rules) : field.rules(val)]", + :rule="[(val) => !personDataField.includes(data.dataKey + ':' + field.key) ? checkPassportFields(val, field.rules) : field.rules(val, initialDocData?.[data.dataKey]?.id)]", size="M" ) .icon-copy.my-auto.text-lg.label-field.cursor-pointer( v-if="checkCopiedFields(field.key) && !!docData[data.dataKey][field.key]", @click="copyValue(docData[data.dataKey][field.key])" ) - base-textarea( - v-if="field.type === 'text' && field.key === 'issued_by_org'", - v-model="docData[data.dataKey][field.key]", - :name="field.key", - @update:model-value="checkChangeDocData", - :readonly="!isEdit", - :type="field.type", - :width="302", - :mask="field?.inputMask", - :rule="[(val) => !personDataField.includes(field.key) ? checkPassportFields(val, field.rules) : field.rules(val)]", - autogrow, - size="auto", - height="57px" - padding="10px 16px" - )