Merge branch 'develop' into devTee
This commit is contained in:
commit
769d946a73
17 changed files with 259 additions and 98 deletions
|
|
@ -85,7 +85,6 @@ const pagination = ref({
|
|||
|
||||
/**
|
||||
* ปิดปุ่มย้ายตำแหน่ง
|
||||
*
|
||||
* เมื่อไม่ได้เลือกตำแหน่งที่ต้องการย้ายและหน่วยงานที่ต้องการย้ายปุ่มย้ายตำแหน่งจะปืด
|
||||
*/
|
||||
const isDisable = computed(() => {
|
||||
|
|
@ -94,17 +93,13 @@ const isDisable = computed(() => {
|
|||
} else return false;
|
||||
});
|
||||
|
||||
/**
|
||||
* function เลือกข้อมูลหน่วยงาน
|
||||
*/
|
||||
/** function เลือกข้อมูลหน่วยงาน*/
|
||||
function updateSelected(data: DataTree) {
|
||||
levelTree.value = data.orgLevel;
|
||||
selectedTree.value = data.orgTreeId;
|
||||
}
|
||||
|
||||
/**
|
||||
* function ยืนยันการย้ายแหน่งจากหน่วยงาน/ส่วนราชการปัจจุบัน
|
||||
*/
|
||||
/** function ยืนยันการย้ายแหน่งจากหน่วยงาน/ส่วนราชการปัจจุบัน*/
|
||||
function onClickMovePos() {
|
||||
if (selectedTree.value === "" || selectedTree.value === null) {
|
||||
dialogMessageNotify($q, "กรุณาเลือกหน่วยงานที่จะย้ายไป");
|
||||
|
|
@ -156,9 +151,7 @@ function onSearchData() {
|
|||
props.fetchDataTable?.(store.treeId, store.level, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* ดูการเปลี่ยนแปลง modal เมื่อเป็น true
|
||||
*/
|
||||
/** ดูการเปลี่ยนแปลง modal เมื่อเป็น true*/
|
||||
watch(
|
||||
() => modal.value,
|
||||
() => {
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ const reqMaster = reactive<FilterMaster>({
|
|||
revisionId: "",
|
||||
});
|
||||
const totalPage = ref<number>(1);
|
||||
const totalData = ref<number>(1);
|
||||
const action1 = ref<boolean>(false);
|
||||
const posMaster = ref<PosMaster2[]>([]);
|
||||
const shortName = ref<string>("");
|
||||
|
|
@ -116,6 +117,7 @@ async function fetchDataTable(id: string, level: number, action: boolean) {
|
|||
.then(async (res) => {
|
||||
const dataMain: PosMaster[] = [];
|
||||
totalPage.value = Math.ceil(res.data.result.total / reqMaster.pageSize);
|
||||
totalData.value = res.data.result.total;
|
||||
res.data.result.data.forEach((e: PosMaster) => {
|
||||
const p = e.positions;
|
||||
if (p.length !== 0) {
|
||||
|
|
@ -334,6 +336,7 @@ onMounted(async () => {
|
|||
v-model:req-master="reqMaster"
|
||||
v-model:total-page="totalPage"
|
||||
v-model:org-root-id="orgRootId"
|
||||
v-model:total-data="totalData"
|
||||
:short-name="shortName"
|
||||
:main-tree="mainTree"
|
||||
:fetch-data-table="fetchDataTable"
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ const orgLevel = defineModel<number>("orgLevel", { required: true });
|
|||
const treeId = defineModel<string>("treeId", { required: true });
|
||||
const reqMaster = defineModel<FilterMaster>("reqMaster", { required: true });
|
||||
const totalPage = defineModel<number>("totalPage", { required: true });
|
||||
const totalData = defineModel<number>("totalData", { required: true });
|
||||
const posMaster = defineModel<PosMaster2[]>("posMaster", { required: true });
|
||||
const orgRootId = defineModel<string>("orgRootId", { required: true });
|
||||
const props = defineProps({
|
||||
|
|
@ -887,6 +888,7 @@ watch(
|
|||
</q-tr>
|
||||
</template>
|
||||
<template v-slot:pagination="scope">
|
||||
ทั้งหมด {{ totalData }} รายการ
|
||||
<q-pagination
|
||||
v-model="reqMaster.page"
|
||||
active-color="primary"
|
||||
|
|
|
|||
|
|
@ -32,8 +32,6 @@ const filterKeyword = ref<string>("");
|
|||
const filterKeywordOrder = ref<string>("");
|
||||
const modalOrder = ref<boolean>(false);
|
||||
|
||||
const total = ref<number>(0);
|
||||
const totalList = ref<number>(1);
|
||||
const pagination = ref({
|
||||
sortBy: "createdAt",
|
||||
descending: true,
|
||||
|
|
@ -82,11 +80,6 @@ const columns = ref<QTableProps["columns"]>([
|
|||
},
|
||||
]);
|
||||
|
||||
function updatePagination(newPagination: any) {
|
||||
pagination.value.page = 1;
|
||||
pagination.value.rowsPerPage = newPagination.rowsPerPage;
|
||||
}
|
||||
|
||||
/** ดึงข้อมูลหลัก */
|
||||
async function getData() {
|
||||
showLoader();
|
||||
|
|
@ -96,18 +89,13 @@ async function getData() {
|
|||
const data = await res.data.result;
|
||||
rows.value = data;
|
||||
rowsData.value = data;
|
||||
hideLoader();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
hideLoader();
|
||||
})
|
||||
.finally(() => {});
|
||||
}
|
||||
|
||||
/** reset ฟิลเตอร์ */
|
||||
function resetFilter() {
|
||||
filterKeyword.value = "";
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -126,15 +114,16 @@ function onDelete(id: string) {
|
|||
showLoader();
|
||||
http
|
||||
.delete(config.API.appointMain + `/${id}`)
|
||||
.then(async (res) => {
|
||||
.then(async () => {
|
||||
await getData();
|
||||
success($q, "ลบข้อมูลสำเร็จ");
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
hideLoader();
|
||||
})
|
||||
.finally(() => {});
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -200,7 +189,6 @@ onMounted(async () => {
|
|||
|
||||
<q-space />
|
||||
<q-input
|
||||
class="col-xs-12 col-sm-3 col-md-2 q-mr-sm"
|
||||
standout
|
||||
dense
|
||||
v-model="filterKeyword"
|
||||
|
|
@ -226,7 +214,6 @@ onMounted(async () => {
|
|||
:options="columns"
|
||||
option-value="name"
|
||||
style="min-width: 140px"
|
||||
class="col-xs-12 col-sm-3 col-md-2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -554,7 +554,6 @@ onMounted(async () => {
|
|||
<q-space />
|
||||
|
||||
<q-input
|
||||
class="col-xs-12 col-sm-3 col-md-2"
|
||||
standout
|
||||
dense
|
||||
v-model="filterKeyword"
|
||||
|
|
@ -580,7 +579,6 @@ onMounted(async () => {
|
|||
:options="columns"
|
||||
option-value="name"
|
||||
style="min-width: 140px"
|
||||
class="col-xs-12 col-sm-3 col-md-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
|
|
@ -701,7 +699,6 @@ onMounted(async () => {
|
|||
v-model="formProbation.keyword"
|
||||
ref="filterRef2"
|
||||
outlined
|
||||
|
||||
placeholder="ค้นหา"
|
||||
@keydown.enter.prevent="filterKeyword2Fn(formProbation.page)"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import { usePlacementDataStore } from "@/modules/05_placement/store";
|
|||
|
||||
import type { ItemTabs } from "@/modules/05_placement/interface/request/Main";
|
||||
|
||||
import AppointPage from "@/modules/05_placement/components/probation/MainAppoint.vue";
|
||||
import ProbationPage from "@/modules/05_placement/components/probation/MainProbation.vue";
|
||||
import AppointPage from "@/modules/05_placement/components/probation/MainAppoint.vue";
|
||||
|
||||
const store = usePlacementDataStore();
|
||||
|
||||
|
|
@ -38,9 +38,12 @@ const tabsManu = ref<ItemTabs[]>([
|
|||
<q-separator />
|
||||
<q-tab-panels v-model="store.tabsMain" animated>
|
||||
<q-tab-panel name="probation" class="q-pa-sm">
|
||||
<!-- รายการผู้ทดลองปฏิบัติหน้าที่ราชการ -->
|
||||
<ProbationPage />
|
||||
</q-tab-panel>
|
||||
|
||||
<q-tab-panel name="appoint" class="q-pa-none">
|
||||
<!-- แต่งตั้งคณะกรรมการฯ -->
|
||||
<AppointPage />
|
||||
</q-tab-panel>
|
||||
</q-tab-panels>
|
||||
|
|
|
|||
|
|
@ -403,7 +403,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<q-space />
|
||||
<q-input
|
||||
class="col-xs-12 col-sm-3 col-md-2"
|
||||
standout
|
||||
dense
|
||||
v-model="filterKeyword"
|
||||
|
|
@ -429,7 +428,6 @@ onMounted(async () => {
|
|||
:options="columns"
|
||||
option-value="name"
|
||||
style="min-width: 140px"
|
||||
class="col-xs-12 col-sm-3 col-md-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
|
|
|
|||
|
|
@ -127,11 +127,10 @@ watch(
|
|||
<q-card-section class="q-pt-none">
|
||||
<div class="col-xs-12 col-sm-12 col-md-12 row q-col-gutter-md">
|
||||
<div class="col-12 q-mt-sm">
|
||||
<q-table
|
||||
<d-table
|
||||
ref="table"
|
||||
flat
|
||||
bordered
|
||||
class="custom-header-table"
|
||||
:columns="columns"
|
||||
:rows="row"
|
||||
dense
|
||||
|
|
@ -164,7 +163,7 @@ watch(
|
|||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
</q-table>
|
||||
</d-table>
|
||||
</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
|
|
@ -172,31 +171,4 @@ watch(
|
|||
</q-dialog>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.custom-header-table {
|
||||
height: auto;
|
||||
.q-table tr:nth-child(odd) td {
|
||||
background: white;
|
||||
}
|
||||
.q-table tr:nth-child(even) td {
|
||||
background: #f8f8f8;
|
||||
}
|
||||
|
||||
.q-table thead tr {
|
||||
background: #ecebeb;
|
||||
}
|
||||
|
||||
.q-table thead tr th {
|
||||
position: sticky;
|
||||
z-index: 1;
|
||||
}
|
||||
/* this will be the loading indicator */
|
||||
.q-table thead tr:last-child th {
|
||||
/* height of all previous header rows */
|
||||
top: 48px;
|
||||
}
|
||||
.q-table thead tr:first-child th {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style lang="scss" scoped></style>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, computed } from "vue";
|
||||
const props = defineProps({
|
||||
columns: {
|
||||
type: Array as () => any[],
|
||||
|
|
@ -9,6 +10,17 @@ const props = defineProps({
|
|||
require: true,
|
||||
},
|
||||
});
|
||||
|
||||
const total = computed(() => {
|
||||
return props.row?.length;
|
||||
});
|
||||
|
||||
const pagination = ref({
|
||||
sortBy: "desc",
|
||||
descending: false,
|
||||
page: 1,
|
||||
rowsPerPage: 10,
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
@ -22,6 +34,7 @@ const props = defineProps({
|
|||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
virtual-scroll
|
||||
class="row col-12"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
<q-tr :props="props" class="bg-grey-2">
|
||||
|
|
@ -40,6 +53,20 @@ const props = defineProps({
|
|||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
|
||||
<template v-slot:pagination="scope">
|
||||
ทั้งหมด {{ total }} รายการ
|
||||
<q-pagination
|
||||
v-model="pagination.page"
|
||||
active-color="primary"
|
||||
color="dark"
|
||||
:max="scope.pagesNumber"
|
||||
:max-pages="5"
|
||||
size="sm"
|
||||
boundary-links
|
||||
direction-links
|
||||
></q-pagination>
|
||||
</template>
|
||||
</q-table>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, reactive, onMounted } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
|
||||
import type { QTableProps } from "quasar";
|
||||
import type { DataTrainingTopics } from "@/modules/15_development/interface/index/Main";
|
||||
import type {
|
||||
FormAddHistory,
|
||||
FormAddHistoryProject,
|
||||
|
|
@ -55,9 +57,36 @@ const formMainProject = reactive<FormAddHistoryProject>({
|
|||
organizingTraining: "", //หน่วยงานที่รับผิดชอบจัดการอบรม
|
||||
});
|
||||
|
||||
function getClass() {
|
||||
return "inputgreen";
|
||||
}
|
||||
const rows = ref<DataTrainingTopics[]>([]);
|
||||
const columns = ref<QTableProps["columns"]>([
|
||||
{
|
||||
name: "topicAcademic",
|
||||
align: "left",
|
||||
label: "หัวข้อ/ประเด็นการฝึกอบรม ศึกษาดูงาน",
|
||||
sortable: false,
|
||||
field: "topicAcademic",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
{
|
||||
name: "addressAcademic",
|
||||
align: "left",
|
||||
label: "สถานที่ฝึกอบรม ศึกษาดูงาน",
|
||||
sortable: true,
|
||||
field: "addressAcademic",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
{
|
||||
name: "province",
|
||||
align: "left",
|
||||
label: "จังหวัด",
|
||||
sortable: false,
|
||||
field: "province",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
]);
|
||||
|
||||
/** ดึงข้อมูล */
|
||||
async function fetchData() {
|
||||
|
|
@ -94,6 +123,7 @@ async function fetchData() {
|
|||
formMainProject.organizingTraining = data.org ? data.org : null;
|
||||
dateOrder.value = data.dateOrder;
|
||||
order.value = data.order;
|
||||
rows.value = data.academic
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
|
|
@ -123,7 +153,7 @@ onMounted(async () => {
|
|||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
/>
|
||||
<span> ประวัติการฝึกอบรม/ดูงานของข้าราชการกรุงเทพมหานครสามัญ </span>
|
||||
<span> ประวัติการฝึกอบรม/ดูงาน ข้าราชการกรุงเทพมหานครสามัญ </span>
|
||||
</div>
|
||||
<q-card flat bordered>
|
||||
<q-card-section>
|
||||
|
|
@ -240,6 +270,15 @@ onMounted(async () => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="row col-12">
|
||||
<div class="col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
หน่วยงานที่รับผิดชอบ
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-12 col-md-7">
|
||||
{{ formMainProject.organizingTraining ?? "-" }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="row col-12">
|
||||
<div class="col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
หัวข้อการไปฝึกอบรม/ศึกษาดูงาน
|
||||
</div>
|
||||
|
|
@ -256,7 +295,7 @@ onMounted(async () => {
|
|||
<div class="col-12 col-sm-12 col-md-7">
|
||||
{{ formMainProject.location ?? "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
|
|
@ -296,7 +335,7 @@ onMounted(async () => {
|
|||
{{ formMainProject.totalTraining ?? "-" }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row col-12">
|
||||
<!-- <div class="row col-12">
|
||||
<div class="col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
หน่วยงานที่รับผิดชอบ
|
||||
</div>
|
||||
|
|
@ -304,12 +343,59 @@ onMounted(async () => {
|
|||
<div class="col-12 col-sm-12 col-md-7">
|
||||
{{ formMainProject.organizingTraining ?? "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
|
||||
<!--card หัวข้อและสถานที่ไปฝึกอบรม ศึกษาดูงาน -->
|
||||
<q-card flat bordered class="q-mt-md" style="border: 1px solid #d6dee1">
|
||||
<div class="col-12 text-weight-bold bg-grey-1 q-py-sm q-px-md">
|
||||
หัวข้อและสถานที่ไปฝึกอบรม ศึกษาดูงาน
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="row q-pa-md q-col-gutter-md">
|
||||
<div class="col-12">
|
||||
<d-table
|
||||
:columns="columns"
|
||||
:rows="rows"
|
||||
row-key="id"
|
||||
flat
|
||||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
<q-tr :props="props">
|
||||
<q-th
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<span class="text-weight-medium">{{ col.label }}</span>
|
||||
</q-th>
|
||||
</q-tr>
|
||||
</template>
|
||||
<template v-slot:body="props">
|
||||
<q-tr :props="props">
|
||||
<q-td
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<div class="table_ellipsis2">
|
||||
{{ col.value ?? "-" }}
|
||||
</div>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
</d-table>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
|
||||
<div class="row q-col-gutter-sm q-mt-md">
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
|
|
@ -318,10 +404,9 @@ onMounted(async () => {
|
|||
v-model="order"
|
||||
dense
|
||||
outlined
|
||||
:class="getClass()"
|
||||
hide-bottom-space
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกเลขที่คำสั่ง/เลขที่หนังสืออนุมัติ'}`,]"
|
||||
/>
|
||||
<!-- :rules="[(val:string) => !!val || `${'กรุณากรอกเลขที่คำสั่ง/เลขที่หนังสืออนุมัติ'}`,]" -->
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<datepicker
|
||||
|
|
@ -340,15 +425,14 @@ onMounted(async () => {
|
|||
<template #year-overlay-value="{ value }">
|
||||
{{ parseInt(value + 543) }}
|
||||
</template>
|
||||
<!-- :rules="[(val:string) => !!val || `${'กรุณากรอกคำสั่งลงวันที่/หนังสืออนุมัติลงวันที่'}`,]" -->
|
||||
<template #trigger>
|
||||
<q-input
|
||||
readonly
|
||||
outlined
|
||||
dense
|
||||
:class="getClass()"
|
||||
hide-bottom-space
|
||||
:model-value="dateOrder != null ? date2Thai(dateOrder) : null"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกคำสั่งลงวันที่/หนังสืออนุมัติลงวันที่'}`,]"
|
||||
label="คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, reactive, onMounted } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
|
||||
|
|
@ -11,9 +12,10 @@ import type {
|
|||
FormAddHistoryEmployee,
|
||||
FormAddHistoryProject,
|
||||
} from "@/modules/15_development/interface/request/Main";
|
||||
import type { QTableProps } from "quasar";
|
||||
import type { DataTrainingTopics } from "@/modules/15_development/interface/index/Main";
|
||||
|
||||
/** importStore*/
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
|
||||
/** use*/
|
||||
const $q = useQuasar();
|
||||
|
|
@ -57,10 +59,36 @@ const formMainProject = reactive<FormAddHistoryProject>({
|
|||
organizingTraining: "", //หน่วยงานที่รับผิดชอบจัดการอบรม
|
||||
});
|
||||
|
||||
/** class */
|
||||
function getClass() {
|
||||
return "inputgreen";
|
||||
}
|
||||
const rows = ref<DataTrainingTopics[]>([]);
|
||||
const columns = ref<QTableProps["columns"]>([
|
||||
{
|
||||
name: "topicAcademic",
|
||||
align: "left",
|
||||
label: "หัวข้อ/ประเด็นการฝึกอบรม ศึกษาดูงาน",
|
||||
sortable: false,
|
||||
field: "topicAcademic",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
{
|
||||
name: "addressAcademic",
|
||||
align: "left",
|
||||
label: "สถานที่ฝึกอบรม ศึกษาดูงาน",
|
||||
sortable: true,
|
||||
field: "addressAcademic",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
{
|
||||
name: "province",
|
||||
align: "left",
|
||||
label: "จังหวัด",
|
||||
sortable: false,
|
||||
field: "province",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
]);
|
||||
|
||||
/** ดึงข้อมูล */
|
||||
function fetchDataDetail() {
|
||||
|
|
@ -106,6 +134,7 @@ function fetchDataDetail() {
|
|||
|
||||
dateOrder.value = data.dateOrder;
|
||||
order.value = data.order;
|
||||
rows.value = data.academic;
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
|
|
@ -135,7 +164,7 @@ onMounted(() => {
|
|||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
/>
|
||||
<span> ประวัติฝึกอบรม/ดูงานลูกจ้าง </span>
|
||||
<span> ประวัติการฝึกอบรม/ดูงาน ลูกจ้าง </span>
|
||||
</div>
|
||||
<q-card flat bordered>
|
||||
<q-card-section>
|
||||
|
|
@ -243,6 +272,15 @@ onMounted(() => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="row col-12">
|
||||
<div class="col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
หน่วยงานที่รับผิดชอบ
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-12 col-md-7">
|
||||
{{ formMainProject.organizingTraining ?? "-" }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="row col-12">
|
||||
<div class="col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
หัวข้อการไปฝึกอบรม/ศึกษาดูงาน
|
||||
</div>
|
||||
|
|
@ -259,7 +297,7 @@ onMounted(() => {
|
|||
<div class="col-12 col-sm-12 col-md-7">
|
||||
{{ formMainProject.location ?? "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
|
|
@ -299,7 +337,7 @@ onMounted(() => {
|
|||
{{ formMainProject.totalTraining ?? "-" }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row col-12">
|
||||
<!-- <div class="row col-12">
|
||||
<div class="col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
หน่วยงานที่รับผิดชอบ
|
||||
</div>
|
||||
|
|
@ -307,12 +345,59 @@ onMounted(() => {
|
|||
<div class="col-12 col-sm-12 col-md-7">
|
||||
{{ formMainProject.organizingTraining ?? "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
|
||||
<!--card หัวข้อและสถานที่ไปฝึกอบรม ศึกษาดูงาน-->
|
||||
<q-card flat bordered class="q-mt-md" style="border: 1px solid #d6dee1">
|
||||
<div class="col-12 text-weight-bold bg-grey-1 q-py-sm q-px-md">
|
||||
หัวข้อและสถานที่ไปฝึกอบรม ศึกษาดูงาน
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="row q-pa-md q-col-gutter-md">
|
||||
<div class="col-12">
|
||||
<d-table
|
||||
:columns="columns"
|
||||
:rows="rows"
|
||||
row-key="id"
|
||||
flat
|
||||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
<q-tr :props="props">
|
||||
<q-th
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<span class="text-weight-medium">{{ col.label }}</span>
|
||||
</q-th>
|
||||
</q-tr>
|
||||
</template>
|
||||
<template v-slot:body="props">
|
||||
<q-tr :props="props">
|
||||
<q-td
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<div class="table_ellipsis2">
|
||||
{{ col.value ?? "-" }}
|
||||
</div>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
</d-table>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
|
||||
<div class="row q-col-gutter-sm q-mt-md">
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
|
|
@ -321,7 +406,6 @@ onMounted(() => {
|
|||
v-model="order"
|
||||
dense
|
||||
outlined
|
||||
:class="getClass()"
|
||||
hide-bottom-space
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกเลขที่คำสั่ง/เลขที่หนังสืออนุมัติ'}`,]"
|
||||
/>
|
||||
|
|
@ -348,7 +432,6 @@ onMounted(() => {
|
|||
readonly
|
||||
outlined
|
||||
dense
|
||||
:class="getClass()"
|
||||
hide-bottom-space
|
||||
:model-value="dateOrder != null ? date2Thai(dateOrder) : null"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกคำสั่งลงวันที่/หนังสืออนุมัติลงวันที่'}`,]"
|
||||
|
|
|
|||
|
|
@ -166,6 +166,12 @@ interface DataItemsDevelopment {
|
|||
label: string;
|
||||
}
|
||||
|
||||
interface DataTrainingTopics {
|
||||
topicAcademic: "";
|
||||
addressAcademic: "";
|
||||
province: "";
|
||||
}
|
||||
|
||||
export type {
|
||||
DataOption,
|
||||
DataOptionCheckBox,
|
||||
|
|
@ -181,4 +187,5 @@ export type {
|
|||
PersonData,
|
||||
StrategyNode,
|
||||
DataItemsDevelopment,
|
||||
DataTrainingTopics,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ function onDownload(type: string) {
|
|||
})
|
||||
.then((res) => {
|
||||
const dataList = res.data.result;
|
||||
genReportXLSX(dataList, "รายการประวัติฝึกอบรม/ดูงานลูกจ้าง", type);
|
||||
genReportXLSX(dataList, "รายการประวัติฝึกอบรม/ดูงาน ลูกจ้าง", type);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
|
|
@ -250,7 +250,7 @@ onMounted(async () => {
|
|||
|
||||
<template>
|
||||
<div class="toptitle text-dark col-12 row items-center">
|
||||
รายการประวัติฝึกอบรม/ดูงานลูกจ้าง
|
||||
รายการประวัติฝึกอบรม/ดูงาน ลูกจ้าง
|
||||
</div>
|
||||
<q-card flat bordered class="q-pa-md">
|
||||
<div class="row no-wrap shadow-1 justify-between">
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ function fetchListOrg() {
|
|||
}
|
||||
|
||||
/**
|
||||
* function เรียกข้อมูลรายการประวัติการฝึกอบรม/ดูงานของข้าราชการกรุงเทพมหานครสามัญ
|
||||
* function เรียกข้อมูลรายการประวัติการฝึกอบรม/ดูงาน ข้าราชการกรุงเทพมหานครสามัญ
|
||||
*/
|
||||
async function getData() {
|
||||
showLoader();
|
||||
|
|
@ -224,7 +224,7 @@ function onDownload(type: string) {
|
|||
const dataList = await res.data.result;
|
||||
await genReportXLSX(
|
||||
dataList,
|
||||
"รายการประวัติการฝึกอบรม/ดูงานของข้าราชการกรุงเทพมหานครสามัญ",
|
||||
"รายการประวัติการฝึกอบรม/ดูงาน ข้าราชการกรุงเทพมหานครสามัญ",
|
||||
type
|
||||
);
|
||||
})
|
||||
|
|
@ -272,7 +272,7 @@ onMounted(() => {
|
|||
|
||||
<template>
|
||||
<div class="toptitle text-dark col-12 row items-center">
|
||||
รายการประวัติการฝึกอบรม/ดูงานของข้าราชการกรุงเทพมหานครสามัญ
|
||||
รายการประวัติการฝึกอบรม/ดูงาน ข้าราชการกรุงเทพมหานครสามัญ
|
||||
</div>
|
||||
<q-card flat bordered class="q-pa-md">
|
||||
<div class="row no-wrap shadow-1 justify-between">
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ const orgLevel = defineModel<number>("orgLevel", { required: true });
|
|||
const treeId = defineModel<string>("treeId", { required: true });
|
||||
const reqMaster = defineModel<FilterMaster>("reqMaster", { required: true });
|
||||
const totalPage = defineModel<number>("totalPage", { required: true });
|
||||
const totalData = defineModel<number>("totalData", { required: true });
|
||||
const posMaster = defineModel<PosMaster2[]>("posMaster", { required: true });
|
||||
const props = defineProps({
|
||||
filterKeyword: { type: Function, require: true, default: () => {} },
|
||||
|
|
@ -634,6 +635,7 @@ watch(
|
|||
</q-tr>
|
||||
</template>
|
||||
<template v-slot:pagination="scope">
|
||||
ทั้งหมด {{ totalData }} รายการ
|
||||
<q-pagination
|
||||
v-model="reqMaster.page"
|
||||
active-color="primary"
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ const reqMaster = reactive<FilterMaster>({
|
|||
revisionId: "",
|
||||
});
|
||||
const totalPage = ref<number>(1); //จำนวนหน้า
|
||||
const totalData = ref<number>(1); //จำนวนหน้า
|
||||
const action1 = ref<boolean>(false);
|
||||
const posMaster = ref<PosMaster2[]>([]); //รายการตำแหน่ง
|
||||
const shortName = ref<string>(""); //ชื่อย่อย
|
||||
|
|
@ -100,6 +101,7 @@ function fetchDataTable(id: string, level: number, action: boolean) {
|
|||
.then(async (res) => {
|
||||
const dataMain: PosMaster[] = [];
|
||||
totalPage.value = Math.ceil(res.data.result.total / reqMaster.pageSize);
|
||||
totalData.value = res.data.result.total;
|
||||
res.data.result.data.forEach((e: PosMaster) => {
|
||||
const p = e.positions;
|
||||
if (p.length !== 0) {
|
||||
|
|
@ -294,6 +296,7 @@ onMounted(() => {
|
|||
v-model:pos-master="posMaster"
|
||||
v-model:req-master="reqMaster"
|
||||
v-model:total-page="totalPage"
|
||||
v-model:total-data="totalData"
|
||||
:short-name="shortName"
|
||||
:main-tree="mainTree"
|
||||
:fetch-data-table="fetchDataTable"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue