@feedmepos/mf-hrm-portal 1.1.6-dev → 2.0.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/dist/AuditLogList-Cm3ueTso.js +474 -0
- package/dist/EmployeeList-vMcIqBU_.js +626 -0
- package/dist/{main-C370wsCl.js → Main-CeGYov-a.js} +1502 -1531
- package/dist/Main-gHCENd4i.js +86 -0
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-DuwNwJDM.js → PageLayout.vue_vue_type_script_setup_true_lang-HKK4cbW8.js} +2 -2
- package/dist/PermissionSetList-Dw69OYF4.js +323 -0
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-bvPOPUhu.js +3092 -0
- package/dist/ResponsiveFabButton.vue_vue_type_script_setup_true_lang-Cn-3MRBO.js +38 -0
- package/dist/RoleList-D1CrixYc.js +497 -0
- package/dist/{useSearch-C25VELOk.js → SelectFilter-NbXrJ4iH.js} +90 -101
- package/dist/TeamMemberList-M0Q8CP4h.js +973 -0
- package/dist/{TimesheetList-qaolOL4w.js → TimesheetList-BmOfy0pc.js} +31 -29
- package/dist/api/audit-log/index.d.ts +14 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/permission-assignment/index.d.ts +10 -0
- package/dist/api/permission-set/index.d.ts +8 -0
- package/dist/api/report-query/index.d.ts +5 -0
- package/dist/api/team/index.d.ts +2 -1
- package/dist/app-RUdgf-7_.js +3286 -0
- package/dist/app.js +1 -1
- package/dist/components/AppForm.vue.d.ts +3 -2
- package/dist/components/CheckboxInput.vue.d.ts +10 -4
- package/dist/components/CollapsibleWrapper.vue.d.ts +3 -2
- package/dist/components/form/SelectFilter.vue.d.ts +3 -2
- package/dist/components/layout/FormColumn.vue.d.ts +6 -3
- package/dist/components/layout/FormItem.vue.d.ts +2 -1
- package/dist/components/layout/FormSection.vue.d.ts +2 -1
- package/dist/components/layout/FullWrapper.vue.d.ts +6 -3
- package/dist/components/layout/PageLayout.vue.d.ts +2 -1
- package/dist/components/menu/BottomSheetMenu.vue.d.ts +2 -1
- package/dist/components/menu/BottomSheetMenuItem.vue.d.ts +6 -3
- package/dist/components/table/EmptyDataTemplate/index.vue.d.ts +6 -3
- package/dist/composables/useAppStore.d.ts +6 -6
- package/dist/composables/useDateRange.d.ts +1 -1
- package/dist/composables/useReportPermissions.d.ts +14 -0
- package/dist/composables/useRestaurantMap.d.ts +4 -8
- package/dist/composables/useSheet.d.ts +1 -1
- package/dist/dayjs.min-D9w2-Exz.js +282 -0
- package/dist/employee-B3jBmvNJ.js +144 -0
- package/dist/helpers/permission-set.d.ts +69 -0
- package/dist/helpers/portal-user.d.ts +8 -0
- package/dist/helpers/rule.d.ts +5 -4
- package/dist/index-BMVQbdBd.js +827 -0
- package/dist/index-BS6B6k7h.js +10340 -0
- package/dist/{empty-placeholder-ey8LJtN1.js → index.vue_vue_type_script_setup_true_lang-Vc5ARO29.js} +43 -2
- package/dist/{lodash-B5BTJU4_.js → lodash-CglPbFKR.js} +326 -343
- package/dist/router/shared.d.ts +4 -1
- package/dist/stores/employee.d.ts +4 -4
- package/dist/stores/permission-assignment.d.ts +277 -0
- package/dist/stores/permission-set.d.ts +265 -0
- package/dist/stores/role.d.ts +4 -4
- package/dist/stores/team.d.ts +300 -0
- package/dist/stores/timesheet.d.ts +19 -19
- package/dist/style.css +1 -1
- package/dist/team-afjBSzOz.js +33 -0
- package/dist/{timesheet-Cy-jSzje.js → timesheet-fOBJOS1i.js} +14 -14
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/types/audit-log.d.ts +1 -0
- package/dist/types/permission-assignment.d.ts +20 -0
- package/dist/types/permission-set.d.ts +24 -0
- package/dist/types/report-query.d.ts +6 -0
- package/dist/types/team.d.ts +13 -3
- package/dist/useAppStore-D-SLROq6.js +168 -0
- package/dist/useLoading-CLQGJW7G.js +99 -0
- package/dist/useReportPermissions-Cx4ghxj6.js +65 -0
- package/dist/{useRestaurantMap-CpS9-OSq.js → useRestaurantMap-D5BNPLKh.js} +7 -7
- package/dist/useSearch-B6WK1LBB.js +15 -0
- package/dist/views/audit-log/locales/index.d.ts +295 -0
- package/dist/views/hr/employee/{components/EmployeeForm.vue.d.ts → EmployeeForm.vue.d.ts} +10 -7
- package/dist/views/team/Main.vue.d.ts +2 -0
- package/dist/views/team/components/BasePermission.vue.d.ts +64 -0
- package/dist/views/team/components/{TeamMemberConditionPermission.vue.d.ts → ConditionPermission.vue.d.ts} +14 -1
- package/dist/views/team/components/InheritPermissionTooltip.vue.d.ts +14 -0
- package/dist/views/team/components/PermissionWithTooltip.vue.d.ts +14 -0
- package/dist/views/team/components/PortalPermissionEditor.vue.d.ts +68 -28
- package/dist/views/team/components/{TeamMemberRolePermission.vue.d.ts → PosRolePermission.vue.d.ts} +14 -1
- package/dist/views/team/locales/index.d.ts +200 -4
- package/dist/views/team/{components → member}/AddMemberForm.vue.d.ts +1 -0
- package/dist/views/team/member/TeamMemberList.vue.d.ts +4 -0
- package/dist/views/team/member/TeamMemberMasterUser.vue.d.ts +55 -0
- package/dist/views/team/permission-set/PermissionSetForm.vue.d.ts +19 -0
- package/dist/views/team/permission-set/PermissionSetList.vue.d.ts +5 -0
- package/package.json +15 -8
- package/dist/EmployeeList-CP42mLpi.js +0 -605
- package/dist/RoleList-CsctaXlu.js +0 -492
- package/dist/TeamMemberList-DtXoUa5K.js +0 -1508
- package/dist/app-G_Dbs0OJ.js +0 -1202
- package/dist/employee-BTWpYxn5.js +0 -449
- package/dist/index-8ift6lz3.js +0 -57
- package/dist/rule-CM7JgjNr.js +0 -142112
- package/dist/types/permission.d.ts +0 -4
- package/dist/useAppStore-zINIo0LR.js +0 -93
- package/dist/useLoading-CWBRIBiy.js +0 -141
- package/dist/views/team/components/TeamMemberBasePermission.vue.d.ts +0 -36
- package/dist/views/team/components/TeamMemberMasterUser.vue.d.ts +0 -718
- /package/dist/views/{hr/main.vue.d.ts → audit-log/AuditLogList.vue.d.ts} +0 -0
- /package/dist/views/{team/TeamMemberList.vue.d.ts → hr/Main.vue.d.ts} +0 -0
- /package/dist/views/team/{components → member}/MemberInfo.vue.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { AuditLogEntry, AuditLogMetadata, AuditLogOutcome, AuditLogResolvedFrom } from '@feedmepos/hrm-permission';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { FdoPermissionRule } from '@feedmepos/core/entity';
|
|
2
|
+
export interface IFdtoPermissionAssignment {
|
|
3
|
+
id: string;
|
|
4
|
+
customPermissions: FdoPermissionRule[];
|
|
5
|
+
permissionSetIds: string[];
|
|
6
|
+
businessId: string;
|
|
7
|
+
userId: string;
|
|
8
|
+
}
|
|
9
|
+
export interface IFdtoUpdatePermissionAssignmentReq {
|
|
10
|
+
customPermissions: FdoPermissionRule[];
|
|
11
|
+
permissionSetIds: string[];
|
|
12
|
+
businessId: string;
|
|
13
|
+
userId: string;
|
|
14
|
+
}
|
|
15
|
+
export interface IFdtoCreatePermissionAssignmentReq {
|
|
16
|
+
customPermissions: FdoPermissionRule[];
|
|
17
|
+
permissionSetIds: string[];
|
|
18
|
+
businessId: string;
|
|
19
|
+
userId: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { FdoPermissionRule } from '@feedmepos/core/entity';
|
|
2
|
+
export interface IFdtoPermissionSet {
|
|
3
|
+
id: string;
|
|
4
|
+
permissions: FdoPermissionRule[];
|
|
5
|
+
permissionSetIds: string[];
|
|
6
|
+
businessId: string;
|
|
7
|
+
name: string;
|
|
8
|
+
}
|
|
9
|
+
export interface IFdtoCreatePermissionSetReq {
|
|
10
|
+
name: string;
|
|
11
|
+
businessId: string;
|
|
12
|
+
permissions: FdoPermissionRule[];
|
|
13
|
+
permissionSetIds: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface IFdtoUpdatePermissionSetReq {
|
|
16
|
+
name?: string;
|
|
17
|
+
permissions?: FdoPermissionRule[];
|
|
18
|
+
permissionSetIds?: string[];
|
|
19
|
+
businessId?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface InheritedPermission {
|
|
22
|
+
id: string;
|
|
23
|
+
setNames: string[];
|
|
24
|
+
}
|
package/dist/types/team.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { RawRule } from '@casl/ability';
|
|
2
|
+
import type { FdoPermissionRule } from '@feedmepos/core/entity';
|
|
2
3
|
export interface IPermissionUser {
|
|
3
4
|
businessId: string;
|
|
4
5
|
userId: string;
|
|
@@ -7,6 +8,7 @@ export interface IPermissionUser {
|
|
|
7
8
|
/** @deprecated */
|
|
8
9
|
phoneNumber?: string;
|
|
9
10
|
permissions: RawRule[];
|
|
11
|
+
permissionSetIds: string[];
|
|
10
12
|
}
|
|
11
13
|
export interface IFdtoPortalUser extends IPermissionUser {
|
|
12
14
|
id: string;
|
|
@@ -28,13 +30,20 @@ export interface IFdtoPermissionPosUserRole {
|
|
|
28
30
|
roleId: string;
|
|
29
31
|
}
|
|
30
32
|
export interface IFdtoUpdatePortalUserReq {
|
|
31
|
-
|
|
33
|
+
/** @deprecated use customPermissions instead */
|
|
34
|
+
permissions?: FdoPermissionRule[];
|
|
32
35
|
posUser?: IFdtoPermissionPosUser;
|
|
36
|
+
permissionSetIds?: string[];
|
|
37
|
+
customPermissions?: FdoPermissionRule[];
|
|
33
38
|
}
|
|
34
39
|
export interface IFdtoCreatePortalUserReq {
|
|
35
40
|
phoneNumber?: string;
|
|
36
41
|
email?: string;
|
|
37
|
-
|
|
42
|
+
/** @deprecated use customPermissions instead */
|
|
43
|
+
permissions?: FdoPermissionRule[];
|
|
44
|
+
permissionSetIds?: string[];
|
|
45
|
+
customPermissions: FdoPermissionRule[];
|
|
46
|
+
name?: string;
|
|
38
47
|
posUser?: IFdtoPermissionPosUser;
|
|
39
48
|
}
|
|
40
49
|
export interface FTeamMember {
|
|
@@ -44,6 +53,7 @@ export interface FTeamMember {
|
|
|
44
53
|
email: string;
|
|
45
54
|
restaurants: string[];
|
|
46
55
|
managableRestaurantIds: string[];
|
|
47
|
-
permissions:
|
|
56
|
+
permissions: FdoPermissionRule[];
|
|
57
|
+
permissionLabels: string[];
|
|
48
58
|
doc: IFdtoPortalUser;
|
|
49
59
|
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { defineStore as f, storeToRefs as v } from "pinia";
|
|
2
|
+
import { ref as b } from "vue";
|
|
3
|
+
import { useCoreStore as I, baseClientInstance as w } from "@feedmepos/mf-common";
|
|
4
|
+
import { g as l, b as d, s as R } from "./index-BS6B6k7h.js";
|
|
5
|
+
const p = {
|
|
6
|
+
async readRoles() {
|
|
7
|
+
return l(await d().get("/pos-roles"));
|
|
8
|
+
},
|
|
9
|
+
async createRole(e) {
|
|
10
|
+
return l(await d().post("/pos-roles", e));
|
|
11
|
+
},
|
|
12
|
+
async updateRole(e, t) {
|
|
13
|
+
return l(await d().put(`/pos-roles/${e}`, t));
|
|
14
|
+
},
|
|
15
|
+
async deleteRole(e) {
|
|
16
|
+
return l(
|
|
17
|
+
await d().put(`/pos-roles/${e._id}`, {
|
|
18
|
+
restaurantIds: [],
|
|
19
|
+
role: e
|
|
20
|
+
})
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
async function g(e) {
|
|
25
|
+
const { restaurants: t } = I(), i = e.reduce((a, u) => {
|
|
26
|
+
var r;
|
|
27
|
+
const c = a.findIndex((o) => o._id === u._id), s = {
|
|
28
|
+
id: u.restaurantId,
|
|
29
|
+
name: ((r = t.value.find((o) => o._id === u.restaurantId)) == null ? void 0 : r.profile.name) || ""
|
|
30
|
+
};
|
|
31
|
+
return c < 0 ? a.push({
|
|
32
|
+
...u,
|
|
33
|
+
restaurants: [s]
|
|
34
|
+
}) : a[c].restaurants.some((o) => o.id === u.restaurantId) || (a[c].restaurants = R([...a[c].restaurants, s], { selector: "name" })), a;
|
|
35
|
+
}, []);
|
|
36
|
+
return R(i, { selector: "name" });
|
|
37
|
+
}
|
|
38
|
+
const x = f("role", () => {
|
|
39
|
+
const e = b([]), t = b(!1);
|
|
40
|
+
async function i() {
|
|
41
|
+
try {
|
|
42
|
+
t.value = !0;
|
|
43
|
+
const s = await p.readRoles();
|
|
44
|
+
e.value = await g(s);
|
|
45
|
+
} catch (s) {
|
|
46
|
+
console.log("Error reading roles:", s);
|
|
47
|
+
} finally {
|
|
48
|
+
t.value = !1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function a(s) {
|
|
52
|
+
const r = await p.createRole(s);
|
|
53
|
+
e.value = await g(r);
|
|
54
|
+
}
|
|
55
|
+
async function u(s, r) {
|
|
56
|
+
const o = await p.updateRole(s, r);
|
|
57
|
+
e.value = await g(o);
|
|
58
|
+
}
|
|
59
|
+
async function c(s) {
|
|
60
|
+
const r = await p.deleteRole(s);
|
|
61
|
+
e.value = await g(r);
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
roles: e,
|
|
65
|
+
isLoading: t,
|
|
66
|
+
readRoles: i,
|
|
67
|
+
createRole: a,
|
|
68
|
+
updateRole: u,
|
|
69
|
+
deleteRole: c
|
|
70
|
+
};
|
|
71
|
+
}), T = () => {
|
|
72
|
+
const e = x();
|
|
73
|
+
return {
|
|
74
|
+
...e,
|
|
75
|
+
...v(e)
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
var n = [];
|
|
79
|
+
for (var m = 0; m < 256; ++m)
|
|
80
|
+
n.push((m + 256).toString(16).slice(1));
|
|
81
|
+
function Q(e, t = 0) {
|
|
82
|
+
return (n[e[t + 0]] + n[e[t + 1]] + n[e[t + 2]] + n[e[t + 3]] + "-" + n[e[t + 4]] + n[e[t + 5]] + "-" + n[e[t + 6]] + n[e[t + 7]] + "-" + n[e[t + 8]] + n[e[t + 9]] + "-" + n[e[t + 10]] + n[e[t + 11]] + n[e[t + 12]] + n[e[t + 13]] + n[e[t + 14]] + n[e[t + 15]]).toLowerCase();
|
|
83
|
+
}
|
|
84
|
+
var y, U = new Uint8Array(16);
|
|
85
|
+
function D() {
|
|
86
|
+
if (!y && (y = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !y))
|
|
87
|
+
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
88
|
+
return y(U);
|
|
89
|
+
}
|
|
90
|
+
var A = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
|
91
|
+
const S = {
|
|
92
|
+
randomUUID: A
|
|
93
|
+
};
|
|
94
|
+
function L(e, t, i) {
|
|
95
|
+
if (S.randomUUID && !e)
|
|
96
|
+
return S.randomUUID();
|
|
97
|
+
e = e || {};
|
|
98
|
+
var a = e.random || (e.rng || D)();
|
|
99
|
+
return a[6] = a[6] & 15 | 64, a[8] = a[8] & 63 | 128, Q(a);
|
|
100
|
+
}
|
|
101
|
+
const h = {
|
|
102
|
+
async read() {
|
|
103
|
+
return l(await w("/").get("/public-setting"));
|
|
104
|
+
},
|
|
105
|
+
async update(e) {
|
|
106
|
+
return l(await w("/").put("/public-setting", e));
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
function C() {
|
|
110
|
+
return {
|
|
111
|
+
loadingQueue: [],
|
|
112
|
+
publicSetting: {
|
|
113
|
+
delivery: {
|
|
114
|
+
feedMe: {
|
|
115
|
+
areas: [],
|
|
116
|
+
enable: !1,
|
|
117
|
+
maxDistance: 0
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
sms: {
|
|
121
|
+
firebase: !1
|
|
122
|
+
},
|
|
123
|
+
assets: {
|
|
124
|
+
groups: []
|
|
125
|
+
},
|
|
126
|
+
aiSettings: {
|
|
127
|
+
remy: { enable: !1 }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const $ = f("portal-app-store", {
|
|
133
|
+
state: () => C(),
|
|
134
|
+
actions: {
|
|
135
|
+
addLoadingQueues(e) {
|
|
136
|
+
this.loadingQueue = [...this.loadingQueue, ...e];
|
|
137
|
+
},
|
|
138
|
+
clearLoadingQueue() {
|
|
139
|
+
this.loadingQueue = [];
|
|
140
|
+
},
|
|
141
|
+
resolveQueues(e) {
|
|
142
|
+
this.loadingQueue = this.loadingQueue.filter((t) => !e.includes(t.id));
|
|
143
|
+
},
|
|
144
|
+
async promise(e, t = !0) {
|
|
145
|
+
const i = L();
|
|
146
|
+
try {
|
|
147
|
+
const a = [{ id: i, isGlobal: t }];
|
|
148
|
+
return this.addLoadingQueues(a), await e();
|
|
149
|
+
} finally {
|
|
150
|
+
this.resolveQueues([i]);
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
async getPublicSetting() {
|
|
154
|
+
return this.publicSetting = await h.read(), this.publicSetting;
|
|
155
|
+
},
|
|
156
|
+
async updatePublicSetting(e) {
|
|
157
|
+
return this.publicSetting = await h.update({
|
|
158
|
+
...this.publicSetting,
|
|
159
|
+
...e
|
|
160
|
+
}), this.publicSetting;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
export {
|
|
165
|
+
$ as a,
|
|
166
|
+
T as u,
|
|
167
|
+
L as v
|
|
168
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { computed as I, isRef as L, watch as M } from "vue";
|
|
2
|
+
import { SnackbarPosition as y } from "@feedmepos/ui-library";
|
|
3
|
+
import { a as w, v } from "./useAppStore-D-SLROq6.js";
|
|
4
|
+
const E = (r) => {
|
|
5
|
+
async function d(u, e) {
|
|
6
|
+
var l, a;
|
|
7
|
+
let t = [];
|
|
8
|
+
!e || !e.customId ? t.push(`${(/* @__PURE__ */ new Date()).toISOString()}_${v().split("-")[0]}`) : typeof e.customId == "string" ? t.push(e.customId) : t = e.customId;
|
|
9
|
+
const p = w();
|
|
10
|
+
p.addLoadingQueues(
|
|
11
|
+
t.map((s) => ({
|
|
12
|
+
id: s,
|
|
13
|
+
isGlobal: (e == null ? void 0 : e.isGlobal) || !1
|
|
14
|
+
}))
|
|
15
|
+
);
|
|
16
|
+
try {
|
|
17
|
+
const s = await u();
|
|
18
|
+
return await ((l = e == null ? void 0 : e.onSuccess) == null ? void 0 : l.call(e, s)), s;
|
|
19
|
+
} catch (s) {
|
|
20
|
+
const m = s instanceof Error ? s.message : `${s}`;
|
|
21
|
+
throw e != null && e.onError ? await e.onError(m) : r.open({
|
|
22
|
+
type: "error",
|
|
23
|
+
message: m
|
|
24
|
+
}), s;
|
|
25
|
+
} finally {
|
|
26
|
+
p.resolveQueues(t), (a = e == null ? void 0 : e.onComplete) == null || a.call(e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const S = w();
|
|
30
|
+
return {
|
|
31
|
+
queue: I(() => S.loadingQueue),
|
|
32
|
+
checkIsLoading: (u) => S.loadingQueue.some((e) => e.id === u),
|
|
33
|
+
global: async (u, e) => await d(u, {
|
|
34
|
+
isGlobal: !0,
|
|
35
|
+
onSuccess: async (t) => {
|
|
36
|
+
var p;
|
|
37
|
+
await ((p = e == null ? void 0 : e.onSuccess) == null ? void 0 : p.call(e, t)), e != null && e.successMessage && r.open({
|
|
38
|
+
type: "success",
|
|
39
|
+
message: e.successMessage,
|
|
40
|
+
position: y.BOTTOM
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}),
|
|
44
|
+
minor: async (u, e) => {
|
|
45
|
+
const t = r.open({
|
|
46
|
+
type: "info",
|
|
47
|
+
message: "Loading",
|
|
48
|
+
spinner: !0,
|
|
49
|
+
persistent: !0
|
|
50
|
+
}), p = (l, a) => {
|
|
51
|
+
if (!a) return;
|
|
52
|
+
const s = (m) => {
|
|
53
|
+
r.updateSnackbar(t, { [l]: m });
|
|
54
|
+
};
|
|
55
|
+
L(a) ? (s(a.value), M(a, (m) => s(m))) : s(a);
|
|
56
|
+
};
|
|
57
|
+
return p("title", e == null ? void 0 : e.message), p("message", e == null ? void 0 : e.caption), await d(
|
|
58
|
+
async () => (e != null && e.isLoading && (e.isLoading.value = !0), await u()),
|
|
59
|
+
{
|
|
60
|
+
onSuccess: () => {
|
|
61
|
+
const l = (e == null ? void 0 : e.successMessage) || "Completed";
|
|
62
|
+
r.close(t), r.open({
|
|
63
|
+
type: "success",
|
|
64
|
+
title: l,
|
|
65
|
+
position: y.BOTTOM
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
onError: (l) => {
|
|
69
|
+
const a = `${l}` || "Error";
|
|
70
|
+
r.close(t), r.open({
|
|
71
|
+
type: "error",
|
|
72
|
+
title: a,
|
|
73
|
+
position: y.BOTTOM
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
onComplete: () => {
|
|
77
|
+
e != null && e.isLoading && (e.isLoading.value = !1);
|
|
78
|
+
},
|
|
79
|
+
customId: e == null ? void 0 : e.customId
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
custom: async (u, e) => await d(
|
|
84
|
+
async () => (e != null && e.isLoading && (e.isLoading.value = !0), await u()),
|
|
85
|
+
{
|
|
86
|
+
onSuccess: async () => {
|
|
87
|
+
e != null && e.successMessage && r.open({ message: e.successMessage });
|
|
88
|
+
},
|
|
89
|
+
onComplete: () => {
|
|
90
|
+
e && e.isLoading && (e.isLoading.value = !1);
|
|
91
|
+
},
|
|
92
|
+
customId: e == null ? void 0 : e.customId
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
export {
|
|
98
|
+
E as u
|
|
99
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { computed as u, ref as r } from "vue";
|
|
2
|
+
import { g as v, q as R, e as h, a as m } from "./index-BS6B6k7h.js";
|
|
3
|
+
import { useCoreStore as g } from "@feedmepos/mf-common";
|
|
4
|
+
import "./app-RUdgf-7_.js";
|
|
5
|
+
const P = {
|
|
6
|
+
async fetchReportPermissions(i) {
|
|
7
|
+
return v(
|
|
8
|
+
await R().get(`/report-query/hrm/${i}/reports`)
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
}, t = r([]), l = r(!1), o = r(!1), d = r(null);
|
|
12
|
+
function K() {
|
|
13
|
+
const i = g();
|
|
14
|
+
async function f() {
|
|
15
|
+
var n;
|
|
16
|
+
const s = (n = i.currentBusiness.value) == null ? void 0 : n.id;
|
|
17
|
+
if (s && (d.value !== s && (t.value = [], l.value = !1, o.value = !1, d.value = s), !(l.value || o.value))) {
|
|
18
|
+
o.value = !0;
|
|
19
|
+
try {
|
|
20
|
+
t.value = await P.fetchReportPermissions(s), l.value = !0;
|
|
21
|
+
} catch (e) {
|
|
22
|
+
console.warn("Failed to fetch dynamic report permissions, using hardcoded only:", e), t.value = [];
|
|
23
|
+
} finally {
|
|
24
|
+
o.value = !1;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const a = h.filter(
|
|
29
|
+
(s) => s.subject === m.F_RULE_SUBJECT.enum.report && s.conditions
|
|
30
|
+
), p = u(() => {
|
|
31
|
+
const s = new Set(
|
|
32
|
+
a.map((e) => {
|
|
33
|
+
const c = typeof e.conditions == "string" ? JSON.parse(e.conditions) : e.conditions;
|
|
34
|
+
return c == null ? void 0 : c.name;
|
|
35
|
+
})
|
|
36
|
+
), n = t.value.filter((e) => !s.has(e.permissionKey)).map((e) => ({
|
|
37
|
+
label: e.name,
|
|
38
|
+
subject: m.F_RULE_SUBJECT.enum.report,
|
|
39
|
+
actions: ["read"],
|
|
40
|
+
conditions: { name: e.permissionKey },
|
|
41
|
+
inverted: !1,
|
|
42
|
+
reason: ""
|
|
43
|
+
}));
|
|
44
|
+
return [...a, ...n];
|
|
45
|
+
}), y = u(() => {
|
|
46
|
+
const s = new Set(
|
|
47
|
+
a.map((n) => {
|
|
48
|
+
const e = typeof n.conditions == "string" ? JSON.parse(n.conditions) : n.conditions;
|
|
49
|
+
return e == null ? void 0 : e.name;
|
|
50
|
+
})
|
|
51
|
+
);
|
|
52
|
+
for (const n of t.value)
|
|
53
|
+
s.add(n.permissionKey);
|
|
54
|
+
return s;
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
fetchReportPermissions: f,
|
|
58
|
+
allReportPermissions: p,
|
|
59
|
+
availableReportKeys: y,
|
|
60
|
+
isLoading: u(() => o.value)
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
K as u
|
|
65
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as m,
|
|
1
|
+
import { defineComponent as m, createElementBlock as n, openBlock as a, createElementVNode as i, renderSlot as r, createCommentVNode as l, toDisplayString as c, normalizeClass as d, createVNode as p, withCtx as f, computed as y } from "vue";
|
|
2
2
|
import { useI18n as h, useCoreStore as _ } from "@feedmepos/mf-common";
|
|
3
3
|
import { useDialog as b } from "@feedmepos/ui-library";
|
|
4
4
|
const x = { class: "space-y-8" }, k = { class: "flex items-center justify-between" }, $ = { class: "space-y-8" }, v = { class: "fm-typo-en-body-lg-600" }, C = {
|
|
@@ -11,11 +11,11 @@ const x = { class: "space-y-8" }, k = { class: "flex items-center justify-betwee
|
|
|
11
11
|
description: {}
|
|
12
12
|
},
|
|
13
13
|
setup(e) {
|
|
14
|
-
return (t, s) => (
|
|
14
|
+
return (t, s) => (a(), n("div", x, [
|
|
15
15
|
i("div", k, [
|
|
16
16
|
i("div", $, [
|
|
17
17
|
i("p", v, c(e.label), 1),
|
|
18
|
-
e.description ? (
|
|
18
|
+
e.description ? (a(), n("p", C, c(e.description), 1)) : l("", !0)
|
|
19
19
|
]),
|
|
20
20
|
r(t.$slots, "append")
|
|
21
21
|
]),
|
|
@@ -28,7 +28,7 @@ const x = { class: "space-y-8" }, k = { class: "flex items-center justify-betwee
|
|
|
28
28
|
shrinkable: { type: Boolean }
|
|
29
29
|
},
|
|
30
30
|
setup(e) {
|
|
31
|
-
return (t, s) => (
|
|
31
|
+
return (t, s) => (a(), n("div", {
|
|
32
32
|
class: d(["flex-1 flex flex-col space-y-24", { "min-h-0": e.shrinkable }])
|
|
33
33
|
}, [
|
|
34
34
|
r(t.$slots, "default")
|
|
@@ -48,13 +48,13 @@ const x = { class: "space-y-8" }, k = { class: "flex items-center justify-betwee
|
|
|
48
48
|
shrinkable: { type: Boolean }
|
|
49
49
|
},
|
|
50
50
|
setup(e) {
|
|
51
|
-
return (t, s) => (
|
|
51
|
+
return (t, s) => (a(), n("div", {
|
|
52
52
|
class: d(["flex flex-col space-y-16", { "min-h-0": e.shrinkable }])
|
|
53
53
|
}, [
|
|
54
|
-
e.title ? (
|
|
54
|
+
e.title ? (a(), n("div", S, [
|
|
55
55
|
i("div", w, [
|
|
56
56
|
i("p", B, c(e.title), 1),
|
|
57
|
-
e.subTitle ? (
|
|
57
|
+
e.subTitle ? (a(), n("p", D, c(e.subTitle), 1)) : l("", !0)
|
|
58
58
|
]),
|
|
59
59
|
r(t.$slots, "append-title")
|
|
60
60
|
])) : l("", !0),
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ref as c, computed as s } from "vue";
|
|
2
|
+
const i = (u) => {
|
|
3
|
+
const r = c(u || "");
|
|
4
|
+
function t(e) {
|
|
5
|
+
return `${e}`.trim().toLowerCase();
|
|
6
|
+
}
|
|
7
|
+
const o = s(() => t(r.value));
|
|
8
|
+
function n(e) {
|
|
9
|
+
return o.value ? e.some((a) => t(a).includes(o.value)) : !0;
|
|
10
|
+
}
|
|
11
|
+
return { searchKey: r, filter: n };
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
i as u
|
|
15
|
+
};
|