[WIP] Добавил модальное окно отображения выбранной медкарты, фикс ситлей

This commit is contained in:
megavrilinvv
2023-08-02 16:49:19 +03:00
parent 06631aaee0
commit 897cb06b85
6 changed files with 415 additions and 3 deletions

View File

@@ -97,4 +97,5 @@
--system-color-green: #21ba72 --system-color-green: #21ba72
--gray-background: #e9e9ed --gray-background: #e9e9ed
--aqua-color: #2cc3e5 --aqua-color: #2cc3e5
--system-color-yellow: #ffB931

View File

@@ -6,7 +6,7 @@
ref="dialog" ref="dialog"
) )
.base-content( .base-content(
:class="{'draggable': draggable, 'base-content-default': !defaultPadding, 'base-modal-default': modalPadding}", :class="{'draggable': draggable, 'none-padding': nonePadding, 'base-content-default': !defaultPadding, 'base-modal-default': modalPadding}",
ref="contentRef", ref="contentRef",
:style="{...contentStyles, height}" :style="{...contentStyles, height}"
) )
@@ -29,6 +29,7 @@ export default {
showCloseIcon: Boolean, showCloseIcon: Boolean,
draggable: Boolean, draggable: Boolean,
hideOverlay: Boolean, hideOverlay: Boolean,
nonePadding: Boolean,
defaultPadding: Boolean, defaultPadding: Boolean,
modalPadding: Boolean, modalPadding: Boolean,
hideHeader: Boolean, hideHeader: Boolean,
@@ -139,6 +140,9 @@ export default {
.base-modal-default .base-modal-default
padding: 28px 32px padding: 28px 32px
.none-padding
padding: 0px
.base-content .base-content
overflow: hidden overflow: hidden
width: auto width: auto

View File

@@ -39,7 +39,7 @@
.flex.h-14.gap-x-3.items-center.text-smm .flex.h-14.gap-x-3.items-center.text-smm
.text.font-semibold Медкарта: .text.font-semibold Медкарта:
.flex.gap-x-1 .flex.gap-x-1
.name.flex.rounded-md.flex-col .name.flex.rounded-md.flex-col(@click="showMedcard")
.flex.items-center.px-4.py-2.gap-x-2(:class="{'medcard': patient}") .flex.items-center.px-4.py-2.gap-x-2(:class="{'medcard': patient}")
.photo.flex.h-10.w-10.items-center.justify-center .photo.flex.h-10.w-10.items-center.justify-center
img.w-10.h-10.rounded-full(v-if="patient", :src="patient.avatar") img.w-10.h-10.rounded-full(v-if="patient", :src="patient.avatar")
@@ -49,6 +49,8 @@
.grey-color.text-xsx.rounded-md {{patient ? patient.birthday : "Дата"}} .grey-color.text-xsx.rounded-md {{patient ? patient.birthday : "Дата"}}
.indicator-default.flex.w-full.h-1 .indicator-default.flex.w-full.h-1
.indicator.flex.h-1(:style="{width: patient ? patient.fill : '0%'}") .indicator.flex.h-1(:style="{width: patient ? patient.fill : '0%'}")
base-modal(v-model="isShowMedcard", none-padding)
medcard-modal(:data="patient")
.change.flex.items-center.rounded-md .change.flex.items-center.rounded-md
q-btn(dense, padding="18px 4px", @click="isShowMedcards = true") q-btn(dense, padding="18px 4px", @click="isShowMedcards = true")
q-icon.icon(name="app:folder", size="20px") q-icon.icon(name="app:folder", size="20px")
@@ -71,6 +73,7 @@ import { trimName } from "@/pages/newCalendar/utils/calendarFunctions.js";
import * as moment from "moment/moment"; import * as moment from "moment/moment";
import BaseInput from "@/components/base/BaseInput.vue"; import BaseInput from "@/components/base/BaseInput.vue";
import { v_model } from "@/shared/mixins/v-model"; import { v_model } from "@/shared/mixins/v-model";
import MedcardModal from "./MedcardModal.vue";
export default { export default {
name: "HeaderRecordForm", name: "HeaderRecordForm",
@@ -80,6 +83,7 @@ export default {
BaseModal, BaseModal,
BaseTimeModal, BaseTimeModal,
MedcardsModal, MedcardsModal,
MedcardModal,
}, },
mixins: [v_model], mixins: [v_model],
props: { currentStatus: Object, statuses: Array, choiceStatus: Function }, props: { currentStatus: Object, statuses: Array, choiceStatus: Function },
@@ -89,6 +93,7 @@ export default {
currentDate: moment().clone(), currentDate: moment().clone(),
isShowTime: false, isShowTime: false,
isShowMedcards: false, isShowMedcards: false,
isShowMedcard: false,
patients: patientList.find(({ id }) => id === 2).data, patients: patientList.find(({ id }) => id === 2).data,
times: "", times: "",
data: [ data: [
@@ -132,6 +137,9 @@ export default {
this.isShowMedcards = false; this.isShowMedcards = false;
this.patient = medcard; this.patient = medcard;
}, },
showMedcard() {
if (this.patient) this.isShowMedcard = true;
},
validateTimeString(value = "") { validateTimeString(value = "") {
const [start = "", end = ""] = value.split(" - "); const [start = "", end = ""] = value.split(" - ");
this.validateTime(start); this.validateTime(start);

View File

@@ -0,0 +1,156 @@
<template lang="pug">
.wrapper.flex.font-medium.flex-col.text-smm
.header.flex.flex-col.gap-y-6
.grey-color.text-smm.font-semibol {{"Медицинская карта: " + data.medicalNumber}}
.flex.gap-x-4.w-full
img.h-20.w-20.rounded-full(:src="data?.avatar")
.flex.items-center.justify-between.w-full
.info.flex.flex-col.gap-y-2
.text-5xl.font-bold {{data.last_name + " " + data.first_name + " " + data.patronymic}}
.flex.flex-col.text-m
span {{data.birthday}}
.flex.gap-x-2.items-center
span Приоритет:
.white-color.flex.grey-color.rounded.items-center.px-3.h-6.w-fit(
:class="selectedPriority"
) {{selectedPriorityName}}
.circle.flex.rounded-full.items-center.justify-center(
:style="{background: choiceFill(data.fill)}"
)
.flex.flex-col.items-center
.text-5xl.font-bold {{data.fill}}
.grey-color.text-xsx Заполнено
.body.flex.px-8.py-6.flex-col.gap-y-4
.flex.gap-x-4.items-center
.title.flex.text-m.grey-color Соцсети:
.wrap.flex.gap-1
.network.flex.h-7.items-center.gap-x-2.cursor-pointer(
v-for="network in data.networks"
)
q-icon.blue-fill(:name="network.icon", size="24px")
span {{network.name}}
.flex.gap-x-4.items-center
.title.flex.text-m.grey-color Телефон:
.flex {{data?.phone}}
.flex.gap-x-4.items-center
.title.flex.text-m.grey-color Email:
.flex {{data?.email}}
.flex.gap-x-4.items-center
.title.flex.text-m.grey-color Страхование:
.flex.gap-x-2.items-center
span {{data?.company}}
.policy.flex.items-center.gap-x-2.pl-3.pr-2.h-7
span {{data?.policy}}
q-icon.cursor-pointer.grey-fill(
@click="copyValue(data.policy)",
name="app:copy", size="18px"
)
.flex.gap-x-4.items-center
.title.flex.text-m.grey-color Особые отметки:
.wrap.flex.gap-x-1.gap-y-1
.flex.h-7.w-fit.items-center.px-3.rounded(
v-for="mark in data.marks", :style="{background: mark.color}"
) {{mark.name}}
.footer.flex
</template>
<script>
export default {
name: "MedcardModal",
props: {
data: Object,
},
data() {
return {
priorities: [
{ id: 0, color: "none-priority", name: "Без приоритета" },
{ id: 1, color: "red-color", name: "Высокий" },
{ id: 2, color: "yellow-color", name: "Средний" },
{ id: 3, color: "green-color", name: "Низкий" },
],
information: [
{ title: "Соцсети: ", data: [] },
{ title: "Телефон: ", data: [] },
{ title: "Email: ", data: [] },
{ title: "Страхование: ", data: [] },
{ title: "Особые отметки: ", data: [] },
],
};
},
computed: {
selectedPriority() {
return this.priorities.find((e) => e.id === this.data.priority).color;
},
selectedPriorityName() {
return this.priorities.find((e) => e.id === this.data.priority).name;
},
},
methods: {
choiceFill(fill) {
return `radial-gradient(closest-side, white 45px, transparent 80% 100%), conic-gradient(var(--aqua-color) ${fill}, var(--gray-secondary) 0%)`;
},
copyValue(policy) {
navigator.clipboard.writeText(policy);
},
},
};
</script>
<style lang="sass" scoped>
.wrapper
width: 744px
color: var(--font-dark-blue-color)
.header
border-bottom: 1px solid var(--gray-secondary)
padding: 16px 32px 25px 33px
.info
max-width: 424px
.circle
width: 100px
height: 100px
.title
width: 132px
.policy
border-radius: 4px
border: 1px solid var(--gray-scondary)
background: var(--gray-thirdly)
.network
padding: 8px 8px 8px 2px
border-radius: 28px
border: 1px solid var(--gray-secondary)
&:hover
background: var(--gray-secondary)
.wrap
flex-wrap: wrap !important
.none-priority
background: var(--font-grey-color)
.red-color
background: var(--system-color-red)
.yellow-color
background: var(--system-color-yellow)
.green-color
background: var(--system-color-green)
.grey-color
color: var(--font-grey-color)
.white-color
color: var(--default-white)
.grey-fill :deep(path)
fill: var(--font-grey-color)
.blue-fill :deep(path)
fill: var(--btn-blue-color)
</style>

View File

@@ -111,6 +111,7 @@ export const patientList = [
patronymic: "Александрович", patronymic: "Александрович",
birthday: "28.03.1980", birthday: "28.03.1980",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -121,7 +122,28 @@ export const patientList = [
email: "gaevaia@yandex.ru", email: "gaevaia@yandex.ru",
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "90%", fill: "33%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 1, id: 1,
@@ -130,6 +152,7 @@ export const patientList = [
patronymic: "Олегович", patronymic: "Олегович",
birthday: "01.03.1975", birthday: "01.03.1975",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -141,6 +164,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "20%", fill: "20%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 2, id: 2,
@@ -149,6 +193,7 @@ export const patientList = [
patronymic: "Васильевич", patronymic: "Васильевич",
birthday: "13.07.1999", birthday: "13.07.1999",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -160,6 +205,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 3, id: 3,
@@ -168,6 +234,7 @@ export const patientList = [
patronymic: "Робертович", patronymic: "Робертович",
birthday: "11.11.1991", birthday: "11.11.1991",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -179,6 +246,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 4, id: 4,
@@ -187,6 +275,7 @@ export const patientList = [
patronymic: "Алексеевич", patronymic: "Алексеевич",
birthday: "12.03.1989", birthday: "12.03.1989",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -198,6 +287,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 5, id: 5,
@@ -206,6 +316,7 @@ export const patientList = [
patronymic: "Васильевич", patronymic: "Васильевич",
birthday: "31.07.1949", birthday: "31.07.1949",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -217,6 +328,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 6, id: 6,
@@ -225,6 +357,7 @@ export const patientList = [
patronymic: "Олеговна", patronymic: "Олеговна",
birthday: "12.11.1995", birthday: "12.11.1995",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -236,6 +369,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 7, id: 7,
@@ -244,6 +398,7 @@ export const patientList = [
patronymic: "Алексеевич", patronymic: "Алексеевич",
birthday: "15.05.1989", birthday: "15.05.1989",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -255,6 +410,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 8, id: 8,
@@ -263,6 +439,7 @@ export const patientList = [
patronymic: "Васильевич", patronymic: "Васильевич",
birthday: "13.07.2000", birthday: "13.07.2000",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -274,6 +451,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 9, id: 9,
@@ -282,6 +480,7 @@ export const patientList = [
patronymic: "Федорович", patronymic: "Федорович",
birthday: "12.12.1986", birthday: "12.12.1986",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -293,6 +492,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
{ {
id: 10, id: 10,
@@ -301,6 +521,7 @@ export const patientList = [
patronymic: "Алексеевич", patronymic: "Алексеевич",
birthday: "13.03.1979", birthday: "13.03.1979",
avatar: personImage, avatar: personImage,
medicalNumber: "#12314",
check: false, check: false,
view: false, view: false,
viewDate: "", viewDate: "",
@@ -312,6 +533,27 @@ export const patientList = [
company: "ООО «АльфаСтрахование»", company: "ООО «АльфаСтрахование»",
policy: "№ 2131-1331-4142", policy: "№ 2131-1331-4142",
fill: "50%", fill: "50%",
marks: [
{
id: 0,
name: "Неправильный прикус",
color: "#D8E3FF",
},
{
id: 1,
name: "Нервозность",
color: "#CEF1F3",
},
{
id: 2,
name: "Парадантит",
color: "#EBDBFF",
},
],
networks: [
{ id: 0, name: "VK", link: "vk.com/", icon: "app:vk" },
{ id: 1, name: "Telegram", link: "tg.com/", icon: "app:tg" },
],
}, },
], ],
choice: false, choice: false,

View File

@@ -58,6 +58,7 @@ module.exports = {
"19px": "19px", "19px": "19px",
"22px": "22px", "22px": "22px",
"23px": "23px", "23px": "23px",
"25px": "25px",
"27px": "27px", "27px": "27px",
"29_25px": "29.25px", "29_25px": "29.25px",
"30px": "30px", "30px": "30px",