@7365admin1/layer-common 3.2.1-staging.72 → 3.2.2
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/CHANGELOG.md +39 -0
- package/components/EntryPassInformation.vue +4 -4
- package/components/FeedbackMain.vue +7 -7
- package/components/HidAccessLogDashboard.vue +44 -119
- package/components/HidIdentityMapping.vue +975 -0
- package/components/HidIntercomManagement.vue +201 -808
- package/components/HidQrCodeConfiguration.vue +95 -907
- package/components/HidServiceSettingsPanel.vue +1 -20
- package/components/HidUserEnrollment.vue +81 -392
- package/components/Layout/NavigationDrawer.vue +2 -43
- package/components/NavigationItem.vue +0 -9
- package/components/Nfc/NFCPatrolRouteMain.vue +7 -52
- package/components/OnlineFormConfigurationForm.vue +224 -620
- package/components/OnlineFormFill.vue +8 -36
- package/components/OnlineFormsConfiguration.vue +2 -6
- package/components/QrTemplate/CreditCardLandscape.vue +12 -19
- package/components/QrTemplate/PrintDialog.vue +196 -209
- package/components/SiteSettings.vue +2 -4
- package/components/VisitorForm.vue +78 -201
- package/components/VisitorManagement.vue +2 -1
- package/composables/useComment.ts +3 -3
- package/composables/useHidAmico.ts +0 -127
- package/composables/useHidNavigation.ts +7 -0
- package/composables/useOnlineFormPages.ts +0 -2
- package/composables/useSiteSettings.ts +0 -50
- package/composables/useWebUsb.ts +37 -127
- package/middleware/member.ts +4 -0
- package/package.json +1 -2
- package/pages/[org]/[site]/access-mgmt/identity-mapping/index.vue +23 -0
- package/pages/[org]/[site]/access-mgmt/intercom/index.vue +1 -1
- package/plugins/secure-member.client.ts +56 -21
- package/plugins/vuetify.ts +9 -37
- package/types/site.d.ts +0 -71
- package/.changeset/camera-wall-gated-endpoint.md +0 -47
- package/.changeset/camera-wall-plain-english.md +0 -60
- package/.changeset/camera-wall-selection-and-guidance.md +0 -65
- package/.changeset/dark-primary-contrast.md +0 -39
- package/components/CameraWall.vue +0 -1034
- package/components/CameraWallTile.vue +0 -818
- package/components/HidCameraCaptureDialog.vue +0 -199
- package/composables/useSipWebPhone.ts +0 -311
- package/utils/camera-wall.test.ts +0 -571
- package/utils/camera-wall.ts +0 -926
- package/utils/theme.test.ts +0 -201
- package/utils/theme.ts +0 -136
|
@@ -247,40 +247,6 @@
|
|
|
247
247
|
{{ resolveText(block.text) }}
|
|
248
248
|
</p>
|
|
249
249
|
|
|
250
|
-
<!-- ORDERED LIST -->
|
|
251
|
-
<div v-else-if="block.type === 'ordered-list'" class="mb-3">
|
|
252
|
-
<div
|
|
253
|
-
v-if="block.title"
|
|
254
|
-
class="text-body-2 font-weight-bold mb-1"
|
|
255
|
-
style="text-decoration: underline; text-underline-offset: 3px"
|
|
256
|
-
>{{ block.title }}</div>
|
|
257
|
-
<ol style="padding-left: 22px; margin: 0">
|
|
258
|
-
<li
|
|
259
|
-
v-for="(item, itemIdx) in block.items"
|
|
260
|
-
:key="itemIdx"
|
|
261
|
-
class="text-body-2 mb-1"
|
|
262
|
-
style="line-height: 1.55; color: #333"
|
|
263
|
-
>{{ item }}</li>
|
|
264
|
-
</ol>
|
|
265
|
-
</div>
|
|
266
|
-
|
|
267
|
-
<!-- UNORDERED LIST -->
|
|
268
|
-
<div v-else-if="block.type === 'unordered-list'" class="mb-3">
|
|
269
|
-
<div
|
|
270
|
-
v-if="block.title"
|
|
271
|
-
class="text-body-2 font-weight-bold mb-1"
|
|
272
|
-
style="text-decoration: underline; text-underline-offset: 3px"
|
|
273
|
-
>{{ block.title }}</div>
|
|
274
|
-
<ul style="padding-left: 22px; margin: 0">
|
|
275
|
-
<li
|
|
276
|
-
v-for="(item, itemIdx) in block.items"
|
|
277
|
-
:key="itemIdx"
|
|
278
|
-
class="text-body-2 mb-1"
|
|
279
|
-
style="line-height: 1.55; color: #333"
|
|
280
|
-
>{{ item }}</li>
|
|
281
|
-
</ul>
|
|
282
|
-
</div>
|
|
283
|
-
|
|
284
250
|
<!-- DIVIDER -->
|
|
285
251
|
<v-divider v-else-if="block.type === 'divider'" class="my-4" />
|
|
286
252
|
|
|
@@ -467,7 +433,6 @@ const props = defineProps({
|
|
|
467
433
|
approvalMode: { type: Boolean, default: false },
|
|
468
434
|
initialManagementValues: { type: Object as PropType<Record<string, string>>, default: () => ({}) },
|
|
469
435
|
formType: { type: String, default: "" },
|
|
470
|
-
paymentAmount: { type: Number, default: 0 },
|
|
471
436
|
/** Optional custom submit handler. Receives the collected form values.
|
|
472
437
|
* If omitted the component submits to /api/online-forms automatically. */
|
|
473
438
|
submitFn: {
|
|
@@ -631,8 +596,15 @@ const submissionStatusColor = computed(() => {
|
|
|
631
596
|
}
|
|
632
597
|
});
|
|
633
598
|
|
|
599
|
+
const PAYMENT_REQUIRED_FORM_TYPES = new Set([
|
|
600
|
+
"Application for Electronic Access Card",
|
|
601
|
+
"Application for Booking of BBQ Pit",
|
|
602
|
+
"Application for Moving In/Out & Delivery",
|
|
603
|
+
"Application for Main Entrance RFID Transponder",
|
|
604
|
+
]);
|
|
605
|
+
|
|
634
606
|
const requiresPayment = computed(() => {
|
|
635
|
-
if (props.
|
|
607
|
+
if (!PAYMENT_REQUIRED_FORM_TYPES.has(props.formType)) return false;
|
|
636
608
|
if (props.formType === "Application for Main Entrance RFID Transponder") {
|
|
637
609
|
return !!(props.initialValues.reasonLost || props.initialValues.reasonDamaged);
|
|
638
610
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
>
|
|
89
89
|
|
|
90
90
|
<!-- Create Dialog -->
|
|
91
|
-
<v-dialog v-model="createDialog" width="
|
|
91
|
+
<v-dialog v-model="createDialog" width="450" persistent>
|
|
92
92
|
<OnlineFormConfigurationForm
|
|
93
93
|
mode="add"
|
|
94
94
|
@cancel="createDialog = false"
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
</v-dialog>
|
|
98
98
|
|
|
99
99
|
<!-- Edit Dialog -->
|
|
100
|
-
<v-dialog v-model="editDialog" width="
|
|
100
|
+
<v-dialog v-model="editDialog" width="450" persistent>
|
|
101
101
|
<OnlineFormConfigurationForm
|
|
102
102
|
mode="edit"
|
|
103
103
|
@cancel="editDialog = false"
|
|
@@ -113,7 +113,6 @@
|
|
|
113
113
|
:definition="selectedFormDefinition"
|
|
114
114
|
:site-id="siteId"
|
|
115
115
|
:org-id="orgId"
|
|
116
|
-
:payment-amount="selectedPaymentAmount"
|
|
117
116
|
readonly
|
|
118
117
|
@cancel="previewDialog = false"
|
|
119
118
|
>
|
|
@@ -337,9 +336,6 @@ const selectedFormDefinition = ref<any>(null);
|
|
|
337
336
|
const deleteLoading = ref(false);
|
|
338
337
|
const confirmDialog = ref(false);
|
|
339
338
|
const selectedOnlineFormId = ref<string | null>(null);
|
|
340
|
-
const selectedPaymentAmount = computed(() =>
|
|
341
|
-
Number(selectedOnlineForm.value?.fields?.paymentAmount ?? 0)
|
|
342
|
-
);
|
|
343
339
|
|
|
344
340
|
function parseFieldsToInputs(fields: Record<string, string>): any[] {
|
|
345
341
|
return Object.keys(fields)
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
<qrcode-vue
|
|
35
35
|
v-if="templateQrCode.CCFrontQREnabled"
|
|
36
|
-
:value="
|
|
36
|
+
:value="`${prefix}0${+printRangeStart + +card.number - 1}`"
|
|
37
37
|
:size="templateQrCode.CCFrontQRCodeSize"
|
|
38
38
|
level="H"
|
|
39
39
|
:style="{
|
|
@@ -53,7 +53,9 @@
|
|
|
53
53
|
}"
|
|
54
54
|
class="position-absolute text-center"
|
|
55
55
|
>
|
|
56
|
-
Pass Number: {{
|
|
56
|
+
Pass Number: {{ prefix }}0{{
|
|
57
|
+
+printRangeStart + +card.number - 1
|
|
58
|
+
}}
|
|
57
59
|
</div>
|
|
58
60
|
</v-card>
|
|
59
61
|
|
|
@@ -72,7 +74,7 @@
|
|
|
72
74
|
|
|
73
75
|
<qrcode-vue
|
|
74
76
|
v-if="templateQrCode.CCBackQREnabled"
|
|
75
|
-
:value="
|
|
77
|
+
:value="`${prefix}0${+printRangeStart + +card.number - 1}`"
|
|
76
78
|
:size="templateQrCode.CCBackQRCodeSize"
|
|
77
79
|
level="H"
|
|
78
80
|
:style="{
|
|
@@ -91,7 +93,9 @@
|
|
|
91
93
|
}"
|
|
92
94
|
class="position-absolute text-center"
|
|
93
95
|
>
|
|
94
|
-
Pass Number: {{
|
|
96
|
+
Pass Number: {{ prefix }}0{{
|
|
97
|
+
+printRangeStart + +card.number - 1
|
|
98
|
+
}}
|
|
95
99
|
</div>
|
|
96
100
|
</v-card>
|
|
97
101
|
</v-col>
|
|
@@ -109,22 +113,11 @@ const props = defineProps({
|
|
|
109
113
|
paginatedCardData: Array,
|
|
110
114
|
templateQrCode: Object,
|
|
111
115
|
prefix: String,
|
|
112
|
-
printRangeStart:
|
|
116
|
+
printRangeStart: Number,
|
|
117
|
+
});
|
|
118
|
+
onMounted(() => {
|
|
119
|
+
console.log("templateQrCode 11", props.templateQrCode.CCOrientation);
|
|
113
120
|
});
|
|
114
|
-
|
|
115
|
-
const getPassNumberValue = (position) => {
|
|
116
|
-
const rawStartValue = `${props.printRangeStart ?? ""}`.trim();
|
|
117
|
-
const startMatch = rawStartValue.match(/(\d+)$/);
|
|
118
|
-
const startValue = startMatch?.[1] ?? "0";
|
|
119
|
-
const startNumber = Number(startValue);
|
|
120
|
-
const sequenceNumber = startNumber + Number(position) - 1;
|
|
121
|
-
const cleanPrefix = `${props.prefix ?? ""}`.replace(/\d+$/, "");
|
|
122
|
-
const width = startValue.length;
|
|
123
|
-
const formattedSequence =
|
|
124
|
-
width > 0 ? `${sequenceNumber}`.padStart(width, "0") : `${sequenceNumber}`;
|
|
125
|
-
|
|
126
|
-
return `${cleanPrefix}${formattedSequence}`;
|
|
127
|
-
};
|
|
128
121
|
</script>
|
|
129
122
|
|
|
130
123
|
<style scoped>
|