diff --git a/src/components/base/BaseInput.vue b/src/components/base/BaseInput.vue index 2e0ff6b..342e5cb 100644 --- a/src/components/base/BaseInput.vue +++ b/src/components/base/BaseInput.vue @@ -9,7 +9,7 @@ :type="type", @input="$emit('update:value', $event.target.value)", :placeholder="placeholder", - :maxlength="maxLength", + :maxLength="maxLength", :max="maxDate", :disabled="disabled" ) diff --git a/src/pages/clients/components/ClientDetailInfoSection.vue b/src/pages/clients/components/ClientDetailInfoSection.vue index 60602fc..fffc868 100644 --- a/src/pages/clients/components/ClientDetailInfoSection.vue +++ b/src/pages/clients/components/ClientDetailInfoSection.vue @@ -54,6 +54,12 @@ v-click-outside="closeAddDocs" ) table-create-package-doc(v-if="isOpenPackage") + base-popup.right-3.top-5( + v-if="section === 'additional' && isOpenAddingWrap", + v-click-outside="closePopup", + :width="485" + ) + table-create-note(:create-note="createNote", :close-popup="closePopup") transition(name="section", mode="out-in") .flex.justify-center.items-center( v-if="sectionDataPresence", @@ -120,10 +126,16 @@ .flex.flex-col.gap-y-4(v-if="section === 'addresses' && isChange") client-detail-section-address(:dope-address="dopeAddress") .flex.flex-col.gap-y-2(v-if="section === 'additional' && isChange") - .title-section.text-xxs.font-semibold {{item.title}} + //- .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" + v-model:value="sectionInfo[key].title", + placeholder="Заголовок" + ) + client-detail-input.text-sm.w-max-fit( + :style="{fontWeight:key === 'numba'&&600}", + v-model:value="sectionInfo[key].description", + placeholder="Описание" ) .flex.items-center(v-if="item.title && section !== 'additional'") .icon-cancel.cancel.cursor-pointer.pr-3.text-xsm( @@ -148,6 +160,7 @@ import BaseButton from "@/components/base/BaseButton"; import TableAddingNewDoc from "@/pages/clients/components/TableAddingNewDoc"; import TableAddingNewAdditional from "@/pages/clients/components/TableAddingNewAdditional"; import TableCreatePackageDoc from "@/pages/clients/components/TableCreatePackageDoc"; +import TableCreateNote from "@/pages/clients/components/TableCreateNote"; import ClientDetailSectionAddress from "@/pages/clients/components/ClientDetailSectionAddress"; import TableChoiceAddingDoc from "@/pages/clients/components/TableChoiceAddingDoc"; import BasePopup from "@/components/base/BasePopup"; @@ -166,17 +179,17 @@ export default { BaseInputDate, BasePopup, BaseModal, + BaseLoader, ClientDetailInput, ClientDetailSectionAddress, TableAddingNewAdditional, TableCreatePackageDoc, TableAddingNewDoc, TableChoiceAddingDoc, - BaseLoader, + TableCreateNote, }, props: { saveNewDoc: Function, - createNote: Function, sectionInfo: Object, section: String, deleteDoc: Function, @@ -190,6 +203,7 @@ export default { dopeAddress: Object, createAddress: Function, createDocument: Function, + createNote: Function, addressId: String, docId: String, }, @@ -252,6 +266,7 @@ export default { this.isOpenAddDoc = true; } else if (this.section === "additional") { this.isNotes = true; + this.isOpenAddingWrap = true; } }, changeOpenAddDoc() { @@ -313,10 +328,11 @@ export default { } else this.updateAddress(); } if (this.section === "additional") { - if (!this.sectionInfo[0].id) { + if (!this.sectionInfo[0]?.id) { this.isNotes = false; - this.createAddress(); - } else this.updateNotes(); + } else { + this.updateNotes(); + } } }, copyValue(text) { diff --git a/src/pages/clients/components/ClientDetailInfoWrapper.vue b/src/pages/clients/components/ClientDetailInfoWrapper.vue index 416db2d..54c212f 100644 --- a/src/pages/clients/components/ClientDetailInfoWrapper.vue +++ b/src/pages/clients/components/ClientDetailInfoWrapper.vue @@ -46,7 +46,6 @@ export default { dataAttachments: Array, dataNotes: Array, saveNewDoc: Function, - createNote: Function, deleteDoc: Function, dataDocument: Object, updateDocument: Function, @@ -59,6 +58,7 @@ export default { dopeAddress: Object, createAddress: Function, createDocument: Function, + createNote: Function, addressId: String, docId: String, }, diff --git a/src/pages/clients/components/ClientsTableRow.vue b/src/pages/clients/components/ClientsTableRow.vue index 5001100..e4f58f7 100644 --- a/src/pages/clients/components/ClientsTableRow.vue +++ b/src/pages/clients/components/ClientsTableRow.vue @@ -433,9 +433,15 @@ export default { this.lackAttachments = this.dataAttachments[0]?.id ? true : false; }, saveNote(data) { - this.dataNotes = [...data.note]; - this.lackNotes = this.dataNotes[0]?.id ? true : false; + if (data?.note[0]) { + this.dataNotes = [...data.note]; + this.lackNotes = true; + } else { + this.lackNotes = false; + this.dataNotes = [{ title: "", description: "" }]; + } }, + saveIdentityDocument(data) { if (data?.id) { this.docId = data.id; @@ -621,22 +627,37 @@ 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)); + postCreateNote(title, description) { + if (!title || !description) { + this.addErrorNotification( + "Ошибка создания дополнительных данных", + "Все поля должны быть заполнены" + ); + } else + fetchWrapper + .post("general/note/create/", { + person_id: this.id, + title: title, + description: description, + }) + .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)); + this.dataNotes.forEach((e) => { + if (!e.title || !e.description) { + this.addErrorNotification( + "Ошибка изменения дополнительных данных", + "Поля не могут быть пустыми" + ); + this.fetchClientDetail(this.id); + } else + fetchWrapper + .post(`general/note/${e.id}/update/`, { + title: e.title, + description: e.description, + }) + .then(() => this.fetchClientDetail(this.id)); + }); }, }, diff --git a/src/pages/clients/components/TableCreateNote.vue b/src/pages/clients/components/TableCreateNote.vue new file mode 100644 index 0000000..6aecd13 --- /dev/null +++ b/src/pages/clients/components/TableCreateNote.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/pages/clients/utils/tableConfig.js b/src/pages/clients/utils/tableConfig.js index 4594fa9..5886a35 100644 --- a/src/pages/clients/utils/tableConfig.js +++ b/src/pages/clients/utils/tableConfig.js @@ -175,6 +175,9 @@ export const detail = { }, additional: { title: "Дополнительные данные", + placeholder: { + numba: "Редактировать данные", + }, height: 280, width: 360, addFile: true, diff --git a/tailwind.config.js b/tailwind.config.js index 63c3547..cf161d8 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -10,6 +10,7 @@ module.exports = { xsm: ["10px", { lineHeight: "12px" }], ins: ["11px", { lineHeight: "12px" }], xxs: ["12px", { lineHeight: "14px" }], + xsx: ["12px", { lineHeight: "16px" }], xs: ["13px", { lineHeight: "15px" }], xss: ["13px", { lineHeight: "19px" }], sm: ["14px", { lineHeight: "16px" }],