hl-core 0.0.7-beta.14 → 0.0.7-beta.16

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.
@@ -0,0 +1,109 @@
1
+ <template>
2
+ <section class="w-full px-[10px] pt-[14px] flex flex-col gap-2" :class="[$libStyles.scrollPage]" v-if="$dataStore.signedDocumentList && $dataStore.signedDocumentList.length">
3
+ <base-content-block v-for="document of $dataStore.signedDocumentList as DocumentItem[]" :key="document.id" :class="[$libStyles.textSimple]">
4
+ <h5 class="text-center font-medium mb-4">
5
+ {{ document.fileTypeName }}
6
+ </h5>
7
+ <div :class="[$libStyles.whiteBg, $libStyles.rounded]" class="p-2 h-12 flex items-center relative">
8
+ <span class="ml-2">{{ document.fileName }}</span>
9
+ <i
10
+ class="transition-all cursor-pointer mdi mdi-dots-vertical pl-2 mr-3 border-l-[1px] text-xl absolute right-0"
11
+ :class="[$libStyles.greenTextHover]"
12
+ @click="openPanel(document)"
13
+ ></i>
14
+ </div>
15
+ </base-content-block>
16
+ </section>
17
+ <base-list-empty v-else></base-list-empty>
18
+ <Teleport v-if="$dataStore.panelAction === null" to="#panel-actions">
19
+ <base-fade-transition>
20
+ <div :class="[$libStyles.flexColNav]">
21
+ <base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')"></base-btn>
22
+ <base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')"></base-btn>
23
+ </div>
24
+ </base-fade-transition>
25
+ </Teleport>
26
+ </template>
27
+
28
+ <script lang="ts">
29
+ import { DocumentItem } from '@/composables/classes';
30
+
31
+ export default defineComponent({
32
+ setup() {
33
+ type FileActions = 'view' | 'download';
34
+
35
+ const dataStore = useDataStore();
36
+ const formStore = useFormStore();
37
+ const currentDocument = ref<DocumentItem>(new DocumentItem());
38
+ const documentLoading = ref<boolean>(false);
39
+
40
+ const currentState = reactive<{ action: string; text: string }>({
41
+ action: '',
42
+ text: '',
43
+ });
44
+ const object_list = computed(() => Object.values(dataStore.signedDocumentList));
45
+ const unSignedList = computed(() => document_list.value.filter(doc => doc.signed === false || doc.signed === null));
46
+ const document_list = computed(() =>
47
+ object_list.value.filter(obj => {
48
+ if (obj.fileTypeCode === '19' || obj.fileTypeCode === '5') {
49
+ return obj;
50
+ }
51
+ }),
52
+ );
53
+
54
+ const openPanel = async (document: DocumentItem) => {
55
+ dataStore.panelAction = null;
56
+ dataStore.panel.title = document.fileTypeName!;
57
+ currentDocument.value = document;
58
+ dataStore.panel.open = true;
59
+ };
60
+
61
+ watch(
62
+ () => document_list.value,
63
+ () => {
64
+ if (document_list.value.length > 1 && unSignedList.value.length) {
65
+ currentState.action = 'submit';
66
+ currentState.text = 'Все документы подписаны';
67
+ } else {
68
+ currentState.action = 'upload';
69
+ currentState.text = 'Сохранить';
70
+ }
71
+ },
72
+ {
73
+ immediate: true,
74
+ },
75
+ );
76
+
77
+ const getFile = async (type: FileActions) => {
78
+ if (currentDocument.value) {
79
+ documentLoading.value = true;
80
+ const fileExtension = currentDocument.value.fileName!.match(/\.([0-9a-z]+)(?:[\?#]|$)/i)![1];
81
+ await dataStore.getFile(currentDocument.value, type, fileExtension);
82
+ documentLoading.value = false;
83
+ }
84
+ };
85
+
86
+ const onInit = async () => {
87
+ await dataStore.getDicFileTypeList();
88
+ await dataStore.getSignedDocList(formStore.applicationData.processInstanceId);
89
+ };
90
+
91
+ onInit();
92
+
93
+ onUnmounted(() => {
94
+ dataStore.panel.open = false;
95
+ dataStore.panelAction = null;
96
+ });
97
+
98
+ return {
99
+ // State
100
+ documentLoading,
101
+ DocumentItem,
102
+
103
+ // Functions
104
+ openPanel,
105
+ getFile,
106
+ };
107
+ },
108
+ });
109
+ </script>
@@ -1,10 +1,10 @@
1
1
  <template>
2
- <div class="pt-3 pl-5 rounded border-[1px]" :class="[$libStyles.whiteBg]">
3
- <div>
2
+ <div class="pt-3 rounded-lg border-[1px]" :class="[$libStyles.whiteBg]">
3
+ <div class="ml-5">
4
4
  <p :class="[$libStyles.textTitle, $libStyles.greenText]">{{ title }}</p>
5
5
  <p v-if="!!subtitle" :class="[$libStyles.greyText, $libStyles.textSimple]">{{ subtitle }}</p>
6
6
  </div>
7
- <div class="mt-6 grid grid-cols-4 md:gap-5 md:grid-cols-4 lg:grid-cols-7 auto-rows-fr items-center">
7
+ <div class="ml-5 mt-6 grid grid-cols-4 md:gap-5 md:grid-cols-4 lg:grid-cols-7 auto-rows-fr items-center">
8
8
  <span :class="[$libStyles.textSimple]" class="font-medium">{{ $t('form.fullName') }}</span>
9
9
  <span :class="[$libStyles.textSimple]" class="font-medium">{{ $t('form.iin') }}</span>
10
10
  <span :class="[$libStyles.textSimple]" class="font-medium hidden lg:block"> {{ $t('form.gender') }}</span>
@@ -12,7 +12,7 @@
12
12
  <span :class="[$libStyles.textSimple]" class="font-medium hidden lg:block">{{ $t('form.Country') }} </span>
13
13
  <span :class="[$libStyles.textSimple]" class="font-medium hidden lg:block"> {{ $t('code') }}</span>
14
14
  </div>
15
- <div v-if="isMultiple" class="flex flex-col">
15
+ <div v-if="isMultiple" class="ml-5 flex flex-col">
16
16
  <div v-for="(each, index) of member" :key="index" class="grid grid-cols-4 md:gap-5 md:grid-cols-4 lg:grid-cols-7 auto-rows-fr items-center relative">
17
17
  <span :class="[getMemberInfo(each).fullName === null && $libStyles.emptyBlockCol]">{{ getMemberInfo(each).fullName }}</span>
18
18
  <span :class="[getMemberInfo(each).iin === null && $libStyles.emptyBlockCol]">{{ getMemberInfo(each).iin }}</span>
@@ -21,7 +21,7 @@
21
21
  <span :class="[getMemberInfo(each).birthPlace === null && $libStyles.emptyBlockCol]" class="hidden lg:block"> {{ getMemberInfo(each).birthPlace }} </span>
22
22
  <span :class="[getMemberInfo(each).sectorCode === null && $libStyles.emptyBlockCol]" class="hidden lg:block"> {{ getMemberInfo(each).sectorCode }} </span>
23
23
  <div
24
- class="transition-all h-[70px] w-[60px] place-self-end cursor-pointer"
24
+ class="rounded-br-lg transition-all h-[70px] w-[60px] place-self-end cursor-pointer"
25
25
  :class="[$libStyles.blueBgLight, $libStyles.blueBgLightHover]"
26
26
  @click="$emit('onMore', { whichForm, index })"
27
27
  >
@@ -29,7 +29,7 @@
29
29
  </div>
30
30
  </div>
31
31
  </div>
32
- <div v-else class="grid grid-cols-4 md:gap-5 md:grid-cols-4 lg:grid-cols-7 auto-rows-fr items-center relative">
32
+ <div v-else class="ml-5 grid grid-cols-4 md:gap-5 md:grid-cols-4 lg:grid-cols-7 auto-rows-fr items-center relative">
33
33
  <span :class="[getMemberInfo(member).fullName === null && $libStyles.emptyBlockCol]">{{ getMemberInfo(member).fullName }}</span>
34
34
  <span :class="[getMemberInfo(member).iin === null && $libStyles.emptyBlockCol]">{{ getMemberInfo(member).iin }}</span>
35
35
  <span :class="[getMemberInfo(member).gender === null && $libStyles.emptyBlockCol]" class="hidden lg:block">{{ getMemberInfo(member).gender }} </span>
@@ -37,13 +37,21 @@
37
37
  <span :class="[getMemberInfo(member).birthPlace === null && $libStyles.emptyBlockCol]" class="hidden lg:block"> {{ getMemberInfo(member).birthPlace }} </span>
38
38
  <span :class="[getMemberInfo(member).sectorCode === null && $libStyles.emptyBlockCol]" class="hidden lg:block"> {{ getMemberInfo(member).sectorCode }} </span>
39
39
  <div
40
- class="transition-all h-[70px] w-[60px] place-self-end cursor-pointer"
40
+ class="rounded-br-lg transition-all h-[70px] w-[60px] place-self-end cursor-pointer"
41
41
  :class="[$libStyles.blueBgLight, $libStyles.blueBgLightHover]"
42
42
  @click="$emit('onMore', { whichForm })"
43
43
  >
44
44
  <i class="mdi mdi-dots-vertical text-xl absolute top-[20px] right-[20px]"> </i>
45
45
  </div>
46
46
  </div>
47
+ <div
48
+ v-if="isMultiple && more"
49
+ :class="[$libStyles.blueBg, $libStyles.whiteText, $libStyles.textSimple]"
50
+ class="cursor-pointer rounded-b-lg h-[36px] flex items-center font-medium justify-center"
51
+ @click="memberStore.addMember(whichForm)"
52
+ >
53
+ {{ $t('buttons.add') }}
54
+ </div>
47
55
  </div>
48
56
  </template>
49
57
 
@@ -62,11 +70,16 @@ export default defineComponent({
62
70
  type: String as PropType<'policyholderForm' | 'insuredForm' | 'beneficiaryForm' | 'beneficialOwnerForm' | 'policyholdersRepresentativeForm' | 'productConditionsForm'>,
63
71
  default: '',
64
72
  },
73
+ more: {
74
+ type: Boolean,
75
+ default: false,
76
+ },
65
77
  },
66
- emits: ['onMore'],
78
+ emits: ['onMore', 'addMember'],
67
79
  setup(props) {
68
80
  const dataStore = useDataStore();
69
81
  const formStore = useFormStore();
82
+ const memberStore = useMemberStore();
70
83
  const multipleMembers = ['insuredForm', 'beneficiaryForm', 'beneficialOwnerForm'];
71
84
  const isMultiple = ref(multipleMembers.includes(props.whichForm));
72
85
  const member = formStore[props.whichForm as keyof typeof formStore];
@@ -85,6 +98,7 @@ export default defineComponent({
85
98
  return {
86
99
  // State
87
100
  formStore,
101
+ memberStore,
88
102
  member,
89
103
  isMultiple,
90
104
 
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <section :class="[$libStyles.blueBgLight, $libStyles.rounded]" class="mt-[14px] p-4 flex flex-col gap-[1px]">
3
+ <h2 :class="[$libStyles.textTitle]" class="font-medium text-center w-full mb-4">{{ title }}</h2>
4
+ <slot></slot>
5
+ </section>
6
+ </template>
7
+
8
+ <script lang="ts">
9
+ export default defineComponent({
10
+ props: {
11
+ title: {
12
+ type: String,
13
+ default: 'Заголовок',
14
+ required: true,
15
+ },
16
+ },
17
+ });
18
+ </script>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <div class="h-[74px] !pl-2 md:!pl-5 rounded border-[1px] flex items-center justify-start gap-4" :class="[$libStyles.whiteBg]">
2
+ <div
3
+ class="h-[74px] !pl-2 md:!pl-5 flex items-center justify-start gap-4"
4
+ :class="[$libStyles.whiteBg, hasBorder ? 'border-[1px] rounded-lg' : 'border-b-[1px] border-b-[#f3f6fc] rounded']"
5
+ >
3
6
  <v-switch class="base-toggle" :model-value="modelValue" @update:modelValue="$emit('update:modelValue', $event)" color="#009C73" hide-details :disabled="disabled"> </v-switch>
4
7
  <p :class="[$libStyles.textSimple]">{{ `${title}` }}</p>
5
8
  <p class="mr-3" :class="[modelValue ? $libStyles.greenText : '', $libStyles.textSimple]">{{ `${modelValue ? $dataStore.t('confirm.yes') : $dataStore.t('confirm.no')}` }}</p>
@@ -21,6 +24,10 @@ export default defineComponent({
21
24
  type: Boolean,
22
25
  default: false,
23
26
  },
27
+ hasBorder: {
28
+ type: Boolean,
29
+ default: true,
30
+ },
24
31
  },
25
32
  emits: ['update:modelValue'],
26
33
  });