From fbb89646ea0f275bbd3aaa1588e72f713cf1d35e Mon Sep 17 00:00:00 2001 From: megavrilinvv Date: Thu, 17 Aug 2023 18:17:16 +0300 Subject: [PATCH] =?UTF-8?q?[WIP]=20=D0=A4=D0=B8=D0=BA=D1=81=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D0=BE=D0=B2,=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8E=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BasicDataForms/BasicDataForm.vue | 27 ++++--------------- .../BasicDataForms/ContactsForm.vue | 12 ++++----- .../newMedicalCard/utils/medicalConfig.js | 8 +++++- src/shared/fetchWrapper.js | 7 ++++- src/store/modules/medicalCard.js | 9 ++----- 5 files changed, 26 insertions(+), 37 deletions(-) diff --git a/src/pages/newMedicalCard/components/BasicDataForms/BasicDataForm.vue b/src/pages/newMedicalCard/components/BasicDataForms/BasicDataForm.vue index ba2f679..cf157d6 100644 --- a/src/pages/newMedicalCard/components/BasicDataForms/BasicDataForm.vue +++ b/src/pages/newMedicalCard/components/BasicDataForms/BasicDataForm.vue @@ -4,7 +4,7 @@ :is-check-change="isCheckChange" :is-loading-data="isLoadingData" :is-edit="isEdit" - :save="updateBasicData" + :save="saveChange" :cancel="cancelEdit" :open-edit="openEdit" ) @@ -121,7 +121,6 @@ export default { ...mapActions({ createAddress: "postCreateAddress", updateAddress: "postUpdateAddress", - deleteAddress: "deleteAddress", }), updateBasicData() { const photoFormData = new FormData(); @@ -152,8 +151,6 @@ export default { postAdresses(updateData, initData, key) { let isInitDataEmpty = [...Object.keys(removeEmptyFields(initData))] .length; - let isUpdateDataEmpty = [...Object.keys(removeEmptyFields(updateData))] - .length; if (Object.keys(removeEmptyFields(updateData)).length) { if (!isInitDataEmpty) return this.createAddress({ @@ -168,8 +165,6 @@ export default { category: key, }); } - if (isInitDataEmpty && !isUpdateDataEmpty) - return this.deleteAddress({ id: this.basic.personalData.id }); }, checkChangeInput() { this.isCheckChange = checkChangeData(this.initDataBasic, this.basic); @@ -187,22 +182,10 @@ export default { const form = this.$refs.formBasicData; form.validate().then((validate) => { if (validate) { - let person = this.basic.personalData; - this.$store.dispatch("setMedicalCardData", { - ...this.medicalCard, - person: { - ...this.medicalCard.person, - ...person, - }, - }); - //let updateBasic = this.updateBasicData(); - // Promise.allSettled(updateBasic) - // .then(() => this.$store.dispatch("getMedicalCardData")) - // .then(() => { - // this.isLoadingData = false; - // this.isEdit = false; - // this.isCheckChange = false; - // }); + this.updateBasicData(); + this.isLoadingData = false; + this.isEdit = false; + this.isCheckChange = false; } else { getFieldsNameUnvalidated(form).forEach((errorKey) => { addNotification( diff --git a/src/pages/newMedicalCard/components/BasicDataForms/ContactsForm.vue b/src/pages/newMedicalCard/components/BasicDataForms/ContactsForm.vue index dee8eaf..4c2743e 100644 --- a/src/pages/newMedicalCard/components/BasicDataForms/ContactsForm.vue +++ b/src/pages/newMedicalCard/components/BasicDataForms/ContactsForm.vue @@ -109,7 +109,7 @@ export default { ...mapActions({ createContact: "postCreateContact", updateContact: "postUpdateContact", - deleteContacts: "deleteContact", + delContacts: "deleteContact", }), checkNetworksField(index) { if (this.contacts.networks[index].kind) @@ -130,16 +130,16 @@ export default { ...this.contacts.emails, ...this.contacts.networks, ]; - const notEmptyContacts = allNewContacts.filter((el) => el.kind); - return this.getRequestArrayData(this.initAllContacts, notEmptyContacts); + const notEmptyContacts = allNewContacts.filter((el) => !el.id); + return this.changeContacts(this.initAllContacts, notEmptyContacts); }, - getRequestArrayData(initData, notEmptyContacts) { + changeContacts(initData, notEmptyContacts) { const deleteRequests = initData .filter((el) => !notEmptyContacts.find((data) => data.id === el.id)) - .map((el) => this.deleteContacts({ id: el.id })); + .map((el) => this.delContacts({ id: el.id })); const requests = notEmptyContacts.map((el) => { const requestObj = { - category: el.kind, + category: el.category || el.kind, value: el.value, }; delete requestObj.id; diff --git a/src/pages/newMedicalCard/utils/medicalConfig.js b/src/pages/newMedicalCard/utils/medicalConfig.js index b1d4922..44aa2f3 100644 --- a/src/pages/newMedicalCard/utils/medicalConfig.js +++ b/src/pages/newMedicalCard/utils/medicalConfig.js @@ -61,22 +61,28 @@ export const baseDataForm = [ key: "region", label: "Регион", type: "text", + rules: [(val) => ruleNotValue(val)], + error: "Поле 'Регион' должны быть заполнены", }, { key: "city", label: "Город", type: "text", + rules: [(val) => ruleNotValue(val)], + error: "Поле 'Город' должны быть заполнены", }, { key: "street", label: "Улица", type: "text", + rules: [(val) => ruleNotValue(val)], + error: "Поле 'Улица' должны быть заполнены", }, { key: "house", label: "Дом", type: "text", - rules: [(val) => !/^[\W0]/.test(val)], + rules: [(val) => ruleNotValue(val)], error: "Номер дома должен начинатся не с нуля и только с цифробуквенного символа", }, diff --git a/src/shared/fetchWrapper.js b/src/shared/fetchWrapper.js index b3648a6..c42c3b9 100644 --- a/src/shared/fetchWrapper.js +++ b/src/shared/fetchWrapper.js @@ -45,7 +45,7 @@ function request(method, url, headers = {}, body, type = "") { requestOptions.body = JSON.stringify(body); } } - if (method === "POST" || method === "PUT") { + if (method === "POST" || method === "PUT" || method === "PATCH") { if (type && type === "formData") { requestOptions = { method: method, @@ -83,6 +83,10 @@ function post(url, body, type, headers, attempts = 3) { return handleRequest("POST", url, headers, attempts, body, type); } +function patch(url, body, type, headers, attempts = 3) { + return handleRequest("PATCH", url, headers, attempts, body, type); +} + function put(url, headers, body, attempts = 3) { return handleRequest("PUT", url, headers, attempts, null, body); } @@ -92,4 +96,5 @@ export const fetchWrapper = { del, post, put, + patch, }; diff --git a/src/store/modules/medicalCard.js b/src/store/modules/medicalCard.js index a0f992a..7256cb2 100644 --- a/src/store/modules/medicalCard.js +++ b/src/store/modules/medicalCard.js @@ -437,14 +437,11 @@ const actions = { }); }, postUpdateAddress(context, { id, address, category }) { - fetchWrapper.post(`address/${id}`, { + fetchWrapper.patch(`address/${id}`, { ...address, category: category, }); }, - deleteAddress(context, { id }) { - fetchWrapper.del(`address/${id}`); - }, postCreateContact(context, { obj, id }) { fetchWrapper.post("contacts", { person_id: id, @@ -452,9 +449,7 @@ const actions = { }); }, postUpdateContact(context, { obj, id }) { - fetchWrapper.post(`contacts/${id}`, { - ...obj, - }); + fetchWrapper.patch(`contacts/${id}`, obj); }, deleteContact(context, { id }) { fetchWrapper.del(`contacts/${id}`);