updated format code & eslint rule

This commit is contained in:
Warunee Tamkoo 2024-09-02 14:01:01 +07:00
parent 67c6810def
commit 8a31554f38
102 changed files with 6271 additions and 6164 deletions

21
.eslintrc.cjs Normal file
View file

@ -0,0 +1,21 @@
/* eslint-env node */
require("@rushstack/eslint-patch/modern-module-resolution");
module.exports = {
root: true,
extends: [
"plugin:vue/vue3-essential",
"eslint:recommended",
"@vue/eslint-config-typescript/recommended",
"@vue/eslint-config-prettier/recommended",
],
overrides: [
{
files: ["cypress/e2e/**/*.{cy,spec}.{js,ts,jsx,tsx}"],
extends: ["plugin:cypress/recommended"],
},
],
parserOptions: {
ecmaVersion: "latest",
},
};

View file

@ -11,7 +11,8 @@
"test:e2e:dev": "start-server-and-test 'vite dev --port 4173' :4173 'cypress open --e2e'",
"build-only": "vite build",
"type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
"format": "prettier ./src --write"
},
"dependencies": {
"@fullcalendar/core": "^6.0.1",

View file

@ -1,9 +1,9 @@
/**config api */
import { ref } from "vue"
import { ref } from "vue";
const env = ref<string>(process.env.NODE_ENV || "development")
export const apiUrlConfig = import.meta.env.VITE_API_URI_CONFIG
export const apiUrlConfigPublish = import.meta.env.VITE_API_PUBLISH_URL
const env = ref<string>(process.env.NODE_ENV || "development");
export const apiUrlConfig = import.meta.env.VITE_API_URI_CONFIG;
export const apiUrlConfigPublish = import.meta.env.VITE_API_PUBLISH_URL;
// if (process.env.VUE_APP_TEST) {
// env = "test";
@ -23,16 +23,19 @@ const config = ref<any>({
production: {
API_URI: apiUrlConfig,
API_URL_SUPPORT: `${apiUrlConfig}/support`,
API_URI_ORG_TREE: "https://s3cluster.frappet.com/bma-ehr-fpt/organization/strueture/tree_20230707_115124.json",
API_URI_ORG_TREE:
"https://s3cluster.frappet.com/bma-ehr-fpt/organization/strueture/tree_20230707_115124.json",
MEET_URI: "meet.frappet.com",
LINK_EVALUATE_PUBLISH: apiUrlConfigPublish,
},
})
});
const API_URI = ref<string>(config.value[env.value].API_URI)
const API_URL_SUPPORT = ref<string>(config.value[env.value].API_URL_SUPPORT)
const MEET_URI = ref<string>(config.value[env.value].MEET_URI)
const LINK_EVALUATE_PUBLISH = ref<string>(config.value[env.value].LINK_EVALUATE_PUBLISH)
const API_URI = ref<string>(config.value[env.value].API_URI);
const API_URL_SUPPORT = ref<string>(config.value[env.value].API_URL_SUPPORT);
const MEET_URI = ref<string>(config.value[env.value].MEET_URI);
const LINK_EVALUATE_PUBLISH = ref<string>(
config.value[env.value].LINK_EVALUATE_PUBLISH
);
export default {
env: env.value,
@ -41,4 +44,4 @@ export default {
API_URL_SUPPORT: API_URL_SUPPORT.value,
MEET_URI: MEET_URI.value,
LINK_EVALUATE_PUBLISH: LINK_EVALUATE_PUBLISH.value,
}
};

View file

@ -3,11 +3,10 @@ const probation = `${env.API_URI}/probation`;
const org = `${env.API_URI}/org`;
const kpiCapacity = `${env.API_URI}/kpi/capacity`;
const reportProbation = `${env.API_URI}/report/probation`;
export default {
probationMain:(id:string)=>`${probation}/assign/probation-assign-list?personal_id=${id}`,
probationMain: (id: string) =>
`${probation}/assign/probation-assign-list?personal_id=${id}`,
orgProfilePlacement: (id: string) => `${org}/profile/placement/${id}`,
calculateDate: () => `${probation}/calculate/assign-finish`,
@ -56,5 +55,5 @@ export default {
reportEvaluateRecord1: (type: string, id: string) =>
`${reportProbation}/14/${type}/${id}`,
kpiCapacity
kpiCapacity,
};

View file

@ -7,5 +7,6 @@ const developmentSalaryFile = `${env.API_URI}/salary/file`;
export default {
developmentScholarshipReport,
developmentScholarship: `${development}/scholarship`,
developmentSalaryFile: (name: string, group: string, id: string) => `${developmentSalaryFile}/${name}/${group}/${id}`,
developmentSalaryFile: (name: string, group: string, id: string) =>
`${developmentSalaryFile}/${name}/${group}/${id}`,
};

View file

@ -1,13 +1,11 @@
/**
* API Structure + Org Chart
*/
import env from "../index"
const tttt = `${env.API_URI}/test`
import env from "../index";
const tttt = `${env.API_URI}/test`;
export default {
gettttt: `${tttt}`,
puttttt: (id: string) => `${tttt}/${id}`,
}
};

View file

@ -1,9 +1,9 @@
import env from "../index"
import env from "../index";
const placementTransfer = `${env.API_URI}/placement`
const placementTransfer = `${env.API_URI}/placement`;
export default {
listUserTransfer: () => `${placementTransfer}/transfer/user`,
listtransfer: () => `${placementTransfer}/transfer`,
transferByid: (id: string) => `${placementTransfer}/transfer/user/${id}`,
}
};

View file

@ -3,7 +3,13 @@
<q-card class="q-pa-sm">
<q-card-section class="row">
<div class="q-pr-md">
<q-avatar :icon="icon" size="lg" font-size="25px" color="blue-1" :text-color="color" />
<q-avatar
:icon="icon"
size="lg"
font-size="25px"
color="blue-1"
:text-color="color"
/>
</div>
<div class="col text-dark">
<span class="text-bold">{{ title }}</span>
@ -12,7 +18,11 @@
</div>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal" v-if="onlycancel">
<q-card-actions
align="right"
class="bg-white text-teal"
v-if="onlycancel"
>
<q-btn label="ตกลง" flat color="grey-8" @click="onDialogCancel" />
<!-- <q-btn :label="textOk" :color="color" @click="onOKClick" /> -->
</q-card-actions>
@ -25,7 +35,7 @@
</template>
<script setup lang="ts">
import { useDialogPluginComponent } from "quasar"
import { useDialogPluginComponent } from "quasar";
const props = defineProps({
color: {
@ -52,15 +62,16 @@ const props = defineProps({
type: Boolean,
default: false,
},
})
});
defineEmits([
// REQUIRED; need to specify some events that your
// component will emit through useDialogPluginComponent()
...useDialogPluginComponent.emits,
])
]);
const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent()
const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } =
useDialogPluginComponent();
// dialogRef - Vue ref to be applied to QDialog
// onDialogHide - Function to be used as handler for @hide on QDialog
// onDialogOK - Function to call to settle dialog with "ok" outcome
@ -72,7 +83,7 @@ const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginC
function onOKClick() {
// on OK, it is REQUIRED to
// call onDialogOK (with optional payload)
onDialogOK()
onDialogOK();
// or with payload: onDialogOK({ ... })
// ...and it will also hide the dialog automatically
}

View file

