@7365admin1/layer-common 4.97.1-staging.512 → 4.97.1-staging.514
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.
|
@@ -593,11 +593,12 @@ watch(() => props.initialManagementValues, (saved) => {
|
|
|
593
593
|
managementValues.value = { ...loaded, ...managementValues.value };
|
|
594
594
|
}, { immediate: true });
|
|
595
595
|
|
|
596
|
-
|
|
596
|
+
// Owner 2026-10-06: remarks are optional for Approve, required to reject or send back.
|
|
597
|
+
const remarksRequired = computed(() => !!selectedAction.value && selectedAction.value !== "approved");
|
|
597
598
|
|
|
598
599
|
// Same wording as the iMA365 review screen, so office and phone read alike.
|
|
599
600
|
const REVIEW_TEXT: Record<string, { remarks: string; confirm: string }> = {
|
|
600
|
-
approved: { remarks: "Remarks (the resident sees this)", confirm: "Confirm approval" },
|
|
601
|
+
approved: { remarks: "Remarks - optional (the resident sees this)", confirm: "Confirm approval" },
|
|
601
602
|
rejected: { remarks: "Reason for rejection (the resident sees this)", confirm: "Confirm rejection" },
|
|
602
603
|
resubmission: { remarks: "Reason for resubmission (the resident sees this)", confirm: "Send back to resident" },
|
|
603
604
|
};
|
|
@@ -605,8 +606,8 @@ const remarksLabel = computed(() => REVIEW_TEXT[selectedAction.value]?.remarks ?
|
|
|
605
606
|
const confirmLabel = computed(() => REVIEW_TEXT[selectedAction.value]?.confirm ?? "Confirm");
|
|
606
607
|
const reviewHint = computed(() =>
|
|
607
608
|
selectedAction.value === "approved" && managementUseItems.value.length
|
|
608
|
-
? "Fill in the For Management Use Only box
|
|
609
|
-
: "Choose Approve, Request resubmission or Reject
|
|
609
|
+
? "Fill in the For Management Use Only box, add remarks if you wish, then confirm."
|
|
610
|
+
: "Choose Approve, Request resubmission or Reject. Remarks are needed to reject or send back. Then confirm.",
|
|
610
611
|
);
|
|
611
612
|
|
|
612
613
|
const managementComplete = computed(() => {
|
|
@@ -616,7 +617,7 @@ const managementComplete = computed(() => {
|
|
|
616
617
|
|
|
617
618
|
const canConfirm = computed(() =>
|
|
618
619
|
!!selectedAction.value &&
|
|
619
|
-
adminRemarks.value.trim().length > 0 &&
|
|
620
|
+
(!remarksRequired.value || adminRemarks.value.trim().length > 0) &&
|
|
620
621
|
managementComplete.value
|
|
621
622
|
);
|
|
622
623
|
|
|
@@ -320,7 +320,7 @@
|
|
|
320
320
|
|
|
321
321
|
<v-dialog v-model="viewDialog" max-width="514">
|
|
322
322
|
<v-card class="screen-modal">
|
|
323
|
-
<v-card-title>Members ({{ memberDialogCount }})</v-card-title>
|
|
323
|
+
<v-card-title>Members ({{ viewRow?.serviceProviderOrgId ? memberDialogCount : "-" }})</v-card-title>
|
|
324
324
|
|
|
325
325
|
<div class="screen-modal__body sp-members-scroll">
|
|
326
326
|
<v-table class="sp-members-table">
|
|
@@ -336,6 +336,11 @@
|
|
|
336
336
|
Loading...
|
|
337
337
|
</td>
|
|
338
338
|
</tr>
|
|
339
|
+
<tr v-else-if="!viewRow?.serviceProviderOrgId">
|
|
340
|
+
<td colspan="2" class="text-center sp-members-note">
|
|
341
|
+
This provider was added without a linked company account, so its staff cannot be listed.
|
|
342
|
+
</td>
|
|
343
|
+
</tr>
|
|
339
344
|
<tr v-else-if="!serviceProviderMembers.length">
|
|
340
345
|
<td colspan="2" class="text-center sp-members-note">
|
|
341
346
|
No members found.
|
|
@@ -1006,6 +1011,7 @@ const {
|
|
|
1006
1011
|
createServiceProviderInvite,
|
|
1007
1012
|
updateStatus: updateServiceProviderStatus,
|
|
1008
1013
|
invite,
|
|
1014
|
+
getSiteMembers,
|
|
1009
1015
|
} = useServiceProvider();
|
|
1010
1016
|
const { getAll: getAllMembers, getAllByUserId } = useMember();
|
|
1011
1017
|
|
|
@@ -1377,7 +1383,8 @@ function setInviteSiteName(siteId: string) {
|
|
|
1377
1383
|
}
|
|
1378
1384
|
|
|
1379
1385
|
function formatMembersCell(value: unknown): string {
|
|
1380
|
-
|
|
1386
|
+
// null = an older row with no company recorded: unknown, not 0.
|
|
1387
|
+
if (value == null || value === "") return "-";
|
|
1381
1388
|
const n = Number(value);
|
|
1382
1389
|
if (!Number.isFinite(n)) return "0";
|
|
1383
1390
|
return String(n);
|
|
@@ -1522,13 +1529,17 @@ async function openView(row: TableRow) {
|
|
|
1522
1529
|
|
|
1523
1530
|
loadingMembers.value = true;
|
|
1524
1531
|
try {
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
+
// The company's people on THIS site - the same list as Members > Service
|
|
1533
|
+
// Providers. It used to read one person's memberships (`row.userId`),
|
|
1534
|
+
// which a stored provider row does not even carry (owner report 2026-10-06).
|
|
1535
|
+
const data = await getSiteMembers(props.siteId);
|
|
1536
|
+
serviceProviderMembers.value = (data.items ?? [])
|
|
1537
|
+
.filter((member) => member.companyId === row.serviceProviderOrgId && member.status === "active")
|
|
1538
|
+
.map((member) => ({
|
|
1539
|
+
_id: String(member._id),
|
|
1540
|
+
name: member.name || member.email || "-",
|
|
1541
|
+
role: member.role || "-",
|
|
1542
|
+
}));
|
|
1532
1543
|
} catch (error: any) {
|
|
1533
1544
|
showMessage(errorConverter(error), "error");
|
|
1534
1545
|
} finally {
|
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.97.1-staging.
|
|
5
|
+
"version": "4.97.1-staging.514",
|
|
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.",
|