WIP Частично заменила инпуты
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
v-model="value",
|
v-model="value",
|
||||||
:name="name",
|
:name="name",
|
||||||
:multiple="multiple",
|
:multiple="multiple",
|
||||||
:class="{'font-input': true, 'doc': doc}",
|
:class="{'circle': circle, 'font-input': true, 'doc': doc}",
|
||||||
:input-style="{resize: resize,}",
|
:input-style="{resize: resize,}",
|
||||||
:borderless="borderless",
|
:borderless="borderless",
|
||||||
:placeholder="placeholder",
|
:placeholder="placeholder",
|
||||||
@@ -78,6 +78,7 @@ export default {
|
|||||||
name: String,
|
name: String,
|
||||||
important: Boolean,
|
important: Boolean,
|
||||||
size: String,
|
size: String,
|
||||||
|
circle: Boolean,
|
||||||
},
|
},
|
||||||
emits: ["update:modelValue"],
|
emits: ["update:modelValue"],
|
||||||
computed: {
|
computed: {
|
||||||
@@ -214,4 +215,7 @@ export default {
|
|||||||
font-weight: 500
|
font-weight: 500
|
||||||
font-size: 12px
|
font-size: 12px
|
||||||
line-height: 135% !important
|
line-height: 135% !important
|
||||||
|
|
||||||
|
.input :deep(.q-field__marginal)
|
||||||
|
height: auto !important
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
.flex.w-full(class="gap-x-1.5")
|
.flex.w-full(class="gap-x-1.5")
|
||||||
base-select(:items="items", v-model="network.kind")
|
base-select(:items="items", v-model="network.kind")
|
||||||
base-input.w-full(v-model="network.username", placeholder="Ссылкa", outlined, :rule="ruleInput", no-error-icon)
|
base-input.w-full(v-model="network.username", placeholder="Ссылкa", :rule="ruleInput", size="M")
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BaseInput from "@/components/base/BaseInput";
|
import BaseInput from "@/components/BaseInput.vue";
|
||||||
import BaseSelect from "@/components/base/BaseSelect.vue";
|
import BaseSelect from "@/components/base/BaseSelect.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "TableAddingNetwork",
|
name: "TableAddingNetwork",
|
||||||
|
|||||||
@@ -1,27 +1,18 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
base-input-container.gap-y-2(:label="label", :style="{width: width + 'px' }")
|
base-input-container.gap-y-2(:label="label", :style="{width: width + 'px', ...sizeVariable }")
|
||||||
q-input(
|
q-input.input(
|
||||||
v-model="value",
|
v-model="value",
|
||||||
:name="name",
|
:name="name",
|
||||||
:class="{'circle': circle, 'font-input': true}",
|
:input-style="{resize: resize}",
|
||||||
:input-style="{ color: textColor, borderColor: borderColor, resize: resize}",
|
|
||||||
:borderless="borderless",
|
|
||||||
:placeholder="placeholder",
|
:placeholder="placeholder",
|
||||||
:outlined="outlined",
|
outlined,
|
||||||
:dense="dense",
|
|
||||||
:readonly="readonly",
|
:readonly="readonly",
|
||||||
:disable="disabled",
|
:disable="disabled",
|
||||||
:filled="filled",
|
mask="##.##.####",
|
||||||
mask="##.##.####"
|
|
||||||
:bg-color="filled || standout ? '' : 'white'",
|
|
||||||
:rules="[checkInput]",
|
:rules="[checkInput]",
|
||||||
:lazy-rules="lazyRule",
|
:lazy-rules="lazyRule",
|
||||||
:item-aligned="itemAligned",
|
:item-aligned="itemAligned",
|
||||||
:no-error-icon="noErrorIcon",
|
no-error-icon,
|
||||||
:maxlength="maxLength",
|
|
||||||
:autogrow="autogrow",
|
|
||||||
:square="square",
|
|
||||||
:standout="standout"
|
|
||||||
:accept="accept",
|
:accept="accept",
|
||||||
:debounce="debounce",
|
:debounce="debounce",
|
||||||
hide-bottom-space,
|
hide-bottom-space,
|
||||||
@@ -31,60 +22,32 @@
|
|||||||
q-icon(
|
q-icon(
|
||||||
name="app:calendar",
|
name="app:calendar",
|
||||||
class="cursor-pointer",
|
class="cursor-pointer",
|
||||||
size="16px"
|
size="18px"
|
||||||
)
|
)
|
||||||
q-popup-proxy(cover, transition-show="scale", transition-hide="scale")
|
q-menu(
|
||||||
q-date(
|
:style="{'margin-top': '8px !important'}",
|
||||||
v-model="value",
|
v-model="calendarVisibility",
|
||||||
mask="DD.MM.YYYY",
|
transition-show="scale",
|
||||||
minimal
|
transition-hide="scale",
|
||||||
|
self="top middle",
|
||||||
|
:offset="[118, 14]"
|
||||||
)
|
)
|
||||||
.flex.items-center.justify-end
|
base-calendar(
|
||||||
q-btn(
|
v-model="internalDate",
|
||||||
v-close-popup,
|
:start-year="2000",
|
||||||
label="Закрыть",
|
:save="closeCalendar",
|
||||||
color="primary",
|
@update:model-value="transmitInternalDate"
|
||||||
flat,
|
|
||||||
no-caps
|
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BaseInputContainer from "@/components/base/BaseInputContainer.vue";
|
import BaseInputContainer from "@/components/base/BaseInputContainer.vue";
|
||||||
import * as moment from "moment/moment";
|
import * as moment from "moment/moment";
|
||||||
|
import BaseCalendar from "@/components/base/Calendar/BaseCalendar.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "BaseInputDate",
|
name: "BaseInputDate",
|
||||||
components: { BaseInputContainer },
|
components: { BaseInputContainer, BaseCalendar },
|
||||||
props: {
|
props: {
|
||||||
circle: Boolean,
|
|
||||||
dense: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
outlined: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
square: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
filled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
borderless: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
autogrow: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
standout: {
|
|
||||||
type: [Boolean, String],
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
accept: {
|
accept: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "",
|
default: "",
|
||||||
@@ -95,11 +58,7 @@ export default {
|
|||||||
},
|
},
|
||||||
debounce: [String, Number],
|
debounce: [String, Number],
|
||||||
width: Number,
|
width: Number,
|
||||||
maxLength: Number,
|
|
||||||
textColor: String,
|
|
||||||
borderColor: String,
|
|
||||||
lazyRule: [Boolean, String],
|
lazyRule: [Boolean, String],
|
||||||
noErrorIcon: Boolean,
|
|
||||||
itemAligned: Boolean,
|
itemAligned: Boolean,
|
||||||
modelValue: Date,
|
modelValue: Date,
|
||||||
placeholder: String,
|
placeholder: String,
|
||||||
@@ -108,18 +67,30 @@ export default {
|
|||||||
readonly: Boolean,
|
readonly: Boolean,
|
||||||
iconLeft: Boolean,
|
iconLeft: Boolean,
|
||||||
name: String,
|
name: String,
|
||||||
|
size: String,
|
||||||
},
|
},
|
||||||
emits: ["update:modelValue"],
|
emits: ["update:modelValue"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
calendarVisibility: false,
|
||||||
|
internalDate: null,
|
||||||
|
};
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
value: {
|
value: {
|
||||||
get() {
|
get() {
|
||||||
if (
|
if (
|
||||||
moment(this.modelValue).isValid() &&
|
moment(this.modelValue).isValid() &&
|
||||||
typeof this.modelValue === "object"
|
typeof this.modelValue === "object"
|
||||||
)
|
) {
|
||||||
|
this.changeInternalDate(moment(this.modelValue));
|
||||||
return moment(this.modelValue).format("DD.MM.YYYY");
|
return moment(this.modelValue).format("DD.MM.YYYY");
|
||||||
if (moment(this.convertFormat(this.modelValue)).isValid())
|
}
|
||||||
|
if (moment(this.convertFormat(this.modelValue)).isValid()) {
|
||||||
|
this.changeInternalDate(moment(this.modelValue));
|
||||||
return this.modelValue;
|
return this.modelValue;
|
||||||
|
}
|
||||||
|
this.changeInternalDate(null);
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
set(value) {
|
set(value) {
|
||||||
@@ -131,6 +102,50 @@ export default {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
sizeVariable() {
|
||||||
|
switch (this.size) {
|
||||||
|
case "XS":
|
||||||
|
return {
|
||||||
|
"--input-height": "28px",
|
||||||
|
"--text-size": "12px",
|
||||||
|
"--line-height": "135%",
|
||||||
|
"--px": "0 8px",
|
||||||
|
"--py": "10px 0",
|
||||||
|
};
|
||||||
|
case "S":
|
||||||
|
return {
|
||||||
|
"--input-height": "32px",
|
||||||
|
"--text-size": "12px",
|
||||||
|
"--line-height": "135%",
|
||||||
|
"--px": "0 8px",
|
||||||
|
"--py": "10px 0",
|
||||||
|
};
|
||||||
|
case "M":
|
||||||
|
return {
|
||||||
|
"--input-height": "40px",
|
||||||
|
"--text-size": "16px",
|
||||||
|
"--line-height": "normal",
|
||||||
|
"--px": "0 16px",
|
||||||
|
"--py": "8px 0",
|
||||||
|
};
|
||||||
|
case "L":
|
||||||
|
return {
|
||||||
|
"--input-height": "48px",
|
||||||
|
"--text-size": "16px",
|
||||||
|
"--line-height": "normal",
|
||||||
|
"--px": "0 16px",
|
||||||
|
"--py": "8px 0",
|
||||||
|
};
|
||||||
|
default:
|
||||||
|
return {
|
||||||
|
"--input-height": "56px",
|
||||||
|
"--text-size": "16px",
|
||||||
|
"--line-height": "normal",
|
||||||
|
"--px": "0 16px",
|
||||||
|
"--py": "8px 0",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
convertFormat(date) {
|
convertFormat(date) {
|
||||||
@@ -141,6 +156,15 @@ export default {
|
|||||||
checkInput(val) {
|
checkInput(val) {
|
||||||
return moment(this.convertFormat(val)).isValid();
|
return moment(this.convertFormat(val)).isValid();
|
||||||
},
|
},
|
||||||
|
closeCalendar() {
|
||||||
|
this.calendarVisibility = false;
|
||||||
|
},
|
||||||
|
changeInternalDate(value) {
|
||||||
|
this.internalDate = value;
|
||||||
|
},
|
||||||
|
transmitInternalDate(value) {
|
||||||
|
this.value = value?.format("DD.MM.YYYY");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -149,17 +173,56 @@ export default {
|
|||||||
.font-input
|
.font-input
|
||||||
font-feature-settings: 'pnum' on, 'lnum' on
|
font-feature-settings: 'pnum' on, 'lnum' on
|
||||||
|
|
||||||
.circle
|
.input :deep(.q-field__native)
|
||||||
width: 100%
|
font-weight: 500
|
||||||
height: 100%
|
font-size: var(--text-size)
|
||||||
border-radius: 50%
|
line-height: var(--line-height)
|
||||||
z-index: 5
|
color: var(--font-dark-blue-color)
|
||||||
opacity: 0
|
padding: var(--py)
|
||||||
cursor: pointer
|
&::placeholder
|
||||||
</style>
|
color: var(--font-grey-color)
|
||||||
<style lang="sass">
|
opacity: 1
|
||||||
.q-field--standout.q-field--readonly .q-field__control:before
|
|
||||||
border: none !important
|
.input :deep(.q-field__control)
|
||||||
.q-field--standout .q-field__control
|
height: var(--input-height) !important
|
||||||
|
color: var(--font-dark-blue-color)
|
||||||
|
padding: var(--px)
|
||||||
|
&:before
|
||||||
|
border-color: var(--border-light-grey-color) !important
|
||||||
|
transition: none
|
||||||
|
&:hover:before
|
||||||
|
border-color: var(--font-grey-color) !important
|
||||||
|
&:after
|
||||||
|
border-width: 1px !important
|
||||||
|
transition: none
|
||||||
|
transform: none !important
|
||||||
|
|
||||||
|
.q-field--disabled :deep(.q-field__control > div)
|
||||||
|
opacity: 1 !important
|
||||||
|
|
||||||
|
.q-field--outlined.q-field--disabled :deep(.q-field__native)
|
||||||
|
color: var(--font-grey-color)
|
||||||
|
|
||||||
|
.q-field--outlined.q-field--disabled :deep(.q-field__control)
|
||||||
background: var(--bg-light-grey) !important
|
background: var(--bg-light-grey) !important
|
||||||
|
|
||||||
|
.q-field--outlined.q-field--readonly :deep(.q-field__control)
|
||||||
|
background: var(--bg-light-grey) !important
|
||||||
|
&:before
|
||||||
|
border-color: var(--bg-light-grey) !important
|
||||||
|
transition: none
|
||||||
|
&:hover:before
|
||||||
|
border-color: var(--bg-light-grey) !important
|
||||||
|
|
||||||
|
.q-field--outlined.q-field--readonly :deep(.q-field__native)
|
||||||
|
cursor: default
|
||||||
|
|
||||||
|
.q-field--error :deep(.q-field__bottom)
|
||||||
|
padding: 4px 0 0 0
|
||||||
|
font-weight: 500
|
||||||
|
font-size: 12px
|
||||||
|
line-height: 135% !important
|
||||||
|
|
||||||
|
.input :deep(.q-field__marginal)
|
||||||
|
height: auto !important
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
type="file",
|
type="file",
|
||||||
id="image-upload",
|
id="image-upload",
|
||||||
accept="image/*",
|
accept="image/*",
|
||||||
@change="(e) => previewImage(e)"
|
@change="(e) => previewImage(e)",
|
||||||
)
|
)
|
||||||
.avatar.flex.absolute.items-center.gap-x-6
|
.avatar.flex.absolute.items-center.gap-x-6
|
||||||
img.avatar.object-cover(for="image-upload", :src="image", v-if="image")
|
img.avatar.object-cover(for="image-upload", :src="image", v-if="image")
|
||||||
@@ -41,14 +41,14 @@
|
|||||||
padding="2px 0 0 0"
|
padding="2px 0 0 0"
|
||||||
)
|
)
|
||||||
q-icon(name="app:ok", size="20px")
|
q-icon(name="app:ok", size="20px")
|
||||||
base-input.w-full(v-model="infoClient.basic.full_name", placeholder="ФИО пациента*", outlined)
|
base-input.w-full(v-model="infoClient.basic.full_name", placeholder="ФИО пациента*", size="M")
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BaseModal from "./BaseModal.vue";
|
import BaseModal from "./BaseModal.vue";
|
||||||
import BaseInput from "./BaseInput.vue";
|
|
||||||
import addImageIcon from "@/assets/icons/photo.svg";
|
import addImageIcon from "@/assets/icons/photo.svg";
|
||||||
import BaseButton from "@/components/base/BaseButton.vue";
|
import BaseButton from "@/components/base/BaseButton.vue";
|
||||||
|
import BaseInput from "@/components/BaseInput.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "BaseInputFullName",
|
name: "BaseInputFullName",
|
||||||
|
|||||||
@@ -1,36 +1,28 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
base-input-container.gap-y-2(:label="label", :style="{width: width + 'px' }")
|
base-input-container.gap-y-2(:label="label", :style="{width: width + 'px', ...sizeVariable }")
|
||||||
q-input(
|
q-input.input(
|
||||||
v-model="value",
|
v-model="value",
|
||||||
:name="name",
|
:name="name",
|
||||||
:class="{'circle': circle, 'font-input': true}",
|
:class="{'font-input': true}",
|
||||||
:input-style="{ color: textColor, borderColor: borderColor, resize: resize}",
|
:input-style="{ resize: resize}",
|
||||||
:borderless="borderless",
|
|
||||||
:placeholder="placeholder",
|
:placeholder="placeholder",
|
||||||
:outlined="outlined",
|
outlined,
|
||||||
:dense="dense",
|
|
||||||
:readonly="readonly",
|
:readonly="readonly",
|
||||||
:disable="disabled",
|
:disable="disabled",
|
||||||
:filled="filled",
|
|
||||||
:bg-color="filled || standout ? '' : 'white'",
|
|
||||||
:rules="[checkTime]",
|
:rules="[checkTime]",
|
||||||
:lazy-rules="lazyRule",
|
:lazy-rules="lazyRule",
|
||||||
:item-aligned="itemAligned",
|
:item-aligned="itemAligned",
|
||||||
:no-error-icon="noErrorIcon",
|
|
||||||
mask="time",
|
mask="time",
|
||||||
:maxlength="maxLength",
|
|
||||||
:autogrow="autogrow",
|
|
||||||
:square="square",
|
|
||||||
:standout="standout"
|
|
||||||
:accept="accept",
|
:accept="accept",
|
||||||
:debounce="debounce",
|
:debounce="debounce",
|
||||||
hide-bottom-space
|
hide-bottom-space,
|
||||||
|
no-error-icon
|
||||||
)
|
)
|
||||||
template(v-slot:append)
|
template(v-slot:append)
|
||||||
q-icon(
|
q-icon(
|
||||||
name="app:time",
|
name="app:time",
|
||||||
class="cursor-pointer",
|
class="cursor-pointer",
|
||||||
size="16px"
|
size="19px"
|
||||||
)
|
)
|
||||||
q-popup-proxy(cover, transition-show="scale", transition-hide="scale")
|
q-popup-proxy(cover, transition-show="scale", transition-hide="scale")
|
||||||
q-time(v-model="value", mask="HH:mm")
|
q-time(v-model="value", mask="HH:mm")
|
||||||
@@ -51,35 +43,6 @@ export default {
|
|||||||
name: "BaseInputTime",
|
name: "BaseInputTime",
|
||||||
components: { BaseInputContainer },
|
components: { BaseInputContainer },
|
||||||
props: {
|
props: {
|
||||||
circle: Boolean,
|
|
||||||
dense: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
outlined: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
square: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
filled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
borderless: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
autogrow: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
standout: {
|
|
||||||
type: [Boolean, String],
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
accept: {
|
accept: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "",
|
default: "",
|
||||||
@@ -90,12 +53,8 @@ export default {
|
|||||||
},
|
},
|
||||||
debounce: [String, Number],
|
debounce: [String, Number],
|
||||||
width: Number,
|
width: Number,
|
||||||
maxLength: Number,
|
|
||||||
textColor: String,
|
|
||||||
borderColor: String,
|
|
||||||
rule: Array,
|
rule: Array,
|
||||||
lazyRule: [Boolean, String],
|
lazyRule: [Boolean, String],
|
||||||
noErrorIcon: Boolean,
|
|
||||||
itemAligned: Boolean,
|
itemAligned: Boolean,
|
||||||
modelValue: String,
|
modelValue: String,
|
||||||
placeholder: String,
|
placeholder: String,
|
||||||
@@ -104,6 +63,7 @@ export default {
|
|||||||
readonly: Boolean,
|
readonly: Boolean,
|
||||||
iconLeft: Boolean,
|
iconLeft: Boolean,
|
||||||
name: String,
|
name: String,
|
||||||
|
size: String,
|
||||||
},
|
},
|
||||||
emits: ["update:modelValue"],
|
emits: ["update:modelValue"],
|
||||||
computed: {
|
computed: {
|
||||||
@@ -115,6 +75,50 @@ export default {
|
|||||||
this.$emit("update:modelValue", this.checkTime(value) ? value : null);
|
this.$emit("update:modelValue", this.checkTime(value) ? value : null);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
sizeVariable() {
|
||||||
|
switch (this.size) {
|
||||||
|
case "XS":
|
||||||
|
return {
|
||||||
|
"--input-height": "28px",
|
||||||
|
"--text-size": "12px",
|
||||||
|
"--line-height": "135%",
|
||||||
|
"--px": "0 8px",
|
||||||
|
"--py": "10px 0",
|
||||||
|
};
|
||||||
|
case "S":
|
||||||
|
return {
|
||||||
|
"--input-height": "32px",
|
||||||
|
"--text-size": "12px",
|
||||||
|
"--line-height": "135%",
|
||||||
|
"--px": "0 8px",
|
||||||
|
"--py": "10px 0",
|
||||||
|
};
|
||||||
|
case "M":
|
||||||
|
return {
|
||||||
|
"--input-height": "40px",
|
||||||
|
"--text-size": "16px",
|
||||||
|
"--line-height": "normal",
|
||||||
|
"--px": "0 16px",
|
||||||
|
"--py": "8px 0",
|
||||||
|
};
|
||||||
|
case "L":
|
||||||
|
return {
|
||||||
|
"--input-height": "48px",
|
||||||
|
"--text-size": "16px",
|
||||||
|
"--line-height": "normal",
|
||||||
|
"--px": "0 16px",
|
||||||
|
"--py": "8px 0",
|
||||||
|
};
|
||||||
|
default:
|
||||||
|
return {
|
||||||
|
"--input-height": "56px",
|
||||||
|
"--text-size": "16px",
|
||||||
|
"--line-height": "normal",
|
||||||
|
"--px": "0 16px",
|
||||||
|
"--py": "8px 0",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
checkTime(val) {
|
checkTime(val) {
|
||||||
@@ -133,17 +137,56 @@ export default {
|
|||||||
.font-input
|
.font-input
|
||||||
font-feature-settings: 'pnum' on, 'lnum' on
|
font-feature-settings: 'pnum' on, 'lnum' on
|
||||||
|
|
||||||
.circle
|
.input :deep(.q-field__native)
|
||||||
width: 100%
|
font-weight: 500
|
||||||
height: 100%
|
font-size: var(--text-size)
|
||||||
border-radius: 50%
|
line-height: var(--line-height)
|
||||||
z-index: 5
|
color: var(--font-dark-blue-color)
|
||||||
opacity: 0
|
padding: var(--py)
|
||||||
cursor: pointer
|
&::placeholder
|
||||||
</style>
|
color: var(--font-grey-color)
|
||||||
<style lang="sass">
|
opacity: 1
|
||||||
.q-field--standout.q-field--readonly .q-field__control:before
|
|
||||||
border: none !important
|
.input :deep(.q-field__control)
|
||||||
.q-field--standout .q-field__control
|
height: var(--input-height) !important
|
||||||
|
color: var(--font-dark-blue-color)
|
||||||
|
padding: var(--px)
|
||||||
|
&:before
|
||||||
|
border-color: var(--border-light-grey-color) !important
|
||||||
|
transition: none
|
||||||
|
&:hover:before
|
||||||
|
border-color: var(--font-grey-color) !important
|
||||||
|
&:after
|
||||||
|
border-width: 1px !important
|
||||||
|
transition: none
|
||||||
|
transform: none !important
|
||||||
|
|
||||||
|
.q-field--disabled :deep(.q-field__control > div)
|
||||||
|
opacity: 1 !important
|
||||||
|
|
||||||
|
.q-field--outlined.q-field--disabled :deep(.q-field__native)
|
||||||
|
color: var(--font-grey-color)
|
||||||
|
|
||||||
|
.q-field--outlined.q-field--disabled :deep(.q-field__control)
|
||||||
background: var(--bg-light-grey) !important
|
background: var(--bg-light-grey) !important
|
||||||
|
|
||||||
|
.q-field--outlined.q-field--readonly :deep(.q-field__control)
|
||||||
|
background: var(--bg-light-grey) !important
|
||||||
|
&:before
|
||||||
|
border-color: var(--bg-light-grey) !important
|
||||||
|
transition: none
|
||||||
|
&:hover:before
|
||||||
|
border-color: var(--bg-light-grey) !important
|
||||||
|
|
||||||
|
.q-field--outlined.q-field--readonly :deep(.q-field__native)
|
||||||
|
cursor: default
|
||||||
|
|
||||||
|
.q-field--error :deep(.q-field__bottom)
|
||||||
|
padding: 4px 0 0 0
|
||||||
|
font-weight: 500
|
||||||
|
font-size: 12px
|
||||||
|
line-height: 135% !important
|
||||||
|
|
||||||
|
.input :deep(.q-field__marginal)
|
||||||
|
height: auto !important
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -56,11 +56,16 @@ export default {
|
|||||||
type: Function,
|
type: Function,
|
||||||
default: () => {},
|
default: () => {},
|
||||||
},
|
},
|
||||||
|
cancel: {
|
||||||
|
type: Function,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
width: {
|
width: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "286px",
|
default: "286px",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
emits: ["update:modelValue"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
internalDate: moment(),
|
internalDate: moment(),
|
||||||
@@ -95,10 +100,10 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
internalMonth() {
|
internalMonth() {
|
||||||
let formattedMonth = this.internalDate.format("MMMM");
|
let formattedMonth = this.internalDate?.format("MMMM");
|
||||||
return `${
|
return `${
|
||||||
formattedMonth[0].toUpperCase() + formattedMonth.slice(1)
|
formattedMonth[0].toUpperCase() + formattedMonth.slice(1)
|
||||||
} ${this.internalDate.format("YYYY")}`;
|
} ${this.internalDate?.format("YYYY")}`;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -106,6 +111,7 @@ export default {
|
|||||||
this.currentForm = this.forms.find((elem) => elem.component === form);
|
this.currentForm = this.forms.find((elem) => elem.component === form);
|
||||||
},
|
},
|
||||||
changeDate() {
|
changeDate() {
|
||||||
|
if (this.value) {
|
||||||
if (this.range) {
|
if (this.range) {
|
||||||
this.internalDate = this.value?.from?.clone();
|
this.internalDate = this.value?.from?.clone();
|
||||||
this.externalValue = {
|
this.externalValue = {
|
||||||
@@ -116,10 +122,23 @@ export default {
|
|||||||
this.internalDate = this.value?.clone();
|
this.internalDate = this.value?.clone();
|
||||||
this.externalValue = this.value?.clone();
|
this.externalValue = this.value?.clone();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (this.range) {
|
||||||
|
this.internalDate = moment();
|
||||||
|
this.externalValue = {
|
||||||
|
from: null,
|
||||||
|
to: null,
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
this.internalDate = moment();
|
||||||
|
this.externalValue = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
cancelChanges() {
|
cancelChanges() {
|
||||||
this.changeDate();
|
this.changeDate();
|
||||||
this.changeForm("CalendarDates");
|
this.changeForm("CalendarDates");
|
||||||
|
this.cancel();
|
||||||
},
|
},
|
||||||
saveExternalChanges() {
|
saveExternalChanges() {
|
||||||
if (this.range)
|
if (this.range)
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ export default {
|
|||||||
},
|
},
|
||||||
selectDate(date) {
|
selectDate(date) {
|
||||||
if (!this.range) {
|
if (!this.range) {
|
||||||
this.externalValue = date;
|
this.externalValue = date.clone();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.rangeCount) {
|
if (this.rangeCount) {
|
||||||
|
|||||||
@@ -2,16 +2,15 @@
|
|||||||
.flex.justify-between.w-full.h-fit
|
.flex.justify-between.w-full.h-fit
|
||||||
.flex.gap-2.w-fit.h-fit
|
.flex.gap-2.w-fit.h-fit
|
||||||
.input
|
.input
|
||||||
base-input(
|
base-input.search(
|
||||||
:with-icon="true",
|
|
||||||
icon-position="left",
|
|
||||||
v-model="searchClient",
|
v-model="searchClient",
|
||||||
placeholder="Введите фамилию",
|
placeholder="Введите фамилию",
|
||||||
@keyup.enter="searchLastName",
|
@keyup.enter="searchLastName",
|
||||||
outlined
|
size="M",
|
||||||
|
:width="280",
|
||||||
|
:icon-left="!searchClient"
|
||||||
)
|
)
|
||||||
.flex.items-center.cursor-pointer
|
q-icon(name="app:search", size="18px", v-if="!searchClient")
|
||||||
.icon-search
|
|
||||||
base-button(
|
base-button(
|
||||||
v-if="createdClientName === ''",
|
v-if="createdClientName === ''",
|
||||||
@click="searchLastName",
|
@click="searchLastName",
|
||||||
@@ -42,8 +41,8 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ClientsTableHeaderActions from "@/pages/clients/components/ClientsTableHeaderActions";
|
import ClientsTableHeaderActions from "@/pages/clients/components/ClientsTableHeaderActions";
|
||||||
import BaseInput from "@/components/base/BaseInput";
|
|
||||||
import BaseButton from "@/components/base/BaseButton.vue";
|
import BaseButton from "@/components/base/BaseButton.vue";
|
||||||
|
import BaseInput from "@/components/BaseInput.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "ClientsTableHat",
|
name: "ClientsTableHat",
|
||||||
@@ -97,4 +96,6 @@ export default {
|
|||||||
min-width: 280px
|
min-width: 280px
|
||||||
.on-left
|
.on-left
|
||||||
margin-right: 10px
|
margin-right: 10px
|
||||||
|
.search :deep(.q-field__prepend)
|
||||||
|
padding-right: 6px !important
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -5,66 +5,60 @@
|
|||||||
v-model="addresses.full_address",
|
v-model="addresses.full_address",
|
||||||
placeholder="Введите адрес целиком",
|
placeholder="Введите адрес целиком",
|
||||||
label="Полный адрес",
|
label="Полный адрес",
|
||||||
outlined
|
size="M"
|
||||||
)
|
)
|
||||||
.flex.items-center.justify-center.relative
|
.flex.items-center.justify-center.relative
|
||||||
.line.absolute
|
.line.absolute
|
||||||
span.text-sm.separator.px-2 или
|
span.text-sm.separator.px-2 или
|
||||||
.grid.grid-cols-2.gap-y-6.gap-x-4
|
.grid.grid-cols-2.gap-y-6.gap-x-4
|
||||||
base-input(
|
base-input(
|
||||||
disabled,
|
|
||||||
filled,
|
|
||||||
placeholder="Введите город",
|
|
||||||
v-model="addresses.city",
|
v-model="addresses.city",
|
||||||
label="Город",
|
label="Город",
|
||||||
outlined
|
placeholder="Введите город",
|
||||||
|
disabled,
|
||||||
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
disabled,
|
|
||||||
filled,
|
|
||||||
placeholder="Введите область",
|
|
||||||
v-model="addresses.region",
|
v-model="addresses.region",
|
||||||
label="Область",
|
label="Область",
|
||||||
outlined
|
placeholder="Введите область",
|
||||||
|
disabled,
|
||||||
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
disabled,
|
|
||||||
filled,
|
|
||||||
placeholder="Введите улицу",
|
|
||||||
v-model="addresses.street",
|
v-model="addresses.street",
|
||||||
label="Улица",
|
label="Улица",
|
||||||
outlined
|
placeholder="Введите улицу",
|
||||||
|
disabled,
|
||||||
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
disabled,
|
|
||||||
filled,
|
|
||||||
placeholder="Номер дома",
|
|
||||||
v-model="addresses.house_number",
|
v-model="addresses.house_number",
|
||||||
label="Дом",
|
label="Дом",
|
||||||
outlined
|
placeholder="Номер дома",
|
||||||
|
disabled,
|
||||||
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
disabled,
|
|
||||||
filled,
|
|
||||||
placeholder="Номер квартиры",
|
|
||||||
v-model="addresses.apartment_number",
|
v-model="addresses.apartment_number",
|
||||||
label="Квартира",
|
label="Квартира",
|
||||||
outlined
|
placeholder="Номер квартиры",
|
||||||
|
disabled,
|
||||||
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
disabled,
|
|
||||||
filled,
|
|
||||||
placeholder="000000",
|
|
||||||
mask="######",
|
|
||||||
v-model="addresses.zip_code",
|
v-model="addresses.zip_code",
|
||||||
label="Индекс",
|
label="Индекс",
|
||||||
outlined
|
mask="######",
|
||||||
|
placeholder="000000",
|
||||||
|
disabled,
|
||||||
|
size="M"
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BaseInput from "@/components/base/BaseInput";
|
|
||||||
import BaseCustomSelect from "@/components/base/BaseCustomSelect";
|
import BaseCustomSelect from "@/components/base/BaseCustomSelect";
|
||||||
|
import BaseInput from "@/components/BaseInput.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "FormCreateAddresses",
|
name: "FormCreateAddresses",
|
||||||
@@ -79,7 +73,7 @@ export default {
|
|||||||
|
|
||||||
<style lang="sass" scoped>
|
<style lang="sass" scoped>
|
||||||
.wrapper-addresses
|
.wrapper-addresses
|
||||||
height: 368px
|
height: 380px
|
||||||
overflow-y: auto
|
overflow-y: auto
|
||||||
&::-webkit-scrollbar
|
&::-webkit-scrollbar
|
||||||
width: 4px
|
width: 4px
|
||||||
|
|||||||
@@ -7,27 +7,27 @@
|
|||||||
v-model="basicInfo.priority",
|
v-model="basicInfo.priority",
|
||||||
label="Приоритет"
|
label="Приоритет"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input-date(
|
||||||
type="date"
|
|
||||||
v-model="basicInfo.birth_date",
|
v-model="basicInfo.birth_date",
|
||||||
|
size="M",
|
||||||
|
important,
|
||||||
label="Дата рождения",
|
label="Дата рождения",
|
||||||
outlined,
|
placeholder="Дата рождения"
|
||||||
important
|
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
v-model="phone.username",
|
v-model="phone.username",
|
||||||
placeholder="+7 (915) 644–92–23",
|
placeholder="+7 (915) 644–92–23",
|
||||||
mask="+7 (###) ###-##-##",
|
mask="+7 (###) ###-##-##",
|
||||||
label="Номер телефона",
|
label="Номер телефона",
|
||||||
outlined,
|
size="M",
|
||||||
important
|
important
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
v-model="email.username",
|
v-model="email.username",
|
||||||
placeholder="user@yandex.ru",
|
placeholder="user@yandex.ru",
|
||||||
label="Email",
|
label="Email",
|
||||||
outlined,
|
important,
|
||||||
important
|
size="M",
|
||||||
)
|
)
|
||||||
.flex.flex-col.col-start-1.col-end-3.w-100(class="gap-y-1.5")
|
.flex.flex-col.col-start-1.col-end-3.w-100(class="gap-y-1.5")
|
||||||
span.text-sm.font-semibold.opacity-40.input-info Ссылки на соцсети
|
span.text-sm.font-semibold.opacity-40.input-info Ссылки на соцсети
|
||||||
@@ -43,9 +43,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BaseInput from "@/components/base/BaseInput";
|
|
||||||
import BaseAddingNetwork from "@/components/base/BaseAddingNetwork";
|
import BaseAddingNetwork from "@/components/base/BaseAddingNetwork";
|
||||||
import BaseSelect from "@/components/base/BaseSelect";
|
import BaseSelect from "@/components/base/BaseSelect";
|
||||||
|
import BaseInput from "@/components/BaseInput.vue";
|
||||||
|
import BaseInputDate from "@/components/base/BaseInputDate.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "FormCreateBasicInfo",
|
name: "FormCreateBasicInfo",
|
||||||
@@ -53,6 +54,7 @@ export default {
|
|||||||
BaseInput,
|
BaseInput,
|
||||||
BaseAddingNetwork,
|
BaseAddingNetwork,
|
||||||
BaseSelect,
|
BaseSelect,
|
||||||
|
BaseInputDate,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
priorityList: Array,
|
priorityList: Array,
|
||||||
|
|||||||
@@ -4,59 +4,59 @@
|
|||||||
span.title-info.text-base.font-bold Паспортные данные
|
span.title-info.text-base.font-bold Паспортные данные
|
||||||
.grid.grid-cols-2.gap-x-4.gap-y-6
|
.grid.grid-cols-2.gap-x-4.gap-y-6
|
||||||
base-input(
|
base-input(
|
||||||
mask="#### ######",
|
|
||||||
v-model="identityDocument.pass.series_number",
|
v-model="identityDocument.pass.series_number",
|
||||||
|
mask="#### ######",
|
||||||
placeholder="0000 000000",
|
placeholder="0000 000000",
|
||||||
label="Серия и номер",
|
label="Серия и номер",
|
||||||
outlined
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
v-model="identityDocument.pass.issued_by_org",
|
v-model="identityDocument.pass.issued_by_org",
|
||||||
placeholder="Точно как в паспорте",
|
placeholder="Точно как в паспорте",
|
||||||
label="Кем выдан",
|
label="Кем выдан",
|
||||||
outlined
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
mask="###-###",
|
|
||||||
v-model="identityDocument.pass.issued_by_org_code",
|
v-model="identityDocument.pass.issued_by_org_code",
|
||||||
|
mask="###-###",
|
||||||
placeholder="000–000",
|
placeholder="000–000",
|
||||||
label="Код подразделения",
|
label="Код подразделения",
|
||||||
outlined
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input-date(
|
||||||
type="date"
|
|
||||||
v-model="identityDocument.pass.issued_by_date",
|
v-model="identityDocument.pass.issued_by_date",
|
||||||
placeholder="Дата",
|
placeholder="Дата",
|
||||||
label="Дата выдачи",
|
label="Дата выдачи",
|
||||||
outlined
|
size="M"
|
||||||
)
|
)
|
||||||
.flex.flex-col.gap-y-6
|
.flex.flex-col.gap-y-6
|
||||||
span.title-info.text-base.font-bold СНИЛС и ИНН
|
span.title-info.text-base.font-bold СНИЛС и ИНН
|
||||||
.grid.grid-cols-2.gap-x-4.gap-y-6
|
.grid.grid-cols-2.gap-x-4.gap-y-6
|
||||||
base-input(
|
base-input(
|
||||||
disabled,
|
|
||||||
filled,
|
|
||||||
mask="###-###-### ##",
|
|
||||||
v-model="identityDocument.snils.number",
|
v-model="identityDocument.snils.number",
|
||||||
|
mask="###-###-### ##",
|
||||||
placeholder="000–000–000 00",
|
placeholder="000–000–000 00",
|
||||||
label="Номер СНИЛС"
|
label="Номер СНИЛС",
|
||||||
|
disabled,
|
||||||
|
size="M"
|
||||||
)
|
)
|
||||||
base-input(
|
base-input(
|
||||||
disabled,
|
|
||||||
filled,
|
|
||||||
mask="############",
|
|
||||||
v-model="identityDocument.inn.number",
|
v-model="identityDocument.inn.number",
|
||||||
placeholder="000000000000",
|
placeholder="000000000000",
|
||||||
label="Номер ИНН"
|
mask="############",
|
||||||
|
label="Номер ИНН",
|
||||||
|
disabled,
|
||||||
|
size="M"
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BaseInput from "@/components/base/BaseInput";
|
import BaseInput from "@/components/BaseInput.vue";
|
||||||
|
import BaseInputDate from "@/components/base/BaseInputDate.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "FormCreateIdentityDocuments",
|
name: "FormCreateIdentityDocuments",
|
||||||
components: { BaseInput },
|
components: { BaseInput, BaseInputDate },
|
||||||
props: {
|
props: {
|
||||||
identityDocument: Object,
|
identityDocument: Object,
|
||||||
saveClient: Function,
|
saveClient: Function,
|
||||||
|
|||||||
@@ -6,18 +6,14 @@
|
|||||||
label="Дата осмотра",
|
label="Дата осмотра",
|
||||||
placeholder="Выберите дату"
|
placeholder="Выберите дату"
|
||||||
:width="202",
|
:width="202",
|
||||||
type="date",
|
size="M"
|
||||||
textColor="var(--font-dark-blue-color)"
|
|
||||||
outlined,
|
|
||||||
)
|
)
|
||||||
base-input-time(
|
base-input-time(
|
||||||
v-model="protocolData.startTime"
|
v-model="protocolData.startTime"
|
||||||
label="Время осмотра",
|
label="Время осмотра",
|
||||||
:width="202",
|
:width="202",
|
||||||
outlined,
|
placeholder="Выберите время",
|
||||||
type="time",
|
size="M"
|
||||||
textColor="var(--font-dark-blue-color)",
|
|
||||||
placeholder="Выберите время"
|
|
||||||
)
|
)
|
||||||
.flex.flex-col.gap-y-6px
|
.flex.flex-col.gap-y-6px
|
||||||
span.color-grey.line-height.text-sm.font-semibold Врач
|
span.color-grey.line-height.text-sm.font-semibold Врач
|
||||||
@@ -70,8 +66,8 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
protocolData: {
|
protocolData: {
|
||||||
date: new Date(),
|
date: null,
|
||||||
startTime: moment().format("HH:mm"),
|
startTime: null,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user