diff --git a/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/IndexForm.vue b/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/IndexForm.vue index c99cf3c..c1b5da9 100644 --- a/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/IndexForm.vue +++ b/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/IndexForm.vue @@ -107,6 +107,12 @@ export default { }, }, watch: { + modelValue: { + immediate: true, + handler(value) { + this.protocolData[this.data.state] = value; + }, + }, state: { immediate: true, handler(value) { diff --git a/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/MedicalFormTag.vue b/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/MedicalFormTag.vue index dbc6d59..ae14168 100644 --- a/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/MedicalFormTag.vue +++ b/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/MedicalFormTag.vue @@ -48,8 +48,10 @@ ) .name.flex.items-center.font-medium.text-smm {{ name }} .flex.h-10.w-10.absolute.right-4.bottom-4 - q-btn(color="primary", dense, padding="4px 12px") + q-btn(@click="showModal = true", color="primary", dense, padding="4px 12px") q-icon(name="app:icon-plus", size="17px") + base-modal(v-model="showModal", title="Создание тега") + tag-creation-form .flex(v-if="data.title === 'Осмотр полости рта' && (fillInspection || change)", :style="{color: 'var(--btn-blue-color)'}") q-btn(no-caps, flat padding="2px 4px") q-icon(left, name="app:plus", size="11px") @@ -60,15 +62,24 @@ import BaseButton from "@/components/base/BaseButton.vue"; import BaseInput from "@/components/base/BaseInput.vue"; import MedicalFormWrapper from "@/pages/newMedicalCard/components/MedicalFormWrapper.vue"; +import TagCreationForm from "@/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/TagCreationForm.vue"; import { mapState } from "vuex"; +import BaseModal from "@/components/base/BaseModal.vue"; export default { name: "MedicalFormTag", - components: { BaseButton, BaseInput, MedicalFormWrapper }, + components: { + BaseButton, + BaseInput, + MedicalFormWrapper, + TagCreationForm, + BaseModal, + }, props: { data: Object, abc: Array, fillInspection: Boolean }, data() { return { change: false, + showModal: false, }; }, computed: { diff --git a/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/TagCreationForm.vue b/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/TagCreationForm.vue new file mode 100644 index 0000000..e95ff0a --- /dev/null +++ b/src/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/TagCreationForm.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/pages/newMedicalCard/components/InitialInspectionProtocol/MedicalProtocolsInspection.vue b/src/pages/newMedicalCard/components/InitialInspectionProtocol/MedicalProtocolsInspection.vue index b2f53a1..e2cbf0a 100644 --- a/src/pages/newMedicalCard/components/InitialInspectionProtocol/MedicalProtocolsInspection.vue +++ b/src/pages/newMedicalCard/components/InitialInspectionProtocol/MedicalProtocolsInspection.vue @@ -43,7 +43,9 @@ import MainFactorsForm from "@/pages/newMedicalCard/components/InitialInspection import ToothFormulaForm from "@/pages/newMedicalCard/components/InitialInspectionProtocol/Forms/ToothFormula/ToothFormulaForm.vue"; import { protocolForms } from "@/pages/newMedicalCard/utils/medicalConfig.js"; import ClinicalForm from "./Forms/ClinicalForm.vue"; -import { mapGetters, mapState } from "vuex"; +import { mapState } from "vuex"; +import { removeEmptyFields } from "@/shared/utils/changesObjects"; +import toothFormula from "@/store/modules/toothFormula"; export default { name: "MedicalProtocolsInspection", @@ -60,6 +62,7 @@ export default { props: { inspection: Boolean, fillInspection: Boolean }, data() { return { + initToothFormula: toothFormula.stateInit, percent: 0, protocolForms: protocolForms, list: [ @@ -107,34 +110,64 @@ export default { ...mapState({ protocolData: (state) => state.medical.protocolData, }), - ...mapGetters({ - protocolDataGet: "getInitProtocol", - }), }, methods: { - interestСalculation() { - const getTypeOf = (obj) => { - return {}.toString.call(obj).slice(8, -1); - }; - let sum = 0; - for (let a in this.protocolData) { - if ( - Array.isArray(this.protocolData[a]) && - this.protocolData[a].length > 0 - ) - sum += 1; - - if (this.protocolData[a] && typeof this.protocolData[a] === "string") - sum += 1; - - if ( - getTypeOf(this.protocolData[a]) === "Object" && - Object.keys(this.protocolData[a]).length - ) - sum += 1; + setPercent(data, sum) { + switch (data) { + case "KPUIndex": + case "bite": + case "hygieneIndex": + if (this.protocolData[data]) sum += 1; + break; + case "anamnesis": + case "cavity": + case "clinical": + case "complaints": + case "illnesses": + case "inspection": + case "medications": + case "survey": + if (this.protocolData[data].length) sum += 1; + break; + case "data": { + if (this.protocolData[data].complaints.length) sum += 0.5; + this.protocolData[data].files.forEach((e) => { + if (e.data.length) sum += 0.25; + }); + break; + } + case "disease": + case "preliminary": + if (this.protocolData[data].text || this.protocolData[data].change) + sum += 1; + break; + case "thermometry": { + let obj = removeEmptyFields(this.protocolData[data]); + for (let el in obj) { + if (obj[el].result) sum += 0.25; + if (obj[el].value) sum += 0.25; + } + break; + } + case "tonometry": { + let obj = removeEmptyFields(this.protocolData[data]); + for (let el in obj) if (obj[el].value) sum += 0.5; + break; + } + case "toothFormula": + if ( + JSON.stringify(this.initToothFormula) !== + JSON.stringify(this.protocolData[data]) + ) + sum += 1; + break; } - sum = Math.ceil(17 / sum); - this.percent = sum > 1 ? sum * 10 : sum * 100; + return sum; + }, + interestСalculation() { + let sum = 0; + for (let data in this.protocolData) sum = this.setPercent(data, sum); + this.percent = Math.round((100 * Math.round(sum)) / 17); }, }, watch: { diff --git a/src/pages/newMedicalCard/utils/medicalConfig.js b/src/pages/newMedicalCard/utils/medicalConfig.js index 5307b30..1b7aa54 100644 --- a/src/pages/newMedicalCard/utils/medicalConfig.js +++ b/src/pages/newMedicalCard/utils/medicalConfig.js @@ -753,7 +753,6 @@ export const protocolForms = [ "Киста в глазу", "Красные пятна на языке", "Фингал под глазом", - "Гематома на щеке", ], }, }, diff --git a/src/store/modules/medicalCard.js b/src/store/modules/medicalCard.js index e92ec0e..588b81b 100644 --- a/src/store/modules/medicalCard.js +++ b/src/store/modules/medicalCard.js @@ -374,7 +374,7 @@ const getters = { }, toothFormula: { lacticBite: toothFormula.state.lacticBite, - formula: toothFormula.state.formula, + formula: JSON.parse(JSON.stringify(toothFormula.state.formula)), }, data: { complaints: [ @@ -427,7 +427,7 @@ const getters = { preliminary: { text: null }, toothFormula: { lacticBite: toothFormula.stateInit.lacticBite, - formula: toothFormula.stateInit.formula, + formula: JSON.parse(JSON.stringify(toothFormula.stateInit.formula)), }, data: { complaints: [],