diff --git a/server.js b/server.js
index 54901f7..5b68003 100644
--- a/server.js
+++ b/server.js
@@ -170,335 +170,279 @@ const dataClients = {
const clientDetail = [
{
person_id: "14ff401c-2b7b-4d9a-9159-720c74d8b23c",
- additional_info: {
- snils: {
- number: {
- value: "812–183–139 21",
- copy: true,
- },
- },
- inn: {
- number: {
- value: "138291382731",
- copy: true,
- },
- },
- birthday: {
- date: {
- value: "1994-12-04",
- },
- },
- addresses: {
- registrationPlace: {
- value:
- "371311, Московская обл., г. Москва, ул. Комсомольская, д.6, кв. 13",
- },
- actualPlace: {
- value:
- "371311, Московская обл., г. Москва, ул. Комсомольская, д.6, кв. 13",
- },
- },
- docs: [
- {
- name: "Договор оферты.pdf",
- type: "application/pdf",
- },
- {
- name: "Договор о долевом строительстве.pdf",
- type: "application/pdf",
- },
- {
- name: "Какое-то очень очень очень очень длинное название.doc",
- type: "application/msword",
- },
- {
- name: "Договор об оплате.doc",
- type: "application/msword",
- },
- {
- name: "Коммерческое предложение.xls",
- type: "application/vnd.ms-excel",
- },
- {
- name: "Таблица заказов.xls",
- type: "application/vnd.ms-excel",
- },
- ],
- additional: [
- {
- header: "Предпочтения",
- value: "Разговор на “Вы”\nТолько по делу\nТолько официальный стиль",
- name: "",
- type: "",
- },
- {
- header: "Доп.документы",
- value: "",
- name: "Памятка с вопросами на созвоне.pdf",
- type: "application/pdf",
- },
- {
- header: "Его должность",
- value: "Вроде бы важная шишка, пусть будет – Гуру в дизайне",
- name: "",
- type: "",
- },
- {
- header: "Чтобы не забыть",
- value: "Не забудь!",
- name: "",
- type: "",
- },
- ],
+ snils: {
+ numba: "812–183–139 21",
},
+ inn: {
+ numba: "138291382731",
+ },
+ birthday: {
+ date: "1994-12-04",
+ },
+ addresses: {
+ registrationPlace:
+ "371311, Московская обл., г. Москва, ул. Комсомольская, д.6, кв. 13",
+ actualPlace:
+ "371311, Московская обл., г. Москва, ул. Комсомольская, д.6, кв. 13",
+ },
+ docs: [
+ {
+ name: "Договор оферты.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Договор о долевом строительстве.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Какое-то очень очень очень очень длинное название.doc",
+ type: "application/msword",
+ },
+ {
+ name: "Договор об оплате.doc",
+ type: "application/msword",
+ },
+ {
+ name: "Коммерческое предложение.xls",
+ type: "application/vnd.ms-excel",
+ },
+ {
+ name: "Таблица заказов.xls",
+ type: "application/vnd.ms-excel",
+ },
+ ],
+ additional: [
+ {
+ header: "Предпочтения",
+ value: "Разговор на “Вы”\nТолько по делу\nТолько официальный стиль",
+ name: "",
+ type: "",
+ },
+ {
+ header: "Доп.документы",
+ value: "",
+ name: "Памятка с вопросами на созвоне.pdf",
+ type: "application/pdf",
+ },
+ {
+ header: "Его должность",
+ value: "Вроде бы важная шишка, пусть будет – Гуру в дизайне",
+ name: "",
+ type: "",
+ },
+ {
+ header: "Чтобы не забыть",
+ value: "Не забудь!",
+ name: "",
+ type: "",
+ },
+ ],
},
{
person_id: "db831a14-e836-481f-a653-6325de7c311e",
- additional_info: {
- snils: {
- number: {
- value: "834–001–555 35",
- copy: true,
- },
- },
- inn: {
- number: {
- value: "371942327342",
- copy: true,
- },
- },
- birthday: {
- date: {
- value: "1997-09-03",
- },
- },
- addresses: {
- registrationPlace: {
- value:
- "371311, Московская обл., г. Владимир, ул. Гагарина, д.12, кв. 24",
- },
- actualPlace: {
- value:
- "371311, Московская обл., г. Владимир, ул. Гагарина, д.12, кв. 24",
- },
- },
- docs: [
- {
- name: "Договор покупки.pdf",
- type: "application/pdf",
- },
- {
- name: "Договор о оптовых поставках.pdf",
- type: "application/pdf",
- },
- {
- name: "Договор о предоставлении услуг.pdf",
- type: "application/pdf",
- },
- {
- name: "Какое-то очень очень очень очень короткое название.doc",
- type: "application/msword",
- },
- {
- name: "Документация.doc",
- type: "application/msword",
- },
- {
- name: "Отчет.xls",
- type: "application/vnd.ms-excel",
- },
- {
- name: "Заказы.xls",
- type: "application/vnd.ms-excel",
- },
- ],
- additional: [
- {
- header: "По каким вопросам обращатся",
- value: "Обращатся только по вопросам закупок",
- name: "",
- type: "",
- },
- {
- header: "Доп.документы",
- value: "Ответственные за работу",
- name: "Список ответсвенных.xls",
- type: "application/vnd.ms-excel",
- },
- {
- header: "Портфолио",
- value: "Информация о клиенте",
- name: "Портфолио.doc",
- type: "application/msword",
- },
- ],
+ snils: {
+ numba: "834–001–555 35",
},
+ inn: {
+ numba: "371942327342",
+ },
+ birthday: {
+ date: "1997-09-03",
+ },
+ addresses: {
+ registrationPlace:
+ "371311, Московская обл., г. Владимир, ул. Гагарина, д.12, кв. 24",
+ actualPlace:
+ "371311, Московская обл., г. Владимир, ул. Гагарина, д.12, кв. 24",
+ },
+ docs: [
+ {
+ name: "Договор покупки.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Договор о оптовых поставках.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Договор о предоставлении услуг.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Какое-то очень очень очень очень короткое название.doc",
+ type: "application/msword",
+ },
+ {
+ name: "Документация.doc",
+ type: "application/msword",
+ },
+ {
+ name: "Отчет.xls",
+ type: "application/vnd.ms-excel",
+ },
+ {
+ name: "Заказы.xls",
+ type: "application/vnd.ms-excel",
+ },
+ ],
+ additional: [
+ {
+ header: "По каким вопросам обращатся",
+ value: "Обращатся только по вопросам закупок",
+ name: "",
+ type: "",
+ },
+ {
+ header: "Доп.документы",
+ value: "Ответственные за работу",
+ name: "Список ответсвенных.xls",
+ type: "application/vnd.ms-excel",
+ },
+ {
+ header: "Портфолио",
+ value: "Информация о клиенте",
+ name: "Портфолио.doc",
+ type: "application/msword",
+ },
+ ],
},
{
person_id: "db8jd58x-e836-481f-a653-oq1m4e7c09e1",
- additional_info: {
- snils: {
- number: {
- value: "812–183–139 21",
- copy: true,
- },
- },
- inn: {
- number: {
- value: "138291382731",
- copy: true,
- },
- },
- birthday: {
- date: {
- value: "1990-11-05",
- },
- },
- addresses: {
- registrationPlace: {
- value:
- "371311, Московская обл., г. Москва, ул. Комсомольская, д.6, кв. 13",
- },
- actualPlace: {
- value:
- "371311, Московская обл., г. Москва, ул. Комсомольская, д.6, кв. 13",
- },
- },
- docs: [
- {
- name: "Договор оферты.pdf",
- type: "application/pdf",
- },
- {
- name: "Договор о долевом строительстве.pdf",
- type: "application/pdf",
- },
- {
- name: "Какое-то очень очень очень очень длинное название.doc",
- type: "application/msword",
- },
- {
- name: "Договор об оплате.doc",
- type: "application/msword",
- },
- {
- name: "Коммерческое предложение.xls",
- type: "application/vnd.ms-excel",
- },
- {
- name: "Таблица заказов.xls",
- type: "application/vnd.ms-excel",
- },
- ],
- additional: [
- {
- header: "Предпочтения",
- value: "Разговор на “Вы”\nТолько по делу\nТолько официальный стиль",
- name: "",
- type: "",
- },
- {
- header: "Доп.документы",
- value: "",
- name: "Памятка с вопросами на созвоне.pdf",
- type: "application/pdf",
- },
- {
- header: "Его должность",
- value: "Вроде бы важная шишка, пусть будет – Гуру в дизайне",
- name: "",
- type: "",
- },
- {
- header: "Чтобы не забыть",
- value: "Не забудь!",
- name: "",
- type: "",
- },
- ],
+ snils: {
+ numba: "812–183–139 21",
},
+ inn: {
+ numba: "138291382731",
+ },
+ birthday: {
+ date: "1990-11-05",
+ },
+ addresses: {
+ registrationPlace:
+ "371311, Московская обл., г. Москва, ул. Комсомольская, д.6, кв. 13",
+ actualPlace:
+ "371311, Московская обл., г. Москва, ул. Комсомольская, д.6, кв. 13",
+ },
+ docs: [
+ {
+ name: "Договор оферты.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Договор о долевом строительстве.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Какое-то очень очень очень очень длинное название.doc",
+ type: "application/msword",
+ },
+ {
+ name: "Договор об оплате.doc",
+ type: "application/msword",
+ },
+ {
+ name: "Коммерческое предложение.xls",
+ type: "application/vnd.ms-excel",
+ },
+ {
+ name: "Таблица заказов.xls",
+ type: "application/vnd.ms-excel",
+ },
+ ],
+ additional: [
+ {
+ header: "Предпочтения",
+ value: "Разговор на “Вы”\nТолько по делу\nТолько официальный стиль",
+ name: "",
+ type: "",
+ },
+ {
+ header: "Доп.документы",
+ value: "",
+ name: "Памятка с вопросами на созвоне.pdf",
+ type: "application/pdf",
+ },
+ {
+ header: "Его должность",
+ value: "Вроде бы важная шишка, пусть будет – Гуру в дизайне",
+ name: "",
+ type: "",
+ },
+ {
+ header: "Чтобы не забыть",
+ value: "Не забудь!",
+ name: "",
+ type: "",
+ },
+ ],
},
{
person_id: "cs5ms771-e836-kdc4-a653-sc4n567sx123",
- additional_info: {
- snils: {
- number: {
- value: "834–001–555 35",
- copy: true,
- },
- },
- inn: {
- number: {
- value: "371942327342",
- copy: true,
- },
- },
- birthday: {
- date: {
- value: "2000-08-17",
- },
- },
- addresses: {
- registrationPlace: {
- value:
- "371311, Московская обл., г. Владимир, ул. Гагарина, д.12, кв. 24",
- },
- actualPlace: {
- value:
- "371311, Московская обл., г. Владимир, ул. Гагарина, д.12, кв. 24",
- },
- },
- docs: [
- {
- name: "Договор покупки.pdf",
- type: "application/pdf",
- },
- {
- name: "Договор о оптовых поставках.pdf",
- type: "application/pdf",
- },
- {
- name: "Договор о предоставлении услуг.pdf",
- type: "application/pdf",
- },
- {
- name: "Какое-то очень очень очень очень короткое название.doc",
- type: "application/msword",
- },
- {
- name: "Документация.doc",
- type: "application/msword",
- },
- {
- name: "Отчет.xls",
- type: "application/vnd.ms-excel",
- },
- {
- name: "Заказы.xls",
- type: "application/vnd.ms-excel",
- },
- ],
- additional: [
- {
- header: "По каким вопросам обращатся",
- value: "Обращатся только по вопросам закупок",
- name: "",
- type: "",
- },
- {
- header: "Доп.документы",
- value: "Ответственные за работу",
- name: "Список ответсвенных.xls",
- type: "application/vnd.ms-excel",
- },
- {
- header: "Портфолио",
- value: "Информация о клиенте",
- name: "Портфолио.doc",
- type: "application/msword",
- },
- ],
+ snils: {
+ numba: "834–001–555 35",
},
+ inn: {
+ numba: "371942327342",
+ },
+ birthday: {
+ date: "2000-08-17",
+ },
+ addresses: {
+ registrationPlace:
+ "371311, Московская обл., г. Владимир, ул. Гагарина, д.12, кв. 24",
+ actualPlace:
+ "371311, Московская обл., г. Владимир, ул. Гагарина, д.12, кв. 24",
+ },
+ docs: [
+ {
+ name: "Договор покупки.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Договор о оптовых поставках.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Договор о предоставлении услуг.pdf",
+ type: "application/pdf",
+ },
+ {
+ name: "Какое-то очень очень очень очень короткое название.doc",
+ type: "application/msword",
+ },
+ {
+ name: "Документация.doc",
+ type: "application/msword",
+ },
+ {
+ name: "Отчет.xls",
+ type: "application/vnd.ms-excel",
+ },
+ {
+ name: "Заказы.xls",
+ type: "application/vnd.ms-excel",
+ },
+ ],
+ additional: [
+ {
+ header: "По каким вопросам обращатся",
+ value: "Обращатся только по вопросам закупок",
+ name: "",
+ type: "",
+ },
+ {
+ header: "Доп.документы",
+ value: "Ответственные за работу",
+ name: "Список ответсвенных.xls",
+ type: "application/vnd.ms-excel",
+ },
+ {
+ header: "Портфолио",
+ value: "Информация о клиенте",
+ name: "Портфолио.doc",
+ type: "application/msword",
+ },
+ ],
},
];
diff --git a/src/components/TheSidebar.vue b/src/components/TheSidebar.vue
index a8d375f..4dc157b 100644
--- a/src/components/TheSidebar.vue
+++ b/src/components/TheSidebar.vue
@@ -2,14 +2,14 @@
.sidebar.flex.flex-col.justify-between.flex-auto.py-6.box-border
.flex.flex-col.gap-y-6
the-button-sidebar(id="home" path="#/")
- .icon-home
+ .icon-home.icon
the-button-sidebar(id="calendar" path="#/calendar")
- .icon-calendar-2
+ .icon-calendar-2.icon
the-button-sidebar(id="user" path="#/clients")
- .icon-person-2
+ .icon-person-2.icon
.flex.text-4xl.flex-col.gap-y-6
the-button-sidebar(id="settings" path="#/settings")
- .icon-settings
+ .icon-settings.icon
+
+
diff --git a/src/components/base/BaseInput.vue b/src/components/base/BaseInput.vue
index ededb78..3e8916b 100644
--- a/src/components/base/BaseInput.vue
+++ b/src/components/base/BaseInput.vue
@@ -1,6 +1,6 @@
.input-wrapper.flex.gap-x-2.px-4.box-border(class="py-2.5" :style="{ minWidth: widthInput + 'px' }")
- input.w-full.outline-0.text-base.not-italic(:style="{ backgroundColor: backgroundInput, fontSize: fontSizeInput }" :value="value" :type="type" @input="$emit('update:value', $event.target.value)" :placeholder="placeholder" :maxlength="maxLength")
+ input.w-full.outline-0.not-italic(:style="{ backgroundColor: backgroundInput, fontSize: fontSizeInput }" :value="value" :type="type" @input="$emit('update:value', $event.target.value)" :placeholder="placeholder" :maxlength="maxLength")
.slot(v-if="withIcon" :class="iconPosition")
slot.cursor-pointer
@@ -38,4 +38,5 @@ export default {
.input-wrapper
border: 2px solid var(--border-light-grey-color)
border-radius: 4px
+ background-color: var(--default-white)
diff --git a/src/components/base/BasePopup.vue b/src/components/base/BasePopup.vue
new file mode 100644
index 0000000..758d101
--- /dev/null
+++ b/src/components/base/BasePopup.vue
@@ -0,0 +1,32 @@
+
+ .flex.flex-col.items-end.absolute
+ .corner
+ .popup-wrapper.flex.flex-col.gap-y-3.p-4.h-fit(:style="{ width : width + 'px' }")
+ slot
+
+
+
+
+
diff --git a/src/components/base/BaseSelect.vue b/src/components/base/BaseSelect.vue
index b9cb34b..d0e8699 100644
--- a/src/components/base/BaseSelect.vue
+++ b/src/components/base/BaseSelect.vue
@@ -1,11 +1,14 @@
- .flex.justify-between.px-4.w-full.container.items-center.cursor-pointer(@click="openSelect" class="py-2.5" :class="{border: styleBorder}" :style="{ minWidth : widthSelect + 'px'}")
+ .flex.justify-between.box-border.px-4.w-full.container.items-center.cursor-pointer(@click="openSelect" class="py-2.5" :class="{border: styleBorder}" :style="{ minWidth : widthSelect + 'px'}")
.relative.flex.flex-col
- .not-italic.text-base.select.cursor-pointer.w-full {{optionData}}
- .absolute.options(v-show="isSelectOpen" :id="id")
- .not-italic.text-base.option(v-for="(responsible, index) in listData" @click="(e) => chooseOption(e)" :key="index" :id="index") {{responsible}}
- .select-form-separator.cursor-pointer(v-if="withSeparator" )
- .text-sm.ml-2.pt-1.icon-down-arrow.icon.text-center(:class="{ open: isSelectOpen}")
+ .not-italic.select.cursor-pointer.w-full(v-if="!forNetworks") {{optionData}}
+ .absolute.options(v-show="isSelectOpen" :id="id" :style="{ minWidth : widthSelect + 'px'}")
+ .not-italic.option.pl-4.py-1(v-for="responsible in listData" @click="(e) => chooseOption(e)" :key="responsible" :id="responsible") {{responsible}}
+ .not-italic.select.cursor-pointer.w-full(v-if="forNetworks" :class="optionData")
+ .absolute.options(v-show="isSelectOpen" :id="id" :style="{ minWidth : widthSelect + 'px'}")
+ .not-italic.option.pl-4.py-1(v-for="responsible in listData" @click="(e) => chooseOption(e)" :key="responsible.network" :id="responsible.network" :class="responsible.icon")
+ .select-form-separator.cursor-pointer(v-if="withSeparator")
+ .text-sm.ml-2.pt-1.icon-down-arrow.icon.text-center(v-if="!forNetworks" :class="{ open: isSelectOpen}")
@@ -46,7 +47,7 @@ export default {
width: fit-content
background-color: var(--bg-ligth-blue-color)
&.border
- background-color: rgba(255, 255, 255, 0)
+ background-color: var(--default-white)
border: 2px solid var(--border-light-grey-color)
.select
appearance: none
@@ -60,9 +61,14 @@ export default {
.options
z-index: 3
width: max-content
- background-color: var(--bg-ligth-blue-color)
+ background-color: var(--default-white)
+ border: 2px solid var(--border-light-grey-color)
+ border-top: none
+ border-radius: 0 0 4px 4px
+ left: -18px
.option
color: var(--font-black-color)
+ border-bottom: 1px solid var(--border-light-grey-color)
&:hover
background-color: var(--btn-blue-color)
.select-form-separator
diff --git a/src/pages/clients/components/ClientDetailInfoSection.vue b/src/pages/clients/components/ClientDetailInfoSection.vue
index 6e6fa75..a914d6d 100644
--- a/src/pages/clients/components/ClientDetailInfoSection.vue
+++ b/src/pages/clients/components/ClientDetailInfoSection.vue
@@ -10,14 +10,16 @@
table-adding-new-doc(v-if="section === 'docs' && isOpenAddingWrap" :add-new-doc="addNewDoc" :save-docs="saveDocs" :new-docs="docData")
table-adding-new-additional(v-if="section === 'additional' && isOpenAddingWrap" :new-additional-data="additionalData" :add-new-additional="addDocAdditional" :save-additional="saveDocs" )
.section-body.w-full.flex.flex-col.px-4.pt-3.pb-4.gap-y-4
- .flex.flex-col(v-for="(item, key) in settings[section].options" class="gap-y-1.5")
- span.title-section.font-semibold.text-xs(v-if="settings[section].options") {{item}}
+ .flex.flex-col(v-for="(item, key) in sectionInfo" class="gap-y-1.5")
+ span.title-section.font-semibold.text-xs(v-if="settings[section].options") {{settings[section].options[key]}}
span.title-section.font-semibold.text-xs(v-if="item.header") {{item.header}}
- client-detail-input.text-sm.text-sm.w-max-fit(v-if="isChange && item.value" :style="{fontWeight:item.copy&&600}" v-model:value="sectionInfo[key]" :width="settings[section].width")
- .copy.icon-copy.cursor-pointer(v-if="item.copy")
+ client-detail-input.text-sm.text-sm.w-max-fit(v-if="isChange" :style="{fontWeight:key === 'numba'&&600}" v-model:value="sectionInfo[key]" :width="settings[section].width")
+ .copy.icon-copy.cursor-pointer(v-if="item.copy" @click="() => copyValue(item)")
+ .flex(v-if="settings[section].options && !isChange")
+ span.text-sm.w-fit(:style="{fontWeight:key === 'numba'&&600}") {{item}}
+ .copy.icon-copy.cursor-pointer.pl-4(v-if="key === 'numba'" @click="() => copyValue(item)")
.flex(v-if="item.value && !isChange")
- span.text-sm.w-fit(:style="{fontWeight:item.copy&&600}") {{item.value}}
- .copy.icon-copy.cursor-pointer.pl-4(v-if="item.copy")
+ span.text-sm.w-fit {{item.value}}
.flex.items-center(v-if="item.name")
.icon-cancel.cancel.cursor-pointer.pr-3.text-xsm(v-if="isChange" :id="item.name" @click="(e) => deleteDoc(e, section)")
.icon-files.cursor-pointer.pr-3.text-xl(:style="{color:settings.docsColor[item.type]}")
@@ -62,6 +64,9 @@ export default {
};
},
methods: {
+ copyValue(text) {
+ navigator.clipboard.writeText(text);
+ },
openInterfaceChange() {
this.isOpenChange = !this.isOpenChange;
},
diff --git a/src/pages/clients/components/ClientDetailInfoWrapper.vue b/src/pages/clients/components/ClientDetailInfoWrapper.vue
index b15329d..85853f3 100644
--- a/src/pages/clients/components/ClientDetailInfoWrapper.vue
+++ b/src/pages/clients/components/ClientDetailInfoWrapper.vue
@@ -24,5 +24,3 @@ export default {
},
};
-
-
diff --git a/src/pages/clients/components/ClientsActionPopup.vue b/src/pages/clients/components/ClientsActionPopup.vue
index 6ec8ddb..e6dfaa9 100644
--- a/src/pages/clients/components/ClientsActionPopup.vue
+++ b/src/pages/clients/components/ClientsActionPopup.vue
@@ -2,20 +2,23 @@
.flex.flex-col.items-end.absolute.right-2.top-5
.corner
.popup-wrapper.flex.flex-col.gap-y-3.w-10.h-10.p-4
- .button.keep-redaction.flex.gap-x-3
- .icon-edit.icon-redaction
+ .button.keep-redaction.flex.gap-x-3(@click="openChangeData")
+ .icon-edit.icon
span Редактировать
.button.keep-redaction.flex.gap-x-3
- img(src="@/assets/icons/star.svg" alt="Star")
+ .icon-star-off.icon
span На ведение
.button.delete.flex.gap-x-3
- img(src="@/assets/icons/basket.svg" alt="Basket")
+ .icon-basket.icon-delete
span Удалить
@@ -29,7 +32,7 @@ export default {
z-index: 1
.keep-redaction
color: var(--font-dark-blue-color)
-.icon-redaction
+.icon
color: var(--btn-blue-color)
.delete
color: var(--btn-red-color)
@@ -43,4 +46,6 @@ export default {
background-color: var(--default-white)
z-index: 2
overflow: hidden
+.icon-delete
+ color: var(--btn-red-color)
diff --git a/src/pages/clients/components/ClientsTable.vue b/src/pages/clients/components/ClientsTable.vue
index 94536d0..42b7029 100644
--- a/src/pages/clients/components/ClientsTable.vue
+++ b/src/pages/clients/components/ClientsTable.vue
@@ -10,10 +10,7 @@
:id="client.id"
:is-check="marked.includes(client.id)"
:check="selectedCheck"
- :full-name="[client.last_name, client.first_name, client.patronymic]"
- :age="client.birth_date"
- :priority="client.priority"
- :contacts="client.contacts"
+ :client="client"
)
diff --git a/src/pages/clients/components/ClientsTableHat.vue b/src/pages/clients/components/ClientsTableHat.vue
index 41f0179..3f1fcf8 100644
--- a/src/pages/clients/components/ClientsTableHat.vue
+++ b/src/pages/clients/components/ClientsTableHat.vue
@@ -2,7 +2,7 @@
.flex.justify-between.w-full.h-fit
.flex.gap-2.w-fit.h-fit
.input
- base-input(:with-icon="true")
+ base-input(:with-icon="true" icon-position="left")
.icon-search
button.filter-button.flex.items-center.justify-center.box-border(class="px-2.5")
.icon-filter.text-xl.leading-4
diff --git a/src/pages/clients/components/ClientsTableRow.vue b/src/pages/clients/components/ClientsTableRow.vue
index f5daa2f..d36a32c 100644
--- a/src/pages/clients/components/ClientsTableRow.vue
+++ b/src/pages/clients/components/ClientsTableRow.vue
@@ -3,16 +3,17 @@
.row-body.flex.w-full.cursor-pointer(:id="id" @dblclick="(e) => openDetailInfo(e)")
.check-box.flex.justify-center.items-center
clients-table-checkbox(:id="id" :check="check" :is-check="isCheck")
- table-cell-body-name(:value="fullName" :width="columnBody.find(el => el.name === 'fullName').width")
- table-cell-body-age(:value="age" :width="columnBody.find(el => el.name === 'age').width")
- table-cell-body-priority(:value="priority" :width="columnBody.find(el => el.name === 'priority').width")
- table-cell-body-phone(:value="contacts" :width="columnBody.find(el => el.name === 'phone').width")
- table-cell-body-email(:value="contacts" :width="columnBody.find(el => el.name === 'email').width")
- table-cell-body-networks(:networks="contacts" :width="columnBody.find(el => el.name === 'networks').width")
+ table-cell-body-name(:value="dataClient" :avatar="dataClient.avatar" :is-open-change="isOpenChange" :width="columnBody.find(el => el.name === 'fullName').width")
+ table-cell-body-age(:value="dataClient" :is-open-change="isOpenChange" :width="columnBody.find(el => el.name === 'age').width")
+ table-cell-body-priority(:value="dataClient.priority" :choose-priority="choosePriority" :is-open-change="isOpenChange" :width="columnBody.find(el => el.name === 'priority').width")
+ table-cell-body-phone(:value="dataClient" :is-open-change="isOpenChange" :width="columnBody.find(el => el.name === 'phone').width")
+ table-cell-body-email(:value="dataClient" :is-open-change="isOpenChange" :width="columnBody.find(el => el.name === 'email').width")
+ table-cell-body-networks(:delete-network="deleteNetwork" :networks="dataClient.contacts" :is-open-change="isOpenChange" :width="columnBody.find(el => el.name === 'networks').width")
.dots.flex.justify-center.items-center
- .relative.dots-button.icon-dots.cursor-pointer.leading-6.text-center(:tabindex="1" @click="(e) => openPopup(e)" @blur="handleUnFocusPopup")
- clients-action-popup(v-if="isOpenPopup")
- client-detail-info-wrapper(v-if="isOpenDetailInfo" :data-detail="dataDetail" :save-new-doc="saveNewDoc" :delete-doc="deleteDoc")
+ base-button-ok(v-if="isOpenChange" :size="20" :icon-size="10" :dark-style="true" @click="closeChangeData")
+ .relative.dots-button.icon-dots.cursor-pointer.leading-6.text-center(v-if="!isOpenChange" :tabindex="1" @click="(e) => openPopup(e)" @blur="handleUnFocusPopup")
+ clients-action-popup(v-if="isOpenPopup" :open-change-data="openChangeData")
+ client-detail-info-wrapper(v-if="isOpenDetailInfo" :data-detail="dataDetail" :data-document="dataIdentityDocument" :save-new-doc="saveNewDoc" :delete-doc="deleteDoc")
diff --git a/src/pages/clients/components/cells/TableCellBodyEmail.vue b/src/pages/clients/components/cells/TableCellBodyEmail.vue
index f416618..8d6f305 100644
--- a/src/pages/clients/components/cells/TableCellBodyEmail.vue
+++ b/src/pages/clients/components/cells/TableCellBodyEmail.vue
@@ -1,14 +1,18 @@
.flex.box-border.px-4.items-center.w-full(:style="{ minWidth : width + 'px' }")
- span.text-sm {{value.some((el) => el.kind === "EMAIL")?value.find((el) => el.kind === "EMAIL").username:''}}
+ span.text-sm(v-if="!isOpenChange") {{value.email.username}}
+ base-input(v-if="isOpenChange" :width-input="234" v-model:value="value.email.username" :placeholder="value.email.username" )
diff --git a/src/pages/clients/components/cells/TableCellBodyName.vue b/src/pages/clients/components/cells/TableCellBodyName.vue
index dec7e1d..159aeee 100644
--- a/src/pages/clients/components/cells/TableCellBodyName.vue
+++ b/src/pages/clients/components/cells/TableCellBodyName.vue
@@ -1,17 +1,22 @@
- .flex.box-border.px-4.items-center.gap-x-3.w-full(:style="{ minWidth : width + 'px' }")
+ .flex.box-border.px-4.items-center.gap-x-3.w-full.text-sm(:style="{ minWidth : width + 'px' }")
.flex.avatar.justify-center.items-center
- span {{`${value[0][0]}${value[1][0]}`}}
- span.text-sm.font-semibold {{value.join(' ')}}
+ span {{avatar}}
+ span.text-sm.font-semibold(v-if="!isOpenChange") {{value.fullName}}
+ base-input(v-if="isOpenChange" type="text" v-model:value="value.fullName" :width-input="300")
diff --git a/src/pages/clients/components/cells/TableCellBodyNetworks.vue b/src/pages/clients/components/cells/TableCellBodyNetworks.vue
index 31b49ff..e33cb88 100644
--- a/src/pages/clients/components/cells/TableCellBodyNetworks.vue
+++ b/src/pages/clients/components/cells/TableCellBodyNetworks.vue
@@ -1,21 +1,66 @@
.network-cell.flex.box-border.px-4.items-center.w-full(:style="{ minWidth : width + 'px' }")
- .text-xl.icon(v-for="network in networks.filter((el) => el.kind !== 'EMAIL' && el.kind !== 'PHONE')" :id="network.id" :class="settings.settings.find((el) => el.network === network.kind).icon")
+ .flex.gap-x-1
+ .text-xl.icon.relative(v-for="network in getNetworks" :class="settings.settings.find((el) => el.network === network.kind).icon")
+ .absolute.icon-cancel-mini.delete.flex.w-4.h-4.justify-center.items-center.bottom-4.left-2(v-if="isOpenChange" :id="network.id" @click="(e) => deleteNetwork(e)")
+ .flex.relative
+ base-button-plus.ml-3(v-if="isOpenChange && settings.settings.length !== getNetworks.length" :with-border="true" @click="openPopupAdding")
+ base-popup.right-3.top-6(v-if="isOpenPopupAdding" :width="485")
+ base-adding-network(:value="network" :list-adding-networks="getAddingNetworks")
+ base-create-button(text="Добавить" @click="closePopupAdding")
@@ -24,4 +69,9 @@ export default {
column-gap: 2px
.icon
color: var(--btn-blue-color)
+.delete
+ border-radius: 50%
+ background-color: var(--btn-red-color)
+ color: var(--default-white)
+ font-size: 8px
diff --git a/src/pages/clients/components/cells/TableCellBodyPhone.vue b/src/pages/clients/components/cells/TableCellBodyPhone.vue
index f7ca63c..5c5c52c 100644
--- a/src/pages/clients/components/cells/TableCellBodyPhone.vue
+++ b/src/pages/clients/components/cells/TableCellBodyPhone.vue
@@ -1,14 +1,18 @@
- .flex.box-border.px-4.items-center.w-full(:style="{ minWidth : width + 'px' }")
- span.text-sm {{value.some((el) => el.kind === "PHONE")?value.find((el) => el.kind === "PHONE").username:''}}
+ .flex.box-border.px-4.items-center.w-full.text-sm(:style="{ minWidth : width + 'px' }")
+ span.text-sm(v-if="!isOpenChange") {{value.phone.username}}
+ base-input(v-if="isOpenChange" :width-input="154" v-model:value="value.phone.username" :placeholder="value.phone.username")
diff --git a/src/pages/clients/components/cells/TableCellBodyPriority.vue b/src/pages/clients/components/cells/TableCellBodyPriority.vue
index d28adbb..0820628 100644
--- a/src/pages/clients/components/cells/TableCellBodyPriority.vue
+++ b/src/pages/clients/components/cells/TableCellBodyPriority.vue
@@ -1,17 +1,23 @@
- .flex.box-border.px-4.items-center.gap-x-2.w-full(:style="{ minWidth : width + 'px' }")
- .dot.w-2.h-2(:style="{ backgroundColor : settings.settings.find((el) => el.priority == value).color }")
- span.text-sm(:style="{ color : settings.settings.find((el) => el.priority == value).color }") {{settings.settings.find((el) => el.priority == value).text}}
+ .flex.box-border.px-4.items-center.w-full.gap-x-2(:style="{ minWidth : width + 'px' }")
+ .flex.gap-x-2.items-center(v-if="!isOpenChange")
+ .dot.w-2.h-2(:style="{ backgroundColor : settings.settings.find((el) => el.priority == value).color }")
+ span.text-sm(:style="{ color : settings.settings.find((el) => el.priority == value).color }") {{settings.settings.find((el) => el.priority == value).text}}
+ .flex.gap-x-2.text-sm
+ base-select(v-if="isOpenChange" :width-select="120" :option-data="settings.settings.find((el) => el.priority == value).text" :list-data="selectData" :style-border="true" :choose-option="choosePriority")