@ -108,9 +108,9 @@ const paginationLabel = (start: string, end: string, total: string) => {
.q-table thead tr:first-child th {
top: 0;
}
.q-table__middle{
margin-bottom: 0!important;
min-height: 0px!important;
.q-table__middle {
margin-bottom: 0 !important;
min-height: 0px !important;
}
}
</style>

View file

@ -52,7 +52,10 @@ watch(searchData, () => {
<q-card bordered>
<div class="row" style="flex-wrap: nowrap">
<!-- Left -->
<div v-if="!store.openChat || $q.screen.gt.xs" class="col-xs-12 col-sm-4 col-md-4">
<div
v-if="!store.openChat || $q.screen.gt.xs"
class="col-xs-12 col-sm-4 col-md-4"
>
<!-- New -->
<div class="q-pt-md">
<div class="q-px-md q-pb-md">
@ -105,7 +108,7 @@ watch(searchData, () => {
$q.screen.gt.xs ? '' : (store.openChat = true);
store.currentIssue = item.id;
store.currentTitle = item.title;
store.currentIssueDate = item.createdAt
store.currentIssueDate = item.createdAt;
store.issue
? (store.issue.result = store.issue.result.map(
(v) => {

View file

@ -1,27 +1,27 @@
import { defineStore } from "pinia"
import { defineStore } from "pinia";
export const useTransferDataStore = defineStore("transfer", () => {
const statusText = (val: string) => {
switch (val) {
case "WAITTING":
return "รอดำเนินการ"
return "รอดำเนินการ";
case "PENDING":
return "เลือกตำแหน่งแล้ว"
return "เลือกตำแหน่งแล้ว";
case "APPROVE":
return "อนุมัติ"
return "อนุมัติ";
case "REJECT":
return "ไม่อนุมัติ"
return "ไม่อนุมัติ";
case "REPORT":
return "ส่งรายชื่อไปออกคำสั่ง"
return "ส่งรายชื่อไปออกคำสั่ง";
case "DONE":
return "ออกคำสั่งเสร็จแล้ว"
return "ออกคำสั่งเสร็จแล้ว";
default:
return "-"
}
return "-";
}
};
return {
statusText,
}
})
};
});

View file

@ -21,9 +21,4 @@ interface OptionQuestions2 {
value: boolean;
}
export type {
QuestionDescription,
OptionQuestions,
OptionQuestions2
};
export type { QuestionDescription, OptionQuestions, OptionQuestions2 };

View file

@ -2,11 +2,11 @@
* Router
*/
const MainRetire = () => import("@/modules/03_retire/views/main.vue")
const MainRetire = () => import("@/modules/03_retire/views/main.vue");
const AddRetire = () => import("@/modules/03_retire/views/addRetire.vue")
const AddRetire = () => import("@/modules/03_retire/views/addRetire.vue");
const ResultQuestionair = () => import("@/modules/03_retire/views/result.vue")
const ResultQuestionair = () => import("@/modules/03_retire/views/result.vue");
export default [
{
@ -46,4 +46,4 @@ export default [
Key: [7],
},
},
]
];

View file

@ -573,7 +573,6 @@ onMounted(() => {
id="onSubmit"
type="submit"
unelevated
class="q-px-md items-center btnBlue"
label="บันทึก"
><q-tooltip>นทกแบบราง</q-tooltip></q-btn
@ -583,7 +582,6 @@ onMounted(() => {
id="onSubmit"
type="button"
unelevated
class="q-px-md items-center q-ml-sm"
color="primary"
label="ยื่นใบลา"
@ -591,6 +589,5 @@ onMounted(() => {
><q-tooltip>นใบลา</q-tooltip></q-btn
>
</q-card-actions>
</form>
</template>

View file

@ -195,11 +195,17 @@ watch(props, () => {
}
});
watch(()=>formDataWorkInternational.leaveEndDate,()=>{
if(formDataWorkInternational.leaveStartDate !== null && formDataWorkInternational.leaveEndDate !== null){
fetchCheck()
watch(
() => formDataWorkInternational.leaveEndDate,
() => {
if (
formDataWorkInternational.leaveStartDate !== null &&
formDataWorkInternational.leaveEndDate !== null
) {
fetchCheck();
}
})
}
);
/**Hook */
onMounted(() => {
if (props.data) {

View file

@ -1,48 +1,54 @@
interface OptionData {
id: string | undefined
name: string | undefined
code: string | undefined
id: string | undefined;
name: string | undefined;
code: string | undefined;
}
interface FormLeavetMainData {
type: string
numDate: string
extend: string
use: string
numAll: string
numDone: string
numNot: string
numCancel: string
type: string;
numDate: string;
extend: string;
use: string;
numAll: string;
numDone: string;
numNot: string;
numCancel: string;
}
interface formListLeaveData {
no: string
date: string | null
type: string
status: string
year: string
no: string;
date: string | null;
type: string;
status: string;
year: string;
}
interface TypeLeave {
code: string
createdAt: Date
createdFullName: string
createdUserId: string
id: string
lastUpdateFullName: string
lastUpdateUserId: string
lastUpdatedAt: Date | null
limit: number
name: string
code: string;
createdAt: Date;
createdFullName: string;
createdUserId: string;
id: string;
lastUpdateFullName: string;
lastUpdateUserId: string;
lastUpdatedAt: Date | null;
limit: number;
name: string;
}
interface LeaveItem {
text: string
color: string
value: number
all: number
use: number
remain: number
text: string;
color: string;
value: number;
all: number;
use: number;
remain: number;
}
export type { OptionData, FormLeavetMainData, formListLeaveData, TypeLeave, LeaveItem }
export type {
OptionData,
FormLeavetMainData,
formListLeaveData,
TypeLeave,
LeaveItem,
};

View file

@ -1,83 +1,91 @@
interface FormData {
dateStart: Date
subject: string
who: string
requestName: string
position: string
level: string
ocRequest: string
leaveabsentDaySummon: string
leaveUse: string
leaveRemaining: string
dateStart: Date;
subject: string;
who: string;
requestName: string;
position: string;
level: string;
ocRequest: string;
leaveabsentDaySummon: string;
leaveUse: string;
leaveRemaining: string;
}
interface OrdinationForm {
leaveWrote: object | null
leavegovernmentDate: object | null
leavebirthDate: object | null
leaveStartDate: object | null
leaveEndDate: object | null
totalLeave: object | null
ordainDayOrdination: object | null
ordainDayLocationName: object | null
ordainDayLocationNumber: object | null
ordainDayLocationAddress: object | null
ordainDayBuddhistLentName: object | null
ordainDayBuddhistLentAddress: object | null
[key: string]: any
leaveWrote: object | null;
leavegovernmentDate: object | null;
leavebirthDate: object | null;
leaveStartDate: object | null;
leaveEndDate: object | null;
totalLeave: object | null;
ordainDayOrdination: object | null;
ordainDayLocationName: object | null;
ordainDayLocationNumber: object | null;
ordainDayLocationAddress: object | null;
ordainDayBuddhistLentName: object | null;
ordainDayBuddhistLentAddress: object | null;
[key: string]: any;
}
interface HajiForm {
leaveWrote: object | null
leavegovernmentDate: object | null
leaveStartDate: object | null
leaveEndDate: object | null
[key: string]: any
leaveWrote: object | null;
leavegovernmentDate: object | null;
leaveStartDate: object | null;
leaveEndDate: object | null;
[key: string]: any;
}
interface MilitaryForm {
leaveStartDate: object | null
leaveEndDate: object | null
leaveWrote: object | null
absentDaySummon: object | null
absentDayLocation: object | null
absentDayRegistorDate: object | null
absentDayGetIn: object | null
absentDayAt: object | null
leaveDetail: object | null
[key: string]: any
leaveStartDate: object | null;
leaveEndDate: object | null;
leaveWrote: object | null;
absentDaySummon: object | null;
absentDayLocation: object | null;
absentDayRegistorDate: object | null;
absentDayGetIn: object | null;
absentDayAt: object | null;
leaveDetail: object | null;
[key: string]: any;
}
interface studyDaySubjectForm {
leaveStartDate: object | null
leaveEndDate: object | null
leavebirthDate: object | null
leavegovernmentDate: object | null
leaveSalary: object | null
leaveNumber: object | null
leaveAddress: object | null
studyDayScholarship: object | null
studyDayCountry: object | null
studyDayUniversityName: object | null
studyDayDegreeLevel: object | null
studyDaySubject: object | null
leaveWrote: object | null
[key: string]: any
leaveStartDate: object | null;
leaveEndDate: object | null;
leavebirthDate: object | null;
leavegovernmentDate: object | null;
leaveSalary: object | null;
leaveNumber: object | null;
leaveAddress: object | null;
studyDayScholarship: object | null;
studyDayCountry: object | null;
studyDayUniversityName: object | null;
studyDayDegreeLevel: object | null;
studyDaySubject: object | null;
leaveWrote: object | null;
[key: string]: any;
}
interface TrainForm {
leaveStartDate: object | null
leaveEndDate: object | null
leavebirthDate: object | null
leavegovernmentDate: object | null
leaveNumber: object | null
leaveAddress: object | null
studyDayScholarship: object | null
studyDayCountry: object | null
studyDayTrainingSubject: object | null
studyDayTrainingName: object | null
leaveWrote: object | null
[key: string]: any
leaveStartDate: object | null;
leaveEndDate: object | null;
leavebirthDate: object | null;
leavegovernmentDate: object | null;
leaveNumber: object | null;
leaveAddress: object | null;
studyDayScholarship: object | null;
studyDayCountry: object | null;
studyDayTrainingSubject: object | null;
studyDayTrainingName: object | null;
leaveWrote: object | null;
[key: string]: any;
}
interface RehabilitationForm {
leaveStartDate: object | null
leaveEndDate: object | null
leaveWrote: object | null
[key: string]: any
leaveStartDate: object | null;
leaveEndDate: object | null;
leaveWrote: object | null;
[key: string]: any;
}
export type { FormData, OrdinationForm, HajiForm, MilitaryForm, studyDaySubjectForm, TrainForm, RehabilitationForm }
export type {
FormData,
OrdinationForm,
HajiForm,
MilitaryForm,
studyDaySubjectForm,
TrainForm,
RehabilitationForm,
};

View file

@ -1,25 +1,25 @@
interface FormData {
leaveWrote: string //เขียนที่***
leaveStartDate: Date | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: string //จำนวนวันลา
leaveNumber: string //หมายเลขที่ติดต่อขณะลา
leaveDetail: string //รายละเอียดการลา
leaveAddress: string //สถานที่ติดต่อขณะลา
leaveDocument: File[] | null //เอกสารปะกอบ
[key: string]: any
leaveWrote: string; //เขียนที่***
leaveStartDate: Date | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null; //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: string; //จำนวนวันลา
leaveNumber: string; //หมายเลขที่ติดต่อขณะลา
leaveDetail: string; //รายละเอียดการลา
leaveAddress: string; //สถานที่ติดต่อขณะลา
leaveDocument: File[] | null; //เอกสารปะกอบ
[key: string]: any;
}
interface FormRef {
leaveWrote: object | null //เขียนที่***
leaveStartDate: object | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: object | null //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: object | null //จำนวนวันลา
leaveNumber: object | null //หมายเลขที่ติดต่อขณะลา
leaveDetail: object | null //รายละเอียดการลา
leaveAddress: object | null //สถานที่ติดต่อขณะลา
leaveDocument: object | null //เอกสารปะกอบ
[key: string]: any
leaveWrote: object | null; //เขียนที่***
leaveStartDate: object | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: object | null; //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: object | null; //จำนวนวันลา
leaveNumber: object | null; //หมายเลขที่ติดต่อขณะลา
leaveDetail: object | null; //รายละเอียดการลา
leaveAddress: object | null; //สถานที่ติดต่อขณะลา
leaveDocument: object | null; //เอกสารปะกอบ
[key: string]: any;
}
export type { FormData, FormRef }
export type { FormData, FormRef };

View file

@ -1,40 +1,40 @@
interface FormData {
leaveWrote: string //เขียนที่***
leaveStartDate: Date | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: string //จำนวนวันลา
leaveSalary: number //เงินเดือนปัจจุบัน
salaryText: number //เงินเดือนคำอ่าน
coupleDayName: string //ชื่อคู่สมรส
coupleDayPosition: string //ตำแหน่งคู่สมรส
coupleDayLevel: string //ระดับคู่สมรส
coupleDayLevelCountry: string //ไปปฏิบัติราชการ ณ ประเทศ
followHistoryCountry: string //ประวัติการลาติดตามคู่สมรสประเทศ
followHistoryTime: string //ประวัติการลาติดตามคู่สมรสประเทศ
followHistoryStart: Date | null //ประวัติการลาติดตามคู่สมรสประเทศ
followHistoryEnd: Date | null //ประวัติการลาติดตามคู่สมรสประเทศ
leaveDetail: string //รายละเอียดการลา
leaveDocument: File[] | null //เอกสารปะกอบ
leaveWrote: string; //เขียนที่***
leaveStartDate: Date | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null; //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: string; //จำนวนวันลา
leaveSalary: number; //เงินเดือนปัจจุบัน
salaryText: number; //เงินเดือนคำอ่าน
coupleDayName: string; //ชื่อคู่สมรส
coupleDayPosition: string; //ตำแหน่งคู่สมรส
coupleDayLevel: string; //ระดับคู่สมรส
coupleDayLevelCountry: string; //ไปปฏิบัติราชการ ณ ประเทศ
followHistoryCountry: string; //ประวัติการลาติดตามคู่สมรสประเทศ
followHistoryTime: string; //ประวัติการลาติดตามคู่สมรสประเทศ
followHistoryStart: Date | null; //ประวัติการลาติดตามคู่สมรสประเทศ
followHistoryEnd: Date | null; //ประวัติการลาติดตามคู่สมรสประเทศ
leaveDetail: string; //รายละเอียดการลา
leaveDocument: File[] | null; //เอกสารปะกอบ
}
interface FormRef {
leaveWrote: object | null //เขียนที่***
leaveStartDate: object | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: object | null //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: object | null //จำนวนวันลา
leaveSalary: object | null //เงินเดือนปัจจุบัน
coupleDayName: object | null //หมายเลขที่ติดต่อขณะลา
coupleDayPosition: object | null //ตำแหน่งคู่สมรส
coupleDayLevel: object | null //ระดับคู่สมรส
coupleDayLevelCountry: object | null //ไปปฏิบัติราชการ ณ ประเทศ
leaveWrote: object | null; //เขียนที่***
leaveStartDate: object | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: object | null; //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: object | null; //จำนวนวันลา
leaveSalary: object | null; //เงินเดือนปัจจุบัน
coupleDayName: object | null; //หมายเลขที่ติดต่อขณะลา
coupleDayPosition: object | null; //ตำแหน่งคู่สมรส
coupleDayLevel: object | null; //ระดับคู่สมรส
coupleDayLevelCountry: object | null; //ไปปฏิบัติราชการ ณ ประเทศ
// followHistoryCountry: object | null //ประวัติการลาติดตามคู่สมรสประเทศ
// followHistoryTime: object | null //ประวัติการลาติดตามคู่สมรสประเทศ
// followHistoryStart: object | null //ประวัติการลาติดตามคู่สมรสประเทศ
// followHistoryEnd: object | null //ประวัติการลาติดตามคู่สมรสประเทศ
leaveDetail: object | null //รายละเอียดการลา
leaveAddress: object | null //สถานที่ติดต่อขณะลา
leaveDocument: object | null //เอกสารปะกอบ
[key: string]: any
leaveDetail: object | null; //รายละเอียดการลา
leaveAddress: object | null; //สถานที่ติดต่อขณะลา
leaveDocument: object | null; //เอกสารปะกอบ
[key: string]: any;
}
export type { FormData, FormRef }
export type { FormData, FormRef };

View file

@ -1,29 +1,29 @@
interface FormData {
leaveWrote: string //เขียนที่***
wifeDayName: string //ชื่อภรรยา
wifeDayDateBorn: Date | null //วันที่คลอด
leaveStartDate: Date | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: string //จำนวนวันลา
leaveNumber: string //หมายเลขที่ติดต่อขณะลา
leaveDetail: string //รายละเอียดการลา
leaveAddress: string //สถานที่ติดต่อขณะลา
leaveDocument: File[] | null //เอกสารปะกอบ
[key: string]: any
leaveWrote: string; //เขียนที่***
wifeDayName: string; //ชื่อภรรยา
wifeDayDateBorn: Date | null; //วันที่คลอด
leaveStartDate: Date | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null; //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: string; //จำนวนวันลา
leaveNumber: string; //หมายเลขที่ติดต่อขณะลา
leaveDetail: string; //รายละเอียดการลา
leaveAddress: string; //สถานที่ติดต่อขณะลา
leaveDocument: File[] | null; //เอกสารปะกอบ
[key: string]: any;
}
interface FormRef {
leaveWrote: object | null //เขียนที่***
leaveStartDate: object | null //*วัน เดือน ปีเริ่มต้นลา
wifeDayName: object | null //ชื่อภรรยา
wifeDayDateBorn: object | null //วันที่คลอด
leaveEndDate: object | null //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: object | null //จำนวนวันลา
leaveNumber: object | null //หมายเลขที่ติดต่อขณะลา
leaveDetail: object | null //รายละเอียดการลา
leaveAddress: object | null //สถานที่ติดต่อขณะลา
leaveDocument: object | null //เอกสารปะกอบ
[key: string]: any
leaveWrote: object | null; //เขียนที่***
leaveStartDate: object | null; //*วัน เดือน ปีเริ่มต้นลา
wifeDayName: object | null; //ชื่อภรรยา
wifeDayDateBorn: object | null; //วันที่คลอด
leaveEndDate: object | null; //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: object | null; //จำนวนวันลา
leaveNumber: object | null; //หมายเลขที่ติดต่อขณะลา
leaveDetail: object | null; //รายละเอียดการลา
leaveAddress: object | null; //สถานที่ติดต่อขณะลา
leaveDocument: object | null; //เอกสารปะกอบ
[key: string]: any;
}
export type { FormData, FormRef }
export type { FormData, FormRef };

View file

@ -1,28 +1,28 @@
interface FormData {
leaveWrote: string //เขียนที่***
leaveStartDate: Date | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null //*วัน เดือน ปีสิ้นสุดลา
leaveRange: string
leaveTotal: string //จำนวนวันลา
contractTel: string //หมายเลขโทรศัพท์ที่ติดต่อได้
leaveNumber: string //หมายเลขที่ติดต่อขณะลา
leaveDetail: string //รายละเอียดการลา
leaveAddress: string //สถานที่ติดต่อขณะลา
leaveDocument: File[] | null //เอกสารปะกอบ
[key: string]: any
leaveWrote: string; //เขียนที่***
leaveStartDate: Date | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null; //*วัน เดือน ปีสิ้นสุดลา
leaveRange: string;
leaveTotal: string; //จำนวนวันลา
contractTel: string; //หมายเลขโทรศัพท์ที่ติดต่อได้
leaveNumber: string; //หมายเลขที่ติดต่อขณะลา
leaveDetail: string; //รายละเอียดการลา
leaveAddress: string; //สถานที่ติดต่อขณะลา
leaveDocument: File[] | null; //เอกสารปะกอบ
[key: string]: any;
}
interface FormRef {
leaveWrote: object | null //เขียนที่***
leaveStartDate: object | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: object | null //*วัน เดือน ปีสิ้นสุดลา
leaveRange: object | null
leaveTotal: object | null //จำนวนวันลา
leaveNumber: object | null //หมายเลขที่ติดต่อขณะลา
leaveDetail: object | null //รายละเอียดการลา
leaveAddress: object | null //สถานที่ติดต่อขณะลา
leaveWrote: object | null; //เขียนที่***
leaveStartDate: object | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: object | null; //*วัน เดือน ปีสิ้นสุดลา
leaveRange: object | null;
leaveTotal: object | null; //จำนวนวันลา
leaveNumber: object | null; //หมายเลขที่ติดต่อขณะลา
leaveDetail: object | null; //รายละเอียดการลา
leaveAddress: object | null; //สถานที่ติดต่อขณะลา
[key: string]: any
[key: string]: any;
}
export type { FormData, FormRef }
export type { FormData, FormRef };

View file

@ -1,31 +1,31 @@
interface FormData {
leaveWrote: string //เขียนที่***
leaveRange: string
restDayOldTotal: string //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา
restDayCurrentTotal: string //จำนวนวันลาพักผ่อนประจำปีปัจจุบัน
leaveStartDate: Date | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: string //จำนวนวันลา
leaveNumber: string //หมายเลขที่ติดต่อขณะลา
leaveDetail: string //รายละเอียดการลา
leaveAddress: string //สถานที่ติดต่อขณะลา
leaveDocument: File[] | null //เอกสารปะกอบ
[key: string]: any
leaveWrote: string; //เขียนที่***
leaveRange: string;
restDayOldTotal: string; //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา
restDayCurrentTotal: string; //จำนวนวันลาพักผ่อนประจำปีปัจจุบัน
leaveStartDate: Date | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null; //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: string; //จำนวนวันลา
leaveNumber: string; //หมายเลขที่ติดต่อขณะลา
leaveDetail: string; //รายละเอียดการลา
leaveAddress: string; //สถานที่ติดต่อขณะลา
leaveDocument: File[] | null; //เอกสารปะกอบ
[key: string]: any;
}
interface FormRef {
leaveWrote: object | null //เขียนที่***
leaveRange: object | null
leaveStartDate: object | null //*วัน เดือน ปีเริ่มต้นลา
restDayOldTotal: object | null //ชื่อภรรยา
restDayCurrentTotal: object | null //วันที่คลอด
leaveEndDate: object | null //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: object | null //จำนวนวันลา
leaveNumber: object | null //หมายเลขที่ติดต่อขณะลา
leaveDetail: object | null //รายละเอียดการลา
leaveAddress: object | null //สถานที่ติดต่อขณะลา
leaveDocument: object | null //เอกสารปะกอบ
[key: string]: any
leaveWrote: object | null; //เขียนที่***
leaveRange: object | null;
leaveStartDate: object | null; //*วัน เดือน ปีเริ่มต้นลา
restDayOldTotal: object | null; //ชื่อภรรยา
restDayCurrentTotal: object | null; //วันที่คลอด
leaveEndDate: object | null; //*วัน เดือน ปีสิ้นสุดลา
leaveTotal: object | null; //จำนวนวันลา
leaveNumber: object | null; //หมายเลขที่ติดต่อขณะลา
leaveDetail: object | null; //รายละเอียดการลา
leaveAddress: object | null; //สถานที่ติดต่อขณะลา
leaveDocument: object | null; //เอกสารปะกอบ
[key: string]: any;
}
export type { FormData, FormRef }
export type { FormData, FormRef };

View file

@ -1,20 +1,20 @@
interface FormData {
type: string
leaveWrote: string //เขียนที่***
leaveStartDate: Date | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null //*วัน เดือน ปีสิ้นสุดลา
leaveDetail: string //รายละเอียดการลา
leaveDocument: File[] | null //เอกสารปะกอบ
leaveDraftDocument: File[]
type: string;
leaveWrote: string; //เขียนที่***
leaveStartDate: Date | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date | null; //*วัน เดือน ปีสิ้นสุดลา
leaveDetail: string; //รายละเอียดการลา
leaveDocument: File[] | null; //เอกสารปะกอบ
leaveDraftDocument: File[];
}
interface FormRef {
leaveWrote: object | null //เขียนที่***
leaveStartDate: object | null //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: object | null //*วัน เดือน ปีสิ้นสุดลา
leaveDetail: object | null //รายละเอียดการลา
leaveDocument: object | null //เอกสารปะกอบ
[key: string]: any
leaveWrote: object | null; //เขียนที่***
leaveStartDate: object | null; //*วัน เดือน ปีเริ่มต้นลา
leaveEndDate: object | null; //*วัน เดือน ปีสิ้นสุดลา
leaveDetail: object | null; //รายละเอียดการลา
leaveDocument: object | null; //เอกสารปะกอบ
[key: string]: any;
}
export type { FormData, FormRef }
export type { FormData, FormRef };

View file

@ -1,146 +1,156 @@
interface ListLeave {
id: string //*Id การยื่นขอลา
leaveTypeName: string //Name ประเภทการลา
leaveTypeId: string //Id ประเภทการลา
leaveStartDate: Date
leaveEndDate: Date
fullName: string //คำนำหน้า ชื่อ นามสกุล คนขอลา
dateSendLeave: Date | null //วันที่ยื่นใบลา
status: string //สถานะการของลา
isDelete: boolean //ขอยกเลิกคำขอลา ถ้าเคยขอแล้วจะเป็น true ไม่เคยเป็น false
hajjDayStatus: boolean
id: string; //*Id การยื่นขอลา
leaveTypeName: string; //Name ประเภทการลา
leaveTypeId: string; //Id ประเภทการลา
leaveStartDate: Date;
leaveEndDate: Date;
fullName: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
dateSendLeave: Date | null; //วันที่ยื่นใบลา
status: string; //สถานะการของลา
isDelete: boolean; //ขอยกเลิกคำขอลา ถ้าเคยขอแล้วจะเป็น true ไม่เคยเป็น false
hajjDayStatus: boolean;
}
interface ListLeaveTable {
id: string
leaveTypeName: string
leaveTypeId: string
fullName: string
dateSendLeave: string | null
status: string
isDelete: boolean
hajjDayStatus: boolean
id: string;
leaveTypeName: string;
leaveTypeId: string;
fullName: string;
dateSendLeave: string | null;
status: string;
isDelete: boolean;
hajjDayStatus: boolean;
}
interface FremDetail {
id: string //Id การยื่นขอลา
leaveTypeName: string // Name ประเภทการลา
leaveTypeId: string //Id ประเภทการลา
fullname: string //คำนำหน้า ชื่อ นามสกุล คนขอลา
dateSendLeave: Date // วันที่ยืนใบลา
status: string //สถานะการของลา
leaveDateStart: Date //วันเริ่มการลา
leaveDateEnd: Date //วันสิ้นสุดการลา
leaveCount: string //จำนวนวันลา
leaveWrote: string //เขียนที่
leaveAddress: string //สถานที่ติดต่อขณะลา
leaveNumber: string //หมายเลขที่ติดต่อขณะลา
leaveDetail: string //รายละเอียดการลา
leaveDocument: string //อัปโหลดเอกสารประกอบรายละเอียด
leaveDraftDocument: string //อัปโหลดแบบฟอร์มการลา
leaveLastStart: Date //ลาครั้งสุดท้ายในประเภทนั้น ๆ เริ่มเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto)
leaveLastEnd: Date //ลาครั้งสุดท้ายในประเภทนั้น ๆ สิ้นสุดเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto)
leaveTotal: string //จำนวนวันที่ลา(Auto)
leavebirthDate: Date //วันเดือนปีเกิด(Auto)
leavegovernmentDate: Date //วันที่เข้ารับราชการ(Auto)
leaveSalary: number //เงินเดือนปัจจุบัน(Auto)
leaveSalaryText: string //เงินเดือนปัจจุบัน(เขียนเป็นคำอ่าน)
leaveTypeDay: string //ประเภทการลาในวันนั้นเช่น
wifeDayName: string //ชื่อภรรยา(ลาไปช่วยเหลือภริยาที่คลอดบุตร)
wifeDayDateBorn: Date //วันที่คลอด(ลาไปช่วยเหลือภริยาที่คลอดบุตร)
restDayOldTotal: number //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา(ลาพักผ่อน)(Auto)
restDayCurrentTotal: number //จำนวนวันลาพักผ่อนประจำปีปัจจุบัน(ลาพักผ่อน)(Auto)
ordainDayStatus: string //เคย/ไม่เคยบวช (ให้เลือก) (ลาอุปสมบท)
ordainDayLocationName: string //สถานที่บวช ชื่อวัด(ลาอุปสมบท)
ordainDayLocationAddress: string //สถานที่บวช ที่อยู่(ลาอุปสมบท)
ordainDayLocationNumber: string //สถานที่บวช หมายเลขโทรศัพท์(ลาอุปสมบท)
ordainDayOrdination: Date //สถานที่บวช วันอุปสมบท(ลาอุปสมบท)
ordainDayBuddhistLentName: string //สถานที่จำพรรษา ชื่อวัด(ลาอุปสมบท)
ordainDayBuddhistLentAddress: string //สถานที่จำพรรษา ที่อยู่(ลาอุปสมบท)
hajjDayStatus: string //เคย/ไม่เคยไปประกอบพิธีฮัจญ์ (ให้เลือก) (ลาประกอบพิธีฮัจญ์)
absentDaySummon: string //ได้รับหมายเรียกของ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayLocation: string //ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayRegistorDate: Date //ลงวันที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayGetIn: string //ให้เข้ารับการ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayAt: string //ณ ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
studyDaySubject: string //กรณีลาไปศึกษาต่อ ศึกษาวิชา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayDegreeLevel: string //กรณีลาไปศึกษาต่อ ขั้นปริญญา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayUniversityName: string //กรณีลาไปศึกษาต่อ ชื่อสถานศึกษา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayTrainingSubject: string //กรณีลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน ด้าน/หลักสูตร (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayTrainingName: string //กรณีลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน ณ สถานที่ (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayCountry: string //ประเทศ (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayScholarship: string //ด้วยทุน (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
coupleDayName: string //ชื่อคู่สมรส (ลาติดตามคู่สมรส)
coupleDayPosition: string //ตำแหน่งคู่สมรส (ลาติดตามคู่สมรส)
coupleDayLevel: string //ระดับคู่สมรส (ลาติดตามคู่สมรส)
coupleDayLevelCountry: string //ไปปฏิบัติราชการ ณ ประเทศ (ลาติดตามคู่สมรส)
coupleDayCountryHistory: string //ประวัติ ประเทศ (ลาติดตามคู่สมรส)
coupleDayTotalHistory: string //ประวัติ เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส)
coupleDayStartDateHistory: Date //ประวัติ ตั้งแต่วันที่ (ลาติดตามคู่สมรส)
coupleDayEndDateHistory: Date //ประวัติ ถึงวันที่ (ลาติดตามคู่สมรส)
coupleDaySumTotalHistory: string //ประวัติ ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส)
approveStep: string
dear: string
leaveRange: string
id: string; //Id การยื่นขอลา
leaveTypeName: string; // Name ประเภทการลา
leaveTypeId: string; //Id ประเภทการลา
fullname: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
dateSendLeave: Date; // วันที่ยืนใบลา
status: string; //สถานะการของลา
leaveDateStart: Date; //วันเริ่มการลา
leaveDateEnd: Date; //วันสิ้นสุดการลา
leaveCount: string; //จำนวนวันลา
leaveWrote: string; //เขียนที่
leaveAddress: string; //สถานที่ติดต่อขณะลา
leaveNumber: string; //หมายเลขที่ติดต่อขณะลา
leaveDetail: string; //รายละเอียดการลา
leaveDocument: string; //อัปโหลดเอกสารประกอบรายละเอียด
leaveDraftDocument: string; //อัปโหลดแบบฟอร์มการลา
leaveLastStart: Date; //ลาครั้งสุดท้ายในประเภทนั้น ๆ เริ่มเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto)
leaveLastEnd: Date; //ลาครั้งสุดท้ายในประเภทนั้น ๆ สิ้นสุดเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto)
leaveTotal: string; //จำนวนวันที่ลา(Auto)
leavebirthDate: Date; //วันเดือนปีเกิด(Auto)
leavegovernmentDate: Date; //วันที่เข้ารับราชการ(Auto)
leaveSalary: number; //เงินเดือนปัจจุบัน(Auto)
leaveSalaryText: string; //เงินเดือนปัจจุบัน(เขียนเป็นคำอ่าน)
leaveTypeDay: string; //ประเภทการลาในวันนั้นเช่น
wifeDayName: string; //ชื่อภรรยา(ลาไปช่วยเหลือภริยาที่คลอดบุตร)
wifeDayDateBorn: Date; //วันที่คลอด(ลาไปช่วยเหลือภริยาที่คลอดบุตร)
restDayOldTotal: number; //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา(ลาพักผ่อน)(Auto)
restDayCurrentTotal: number; //จำนวนวันลาพักผ่อนประจำปีปัจจุบัน(ลาพักผ่อน)(Auto)
ordainDayStatus: string; //เคย/ไม่เคยบวช (ให้เลือก) (ลาอุปสมบท)
ordainDayLocationName: string; //สถานที่บวช ชื่อวัด(ลาอุปสมบท)
ordainDayLocationAddress: string; //สถานที่บวช ที่อยู่(ลาอุปสมบท)
ordainDayLocationNumber: string; //สถานที่บวช หมายเลขโทรศัพท์(ลาอุปสมบท)
ordainDayOrdination: Date; //สถานที่บวช วันอุปสมบท(ลาอุปสมบท)
ordainDayBuddhistLentName: string; //สถานที่จำพรรษา ชื่อวัด(ลาอุปสมบท)
ordainDayBuddhistLentAddress: string; //สถานที่จำพรรษา ที่อยู่(ลาอุปสมบท)
hajjDayStatus: string; //เคย/ไม่เคยไปประกอบพิธีฮัจญ์ (ให้เลือก) (ลาประกอบพิธีฮัจญ์)
absentDaySummon: string; //ได้รับหมายเรียกของ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayLocation: string; //ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayRegistorDate: Date; //ลงวันที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayGetIn: string; //ให้เข้ารับการ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayAt: string; //ณ ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
studyDaySubject: string; //กรณีลาไปศึกษาต่อ ศึกษาวิชา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayDegreeLevel: string; //กรณีลาไปศึกษาต่อ ขั้นปริญญา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayUniversityName: string; //กรณีลาไปศึกษาต่อ ชื่อสถานศึกษา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayTrainingSubject: string; //กรณีลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน ด้าน/หลักสูตร (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayTrainingName: string; //กรณีลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน ณ สถานที่ (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayCountry: string; //ประเทศ (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
studyDayScholarship: string; //ด้วยทุน (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน)
coupleDayName: string; //ชื่อคู่สมรส (ลาติดตามคู่สมรส)
coupleDayPosition: string; //ตำแหน่งคู่สมรส (ลาติดตามคู่สมรส)
coupleDayLevel: string; //ระดับคู่สมรส (ลาติดตามคู่สมรส)
coupleDayLevelCountry: string; //ไปปฏิบัติราชการ ณ ประเทศ (ลาติดตามคู่สมรส)
coupleDayCountryHistory: string; //ประวัติ ประเทศ (ลาติดตามคู่สมรส)
coupleDayTotalHistory: string; //ประวัติ เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส)
coupleDayStartDateHistory: Date; //ประวัติ ตั้งแต่วันที่ (ลาติดตามคู่สมรส)
coupleDayEndDateHistory: Date; //ประวัติ ถึงวันที่ (ลาติดตามคู่สมรส)
coupleDaySumTotalHistory: string; //ประวัติ ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส)
approveStep: string;
dear: string;
leaveRange: string;
}
interface FromCancelDetail {
id: string //*Id การยื่นขอลา
leaveTypeName: String //Name ประเภทการลา
fullname: String //คำนำหน้า ชื่อ นามสกุล คนขอลา
status: String //สถานะการของลา
leaveDocDelete: string //เอกสารการยกเลิกการลา
leaveResonDelete: String //เหตุผลการยกเลิกการลา
leaveWrote: String //เขียนที่
leaveAddress: String //สถานที่ติดต่อขณะลา
leaveNumber: String //หมายเลขที่ติดต่อขณะลา
leaveDetail: String //รายละเอียดการลา
leaveTotal: number //จำนวนวันที่ลา
leaveStartDate: Date //วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date //วัน เดือน ปีสิ้นสุดลา
id: string; //*Id การยื่นขอลา
leaveTypeName: String; //Name ประเภทการลา
fullname: String; //คำนำหน้า ชื่อ นามสกุล คนขอลา
status: String; //สถานะการของลา
leaveDocDelete: string; //เอกสารการยกเลิกการลา
leaveResonDelete: String; //เหตุผลการยกเลิกการลา
leaveWrote: String; //เขียนที่
leaveAddress: String; //สถานที่ติดต่อขณะลา
leaveNumber: String; //หมายเลขที่ติดต่อขณะลา
leaveDetail: String; //รายละเอียดการลา
leaveTotal: number; //จำนวนวันที่ลา
leaveStartDate: Date; //วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date; //วัน เดือน ปีสิ้นสุดลา
}
interface FormDelete {
writeAt: string
reason: string
doc: any
writeAt: string;
reason: string;
doc: any;
}
interface FormDeleteRef {
writeAt: object | null
reason: object | null
doc: object | null
[key: string]: any
writeAt: object | null;
reason: object | null;
doc: object | null;
[key: string]: any;
}
interface DataCalendar {
dateSendLeave: Date
fullName: string
id: string
leaveEndDate: Date
leaveStartDate: Date
leaveTypeId: string
leaveTypeName: string
status: string
keycloakId: string
dateSendLeave: Date;
fullName: string;
id: string;
leaveEndDate: Date;
leaveStartDate: Date;
leaveTypeId: string;
leaveTypeName: string;
status: string;
keycloakId: string;
}
interface LeaveType {
code: string
createdAt: Date
createdFullName: string
createdUserId: string
id: string
lastUpdateFullName: string
lastUpdateUserId: string
lastUpdatedAt: Date | null
limit: Number
name: string
code: string;
createdAt: Date;
createdFullName: string;
createdUserId: string;
id: string;
lastUpdateFullName: string;
lastUpdateUserId: string;
lastUpdatedAt: Date | null;
limit: Number;
name: string;
}
interface FilterList {
id: string
name: string | null
color: string
id: string;
name: string | null;
color: string;
}
export type { ListLeave, ListLeaveTable, FremDetail, FormDelete, FormDeleteRef, DataCalendar, LeaveType, FilterList, FromCancelDetail }
export type {
ListLeave,
ListLeaveTable,
FremDetail,
FormDelete,
FormDeleteRef,
DataCalendar,
LeaveType,
FilterList,
FromCancelDetail,
};

View file

@ -1,11 +1,11 @@
/**
* Router leave
*/
const leave = () => import("@/modules/05_leave/views/Main.vue")
const leave = () => import("@/modules/05_leave/views/Main.vue");
const addAbsence = () => import("@/modules/05_leave/views/AddPage.vue")
const addAbsence = () => import("@/modules/05_leave/views/AddPage.vue");
const editAbsence = () => import("@/modules/05_leave/views/EditPage.vue")
const editAbsence = () => import("@/modules/05_leave/views/EditPage.vue");
/* const Checkout = () => import("@/modules/04_checkin/views/Checkout.vue");
*/
@ -37,4 +37,4 @@ export default [
Key: [7],
},
},
]
];

View file

@ -1,26 +1,32 @@
import { defineStore } from "pinia"
import { ref } from "vue"
import { useQuasar } from "quasar"
import { defineStore } from "pinia";
import { ref } from "vue";
import { useQuasar } from "quasar";
import type { QTableProps } from "quasar"
import type { OptionData, TypeLeave } from "@/modules/05_leave/interface/index/main"
import type { ListLeave, ListLeaveTable } from "@/modules/05_leave/interface/response/leave"
import http from "@/plugins/http"
import config from "@/app.config"
import type { QTableProps } from "quasar";
import type {
OptionData,
TypeLeave,
} from "@/modules/05_leave/interface/index/main";
import type {
ListLeave,
ListLeaveTable,
} from "@/modules/05_leave/interface/response/leave";
import http from "@/plugins/http";
import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin"
const mixin = useCounterMixin()
const { date2Thai, messageError } = mixin
const $q = useQuasar()
import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin();
const { date2Thai, messageError } = mixin;
const $q = useQuasar();
const type = ref<string>("00000000-0000-0000-0000-000000000000");
const status = ref<string>("ALL");
export const useLeaveStore = defineStore("Leave", () => {
const tabValue = ref<string>("calendar")
const typeLeave = ref<string | undefined>("")
const LeaveType = ref<string | null>("0")
const LeaveStatus = ref<string | null>("0")
const fiscalYearyear = ref<Number | null>(new Date().getFullYear())
const rows = ref<ListLeaveTable[]>([])
const tabValue = ref<string>("calendar");
const typeLeave = ref<string | undefined>("");
const LeaveType = ref<string | null>("0");
const LeaveStatus = ref<string | null>("0");
const fiscalYearyear = ref<Number | null>(new Date().getFullYear());
const rows = ref<ListLeaveTable[]>([]);
/**
* function Table
@ -33,40 +39,41 @@ export const useLeaveStore = defineStore("Leave", () => {
leaveTypeId: e.leaveTypeId,
fullName: e.fullName,
dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave),
dateLeave: date2Thai(e.leaveStartDate) + " - " + date2Thai(e.leaveEndDate),
dateLeave:
date2Thai(e.leaveStartDate) + " - " + date2Thai(e.leaveEndDate),
status: e.status,
hajjDayStatus: e.hajjDayStatus,
statusConvert: convertStatud(e.status),
isDelete: e.isDelete,
}))
rows.value = datalist
}));
rows.value = datalist;
}
//ฟังก์ชั่นแปลง Status
function convertStatud(val: string) {
switch (val) {
case "DRAFT":
return "แบบร่าง"
return "แบบร่าง";
case "NEW":
return "ใหม่"
return "ใหม่";
case "PENDING":
return "กำลังดำเนินการ"
return "กำลังดำเนินการ";
case "APPROVE":
return "อนุมัติ"
return "อนุมัติ";
case "REJECT":
return "ไม่อนุมัติ"
return "ไม่อนุมัติ";
case "DELETE":
return "ยกเลิก"
return "ยกเลิก";
}
}
/** ประเภทการลา */
const typeOptions = ref<OptionData[]>([])
const typeId = ref<string | undefined>("")
const typeOptionsMain = ref<OptionData[]>([])
const typeOptionsAdd = ref<OptionData[]>([])
const typeOptions = ref<OptionData[]>([]);
const typeId = ref<string | undefined>("");
const typeOptionsMain = ref<OptionData[]>([]);
const typeOptionsAdd = ref<OptionData[]>([]);
/** รายการข้อมูลประเภทใบลา */
const options = ref<OptionData[]>([])
const options = ref<OptionData[]>([]);
/**
* function
* @param data
@ -78,20 +85,20 @@ export const useLeaveStore = defineStore("Leave", () => {
name: "ทั้งหมด",
code: "LV-000",
},
]
];
const optionType = data.map((e: TypeLeave) => ({
id: e.id,
name: e.name,
code: e.code,
}))
}));
typeOptionsMain.value.push(...optionType)
typeOptions.value = typeOptionsMain.value
typeOptionsMain.value.push(...optionType);
typeOptions.value = typeOptionsMain.value;
typeOptionsAdd.value = []
typeOptionsAdd.value.push(...optionType)
options.value = typeOptionsAdd.value
typeOptionsAdd.value = [];
typeOptionsAdd.value.push(...optionType);
options.value = typeOptionsAdd.value;
}
/** สถานะของการลา */
@ -103,8 +110,8 @@ export const useLeaveStore = defineStore("Leave", () => {
{ id: "APPROVE", name: "อนุมัติ " },
{ id: "REJECT", name: "ไม่อนุมัติ" },
{ id: "DELETE", name: "ยกเลิก" },
])
const statusOptions = ref<any[]>(statusOptionsMain.value)
]);
const statusOptions = ref<any[]>(statusOptionsMain.value);
/**
* function Option
@ -115,19 +122,23 @@ export const useLeaveStore = defineStore("Leave", () => {
function filterOption(val: any, update: Function, refData: string) {
switch (refData) {
case "LeaveTypeOption":
type.value = ''
type.value = "";
update(() => {
typeOptions.value = typeOptionsMain.value.filter((v: any) => v.name.indexOf(val) > -1)
})
break
typeOptions.value = typeOptionsMain.value.filter(
(v: any) => v.name.indexOf(val) > -1
);
});
break;
case "LeaveStatusOption":
status.value = ''
status.value = "";
update(() => {
statusOptions.value = statusOptionsMain.value.filter((v: any) => v.name.indexOf(val) > -1)
})
break
statusOptions.value = statusOptionsMain.value.filter(
(v: any) => v.name.indexOf(val) > -1
);
});
break;
default:
break
break;
}
}
@ -135,16 +146,22 @@ export const useLeaveStore = defineStore("Leave", () => {
const optionsSpecific = ref<OptionData[]>([
{ id: "s1", name: "ลาไปศึกษาต่อ", code: "s1" },
{ id: "s2", name: "ลาฝึกอบรม/ปฎิบัติการวิจัย/ดูงาน", code: "s2" },
])
]);
/** รายการประเภทการลาของ ลาอุปสมบทหรือลาประกอบพิธีฮัจญ์*/
const optionsOrdination = ref<OptionData[]>([
{ id: "b1", name: "ลาอุปสมบท", code: "b1" },
{ id: "b2", name: "ลาประกอบพิธีฮัจญ์", code: "b2" },
])
]);
/** data table filter & column ของรายการลา */
const visibleColumns = ref<string[]>(["no", "leaveTypeName", "dateSendLeave", "status", "dateLeave"])
const visibleColumns = ref<string[]>([
"no",
"leaveTypeName",
"dateSendLeave",
"status",
"dateLeave",
]);
const columns = ref<QTableProps["columns"]>([
{
@ -193,7 +210,7 @@ export const useLeaveStore = defineStore("Leave", () => {
headerStyle: "font-size: 14px",
style: "font-size: 14px; width:10%;",
},
])
]);
/**
*
@ -203,13 +220,13 @@ export const useLeaveStore = defineStore("Leave", () => {
function typeConvert(item: string, subitem: any) {
// console.log('first',item)
// if (item !== "LV-006" && item !== "LV-008") {
typeLeave.value = convertSubtitle(item)
typeLeave.value = convertSubtitle(item);
// } else if (item === "LV-006") {
// typeLeave.value = convertSubtitleInfo(subitem);
// } else if (item === "LV-008") {
// typeLeave.value = convertSubtitleInfo2(subitem);
// }
typeId.value = convertId(item)
typeId.value = convertId(item);
}
/**
@ -218,7 +235,7 @@ export const useLeaveStore = defineStore("Leave", () => {
* @returns
*/
function convertSubtitle(val: string) {
return options.value.find(x => x.code == val)?.name
return options.value.find((x) => x.code == val)?.name;
}
/**
@ -227,7 +244,7 @@ export const useLeaveStore = defineStore("Leave", () => {
* @returns
*/
function convertSubtitleInfo(val: string) {
return optionsOrdination.value.find(x => x.id == val)?.name
return optionsOrdination.value.find((x) => x.id == val)?.name;
}
/**
@ -236,7 +253,7 @@ export const useLeaveStore = defineStore("Leave", () => {
* @returns
*/
function convertSubtitleInfo2(val: string) {
return optionsSpecific.value.find(x => x.id == val)?.name
return optionsSpecific.value.find((x) => x.id == val)?.name;
}
/**
@ -245,107 +262,113 @@ export const useLeaveStore = defineStore("Leave", () => {
* @returns
*/
function convertId(val: string) {
return options.value.find(x => x.code == val)?.id
return options.value.find((x) => x.code == val)?.id;
}
/**
* profile
*/
const dateSendLeave = ref<Date>() //วันที่ยื่นใบลา
const leaveTypeName = ref<string>("") //Name ประเภทการลา
const dear = ref<string>("") //เรียน
const fullName = ref<string>("") //คำนำหน้า ชื่อ นามสกุล ผู้ยื่นขอ
const positionName = ref<string>("") //ตำแหน่งผู้ยื่นขอ
const positionLevelName = ref<string>("") //ระดับผู้ยื่นขอ
const organizationName = ref<string>("") //สังกัดผู้ยื่นขอ
const leaveLimit = ref<number>(0) //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const leaveTotal = ref<number>(0) //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const leaveRemain = ref<number>(0) //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const restDayTotalOld = ref<number>(0) //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา
const birthDate = ref<Date>() //วันเกิด
const dateAppoint = ref<Date>() //วันที่เข้ารับราชการ
const salary = ref<number>(0) //เงินเดือนปัจจุบัน
const salaryText = ref<string>("") //เงินเดือนปัจจุบัน(ภาษาไทย)
const leaveLast = ref<any>()
const restDayCurrentTotal = ref<number>(0)
const dateSendLeave = ref<Date>(); //วันที่ยื่นใบลา
const leaveTypeName = ref<string>(""); //Name ประเภทการลา
const dear = ref<string>(""); //เรียน
const fullName = ref<string>(""); //คำนำหน้า ชื่อ นามสกุล ผู้ยื่นขอ
const positionName = ref<string>(""); //ตำแหน่งผู้ยื่นขอ
const positionLevelName = ref<string>(""); //ระดับผู้ยื่นขอ
const organizationName = ref<string>(""); //สังกัดผู้ยื่นขอ
const leaveLimit = ref<number>(0); //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const leaveTotal = ref<number>(0); //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const leaveRemain = ref<number>(0); //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const restDayTotalOld = ref<number>(0); //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา
const birthDate = ref<Date>(); //วันเกิด
const dateAppoint = ref<Date>(); //วันที่เข้ารับราชการ
const salary = ref<number>(0); //เงินเดือนปัจจุบัน
const salaryText = ref<string>(""); //เงินเดือนปัจจุบัน(ภาษาไทย)
const leaveLast = ref<any>();
const restDayCurrentTotal = ref<number>(0);
//ดึงข้อมูล profile จาก API
async function fetchProfile() {
await http
.post(config.API.leaveProfile(), { type: typeId.value })
.then((res: any) => {
const data = res.data.result
dateSendLeave.value = data.dateSendLeave
leaveTypeName.value = data.leaveTypeName
dear.value = data.dear
fullName.value = data.fullName
positionName.value = data.positionName
positionLevelName.value = data.positionLevelName
organizationName.value = data.organizationName
leaveLimit.value = data.leaveLimit
leaveTotal.value = data.leaveTotal
leaveRemain.value = data.leaveRemain
restDayTotalOld.value = data.restDayTotalOld
birthDate.value = data.birthDate
dateAppoint.value = data.dateAppoint
salary.value = data.salary ? data.salary.toLocaleString("th-TH") : ""
salaryText.value = data.salaryText
leaveLast.value = data.leaveLast != "0001-01-01T00:00:00" ? date2Thai(data.leaveLast) : "-"
restDayCurrentTotal.value = Number(data.leaveLimit) - Number(data.restDayTotalOld)
const data = res.data.result;
dateSendLeave.value = data.dateSendLeave;
leaveTypeName.value = data.leaveTypeName;
dear.value = data.dear;
fullName.value = data.fullName;
positionName.value = data.positionName;
positionLevelName.value = data.positionLevelName;
organizationName.value = data.organizationName;
leaveLimit.value = data.leaveLimit;
leaveTotal.value = data.leaveTotal;
leaveRemain.value = data.leaveRemain;
restDayTotalOld.value = data.restDayTotalOld;
birthDate.value = data.birthDate;
dateAppoint.value = data.dateAppoint;
salary.value = data.salary ? data.salary.toLocaleString("th-TH") : "";
salaryText.value = data.salaryText;
leaveLast.value =
data.leaveLast != "0001-01-01T00:00:00"
? date2Thai(data.leaveLast)
: "-";
restDayCurrentTotal.value =
Number(data.leaveLimit) - Number(data.restDayTotalOld);
})
.catch((e: any) => {
messageError($q, e)
})
messageError($q, e);
});
}
async function fetchProfileOld(data: any) {
await http
.post(config.API.leaveProfile(), { type: typeId.value })
.then((res: any) => {
const data = res.data.result
leaveLimit.value = data.leaveLimit
leaveTotal.value = data.leaveTotal
leaveRemain.value = data.leaveRemain
restDayTotalOld.value = data.restDayTotalOld //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา
birthDate.value = data.birthDate // วันเกิด
dateAppoint.value = data.dateAppoint // วันที่รับราชการ
salary.value = data.salary ? data.salary.toLocaleString("th-TH") : ""
salaryText.value = data.salaryText
restDayCurrentTotal.value = Number(data.leaveLimit) - Number(data.restDayTotalOld)
const data = res.data.result;
leaveLimit.value = data.leaveLimit;
leaveTotal.value = data.leaveTotal;
leaveRemain.value = data.leaveRemain;
restDayTotalOld.value = data.restDayTotalOld; //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา
birthDate.value = data.birthDate; // วันเกิด
dateAppoint.value = data.dateAppoint; // วันที่รับราชการ
salary.value = data.salary ? data.salary.toLocaleString("th-TH") : "";
salaryText.value = data.salaryText;
restDayCurrentTotal.value =
Number(data.leaveLimit) - Number(data.restDayTotalOld);
})
.catch((e: any) => {
messageError($q, e)
})
messageError($q, e);
});
dateSendLeave.value = data.dateSendLeave
typeLeave.value = data.leaveTypeName
dear.value = data.dear
fullName.value = data.fullName
positionName.value = data.positionName
positionLevelName.value = data.positionLevelName
organizationName.value = data.organizationName
leaveLast.value = data.leaveLast != "0001-01-01T00:00:00" ? date2Thai(data.leaveLast) : "-"
restDayCurrentTotal.value = data.restDayCurrentTotal
dateSendLeave.value = data.dateSendLeave;
typeLeave.value = data.leaveTypeName;
dear.value = data.dear;
fullName.value = data.fullName;
positionName.value = data.positionName;
positionLevelName.value = data.positionLevelName;
organizationName.value = data.organizationName;
leaveLast.value =
data.leaveLast != "0001-01-01T00:00:00" ? date2Thai(data.leaveLast) : "-";
restDayCurrentTotal.value = data.restDayCurrentTotal;
}
function resetForm2() {
dateSendLeave.value = undefined
leaveTypeName.value = ""
dear.value = ""
fullName.value = ""
positionName.value = ""
positionLevelName.value = ""
organizationName.value = ""
leaveLimit.value = 0
leaveTotal.value = 0
leaveRemain.value = 0
restDayTotalOld.value = 0
birthDate.value = undefined
dateAppoint.value = undefined
salary.value = 0
salaryText.value = ""
leaveLast.value = undefined
restDayCurrentTotal.value = 0
dateSendLeave.value = undefined;
leaveTypeName.value = "";
dear.value = "";
fullName.value = "";
positionName.value = "";
positionLevelName.value = "";
organizationName.value = "";
leaveLimit.value = 0;
leaveTotal.value = 0;
leaveRemain.value = 0;
restDayTotalOld.value = 0;
birthDate.value = undefined;
dateAppoint.value = undefined;
salary.value = 0;
salaryText.value = "";
leaveLast.value = undefined;
restDayCurrentTotal.value = 0;
}
return {
@ -396,6 +419,6 @@ export const useLeaveStore = defineStore("Leave", () => {
type,
typeOptionsMain,
status,
statusOptionsMain
}
})
statusOptionsMain,
};
});

