@7365admin1/layer-common 1.8.6 → 1.10.0
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 +12 -0
- package/components/AccessCardAddForm.vue +235 -27
- package/components/BuildingUnitFormAdd.vue +13 -11
- package/components/Button/Close.vue +16 -0
- package/components/Dialog/UpdateMoreAction.vue +6 -1
- package/components/DocumentManagement.vue +4 -9
- package/components/FeedbackDetail.vue +21 -10
- package/components/IncidentReport/Authorities.vue +226 -0
- package/components/IncidentReport/IncidentInformation.vue +258 -0
- package/components/IncidentReport/affectedEntities.vue +167 -0
- package/components/Input/DatePicker.vue +102 -0
- package/components/InvitationMain.vue +19 -17
- package/components/PasswordConfirmation.vue +95 -0
- package/components/RolePermissionMain.vue +17 -15
- package/components/ServiceProviderMain.vue +27 -7
- package/components/VisitorForm.vue +3 -1
- package/components/VisitorManagement.vue +6 -1
- package/components/WorkOrder/Detail.vue +179 -2
- package/components/WorkOrder/Main.vue +65 -4
- package/composables/useBuildingUnit.ts +1 -1
- package/composables/useDOBEntries.ts +13 -0
- package/composables/useDocument.ts +3 -2
- package/composables/useFeedback.ts +3 -2
- package/composables/useFile.ts +4 -6
- package/composables/useNFCPatrolSettings.ts +1 -1
- package/composables/useRole.ts +3 -2
- package/composables/useWorkOrder.ts +8 -0
- package/package.json +1 -1
- package/types/card.d.ts +5 -0
- package/types/verification.d.ts +1 -1
- /package/components/{NFC/PatrolSettings.vue → Nfc/NFCPatrolSettings.vue} +0 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-row no-gutters class="px-5 pt-4">
|
|
3
|
+
<!-- Authorities (Police/SCDF/Ambulance called in at the scene) -->
|
|
4
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
5
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
6
|
+
Authorities (Police/SCDF/Ambulance called in at the scene)?
|
|
7
|
+
</p>
|
|
8
|
+
<p
|
|
9
|
+
v-if="authorities?.authoritiesValue == 'no'"
|
|
10
|
+
class="mt-2 text-h6 text-capitalize"
|
|
11
|
+
>
|
|
12
|
+
{{ authorities?.authoritiesValue }}
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
<v-data-table
|
|
16
|
+
v-else
|
|
17
|
+
:headers="authoritiesTableHeader"
|
|
18
|
+
:items="authorities?.authoritiesCalled"
|
|
19
|
+
fixed-header
|
|
20
|
+
hide-default-footer
|
|
21
|
+
:hide-default-header="false"
|
|
22
|
+
items-per-page="100"
|
|
23
|
+
style="max-height: calc(100vh - (200px))"
|
|
24
|
+
class="border mt-5"
|
|
25
|
+
>
|
|
26
|
+
</v-data-table>
|
|
27
|
+
</v-col>
|
|
28
|
+
|
|
29
|
+
<!-- Input lists -->
|
|
30
|
+
<v-col cols="12" class="pb-3 mb-5 mt-1">
|
|
31
|
+
<v-row no-gutters>
|
|
32
|
+
<v-col cols="12" class="px-1 mb-7">
|
|
33
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
34
|
+
What was done to address the incident thereafter?
|
|
35
|
+
</p>
|
|
36
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
37
|
+
{{ authorities?.incidentThereAfter }}
|
|
38
|
+
</p>
|
|
39
|
+
</v-col>
|
|
40
|
+
|
|
41
|
+
<v-col cols="12" class="px-1 mb-7">
|
|
42
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
43
|
+
Were the management notified and who was notified?
|
|
44
|
+
</p>
|
|
45
|
+
<v-row no-gutters>
|
|
46
|
+
<v-col cols="12" sm="6" class="px-1">
|
|
47
|
+
<InputLabel class="text-capitalize" title="Action Taken" />
|
|
48
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
49
|
+
{{ authorities?.managementNotified?.actionTaken }}
|
|
50
|
+
</p>
|
|
51
|
+
</v-col>
|
|
52
|
+
<v-col cols="12" sm="6" class="px-1">
|
|
53
|
+
<InputLabel
|
|
54
|
+
class="text-capitalize"
|
|
55
|
+
title="Management Notified Time"
|
|
56
|
+
/>
|
|
57
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
58
|
+
{{ authorities?.managementNotified?.time }}
|
|
59
|
+
</p>
|
|
60
|
+
</v-col>
|
|
61
|
+
</v-row>
|
|
62
|
+
</v-col>
|
|
63
|
+
|
|
64
|
+
<v-col cols="12" class="px-1 mb-7">
|
|
65
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
66
|
+
How the incident resolved?
|
|
67
|
+
</p>
|
|
68
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
69
|
+
{{ authorities?.incidentResolved }}
|
|
70
|
+
</p>
|
|
71
|
+
</v-col>
|
|
72
|
+
|
|
73
|
+
<v-col cols="12" class="px-1 mb-7">
|
|
74
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
75
|
+
What was the cause of the incident?
|
|
76
|
+
</p>
|
|
77
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
78
|
+
{{ authorities?.causeOfIncident }}
|
|
79
|
+
</p>
|
|
80
|
+
</v-col>
|
|
81
|
+
|
|
82
|
+
<v-col cols="12" class="px-1 mb-6">
|
|
83
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
84
|
+
Any system used to verify incident?
|
|
85
|
+
</p>
|
|
86
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
87
|
+
{{ authorities?.systemUsed }}
|
|
88
|
+
</p>
|
|
89
|
+
</v-col>
|
|
90
|
+
|
|
91
|
+
<v-col cols="12" class="px-1 mb-6">
|
|
92
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
93
|
+
Any cctv records or picture taken?
|
|
94
|
+
</p>
|
|
95
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
96
|
+
{{ authorities?.cctvRecord }}
|
|
97
|
+
</p>
|
|
98
|
+
</v-col>
|
|
99
|
+
|
|
100
|
+
<v-col cols="12" class="px-1 mb-6">
|
|
101
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
102
|
+
Particulars of tenant/Owner (if any)
|
|
103
|
+
</p>
|
|
104
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
105
|
+
{{ authorities?.particularsOwner }}
|
|
106
|
+
</p>
|
|
107
|
+
</v-col>
|
|
108
|
+
|
|
109
|
+
<v-col cols="12" class="px-1 mb-6">
|
|
110
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
111
|
+
When was the incident resolved?
|
|
112
|
+
</p>
|
|
113
|
+
<v-row no-gutters>
|
|
114
|
+
<v-col cols="12" sm="6" class="px-1">
|
|
115
|
+
<InputLabel class="text-capitalize" title="Action Taken" />
|
|
116
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
117
|
+
{{ authorities?.whenIncidentResolve?.actionTaken }}
|
|
118
|
+
</p>
|
|
119
|
+
</v-col>
|
|
120
|
+
<v-col cols="12" sm="6" class="px-1">
|
|
121
|
+
<InputLabel
|
|
122
|
+
class="text-capitalize"
|
|
123
|
+
title="Incident Resolve Time"
|
|
124
|
+
/>
|
|
125
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
126
|
+
{{ authorities?.whenIncidentResolve?.time }}
|
|
127
|
+
</p>
|
|
128
|
+
</v-col>
|
|
129
|
+
</v-row>
|
|
130
|
+
</v-col>
|
|
131
|
+
|
|
132
|
+
<v-col cols="12" class="px-1 mb-6">
|
|
133
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
134
|
+
Name of shift in charge?
|
|
135
|
+
</p>
|
|
136
|
+
<v-row no-gutters>
|
|
137
|
+
<v-col cols="12" sm="6" class="px-1">
|
|
138
|
+
<InputLabel class="text-capitalize" title="Person in Charge" />
|
|
139
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
140
|
+
{{ authorities?.nameOfShiftIncharge?.personInCharge }}
|
|
141
|
+
</p>
|
|
142
|
+
</v-col>
|
|
143
|
+
<v-col cols="12" sm="6" class="px-1">
|
|
144
|
+
<InputLabel class="text-capitalize" title="Action Taken" />
|
|
145
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
146
|
+
{{ authorities?.nameOfShiftIncharge?.actionTaken }}
|
|
147
|
+
</p>
|
|
148
|
+
</v-col>
|
|
149
|
+
</v-row>
|
|
150
|
+
</v-col>
|
|
151
|
+
|
|
152
|
+
<v-col cols="12" class="px-1 mb-6">
|
|
153
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600"></p>
|
|
154
|
+
<v-row no-gutters>
|
|
155
|
+
<v-col cols="12" sm="6" class="px-1">
|
|
156
|
+
<InputLabel class="text-capitalize" title="Shift Start" />
|
|
157
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
158
|
+
{{ authorities?.nameOfShiftIncharge?.shiftStart }}
|
|
159
|
+
</p>
|
|
160
|
+
</v-col>
|
|
161
|
+
<v-col cols="12" sm="6" class="px-1">
|
|
162
|
+
<InputLabel class="text-capitalize" title="Shift End" />
|
|
163
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
164
|
+
{{ authorities?.nameOfShiftIncharge?.shiftEnd }}
|
|
165
|
+
</p>
|
|
166
|
+
</v-col>
|
|
167
|
+
</v-row>
|
|
168
|
+
</v-col>
|
|
169
|
+
|
|
170
|
+
<v-col cols="12" class="px-1">
|
|
171
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
172
|
+
Any security implication due to the incident?
|
|
173
|
+
</p>
|
|
174
|
+
<p class="mt-2 text-h6 text-capitalize">
|
|
175
|
+
{{ authorities?.securityImplication }}
|
|
176
|
+
</p>
|
|
177
|
+
</v-col>
|
|
178
|
+
</v-row>
|
|
179
|
+
</v-col>
|
|
180
|
+
</v-row>
|
|
181
|
+
</template>
|
|
182
|
+
|
|
183
|
+
<script lang="ts" setup>
|
|
184
|
+
definePageMeta({
|
|
185
|
+
middleware: ["01-auth", "02-org"],
|
|
186
|
+
memberOnly: true,
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// imports
|
|
190
|
+
|
|
191
|
+
// utilities
|
|
192
|
+
|
|
193
|
+
// props
|
|
194
|
+
const props = defineProps({
|
|
195
|
+
authorities: {
|
|
196
|
+
type: Object as PropType<Record<string, any> | null>,
|
|
197
|
+
required: true,
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
// emits
|
|
202
|
+
|
|
203
|
+
// state
|
|
204
|
+
const authoritiesTableHeader = [
|
|
205
|
+
{
|
|
206
|
+
title: "Type of Authorities",
|
|
207
|
+
value: "type",
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
title: "Vehicle Number",
|
|
211
|
+
value: "vehicleNumber",
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
title: "Person in Charge",
|
|
215
|
+
value: "personInCharge",
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
title: "Case Report Reference",
|
|
219
|
+
value: "caseReportReference",
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
title: "Description",
|
|
223
|
+
value: "description",
|
|
224
|
+
},
|
|
225
|
+
];
|
|
226
|
+
</script>
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-row no-gutters class="px-5 pt-4">
|
|
3
|
+
<!-- Site Information -->
|
|
4
|
+
<v-col cols="12" class="border-b pb-3 mb-5">
|
|
5
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
6
|
+
Site Information
|
|
7
|
+
</p>
|
|
8
|
+
<v-row no-gutters class="mt-5">
|
|
9
|
+
<v-col cols="12" sm="6" md="3">
|
|
10
|
+
<InputLabel class="text-capitalize" title="Site" />
|
|
11
|
+
<p class="my-1 text-h6">{{ siteName || "NA" }}</p>
|
|
12
|
+
</v-col>
|
|
13
|
+
<v-col cols="12" sm="6" md="3">
|
|
14
|
+
<InputLabel
|
|
15
|
+
class="text-capitalize"
|
|
16
|
+
title="Incident Reference Number"
|
|
17
|
+
/>
|
|
18
|
+
<p class="my-1 text-h6">
|
|
19
|
+
{{ incidentInformation?.siteInfo?.irNumber || "NA" }}
|
|
20
|
+
</p>
|
|
21
|
+
</v-col>
|
|
22
|
+
<v-col cols="12" sm="6" md="3">
|
|
23
|
+
<InputLabel class="text-capitalize" title="Submitted By" />
|
|
24
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
25
|
+
{{ incidentInformation?.siteInfo?.submittedBy || "NA" }}
|
|
26
|
+
</p>
|
|
27
|
+
</v-col>
|
|
28
|
+
<v-col cols="12" sm="6" md="3">
|
|
29
|
+
<InputLabel class="text-capitalize" title="Designation" />
|
|
30
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
31
|
+
{{ incidentInformation?.siteInfo?.designation || "NA" }}
|
|
32
|
+
</p>
|
|
33
|
+
</v-col>
|
|
34
|
+
</v-row>
|
|
35
|
+
</v-col>
|
|
36
|
+
|
|
37
|
+
<!-- Place of Incident -->
|
|
38
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
39
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
40
|
+
Place of Incident
|
|
41
|
+
</p>
|
|
42
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
43
|
+
{{ incidentInformation?.placeOfIncident?.incidentLocation || "NA" }}
|
|
44
|
+
</p>
|
|
45
|
+
</v-col>
|
|
46
|
+
|
|
47
|
+
<!-- Incident Type / Time -->
|
|
48
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
49
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
50
|
+
Incident Type / Time
|
|
51
|
+
</p>
|
|
52
|
+
<v-row no-gutters class="mt-5">
|
|
53
|
+
<v-col cols="12" sm="3" md="3">
|
|
54
|
+
<InputLabel class="text-capitalize" title="Type of Incident" />
|
|
55
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
56
|
+
{{
|
|
57
|
+
incidentInformation?.incidentTypeAndTime?.typeOfIncident || "NA"
|
|
58
|
+
}}
|
|
59
|
+
</p>
|
|
60
|
+
</v-col>
|
|
61
|
+
<v-col cols="12" sm="3" md="3">
|
|
62
|
+
<InputLabel class="text-capitalize" title="Incident Date" />
|
|
63
|
+
<p class="my-1 text-h6">
|
|
64
|
+
{{
|
|
65
|
+
toLocalDate(
|
|
66
|
+
incidentInformation?.incidentTypeAndTime?.dateOfIncident,
|
|
67
|
+
) || "NA"
|
|
68
|
+
}}
|
|
69
|
+
</p>
|
|
70
|
+
</v-col>
|
|
71
|
+
<v-col cols="12" sm="3" md="3">
|
|
72
|
+
<InputLabel class="text-capitalize" title="Incident Start" />
|
|
73
|
+
<p class="my-1 text-h6">
|
|
74
|
+
{{
|
|
75
|
+
incidentInformation?.incidentTypeAndTime?.incidentStart || "NA"
|
|
76
|
+
}}
|
|
77
|
+
</p>
|
|
78
|
+
</v-col>
|
|
79
|
+
<v-col cols="12" sm="3" md="3">
|
|
80
|
+
<v-row no-gutters class="d-flex align-center">
|
|
81
|
+
<v-col cols="10">
|
|
82
|
+
<InputLabel class="text-capitalize" title="Incident End" />
|
|
83
|
+
<p class="my-1 text-h6">
|
|
84
|
+
{{
|
|
85
|
+
incidentInformation?.incidentTypeAndTime?.incidentEnd || "NA"
|
|
86
|
+
}}
|
|
87
|
+
</p>
|
|
88
|
+
</v-col>
|
|
89
|
+
</v-row>
|
|
90
|
+
</v-col>
|
|
91
|
+
</v-row>
|
|
92
|
+
</v-col>
|
|
93
|
+
|
|
94
|
+
<!-- Response/Submission From (1st Contact) -->
|
|
95
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
96
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
97
|
+
Response/Submission From (1st Contact)
|
|
98
|
+
</p>
|
|
99
|
+
<v-row no-gutters class="mt-5">
|
|
100
|
+
<v-col cols="12" sm="4" md="3">
|
|
101
|
+
<InputLabel class="text-capitalize" title="Time" />
|
|
102
|
+
<p class="my-1 text-h6">
|
|
103
|
+
{{ incidentInformation?.submissionForm?.time || "NA" }}
|
|
104
|
+
</p>
|
|
105
|
+
</v-col>
|
|
106
|
+
<v-col cols="12" sm="4" md="3">
|
|
107
|
+
<InputLabel
|
|
108
|
+
class="text-capitalize"
|
|
109
|
+
title="Time of Report Submission"
|
|
110
|
+
/>
|
|
111
|
+
<p class="my-1 text-h6">
|
|
112
|
+
{{ incidentInformation?.submissionForm?.timeOfResponse || "NA" }}
|
|
113
|
+
</p>
|
|
114
|
+
</v-col>
|
|
115
|
+
<v-col cols="12" sm="4" md="3">
|
|
116
|
+
<InputLabel class="text-capitalize" title="Date" />
|
|
117
|
+
<p class="my-1 text-h6">
|
|
118
|
+
{{
|
|
119
|
+
toLocalDate(incidentInformation?.submissionForm?.dateOfReport) ||
|
|
120
|
+
"NA"
|
|
121
|
+
}}
|
|
122
|
+
</p>
|
|
123
|
+
</v-col>
|
|
124
|
+
</v-row>
|
|
125
|
+
</v-col>
|
|
126
|
+
|
|
127
|
+
<!-- Name of Informant/Complainant Information -->
|
|
128
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
129
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
130
|
+
Name of Informant/Complainant Information
|
|
131
|
+
</p>
|
|
132
|
+
<v-row no-gutters class="d-flex align-center mt-5">
|
|
133
|
+
<v-col cols="12" sm="4" md="3">
|
|
134
|
+
<InputLabel class="text-capitalize" title="Name" />
|
|
135
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
136
|
+
{{ incidentInformation?.complaintInfo?.complainant || "NA" }}
|
|
137
|
+
</p>
|
|
138
|
+
</v-col>
|
|
139
|
+
<v-col cols="12" sm="4" md="3">
|
|
140
|
+
<InputLabel class="text-capitalize" title="NRIC/WP Number" />
|
|
141
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
142
|
+
{{ incidentInformation?.complaintInfo?.nric || "NA" }}
|
|
143
|
+
</p>
|
|
144
|
+
</v-col>
|
|
145
|
+
<v-col cols="12" sm="4" md="3">
|
|
146
|
+
<InputLabel class="text-capitalize" title="Contact Number" />
|
|
147
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
148
|
+
{{ incidentInformation?.complaintInfo?.contact || "NA" }}
|
|
149
|
+
</p>
|
|
150
|
+
</v-col>
|
|
151
|
+
</v-row>
|
|
152
|
+
</v-col>
|
|
153
|
+
|
|
154
|
+
<!-- Name of Recipient of Complaint (1st Contact) -->
|
|
155
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
156
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
157
|
+
Name of Recipient of Complaint (1st Contact)
|
|
158
|
+
</p>
|
|
159
|
+
<v-row no-gutters class="d-flex align-center mt-5">
|
|
160
|
+
<v-col cols="12" sm="4" md="3">
|
|
161
|
+
<InputLabel class="text-capitalize" title="Name" />
|
|
162
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
163
|
+
{{ incidentInformation?.recipientOfComplaint?.recipient || "NA" }}
|
|
164
|
+
</p>
|
|
165
|
+
</v-col>
|
|
166
|
+
<v-col cols="12" sm="4" md="3">
|
|
167
|
+
<InputLabel class="text-capitalize" title="NRIC/WP Number" />
|
|
168
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
169
|
+
{{ incidentInformation?.recipientOfComplaint?.nric || "NA" }}
|
|
170
|
+
</p>
|
|
171
|
+
</v-col>
|
|
172
|
+
<v-col cols="12" sm="4" md="3">
|
|
173
|
+
<InputLabel class="text-capitalize" title="Contact Number" />
|
|
174
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
175
|
+
{{ incidentInformation?.recipientOfComplaint?.contact || "NA" }}
|
|
176
|
+
</p>
|
|
177
|
+
</v-col>
|
|
178
|
+
</v-row>
|
|
179
|
+
</v-col>
|
|
180
|
+
|
|
181
|
+
<!-- Complaint Received through -->
|
|
182
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
183
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
184
|
+
Complaint Received through
|
|
185
|
+
</p>
|
|
186
|
+
<v-col cols="12">
|
|
187
|
+
<InputLabel class="text-capitalize" title="Received through" />
|
|
188
|
+
<p
|
|
189
|
+
v-if="
|
|
190
|
+
incidentInformation?.complaintReceivedTo?.receivedVia != 'others'
|
|
191
|
+
"
|
|
192
|
+
class="my-1 text-h6 text-capitalize"
|
|
193
|
+
>
|
|
194
|
+
{{ incidentInformation?.complaintReceivedTo?.receivedVia || "NA" }}
|
|
195
|
+
</p>
|
|
196
|
+
|
|
197
|
+
<p v-else class="my-1 text-h6">
|
|
198
|
+
{{
|
|
199
|
+
incidentInformation?.complaintReceivedTo?.otherDescription || "NA"
|
|
200
|
+
}}
|
|
201
|
+
</p>
|
|
202
|
+
</v-col>
|
|
203
|
+
</v-col>
|
|
204
|
+
|
|
205
|
+
<!-- Brief Description -->
|
|
206
|
+
<v-col cols="12" class="mb-10">
|
|
207
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
208
|
+
Brief Description
|
|
209
|
+
</p>
|
|
210
|
+
<p class="mt-5 text-h6 text-capitalize">
|
|
211
|
+
{{ incidentInformation?.complaintReceivedTo?.briefDescription || "NA" }}
|
|
212
|
+
</p>
|
|
213
|
+
</v-col>
|
|
214
|
+
</v-row>
|
|
215
|
+
</template>
|
|
216
|
+
|
|
217
|
+
<script lang="ts" setup>
|
|
218
|
+
definePageMeta({
|
|
219
|
+
middleware: ["01-auth", "02-org"],
|
|
220
|
+
memberOnly: true,
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// props
|
|
224
|
+
const props = defineProps({
|
|
225
|
+
incidentInformation: {
|
|
226
|
+
type: Object as PropType<Record<string, any> | null>,
|
|
227
|
+
required: true,
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
// utilities
|
|
232
|
+
const { getSiteById } = useSiteSettings();
|
|
233
|
+
|
|
234
|
+
// state
|
|
235
|
+
const siteName = ref("");
|
|
236
|
+
|
|
237
|
+
const siteId = computed(() => props.incidentInformation?.siteInfo?.site );
|
|
238
|
+
|
|
239
|
+
watch(
|
|
240
|
+
siteId,
|
|
241
|
+
async (newSiteId) => {
|
|
242
|
+
if (!newSiteId) return;
|
|
243
|
+
|
|
244
|
+
const siteDataValue = await getSiteById(newSiteId);
|
|
245
|
+
|
|
246
|
+
siteName.value = siteDataValue?.name ?? "";
|
|
247
|
+
},
|
|
248
|
+
{ immediate: true }
|
|
249
|
+
);
|
|
250
|
+
|
|
251
|
+
function toLocalDate(utcString: string) {
|
|
252
|
+
return new Date(utcString).toLocaleString("en-US", {
|
|
253
|
+
year: "numeric",
|
|
254
|
+
month: "2-digit",
|
|
255
|
+
day: "2-digit",
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
</script>
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-row no-gutters class="px-5 pt-4">
|
|
3
|
+
<!-- Any unit affected -->
|
|
4
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
5
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
6
|
+
Any unit affected?
|
|
7
|
+
</p>
|
|
8
|
+
<p
|
|
9
|
+
v-if="affectedEntities?.anyUnitAffectedValue == 'no'"
|
|
10
|
+
class="mt-2 text-h6 text-capitalize"
|
|
11
|
+
>
|
|
12
|
+
{{ affectedEntities?.anyUnitAffectedValue }}
|
|
13
|
+
</p>
|
|
14
|
+
<!-- Block Level Unit Section -->
|
|
15
|
+
<v-row v-else no-gutters class="d-flex align-center mt-5">
|
|
16
|
+
<v-row
|
|
17
|
+
v-if="affectedEntities?.affectedUnit.hasOwnProperty('block')"
|
|
18
|
+
no-gutters
|
|
19
|
+
>
|
|
20
|
+
<v-col cols="12" sm="4">
|
|
21
|
+
<InputLabel class="text-capitalize" title="Block" />
|
|
22
|
+
<p class="my-1 text-h6">
|
|
23
|
+
{{ affectedEntities?.affectedUnit?.block }}
|
|
24
|
+
</p>
|
|
25
|
+
</v-col>
|
|
26
|
+
<v-col cols="12" sm="4">
|
|
27
|
+
<InputLabel class="text-capitalize" title="Level" />
|
|
28
|
+
<p class="my-1 text-h6">
|
|
29
|
+
{{ affectedEntities?.affectedUnit?.level }}
|
|
30
|
+
</p>
|
|
31
|
+
</v-col>
|
|
32
|
+
<v-col cols="12" sm="4">
|
|
33
|
+
<InputLabel class="text-capitalize" title="Unit" />
|
|
34
|
+
<p class="my-1 text-h6">
|
|
35
|
+
{{ affectedEntities?.affectedUnit?.unit }}
|
|
36
|
+
</p>
|
|
37
|
+
</v-col>
|
|
38
|
+
</v-row>
|
|
39
|
+
|
|
40
|
+
<v-col v-else cols="12" class="px-1 mb-0">
|
|
41
|
+
<InputLabel class="text-capitalize" title="Location" />
|
|
42
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
43
|
+
{{ affectedEntities?.affectedUnit?.other }}
|
|
44
|
+
</p>
|
|
45
|
+
</v-col>
|
|
46
|
+
|
|
47
|
+
<v-col cols="12" class="px-1 mb-0 mt-5">
|
|
48
|
+
<InputLabel class="text-capitalize" title="Remarks" />
|
|
49
|
+
<p class="my-1 text-h6 text-capitalize">
|
|
50
|
+
{{ affectedEntities?.affectedUnit?.remarks }}
|
|
51
|
+
</p>
|
|
52
|
+
</v-col>
|
|
53
|
+
</v-row>
|
|
54
|
+
</v-col>
|
|
55
|
+
|
|
56
|
+
<!-- Anyone affected/injured -->
|
|
57
|
+
<v-col cols="12" class="border-b pb-5 mb-5 mt-1">
|
|
58
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
59
|
+
Anyone affected/injured?
|
|
60
|
+
</p>
|
|
61
|
+
<p
|
|
62
|
+
v-if="affectedEntities?.anyoneAffectedValue == 'no'"
|
|
63
|
+
class="my-1 text-h6 text-capitalize"
|
|
64
|
+
>
|
|
65
|
+
{{ affectedEntities?.anyoneAffectedValue }}
|
|
66
|
+
</p>
|
|
67
|
+
|
|
68
|
+
<v-data-table
|
|
69
|
+
v-else
|
|
70
|
+
:headers="injuredTableHeader"
|
|
71
|
+
:items="affectedEntities?.affectedInjured"
|
|
72
|
+
fixed-header
|
|
73
|
+
hide-default-footer
|
|
74
|
+
:hide-default-header="false"
|
|
75
|
+
items-per-page="100"
|
|
76
|
+
style="max-height: calc(100vh - (200px))"
|
|
77
|
+
class="border mt-5"
|
|
78
|
+
>
|
|
79
|
+
</v-data-table>
|
|
80
|
+
</v-col>
|
|
81
|
+
|
|
82
|
+
<!-- Anyone damage to property -->
|
|
83
|
+
<v-col cols="12" class="pb-5 mb-5 mt-1">
|
|
84
|
+
<p class="mb-2" style="font-size: 17px; font-weight: 600">
|
|
85
|
+
Anyone damage to property?
|
|
86
|
+
</p>
|
|
87
|
+
<p
|
|
88
|
+
v-if="affectedEntities?.anyUnitAffectedValue == 'no'"
|
|
89
|
+
class="my-1 text-h6 text-capitalize"
|
|
90
|
+
>
|
|
91
|
+
{{ affectedEntities?.anyUnitAffectedValue }}
|
|
92
|
+
</p>
|
|
93
|
+
|
|
94
|
+
<v-data-table
|
|
95
|
+
v-else
|
|
96
|
+
:headers="damagePropertyTableHeader"
|
|
97
|
+
:items="affectedEntities?.anyoneDamageToProperty"
|
|
98
|
+
fixed-header
|
|
99
|
+
hide-default-footer
|
|
100
|
+
:hide-default-header="false"
|
|
101
|
+
items-per-page="100"
|
|
102
|
+
style="max-height: calc(100vh - (200px))"
|
|
103
|
+
class="border mt-5"
|
|
104
|
+
>
|
|
105
|
+
</v-data-table>
|
|
106
|
+
</v-col>
|
|
107
|
+
</v-row>
|
|
108
|
+
</template>
|
|
109
|
+
|
|
110
|
+
<script lang="ts" setup>
|
|
111
|
+
definePageMeta({
|
|
112
|
+
middleware: ["01-auth", "02-org"],
|
|
113
|
+
memberOnly: true,
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// imports
|
|
117
|
+
|
|
118
|
+
// utilities
|
|
119
|
+
|
|
120
|
+
// props
|
|
121
|
+
const props = defineProps({
|
|
122
|
+
affectedEntities: {
|
|
123
|
+
type: Object as PropType<Record<string, any> | null>,
|
|
124
|
+
required: true,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// emits
|
|
129
|
+
|
|
130
|
+
// state
|
|
131
|
+
const injuredTableHeader = [
|
|
132
|
+
{
|
|
133
|
+
title: "Name",
|
|
134
|
+
value: "name",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
title: "NRIC/WP No.",
|
|
138
|
+
value: "nric",
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
title: "Contact Number",
|
|
142
|
+
value: "contact",
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
const damagePropertyTableHeader = [
|
|
146
|
+
{
|
|
147
|
+
title: "Description",
|
|
148
|
+
value: "description",
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
title: "Block / Level / Unit",
|
|
152
|
+
value: "blkLevelUnit",
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
title: "Name",
|
|
156
|
+
value: "name",
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
title: "Contact Number",
|
|
160
|
+
value: "contact",
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
title: "Action",
|
|
164
|
+
value: "action",
|
|
165
|
+
},
|
|
166
|
+
];
|
|
167
|
+
</script>
|