@coopenomics/desktop 2025.11.14-alpha-2 → 2025.11.15-alpha-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -6
- package/src/entities/Installer/model/store.ts +1 -0
- package/src/features/Installer/ui/SetInitForm/SetInitForm.vue +1 -0
- package/src/features/Installer/ui/SetVariablesForm/SetVariablesForm.vue +28 -15
- package/src/pages/Registrator/SignUp/ReadStatement.vue +13 -1
- package/src/pages/Union/ConnectionAgreement/ConnectionAgreementPage.vue +10 -0
- package/src/pages/Union/InstallCooperative/ui/InstallCooperativePage.vue +180 -22
- package/src/shared/ui/UserDataForm/CreateOrganizationDataForm/CreateOrganizationDataForm.vue +2 -0
- package/src/widgets/ConnectionAgreementStepper/Steps/UnionMembershipStep.vue +64 -0
- package/src/widgets/ConnectionAgreementStepper/Steps/index.ts +1 -0
- package/src/widgets/ConnectionAgreementStepper/ui/ConnectionAgreementStepper.vue +10 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coopenomics/desktop",
|
|
3
|
-
"version": "2025.11.
|
|
3
|
+
"version": "2025.11.15-alpha-1",
|
|
4
4
|
"description": "A Desktop Project",
|
|
5
5
|
"productName": "Desktop App",
|
|
6
6
|
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"start": "node -r ./alias-resolver.js dist/ssr/index.js"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@coopenomics/controller": "2025.11.
|
|
29
|
-
"@coopenomics/notifications": "2025.11.
|
|
30
|
-
"@coopenomics/sdk": "2025.11.
|
|
28
|
+
"@coopenomics/controller": "2025.11.15-alpha-1",
|
|
29
|
+
"@coopenomics/notifications": "2025.11.15-alpha-1",
|
|
30
|
+
"@coopenomics/sdk": "2025.11.15-alpha-1",
|
|
31
31
|
"@dicebear/collection": "^9.0.1",
|
|
32
32
|
"@dicebear/core": "^9.0.1",
|
|
33
33
|
"@editorjs/code": "^2.9.3",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"@wharfkit/wallet-plugin-privatekey": "^1.1.0",
|
|
60
60
|
"axios": "^1.2.1",
|
|
61
61
|
"compression": "^1.7.4",
|
|
62
|
-
"cooptypes": "2025.11.
|
|
62
|
+
"cooptypes": "2025.11.15-alpha-1",
|
|
63
63
|
"dompurify": "^3.1.7",
|
|
64
64
|
"dotenv": "^16.4.5",
|
|
65
65
|
"email-regex": "^5.0.0",
|
|
@@ -123,5 +123,5 @@
|
|
|
123
123
|
"npm": ">= 6.13.4",
|
|
124
124
|
"yarn": ">= 1.21.1"
|
|
125
125
|
},
|
|
126
|
-
"gitHead": "
|
|
126
|
+
"gitHead": "3671c05573f13ccdfc23fc90c43dd5e7a7b8fd1d"
|
|
127
127
|
}
|
|
@@ -3,7 +3,7 @@ div
|
|
|
3
3
|
div(v-if="installStore.vars")
|
|
4
4
|
q-card(flat).q-mb-md
|
|
5
5
|
q-card-section
|
|
6
|
-
|
|
6
|
+
div.text-h6 Наименование
|
|
7
7
|
div
|
|
8
8
|
q-badge.q-mr-sm.q-mb-md ОПФ
|
|
9
9
|
| - организационно-правовая форма
|
|
@@ -43,6 +43,31 @@ div
|
|
|
43
43
|
standout="bg-teal text-white"
|
|
44
44
|
)
|
|
45
45
|
|
|
46
|
+
q-card(flat).q-mb-md
|
|
47
|
+
q-card-section
|
|
48
|
+
div.text-h6 Устав
|
|
49
|
+
p Укажите ссылку на устав вашего кооператива, ознакомиться с которым будет предложено пайщикам при регистрации.
|
|
50
|
+
q-input.q-mt-md(
|
|
51
|
+
v-model="installStore.vars.statute_link"
|
|
52
|
+
label="Ссылка на устав кооператива"
|
|
53
|
+
placeholder="https://example.com/statute.pdf"
|
|
54
|
+
type="url"
|
|
55
|
+
standout="bg-teal text-white"
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
q-card(flat).q-mb-md
|
|
59
|
+
q-card-section
|
|
60
|
+
div.text-h6 Паспортные данные
|
|
61
|
+
p Укажите, должны ли заявления на вступление в кооператив и система в целом запрашивать паспортные данные пайщиков при регистрации.
|
|
62
|
+
|
|
63
|
+
q-toggle.q-mt-md(
|
|
64
|
+
v-model="installStore.vars.passport_request"
|
|
65
|
+
label="Запрашивать паспортные данные"
|
|
66
|
+
:true-value="'yes'"
|
|
67
|
+
:false-value="'no'"
|
|
68
|
+
color="teal"
|
|
69
|
+
)
|
|
70
|
+
|
|
46
71
|
q-card(flat).q-mb-md
|
|
47
72
|
q-card-section
|
|
48
73
|
div.text-h6 Контактная информация
|
|
@@ -75,20 +100,7 @@ div
|
|
|
75
100
|
|
|
76
101
|
q-card(flat).q-mb-md
|
|
77
102
|
q-card-section
|
|
78
|
-
div.text-h6
|
|
79
|
-
p Укажите, должны ли заявления на вступление в кооператив и система в целом запрашивать паспортные данные пайщиков при регистрации.
|
|
80
|
-
|
|
81
|
-
q-toggle.q-mt-md(
|
|
82
|
-
v-model="installStore.vars.passport_request"
|
|
83
|
-
label="Запрашивать паспортные данные"
|
|
84
|
-
:true-value="'yes'"
|
|
85
|
-
:false-value="'no'"
|
|
86
|
-
color="teal"
|
|
87
|
-
)
|
|
88
|
-
|
|
89
|
-
q-card(flat).q-mb-md
|
|
90
|
-
q-card-section
|
|
91
|
-
div.text-h6 Протоколы решений по базовым документам
|
|
103
|
+
div.text-h6 Базовые протоколы решений
|
|
92
104
|
p Для начала работы с системой совету кооператива необходимо принять решение о приёме ЦПП "Цифровой Кошелёк", положение о простой электронной подписи, политику конфиденциальности, пользовательское соглашение, а также формы заявлений на вступление физлиц, юрлиц и ИП. Данная информация также будет использоваться для генерации электронных документов с пайщиками.
|
|
93
105
|
| Примите решение совета и укажите номера и даты протоколов по каждому документу. У всех документов может быть общий номер протокола и дата принятия решения.
|
|
94
106
|
| Сгенерировать и скачать образцы документов можно по ссылке: <a href="https://generate-documents.coopenomics.world/connection-package" target="_blank">https://generate-documents.coopenomics.world</a>
|
|
@@ -221,6 +233,7 @@ onMounted(() => {
|
|
|
221
233
|
confidential_email: '',
|
|
222
234
|
contact_email: '',
|
|
223
235
|
passport_request: 'no',
|
|
236
|
+
statute_link: '',
|
|
224
237
|
wallet_agreement: {
|
|
225
238
|
protocol_number: '',
|
|
226
239
|
protocol_day_month_year: '',
|
|
@@ -31,7 +31,8 @@ div
|
|
|
31
31
|
q-checkbox(v-model='store.state.agreements.ustav' full-width)
|
|
32
32
|
| Я прочитал и принимаю
|
|
33
33
|
|
|
34
|
-
a(@click.stop='(event) => event.stopPropagation()' href='
|
|
34
|
+
a(v-if='hasStatuteLink' @click.stop='(event) => event.stopPropagation()' :href='statuteLink' target='_blank').q-ml-xs Устав кооператива
|
|
35
|
+
p(v-else).q-ml-xs Устав кооператива
|
|
35
36
|
|
|
36
37
|
div(v-if="!isLoading").q-mt-lg
|
|
37
38
|
q-btn.col-md-6.col-xs-12(flat @click='back')
|
|
@@ -53,6 +54,9 @@ const agreementer = useAgreementStore()
|
|
|
53
54
|
import { useRegistratorStore } from 'src/entities/Registrator'
|
|
54
55
|
const store = useRegistratorStore()
|
|
55
56
|
|
|
57
|
+
import { useSystemStore } from 'src/entities/System/model'
|
|
58
|
+
const systemStore = useSystemStore()
|
|
59
|
+
|
|
56
60
|
const { generateStatementWithoutSignature } = useCreateUser()
|
|
57
61
|
|
|
58
62
|
const agreeWithAll = computed(() => {
|
|
@@ -108,5 +112,13 @@ const userAgreement = computed(() => {
|
|
|
108
112
|
return agreementer.cooperativeAgreements.find(el => el.type == 'user')
|
|
109
113
|
})
|
|
110
114
|
|
|
115
|
+
const statuteLink = computed(() => {
|
|
116
|
+
return systemStore.info.vars?.statute_link || ''
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
const hasStatuteLink = computed(() => {
|
|
120
|
+
return statuteLink.value && statuteLink.value.trim() !== ''
|
|
121
|
+
})
|
|
122
|
+
|
|
111
123
|
|
|
112
124
|
</script>
|
|
@@ -108,6 +108,15 @@ const init = async () => {
|
|
|
108
108
|
// Инициализируем persistent store если он еще не инициализирован
|
|
109
109
|
if (!connectionAgreement.isInitialized) {
|
|
110
110
|
connectionAgreement.setInitialized(true);
|
|
111
|
+
|
|
112
|
+
// Устанавливаем начальный шаг в зависимости от членства в союзе
|
|
113
|
+
if (!system.info.is_unioned) {
|
|
114
|
+
// Если кооператив не является членом союза, начинаем с нулевого шага
|
|
115
|
+
connectionAgreement.setCurrentStep(0);
|
|
116
|
+
} else {
|
|
117
|
+
// Если кооператив уже член союза, начинаем с первого шага
|
|
118
|
+
connectionAgreement.setCurrentStep(1);
|
|
119
|
+
}
|
|
111
120
|
}
|
|
112
121
|
|
|
113
122
|
// Запускаем автообновление инстанса каждые 30 секунд (включает начальную загрузку)
|
|
@@ -140,6 +149,7 @@ watch(
|
|
|
140
149
|
});
|
|
141
150
|
|
|
142
151
|
// Логика автоматических переходов (только для шагов 4, 5, 6)
|
|
152
|
+
// Шаги 0, 1, 2, 3 не имеют автоматических переходов
|
|
143
153
|
if (currentStep === 4) {
|
|
144
154
|
// Шаг 4: Проверка домена
|
|
145
155
|
if (instance.is_valid && instance.is_delegated) {
|
|
@@ -1,37 +1,58 @@
|
|
|
1
1
|
<template lang="pug">
|
|
2
|
-
div.row.justify-center
|
|
3
|
-
div.col-md-
|
|
4
|
-
|
|
5
|
-
q-card(flat).
|
|
2
|
+
div.row.justify-center.q-pa-md
|
|
3
|
+
div.col-md-8.col-sm-10.col-xs-12
|
|
4
|
+
.installation-container
|
|
5
|
+
q-card(flat).installation-card
|
|
6
6
|
div(v-if="!installStore.is_finish")
|
|
7
|
+
.installation-header
|
|
8
|
+
.text-h5.installation-title Установка Цифрового Кооператива
|
|
9
|
+
.subtitle.text-body2.text-grey-7.q-mt-sm
|
|
10
|
+
| Настройка вашего кооператива шаг за шагом
|
|
7
11
|
|
|
8
12
|
//- Индикатор шагов
|
|
9
|
-
q-stepper.q-
|
|
13
|
+
q-stepper.q-mt-lg(v-model="installStore.current_step" vertical flat)
|
|
10
14
|
q-step(:name="'key'" title="Ключ доступа" icon="key" :done="isStepDone('key')")
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
.step-content.q-pa-md
|
|
16
|
+
.step-description.text-body2.q-mb-md
|
|
17
|
+
| Для начала установки введите ключ аккаунта Кооператива, который был выдан Вам при регистрации:
|
|
18
|
+
RequestKeyForm
|
|
13
19
|
|
|
14
20
|
q-step(:name="'init'" title="Инициализация системы" icon="business" :done="isStepDone('init')")
|
|
15
|
-
|
|
21
|
+
.step-content.q-pa-md
|
|
22
|
+
SetInitForm
|
|
16
23
|
|
|
17
24
|
q-step(:name="'soviet'" title="Члены совета" icon="people" :done="isStepDone('soviet')")
|
|
18
|
-
|
|
19
|
-
|
|
25
|
+
.step-content.q-pa-md
|
|
26
|
+
.step-description.text-body2.q-mb-md
|
|
27
|
+
| Введите данные председателя и членов совета. Всем им будут созданы аккаунты пайщиков и отправлены приглашения на электронную почту:
|
|
28
|
+
SetSovietForm
|
|
20
29
|
|
|
21
30
|
q-step(:name="'vars'" title="Переменные документов" icon="settings" :done="isStepDone('vars')")
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
.step-content.q-pa-md
|
|
32
|
+
.step-description.text-body2.q-mb-md
|
|
33
|
+
| Установите переменные для документов кооператива, которые будут использоваться при генерации документов:
|
|
34
|
+
SetVariablesForm
|
|
35
|
+
|
|
24
36
|
div(v-else)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
.completion-section.q-pa-xl
|
|
38
|
+
.completion-header
|
|
39
|
+
q-icon(name="check_circle" color="positive" size="64px")
|
|
40
|
+
.completion-title.text-h5.text-positive.q-mt-md Установка завершена
|
|
41
|
+
.completion-subtitle.text-body2.text-grey-7.q-mt-sm
|
|
42
|
+
| Ваш Цифровой Кооператив готов к работе
|
|
43
|
+
|
|
44
|
+
.completion-details.q-mt-xl
|
|
45
|
+
.detail-text.text-body2.q-mb-lg
|
|
46
|
+
| Всем членам совета отправлены приглашения на электронные почты со ссылками для генерации цифровых подписей. Перейдите по своей ссылке из письма, получите ключ председателя, и используйте его для входа в свою систему.
|
|
47
|
+
|
|
48
|
+
q-btn(
|
|
49
|
+
@click="goToSignin"
|
|
50
|
+
color="primary"
|
|
51
|
+
label="Войти в систему"
|
|
52
|
+
size="lg"
|
|
53
|
+
unelevated
|
|
54
|
+
no-caps
|
|
55
|
+
).q-mt-md
|
|
35
56
|
//- p.text-grey Ключ установки, который ранее вводился здесь, теперь используется только для входа в кабинет оператора, пайщиком которого вы стали при подключении к системе. В вашей же системе у вас новый ключ, который вы выпускаете себе сами.
|
|
36
57
|
</template>
|
|
37
58
|
|
|
@@ -61,3 +82,140 @@ const goToSignin = () => {
|
|
|
61
82
|
});
|
|
62
83
|
};
|
|
63
84
|
</script>
|
|
85
|
+
|
|
86
|
+
<style scoped>
|
|
87
|
+
.installation-container {
|
|
88
|
+
max-width: 900px;
|
|
89
|
+
margin: 0 auto;
|
|
90
|
+
position: relative;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.installation-card {
|
|
94
|
+
border-radius: 20px;
|
|
95
|
+
border: 1px solid rgba(0, 0, 0, 0.05);
|
|
96
|
+
box-shadow:
|
|
97
|
+
0 8px 32px rgba(0, 0, 0, 0.08),
|
|
98
|
+
0 2px 8px rgba(0, 0, 0, 0.04);
|
|
99
|
+
position: relative;
|
|
100
|
+
overflow: hidden;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.installation-card::before {
|
|
104
|
+
content: '';
|
|
105
|
+
position: absolute;
|
|
106
|
+
top: 0;
|
|
107
|
+
left: 0;
|
|
108
|
+
right: 0;
|
|
109
|
+
height: 4px;
|
|
110
|
+
background: linear-gradient(90deg, var(--q-primary) 0%, var(--q-secondary) 50%, var(--q-accent) 100%);
|
|
111
|
+
background-size: 200% 100%;
|
|
112
|
+
animation: shimmer 4s cubic-bezier(0.25, 0.46, 0.45, 0.94) infinite;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@keyframes shimmer {
|
|
116
|
+
0% { background-position: 100% 0; }
|
|
117
|
+
100% { background-position: -100% 0; }
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* Заголовок с градиентом */
|
|
121
|
+
.installation-header {
|
|
122
|
+
text-align: center;
|
|
123
|
+
margin-bottom: 2rem;
|
|
124
|
+
padding-top: 2rem;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.installation-title {
|
|
128
|
+
font-weight: 700;
|
|
129
|
+
letter-spacing: -0.5px;
|
|
130
|
+
background: linear-gradient(135deg, var(--q-primary) 0%, rgba(25, 118, 210, 0.8) 100%);
|
|
131
|
+
-webkit-background-clip: text;
|
|
132
|
+
-webkit-text-fill-color: transparent;
|
|
133
|
+
background-clip: text;
|
|
134
|
+
text-shadow: 0 2px 4px rgba(25, 118, 210, 0.3);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* Содержимое шагов */
|
|
138
|
+
.step-content {
|
|
139
|
+
background: rgba(25, 118, 210, 0.02);
|
|
140
|
+
border-radius: 12px;
|
|
141
|
+
border: 1px solid rgba(25, 118, 210, 0.05);
|
|
142
|
+
margin-top: 1rem;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.step-description {
|
|
146
|
+
color: #666;
|
|
147
|
+
line-height: 1.5;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* Секция завершения */
|
|
151
|
+
.completion-section {
|
|
152
|
+
text-align: center;
|
|
153
|
+
position: relative;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.completion-header {
|
|
157
|
+
position: relative;
|
|
158
|
+
margin-bottom: 1rem;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.completion-title {
|
|
162
|
+
font-weight: 700;
|
|
163
|
+
letter-spacing: -0.5px;
|
|
164
|
+
background: linear-gradient(135deg, var(--q-positive) 0%, #4CAF50 100%);
|
|
165
|
+
-webkit-background-clip: text;
|
|
166
|
+
-webkit-text-fill-color: transparent;
|
|
167
|
+
background-clip: text;
|
|
168
|
+
text-shadow: 0 2px 4px rgba(76, 175, 80, 0.3);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.completion-details {
|
|
172
|
+
margin-top: 2rem;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.detail-text {
|
|
176
|
+
color: #666;
|
|
177
|
+
line-height: 1.6;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* Адаптивность */
|
|
181
|
+
@media (max-width: 768px) {
|
|
182
|
+
.installation-container {
|
|
183
|
+
padding: 1rem;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.installation-card {
|
|
187
|
+
border-radius: 16px;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.installation-header {
|
|
191
|
+
padding-top: 1.5rem;
|
|
192
|
+
margin-bottom: 1.5rem;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.step-content {
|
|
196
|
+
padding: 1rem;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.completion-section {
|
|
200
|
+
padding: 2rem 1rem;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@media (max-width: 480px) {
|
|
205
|
+
.installation-container {
|
|
206
|
+
padding: 0.5rem;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.installation-card {
|
|
210
|
+
border-radius: 12px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.step-content {
|
|
214
|
+
padding: 0.75rem;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.completion-section {
|
|
218
|
+
padding: 1.5rem 0.75rem;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
</style>
|
package/src/shared/ui/UserDataForm/CreateOrganizationDataForm/CreateOrganizationDataForm.vue
CHANGED
|
@@ -128,6 +128,7 @@
|
|
|
128
128
|
)
|
|
129
129
|
template(v-slot:append)
|
|
130
130
|
q-btn(
|
|
131
|
+
v-if="!hideMatchButton"
|
|
131
132
|
dense,
|
|
132
133
|
size='sm',
|
|
133
134
|
color='teal',
|
|
@@ -244,6 +245,7 @@ export type ICreateOrganizationData = Omit<Zeus.ModelTypes['CreateOrganizationDa
|
|
|
244
245
|
const props = defineProps<{
|
|
245
246
|
data?: ICreateOrganizationData;
|
|
246
247
|
readonly?: boolean;
|
|
248
|
+
hideMatchButton?: boolean;
|
|
247
249
|
}>();
|
|
248
250
|
|
|
249
251
|
const emit = defineEmits<{
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed } from 'vue'
|
|
3
|
+
import type { IStepProps } from '../model/types'
|
|
4
|
+
|
|
5
|
+
import { useConnectionAgreementStore } from 'src/entities/ConnectionAgreement'
|
|
6
|
+
import { useSystemStore } from 'src/entities/System/model';
|
|
7
|
+
|
|
8
|
+
const props = withDefaults(defineProps<IStepProps>(), {})
|
|
9
|
+
|
|
10
|
+
const system = useSystemStore()
|
|
11
|
+
const connectionAgreement = useConnectionAgreementStore()
|
|
12
|
+
|
|
13
|
+
const isActive = computed(() => props.isActive)
|
|
14
|
+
const isDone = computed(() => props.isDone)
|
|
15
|
+
|
|
16
|
+
const unionLink = computed(() => system.info.union_link)
|
|
17
|
+
|
|
18
|
+
const handleContinue = () => {
|
|
19
|
+
if (connectionAgreement.currentStep === 0) {
|
|
20
|
+
connectionAgreement.setCurrentStep(1)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const openUnionLink = () => {
|
|
25
|
+
if (unionLink.value) {
|
|
26
|
+
window.open(unionLink.value, '_blank')
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<template lang="pug">
|
|
32
|
+
q-step(
|
|
33
|
+
:name="0"
|
|
34
|
+
title="Членство в союзе"
|
|
35
|
+
icon="group"
|
|
36
|
+
:done="isDone"
|
|
37
|
+
)
|
|
38
|
+
.q-pa-md
|
|
39
|
+
.text-h6.q-mb-md Для подключения к Кооперативной Экономике кооператив должен быть членом союза
|
|
40
|
+
|
|
41
|
+
.q-mb-md
|
|
42
|
+
| Для вступления в союз перейдите по ссылке:
|
|
43
|
+
br
|
|
44
|
+
q-btn(
|
|
45
|
+
v-if="unionLink"
|
|
46
|
+
flat
|
|
47
|
+
color="primary"
|
|
48
|
+
:label="unionLink"
|
|
49
|
+
@click="openUnionLink"
|
|
50
|
+
no-caps
|
|
51
|
+
class="q-mt-sm"
|
|
52
|
+
)
|
|
53
|
+
span(v-else).text-grey-6 Ссылка недоступна
|
|
54
|
+
|
|
55
|
+
.q-mb-lg После вступления в союз, пожалуйста, продолжайте процесс подключения.
|
|
56
|
+
|
|
57
|
+
q-stepper-navigation.q-gutter-sm
|
|
58
|
+
q-btn(
|
|
59
|
+
v-if="isActive"
|
|
60
|
+
color="primary"
|
|
61
|
+
label="Продолжить"
|
|
62
|
+
@click="handleContinue"
|
|
63
|
+
)
|
|
64
|
+
</template>
|
|
@@ -8,6 +8,13 @@ div
|
|
|
8
8
|
animated
|
|
9
9
|
done-color="teal"
|
|
10
10
|
)
|
|
11
|
+
UnionMembershipStep(
|
|
12
|
+
v-if="system.info.is_unioned"
|
|
13
|
+
:current-step="currentStep"
|
|
14
|
+
:is-active="currentStep === 0"
|
|
15
|
+
:is-done="currentStep > 0"
|
|
16
|
+
)
|
|
17
|
+
|
|
11
18
|
IntroStep(
|
|
12
19
|
:current-step="currentStep"
|
|
13
20
|
:is-active="currentStep === 1"
|
|
@@ -52,10 +59,12 @@ div
|
|
|
52
59
|
|
|
53
60
|
<script setup lang="ts">
|
|
54
61
|
import { computed, watch } from 'vue'
|
|
55
|
-
import { IntroStep, AgreementStep, FormStep, DomainValidationStep, ApprovalWaitingStep, InstallationStep } from '../Steps/index'
|
|
62
|
+
import { UnionMembershipStep, IntroStep, AgreementStep, FormStep, DomainValidationStep, ApprovalWaitingStep, InstallationStep } from '../Steps/index'
|
|
56
63
|
import { useConnectionAgreementStore } from 'src/entities/ConnectionAgreement'
|
|
64
|
+
import { useSystemStore } from 'src/entities/System/model'
|
|
57
65
|
|
|
58
66
|
const connectionAgreement = useConnectionAgreementStore()
|
|
67
|
+
const system = useSystemStore()
|
|
59
68
|
|
|
60
69
|
// Данные из стора
|
|
61
70
|
const currentStep = computed(() => connectionAgreement.currentStep)
|