View file

@ -158,7 +158,8 @@ onMounted(async () => {
ไมอม
</q-item-section>
</q-item>
</template></q-select>
</template></q-select
>
</div>
<div class="row q-mt-sm">

View file

@ -152,7 +152,9 @@ async function fetchDataDetail(id: string) {
formData.leaveSalary = data.leaveSalary ?? "-";
formData.leaveSalaryText = data.leaveSalaryText ?? "-";
formData.wifeDayName = data.wifeDayName ?? "-";
formData.wifeDayDateBorn = data.wifeDayDateBorn ? data.wifeDayDateBorn:null;
formData.wifeDayDateBorn = data.wifeDayDateBorn
? data.wifeDayDateBorn
: null;
formData.restDayOldTotal = data.restDayOldTotal ?? "-";
formData.restDayCurrentTotal = data.restDayCurrentTotal ?? "-";
formData.ordainDayStatus = data.ordainDayStatus;

View file

@ -261,8 +261,9 @@ watch(props, () => {
</div>
</div>
ประเมนทำการอปโหลดเอกสารเล 2
โดยมระยะเวลาการสงผลงานหลงจากประกาศบนเวบไซตแล 6 เดอน<br/>
กรณจะเกษยณอายราชการใหงผลงาน อนวนทจะเกษยณอายราชการไมอยกว 90
โดยมระยะเวลาการสงผลงานหลงจากประกาศบนเวบไซตแล 6 เดอน<br />
กรณจะเกษยณอายราชการใหงผลงาน
อนวนทจะเกษยณอายราชการไมอยกว 90
</q-card-actions>
</q-card>
</q-carousel-slide>

View file

@ -103,7 +103,7 @@ onMounted(async () => {
:active="selectedItem === 1 ? true : false"
active-class="text-primary"
@click="handleItemClick(1)"
class=" cursor-pointer"
class="cursor-pointer"
>
<q-item-section>แบบพจารณาคณสมบคคล</q-item-section>
</q-item>
@ -113,7 +113,7 @@ onMounted(async () => {
:active="selectedItem === 2 ? true : false"
active-class="text-primary"
@click="handleItemClick(2)"
class=" cursor-pointer"
class="cursor-pointer"
>
<q-item-section>แบบแสดงรายละเอยดการเสนอผลงาน</q-item-section>
</q-item>
@ -123,7 +123,7 @@ onMounted(async () => {
:active="selectedItem === 3 ? true : false"
active-class="text-primary"
@click="handleItemClick(3)"
class=" cursor-pointer"
class="cursor-pointer"
>
<q-item-section
>แบบตรวจสอบความถกตองครบถวนของขอมลเพอประกอบการคดเลอกบคคล
@ -136,7 +136,7 @@ onMounted(async () => {
:active="selectedItem === 4 ? true : false"
active-class="text-primary"
@click="handleItemClick(4)"
class=" cursor-pointer"
class="cursor-pointer"
>
<q-item-section> แบบประเมนคณลกษณะบคคล </q-item-section>
</q-item>
@ -146,7 +146,7 @@ onMounted(async () => {
:active="selectedItem === 5 ? true : false"
active-class="text-primary"
@click="handleItemClick(5)"
class=" cursor-pointer"
class="cursor-pointer"
>
<q-item-section>
แบบสรปขอมลของผขอรบการคดเลอก (เอกสารหมายเลข 9)
@ -158,7 +158,7 @@ onMounted(async () => {
:active="selectedItem === 6 ? true : false"
active-class="text-primary"
@click="handleItemClick(6)"
class=" cursor-pointer"
class="cursor-pointer"
>
<q-item-section> ผลงานทจะสงประเม (เอกสารหมายเลข 11) </q-item-section>
</q-item>

View file

@ -83,7 +83,7 @@ onMounted(async () => {
v-ripple
:active="selectedItem === 1 ? true : false"
active-class="text-primary"
class=" cursor-pointer"
class="cursor-pointer"
>
<q-item-section>เอกสารเล 2</q-item-section>
</q-item>

View file

@ -12,7 +12,7 @@ import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin();
const $q = useQuasar();
const route = useRoute();
const router = useRouter()
const router = useRouter();
const evaluateId = ref<string>(route.params.id.toString());
@ -31,11 +31,13 @@ function copyLink() {
<template>
<div class="row q-pa-md">
<div class="col-12 row items-center justify-center">
<div class="row"><strong>Public URL : </strong>
<a :href="`${link}/${evaluateId}`" class="q-pl-sm"> {{link}}/{{ evaluateId }}
<div class="row">
<strong>Public URL : </strong>
<a :href="`${link}/${evaluateId}`" class="q-pl-sm">
{{ link }}/{{ evaluateId }}
</a>
</div>
<q-space/>
<q-space />
<q-btn
outline
icon="mdi-content-copy"
@ -43,7 +45,8 @@ function copyLink() {
color="primary"
@click="copyLink"
>
<q-tooltip> ดลอกลงก </q-tooltip></q-btn>
<q-tooltip> ดลอกลงก </q-tooltip></q-btn
>
</div>
</div>
</template>

View file

@ -123,7 +123,7 @@ watch(
<q-card style="width: 700px; max-width: 80vw">
<HeaderDialog :tittle="'ประวัติการประเมิน'" :close="props.close" />
<q-separator />
<q-card-section >
<q-card-section>
<div class="col-xs-12 col-sm-12 col-md-12 row q-col-gutter-md">
<div class="col-12">
<q-table

View file

@ -163,7 +163,6 @@ function backPage() {
</div>
</template>
</q-splitter>
</template>
<style scoped></style>

View file

@ -16,13 +16,13 @@ const props = defineProps({
const modalPerview = ref<boolean>(false);
const store = useEvaluateStore();
const tabPanels = store.tabPanels
const tabPanels = store.tabPanels;
</script>
<template>
<q-card bordered class="col-12 row shadow-0" >
<div class="col-12 row items-center q-pa-sm ">
<div class="q-pl-sm text-weight-medium" >เอกสารทปโหลด</div>
<q-card bordered class="col-12 row shadow-0">
<div class="col-12 row items-center q-pa-sm">
<div class="q-pl-sm text-weight-medium">เอกสารทปโหลด</div>
<q-space />
<q-btn
flat
@ -46,7 +46,13 @@ const tabPanels = store.tabPanels
</div>
<div class="col-12"><q-separator /></div>
<q-tab-panels v-model="store.tabPanels" animated swipeable vertical class="col-12 row">
<q-tab-panels
v-model="store.tabPanels"
animated
swipeable
vertical
class="col-12 row"
>
<q-tab-panel name="1">
<ViewPDF :pdfSrc="props.pdfSrc" class="col-12" />
</q-tab-panel>

View file

@ -16,9 +16,9 @@ const modalPerview = ref<boolean>(false);
</script>
<template>
<q-card bordered class="col-12 row shadow-0" >
<div class="col-12 row items-center q-pa-sm ">
<div class="q-pl-sm text-weight-medium" >เอกสารทปโหลด</div>
<q-card bordered class="col-12 row shadow-0">
<div class="col-12 row items-center q-pa-sm">
<div class="q-pl-sm text-weight-medium">เอกสารทปโหลด</div>
<q-space />
<q-btn
flat

View file

@ -192,7 +192,7 @@ export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => {
sortable: true,
field: "yearly",
format(val, row) {
return row.yearly + 543
return row.yearly + 543;
},
headerStyle: "font-size: 14px",
style: "font-size: 14px",

View file

@ -1,8 +1,6 @@
interface DataOption {
id:string
name:string
id: string;
name: string;
}
export type {
DataOption
}
export type { DataOption };

View file

@ -8,7 +8,4 @@ interface MyObjectAppealRef {
[key: string]: any;
}
export type {
MyObjectAppealRef
}
export type { MyObjectAppealRef };

View file

@ -1,68 +1,71 @@
interface FormType {
status: string
type: string
year: number
status: string;
type: string;
year: number;
}
interface RowList {
id: string
title: string
description: string
status: string
type: string
year: number
caseType: string
caseNumber: string
fullname: string
citizenId: string
profileId: string
lastUpdatedAt: string | null
id: string;
title: string;
description: string;
status: string;
type: string;
year: number;
caseType: string;
caseNumber: string;
fullname: string;
citizenId: string;
profileId: string;
lastUpdatedAt: string | null;
}
interface MainList {
id: string
title: string
description: string
status: string
type: string
year: number
caseType: string
caseNumber: string
fullname: string
citizenId: string
profileId: string
lastUpdatedAt: Date
id: string;
title: string;
description: string;
status: string;
type: string;
year: number;
caseType: string;
caseNumber: string;
fullname: string;
citizenId: string;
profileId: string;
lastUpdatedAt: Date;
}
interface EditDataList {
id: string
title: string
description: string
status: string
type: string
year: number
caseType: string
caseNumber: string
fullname: string
citizenId: string
profileId: string
lastUpdatedAt: string
historyStatus: object | null
disciplineComplaint_Appeal_Docs: object | null
id: string;
title: string;
description: string;
status: string;
type: string;
year: number;
caseType: string;
caseNumber: string;
fullname: string;
citizenId: string;
profileId: string;
lastUpdatedAt: string;
historyStatus: object | null;
disciplineComplaint_Appeal_Docs: object | null;
}
interface HistoryStatusType {
status: string
createdAt: string
status: string;
createdAt: string;
}
interface FileObType {
id: string
pathName: string
fileName: string
id: string;
pathName: string;
fileName: string;
}
export type {
FormType, RowList, MainList, EditDataList,
FormType,
RowList,
MainList,
EditDataList,
HistoryStatusType,
FileObType
}
FileObType,
};

View file

@ -1,15 +1,16 @@
import { defineStore } from "pinia";
import { ref } from 'vue'
import { ref } from "vue";
import { useCounterMixin } from "@/stores/mixin";
import type { DataOption } from "@/modules/07_appealComplain/interface/index/main";
import type { QTableProps } from "quasar";
import type { RowList, MainList } from '@/modules/07_appealComplain/interface/response/mainType'
import type {
RowList,
MainList,
} from "@/modules/07_appealComplain/interface/response/mainType";
export const useAppealComplainStore = defineStore("appealComplainStore", () => {
const mixin = useCounterMixin()
const { date2Thai } = mixin
const mixin = useCounterMixin();
const { date2Thai } = mixin;
const rows = ref<RowList[]>([]);
const visibleColumns = ref<string[]>([]);
@ -53,7 +54,7 @@ export const useAppealComplainStore = defineStore("appealComplainStore", () => {
rows.value = dataList;
}
/**
/**
* text
* @param val status
* @returns
@ -74,7 +75,7 @@ export const useAppealComplainStore = defineStore("appealComplainStore", () => {
* @param val status
* @returns
*/
function statusTothai(val: string){
function statusTothai(val: string) {
switch (val) {
case "NEW":
return "ใหม่";
@ -93,7 +94,7 @@ export const useAppealComplainStore = defineStore("appealComplainStore", () => {
default:
return "-";
}
};
}
return {
visibleColumns,
@ -102,7 +103,6 @@ export const useAppealComplainStore = defineStore("appealComplainStore", () => {
rows,
typeOptions,
statusOptions,
statusTothai
statusTothai,
};
});

View file

@ -423,16 +423,15 @@ function onSubmit(data: any) {
</q-card>
</div>
</div>
<q-separator v-if="!isReadOnly"/>
<q-card-actions align="right" class="bg-white text-teal" v-if="!isReadOnly">
<q-btn
id="onSubmit"
type="submit"
label="บันทึก"
color="secondary"
<q-separator v-if="!isReadOnly" />
<q-card-actions
align="right"
class="bg-white text-teal"
v-if="!isReadOnly"
>
<q-btn id="onSubmit" type="submit" label="บันทึก" color="secondary"
><q-tooltip>นท</q-tooltip></q-btn
>
</q-card-actions>
</q-card>
</form>

View file

@ -993,9 +993,13 @@ const title = computed(() => {
</div>
</div>
</q-card-section>
<q-separator v-if="!checkDetail"/>
<q-separator v-if="!checkDetail" />
<q-card-actions v-if="!checkDetail" align="right" class="bg-white text-teal">
<q-card-actions
v-if="!checkDetail"
align="right"
class="bg-white text-teal"
>
<q-btn label="บันทึก" color="secondary" type="submit"
><q-tooltip>นทกขอม</q-tooltip></q-btn
>

View file

@ -574,9 +574,15 @@ watch(
</div>
</div>
</q-card-section>
<q-separator v-if="competencyType !== 'HEAD' && competencyType !== 'GROUP'"/>
<q-separator
v-if="competencyType !== 'HEAD' && competencyType !== 'GROUP'"
/>
<q-card-actions v-if="competencyType !== 'HEAD' && competencyType !== 'GROUP'" align="right" class="bg-white text-teal">
<q-card-actions
v-if="competencyType !== 'HEAD' && competencyType !== 'GROUP'"
align="right"
class="bg-white text-teal"
>
<q-btn label="บันทึก" color="secondary" type="submit"
><q-tooltip>นทกขอม</q-tooltip></q-btn
>

View file

@ -53,7 +53,10 @@ watch(
<template>
<q-dialog v-model="modal" persistent>
<q-card class="col-12" style="width: 85%">
<DialogHeader :tittle="`พฤติกรรมที่คาดหวัง/พฤติกรรมย่อย`" :close="closeDialog" />
<DialogHeader
:tittle="`พฤติกรรมที่คาดหวัง/พฤติกรรมย่อย`"
:close="closeDialog"
/>
<q-separator />
<q-card-section class="q-pa-sm scroll" style="max-height: 80vh">

View file

@ -10,9 +10,8 @@ const modal = defineModel<boolean>("modal", { required: true });
const rows = defineModel<any>("rows", { required: true });
const dataRows = ref<any[]>([]);
const visibleColumns = ref<String[]>([ "description"]);
const visibleColumns = ref<String[]>(["description"]);
const columns = ref<QTableProps["columns"]>([
{
name: "description",
align: "left",
@ -30,13 +29,15 @@ function closeDialog() {
rows.value = [];
dataRows.value = [];
}
</script>
<template>
<q-dialog v-model="modal" persistent>
<q-card class="col-12" style="width: 85%">
<DialogHeader :tittle="`ข้อมูลพฤติกรรมที่คาดหวัง/พฤติกรรมย่อย`" :close="closeDialog" />
<DialogHeader
:tittle="`ข้อมูลพฤติกรรมที่คาดหวัง/พฤติกรรมย่อย`"
:close="closeDialog"
/>
<q-separator />
<q-card-section class="q-pa-sm scroll" style="max-height: 80vh">

View file

@ -16,7 +16,9 @@ const $q = useQuasar();
const dataList = ref<ListCriteria[]>([]);
const { showLoader, hideLoader, messageError } = useCounterMixin();
const modal = defineModel<boolean>("modal", { required: true });
const dataListCriteria = defineModel<ListCriteria[]>("dataListCriteria", { required: true });
const dataListCriteria = defineModel<ListCriteria[]>("dataListCriteria", {
required: true,
});
function close() {
modal.value = false;
@ -38,9 +40,11 @@ function close() {
</div>
<q-separator />
<div v-for="(item, index) in dataListCriteria" :key="item.id">
<div :class="`row q-pa-sm ${index %2 !== 0 && 'bg-grey-2'}`">
<div :class="`row q-pa-sm ${index % 2 !== 0 && 'bg-grey-2'}`">
<div class="col-8"><span v-html="item.description"></span></div>
<div class="col-4 text-center self-center text-body1 text-weight-bold">
<div
class="col-4 text-center self-center text-body1 text-weight-bold"
>
<span>{{ item.level }}</span>
</div>
</div>

View file

@ -38,7 +38,7 @@ function close() {
function getData() {
showLoader();
http
.get(config.API.orgPosition+`/${store.dataProfile.profileId}`)
.get(config.API.orgPosition + `/${store.dataProfile.profileId}`)
.then((res) => {
const data = res.data.result.isProbation;
work.value = data;

View file

@ -111,8 +111,8 @@ const columns = ref<QTableProps["columns"]>([
const visibleColumns = ref<string[]>(
store.tabOpen === 3 && store.tabMain === "3"
? ['no',"name", "develop", "target", "achievement", "summary"]
: ['no',"name", "develop", "target"]
? ["no", "name", "develop", "target", "achievement", "summary"]
: ["no", "name", "develop", "target"]
);
function onAdd() {

View file

@ -20,4 +20,4 @@ interface ProjectYearOp {
projectName: string;
}
export type { DataOptions, Pagination, DataOptionTechnique,ProjectYearOp };
export type { DataOptions, Pagination, DataOptionTechnique, ProjectYearOp };

View file

@ -58,7 +58,7 @@ interface FormCommentByRole {
topic: string;
reason: string;
createdFullName: string;
score:string
score: string;
reasonEvaluator: string;
reasonCommander: string;
reasonCommanderHigh: string;

View file

@ -4,7 +4,8 @@
const KPIPage = () => import("@/modules/08_KPI/views/main.vue");
const FormPage = () => import("@/modules/08_KPI/views/form.vue");
const KPIMainEvaluator = () => import("@/modules/08_KPI/views/mainEvaluator.vue");
const KPIMainEvaluator = () =>
import("@/modules/08_KPI/views/mainEvaluator.vue");
export default [
{

View file

@ -1,8 +1,6 @@
interface DataOptions {
id:string
name:string
id: string;
name: string;
}
export type {
DataOptions
}
export type { DataOptions };

View file

@ -61,9 +61,9 @@ interface FormsSholarship {
totalPeriod: string; //รวมระยะเวลาในการศึกษา/รวมระยะเวลาในการฝึกอบรม
planType: string; // INPLAN ในแผนฯ, OUTPLAN นอกแผนฯ
isNoUseBudget: boolean; //
}
}
interface DataSholarship {
interface DataSholarship {
rank: string; //ยศ
prefix: string; //คำนำหน้าชื่อ
firstName: string; //ชื่อ
@ -126,7 +126,6 @@ interface FormsSholarship {
status: string;
planType: string; // INPLAN ในแผนฯ, OUTPLAN นอกแผนฯ
isNoUseBudget: boolean; // ไม่ใช้งบประมาณ
}
export type { FormsSholarship,DataSholarship };
}
export type { FormsSholarship, DataSholarship };

View file

@ -3,7 +3,8 @@
*/
const scholarshipPage = () => import("@/modules/09_scholarship/views/main.vue");
const scholarshipDetail = () => import('@/modules/09_scholarship/views/detail.vue')
const scholarshipDetail = () =>
import("@/modules/09_scholarship/views/detail.vue");
export default [
{
path: "/scholarship",

View file

@ -10,4 +10,4 @@ interface NewPagination {
sortBy: string;
}
export type { DataOption,NewPagination };
export type { DataOption, NewPagination };

View file

@ -13,7 +13,8 @@ const registryOther = () => import("@/modules/10_registry/tabs/05_other.vue");
/**
*
*/
const requestEditMain = () => import("@/modules/10_registry/views/requestEditMain.vue");
const requestEditMain = () =>
import("@/modules/10_registry/views/requestEditMain.vue");
export default [
{

View file

@ -1,14 +1,15 @@
import { defineStore } from "pinia";
import type { DataOptionInsignia, ResponseObject } from '@/modules/10_registry/interface/index/Achievement'
import type {
DataOptionInsignia,
ResponseObject,
} from "@/modules/10_registry/interface/index/Achievement";
import { ref } from "vue";
export const useRegistryInFormationStore = defineStore(
"registryInFormationStore",
() => {
const typeProfile = ref<string>("OFFICER");
const profileId = ref<string>('')
const profileId = ref<string>("");
function typeChangeName(val: string) {
switch (val) {
@ -28,6 +29,6 @@ export const useRegistryInFormationStore = defineStore(
return "-";
}
}
return { typeChangeName, typeProfile,profileId};
return { typeChangeName, typeProfile, profileId };
}
);

View file

@ -10,7 +10,6 @@ import Educations from "@/modules/10_registry/01_Information/05_Educations.vue";
import Ability from "@/modules/10_registry/01_Information/06_Ability.vue";
const router = useRouter();
</script>
<template>
<div v-if="!$q.screen.gt.xs" class="col-xs-12 col-sm-12 col-md-11">

View file

@ -7,9 +7,7 @@ import Discipline from "@/modules/10_registry/02_Government/02_Discipline.vue";
import Leave from "@/modules/10_registry/02_Government/03_Leave.vue";
import Duty from "@/modules/10_registry/02_Government/04_Duty.vue";
const router = useRouter();
</script>
<template>
<div v-if="!$q.screen.gt.xs" class="col-xs-12 col-sm-12 col-md-11">

View file

@ -5,9 +5,7 @@ import { useRouter } from "vue-router";
import Salary from "@/modules/10_registry/03_Salary/01_Salary.vue";
import Nopaid from "@/modules/10_registry/03_Salary/02_Nopaid.vue";
const router = useRouter();
</script>
<template>
<div v-if="!$q.screen.gt.xs" class="col-xs-12 col-sm-12 col-md-11">
@ -29,7 +27,6 @@ const router = useRouter();
<div :class="`row q-my-sm ${$q.screen.gt.xs ? '' : 'mobileClass'}`">
<Salary />
<Nopaid />
</div>
</template>
<style scoped>

View file

@ -5,7 +5,6 @@ import { useRouter } from "vue-router";
import Other from "@/modules/10_registry/05_Other/01_Other.vue";
import File from "@/modules/10_registry/05_Other/02_File.vue";
const router = useRouter();
</script>
<template>

View file

@ -345,7 +345,7 @@ onMounted(() => {
<q-tooltip>นคำรองขอแกไขขอม</q-tooltip>
</q-btn>
</div>
<q-space v-if="$q.screen.gt.sm"/>
<q-space v-if="$q.screen.gt.sm" />
<div class="col-xs-12 col-md-2">
<q-input
v-model="keyword"

View file

@ -24,7 +24,15 @@ const knowledge = ref<any[]>([]);
const commander = ref<any>("");
const chairman = ref<any>("");
const mixin = useCounterMixin();
const { date2Thai, dateToISO, hideLoader, messageError,dialogConfirm,showLoader ,success} = mixin;
const {
date2Thai,
dateToISO,
hideLoader,
messageError,
dialogConfirm,
showLoader,
success,
} = mixin;
const date_start = ref<Date>();
const group = ref<any | null>(null);
const group2 = ref<any | null>(null);
@ -619,7 +627,7 @@ function filterFnChairman(val: string, update: any) {
* pop up confirm
* @param id personal id
*/
function saveEdit(id: string) {
function saveEdit(id: string) {
dialogConfirm($q, async () => await dataEdit(id));
}
@ -627,16 +635,15 @@ function filterFnChairman(val: string, update: any) {
* เชคขอมลกอนบนท
* @param id personal id
*/
async function saveData(id: string) {
async function saveData(id: string) {
dialogConfirm($q, async () => await DataSave(id));
}
/**
* update edit
* @param id personal id
*/
async function dataEdit(id: string) {
async function dataEdit(id: string) {
// await myForm.value.validate().then((result: boolean) => {
// if (result) {
showLoader();
@ -659,7 +666,7 @@ function filterFnChairman(val: string, update: any) {
/**
* @param id personal
*/
function putDataEdit(id: string) {
function putDataEdit(id: string) {
const GUID = profileId.value;
const assign_job = activityArray.value.map((item, index) => {
const activityDesc = activity_desc.value[index]?.trim();
@ -811,7 +818,7 @@ function filterFnChairman(val: string, update: any) {
/**
* @param id personal
*/
function putData(id: string) {
function putData(id: string) {
const GUID = profileId.value;
const assign_job = activityArray.value.map((item, index) => {
const activityDesc = activity_desc.value[index]?.trim();
@ -949,7 +956,7 @@ function filterFnChairman(val: string, update: any) {
* นท
* @param id personal id
*/
async function DataSave(id: string) {
async function DataSave(id: string) {
const data = putData(id);
await http
.post(config.API.saveFinish(id), data)
@ -969,7 +976,7 @@ function filterFnChairman(val: string, update: any) {
* download file
* @param type type file
*/
async function clickdownloadFile(type: string) {
async function clickdownloadFile(type: string) {
showLoader();
await http
.get(config.API.reportAssign(type, id.value), {
@ -994,7 +1001,7 @@ function filterFnChairman(val: string, update: any) {
* @param response ไฟล
* @param filename อไฟล
*/
function downloadFile(response: any, filename: string) {
function downloadFile(response: any, filename: string) {
const link = document.createElement("a");
var fileName = filename;
link.href = window.URL.createObjectURL(new Blob([response.data]));
@ -1005,7 +1012,7 @@ function filterFnChairman(val: string, update: any) {
}
onMounted(async () => {
await showLoader()
await showLoader();
await getUser();
await getAssignNew(profileId.value);
await getLaw(profileId.value);
@ -1016,7 +1023,7 @@ onMounted(async () => {
if (id.value !== undefined) {
await getAssign();
}
await hideLoader()
await hideLoader();
});
</script>
<template>
@ -1038,7 +1045,11 @@ onMounted(async () => {
<div>แบบมอบหมายงาน </div>
</div>
</div>
<q-form greedy @submit.prevent @validation-success="id !== undefined ? saveEdit(id) : saveData(profileId)">
<q-form
greedy
@submit.prevent
@validation-success="id !== undefined ? saveEdit(id) : saveData(profileId)"
>
<div
:class="
$q.screen.gt.xs
@ -1090,25 +1101,14 @@ onMounted(async () => {
</q-list>
</q-menu>
</q-btn>
<q-btn
flat
icon="edit"
dense
color="edit"
round
@click="edit"
<q-btn flat icon="edit" dense color="edit" round @click="edit">
<q-tooltip>แกไขขอม</q-tooltip></q-btn
>
<q-tooltip>แกไขขอม</q-tooltip></q-btn>
</div>
<div v-else>
<q-btn
flat
icon="mdi-undo"
dense
color="red"
round
@click="cancel"
><q-tooltip>ยกเล</q-tooltip></q-btn>
<q-btn flat icon="mdi-undo" dense color="red" round @click="cancel"
><q-tooltip>ยกเล</q-tooltip></q-btn
>
<q-btn
flat
icon="mdi-content-save-outline"
@ -1116,7 +1116,8 @@ onMounted(async () => {
color="public"
round
type="submit"
><q-tooltip>นทกขอม</q-tooltip></q-btn>
><q-tooltip>นทกขอม</q-tooltip></q-btn
>
</div>
</div>
@ -2810,7 +2811,11 @@ onMounted(async () => {
</div>
</div>
</div>
<div v-if="routeName == 'probationAdd'" class="full-width" align="right">
<div
v-if="routeName == 'probationAdd'"
class="full-width"
align="right"
>
<q-btn label="บันทึก" color="secondary" type="submit"
><q-tooltip>นทกขอม</q-tooltip></q-btn
>

View file

@ -85,14 +85,12 @@ onMounted(async () => {
</div>
</div>
<div v-else>
<ResultPage
:fullname="fullname"
v-model:dataArrayNumber="dataArrayNumber"
:fecthAssign="fecthAssign"
:data="evaluate.find((x: any) => x.no === dataArrayNumber)"
/>
</div>
</div>
</template>

View file

@ -1,6 +1,6 @@
<script setup lang="ts">
import { useQuasar } from "quasar";
import { ref,defineAsyncComponent,onMounted } from "vue";
import { ref, defineAsyncComponent, onMounted } from "vue";
import { useProbationStore } from "@/modules/11_probation/store/probation";
import { useRoute, useRouter } from "vue-router";
@ -9,12 +9,11 @@ import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";
import config from "@/app.config";
const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError, dialogConfirm, success } = mixin;
const Evaluacommander = defineAsyncComponent(
() => import("@/modules/11_probation/component/editPage/02_evaluacommander.vue")
() =>
import("@/modules/11_probation/component/editPage/02_evaluacommander.vue")
);
const router = useRouter();
const route = useRoute();
@ -28,16 +27,17 @@ const store = useProbationStore();
const $q = useQuasar();
const mode = ref<any>($q.screen.gt.xs);
function addData() {
router.push(`/probation/detail/addevaluacommander/${profileId.value}/${id.value}`);
router.push(
`/probation/detail/addevaluacommander/${profileId.value}/${id.value}`
);
}
/**
* get data
* @param id person id
*/
async function fecthAssign(id: string){
async function fecthAssign(id: string) {
showLoader();
await http
.get(config.API.formevaluateCommander(id))
@ -54,12 +54,11 @@ function addData() {
.finally(() => {
hideLoader();
});
};
}
onMounted(async () => {
await fecthAssign(id.value);
});
</script>
<template>
<div v-if="!$q.screen.gt.xs" class="col-xs-12 col-sm-12 col-md-11">
@ -89,11 +88,7 @@ onMounted(async () => {
</div>
</div>
<div v-else>
<Evaluacommander
/>
<Evaluacommander />
</div>
</div>
</template>

View file

@ -1,6 +1,6 @@
<script setup lang="ts">
import { useQuasar } from "quasar";
import { ref,defineAsyncComponent } from "vue";
import { ref, defineAsyncComponent } from "vue";
import { useProbationStore } from "@/modules/11_probation/store/probation";
import { useRoute, useRouter } from "vue-router";
@ -22,7 +22,6 @@ const mode = ref<any>($q.screen.gt.xs);
function addData() {
router.push(`/probation/detail/addevalua/${profileId.value}/${id.value}`);
}
</script>
<template>
<div v-if="!$q.screen.gt.xs" class="col-xs-12 col-sm-12 col-md-11">
@ -52,11 +51,7 @@ function addData() {
</div>
</div>
<div v-else>
<Evalua
/>
<Evalua />
</div>
</div>
</template>

View file

@ -1,6 +1,6 @@
<script setup lang="ts">
import { useQuasar } from "quasar";
import { ref,defineAsyncComponent } from "vue";
import { ref, defineAsyncComponent } from "vue";
import { useRoute, useRouter } from "vue-router";
import { useProbationStore } from "@/modules/11_probation/store/probation";
@ -19,7 +19,9 @@ const $q = useQuasar();
const mode = ref<any>($q.screen.gt.xs);
function addData() {
router.push(`/probation/detail/addevaluascore/${profileId.value}/${id.value}`);
router.push(
`/probation/detail/addevaluascore/${profileId.value}/${id.value}`
);
}
</script>
<template>
@ -50,10 +52,7 @@ function addData() {
</div>
</div>
<div v-else>
<Evaluascore
/>
<Evaluascore />
</div>
</div>
</template>

View file

@ -64,11 +64,10 @@ function onSubmit() {
dialogConfirm($q, async () => await postData("post"));
}
/** post/put data
* @param action post put
*/
async function postData(action: string) {
async function postData(action: string) {
const data = await {
start_date: date_start.value,
date_finish: date_finish.value,
@ -170,7 +169,7 @@ async function fecthAssign(id: string) {
showLoader();
await http
.get(config.API.evaluateReportcreate(id))
.then(async(res) => {
.then(async (res) => {
assign.value = res.data.data.assign;
person.value = res.data.data.person;
mentors.value = res.data.data.mentors;
@ -527,7 +526,9 @@ onMounted(async () => {
lazy-rules
label="ความเห็นของผู้มีอํานาจสั่งบรรจุตามมาตรา 52"
:rules="[
(val) => (!!val && val.length > 0) || 'กรุณาความเห็นของผู้มีอํานาจสั่งบรรจุตามมาตรา 52',
(val) =>
(!!val && val.length > 0) ||
'กรุณาความเห็นของผู้มีอํานาจสั่งบรรจุตามมาตรา 52',
]"
/>
</div>
@ -719,7 +720,6 @@ onMounted(async () => {
<q-btn label="บันทึก" color="secondary" type="submit"
><q-tooltip>นทกขอม</q-tooltip></q-btn
>
</div>
</div>
</q-form>

View file

@ -16,7 +16,7 @@ const route = useRoute();
const status = ref<boolean>(false);
const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError, dialogConfirm,success } = mixin;
const { showLoader, hideLoader, messageError, dialogConfirm, success } = mixin;
const id = ref<string>(route.params.id as string);
const $q = useQuasar();
const mode = ref<any>($q.screen.gt.xs);
@ -38,12 +38,12 @@ function onSubmit() {
})
.then((res) => {
success($q, "บันทึกสำเร็จ");
getData()
}).catch((e)=>{
messageError($q,e)
}).finally(()=>{
getData();
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {});
});
}
}

View file

@ -128,7 +128,7 @@
<div v-else class="col-12">
<div class="row q-col-gutter-sm">
<div class="col-12">
<q-card bordered style="border-radius: 20px;">
<q-card bordered style="border-radius: 20px">
<div class="q-pa-sm text-center bg-blue-1">
<span class="text-weight-medium">
<i
@ -141,7 +141,7 @@
</div>
<q-separator />
<q-card-section class="q-pa-none">
<q-list >
<q-list>
<q-item class="q-pa-none text-center">
<q-item-section>
<q-item-label>ำกวาความคาดหวงมาก</q-item-label>
@ -156,7 +156,7 @@
</q-card>
</div>
<div class="col-12">
<q-card bordered style="border-radius: 20px;">
<q-card bordered style="border-radius: 20px">
<div class="q-pa-sm text-center bg-blue-1">
<span class="text-weight-medium">
<i
@ -175,7 +175,7 @@
</div>
<q-separator />
<q-card-section class="q-pa-none">
<q-list >
<q-list>
<q-item class="q-pa-none text-center">
<q-item-section>
<q-item-label>ำกวาความคาดหวงคอนขางมาก</q-item-label>
@ -190,7 +190,7 @@
</q-card>
</div>
<div class="col-12">
<q-card bordered style="border-radius: 20px;">
<q-card bordered style="border-radius: 20px">
<div class="q-pa-sm text-center bg-blue-1">
<span class="text-weight-medium">
<i
@ -215,7 +215,7 @@
</div>
<q-separator />
<q-card-section class="q-pa-none">
<q-list >
<q-list>
<q-item class="q-pa-none text-center">
<q-item-section>
<q-item-label>เปนไปตามความคาดหว</q-item-label>
@ -230,7 +230,7 @@
</q-card>
</div>
<div class="col-12">
<q-card bordered style="border-radius: 20px;">
<q-card bordered style="border-radius: 20px">
<div class="q-pa-sm text-center bg-blue-1">
<span class="text-weight-medium">
<i
@ -261,7 +261,7 @@
</div>
<q-separator />
<q-card-section class="q-pa-none">
<q-list >
<q-list>
<q-item class="q-pa-none text-center">
<q-item-section>
<q-item-label>งวาความคาดหวงคอนขางมาก</q-item-label>
@ -276,7 +276,7 @@
</q-card>
</div>
<div class="col-12">
<q-card bordered style="border-radius: 20px;">
<q-card bordered style="border-radius: 20px">
<div class="q-pa-sm text-center bg-blue-1">
<span class="text-weight-medium">
<i
@ -313,7 +313,7 @@
</div>
<q-separator />
<q-card-section class="q-pa-none">
<q-list >
<q-list>
<q-item class="q-pa-none text-center">
<q-item-section>
<q-item-label>งกวาความคาดหวงมาก</q-item-label>

View file

@ -29,22 +29,22 @@ const props = defineProps({
});
/** เรียกใช้ฟังชั่นจากหน้าหลัก */
function downloadFile(type: string){
function downloadFile(type: string) {
props.FileDownload(type);
};
}
watch(tabHead, () => {
props.changeTab(tabHead.value);
});
/** ไปยัง step ต่อไป */
function nextPage(){
function nextPage() {
if (props.loop !== undefined) {
if (props.loop < 3) {
props.addData();
}
}
};
}
</script>
<template>

View file

@ -2052,7 +2052,10 @@ onMounted(async () => {
</q-item>
</q-list>
<q-separator class="q-my-xs" />
<q-list dense :class="[getBordered(alerts[11].value), 'item-custom']">
<q-list
dense
:class="[getBordered(alerts[11].value), 'item-custom']"
>
<q-item dense>
<q-item-section>
<q-item-label>2. การเรยนรวยตนเอง</q-item-label>
@ -2088,7 +2091,10 @@ onMounted(async () => {
</q-item>
</q-list>
<q-separator class="q-my-xs" />
<q-list dense :class="[getBordered(alerts[11].value), 'item-custom']">
<q-list
dense
:class="[getBordered(alerts[11].value), 'item-custom']"
>
<q-item dense>
<q-item-section>
<q-item-label>3. การอบรมสมนารวมก</q-item-label>

View file

@ -1552,9 +1552,7 @@ onMounted(async () => {
</q-item-section>
</q-item>
</q-list>
<div v-else class="">
</div>
<div v-else class=""></div>
<q-list dense>
<q-item
dense

View file

@ -1,3 +1 @@
<template>
03
</template>
<template>03</template>

View file

@ -1,3 +1 @@
<template>
04
</template>
<template>04</template>

View file

@ -614,7 +614,8 @@ onMounted(async () => {
<div class="row text-weight-medium">
<div class="col-12 text-grey-7 text-bold">
<q-icon name="mdi-label" color="grey-4" class="q-pr-sm" />
ทดลองปฏหนาทราชการ {{ store.person.name ? store.person.name : "-" }}
ทดลองปฏหนาทราชการ
{{ store.person.name ? store.person.name : "-" }}
</div>
<div class="col-12">
<span class="text-grey-7 text-weight-bold q-pl-lg"
@ -624,7 +625,9 @@ onMounted(async () => {
</div>
<div class="col-12">
<span class="text-grey-7 text-weight-bold q-pl-lg">ระดบตำแหน</span>
{{ store.person.positionLevelName ? store.person.positionLevelName : "-" }}
{{
store.person.positionLevelName ? store.person.positionLevelName : "-"
}}
</div>
<div class="col-12">
<span class="text-grey-7 text-weight-bold q-pl-lg">งก</span>

View file

@ -1,3 +1 @@
<template>
02
</template>
<template>02</template>

View file

@ -1,3 +1 @@
<template>
03
</template>
<template>03</template>

View file

@ -1,3 +1 @@
<template>
04
</template>
<template>04</template>

View file

@ -1,13 +1,11 @@
interface ListMain {
id: string
id: string;
round_no: number;
date_start: string
date_finish: string
mentors: string
commander: string
chairman: string
date_start: string;
date_finish: string;
mentors: string;
commander: string;
chairman: string;
}
export type {
ListMain
}
export type { ListMain };

View file

@ -2,11 +2,9 @@
import { useRouter } from "vue-router";
/** component */
import Assign from '@/modules/11_probation/component/01_Assign.vue'
import Assign from "@/modules/11_probation/component/01_Assign.vue";
const router = useRouter();
</script>
<template>
<div class="col-xs-12 col-sm-12 col-md-11">
@ -24,10 +22,9 @@ const router = useRouter();
<div>เพมแบบมอบหมายงานการทดลองปฏหนาทราชการ</div>
</div>
</div>
<q-card class="q-pa-md">
<Assign/>
</q-card>
<q-card class="q-pa-md">
<Assign />
</q-card>
</template>
<style scoped>
.mobileClass {
@ -35,7 +32,4 @@ const router = useRouter();
border-radius: 10px;
padding: 10px;
}
</style>

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { ref,onMounted } from "vue";
import { ref, onMounted } from "vue";
import { useRoute, useRouter } from "vue-router";
import { useProbationStore } from "@/modules/11_probation/store/probation";
@ -12,15 +12,14 @@ import EvaluateResult from "@/modules/11_probation/component/06_EvaluateResult.v
import EvaluateReport from "@/modules/11_probation/component/07_EvaluateReport.vue";
import SurveyComment from "@/modules/11_probation/component/08_SurveyComment.vue";
const drawer = ref<boolean>(true);
const activeTab = ref<string>("tab1");
const store = useProbationStore();
const router = useRouter();
const route = useRoute();
const id = ref<string>(route.params.id as string)
const profileId = ref<string>(route.params.profileId as string)
const id = ref<string>(route.params.id as string);
const profileId = ref<string>(route.params.profileId as string);
/**
* เปลยน tab เมน
@ -36,10 +35,10 @@ function onMobile(type: string) {
}
/** ปุ่มกลับ */
function clickBack(){
function clickBack() {
router.push(`/probation`);
store.mainTab = "tab1";
};
}
/** เมื่อเริ่มโหลดหน้า ให้ tab เป็น tab1 */
onMounted(() => {
@ -64,7 +63,7 @@ onMounted(() => {
<div>การทดลองปฏหนาทราชการ</div>
</div>
</div>
<q-card bordered :class='!$q.screen.gt.xs ? `borderRadius`:``'>
<q-card bordered :class="!$q.screen.gt.xs ? `borderRadius` : ``">
<q-layout
v-if="$q.screen.gt.xs"
view="hHh Lpr lff"
@ -226,13 +225,17 @@ onMounted(() => {
<q-tab-panel name="tab8">
<SurveyComment />
</q-tab-panel>
</q-tab-panels>
</q-layout>
</q-page-container>
</q-layout>
<q-list v-else separator>
<q-item clickable v-ripple @click="onMobile('assign-work')" style="border-radius: 20px 20px 0 0;">
<q-item
clickable
v-ripple
@click="onMobile('assign-work')"
style="border-radius: 20px 20px 0 0"
>
<q-item-section>แบบมอบหมายงาน </q-item-section>
<q-item-section avatar>
<q-avatar text-color="info" icon="mdi-chevron-right" />
@ -286,7 +289,12 @@ onMounted(() => {
<q-avatar text-color="info" icon="mdi-chevron-right" />
</q-item-section>
</q-item>
<q-item clickable v-ripple @click="onMobile('survey-comment')" style="border-radius: 0 0 20px 20px;">
<q-item
clickable
v-ripple
@click="onMobile('survey-comment')"
style="border-radius: 0 0 20px 20px"
>
<q-item-section>แบบสารวจความคดเห</q-item-section>
<q-item-section avatar>
<q-avatar text-color="info" icon="mdi-chevron-right" />
@ -301,9 +309,7 @@ onMounted(() => {
padding-left: 20px;
}
.borderRadius{
border-radius: 20px!important;
.borderRadius {
border-radius: 20px !important;
}
</style>

View file

@ -1,23 +1,37 @@
// registry
const probationPage = () => import("@/modules/11_probation/views/main.vue");
const probationDetail = () => import("@/modules/11_probation/views/mainDetail.vue");
const probationDetail = () =>
import("@/modules/11_probation/views/mainDetail.vue");
const probationAdd = () => import("@/modules/11_probation/pages/addPage.vue");
const probationDetailPage = () => import("@/modules/11_probation/pages/detailPage.vue");
const probationDetailPage = () =>
import("@/modules/11_probation/pages/detailPage.vue");
const probationAssign = () => import('@/modules/11_probation/component/01_Assign.vue')
const probationRecordCareker = () => import('@/modules/11_probation/component/02_RecordCareker.vue')
const probationRecordCommander = () => import('@/modules/11_probation/component/03_RecordCommander.vue')
const probationEvaluateCommander = () => import('@/modules/11_probation/component/04_EvaluateCommander.vue')
const probationEvaluateChairman = () => import('@/modules/11_probation/component/05_EvaluateChairman.vue')
const probationEvaluateResult = () => import('@/modules/11_probation/component/06_EvaluateResult.vue')
const probationEvaluateReport = () => import('@/modules/11_probation/component/07_EvaluateReport.vue')
const probationSurveyComment = () => import('@/modules/11_probation/component/08_SurveyComment.vue')
const probationAssign = () =>
import("@/modules/11_probation/component/01_Assign.vue");
const probationRecordCareker = () =>
import("@/modules/11_probation/component/02_RecordCareker.vue");
const probationRecordCommander = () =>
import("@/modules/11_probation/component/03_RecordCommander.vue");
const probationEvaluateCommander = () =>
import("@/modules/11_probation/component/04_EvaluateCommander.vue");
const probationEvaluateChairman = () =>
import("@/modules/11_probation/component/05_EvaluateChairman.vue");
const probationEvaluateResult = () =>
import("@/modules/11_probation/component/06_EvaluateResult.vue");
const probationEvaluateReport = () =>
import("@/modules/11_probation/component/07_EvaluateReport.vue");
const probationSurveyComment = () =>
import("@/modules/11_probation/component/08_SurveyComment.vue");
const probationAddresult = () => import('@/modules/11_probation/component/addPage/01_addresult.vue')
const probationAddevaluacommander = () => import('@/modules/11_probation/component/addPage/02_addevaluacommander.vue')
const probationAddevalua = () => import('@/modules/11_probation/component/addPage/03_addevalua.vue')
const probationAddevaluascore = () => import('@/modules/11_probation/component/addPage/04_addevaluascore.vue')
const probationAddresult = () =>
import("@/modules/11_probation/component/addPage/01_addresult.vue");
const probationAddevaluacommander = () =>
import("@/modules/11_probation/component/addPage/02_addevaluacommander.vue");
const probationAddevalua = () =>
import("@/modules/11_probation/component/addPage/03_addevalua.vue");
const probationAddevaluascore = () =>
import("@/modules/11_probation/component/addPage/04_addevaluascore.vue");
export default [
{
@ -65,7 +79,7 @@ export default [
Key: [11],
},
},
//////////////////////////////////////////////////
//////////////////////////////////////////////////
{
path: "/probation/record-careker/:profileId/:id",
name: "probationRecordCareker",
@ -129,9 +143,9 @@ export default [
Key: [11],
},
},
/////////////////////////////////////////////////
/////////////////////////////////////////////////
{
{
path: "/probation/detail/addresult/:profileId/:id",
name: "probationAddresult",
component: probationAddresult,
@ -139,8 +153,8 @@ export default [
Auth: true,
Key: [11],
},
},
{
},
{
path: "/probation/detail/addevaluacommander/:profileId/:id",
name: "probationAddevaluacommander",
component: probationAddevaluacommander,
@ -148,8 +162,8 @@ export default [
Auth: true,
Key: [11],
},
},
{
},
{
path: "/probation/detail/addevalua/:profileId/:id",
name: "probationAddevalua",
component: probationAddevalua,
@ -157,8 +171,8 @@ export default [
Auth: true,
Key: [11],
},
},
{
},
{
path: "/probation/detail/addevaluascore/:profileId/:id",
name: "probationAddevaluascore",
component: probationAddevaluascore,
@ -166,5 +180,5 @@ export default [
Auth: true,
Key: [11],
},
},
},
];

View file

@ -221,10 +221,9 @@ onMounted(async () => {
</template>
</q-breadcrumbs>
</div>
</div>
<div class="col-12">
<q-separator/>
<q-separator />
</div>
<div style="overflow-x: auto; overflow-y: auto" class="q-pt-md">
<StructChart

View file

@ -163,9 +163,7 @@ function fetchFile() {
function fileOpen(fileName: string) {
showLoader();
http
.get(
config.API.fileByFile("ระบบผลงาน", "เอกสารผลงาน", id.value, fileName)
)
.get(config.API.fileByFile("ระบบผลงาน", "เอกสารผลงาน", id.value, fileName))
.then((res) => {
const data = res.data.downloadUrl;
window.open(data, "_blank");

View file

@ -3,9 +3,7 @@
* - Helper Functions
*/
const filters = {
/**
* compactNumber Social Media 1,000 1K 1,000,000 1M
* : {{ $filters.compactNumber(value) }}
@ -13,10 +11,10 @@ const filters = {
* @param val
* @returns
*/
compactNumber (val: number) {
const formatter = Intl.NumberFormat('en', { notation: 'compact'})
return formatter.format(val)
}
}
compactNumber(val: number) {
const formatter = Intl.NumberFormat("en", { notation: "compact" });
return formatter.format(val);
},
};
export default filters;

View file

@ -1,11 +1,11 @@
// import "./styles/quasar.scss"
import "@quasar/extras/material-icons/material-icons.css"
import "@quasar/extras/material-icons-outlined/material-icons-outlined.css"
import "@quasar/extras/fontawesome-v5/fontawesome-v5.css"
import "@quasar/extras/mdi-v4/mdi-v4.css"
import "@quasar/extras/material-icons/material-icons.css";
import "@quasar/extras/material-icons-outlined/material-icons-outlined.css";
import "@quasar/extras/fontawesome-v5/fontawesome-v5.css";
import "@quasar/extras/mdi-v4/mdi-v4.css";
// To be used on app.use(Quasar, { ... })
export default {
config: {},
plugins: {},
}
};

View file

@ -1,6 +1,6 @@
/**
***** DEPRECATED - Must be delete later *****
*/
***** DEPRECATED - Must be delete later *****
*/
/** async/await
* @param view "ชี่อไฟล์".vue
@ -9,5 +9,4 @@
export function load(view: string, folder: string = "views") {
// console.log(`@/${folder}/${view}.vue`);
return async () => await import(`@/${folder}/${view}.vue`);
}
}

View file

@ -9,6 +9,8 @@
"@/*": ["./src/*"]
},
"target": "es2018",
"lib": ["dom", "es2015", "es2018", "es2018.promise"]
"lib": ["dom", "es2015", "es2018", "es2018.promise"],
"ignoreDeprecations": "5.0",
"verbatimModuleSyntax": true
}
}

View file

@ -1,8 +1,15 @@
{
"extends": "@vue/tsconfig/tsconfig.node.json",
"include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "playwright.config.*"],
"include": [
"vite.config.*",
"vitest.config.*",
"cypress.config.*",
"playwright.config.*"
],
"compilerOptions": {
"composite": true,
"types": ["node"]
"types": ["node"],
"ignoreDeprecations": "5.0",
"verbatimModuleSyntax": true
}
}