[WIP] Добавил notes и их апдейт, поправил стили мед карты

This commit is contained in:
megavrilinvv
2022-12-15 19:03:51 +03:00
parent 506ffbfd9d
commit 019b3a6a51
8 changed files with 107 additions and 40 deletions

View File

@@ -6,7 +6,7 @@
span.text-sm.font-semibold.whitespace-nowrap {{settings[section].title}} span.text-sm.font-semibold.whitespace-nowrap {{settings[section].title}}
.flex.items-center.gap-x-8 .flex.items-center.gap-x-8
base-button( base-button(
v-if="isChange && (this.isData || this.isAddress || this.isAttachments)", v-if="isChange && (this.isData || this.isAddress || this.isAttachments || this.isNotes)",
@click.stop="changeDoc", @click.stop="changeDoc",
confirm, confirm,
rounded, rounded,
@@ -15,7 +15,7 @@
) )
.icon-ok.text-xsm(class="pt-[3px]") .icon-ok.text-xsm(class="pt-[3px]")
.edit.cursor-pointer( .edit.cursor-pointer(
v-if="!isChange && (this.isData || this.isAddress || this.isAttachments)", v-if="!isChange && (this.isData || this.isAddress || this.isAttachments || this.isNotes)",
@click="changeClientData" @click="changeClientData"
) )
.icon-edit.text-base.mt-2px .icon-edit.text-base.mt-2px
@@ -54,24 +54,15 @@
v-click-outside="closeAddDocs" v-click-outside="closeAddDocs"
) )
table-create-package-doc(v-if="isOpenPackage") table-create-package-doc(v-if="isOpenPackage")
table-adding-new-additional(
v-if="section === 'additional' && isOpenAddingWrap"
:new-additional-data="additionalData",
:add-new-additional="addDocAdditional",
:save-additional="saveDocs"
)
transition(name="section", mode="out-in") transition(name="section", mode="out-in")
.flex.justify-center.items-center( .flex.justify-center.items-center(
v-if="sectionDataPresence", v-if="sectionDataPresence",
:style="{height: settings[section].voidHeight + 'px'}", :style="{height: settings[section].voidHeight + 'px'}",
) )
base-loader( base-loader(:width="60", :height="60")
:width="60",
:height="60"
)
.section-body.flex.flex-col.gap-y-4.px-4( .section-body.flex.flex-col.gap-y-4.px-4(
v-else-if="(this.isData || this.isAddress || this.isAttachments) && !isChange", v-else-if="(this.isData || this.isAddress || this.isAttachments || this.isNotes) && !isChange",
:class="{'pt-3 pb-4': isData || isAddress || isAttachments}", :class="{'pt-3 pb-4': isData || isAddress || isAttachments || isNotes}",
:style="{height: settings[section].voidHeight + 'px'}" :style="{height: settings[section].voidHeight + 'px'}"
) )
.flex.flex-col.gap-y-4 .flex.flex-col.gap-y-4
@@ -86,14 +77,17 @@
) )
.flex(v-if="item.name && !isChange") .flex(v-if="item.name && !isChange")
span.text-sm.w-fit {{item.title}} span.text-sm.w-fit {{item.title}}
.flex.items-center(v-if="item.title") .flex.items-center(v-if="item.title && section !== 'additional'")
.flex.gap-x-2.items-center .flex.gap-x-2.items-center
img(:src="iconDictionary[item?.document?.substr(item.document.lastIndexOf('.') + 1)]") img(:src="iconDictionary[item?.document?.substr(item.document.lastIndexOf('.') + 1)]")
span.text-sm {{item.title}} span.text-sm {{item.title}}
span.text-sm(v-if="item.document") {{`.${item?.document?.substr(item.document.lastIndexOf(".") + 1)}`}} span.text-sm(v-if="item.document") {{`.${item?.document?.substr(item.document.lastIndexOf(".") + 1)}`}}
.flex.flex-col(v-if="section === 'additional' && !isChange", class="gap-y-1.5")
.title-section.text-xxs.font-semibold {{item.title}}
span.text-smm {{item.description}}
.section-body.flex.flex-col.gap-y-4.px-4( .section-body.flex.flex-col.gap-y-4.px-4(
v-else-if="(this.isData || this.isAddress || this.isAttachments) && isChange", v-else-if="(this.isData || this.isAddress || this.isAttachments || this.isNotes) && isChange",
:class="{'pt-3 pb-4': isData || isAddress || isAttachments}", :class="{'pt-3 pb-4': isData || isAddress || isAttachments || isNotes}",
) )
.flex.flex-col.gap-y-4 .flex.flex-col.gap-y-4
.flex.flex-col(v-for="(item, key) in sectionInfo", class="gap-y-1.5") .flex.flex-col(v-for="(item, key) in sectionInfo", class="gap-y-1.5")
@@ -102,7 +96,7 @@
) {{settings[section].options[key]}} ) {{settings[section].options[key]}}
span.title-section.font-semibold.text-xs(v-if="item.header") {{item.header}} span.title-section.font-semibold.text-xs(v-if="item.header") {{item.header}}
client-detail-input.text-sm.w-max-fit( client-detail-input.text-sm.w-max-fit(
v-if="section!=='docs' && isChange && settings[section].options[key] !== 'Дата выдачи'", v-if="section!=='docs' && section!=='additional' && isChange && settings[section].options[key] !== 'Дата выдачи'",
:style="{fontWeight:key === 'numba'&&600}", :style="{fontWeight:key === 'numba'&&600}",
v-model:value="sectionInfo[key]", v-model:value="sectionInfo[key]",
:rows="section ==='pass' ? 2 : 1", :rows="section ==='pass' ? 2 : 1",
@@ -110,7 +104,7 @@
:sharp="settings[section].sharps[key] && section === 'pass' ? settings[section].sharps[key] : ''" :sharp="settings[section].sharps[key] && section === 'pass' ? settings[section].sharps[key] : ''"
) )
base-input-date.input.text-sm( base-input-date.input.text-sm(
v-else-if="isChange && section !== 'docs'", v-else-if="isChange && section !== 'docs' && section !== 'additional'",
v-model:value="sectionInfo.issued_by_date" v-model:value="sectionInfo.issued_by_date"
) )
.copy.icon-copy.cursor-pointer( .copy.icon-copy.cursor-pointer(
@@ -125,7 +119,13 @@
.text-separation.span.text-sm.separator.px-2 или .text-separation.span.text-sm.separator.px-2 или
.flex.flex-col.gap-y-4(v-if="section === 'addresses' && isChange") .flex.flex-col.gap-y-4(v-if="section === 'addresses' && isChange")
client-detail-section-address(:dope-address="dopeAddress") client-detail-section-address(:dope-address="dopeAddress")
.flex.items-center(v-if="item.title") .flex.flex-col.gap-y-2(v-if="section === 'additional' && isChange")
.title-section.text-xxs.font-semibold {{item.title}}
client-detail-input.text-sm.w-max-fit(
:style="{fontWeight:key === 'numba'&&600}",
v-model:value="sectionInfo[key].description"
)
.flex.items-center(v-if="item.title && section !== 'additional'")
.icon-cancel.cancel.cursor-pointer.pr-3.text-xsm( .icon-cancel.cancel.cursor-pointer.pr-3.text-xsm(
v-if="isChange", v-if="isChange",
:id="item.id", :id="item.id",
@@ -176,14 +176,17 @@ export default {
}, },
props: { props: {
saveNewDoc: Function, saveNewDoc: Function,
createNote: Function,
sectionInfo: Object, sectionInfo: Object,
section: String, section: String,
deleteDoc: Function, deleteDoc: Function,
updateDocument: Function, updateDocument: Function,
updateAddress: Function, updateAddress: Function,
updateNotes: Function,
lackData: Boolean, lackData: Boolean,
lackAddress: Boolean, lackAddress: Boolean,
lackAttachments: Boolean, lackAttachments: Boolean,
lackNotes: Boolean,
dopeAddress: Object, dopeAddress: Object,
createAddress: Function, createAddress: Function,
createDocument: Function, createDocument: Function,
@@ -205,6 +208,7 @@ export default {
isData: true, isData: true,
isAddress: true, isAddress: true,
isAttachments: true, isAttachments: true,
isNotes: true,
iconDictionary: { iconDictionary: {
doc: wordIcon, doc: wordIcon,
docx: wordIcon, docx: wordIcon,
@@ -229,7 +233,7 @@ export default {
: ""; : "";
}, },
sectionDataPresence() { sectionDataPresence() {
if (this.section === "docs") { if (this.section === "docs" || this.section === "additional") {
return this.sectionInfo[0]?.initialization; return this.sectionInfo[0]?.initialization;
} }
return Object.keys(this.sectionInfo).length === 0; return Object.keys(this.sectionInfo).length === 0;
@@ -246,6 +250,8 @@ export default {
this.isAttachments = true; this.isAttachments = true;
this.showModal = true; this.showModal = true;
this.isOpenAddDoc = true; this.isOpenAddDoc = true;
} else if (this.section === "additional") {
this.isNotes = true;
} }
}, },
changeOpenAddDoc() { changeOpenAddDoc() {
@@ -306,6 +312,12 @@ export default {
this.createAddress(); this.createAddress();
} else this.updateAddress(); } else this.updateAddress();
} }
if (this.section === "additional") {
if (!this.sectionInfo[0].id) {
this.isNotes = false;
this.createAddress();
} else this.updateNotes();
}
}, },
copyValue(text) { copyValue(text) {
navigator.clipboard.writeText(text); navigator.clipboard.writeText(text);
@@ -365,6 +377,12 @@ export default {
this.isAttachments = newValue; this.isAttachments = newValue;
}, },
}, },
lackNotes: {
immediate: true,
handler(newValue) {
this.isNotes = newValue;
},
},
showModal: function () { showModal: function () {
if (this.showModal === false) { if (this.showModal === false) {
this.clearDocs(); this.clearDocs();

View File

@@ -26,6 +26,14 @@
:delete-doc="deleteDoc" :delete-doc="deleteDoc"
:lack-attachments="lackAttachments" :lack-attachments="lackAttachments"
) )
.flex.flex-col
client-detail-info-section(
section="additional",
:section-info="dataNotes",
:lack-notes="lackNotes",
:create-note="createNote",
:update-notes="updateNotes"
)
</template> </template>
<script> <script>
@@ -34,16 +42,19 @@ export default {
name: "ClientDetailInfoWrapper", name: "ClientDetailInfoWrapper",
components: { ClientDetailInfoSection }, components: { ClientDetailInfoSection },
props: { props: {
dataDetail: Object,
dataAddress: Object, dataAddress: Object,
dataAttachments: Array, dataAttachments: Array,
dataNotes: Array,
saveNewDoc: Function, saveNewDoc: Function,
createNote: Function,
deleteDoc: Function, deleteDoc: Function,
dataDocument: Object, dataDocument: Object,
updateDocument: Function, updateDocument: Function,
updateAddress: Function, updateAddress: Function,
updateNotes: Function,
lackData: Boolean, lackData: Boolean,
lackAddress: Boolean, lackAddress: Boolean,
lackNotes: Boolean,
lackAttachments: Boolean, lackAttachments: Boolean,
dopeAddress: Object, dopeAddress: Object,
createAddress: Function, createAddress: Function,

View File

@@ -89,19 +89,22 @@
client-detail-info-wrapper.detail.px-52px( client-detail-info-wrapper.detail.px-52px(
:class="{'pb-[30px] pt-4': isOpenDetailInfo}" :class="{'pb-[30px] pt-4': isOpenDetailInfo}"
:data-address="dataAddress", :data-address="dataAddress",
:data-detail="dataDetail",
:data-attachments="dataAttachments", :data-attachments="dataAttachments",
:data-document="dataIdentityDocument", :data-document="dataIdentityDocument",
:data-notes="dataNotes"
:save-new-doc="saveNewDoc", :save-new-doc="saveNewDoc",
:delete-doc="deleteDoc", :delete-doc="deleteDoc",
:update-document="postUpdateIdentityDocument", :update-document="postUpdateIdentityDocument",
:update-address="postUpdateAddress", :update-address="postUpdateAddress",
:update-notes="postUpdateNotes",
:lack-data="lackData", :lack-data="lackData",
:lack-address="lackAddress", :lack-address="lackAddress",
:dope-address="dopeAddress", :dope-address="dopeAddress",
:lack-attachments="lackAttachments", :lack-attachments="lackAttachments",
:lack-notes="lackNotes"
:create-address="postCreateAddress", :create-address="postCreateAddress",
:create-document="postCreateIdentityDocument", :create-document="postCreateIdentityDocument",
:create-note="postCreateNote",
:address-id="addressId", :address-id="addressId",
:doc-id="docId", :doc-id="docId",
) )
@@ -154,7 +157,11 @@ export default {
initialization: true, initialization: true,
}, },
], ],
dataDetail: {}, dataNotes: [
{
initialization: true,
},
],
isOpenDetailInfo: false, isOpenDetailInfo: false,
isOpenPopup: false, isOpenPopup: false,
columnBody: column, columnBody: column,
@@ -166,6 +173,7 @@ export default {
lackData: true, lackData: true,
lackAddress: true, lackAddress: true,
lackAttachments: true, lackAttachments: true,
lackNotes: true,
dopeAddress: { dopeAddress: {
city: "", city: "",
region: "", region: "",
@@ -388,9 +396,10 @@ export default {
addNotification(title, title, message, "error", 5000); addNotification(title, title, message, "error", 5000);
}, },
fetchClientDetail(id) { fetchClientDetail(id) {
fetchWrapper fetchWrapper.get(`general/person/${id}/detail/`).then((data) => {
.get(`general/person/${id}/detail/`) this.saveClientDetail(data);
.then((data) => this.saveClientDetail(data)); this.saveNote(data);
});
this.fetchAttachment(); this.fetchAttachment();
}, },
saveClientDetail(data) { saveClientDetail(data) {
@@ -410,6 +419,10 @@ export default {
this.dataAttachments = data.filter((e) => e.person_id.id === this.id); this.dataAttachments = data.filter((e) => e.person_id.id === this.id);
this.lackAttachments = this.dataAttachments[0]?.id ? true : false; this.lackAttachments = this.dataAttachments[0]?.id ? true : false;
}, },
saveNote(data) {
this.dataNotes = [...data.note];
this.lackNotes = this.dataNotes[0]?.id ? true : false;
},
saveIdentityDocument(data) { saveIdentityDocument(data) {
if (data?.id) { if (data?.id) {
this.docId = data.id; this.docId = data.id;
@@ -595,7 +608,25 @@ export default {
); );
}); });
}, },
postCreateNote() {
fetchWrapper
.post("general/note/create/", {
person_id: this.id,
title: this.dataNotes[0].title,
description: this.dataNotes[0].title,
})
.then(() => this.fetchClientDetail(this.id));
},
postUpdateNotes() {
fetchWrapper
.post(`general/note/${this.dataNotes[0].id}/update/`, {
title: this.dataNotes[0].title,
description: this.dataNotes[0].description,
})
.then(() => this.fetchClientDetail(this.id));
},
}, },
watch: { watch: {
rowOverlay() { rowOverlay() {
if (this.rowOverlay) this.startTimer(); if (this.rowOverlay) this.startTimer();

View File

@@ -64,7 +64,7 @@ export default {
.wrap .wrap
width: 570px width: 570px
height: fit-content height: fit-content
min-height: 640px min-height: 485px
.services-wrapper .services-wrapper
border: 1px solid var(--btn-grey-color) border: 1px solid var(--btn-grey-color)

View File

@@ -165,6 +165,9 @@ export const detail = {
}, },
docs: { docs: {
title: "Документы", title: "Документы",
placeholder: {
numba: "Редактировать данные",
},
height: 280, height: 280,
width: 360, width: 360,
addFile: true, addFile: true,
@@ -175,6 +178,7 @@ export const detail = {
height: 280, height: 280,
width: 360, width: 360,
addFile: true, addFile: true,
voidHeight: 236,
}, },
docsColor: { docsColor: {
"application/pdf": "#ff6969", "application/pdf": "#ff6969",

View File

@@ -2,7 +2,7 @@
.base.flex.flex-col.gap-y-6 .base.flex.flex-col.gap-y-6
.flex.flex-col.gap-y-6 .flex.flex-col.gap-y-6
span.font-bold Основное span.font-bold Основное
.flex.flex-col.gap-y-4 .flex.flex-col.gap-y-6
base-input.w-full(placeholder="ФИО*") base-input.w-full(placeholder="ФИО*")
.flex.gap-x-4 .flex.gap-x-4
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
@@ -11,7 +11,7 @@
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm СНИЛС .counter.font-semibold.text-smm СНИЛС
base-input(:width-input="277", placeholder="000000000 00") base-input(:width-input="277", placeholder="000000000 00")
.flex.flex-col.gap-y-4 .flex.flex-col.gap-y-6
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm Адрес регистрации .counter.font-semibold.text-smm Адрес регистрации
base-input(:width-input="277", placeholder="Введите полный адрес") base-input(:width-input="277", placeholder="Введите полный адрес")
@@ -29,8 +29,9 @@
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm Email .counter.font-semibold.text-smm Email
base-input(:width-input="277", placeholder="user@yandex.ru") base-input(:width-input="277", placeholder="user@yandex.ru")
base-button(:size="40", @click="changeBaseData") .flex.py-2.justify-between
span.font-semibold Далее base-button(:size="40", @click="changeBaseData")
span.font-semibold Далее
</template> </template>
<script> <script>

View File

@@ -2,7 +2,7 @@
.base.flex.flex-col.gap-y-6 .base.flex.flex-col.gap-y-6
.flex.flex-col.gap-y-6 .flex.flex-col.gap-y-6
span.font-bold Паспортные данные span.font-bold Паспортные данные
.flex.flex-col.gap-y-4 .flex.flex-col.gap-y-6
.flex.gap-x-4 .flex.gap-x-4
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm Серия и номер .counter.font-semibold.text-smm Серия и номер
@@ -10,15 +10,16 @@
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm Дата выдачи .counter.font-semibold.text-smm Дата выдачи
base-input-date.input-date.h-10(:width-input="277") base-input-date.input-date.h-10(:width-input="277")
.flex.flex-col.gap-y-4 .flex.flex-col.gap-y-6
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm Кем выдан .counter.font-semibold.text-smm Кем выдан
base-input(:width-input="277", placeholder="Точно как в паспорте") base-input(:width-input="277", placeholder="Точно как в паспорте")
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm Страховая оганизация .counter.font-semibold.text-smm Страховая оганизация
base-input(:width-input="277", placeholder="Введите название организации") base-input(:width-input="277", placeholder="Введите название организации")
base-button(:size="40", @click="changeIdentityDoc") .flex.py-2
span.font-semibold Далее base-button(:size="40", @click="changeIdentityDoc")
span.font-semibold Далее
</template> </template>
<script> <script>

View File

@@ -3,7 +3,7 @@
.flex.gap-x-4 .flex.gap-x-4
.flex.flex-col.gap-y-6 .flex.flex-col.gap-y-6
span.font-bold Полис span.font-bold Полис
.flex.gap-x-4 .flex.gap-x-6
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm Серия и номер полиса ОМС .counter.font-semibold.text-smm Серия и номер полиса ОМС
base-input(:width-input="277", placeholder="0000 000000") base-input(:width-input="277", placeholder="0000 000000")
@@ -13,7 +13,7 @@
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm Код категории льготы .counter.font-semibold.text-smm Код категории льготы
base-input(:width-input="277", placeholder="000") base-input(:width-input="277", placeholder="000")
.flex.flex-col.gap-y-4 .flex.flex-col.gap-y-6
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.counter.font-semibold.text-smm К кому обращаться в случае необходимости .counter.font-semibold.text-smm К кому обращаться в случае необходимости
base-input.w-full(placeholder="ФИО*") base-input.w-full(placeholder="ФИО*")
@@ -23,8 +23,9 @@
:width-input="277", :width-input="277",
placeholder="+7 (915) 6449223" placeholder="+7 (915) 6449223"
) )
base-button(:size="40") .flex.py-2
span.font-semibold Создать медицинскую карту base-button(:size="40")
span.font-semibold Создать медицинскую карту
</template> </template>
<script> <script>