hl-core 0.0.9-beta.27 → 0.0.9-beta.29

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.
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="text-left p-6" :class="[color, $styles.rounded, $styles.textTitle]">
3
- <v-icon :icon="icon" class="mr-4"></v-icon>
3
+ <v-icon :icon="icon" class="mr-4" />
4
4
  {{ text }}
5
5
  </div>
6
6
  </template>
@@ -33,7 +33,7 @@ export default defineComponent({
33
33
  },
34
34
  moreIcon: {
35
35
  type: String,
36
- default: 'mdi-cog-outline',
36
+ default: 'mdi-dots-vertical',
37
37
  },
38
38
  title: {
39
39
  type: String,
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <v-form class="dynamic-form">
3
+ <base-form-section v-for="(section, sectionIndex) in form.sections" :key="sectionIndex" class="rounded-lg" :title="section.title">
4
+ <base-dynamic-input :fields="section.fields" />
5
+ </base-form-section>
6
+ </v-form>
7
+ </template>
8
+
9
+ <script lang="ts">
10
+ export default defineComponent({
11
+ props: {
12
+ form: {
13
+ type: Object as PropType<DynamicForm>,
14
+ required: true,
15
+ },
16
+ },
17
+ });
18
+ </script>
@@ -8,8 +8,8 @@
8
8
  class="pl-1"
9
9
  v-model="formStore.SaleChanellPolicy"
10
10
  :value="formStore.SaleChanellPolicy?.nameRu"
11
- :readonly="isReadonly"
12
- :clearable="!isReadonly"
11
+ :readonly="isSaleChanellReadonly"
12
+ :clearable="!isSaleChanellReadonly"
13
13
  :label="$dataStore.t('form.salesChanell')"
14
14
  :rules="$rules.objectRequired"
15
15
  append-inner-icon="mdi mdi-chevron-right"
@@ -19,8 +19,8 @@
19
19
  class="pl-1"
20
20
  v-model="formStore.RegionPolicy"
21
21
  :value="formStore.RegionPolicy?.nameRu"
22
- :readonly="isReadonly"
23
- :clearable="!isReadonly"
22
+ :readonly="isRegionReadonly"
23
+ :clearable="!isRegionReadonly"
24
24
  :label="$dataStore.t('form.Region')"
25
25
  :rules="$rules.objectRequired"
26
26
  append-inner-icon="mdi mdi-chevron-right"
@@ -30,8 +30,8 @@
30
30
  class="pl-1"
31
31
  v-model="formStore.ManagerPolicy"
32
32
  :value="formStore.ManagerPolicy?.nameRu"
33
- :readonly="isReadonly"
34
- :clearable="!isReadonly"
33
+ :readonly="isManagerReadonly"
34
+ :clearable="!isManagerReadonly"
35
35
  :label="$dataStore.t('form.manager')"
36
36
  :rules="$rules.objectRequired"
37
37
  append-inner-icon="mdi mdi-chevron-right"
@@ -41,15 +41,15 @@
41
41
  class="pl-1"
42
42
  v-model="formStore.AgentData"
43
43
  :value="formStore.AgentData?.fullName"
44
- :readonly="isReadonly"
45
- :clearable="!isReadonly"
44
+ :readonly="isAgentReadonly"
45
+ :clearable="!isAgentReadonly"
46
46
  :label="$dataStore.t('form.agent')"
47
47
  :rules="$rules.agentDataRequired"
48
48
  append-inner-icon="mdi mdi-chevron-right"
49
49
  @append="openPanel('AgentData', $dataStore.t('form.agent'))"
50
50
  />
51
51
  </v-form>
52
- <Teleport v-if="isPanelOpen" to="#panel-actions">
52
+ <Teleport v-if="isPanelOpen" to="#right-panel-actions">
53
53
  <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
54
54
  <base-rounded-input
55
55
  v-model.trim="searchQuery"
@@ -127,13 +127,29 @@ export default defineComponent({
127
127
  !dataStore.isInitiator() ||
128
128
  (route.params.taskId !== '0' && (!dataStore.isProcessEditable(formStore.applicationData.statusCode) || !dataStore.isTask())),
129
129
  );
130
+ const isSaleChanellReadonly = computed(() => {
131
+ if (dataStore.isGons) return isReadonly.value || !dataStore.isServiceManager();
132
+ return isReadonly.value;
133
+ });
134
+ const isRegionReadonly = computed(() => {
135
+ if (dataStore.isGons) return isReadonly.value || !dataStore.isServiceManager();
136
+ return isReadonly.value;
137
+ });
138
+ const isManagerReadonly = computed(() => {
139
+ if (dataStore.isGons) return isReadonly.value || !dataStore.isServiceManager();
140
+ return isReadonly.value;
141
+ });
142
+ const isAgentReadonly = computed(() => {
143
+ if (dataStore.isGons) return isReadonly.value || !dataStore.isAgent();
144
+ return isReadonly.value;
145
+ });
130
146
 
131
147
  const openPanel = async (currentDict: ManagerAttachmentFiels, title: string) => {
132
148
  searchQuery.value = '';
133
149
  if (dataStore.isTask() && !props.disabled) {
134
150
  dataStore.panelAction = null;
135
- dataStore.panel.open = true;
136
- dataStore.panel.title = title;
151
+ dataStore.rightPanel.open = true;
152
+ dataStore.rightPanel.title = title;
137
153
  currentDictName.value = currentDict;
138
154
 
139
155
  if (currentDict === 'ManagerPolicy' && formStore.RegionPolicy.ids) {
@@ -161,7 +177,7 @@ export default defineComponent({
161
177
  // @ts-ignore
162
178
  formStore[currentDictName.value] = answer;
163
179
  isPanelOpen.value = false;
164
- dataStore.panel.open = false;
180
+ dataStore.rightPanel.open = false;
165
181
  searchQuery.value = '';
166
182
  };
167
183
 
@@ -187,6 +203,25 @@ export default defineComponent({
187
203
  },
188
204
  );
189
205
 
206
+ watch(
207
+ () => dataStore.rightPanel.open,
208
+ () => {
209
+ if (dataStore.rightPanel.open === false) {
210
+ isPanelOpen.value = false;
211
+ }
212
+ },
213
+ { immediate: true },
214
+ );
215
+
216
+ onBeforeUnmount(() => {
217
+ if (!isReadonly.value) {
218
+ const areValid = !!formStore.SaleChanellPolicy.nameRu && !!formStore.RegionPolicy.nameRu && !!formStore.ManagerPolicy.nameRu && !!formStore.AgentData.fullName;
219
+ if (areValid) {
220
+ dataStore.setINSISWorkData(false);
221
+ }
222
+ }
223
+ });
224
+
190
225
  return {
191
226
  // State
192
227
  formStore,
@@ -199,6 +234,10 @@ export default defineComponent({
199
234
 
200
235
  // Computed
201
236
  isReadonly,
237
+ isSaleChanellReadonly,
238
+ isRegionReadonly,
239
+ isManagerReadonly,
240
+ isAgentReadonly,
202
241
 
203
242
  // Functions
204
243
  openPanel,
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <div v-for="(field, fieldIndex) in fields" :key="fieldIndex">
3
+ <base-text-input
4
+ v-if="field.type === 'text' || field.type === 'number'"
5
+ :control="field"
6
+ class="bg-[#fff]"
7
+ :class="{ 'rounded-t-lg': fieldIndex === 0 || fields[fieldIndex - 1].type !== 'text', 'rounded-b-lg': fieldIndex === fields.length - 1 }"
8
+ />
9
+ <base-switch-input v-if="field.type === 'switch'" :field="field" />
10
+ </div>
11
+ </template>
12
+
13
+ <script lang="ts">
14
+ export default defineComponent({
15
+ props: {
16
+ fields: {
17
+ type: Object as PropType<InputType[]>,
18
+ required: true,
19
+ },
20
+ },
21
+ });
22
+ </script>
@@ -11,7 +11,7 @@
11
11
  accept=".pdf,.doc,.jpeg,.jpg,.jpg,.xlsx,.xls"
12
12
  truncate-length="15"
13
13
  clear-icon="mdi mdi-close"
14
- :label="$dataStore.t('labels.chooseDoc')"
14
+ :label="label"
15
15
  @click:append-inner="$emit('append-inner', $event)"
16
16
  />
17
17
  </template>
@@ -26,7 +26,13 @@ export default defineComponent({
26
26
  icon: {
27
27
  type: String,
28
28
  default: 'mdi-file-document',
29
- }
29
+ },
30
+ label: {
31
+ type: String,
32
+ default() {
33
+ return useDataStore().t('labels.chooseDoc');
34
+ },
35
+ },
30
36
  },
31
37
  emits: ['input', 'append-inner'],
32
38
  });
@@ -0,0 +1,64 @@
1
+ <template>
2
+ <div class="base-switch-input p-4 bg-white rounded-lg mb-3">
3
+ <v-switch v-model="field.modelValue" v-bind="switchProps" />
4
+ </div>
5
+ </template>
6
+
7
+ <script lang="ts">
8
+ export default defineComponent({
9
+ name: 'asSwitchInput',
10
+ props: {
11
+ field: {
12
+ type: Object as PropType<SwitchInput>,
13
+ required: true,
14
+ },
15
+ },
16
+ setup(props) {
17
+ const switchProps = computed(() => {
18
+ return {
19
+ label: props.field.label,
20
+ direction: props.field.direction,
21
+ disabled: props.field.disabled,
22
+ hideDetails: true,
23
+ color: '#009C73',
24
+ };
25
+ });
26
+ return { switchProps };
27
+ },
28
+ });
29
+ </script>
30
+
31
+ <style>
32
+ .base-switch-input .v-switch label {
33
+ font-size: 14px !important;
34
+ font-weight: 400 !important;
35
+ line-height: 20px !important;
36
+ opacity: 1 !important;
37
+ }
38
+ .base-switch-input .v-switch__track {
39
+ background: white !important;
40
+ border: 1.1px solid #e5e5ea;
41
+ height: 19px !important;
42
+ width: 100px !important;
43
+ border-radius: 16px;
44
+ overflow: hidden;
45
+ }
46
+
47
+ .base-switch-input .switch-block .v-input--horizontal {
48
+ grid-template-areas: unset !important;
49
+ }
50
+
51
+ .base-switch-input .v-switch__thumb {
52
+ color: white;
53
+ width: 20px;
54
+ height: 20px;
55
+ }
56
+
57
+ .base-switch-input .v-selection-control--dirty .v-switch__track {
58
+ background: #2aa65c !important;
59
+ }
60
+
61
+ .base-switch-input .v-switch .v-selection-control {
62
+ min-height: unset !important;
63
+ }
64
+ </style>
@@ -0,0 +1,156 @@
1
+ <template>
2
+ <div class="base-text-input flex justify-between items-center pr-4 mb-[1px] bg-[#fff]">
3
+ <v-text-field v-model="control.modelValue" v-bind="textFieldProps" v-maska="mask">
4
+ <div v-if="hasSuffix" class="absolute top-[27px] left-[18px] flex items-center justify-center">
5
+ <p class="opacity-0 inline-block mr-[2px]">{{ control.modelValue }}</p>
6
+ <span>{{ suffix }}</span>
7
+ </div>
8
+ </v-text-field>
9
+ <v-icon v-if="control.iconName" :icon="`mdi cursor-pointer ${iconsList[control.iconName]}`" color="#A0B3D8" @click="onClickIcon" />
10
+ <vue-date-picker v-if="control.maska === 'date'" v-model="control.modelValue" v-bind="datePickerProps" @update:modelValue="$emit('update:modelValue', $event)">
11
+ <template #trigger>
12
+ <v-icon icon="mdi mdi-calendar-blank-outline cursor-pointer" color="#a0b3d8" />
13
+ </template>
14
+ </vue-date-picker>
15
+ </div>
16
+ </template>
17
+
18
+ <script lang="ts">
19
+ const iconsList: { [key: string]: string } = {
20
+ arrowRight: 'mdi-chevron-right',
21
+ search: 'mdi-magnify',
22
+ sms: 'mdi-message-text',
23
+ clear: 'mdi-close',
24
+ };
25
+
26
+ const suffixList: { [key: string]: string } = {
27
+ kzt: '₸',
28
+ usd: '$',
29
+ percent: '%',
30
+ };
31
+
32
+ export default defineComponent({
33
+ props: {
34
+ control: {
35
+ type: Object as PropType<InputType>,
36
+ required: true,
37
+ },
38
+ },
39
+ setup(props) {
40
+ const mask = computed(() => (props.control.maska ? useMask()[props.control.maska] : ''));
41
+
42
+ const textFieldProps = computed(() => {
43
+ return {
44
+ label: props.control.label,
45
+ placeholder: props.control.placeholder,
46
+ disabled: props.control.disabled,
47
+ maxLength: props.control.maxLength,
48
+ readonly: props.control.readonly || props.control.iconName === 'arrowRight',
49
+ };
50
+ });
51
+
52
+ const datePickerProps = computed(() => {
53
+ return {
54
+ locale: 'ru',
55
+ flow: ['calendar'],
56
+ modelType: 'dd.MM.yyyy',
57
+ enableTimePicker: false,
58
+ altPosition: () => ({ top: 0, left: -275 }),
59
+ clearable: false,
60
+ disabled: props.control.disabled,
61
+ readonly: props.control.readonly,
62
+ selectText: 'Выбрать',
63
+ cancelText: 'Закрыть',
64
+ offset: '-50',
65
+ class: 'max-w-max z-[10]',
66
+ closeOnScroll: true,
67
+ transitions: false,
68
+ };
69
+ });
70
+
71
+ const hasSuffix = computed(() => {
72
+ return props.control.suffix && props.control.type === 'number' && props.control.modelValue;
73
+ });
74
+
75
+ const suffix = computed(() => {
76
+ return hasSuffix.value ? suffixList[props.control.suffix!] : '';
77
+ });
78
+
79
+ const onClickIcon = () => {};
80
+
81
+ return {
82
+ // State
83
+ datePickerProps,
84
+ textFieldProps,
85
+ hasSuffix,
86
+ mask,
87
+ suffix,
88
+ iconsList,
89
+
90
+ // Functions
91
+ onClickIcon,
92
+ };
93
+ },
94
+ });
95
+ </script>
96
+ <style>
97
+ .base-text-input .v-field__append-inner i {
98
+ color: #a0b3d8 !important;
99
+ margin-left: 10px;
100
+ margin-right: 4px;
101
+ }
102
+ .base-text-input .v-field__append-inner {
103
+ margin-top: 12px;
104
+ cursor: pointer;
105
+ padding-right: 6px;
106
+ }
107
+ .base-text-input .v-field__outline,
108
+ .base-text-input .v-field__overlay,
109
+ .base-text-input .v-field__loader {
110
+ display: none !important;
111
+ }
112
+
113
+ .base-text-input .v-input__prepend {
114
+ padding-top: 0;
115
+ display: flex;
116
+ align-items: center;
117
+ }
118
+ .base-text-input .v-field__append-inner {
119
+ display: flex;
120
+ padding: 0;
121
+ align-items: center;
122
+ justify-content: center;
123
+ }
124
+
125
+ .base-text-input .v-file-input {
126
+ padding: 0px;
127
+ }
128
+ .base-text-input .v-messages,
129
+ .base-text-input .v-messages__message,
130
+ .base-text-input .v-input__details {
131
+ min-height: unset !important;
132
+ }
133
+ .base-text-input .v-messages__message {
134
+ transition: all 0.5s;
135
+ margin-bottom: 10px;
136
+ }
137
+ .base-text-input .v-input__details {
138
+ padding-bottom: 0 !important;
139
+ padding-top: 0 !important;
140
+ }
141
+ .base-text-input .dp__action_buttons button {
142
+ padding: 6px 9px;
143
+ height: unset;
144
+ }
145
+ .base-text-input .dp__action_select {
146
+ background: #a0b3d8;
147
+ color: white;
148
+ }
149
+ .base-text-input .dp__action_select:hover {
150
+ background: #97acd6;
151
+ }
152
+ .base-text-input .dp__active_date,
153
+ .base-text-input .dp__overlay_cell_active {
154
+ background: #a0b3d8;
155
+ }
156
+ </style>
@@ -2,9 +2,14 @@
2
2
  <v-navigation-drawer
3
3
  v-model="$dataStore[whichPanel].open"
4
4
  :temporary="$dataStore[whichPanel].overlay"
5
- location="right"
6
- class="sm:!w-[400px] lg:!relative !right-0"
7
- :class="[$dataStore[whichPanel].overlay ? 'lg:!hidden' : '', $dataStore[whichPanel].open ? '!w-full lg:!w-[420px]' : 'lg:!w-[0px]']"
5
+ :location="side"
6
+ class="sm:!w-[400px]"
7
+ :class="[
8
+ $dataStore[whichPanel].overlay ? 'lg:!hidden' : '',
9
+ $dataStore[whichPanel].open ? '!w-full lg:!w-1/4' : 'lg:!w-[0px]',
10
+ side === 'left' ? '!left-0 !absolute' : '!right-0',
11
+ side === 'right' && $dataStore[whichPanel].open ? 'lg:!relative' : '',
12
+ ]"
8
13
  :disable-resize-watcher="true"
9
14
  :disable-route-watcher="true"
10
15
  >
@@ -12,6 +17,9 @@
12
17
  <div v-if="$dataStore.panelAction === null" class="flex flex-col" id="panel-actions">
13
18
  <slot></slot>
14
19
  </div>
20
+ <div v-if="side === 'right'" class="flex flex-col" id="right-panel-actions">
21
+ <slot></slot>
22
+ </div>
15
23
  <base-panel-handler v-else @task="$emit('task', $event)" />
16
24
  <slot name="panel"></slot>
17
25
  </v-navigation-drawer>
@@ -29,6 +37,10 @@ export default defineComponent({
29
37
  type: String as PropType<PanelTypes>,
30
38
  default: 'panel',
31
39
  },
40
+ side: {
41
+ type: String as PropType<'left' | 'right'>,
42
+ default: 'left',
43
+ },
32
44
  },
33
45
  emits: ['task'],
34
46
  setup(props) {
@@ -33,7 +33,7 @@ export default defineComponent({
33
33
  },
34
34
  moreIcon: {
35
35
  type: String,
36
- default: 'mdi-cog-outline',
36
+ default: 'mdi-dots-vertical',
37
37
  },
38
38
  title: {
39
39
  type: String,
@@ -71,13 +71,11 @@ const logoutUser = async () => {
71
71
  await dataStore.logoutUser();
72
72
  };
73
73
 
74
- const isProduction = import.meta.env.VITE_MODE === 'production';
75
-
76
74
  const hasHistory = computed(() => {
77
75
  return !dataStore.isLKA;
78
76
  });
79
77
 
80
78
  const openHistory = async () => {
81
- dataStore.sendToParent(constants.postActions.toStatementHistory, dataStore.isBridge || dataStore.isDSO ? '' : dataStore.product);
79
+ dataStore.sendToParent(constants.postActions.toStatementHistory, dataStore.isBridge || dataStore.isDSO || dataStore.isUU ? '' : dataStore.product);
82
80
  };
83
81
  </script>
@@ -6,7 +6,7 @@
6
6
  :has-back="hasBack"
7
7
  :back-icon="backIcon"
8
8
  :has-more="hasMore"
9
- :hide-more-on-lg="hideOnLg"
9
+ :hide-more-on-lg="false"
10
10
  :more-icon="moreIcon"
11
11
  @onBack="$emit('onBack')"
12
12
  @onMore="$emit('onMore')"
@@ -78,7 +78,7 @@ export default defineComponent({
78
78
  },
79
79
  moreIcon: {
80
80
  type: String,
81
- default: 'mdi-cog-outline',
81
+ default: 'mdi-dots-vertical',
82
82
  },
83
83
  },
84
84
  emits: ['onLink', 'onBack', 'onMore', 'clicked'],
@@ -114,7 +114,7 @@
114
114
  </section>
115
115
  <base-btn
116
116
  v-if="currentQuestion && currentQuestion.second && currentQuestion.second.length && firstPanel"
117
- class="!absolute z-10 my-[14px] self-center w-[96%] bottom-0"
117
+ class="!absolute z-10 my-[14px] self-center w-[96%] bottom-[-40px]"
118
118
  :text="$dataStore.t('buttons.save')"
119
119
  @click="submitSecondaryForm"
120
120
  />
@@ -148,7 +148,7 @@
148
148
  </v-form>
149
149
  </section>
150
150
  </base-fade-transition>
151
- <Teleport v-if="secondPanel" to="#panel-actions">
151
+ <Teleport v-if="secondPanel" to="#right-panel-actions">
152
152
  <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
153
153
  <base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
154
154
  <div v-if="$dataStore.questionRefs && $dataStore.questionRefs.length && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
@@ -304,8 +304,8 @@ export default defineComponent({
304
304
  await dataStore.getQuestionRefs(question.id);
305
305
  secondPanel.value = true;
306
306
  dataStore.panelAction = null;
307
- dataStore.panel.open = true;
308
- dataStore.panel.title = question.name;
307
+ dataStore.rightPanel.open = true;
308
+ dataStore.rightPanel.title = question.name;
309
309
  isPanelLoading.value = false;
310
310
  };
311
311
 
@@ -316,7 +316,7 @@ export default defineComponent({
316
316
  }
317
317
  secondPanel.value = false;
318
318
  dataStore.panelAction = null;
319
- dataStore.panel.open = false;
319
+ dataStore.rightPanel.open = false;
320
320
  dataStore.questionRefs = [];
321
321
  };
322
322
 
@@ -376,9 +376,9 @@ export default defineComponent({
376
376
  });
377
377
 
378
378
  watch(
379
- () => dataStore.panel.open,
379
+ () => dataStore.rightPanel.open,
380
380
  () => {
381
- if (dataStore.panel.open === false) {
381
+ if (dataStore.rightPanel.open === false) {
382
382
  secondPanel.value = false;
383
383
  dataStore.panelAction = null;
384
384
  }
@@ -261,7 +261,7 @@
261
261
  </base-form-section>
262
262
  </v-form>
263
263
  <base-btn v-if="showSaveButton && !disabled" :loading="isButtonLoading" :text="$dataStore.t('buttons.save')" @click="submitForm" />
264
- <Teleport v-if="isPanelOpen" to="#panel-actions">
264
+ <Teleport v-if="isPanelOpen" to="#right-panel-actions">
265
265
  <div :class="[$styles.scrollPage]" class="relative flex flex-col items-center">
266
266
  <i
267
267
  v-if="type === 'panel'"
@@ -344,8 +344,8 @@ export default defineComponent({
344
344
  isPanelOpen.value = true;
345
345
  dataStore.panelAction = null;
346
346
  if (props.type === 'default') {
347
- dataStore.panel.open = true;
348
- dataStore.panel.title = title;
347
+ dataStore.rightPanel.open = true;
348
+ dataStore.rightPanel.title = title;
349
349
  }
350
350
 
351
351
  let newList = list;
@@ -363,7 +363,7 @@ export default defineComponent({
363
363
 
364
364
  const pickPanelValue = (item: Value) => {
365
365
  if (props.type === 'default') {
366
- dataStore.panel.open = false;
366
+ dataStore.rightPanel.open = false;
367
367
  }
368
368
  showForm.value = true;
369
369
  isPanelOpen.value = false;
@@ -463,9 +463,9 @@ export default defineComponent({
463
463
  );
464
464
 
465
465
  watch(
466
- () => dataStore.panel.open,
466
+ () => dataStore.rightPanel.open,
467
467
  () => {
468
- if (dataStore.panel.open === false) {
468
+ if (dataStore.rightPanel.open === false) {
469
469
  isPanelOpen.value = false;
470
470
  dataStore.panelAction = null;
471
471
  }
@@ -25,7 +25,7 @@
25
25
  </base-content-block>
26
26
  </section>
27
27
  <base-list-empty v-else />
28
- <Teleport v-if="$dataStore.panelAction === null" to="#panel-actions">
28
+ <Teleport v-if="$dataStore.panelAction === null" to="#right-panel-actions">
29
29
  <base-fade-transition>
30
30
  <div :class="[$styles.flexColNav]">
31
31
  <base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
@@ -73,10 +73,9 @@ export default defineComponent({
73
73
  );
74
74
 
75
75
  const openPanel = async (document: DocumentItem) => {
76
- dataStore.panelAction = null;
77
- dataStore.panel.title = document.fileTypeName!;
76
+ dataStore.rightPanel.title = document.fileTypeName!;
78
77
  currentDocument.value = document;
79
- dataStore.panel.open = true;
78
+ dataStore.rightPanel.open = true;
80
79
  };
81
80
 
82
81
  const onFileChange = async (event: InputEvent) => {
@@ -132,8 +131,7 @@ export default defineComponent({
132
131
  onInit();
133
132
 
134
133
  onUnmounted(() => {
135
- dataStore.panel.open = false;
136
- dataStore.panelAction = null;
134
+ dataStore.rightPanel.open = false;
137
135
  });
138
136
 
139
137
  return {