diff --git a/src/api/02_organizational/api.organization.ts b/src/api/02_organizational/api.organization.ts index 80a976f5..93d2241c 100644 --- a/src/api/02_organizational/api.organization.ts +++ b/src/api/02_organizational/api.organization.ts @@ -101,7 +101,9 @@ export default { /** กำหนดสิทธิ์จัดการโครงสร้าง */ permissionOrg: `${organization}/permission-org`, + permissioProfileOrg: `${organization}/permission-profile`, permissionOrgProfile: `${organization}/permission-org/profile`, // คนที่มีสิทธิ์จัดการโครงสร้าง + permissionProfile: `${organization}/permission-profile/profile`, // คนที่มีสิทธิ์จัดการโครงสร้าง /** หมอบหมาย*/ commandSysAssign: `${organization}/commandSys/assign`, diff --git a/src/interface/request/main/main.ts b/src/interface/request/main/main.ts index 93b3d0b2..7e0ab73d 100644 --- a/src/interface/request/main/main.ts +++ b/src/interface/request/main/main.ts @@ -128,6 +128,12 @@ const menuList = readonly([ path: "responsibilities", role: ["SUPER_ADMIN", "ADMIN"], }, + { + key: 2.0, + label: "ทะเบียนประวัติตำแหน่ง/เงินเดือน", + path: "rolePositionSalary", + role: ["SUPER_ADMIN", "ADMIN"], + }, ], }, { diff --git a/src/modules/02_users/components/RoleOrganization/DialogAddPerson.vue b/src/modules/02_users/components/RoleOrganization/DialogAddPerson.vue index c11273ab..1b2f0da3 100644 --- a/src/modules/02_users/components/RoleOrganization/DialogAddPerson.vue +++ b/src/modules/02_users/components/RoleOrganization/DialogAddPerson.vue @@ -130,7 +130,7 @@ function onSubmitPerson() { .post(config.API.permissionOrg, body) .then(async () => { await props.fetchData?.(false); - success($q, "เพิ่มราชชื่อสำเร็จ"); + success($q, "เพิ่มรายชื่อสำเร็จ"); onClose(); }) .catch((err) => { diff --git a/src/modules/02_users/components/RolePositionSalary/DialogAddPerson.vue b/src/modules/02_users/components/RolePositionSalary/DialogAddPerson.vue new file mode 100644 index 00000000..f57464ab --- /dev/null +++ b/src/modules/02_users/components/RolePositionSalary/DialogAddPerson.vue @@ -0,0 +1,333 @@ + + + + + diff --git a/src/modules/02_users/interface/index/Main.ts b/src/modules/02_users/interface/index/Main.ts index fa7cfeba..3e7e4f47 100644 --- a/src/modules/02_users/interface/index/Main.ts +++ b/src/modules/02_users/interface/index/Main.ts @@ -58,6 +58,7 @@ interface DataTree { createdFullName: string; createdUserId: string; id: string | null; + orgTreeId?: string | null; lastUpdateFullName: string; lastUpdateUserId: string; lastUpdatedAt: string; diff --git a/src/modules/02_users/router.ts b/src/modules/02_users/router.ts index 1c7fbc2d..958a2b80 100644 --- a/src/modules/02_users/router.ts +++ b/src/modules/02_users/router.ts @@ -21,6 +21,10 @@ const roleOrgview = () => const responsIbilitiesView = () => import("@/modules/02_users/views/05_responsIbilities.vue"); +/** roleOrganization */ +const rolePositionSalary = () => + import("@/modules/02_users/views/06_rolePositionSalary.vue"); + export default [ { path: "/users", @@ -73,6 +77,14 @@ export default [ Role: ["SUPER_ADMIN", "ADMIN"], }, }, + { + path: "/roles-position-salary", + name: "rolePositionSalary", + component: rolePositionSalary, + meta: { + Role: ["SUPER_ADMIN", "ADMIN"], + }, + }, { path: "/responsibilities", diff --git a/src/modules/02_users/views/06_rolePositionSalary.vue b/src/modules/02_users/views/06_rolePositionSalary.vue new file mode 100644 index 00000000..44e9321d --- /dev/null +++ b/src/modules/02_users/views/06_rolePositionSalary.vue @@ -0,0 +1,546 @@ + + + + + diff --git a/src/plugins/auth.ts b/src/plugins/auth.ts index d8f0e94f..9d95e775 100644 --- a/src/plugins/auth.ts +++ b/src/plugins/auth.ts @@ -10,8 +10,9 @@ interface AuthResponse { const authenticated = async () => ((await getToken()) ? true : false); -async function setAuthen(r: AuthResponse) { +async function setAuthen(r: AuthResponse, val: string) { await setCookie(ACCESS_TOKEN, r.access_token, r.expires_in); + setCookie("SSO", val, r.expires_in); window.location.href = "/"; } @@ -70,4 +71,4 @@ async function tokenParsed() { return JSON.parse(jsonPayload); } -export { getToken, authenticated, logout, setAuthen, tokenParsed }; +export { getToken, authenticated, logout, setAuthen, tokenParsed, getCookie }; diff --git a/src/views/MainLayout.vue b/src/views/MainLayout.vue index f22ca37c..87386a4a 100644 --- a/src/views/MainLayout.vue +++ b/src/views/MainLayout.vue @@ -6,7 +6,7 @@ import { useQuasar } from "quasar"; import { useRoute } from "vue-router"; import config from "@/app.config"; import http from "@/plugins/http"; -import { logout, tokenParsed } from "@/plugins/auth"; +import { logout, tokenParsed, getCookie } from "@/plugins/auth"; import checkPermission from "@/plugins/checkPermission"; import { useCounterMixin } from "@/stores/mixin"; import { useDataStore } from "@/stores/data"; @@ -372,6 +372,8 @@ watch( } ); +const isSsoToken = ref(false); + /** * ฮุกนี้จะถูกเรียกก่อนที่คอมโพเนนต์จะถูก onMounted * กำหนดบทบาทและชื่อผู้ใช้งานจาก Keycloak @@ -381,6 +383,8 @@ onBeforeMount(async () => { // ดิงชื่อผู้ใช้งานจาก keycloak const tokenParsedData: any = await tokenParsed(); + const SSO_TOKEN = await getCookie("SSO"); + isSsoToken.value = SSO_TOKEN === "y" ? true : false; if (tokenParsedData != null) { fullname.value = tokenParsedData.name; role.value = tokenParsedData.role; @@ -623,7 +627,7 @@ onUnmounted(() => { --> - + { expires_in: route.query.expires ? route.query.expires : 36000, refresh_token: route.query.accessToken, }; - setAuthen(params); + setAuthen(params, "y"); } }); diff --git a/src/views/login.vue b/src/views/login.vue index 8e5e8548..06fe7bc2 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -36,7 +36,7 @@ async function onSubmit() { }, }) .then((res) => { - setAuthen(res.data.result); + setAuthen(res.data.result, "n"); }) .catch((err) => { $q.dialog({