Merge branch 'develop' into dev

* develop:
  fix:orgTreeDnaId
  fix(resign-employee):permission _update
  fix:Permission_Update
  fix(resign):Check _Permission_Update
  fix(organization):show draft or current
  fix(leave-reject):download report
This commit is contained in:
Warunee Tamkoo 2026-01-07 17:39:36 +07:00
commit 279052dbc3
6 changed files with 64 additions and 23 deletions

View file

@ -154,7 +154,7 @@ const baseColumns = ref<QTableProps["columns"]>([
field: "lastUpdatedAt",
sortable: false,
format(val) {
return date2Thai(val);
return date2Thai(val, true, true);
},
headerStyle: "font-size: 14px",
style: "font-size: 14px",
@ -265,15 +265,17 @@ watch(
<q-td v-for="col in props.cols" :key="col.name" :props="props">
<div v-if="col.name == 'no'">
{{
store.typeOrganizational === "current" ||
(store.typeOrganizational === "draft" &&
historyType === "OWNER_HISTORY")
historyType === "OWNER_HISTORY"
? props.rowIndex + 1
: props.rowIndex + 1 == 1
: props.rowIndex + 1 == 1 &&
(store.typeOrganizational === "draft" ||
store.typeOrganizational === "old")
? "1 (แบบร่าง)"
: props.rowIndex + 1 == 2
: props.rowIndex + 1 == 2 &&
(store.typeOrganizational === "draft" ||
store.typeOrganizational === "old")
? "2 (ปัจจุบัน)"
: props.rowIndex + 1
: props.rowIndex + 1
}}
</div>

View file

@ -10,6 +10,7 @@ import genReport from "@/plugins/genreport";
import { useCounterMixin } from "@/stores/mixin";
import { useRoleWorkflowDataStore } from "@/stores/roleWorkflow";
import { useRetirementDataStore } from "@/modules/06_retirement/store/Main";
import { checkPermission } from "@/utils/permissions";
import DialogHeader from "@/components/DialogHeader.vue";
@ -766,7 +767,13 @@ onMounted(async () => {
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
<div class="q-pl-sm text-weight-bold text-dark">อมลการลาออก</div>
<q-space />
<div v-if="isStaff && status === 'WAITTING'">
<div
v-if="
isStaff &&
status === 'WAITTING' &&
checkPermission($route)?.attrIsUpdate
"
>
<q-btn
outline
color="primary"

View file

@ -10,6 +10,7 @@ import genReport from "@/plugins/genreport";
import { useCounterMixin } from "@/stores/mixin";
import { useRetirementDataStore } from "@/modules/06_retirement/store/Main";
import { useRoleWorkflowDataStore } from "@/stores/roleWorkflow";
import { checkPermission } from "@/utils/permissions";
import type {
TypeFile,
@ -794,7 +795,13 @@ onMounted(async () => {
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
<div class="q-pl-sm text-weight-bold text-dark">อมลการลาออก</div>
<q-space />
<div v-if="isStaff && status === 'WAITTING'">
<div
v-if="
isStaff &&
status === 'WAITTING' &&
checkPermission($route)?.attrIsUpdate
"
>
<q-btn
outline
color="primary"

View file

@ -10,6 +10,7 @@ import { useCounterMixin } from "@/stores/mixin";
import DialogHeader from "@/components/DialogHeader.vue";
import { useRetirementDataStore } from "@/modules/06_retirement/store/Main";
import { useRoleWorkflowDataStore } from "@/stores/roleWorkflow";
import { checkPermission } from "@/utils/permissions";
import type { QTableProps } from "quasar";
import type { DataProfile } from "@/modules/05_placement/interface/index/Main";
@ -507,7 +508,12 @@ onMounted(async () => {
ผลการพจารณาของผงคบบญชา
</div>
<q-btn
v-if="!checkRoutePermisson && isStaff && approveStep === 'st1'"
v-if="
!checkRoutePermisson &&
isStaff &&
approveStep === 'st1' &&
checkPermission($route)?.attrIsUpdate
"
flat
round
icon="add"
@ -554,7 +560,8 @@ onMounted(async () => {
dataDetail.statusMain === 'CANCELING' &&
props.row.approveStatus == 'PENDING' &&
props.row.comment == '' &&
approveStep === 'st2'
approveStep === 'st2' &&
checkPermission($route)?.attrIsUpdate
"
>
<q-btn
@ -613,7 +620,12 @@ onMounted(async () => {
</div>
<q-btn
q-btn
v-if="!checkRoutePermisson && isStaff && approveStep === 'st1'"
v-if="
!checkRoutePermisson &&
isStaff &&
approveStep === 'st1' &&
checkPermission($route)?.attrIsUpdate
"
flat
round
icon="add"
@ -634,7 +646,8 @@ onMounted(async () => {
rowsApprover.approvers &&
rowsApprover.approvers[0]?.profileId == keycloakId &&
rowsApprover.approvers[0]?.approveStatus == 'PENDING' &&
approveStep === 'st3'
approveStep === 'st3' &&
checkPermission($route)?.attrIsUpdate
"
>
<q-btn
@ -708,7 +721,12 @@ onMounted(async () => {
<q-card
bordered
class="row col-12 text-dark q-mt-sm q-pa-sm"
v-if="!checkRoutePermisson && isStaff && approveStep === 'st1'"
v-if="
!checkRoutePermisson &&
isStaff &&
approveStep === 'st1' &&
checkPermission($route)?.attrIsUpdate
"
>
<q-btn
@click="onSend"
@ -744,7 +762,8 @@ onMounted(async () => {
!checkRoutePermisson &&
(dataDetail.status === 'APPROVE' ||
dataDetail.status === 'REJECT') &&
isStaff
isStaff &&
checkPermission($route)?.attrIsUpdate
"
>
<div class="q-gutter-sm" v-if="!edit">

View file

@ -504,9 +504,10 @@ onMounted(async () => {
@click="
onClickDownloadFile(
formData.id,
'ยกเลิก' + formData.leaveSubTypeName
? formData.leaveSubTypeName
: formData.leaveTypeName,
'ยกเลิก' +
(formData.leaveSubTypeName
? formData.leaveSubTypeName
: formData.leaveTypeName),
typeDocx
)
"
@ -522,9 +523,10 @@ onMounted(async () => {
@click="
onClickDownloadFile(
formData.id,
'ยกเลิก' + formData.leaveSubTypeName
? formData.leaveSubTypeName
: formData.leaveTypeName,
'ยกเลิก' +
(formData.leaveSubTypeName
? formData.leaveSubTypeName
: formData.leaveTypeName),
typePdf
)
"

View file

@ -112,6 +112,7 @@ const nodeId = ref<string>("");
const nodeLevel = ref<number>(0);
const node = ref<DataStructureTree[]>([]);
const expanded = ref<string[]>([]);
const orgTreeDnaId = ref<string>("");
/** ฟังก์ชันเรียกข้อมูลโครงสร้างหน่วยงาน*/
async function fetchDataTree() {
@ -135,6 +136,7 @@ function onSelectedNode(data: any) {
nodeId.value = data.orgTreeId;
nodeLevel.value = data.orgLevel;
expandedModal.value = false;
orgTreeDnaId.value = data.orgTreeDnaId;
updateLeaveday();
}
@ -219,6 +221,7 @@ async function fetchLeaveday(
startDate: Date,
endDate: Date
) {
const nodeIdVal = typeReport.value === 3 ? orgTreeDnaId.value : nodeId.value;
const body = {
type:
year === "FULL"
@ -232,7 +235,7 @@ async function fetchLeaveday(
: "WEEKLY",
startDate: dateToISO(startDate),
endDate: dateToISO(endDate),
nodeId: nodeId.value,
nodeId: nodeIdVal,
node: nodeLevel.value,
};
@ -334,6 +337,7 @@ function filterOption(val: string, update: any, typeOp: string) {
function clearData() {
nodeId.value = "";
nodeLevel.value = 0;
orgTreeDnaId.value = "";
org.value = "";
typeReport.value = null;
yearType.value = "FULL";
@ -410,7 +414,7 @@ function getReport() {
: "WEEKLY",
startDate: dateToISO(dateStart.value),
endDate: dateToISO(dateEnd.value),
nodeId: nodeId.value,
nodeId: orgTreeDnaId.value,
node: nodeLevel.value,
};
http