เพิ่มเช็คสังกัด ถ้าไม่มีสังกัดจะแสดงหน้า no-position

This commit is contained in:
Warunee Tamkoo 2026-05-01 12:50:50 +07:00
parent c4e246ed74
commit 6c819a6097
5 changed files with 259 additions and 2 deletions

View file

@ -0,0 +1,68 @@
---
name: No Position Assignment Page
description: Feature implementation for users without organization position assignment
type: reference
---
## No Position Assignment Page Feature
When a user doesn't have a position assignment (สังกัด), they are redirected to a dedicated page explaining they are not part of the organization structure.
### Files Created/Modified
1. **Created:** `/Users/waruneeta/Desktop/ChamomindWorking/HRMSProject/hrms-checkin/src/views/NoPositionView.vue`
- Displays message in Thai: "ไม่พบข้อมูลสังกัด"
- Shows icon and explanation text
- "ตกลง" (OK) button that shows confirmation dialog
- After confirmation, performs logout and clears positionKeycloak store
2. **Modified:** `/Users/waruneeta/Desktop/ChamomindWorking/HRMSProject/hrms-checkin/src/router/index.ts`
- Added new route `/no-position` with `Auth: false`
- Enhanced router guard to check for position data
- Redirects to `/no-position` if user has no organization assignment
3. **Modified:** `/Users/waruneeta/Desktop/ChamomindWorking/HRMSProject/hrms-checkin/src/views/MainView.vue`
- Updated `fetchKeycloakPosition()` function
- Checks if `organization` object exists and has any data
- Redirects to `/no-position` if no organization data found
### Logic Flow
1. User logs in successfully
2. `MainView.vue` calls `fetchKeycloakPosition()` in `onMounted()`
3. API returns position data from `/org/profile/keycloak/position`
4. System checks if `organization` object has any non-null values (root, child1-4)
5. If no organization data exists:
- User is redirected to `/no-position`
- User sees message explaining they need to contact staff
- User clicks "ตกลง" to logout
- Staff adds them to organization structure
- User can login again
### Position Data Structure
```typescript
interface KeycloakPosition {
privacyCheckin: boolean
avatarName?: string
profileId: string
organization?: Organization
}
interface Organization {
root?: string
child1?: string
child2?: string
child3?: string
child4?: string
}
```
A user is considered to have "no position" when all organization fields (root, child1, child2, child3, child4) are null or undefined.
### Thai UI Messages
- Page title: "ไม่พบข้อมูลสังกัด"
- Description: "ท่านยังไม่มีสังกัดในโครงสร้างองค์กร กรุณาติดต่อเจ้าหน้าที่เพื่อดำเนินการเพิ่มข้อมูล"
- Confirmation dialog: "ยืนยันการออกจากระบบ" - "ท่านจะถูกนำออกจากระบบเพื่อให้เจ้าหน้าที่ดำเนินการเพิ่มข้อมูลสังกัดในโครงสร้างองค์กร"
- Button: "ตกลง"