@7365admin1/layer-common 4.118.5 → 4.118.7
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
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @iservice365/layer-common
|
|
2
2
|
|
|
3
|
+
## 4.118.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 5a726e3: Incident report PDF: attachment tiles sit inside the printable area so every tile border is fully drawn (the right tile's edge was cut off).
|
|
8
|
+
- 1dbc8a6: Incident report PDF: Incident Information cells paint their own borders (no collapsed borders), removing a ghost of the repeated heading at the foot of a page.
|
|
9
|
+
|
|
10
|
+
## 4.118.6
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 16e1cd2: Incident report PDF: the Incident Information block is a real table whose heading row repeats on every page, so each page starts with a closed top edge and nothing is painted in the page margin.
|
|
15
|
+
|
|
3
16
|
## 4.118.5
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -3157,11 +3170,11 @@ Monthly report: a month that had patrols opens the list of that month's patrol r
|
|
|
3157
3170
|
`utils/console-tier.ts` + `composables/useConsoleTier.ts` mirror the server's
|
|
3158
3171
|
own rule from two endpoints the console already calls, unprojected:
|
|
3159
3172
|
|
|
3160
|
-
|
|
3161
|
-
|
|
3173
|
+
GET /api/members/user/:user/app/admin the Seven365 staff membership
|
|
3174
|
+
GET /api/roles/id/:role that membership's role document
|
|
3162
3175
|
|
|
3163
|
-
|
|
3164
|
-
|
|
3176
|
+
owner = member.type === "admin" && role.type === "admin" && role.default === true
|
|
3177
|
+
staff = member.type === "admin" && role.type === "admin"
|
|
3165
3178
|
|
|
3166
3179
|
`role.default` is the marker because it is the only property of a platform
|
|
3167
3180
|
staff role no API caller can set - `role.controller.ts` validates create and
|
|
@@ -77,8 +77,12 @@ watch(
|
|
|
77
77
|
display: grid;
|
|
78
78
|
grid-template-columns: 1fr 1fr;
|
|
79
79
|
gap: 16px;
|
|
80
|
+
/* Keep every tile border fully inside the printable area: a border drawn on
|
|
81
|
+
the very edge of the page content is half cut off. */
|
|
82
|
+
padding: 0 2px 2px;
|
|
80
83
|
}
|
|
81
84
|
.ir-att-card {
|
|
85
|
+
box-sizing: border-box;
|
|
82
86
|
break-inside: avoid;
|
|
83
87
|
page-break-inside: avoid;
|
|
84
88
|
border: 1px solid #8a8a8a;
|
|
@@ -10,156 +10,188 @@
|
|
|
10
10
|
Reported by: {{ companyName }}
|
|
11
11
|
</p>
|
|
12
12
|
</div>
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
{{ incidentInformation?.
|
|
42
|
-
</
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
</
|
|
121
|
-
<
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
13
|
+
<table class="ir-table mt-5">
|
|
14
|
+
<colgroup>
|
|
15
|
+
<col style="width: 8.3333%" />
|
|
16
|
+
<col style="width: 8.3333%" />
|
|
17
|
+
<col style="width: 8.3333%" />
|
|
18
|
+
<col style="width: 8.3333%" />
|
|
19
|
+
<col style="width: 8.3333%" />
|
|
20
|
+
<col style="width: 8.3333%" />
|
|
21
|
+
<col style="width: 8.3333%" />
|
|
22
|
+
<col style="width: 8.3333%" />
|
|
23
|
+
<col style="width: 8.3333%" />
|
|
24
|
+
<col style="width: 8.3333%" />
|
|
25
|
+
<col style="width: 8.3333%" />
|
|
26
|
+
<col style="width: 8.3333%" />
|
|
27
|
+
</colgroup>
|
|
28
|
+
<thead>
|
|
29
|
+
<tr>
|
|
30
|
+
<th colspan="12" class="ir-section text-h6 pa-2 text-center bg-warning text-on-warning">Incident Information</th>
|
|
31
|
+
</tr>
|
|
32
|
+
</thead>
|
|
33
|
+
<tbody>
|
|
34
|
+
<tr>
|
|
35
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
36
|
+
<p class="font-weight-bold">Site</p>
|
|
37
|
+
<p>{{ siteName || "-" }}</p>
|
|
38
|
+
</td>
|
|
39
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
40
|
+
<p class="font-weight-bold">Reference</p>
|
|
41
|
+
<p>{{ incidentInformation?.siteInfo?.irNumber || "-" }}</p>
|
|
42
|
+
</td>
|
|
43
|
+
</tr>
|
|
44
|
+
<tr v-if="companyName">
|
|
45
|
+
<td colspan="12" class="pa-3 ir-cell">
|
|
46
|
+
<p class="font-weight-bold">Reported by (Company)</p>
|
|
47
|
+
<p>{{ companyName }}</p>
|
|
48
|
+
</td>
|
|
49
|
+
</tr>
|
|
50
|
+
<tr>
|
|
51
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
52
|
+
<p class="font-weight-bold">Place of Incident</p>
|
|
53
|
+
<p>
|
|
54
|
+
{{ incidentInformation?.placeOfIncident?.incidentLocation || "-" }}
|
|
55
|
+
</p>
|
|
56
|
+
</td>
|
|
57
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
58
|
+
<p class="font-weight-bold">Type of Incident</p>
|
|
59
|
+
<p>
|
|
60
|
+
{{ incidentInformation?.incidentTypeAndTime?.typeOfIncident || "-" }}
|
|
61
|
+
</p>
|
|
62
|
+
</td>
|
|
63
|
+
</tr>
|
|
64
|
+
<tr>
|
|
65
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
66
|
+
<p class="font-weight-bold">Date of Incident</p>
|
|
67
|
+
<p>
|
|
68
|
+
{{
|
|
69
|
+
toLocalDate(
|
|
70
|
+
incidentInformation?.incidentTypeAndTime?.dateOfIncident
|
|
71
|
+
) || "NA"
|
|
72
|
+
}}
|
|
73
|
+
</p>
|
|
74
|
+
</td>
|
|
75
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
76
|
+
<p class="font-weight-bold">Incident Start Time</p>
|
|
77
|
+
<p>
|
|
78
|
+
{{ incidentInformation?.incidentTypeAndTime?.incidentStart || "-" }}
|
|
79
|
+
</p>
|
|
80
|
+
</td>
|
|
81
|
+
</tr>
|
|
82
|
+
<tr>
|
|
83
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
84
|
+
<p class="font-weight-bold">Time of Response (From 1st Contact)</p>
|
|
85
|
+
<p>
|
|
86
|
+
{{ incidentInformation?.incidentTypeAndTime?.timeOfResponse || "-" }}
|
|
87
|
+
</p>
|
|
88
|
+
</td>
|
|
89
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
90
|
+
<p class="font-weight-bold">Incident End Time</p>
|
|
91
|
+
<p>
|
|
92
|
+
{{ incidentInformation?.incidentTypeAndTime?.incidentEnd || "-" }}
|
|
93
|
+
</p>
|
|
94
|
+
</td>
|
|
95
|
+
</tr>
|
|
96
|
+
<tr>
|
|
97
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
98
|
+
<p class="font-weight-bold">Date of Report Submission</p>
|
|
99
|
+
<p>
|
|
100
|
+
{{
|
|
101
|
+
toLocalDate(incidentInformation?.submissionForm?.dateOfReport) ||
|
|
102
|
+
"NA"
|
|
103
|
+
}}
|
|
104
|
+
</p>
|
|
105
|
+
</td>
|
|
106
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
107
|
+
<p class="font-weight-bold">Time of Report Submission</p>
|
|
108
|
+
<p>{{ incidentInformation?.submissionForm?.time || "-" }}</p>
|
|
109
|
+
</td>
|
|
110
|
+
</tr>
|
|
111
|
+
<tr>
|
|
112
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
113
|
+
<p class="font-weight-bold">Report Submitted By</p>
|
|
114
|
+
<p>{{ incidentInformation?.siteInfo?.submittedBy || "-" }}</p>
|
|
115
|
+
</td>
|
|
116
|
+
<td colspan="6" class="pa-3 ir-cell">
|
|
117
|
+
<p class="font-weight-bold">Designation</p>
|
|
118
|
+
<p>{{ incidentInformation?.siteInfo?.designation || "-" }}</p>
|
|
119
|
+
</td>
|
|
120
|
+
</tr>
|
|
121
|
+
<tr>
|
|
122
|
+
<td colspan="4" class="pa-3 ir-cell">
|
|
123
|
+
<p class="font-weight-bold">Name of Informant/Complainant</p>
|
|
124
|
+
<p>{{ incidentInformation?.complaintInfo?.complainant || "-" }}</p>
|
|
125
|
+
</td>
|
|
126
|
+
<td colspan="4" class="pa-3 ir-cell">
|
|
127
|
+
<p class="font-weight-bold">Contact No.</p>
|
|
128
|
+
<p>{{ incidentInformation?.complaintInfo?.contact || "-" }}</p>
|
|
129
|
+
</td>
|
|
130
|
+
<td colspan="4" class="pa-3 ir-cell">
|
|
131
|
+
<p class="font-weight-bold">NRIC/WP No.</p>
|
|
132
|
+
<p>
|
|
133
|
+
{{
|
|
134
|
+
showNRICComplainant
|
|
135
|
+
? incidentInformation?.complaintInfo?.nric || "-"
|
|
136
|
+
: maskNRIC(incidentInformation?.complaintInfo?.nric)
|
|
137
|
+
}}
|
|
138
|
+
</p>
|
|
139
|
+
</td>
|
|
140
|
+
</tr>
|
|
141
|
+
<tr>
|
|
142
|
+
<td colspan="4" class="pa-3 ir-cell">
|
|
143
|
+
<p class="font-weight-bold">
|
|
144
|
+
Name of Recipient of Complaint (1st Contact)
|
|
145
|
+
</p>
|
|
146
|
+
<p>{{ incidentInformation?.recipientOfComplaint?.recipient || "-" }}</p>
|
|
147
|
+
</td>
|
|
148
|
+
<td colspan="4" class="pa-3 ir-cell">
|
|
149
|
+
<p class="font-weight-bold">Contact No.</p>
|
|
150
|
+
<p>{{ incidentInformation?.recipientOfComplaint?.contact || "-" }}</p>
|
|
151
|
+
</td>
|
|
152
|
+
<td colspan="4" class="pa-3 ir-cell">
|
|
153
|
+
<p class="font-weight-bold">NRIC/WP No.</p>
|
|
154
|
+
<p>
|
|
155
|
+
{{
|
|
156
|
+
showNRICRecipient
|
|
157
|
+
? incidentInformation?.recipientOfComplaint?.nric || "-"
|
|
158
|
+
: maskNRIC(incidentInformation?.recipientOfComplaint?.nric)
|
|
159
|
+
}}
|
|
160
|
+
</p>
|
|
161
|
+
</td>
|
|
162
|
+
</tr>
|
|
163
|
+
<tr v-if="
|
|
142
164
|
incidentInformation?.complaintReceivedTo?.receivedVia != 'others'
|
|
143
|
-
"
|
|
144
|
-
>
|
|
145
|
-
|
|
146
|
-
|
|
165
|
+
">
|
|
166
|
+
<td colspan="12" class="pa-3 ir-cell">
|
|
167
|
+
<p class="font-weight-bold">Complaint Received through</p>
|
|
168
|
+
<p
|
|
169
|
+
v-if="
|
|
170
|
+
incidentInformation?.complaintReceivedTo?.receivedVia != 'others'
|
|
171
|
+
"
|
|
172
|
+
>
|
|
173
|
+
{{ incidentInformation?.complaintReceivedTo?.receivedVia || "-" }}
|
|
174
|
+
</p>
|
|
147
175
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
<
|
|
156
|
-
<
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
176
|
+
<p v-else>
|
|
177
|
+
{{
|
|
178
|
+
incidentInformation?.complaintReceivedTo?.otherDescription || "-"
|
|
179
|
+
}}
|
|
180
|
+
</p>
|
|
181
|
+
</td>
|
|
182
|
+
</tr>
|
|
183
|
+
<tr>
|
|
184
|
+
<td colspan="12" class="pa-3 ir-cell">
|
|
185
|
+
<p class="font-weight-bold">Brief Description</p>
|
|
186
|
+
<p>
|
|
187
|
+
{{
|
|
188
|
+
incidentInformation?.complaintReceivedTo?.briefDescription || "-"
|
|
189
|
+
}}
|
|
190
|
+
</p>
|
|
191
|
+
</td>
|
|
192
|
+
</tr>
|
|
193
|
+
</tbody>
|
|
194
|
+
</table>
|
|
163
195
|
</div>
|
|
164
196
|
</template>
|
|
165
197
|
|
|
@@ -270,18 +302,31 @@ const maskNRIC = (value: any) => {
|
|
|
270
302
|
}
|
|
271
303
|
.ir-status--approved { color: #2e7d32; }
|
|
272
304
|
.ir-status--rejected { color: #c62828; }
|
|
273
|
-
/*
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
305
|
+
/* One table. Each cell paints its own right/bottom rule (the first cell also the
|
|
306
|
+
left one) and the heading cell all four, so borders are never painted outside
|
|
307
|
+
the cell that owns them: collapsed borders left a ghost of the repeated
|
|
308
|
+
heading in the page margin. The heading row is the table header, so it repeats
|
|
309
|
+
at the top of every page; rows never split. */
|
|
310
|
+
.ir-table {
|
|
311
|
+
width: 100%;
|
|
312
|
+
table-layout: fixed;
|
|
313
|
+
border-collapse: separate;
|
|
314
|
+
border-spacing: 0;
|
|
315
|
+
}
|
|
316
|
+
.ir-table thead {
|
|
317
|
+
display: table-header-group;
|
|
318
|
+
}
|
|
319
|
+
.ir-table tr {
|
|
280
320
|
break-inside: avoid;
|
|
281
321
|
page-break-inside: avoid;
|
|
282
322
|
}
|
|
283
|
-
.ir-cell
|
|
323
|
+
.ir-cell {
|
|
284
324
|
border-right: 1px solid #8a8a8a;
|
|
325
|
+
border-bottom: 1px solid #8a8a8a;
|
|
326
|
+
vertical-align: top;
|
|
327
|
+
}
|
|
328
|
+
.ir-cell:first-child {
|
|
329
|
+
border-left: 1px solid #8a8a8a;
|
|
285
330
|
}
|
|
286
331
|
/* A label always travels with its value. */
|
|
287
332
|
.ir-cell p:first-child {
|
|
@@ -289,8 +334,7 @@ const maskNRIC = (value: any) => {
|
|
|
289
334
|
page-break-after: avoid;
|
|
290
335
|
}
|
|
291
336
|
.ir-section {
|
|
292
|
-
break-after: avoid;
|
|
293
337
|
border: 1px solid #8a8a8a;
|
|
294
|
-
|
|
338
|
+
font-weight: 400;
|
|
295
339
|
}
|
|
296
340
|
</style>
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@7365admin1/layer-common",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "4.118.
|
|
5
|
+
"version": "4.118.7",
|
|
6
6
|
"author": "7365admin1",
|
|
7
7
|
"main": "./nuxt.config.ts",
|
|
8
8
|
"//files": "What a consumer extending this layer actually loads. Without this npm ships the whole working tree - the changesets, the CI workflows, the render harness in tools/ and any scratch directory that happened to exist at publish time. Nuxt resolves a layer by directory, so every runtime directory below has to stay listed; adding a new top-level runtime directory means adding it here too.",
|