Merge branch 'develop' of github.com:Frappet/bma-ehr-frontend into me

# Conflicts:
#	src/modules/05_placement/components/OrderPlacement/MainOrderPlacement.vue
This commit is contained in:
Thanit Konmek 2023-06-28 12:11:46 +07:00
commit f09079fc7d
13 changed files with 863 additions and 981 deletions

View file

@ -106,7 +106,8 @@
<template v-slot:pagination="scope"> <template v-slot:pagination="scope">
<q-pagination <q-pagination
v-model="pagination.page" v-model="pagination.page"
color="grey-8" active-color="primary"
color="dark"
:max="scope.pagesNumber" :max="scope.pagesNumber"
:max-pages="5" :max-pages="5"
size="sm" size="sm"

View file

@ -249,7 +249,8 @@
<template v-slot:pagination="scope"> <template v-slot:pagination="scope">
<q-pagination <q-pagination
v-model="pagination.page" v-model="pagination.page"
color="grey-8" active-color="primary"
color="dark"
:max="scope.pagesNumber" :max="scope.pagesNumber"
:max-pages="5" :max-pages="5"
size="sm" size="sm"

View file

@ -195,16 +195,16 @@ const menuList = readonly<any[]>([
}, },
{ {
key: 7, key: 7,
icon: "mdi-home-variant-outline", icon: "mdi-account-cancel-outline",
activeIcon: "mdi-home-variant", activeIcon: "mdi-account-cancel",
label: "พ้นจากราชการ", label: "พ้นจากราชการ",
path: "retirement", path: "retirement",
role: "retirement", role: "retirement",
}, },
{ {
key: 8, key: 8,
icon: "mdi-home-variant-outline", icon: "mdi-medal-outline",
activeIcon: "mdi-home-variant", activeIcon: "mdi-medal",
label: "เครื่องราชอิสริยาภรณ์", label: "เครื่องราชอิสริยาภรณ์",
path: "insignia", path: "insignia",
role: "insignia", role: "insignia",

View file

@ -304,7 +304,7 @@ const mixin = useCounterMixin();
const { success, dateText, messageError, showLoader, hideLoader } = mixin; const { success, dateText, messageError, showLoader, hideLoader } = mixin;
const store = useManageDataStore(); const store = useManageDataStore();
const { manageData, changeManageColumns, getInsignia, dataInsignia } = store; const { manageData, changeManageColumns, getInsignia, dataInsignia } = store;
const rows = ref<RequestItemsHistoryObject[]>(dataInsignia); //list data table const rows = ref<RequestItemsHistoryObject[]>(); //list data table
const rowsHistory = ref<RequestItemsHistoryObject[]>([]); //select data history const rowsHistory = ref<RequestItemsHistoryObject[]>([]); //select data history
const rawHistory = ref<RequestItemsHistoryObject[]>([]); //raw data history const rawHistory = ref<RequestItemsHistoryObject[]>([]); //raw data history
const tittleHistory = ref<string>("ประวัติแก้ไขชื่อเครื่องราชฯ"); // const tittleHistory = ref<string>("ประวัติแก้ไขชื่อเครื่องราชฯ"); //

View file

@ -206,7 +206,7 @@ const { success, dateText, messageError, showLoader, hideLoader } = mixin;
const store = useManageDataStore(); const store = useManageDataStore();
const { manageData, changeManageColumns, getInsigniaType, dataInsigniaType } = const { manageData, changeManageColumns, getInsigniaType, dataInsigniaType } =
store; store;
const rows = ref<RequestItemsHistoryObject[]>(dataInsigniaType); //list data table const rows = ref<RequestItemsHistoryObject[]>(); //list data table
const rowsHistory = ref<RequestItemsHistoryObject[]>([]); //select data history const rowsHistory = ref<RequestItemsHistoryObject[]>([]); //select data history
const rawHistory = ref<RequestItemsHistoryObject[]>([]); //raw data history const rawHistory = ref<RequestItemsHistoryObject[]>([]); //raw data history
const tittleHistory = ref<string>("ประวัติแก้ไขลำดับชั้นเครื่องราชฯ"); // const tittleHistory = ref<string>("ประวัติแก้ไขลำดับชั้นเครื่องราชฯ"); //

View file

@ -1,10 +1,11 @@
<template> <template>
<div class="toptitle text-dark col-12 row items-center">ออกคำส</div> <div class="toptitle text-dark col-12 row items-center">ออกคำส</div>
<div> <div>
<q-card flat bordered class="col-12 q-mt-sm"> <q-card flat bordered class="col-12 q-mt-sm q-pa-md">
<div class="row q-pa-md"> <div class="row q-col-gutter-md">
<div class="col-xs-12 col-sm-3 col-md-2"> <div class="row col-12 q-col-gutter-sm">
<q-select <q-select
class="col-xs-10 col-sm-3 col-md-2"
v-model="fiscalyear" v-model="fiscalyear"
label="ปีงบประมาณ" label="ปีงบประมาณ"
dense dense
@ -41,6 +42,7 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-2"> <div class="col-xs-12 col-sm-3 col-md-2">
<q-input <q-input
class="col-xs-12 col-sm-3 col-md-2"
standout standout
dense dense
v-model="filterKeyword" v-model="filterKeyword"
@ -48,7 +50,6 @@
outlined outlined
debounce="300" debounce="300"
placeholder="ค้นหา" placeholder="ค้นหา"
class="q-ml-sm"
> >
<template v-slot:append> <template v-slot:append>
<q-icon v-if="filterKeyword == ''" name="search" /> <q-icon v-if="filterKeyword == ''" name="search" />
@ -60,9 +61,8 @@
/> />
</template> </template>
</q-input> </q-input>
</div>
<div class="col-xs-12 col-sm-3 col-md-2">
<q-select <q-select
class="col-xs-12 col-sm-3 col-md-2"
v-model="visibleColumns" v-model="visibleColumns"
multiple multiple
outlined outlined
@ -75,15 +75,13 @@
option-value="name" option-value="name"
options-cover options-cover
style="min-width: 150px" style="min-width: 150px"
class="gt-xs q-ml-sm"
/> />
</div> </div>
</div> <div class="col-12">
<div class="q-pt-sm q-pl-md q-pr-md q-pb-md"> <q-card bordered class="col-12 filter-card q-pa-sm">
<q-card bordered class="col-12 filter-card"> <div class="row col-12 q-col-gutter-sm">
<div class="row q-pa-sm">
<div class="col-xs-12 col-sm-3 col-md- q-pl-sm">
<q-select <q-select
class="col-xs-12 col-sm-3 col-md-2"
v-model="OrderType" v-model="OrderType"
label="ประเภท" label="ประเภท"
dense dense
@ -100,9 +98,8 @@
:hide-dropdown-icon="false" :hide-dropdown-icon="false"
@update:model-value="searchFilterTable" @update:model-value="searchFilterTable"
/> />
</div>
<div class="col-xs-12 col-sm-3 col-md- q-pl-sm">
<q-select <q-select
class="col-xs-12 col-sm-3 col-md-2"
v-model="OrderStatus" v-model="OrderStatus"
label="สถานะ" label="สถานะ"
dense dense
@ -120,10 +117,9 @@
@update:model-value="searchFilterTable" @update:model-value="searchFilterTable"
/> />
</div> </div>
</div>
</q-card> </q-card>
</div> </div>
<div class="q-pt-sm q-pl-md q-pr-md q-pb-md"> <div class="col-12">
<q-table <q-table
ref="table" ref="table"
:columns="columns" :columns="columns"
@ -192,15 +188,15 @@
> >
<q-icon <q-icon
v-if="props.row.OrderStatus == 'ยังไม่ได้ออกคำสั่ง'" v-if="props.row.OrderStatus == 'ยังไม่ได้ออกคำสั่ง'"
name="hourglass_top" name="mdi-timer-sand"
color="orange" color="orange"
class="text-h5" class="text-h6"
/> />
<q-icon <q-icon
v-if="props.row.OrderStatus == 'ออกคำสั่งแล้ว'" v-if="props.row.OrderStatus == 'ออกคำสั่งแล้ว'"
name="mdi-check" name="mdi-check"
color="positive" color="positive"
class="text-h5" class="text-h6"
/> />
</q-td> </q-td>
@ -222,7 +218,8 @@
<template v-slot:pagination="scope"> <template v-slot:pagination="scope">
<q-pagination <q-pagination
v-model="pagination.page" v-model="pagination.page"
color="primary" active-color="primary"
color="dark"
:max="scope.pagesNumber" :max="scope.pagesNumber"
:max-pages="5" :max-pages="5"
size="sm" size="sm"
@ -232,6 +229,7 @@
</template> </template>
</q-table> </q-table>
</div> </div>
</div>
</q-card> </q-card>
</div> </div>
</template> </template>
@ -252,7 +250,7 @@ const pagination = ref({
sortBy: "desc", sortBy: "desc",
descending: false, descending: false,
page: 1, page: 1,
rowsPerPage: 10, rowsPerPage: 5,
}); });
const mixin = useCounterMixin(); const mixin = useCounterMixin();
@ -329,7 +327,7 @@ const columns = ref<QTableProps["columns"]>([
}, },
{ {
name: "OrderStatus", name: "OrderStatus",
align: "left", align: "center",
label: "สถานะคำสั่ง", label: "สถานะคำสั่ง",
sortable: false, sortable: false,
field: "OrderStatus", field: "OrderStatus",
@ -355,9 +353,9 @@ const columns = ref<QTableProps["columns"]>([
const rows = ref<FormOrderPlacementMainData[]>([ const rows = ref<FormOrderPlacementMainData[]>([
{ {
Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้",
OrderNum: "1/2565", OrderNum: "1/2566",
fiscalYear: 2565, fiscalYear: 2566,
OrderDate: "30 พ.ค. 2565", OrderDate: "30 พ.ค. 2566",
OrderBy: "สำนักงาน กทม.", OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ", Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ยังไม่ได้ออกคำสั่ง", OrderStatus: "ยังไม่ได้ออกคำสั่ง",
@ -366,39 +364,9 @@ const rows = ref<FormOrderPlacementMainData[]>([
{ {
Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้",
OrderNum: "1/2565", OrderNum: "1/2566",
fiscalYear: 2565, fiscalYear: 2566,
OrderDate: "30 พ.ค. 2565", OrderDate: "30 พ.ค. 2566",
OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ยังไม่ได้ออกคำสั่ง",
OrderType: "คำสั่งบรรจุและแต่งตั้ง",
},
{
Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้",
OrderNum: "1/2565",
fiscalYear: 2565,
OrderDate: "30 พ.ค. 2565",
OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ยังไม่ได้ออกคำสั่ง",
OrderType: "คำสั่งบรรจุและแต่งตั้ง",
},
{
Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้",
OrderNum: "1/2565",
fiscalYear: 2565,
OrderDate: "30 พ.ค. 2565",
OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ยังไม่ได้ออกคำสั่ง",
OrderType: "คำสั่งบรรจุและแต่งตั้ง",
},
{
Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้",
OrderNum: "1/2565",
fiscalYear: 2565,
OrderDate: "30 พ.ค. 2565",
OrderBy: "สำนักงาน กทม.", OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ", Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ยังไม่ได้ออกคำสั่ง", OrderStatus: "ยังไม่ได้ออกคำสั่ง",
@ -431,7 +399,37 @@ const rows = ref<FormOrderPlacementMainData[]>([
OrderDate: "30 พ.ค. 2565", OrderDate: "30 พ.ค. 2565",
OrderBy: "สำนักงาน กทม.", OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ", Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ยังไม่ได้ออกคำสั่ง", OrderStatus: "ออกคำสั่งแล้ว",
OrderType: "คำสั่งบรรจุและแต่งตั้ง",
},
{
Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้",
OrderNum: "1/2565",
fiscalYear: 2565,
OrderDate: "30 พ.ค. 2565",
OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ออกคำสั่งแล้ว",
OrderType: "คำสั่งบรรจุและแต่งตั้ง",
},
{
Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้",
OrderNum: "1/2565",
fiscalYear: 2565,
OrderDate: "30 พ.ค. 2565",
OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ออกคำสั่งแล้ว",
OrderType: "คำสั่งบรรจุและแต่งตั้ง",
},
{
Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้",
OrderNum: "1/2565",
fiscalYear: 2565,
OrderDate: "30 พ.ค. 2565",
OrderBy: "สำนักงาน กทม.",
Signer: "นาม สมคิด ยอดใจ ",
OrderStatus: "ออกคำสั่งแล้ว",
OrderType: "คำสั่งบรรจุและแต่งตั้ง", OrderType: "คำสั่งบรรจุและแต่งตั้ง",
}, },
{ {
@ -703,7 +701,7 @@ const paginationLabel = (start: string, end: string, total: string) => {
<style lang="scss" scope> <style lang="scss" scope>
.filter-card { .filter-card {
background-color: #ededed; background-color: #f1f1f1b0;
} }
.toggle-expired-account { .toggle-expired-account {

View file

@ -373,7 +373,7 @@ const paginationLabel = (start: string, end: string, total: string) => {
<style lang="scss" scope> <style lang="scss" scope>
.filter-card { .filter-card {
background-color: #EDEDED; background-color: #f1f1f1b0;
} }
.toggle-expired-account { .toggle-expired-account {

View file

@ -293,51 +293,37 @@ const paginationLabel = (start: string, end: string, total: string) => {
<div class="toptitle text-dark col-12 row items-center"> <div class="toptitle text-dark col-12 row items-center">
รายการสอบแขงข / ดเลอก รายการสอบแขงข / ดเลอก
</div> </div>
<div> <q-card flat bordered class="col-12 q-mt-sm q-pa-md">
<q-card flat bordered class="col-12 q-mt-sm"> <div class="row q-col-gutter-md">
<div class="row q-pa-md"> <div class="row col-12 q-col-gutter-sm">
<div class="col-xs-12 col-sm-3 col-md-2"> <q-select class="col-xs-12 col-sm-3 col-md-2" v-model="fiscalyear" label="ปีงบประมาณ" dense clearable emit-value map-options :options="fiscalyearOP"
<q-select v-model="fiscalyear" label="ปีงบประมาณ" dense clearable emit-value map-options :options="fiscalyearOP"
option-value="id" option-label="name" lazy-rules hide-bottom-space :readonly="false" :borderless="false" option-value="id" option-label="name" lazy-rules hide-bottom-space :readonly="false" :borderless="false"
:outlined="true" :hide-dropdown-icon="false" @update:model-value="searchfiscalyear" /> :outlined="true" :hide-dropdown-icon="false" @update:model-value="searchfiscalyear" />
</div> <q-space />
<div class="col-xs-12 col-sm-3 col-md-6"></div> <q-input class="col-xs-12 col-sm-3 col-md-2" standout dense v-model="filterKeyword" ref="filterRef" outlined debounce="300" placeholder="ค้นหา">
<div class="col-xs-12 col-sm-3 col-md-2">
<q-input standout dense v-model="filterKeyword" ref="filterRef" outlined debounce="300" placeholder="ค้นหา"
class="q-ml-sm">
<template v-slot:append> <template v-slot:append>
<q-icon v-if="filterKeyword == ''" name="search" /> <q-icon v-if="filterKeyword == ''" name="search" />
<q-icon v-if="filterKeyword !== ''" name="clear" class="cursor-pointer" @click="resetFilter" /> <q-icon v-if="filterKeyword !== ''" name="clear" class="cursor-pointer" @click="resetFilter" />
</template> </template>
</q-input> </q-input>
<q-select class="col-xs-12 col-sm-3 col-md-2" v-model="visibleColumns" multiple outlined dense options-dense :display-value="$q.lang.table.columns"
emit-value map-options :options="columns" option-value="name" options-cover />
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-2"> <div class="col-12">
<q-select v-model="visibleColumns" multiple outlined dense options-dense :display-value="$q.lang.table.columns" <q-card bordered class="col-12 filter-card q-pa-sm">
emit-value map-options :options="columns" option-value="name" options-cover style="min-width: 150px" <div class="row col-12 q-col-gutter-sm">
class="gt-xs q-ml-sm" /> <q-select class="col-xs-12 col-sm-3 col-md-2" v-model="examTime" label="ครั้งที่" dense clearable emit-value map-options :options="examTimeOP"
</div>
</div>
<div class="q-pt-sm q-pl-md q-pr-md q-pb-md">
<q-card bordered class="col-12 filter-card">
<div class="row q-pa-sm">
<div class="col-xs-12 col-sm-3 col-md-2 q-pl-sm">
<q-select v-model="examTime" label="ครั้งที่" dense clearable emit-value map-options :options="examTimeOP"
option-value="id" option-label="name" lazy-rules hide-bottom-space :readonly="false" :borderless="false" option-value="id" option-label="name" lazy-rules hide-bottom-space :readonly="false" :borderless="false"
:outlined="true" :hide-dropdown-icon="false" @update:model-value="searchFilterTable" /> :outlined="true" :hide-dropdown-icon="false" @update:model-value="searchFilterTable" />
</div> <q-select class="col-xs-12 col-sm-3 col-md-2" v-model="examType" label="ประเภทการสอบ" dense clearable emit-value map-options option-label="name"
<div class="col-xs-12 col-sm-3 col-md-2 q-pl-sm">
<q-select v-model="examType" label="ประเภทการสอบ" dense clearable emit-value map-options option-label="name"
:options="examTypeOP" option-value="id" lazy-rules hide-bottom-space :readonly="false" :borderless="false" :options="examTypeOP" option-value="id" lazy-rules hide-bottom-space :readonly="false" :borderless="false"
:outlined="true" :hide-dropdown-icon="false" @update:model-value="searchFilterTable" /> :outlined="true" :hide-dropdown-icon="false" @update:model-value="searchFilterTable" />
</div> <q-toggle class="col-xs-12 col-sm-5 col-md-5 toggle-expired-account" v-model="expiredAccount" color="blue" label="แสดงบัญชีหมดอายุ"
<div class="col-xs-12 col-sm-3 col-md-3">
<q-toggle v-model="expiredAccount" class="toggle-expired-account" color="blue" label="แสดงบัญชีหมดอายุ"
@update:model-value="searchFilterTable" /> @update:model-value="searchFilterTable" />
</div> </div>
</div>
</q-card> </q-card>
</div> </div>
<div class="q-pt-sm q-pl-md q-pr-md q-pb-md"> <div class="col-12">
<q-table ref="table" :columns="columns" :rows="UpdataData" :filter="filterKeyword" row-key="id" flat bordered <q-table ref="table" :columns="columns" :rows="UpdataData" :filter="filterKeyword" row-key="id" flat bordered
dense class="custom-header-table" v-bind="attrs" :visible-columns="visibleColumns" dense class="custom-header-table" v-bind="attrs" :visible-columns="visibleColumns"
:pagination-label="paginationLabel"> :pagination-label="paginationLabel">
@ -368,13 +354,13 @@ const paginationLabel = (start: string, end: string, total: string) => {
</template> </template>
</q-table> </q-table>
</div> </div>
</q-card>
</div> </div>
</q-card>
</template> </template>
<style lang="scss" scope> <style lang="scss" scope>
.filter-card { .filter-card {
background-color: #EDEDED; background-color: #f1f1f1b0;
} }
.toggle-expired-account { .toggle-expired-account {

View file

@ -56,14 +56,13 @@ const AddTablePosition = defineAsyncComponent(
<q-btn icon="mdi-arrow-left" unelevated round dense flat color="primary" class="q-mr-sm" @click="router.go(-1)" /> <q-btn icon="mdi-arrow-left" unelevated round dense flat color="primary" class="q-mr-sm" @click="router.go(-1)" />
รายชอผสอบในรอบ {{ title }} ครงท {{ round }} {{ year }} รายชอผสอบในรอบ {{ title }} ครงท {{ round }} {{ year }}
</div> </div>
<q-space />
<div class="q-py-md row col-12"> <q-card bordered class="q-py-sm row col-12">
<div class="col-12 row bg-white"> <div class="col-12 row bg-white">
<div class="fit q-pa-md"> <div class="fit q-px-md q-py-sm">
<div class="row col-12 q-col-gutter-md fit"> <div class="row col-12 q-col-gutter-md fit">
<div class="" v-for="item in itemTop" :key="item.id" :style="$q.screen.lt.md ? '' : sizeCard(5)" :class="$q.screen.lt.sm ? 'col-4' : ''"> <div class="" v-for="item in itemTop" :key="item.id" :style="$q.screen.lt.md ? '' : sizeCard(5)" :class="$q.screen.lt.sm ? 'col-4' : ''">
<div class="q-card q-card--bordered q-card--flat no-shadow row fit cardNum items-center q-pa-sm"> <div class="q-card q-card--bordered q-card--flat no-shadow row fit cardNum items-center q-px-sm">
<div class="col-12 row items-center q-pa-sm"> <div class="col-12 row items-center q-pa-sm">
<div class="col-12 text-h5 text-weight-bold" :style="{ color: item.color }"> <div class="col-12 text-h5 text-weight-bold" :style="{ color: item.color }">
{{ item.num }} {{ item.num }}
@ -77,7 +76,7 @@ const AddTablePosition = defineAsyncComponent(
</div> </div>
</div> </div>
</div> </div>
</div> </q-card>
</div> </div>
<q-card flat bordered class="col-12 q-mt-sm q-pt-sm"> <q-card flat bordered class="col-12 q-mt-sm q-pt-sm">
<div> <div>

View file

@ -28,7 +28,7 @@ const positionLevelId = ref<string>();
const date = ref<Date>(new Date()); const date = ref<Date>(new Date());
const expanded = ref<string[]>([]); const expanded = ref<string[]>([]);
const mixin = useCounterMixin(); // const mixin = useCounterMixin(); //
const editvisible = ref<boolean>(false); const editvisible = ref<boolean>(true);
const myForm = ref<QForm | null>(null); const myForm = ref<QForm | null>(null);
const positionLineId = ref<string>(); const positionLineId = ref<string>();
const positionId = ref<string>(); const positionId = ref<string>();
@ -268,19 +268,19 @@ const appoint = ref<any>({
const saveAppoint = () => { const saveAppoint = () => {
const dataAppoint = { const dataAppoint = {
date : date.value, date: date.value,
posNoId: posNoId.value, posNoId: posNoId.value,
positionId: positionId.value, positionId: positionId.value,
positionPathSideId: positionPathSideId.value, positionPathSideId: positionPathSideId.value,
positionTypeId: positionTypeId.value, positionTypeId: positionTypeId.value,
positionLineId: positionLineId.value, positionLineId: positionLineId.value,
positionLevelId: positionLevelId.value, positionLevelId: positionLevelId.value,
amount : amount.value, amount: amount.value,
positionSalaryAmount : positionSalaryAmount.value, positionSalaryAmount: positionSalaryAmount.value,
mouthSalaryAmount : mouthSalaryAmount.value, mouthSalaryAmount: mouthSalaryAmount.value,
salaryClass : salaryClass.value, salaryClass: salaryClass.value,
refSelected : refSelected.value, refSelected: refSelected.value,
salaryRef : salaryRef.value salaryRef: salaryRef.value,
}; };
console.log("save appoint===>", dataAppoint); console.log("save appoint===>", dataAppoint);
}; };
@ -310,17 +310,7 @@ const getClass = (val: boolean) => {
}; };
const selectData = (props: TableName) => { const selectData = (props: TableName) => {
itemtest.value = props; itemtest.value = props;
if (editvisible.value == true) {
editRow.value = false;
modalEdit.value = true;
modal.value = false;
edit.value = true;
} else {
editRow.value = false;
modalEdit.value = true;
modal.value = true; modal.value = true;
edit.value = true;
}
}; };
const onSelected = async (id: string) => { const onSelected = async (id: string) => {
await fetchPositionNumber(id); await fetchPositionNumber(id);
@ -439,8 +429,8 @@ const columns = ref<QTableProps["columns"]>([
}, },
{ {
name: "BMAOfficer", name: "BMAOfficer",
align: "center", align: "left",
label: "ข้าราชการฯ กทม.", label: "สถานภาพ",
sortable: true, sortable: true,
field: "BMAOfficer", field: "BMAOfficer",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
@ -471,7 +461,7 @@ const rows = ref<TableName[]>([
UnitGroup: "", UnitGroup: "",
Unit: "", Unit: "",
ReportingDate: "-", // ReportingDate: "-", //
BMAOfficer: true, BMAOfficer: "ขรก.กทม. สามัญ",
Status: "สละสิทธิ์", Status: "สละสิทธิ์",
checkList: null, checkList: null,
address: address:
@ -505,7 +495,7 @@ const rows = ref<TableName[]>([
UnitGroup: "", UnitGroup: "",
Unit: "", Unit: "",
ReportingDate: "", // ReportingDate: "", //
BMAOfficer: false, BMAOfficer: "บุคคลภายนอก",
Status: "ยังไม่บรรจุ", Status: "ยังไม่บรรจุ",
checkList: null, checkList: null,
address: address:
@ -539,7 +529,7 @@ const rows = ref<TableName[]>([
UnitGroup: "", UnitGroup: "",
Unit: "", Unit: "",
ReportingDate: "", // ReportingDate: "", //
BMAOfficer: true, BMAOfficer: "ลูกจ้างชั่วคราว",
Status: "ยังไม่บรรจุ", Status: "ยังไม่บรรจุ",
checkList: null, checkList: null,
address: address:
@ -574,7 +564,7 @@ const rows = ref<TableName[]>([
UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)", UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)",
Unit: "นักทรัพยากรบุคคล (กบห.1)", Unit: "นักทรัพยากรบุคคล (กบห.1)",
ReportingDate: "2023-05-30", // ReportingDate: "2023-05-30", //
BMAOfficer: true, BMAOfficer: "ลูกจ้างประจำ",
Status: "เตรียมบรรจุ", Status: "เตรียมบรรจุ",
checkList: null, checkList: null,
address: address:
@ -609,7 +599,7 @@ const rows = ref<TableName[]>([
UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)", UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)",
Unit: "นักทรัพยากรบุคคล (กบห.2)", Unit: "นักทรัพยากรบุคคล (กบห.2)",
ReportingDate: "2023-05-30", // ReportingDate: "2023-05-30", //
BMAOfficer: true, BMAOfficer: "ขรก.กทม. สามัญ",
Status: "เตรียมบรรจุ", Status: "เตรียมบรรจุ",
checkList: null, checkList: null,
address: address:
@ -643,7 +633,7 @@ const rows = ref<TableName[]>([
UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)", UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)",
Unit: "นักทรัพยากรบุคคล (กบห.3)", Unit: "นักทรัพยากรบุคคล (กบห.3)",
ReportingDate: "2023-05-30", // ReportingDate: "2023-05-30", //
BMAOfficer: true, BMAOfficer: "บุคคลภายนอก",
Status: "เตรียมบรรจุ", Status: "เตรียมบรรจุ",
checkList: null, checkList: null,
address: address:
@ -677,7 +667,7 @@ const rows = ref<TableName[]>([
UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)", UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)",
Unit: "นักทรัพยากรบุคคล (กบห.4)", Unit: "นักทรัพยากรบุคคล (กบห.4)",
ReportingDate: "2023-05-30", // ReportingDate: "2023-05-30", //
BMAOfficer: true, BMAOfficer: "ขรก.กทม. สามัญ",
Status: "บรรจุเเล้ว", Status: "บรรจุเเล้ว",
checkList: null, checkList: null,
address: address:
@ -711,7 +701,7 @@ const rows = ref<TableName[]>([
UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)", UnitGroup: "กลุ่มงานช่วยนักบริหาร (กบห.)",
Unit: "นักทรัพยากรบุคคล (กบห.4)", Unit: "นักทรัพยากรบุคคล (กบห.4)",
ReportingDate: "2023-05-30", // ReportingDate: "2023-05-30", //
BMAOfficer: true, BMAOfficer: "ลูกจ้างชั่วคราว",
Status: "ขอผ่อนผัน", Status: "ขอผ่อนผัน",
checkList: null, checkList: null,
address: address:
@ -968,9 +958,9 @@ const refOptionsFilter = ref<DataOption[]>([
]); ]);
const itemtest = ref<object>({}); const itemtest = ref<object>({});
const clickCancel = async () => { // const clickCancel = async () => {
editvisible.value = false; // editvisible.value = false;
}; // };
const openAppointModal = (value: any) => { const openAppointModal = (value: any) => {
appointModal.value = true; appointModal.value = true;
@ -1132,7 +1122,6 @@ const listKeyId = (data: any) => {
v-model:inputfilter="filter" v-model:inputfilter="filter"
v-model:inputvisible="visibleColumns" v-model:inputvisible="visibleColumns"
v-model:editvisible="editvisible" v-model:editvisible="editvisible"
:cancel="clickCancel"
:history="true" :history="true"
:boss="true" :boss="true"
:saveNoDraft="true" :saveNoDraft="true"
@ -1155,23 +1144,7 @@ const listKeyId = (data: any) => {
@click="selectData(props.row)" @click="selectData(props.row)"
class="cursor-pointer" class="cursor-pointer"
> >
<div v-if="col.name == 'BMAOfficer'" class="table_ellipsis"> <div v-if="col.name == 'Name'" class="table_ellipsis">
<div>
<q-icon
v-if="col.value == false"
name="mdi-close"
color="grey-5"
class="text-h5"
/>
<q-icon
v-else
name="mdi-check"
color="positive"
class="text-h5"
/>
</div>
</div>
<div v-else-if="col.name == 'Name'" class="table_ellipsis">
{{ col.value }} {{ col.value }}
<div class="row col-12 text-no-wrap items-center"> <div class="row col-12 text-no-wrap items-center">
<img <img
@ -1191,27 +1164,8 @@ const listKeyId = (data: any) => {
</div> </div>
</div> </div>
<div v-else-if="col.name == 'Unit'" class="table_ellipsis"> <div v-else-if="col.name == 'Unit'" class="table_ellipsis">
<div v-if="editvisible && props.row.Status == 'ยังไม่บรรจุ'">
<div @click="openAppointModal">
<q-input
hide-bottom-space
outlined
dense
lazy-rules
v-model="props.row.Unit"
>
<template v-slot:prepend>
<q-icon
name="mdi-bookmark-plus-outline"
color="primary"
/>
</template>
</q-input>
</div>
</div>
<div <div
v-else-if=" v-if="props.row.Status == 'ยังไม่บรรจุ' ||
props.row.Status == 'ยังไม่บรรจุ' ||
props.row.Status == 'สละสิทธิ์' props.row.Status == 'สละสิทธิ์'
" "
> >
@ -1226,116 +1180,77 @@ const listKeyId = (data: any) => {
v-else-if="col.name == 'ReportingDate' && col.value != '-'" v-else-if="col.name == 'ReportingDate' && col.value != '-'"
class="table_ellipsis" class="table_ellipsis"
> >
<div v-if="editvisible && props.row.Status == 'ยังไม่บรรจุ'">
<datepicker
:locale="'th'"
autoApply
:enableTimePicker="false"
week-start="0"
v-model="props.row.ReportingDate"
>
<template #year="{ year }">
{{ year + 543 }}
</template>
<template #year-overlay-value="{ value }">
{{ parseInt(value + 543) }}
</template>
<template #trigger>
<q-input
hide-bottom-space
outlined
dense
lazy-rules
:model-value="mixin.date2Thai(col.value)"
>
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
style="color: var(--q-primary)"
>
</q-icon>
</template>
</q-input>
</template>
</datepicker>
</div>
<div
v-else-if="
props.row.Status == 'ยังไม่บรรจุ' ||
props.row.Status == 'สละสิทธิ์'
"
>
-
</div>
<div v-else>
{{ mixin.date2Thai(col.value) }} {{ mixin.date2Thai(col.value) }}
</div> </div>
</div>
<div v-else class="table_ellipsis"> <div v-else class="table_ellipsis">
{{ col.value }} {{ col.value }}
</div> </div>
</q-td> </q-td>
<q-td auto-width> <q-td auto-width>
<div <q-btn
v-if=" v-if="props.row.Status !== 'สละสิทธิ์' &&
props.row.Status === 'บรรจุเเล้ว' || props.row.Status !== 'บรรจุเเล้ว'
props.row.Status === 'สละสิทธิ์'
" "
icon="mdi-dots-vertical"
size="12px"
color="grey-7"
flat
round
dense
> >
<div></div> <q-menu transition-show="jump-down" transition-hide="jump-up">
</div> <q-list dense style="min-width: 100px">
<div v-else-if="props.row.Status === 'ขอผ่อนผัน'"> <q-item
<q-btn v-if="props.row.Status === 'ยังไม่บรรจุ'"
color="blue" clickable
flat v-close-popup
dense @click="openAppointModal"
round >
size="14px" <q-item-section style="min-width: 0px;" avatar class="q-py-sm">
icon="mdi-information-outline" <q-icon color="primary" size="xs" name="mdi-bookmark-outline" />
@click="editDetail(props.row, 'waitInfo')" </q-item-section>
/> <q-item-section>เลอกหนวยงานทบบรรจ</q-item-section>
<q-btn </q-item>
color="red" <q-separator />
flat <q-item
dense v-if="props.row.Status === 'ยังไม่บรรจุ'"
round clickable
size="14px" v-close-popup
icon="mdi-account-remove"
@click="editDetail(props.row, 'cancel')"
/>
</div>
<div v-else-if="props.row.Status === 'ยังไม่บรรจุ'">
<q-btn
color="blue"
flat
dense
round
size="14px"
icon="mdi-account-alert"
@click="editDetail(props.row, 'wait')" @click="editDetail(props.row, 'wait')"
/> >
<q-btn <q-item-section style="min-width: 0px;" avatar class="q-py-sm">
color="red" <q-icon color="blue" size="xs" name="mdi-account-alert-outline" />
flat </q-item-section>
dense <q-item-section>ขอผอนผ</q-item-section>
round </q-item>
size="14px" <q-item
icon="mdi-account-remove" v-else-if="props.row.Status === 'ขอผ่อนผัน'"
clickable
v-close-popup
@click="editDetail(props.row, 'waitInfo')"
>
<q-item-section style="min-width: 0px;" avatar class="q-py-sm">
<q-icon color="blue" size="xs" name="mdi-account-details-outline" />
</q-item-section>
<q-item-section>อมลการผอนผ</q-item-section>
</q-item>
<q-separator />
<q-item
v-if="props.row.Status === 'ยังไม่บรรจุ' ||
props.row.Status === 'เตรียมบรรจุ'
"
clickable
v-close-popup
@click="editDetail(props.row, 'cancel')" @click="editDetail(props.row, 'cancel')"
/> >
</div> <q-item-section style="min-width: 0px;" avatar class="q-py-sm">
<div v-else align="right"> <q-icon color="pink" size="xs" name="mdi-account-cancel-outline" />
<q-btn </q-item-section>
color="red" <q-item-section>สละสทธ</q-item-section>
flat </q-item>
dense </q-list>
round </q-menu>
size="14px" </q-btn>
icon="mdi-account-remove"
@click="editDetail(props.row, 'cancel')"
/>
</div>
</q-td> </q-td>
</q-tr> </q-tr>
</template> </template>
@ -1411,13 +1326,24 @@ const listKeyId = (data: any) => {
<q-item <q-item
clickable clickable
:active="clickAction === prop.node.keyId" :active="clickAction === prop.node.keyId"
@click="clickAction = listKeyId(prop)" @click="
clickAction =
prop.node.name == `ว่าง` ||
prop.node.name == `N/A` ||
prop.node.name == null
? listKeyId(prop)
: ''
"
active-class="my-list-link text-primary text-weight-medium" active-class="my-list-link text-primary text-weight-medium"
class="row items-center text-dark q-py-xs q-pl-sm rounded-borders my-list" :class="prop.node.name == `ว่าง` ||
prop.node.name == `N/A` ||
prop.node.name == null
? 'row items-center text-dark q-py-xs q-pl-sm rounded-borders my-list'
: 'row items-center text-dark q-py-xs q-pl-sm rounded-borders my-list disabled'
"
> >
<img <img
v-if=" v-if="prop.node.avatar == '' ||
prop.node.avatar == '' ||
prop.node.avatar == prop.node.avatar ==
'https://cdn.quasar.dev/img/boy-avatar.png' 'https://cdn.quasar.dev/img/boy-avatar.png'
" "
@ -1433,8 +1359,7 @@ const listKeyId = (data: any) => {
/> />
<!--=====ตำแหนงวาง แดง=====--> <!--=====ตำแหนงวาง แดง=====-->
<div <div
v-if=" v-if="prop.node.name == `ว่าง` ||
prop.node.name == `ว่าง` ||
prop.node.name == `N/A` || prop.node.name == `N/A` ||
prop.node.name == null prop.node.name == null
" "
@ -1508,19 +1433,18 @@ const listKeyId = (data: any) => {
:borderless="!edit" :borderless="!edit"
:model-value="date2Thai(date)" :model-value="date2Thai(date)"
:rules="[ :rules="[
(val:string) => (val: string) =>
!!val || !!val ||
`${'กรุณาเลือกวัน เดือน ปี รับตำแหน่ง'}`, `${'วันที่รายงานตัว'}`,
]" ]"
:label="`${'วัน เดือน ปี รับตำแหน่ง'}`" :label="`${'วันที่รายงานตัว'}`"
hide-bottom-space hide-bottom-space
> >
<template v-slot:prepend> <template v-slot:prepend>
<q-icon <q-icon
name="event" name="event"
class="cursor-pointer" class="cursor-pointer"
:style=" :style="edit
edit
? 'color: var(--q-primary)' ? 'color: var(--q-primary)'
: 'color: var(--q-grey)' : 'color: var(--q-grey)'
" "
@ -1613,7 +1537,7 @@ const listKeyId = (data: any) => {
:readonly="!edit" :readonly="!edit"
:borderless="!edit" :borderless="!edit"
v-model="amount" v-model="amount"
:rules="[(val:string) => !!val || `${'กรุณากรอกเงินเดือน'}`]" :rules="[(val: string) => !!val || `${'กรุณากรอกเงินเดือน'}`]"
:label="`${'เงินเดือน'}`" :label="`${'เงินเดือน'}`"
@update:modelValue="clickEditRow" @update:modelValue="clickEditRow"
type="number" type="number"
@ -1630,7 +1554,7 @@ const listKeyId = (data: any) => {
:borderless="!edit" :borderless="!edit"
v-model="positionSalaryAmount" v-model="positionSalaryAmount"
:rules="[ :rules="[
(val:string) => !!val || `${'กรุณากรอกเงินประจำตำแหน่ง'}`, (val: string) => !!val || `${'กรุณากรอกเงินประจำตำแหน่ง'}`,
]" ]"
:label="`${'เงินประจำตำแหน่ง'}`" :label="`${'เงินประจำตำแหน่ง'}`"
@update:modelValue="clickEditRow" @update:modelValue="clickEditRow"
@ -1667,7 +1591,7 @@ const listKeyId = (data: any) => {
:borderless="!edit" :borderless="!edit"
v-model="salaryClass" v-model="salaryClass"
:rules="[ :rules="[
(val:string) => (val: string) =>
!!val || `${'กรุณากรอกตำแหน่ง (รายละเอียด)'}`, !!val || `${'กรุณากรอกตำแหน่ง (รายละเอียด)'}`,
]" ]"
:label="`${'ตำแหน่ง (รายละเอียด)'}`" :label="`${'ตำแหน่ง (รายละเอียด)'}`"
@ -1707,9 +1631,9 @@ const listKeyId = (data: any) => {
hide-bottom-space hide-bottom-space
use-input use-input
input-debounce="0" input-debounce="0"
@filter="(inputValue:any, @filter="(inputValue: any,
doneFn:Function) => filterSelector(inputValue, doneFn,'8' doneFn: Function) => filterSelector(inputValue, doneFn, '8'
) " )"
/> />
</div> </div>
<div class="col-xs-12 col-sm-12 col-md-12"> <div class="col-xs-12 col-sm-12 col-md-12">
@ -1722,7 +1646,7 @@ const listKeyId = (data: any) => {
:borderless="!edit" :borderless="!edit"
v-model="salaryRef" v-model="salaryRef"
:rules="[ :rules="[
(val:string) => !!val || `${'กรุณากรอกเอกสารอ้างอิง'}`, (val: string) => !!val || `${'กรุณากรอกเอกสารอ้างอิง'}`,
]" ]"
:label="`${'เอกสารอ้างอิง'}`" :label="`${'เอกสารอ้างอิง'}`"
@update:modelValue="clickEditRow" @update:modelValue="clickEditRow"
@ -1800,6 +1724,7 @@ const listKeyId = (data: any) => {
</q-card> </q-card>
</q-dialog> </q-dialog>
<!-- dialog ขอผอนผ / สละสทธ -->
<q-dialog v-model="modalwaitInfo" persistent> <q-dialog v-model="modalwaitInfo" persistent>
<q-card style="width: 500px; max-width: 500px"> <q-card style="width: 500px; max-width: 500px">
<q-form ref="myForm"> <q-form ref="myForm">

View file

@ -1,43 +1,6 @@
<template> <template>
<div class="q-px-md q-pb-md"> <div class="q-px-md q-pb-md">
<div class="col-12 row q-py-sm" v-if="nornmalData == false"> <div class="col-12 row q-py-sm" v-if="nornmalData == false">
<q-btn
size="12px"
v-if="!editvisible"
flat
round
:disabled="editvisible"
:color="editvisible ? 'grey-7' : 'primary'"
@click="clickEdit"
icon="mdi-pencil-outline"
>
<q-tooltip>แกไขขอม</q-tooltip>
</q-btn>
<q-btn
size="12px"
flat
round
v-if="editvisible"
:disabled="!editvisible"
:color="!editvisible ? 'grey-7' : 'red'"
@click="clickCancel"
icon="mdi-undo"
>
<q-tooltip>ยกเล</q-tooltip>
</q-btn>
<div class="q-px-sm">
<q-btn
flat
round
:disabled="editvisible == false"
:color="editvisible == false ? 'grey-7' : 'public'"
@click="add"
icon="mdi-content-save-outline"
>
<q-tooltip>นทกขอม</q-tooltip>
</q-btn>
</div>
<q-space /> <q-space />
<div class="items-center" style="display: flex"> <div class="items-center" style="display: flex">
<div <div

View file

@ -9,7 +9,7 @@ interface TableName {
UnitGroup: string; UnitGroup: string;
Unit: string; Unit: string;
ReportingDate: string; //วันที่รายงานตัว ReportingDate: string; //วันที่รายงานตัว
BMAOfficer: boolean; BMAOfficer: string;
Status: string; Status: string;
checkList: any; checkList: any;
address: string; address: string;
@ -20,7 +20,7 @@ interface TableName {
number: number; number: number;
examCount: number; examCount: number;
scoreResult: { scoreResult: {
scoreAFull:number scoreAFull: number;
scoreA: number; scoreA: number;
scoreBFull: number; scoreBFull: number;
scoreB: number; scoreB: number;

View file

@ -723,6 +723,7 @@ if (keycloak.tokenParsed != null) {
dense-toggle dense-toggle
:label="subMenu.label" :label="subMenu.label"
v-if="subMenu.key !== 5.1" v-if="subMenu.key !== 5.1"
class="expan2"
dense dense
> >
<q-item <q-item
@ -891,17 +892,20 @@ if (keycloak.tokenParsed != null) {
</template> </template>
<style> <style>
.menuSub .q-item__section--avatar, .menu .q-item__section--avatar{
min-width: 0px;
}
.menu { .menu {
padding-bottom: 5px; padding-bottom: 5px;
padding-top: 5px; padding-top: 5px;
border-radius: 0 100px 100px 0; border-radius: 0 100px 100px 0;
margin-right: 4%; margin-right: 2%;
} }
.menuActive { .menuActive {
background: #212a2f; background: #212a2f;
border-radius: 0 100px 100px 0; border-radius: 0 100px 100px 0;
margin-right: 4%; margin-right: 2%;
} }
.menuActiveMini { .menuActiveMini {
@ -909,17 +913,22 @@ if (keycloak.tokenParsed != null) {
} }
.menuSub .q-item { .menuSub .q-item {
border-radius: 0 100px 100px 0; border-radius: 0 100px 100px 0;
margin-right: 4%; margin-right: 2%;
}
.expan2 .q-item {
padding-left: 10%;
} }
/* .menuSubAct { /* .menuSubAct {
background: #1e2529d9; background: #1e2529d9;
} */ } */
.expan2 .menuSubHover{
.menuSubHover {
padding-left: 30%; padding-left: 30%;
border-radius: 20px; border-radius: 20px;
} }
.menuSubHover{
padding-left: 25%;
border-radius: 20px;
}
.menuSub .q-expansion-item__content { .menuSub .q-expansion-item__content {
background: #212a2f; background: #212a2f;
padding: 5px 0px; padding: 5px 0px;