เพิ่ม icon

This commit is contained in:
STW_TTTY\stwtt 2024-09-23 13:40:03 +07:00
parent 80856bbed0
commit 572ef18909
12 changed files with 310 additions and 209 deletions

View file

@ -6,8 +6,8 @@
v-if="!editvisible == true && publicNoBtn == false" v-if="!editvisible == true && publicNoBtn == false"
flat flat
round round
:disabled="editvisible == true" :disabled="editvisible"
:color="editvisible == true ? 'grey-7' : 'primary'" :color="editvisible ? 'grey-7' : 'primary'"
@click="edit" @click="edit"
icon="mdi-pencil-outline" icon="mdi-pencil-outline"
> >
@ -234,6 +234,7 @@
<!-- :rows-per-page-options="[0]" --> <!-- :rows-per-page-options="[0]" -->
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">
<q-th auto-width v-if="name == 'qualify'" />
<q-th auto-width v-if="boss == true" /> <q-th auto-width v-if="boss == true" />
<q-th v-for="col in props.cols" :key="col.name" :props="props"> <q-th v-for="col in props.cols" :key="col.name" :props="props">
<span class="text-weight-medium">{{ col.label }}</span> <span class="text-weight-medium">{{ col.label }}</span>
@ -362,6 +363,7 @@ const props = defineProps({
inputvisible: Array, inputvisible: Array,
inputvisibleFilter: String, inputvisibleFilter: String,
editvisible: Boolean, editvisible: Boolean,
name: String,
titleText: String, titleText: String,
optionsFilter: { optionsFilter: {
type: Array, type: Array,

View file

@ -158,12 +158,15 @@ const resetFilter = () => {
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">
<q-th auto-width v-if="name === 'หน่วยงาน'" />
<q-th auto-width v-if="name === 'ส่วนราชการ'" />
<q-th auto-width v-if="name === 'ตำแหน่ง/เงินเดือน'" /> <q-th auto-width v-if="name === 'ตำแหน่ง/เงินเดือน'" />
<q-th auto-width v-if="name === 'ตำแหน่ง/เงินเดือน'" /> <q-th auto-width v-if="name === 'ตำแหน่ง/เงินเดือน'" />
<q-th auto-width v-if="iconLeft == true" /> <q-th auto-width v-if="iconLeft == true" />
<q-th v-for="col in props.cols" :key="col.name" :props="props"> <q-th v-for="col in props.cols" :key="col.name" :props="props">
<span class="text-weight-medium">{{ col.label }}</span> <span class="text-weight-medium">{{ col.label }}</span>
</q-th> </q-th>
<q-th auto-width v-if="name === 'วิธีการชำระ'" />
<q-th auto-width v-if="name === 'ประวัติการเปลี่ยนชื่อ-นามสกุล'" /> <q-th auto-width v-if="name === 'ประวัติการเปลี่ยนชื่อ-นามสกุล'" />
</q-tr> </q-tr>
</template> </template>

View file

@ -1,5 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { checkPermission } from "@/utils/permissions"; import { checkPermission } from "@/utils/permissions";
import { ref } from "vue";
import { useRoute } from "vue-router";
const route = useRoute()
const checkRoutePermisson = ref<boolean>(
route.name == "qualifyPeriodEditDetail"
);
const props = defineProps({ const props = defineProps({
header: { header: {
type: String, type: String,
@ -127,7 +134,7 @@ const addleave = () => {
:disabled="disable" :disabled="disable"
:color="edit ? 'grey-7' : 'primary'" :color="edit ? 'grey-7' : 'primary'"
@click="ClickEdit" @click="ClickEdit"
icon="mdi-pencil-outline" icon="mdi-pencil"
> >
<q-tooltip>แกไขขอม</q-tooltip> <q-tooltip>แกไขขอม</q-tooltip>
</q-btn> </q-btn>
@ -172,14 +179,11 @@ const addleave = () => {
> >
<q-tooltip>เพมขอม</q-tooltip> <q-tooltip>เพมขอม</q-tooltip>
</q-btn> </q-btn>
<!-- <q-btn size="12px" flat round color="add" @click="add" :icon="iconAdd">
<q-tooltip>สรปวนลา</q-tooltip>
</q-btn> -->
</div> </div>
<div class="q-pl-sm" v-else> <div class="q-pl-sm" v-else>
<q-btn <q-btn
v-if="checkPermission($route)?.attrIsUpdate" v-if="checkPermission($route)?.attrIsUpdate && !checkRoutePermisson"
size="12px" size="12px"
flat flat
round round

View file

@ -18,6 +18,8 @@ const QualifyPeriod = () =>
import("@/modules/03_recruiting/views/02_qualify/Period.vue"); import("@/modules/03_recruiting/views/02_qualify/Period.vue");
const QualifyPeriodAdd = () => const QualifyPeriodAdd = () =>
import("@/modules/03_recruiting/views/02_qualify/PeriodAdd.vue"); import("@/modules/03_recruiting/views/02_qualify/PeriodAdd.vue");
const QualifyPeriodAddDetail = () =>
import("@/modules/03_recruiting/views/02_qualify/PeriodAdd.vue");
const QualifyPeriodStat = () => const QualifyPeriodStat = () =>
import("@/modules/03_recruiting/views/02_qualify/PeriodStat.vue"); import("@/modules/03_recruiting/views/02_qualify/PeriodStat.vue");
const QualifyPeriodStatDisable = () => const QualifyPeriodStatDisable = () =>
@ -132,6 +134,16 @@ export default [
Role: "STAFF", Role: "STAFF",
}, },
}, },
{
path: "/qualify/period-detail/:id",
name: "qualifyPeriodEditDetail",
component: QualifyPeriodAddDetail,
meta: {
Auth: true,
Key: "SYS_EXAM_SELECT",
Role: "STAFF",
},
},
{ {
path: "/qualify/period/add", path: "/qualify/period/add",
name: "qualifyPeriodAdd", name: "qualifyPeriodAdd",

View file

@ -431,59 +431,81 @@ onMounted(async () => {
:titleText="''" :titleText="''"
> >
<template #columns="props"> <template #columns="props">
<q-tr :props="props" class="cursor-pointer"> <q-tr :props="props">
<q-td> <q-td auto-width>
<q-btn <q-btn
icon="mdi-dots-horizontal-circle-outline"
color="secondary"
flat
round
dense
v-if=" v-if="
checkPermission($route)?.attrIsUpdate && checkPermission($route)?.attrIsCreate ||
checkPermission($route)?.attrIsGet checkPermission($route)?.attrIsDelete ||
checkPermission($route)?.attrIsGet ||
checkPermission($route)?.attrIsUpdate
" "
dense
size="12px"
flat
round
color="primary"
@click="clickEditPeriod(props.row.id)"
icon="mdi-pencil-outline"
> >
<q-tooltip>แกไขขอม</q-tooltip> <q-menu transition-show="jump-down" transition-hide="jump-up">
</q-btn> <q-list dense style="min-width: 100px">
<q-btn <q-item
v-if="checkPermission($route)?.attrIsDelete" v-if="checkPermission($route)?.attrIsGet"
dense clickable
size="12px" v-close-popup
flat @click="clickDetail(props.row.id)"
round >
color="red" <q-item-section style="min-width: 0px" avatar>
@click="clickDelete(props.row.id)" <q-icon color="info" size="xs" name="mdi-eye" />
icon="mdi-delete" </q-item-section>
> <q-item-section>รายละเอยด</q-item-section>
<q-tooltip>ลบขอม</q-tooltip> </q-item>
</q-btn>
<q-btn <q-item
v-if="checkPermission($route)?.attrIsGet" v-if="
color="info" checkPermission($route)?.attrIsUpdate &&
flat checkPermission($route)?.attrIsGet
dense "
round clickable
size="12px" v-close-popup
icon="mdi-history" @click="clickEditPeriod(props.row.id)"
@click="clickHistory(props.row.id)" >
> <q-item-section style="min-width: 0px" avatar>
<q-tooltip>แสดงประวการทำงาน</q-tooltip> <q-icon color="edit" size="xs" name="mdi-pencil" />
</q-item-section>
<q-item-section>แกไขขอม</q-item-section>
</q-item>
<q-item
v-if="checkPermission($route)?.attrIsDelete"
clickable
v-close-popup
@click="clickDelete(props.row.id)"
>
<q-item-section style="min-width: 0px" avatar>
<q-icon color="red" size="xs" name="mdi-delete" />
</q-item-section>
<q-item-section>ลบขอม</q-item-section>
</q-item>
<q-item
v-if="checkPermission($route)?.attrIsGet"
clickable
v-close-popup
@click="clickHistory(props.row.id)"
>
<q-item-section style="min-width: 0px" avatar>
<q-icon
color="deep-purple"
size="xs"
name="mdi-history"
/>
</q-item-section>
<q-item-section>แสดงประวการทำงาน</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn> </q-btn>
</q-td> </q-td>
<q-td <q-td v-for="col in props.cols" :key="col.name" :props="props">
v-for="col in props.cols"
:key="col.name"
:props="props"
@click="
checkPermission($route)?.attrIsGet
? clickDetail(props.row.id)
: undefined
"
>
<div v-if="col.name == 'no'"> <div v-if="col.name == 'no'">
{{ props.rowIndex + 1 }} {{ props.rowIndex + 1 }}
</div> </div>

View file

@ -398,57 +398,81 @@ onMounted(async () => {
:titleText="''" :titleText="''"
> >
<template #columns="props"> <template #columns="props">
<q-tr :props="props" class="cursor-pointer"> <q-tr :props="props">
<q-td> <q-td>
<q-btn <q-btn
icon="mdi-dots-horizontal-circle-outline"
color="secondary"
flat
round
dense
v-if=" v-if="
checkPermission($route)?.attrIsUpdate && checkPermission($route)?.attrIsCreate ||
checkPermission($route)?.attrIsGet checkPermission($route)?.attrIsDelete ||
checkPermission($route)?.attrIsGet ||
checkPermission($route)?.attrIsUpdate
" "
dense
size="12px"
flat
round
color="primary"
@click="clickEditPeriod(props.row.id)"
icon="mdi-pencil-outline"
> >
<q-tooltip>แกไขขอม</q-tooltip> <q-menu transition-show="jump-down" transition-hide="jump-up">
</q-btn> <q-list dense style="min-width: 100px">
<q-btn <q-item
v-if="checkPermission($route)?.attrIsDelete" v-if="checkPermission($route)?.attrIsGet"
dense clickable
size="12px" v-close-popup
flat @click="clickDetail(props.row.id)"
round >
color="red" <q-item-section style="min-width: 0px" avatar>
@click="clickDelete(props.row.id)" <q-icon color="info" size="xs" name="mdi-eye" />
icon="mdi-delete" </q-item-section>
> <q-item-section>รายละเอยด</q-item-section>
<q-tooltip>ลบขอม</q-tooltip> </q-item>
</q-btn>
<q-btn <q-item
v-if="checkPermission($route)?.attrIsGet" v-if="
color="info" checkPermission($route)?.attrIsUpdate &&
flat checkPermission($route)?.attrIsGet
dense "
round clickable
size="12px" v-close-popup
icon="mdi-history" @click="clickEditPeriod(props.row.id)"
@click="clickHistory(props.row.id)" >
> <q-item-section style="min-width: 0px" avatar>
<q-tooltip>แสดงประวการทำงาน</q-tooltip> <q-icon color="edit" size="xs" name="mdi-pencil" />
</q-item-section>
<q-item-section>แกไขขอม</q-item-section>
</q-item>
<q-item
v-if="checkPermission($route)?.attrIsDelete"
clickable
v-close-popup
@click="clickDelete(props.row.id)"
>
<q-item-section style="min-width: 0px" avatar>
<q-icon color="red" size="xs" name="mdi-delete" />
</q-item-section>
<q-item-section>ลบขอม</q-item-section>
</q-item>
<q-item
v-if="checkPermission($route)?.attrIsGet"
clickable
v-close-popup
@click="clickHistory(props.row.id)"
>
<q-item-section style="min-width: 0px" avatar>
<q-icon
color="deep-purple"
size="xs"
name="mdi-history"
/>
</q-item-section>
<q-item-section>แสดงประวการทำงาน</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn> </q-btn>
</q-td> </q-td>
<q-td <q-td v-for="col in props.cols" :key="col.name" :props="props">
v-for="col in props.cols"
:key="col.name"
:props="props"
@click="
checkPermission($route)?.attrIsGet && clickDetail(props.row.id)
"
>
<div v-if="col.name == 'no'"> <div v-if="col.name == 'no'">
{{ props.rowIndex + 1 }} {{ props.rowIndex + 1 }}
</div> </div>

View file

@ -215,15 +215,24 @@ onMounted(async () => {
:pagination="initialPagination" :pagination="initialPagination"
:nornmalData="true" :nornmalData="true"
:paging="true" :paging="true"
name="qualify"
> >
<template #columns="props"> <template #columns="props">
<q-tr :props="props" class="cursor-pointer"> <q-tr :props="props">
<q-td <q-td auto-width>
v-for="col in props.cols" <q-btn
:key="col.name" v-if="checkPermission($route)?.attrIsGet"
:props="props" flat
@click="checkPermission($route)?.attrIsGet && viewDetail(props.row)" dense
> round
color="info"
icon="mdi-eye"
@click="viewDetail(props.row)"
>
<q-tooltip>รายละเอยด</q-tooltip>
</q-btn>
</q-td>
<q-td v-for="col in props.cols" :key="col.name" :props="props">
<div v-if="col.name == 'no'"> <div v-if="col.name == 'no'">
{{ props.rowIndex + 1 }} {{ props.rowIndex + 1 }}
</div> </div>

View file

@ -276,6 +276,10 @@ function dateThaiRange(val: [Date, Date]) {
} }
} }
function openDetail(col: ResponsePeriodExam) {
router.push(`/qualify/period-detail/${col.id}`);
}
onMounted(async () => { onMounted(async () => {
hideLoader(); hideLoader();
await fetchData(); await fetchData();
@ -302,8 +306,34 @@ onMounted(async () => {
:titleText="''" :titleText="''"
> >
<template #columns="props"> <template #columns="props">
<q-tr :props="props" class="cursor-pointer"> <q-tr :props="props">
<q-td> <q-td auto-width>
<q-btn
v-if="checkPermission($route)?.attrIsGet"
flat
dense
round
color="info"
icon="mdi-eye"
@click="openDetail(props.row)"
>
<q-tooltip>รายละเอยด</q-tooltip>
</q-btn>
<q-btn
v-if="
checkPermission($route)?.attrIsUpdate &&
checkPermission($route)?.attrIsGet
"
flat
dense
round
color="edit"
icon="edit"
@click="clickEdit(props.row)"
>
<q-tooltip>แกไขขอม</q-tooltip>
</q-btn>
<q-btn <q-btn
v-if="checkPermission($route)?.attrIsDelete" v-if="checkPermission($route)?.attrIsDelete"
dense dense
@ -317,16 +347,7 @@ onMounted(async () => {
<q-tooltip>ลบขอม</q-tooltip> <q-tooltip>ลบขอม</q-tooltip>
</q-btn> </q-btn>
</q-td> </q-td>
<q-td <q-td v-for="col in props.cols" :key="col.name" :props="props">
v-for="col in props.cols"
:key="col.name"
:props="props"
@click="
checkPermission($route)?.attrIsGet
? clickEdit(props.row)
: undefined
"
>
<div v-if="col.name == 'no'" class="table_ellipsis2"> <div v-if="col.name == 'no'" class="table_ellipsis2">
{{ props.rowIndex + 1 }} {{ props.rowIndex + 1 }}
</div> </div>

View file

@ -31,6 +31,9 @@ const route = useRoute();
const { date2Thai, success, dateToISO, messageError, showLoader, hideLoader } = const { date2Thai, success, dateToISO, messageError, showLoader, hideLoader } =
mixin; mixin;
const checkRoutePermisson = ref<boolean>(
route.name == "qualifyPeriodEditDetail"
); // route
const myForm = ref<QForm | null>(null); //form data input const myForm = ref<QForm | null>(null); //form data input
const name = ref<string>(""); const name = ref<string>("");
const note = ref<string>(""); const note = ref<string>("");
@ -378,7 +381,7 @@ function filterSelector(val: any, update: Function, refData: string) {
/** /**
* update * update
* @param e * @param e
*/ */
async function updateYear(e: number) { async function updateYear(e: number) {
yearly.value = e; yearly.value = e;
@ -517,7 +520,7 @@ async function fileUploadDoc(files: any) {
} }
/** /**
* ลบไฟลจาก array * ลบไฟลจาก array
* @param files ไฟล * @param files ไฟล
*/ */
async function fileRemoveDoc(files: any) { async function fileRemoveDoc(files: any) {
@ -562,7 +565,7 @@ async function fileUploadImg(files: any) {
} }
/** /**
* ลบไฟลปจาก array * ลบไฟลปจาก array
* @param files * @param files
*/ */
async function fileRemoveImg(files: any) { async function fileRemoveImg(files: any) {
@ -734,7 +737,13 @@ onMounted(async () => {
class="q-mr-sm" class="q-mr-sm"
@click="clickBack" @click="clickBack"
/> />
{{ edit ? `แก้ไขรอบ` : "เพิ่มรอบคัดเลือก" }} {{
checkRoutePermisson
? "รายละเอียด"
: edit
? `แก้ไขรอบ`
: "เพิ่มรอบคัดเลือก"
}}
{{ {{
edit && announcementExam edit && announcementExam
? `${name} ครั้งที่ ${roundRaw}/${ ? `${name} ครั้งที่ ${roundRaw}/${
@ -763,6 +772,7 @@ onMounted(async () => {
v-model="name" v-model="name"
label="ชื่อรอบคัดเลือก/ชื่อประกาศ" label="ชื่อรอบคัดเลือก/ชื่อประกาศ"
dense dense
:readonly="checkRoutePermisson"
lazy-rules lazy-rules
:rules="[ :rules="[
(val) => !!val || `${'กรุณากรอกชื่อรอบคัดเลือก/ชื่อประกาศ'}`, (val) => !!val || `${'กรุณากรอกชื่อรอบคัดเลือก/ชื่อประกาศ'}`,
@ -773,6 +783,7 @@ onMounted(async () => {
<q-input <q-input
outlined outlined
v-model="round" v-model="round"
:readonly="checkRoutePermisson"
type="number" type="number"
label="รอบการสอบ(ครั้ง)" label="รอบการสอบ(ครั้ง)"
dense dense
@ -784,6 +795,7 @@ onMounted(async () => {
<q-input <q-input
outlined outlined
v-model="fee" v-model="fee"
:readonly="checkRoutePermisson"
type="number" type="number"
label="ค่าธรรมเนียม" label="ค่าธรรมเนียม"
dense dense
@ -799,6 +811,7 @@ onMounted(async () => {
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="yearly" v-model="yearly"
:locale="'th'" :locale="'th'"
:readonly="checkRoutePermisson"
autoApply autoApply
year-picker year-picker
:enableTimePicker="false" :enableTimePicker="false"
@ -812,6 +825,7 @@ onMounted(async () => {
<q-input <q-input
dense dense
outlined outlined
:readonly="checkRoutePermisson"
:model-value="yearly + 543" :model-value="yearly + 543"
:rules="[(val:string) => !!val || `${'กรุณาเลือกปีงบประมาณ'}`]" :rules="[(val:string) => !!val || `${'กรุณาเลือกปีงบประมาณ'}`]"
:label="`${'ปีงบประมาณ'}`" :label="`${'ปีงบประมาณ'}`"
@ -827,6 +841,7 @@ onMounted(async () => {
:locale="'th'" :locale="'th'"
autoApply autoApply
borderless borderless
:readonly="checkRoutePermisson"
:enableTimePicker="false" :enableTimePicker="false"
week-start="0" week-start="0"
> >
@ -840,6 +855,7 @@ onMounted(async () => {
<q-input <q-input
outlined outlined
dense dense
:readonly="checkRoutePermisson"
class="full-width datepicker q-mb-md" class="full-width datepicker q-mb-md"
:model-value="dateExam != null ? date2Thai(dateExam) : null" :model-value="dateExam != null ? date2Thai(dateExam) : null"
:label="`${'วันที่สอบ'}`" :label="`${'วันที่สอบ'}`"
@ -863,6 +879,7 @@ onMounted(async () => {
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="dateAnnouncement" v-model="dateAnnouncement"
:locale="'th'" :locale="'th'"
:readonly="checkRoutePermisson"
autoApply autoApply
borderless borderless
range range
@ -879,6 +896,7 @@ onMounted(async () => {
<q-input <q-input
outlined outlined
dense dense
:readonly="checkRoutePermisson"
class="full-width datepicker q-mb-md" class="full-width datepicker q-mb-md"
:model-value="dateThaiRange(dateAnnouncement)" :model-value="dateThaiRange(dateAnnouncement)"
:label="`${'วันที่ประกาศ'}`" :label="`${'วันที่ประกาศ'}`"
@ -903,6 +921,7 @@ onMounted(async () => {
:locale="'th'" :locale="'th'"
autoApply autoApply
clearValue clearValue
:readonly="checkRoutePermisson"
borderless borderless
range range
:enableTimePicker="false" :enableTimePicker="false"
@ -918,6 +937,7 @@ onMounted(async () => {
<q-input <q-input
outlined outlined
dense dense
:readonly="checkRoutePermisson"
class="full-width datepicker q-mb-md" class="full-width datepicker q-mb-md"
:model-value="dateThaiRange(dateRegister)" :model-value="dateThaiRange(dateRegister)"
:label="`${'วันที่สมัคร'}`" :label="`${'วันที่สมัคร'}`"
@ -943,6 +963,7 @@ onMounted(async () => {
<datepicker <datepicker
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="datePayment" v-model="datePayment"
:readonly="checkRoutePermisson"
:locale="'th'" :locale="'th'"
autoApply autoApply
borderless borderless
@ -958,6 +979,7 @@ onMounted(async () => {
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
:readonly="checkRoutePermisson"
outlined outlined
dense dense
class="full-width datepicker q-mb-md" class="full-width datepicker q-mb-md"
@ -984,6 +1006,7 @@ onMounted(async () => {
v-model="dateAnnounce" v-model="dateAnnounce"
:locale="'th'" :locale="'th'"
autoApply autoApply
:readonly="checkRoutePermisson"
borderless borderless
:enableTimePicker="false" :enableTimePicker="false"
week-start="0" week-start="0"
@ -997,6 +1020,7 @@ onMounted(async () => {
<template #trigger> <template #trigger>
<q-input <q-input
outlined outlined
:readonly="checkRoutePermisson"
dense dense
class="full-width datepicker q-mb-md" class="full-width datepicker q-mb-md"
:model-value=" :model-value="
@ -1018,55 +1042,7 @@ onMounted(async () => {
</template> </template>
</datepicker> </datepicker>
</div> </div>
<!-- <div class="col-xs-12 col-sm-3 col-md-3">
<selector
outlined
v-model="category"
:options="categoryOptions"
label="สังกัด"
clearable
option-value="id"
option-label="name"
emit-value
map-options
dense
lazy-rules
:rules="[(val:any) => !!val || `${'กรุณาเลือกสังกัด'}`]"
></selector>
</div> -->
<div class="col-12" v-if="announcementExam"> <div class="col-12" v-if="announcementExam">
<!-- <div class="row q-col-gutter-x-sm">
<div class="col-xs-12 col-sm-6 col-md-6">
<selector
outlined
v-model="organizationShortName"
:options="governmentCodeOption"
label="รหัสส่วนราชการ"
clearable
option-value="id"
option-label="name"
dense
lazy-rules
:rules="[(val:any) => !!val || `${'กรุณาเลือกรหัสส่วนราชการ'}`]"
@update:model-value="(value:any) => selectGovernmentCode(value)"
></selector>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<selector
outlined
v-model="organizationName"
:options="organizationNameOptions"
label="หน่วยงาน"
clearable
option-value="id"
option-label="name"
dense
lazy-rules
:rules="[(val:any) => !!val || `${'กรุณาเลือกหน่วยงาน'}`]"
@update:model-value="(value:any) => selectOrganization(value)"
></selector>
</div>
</div> -->
<div class="col-12 q-mb-sm"> <div class="col-12 q-mb-sm">
<q-separator size="5px" color="grey-2" /> <q-separator size="5px" color="grey-2" />
</div> </div>
@ -1091,6 +1067,7 @@ onMounted(async () => {
<q-btn <q-btn
color="red" color="red"
flat flat
v-if="!checkRoutePermisson"
dense dense
round round
size="14px" size="14px"
@ -1102,6 +1079,7 @@ onMounted(async () => {
<q-input <q-input
outlined outlined
dense dense
:readonly="checkRoutePermisson"
lazy-rules lazy-rules
v-model="props.row.code" v-model="props.row.code"
:rules="[ :rules="[
@ -1119,6 +1097,7 @@ onMounted(async () => {
<selector <selector
class="" class=""
outlined outlined
:readonly="checkRoutePermisson"
use-input use-input
v-model="props.row.position" v-model="props.row.position"
:options="positionPathOptions" :options="positionPathOptions"
@ -1158,6 +1137,7 @@ onMounted(async () => {
outlined outlined
use-input use-input
v-model="props.row.level" v-model="props.row.level"
:readonly="checkRoutePermisson"
:options="positionLevelOptions" :options="positionLevelOptions"
option-value="id" option-value="id"
option-label="name" option-label="name"
@ -1194,12 +1174,14 @@ onMounted(async () => {
v-model="props.row.highDegree" v-model="props.row.highDegree"
label="ประเภททั่วไป" label="ประเภททั่วไป"
color="teal" color="teal"
:disable="checkRoutePermisson"
val="0" val="0"
/> />
<q-radio <q-radio
v-model="props.row.highDegree" v-model="props.row.highDegree"
label="ประเภทวิชาการ" label="ประเภทวิชาการ"
color="teal" color="teal"
:disable="checkRoutePermisson"
val="1" val="1"
/> />
</q-td> </q-td>
@ -1209,6 +1191,7 @@ onMounted(async () => {
outlined outlined
v-model="props.row.type" v-model="props.row.type"
:options="examTypeOptions" :options="examTypeOptions"
:readonly="checkRoutePermisson"
option-value="id" option-value="id"
option-label="name" option-label="name"
dense dense
@ -1237,7 +1220,7 @@ onMounted(async () => {
val="payment1" val="payment1"
color="blue" color="blue"
class="q-mr-md" class="q-mr-md"
:disable="fee <= 0" :disable="fee <= 0 || checkRoutePermisson"
/> />
<q-item-section avatar> <q-item-section avatar>
<q-avatar size="28px"> <q-avatar size="28px">
@ -1259,7 +1242,7 @@ onMounted(async () => {
val="payment2" val="payment2"
color="blue" color="blue"
class="q-mr-md" class="q-mr-md"
:disable="fee <= 0" :disable="fee <= 0 || checkRoutePermisson"
/> />
<q-item-section avatar> <q-item-section avatar>
<q-icon name="mdi-cash" color="positive" size="33px" /> <q-icon name="mdi-cash" color="positive" size="33px" />
@ -1281,7 +1264,7 @@ onMounted(async () => {
v-model:inputfilter="filterPayment" v-model:inputfilter="filterPayment"
v-model:inputvisible="visibleColumnsPayment" v-model:inputvisible="visibleColumnsPayment"
:add="clickAddPayment" :add="clickAddPayment"
name="" name="วิธีการชำระ"
icon="" icon=""
:statusEdit="false" :statusEdit="false"
:headerShow="false" :headerShow="false"
@ -1293,6 +1276,7 @@ onMounted(async () => {
class="" class=""
outlined outlined
hide-bottom-space hide-bottom-space
:readonly="checkRoutePermisson"
v-model="props.row.accountNumber" v-model="props.row.accountNumber"
dense dense
lazy-rules lazy-rules
@ -1309,6 +1293,7 @@ onMounted(async () => {
class="" class=""
outlined outlined
hide-bottom-space hide-bottom-space
:readonly="checkRoutePermisson"
v-model="props.row.bankName" v-model="props.row.bankName"
dense dense
lazy-rules lazy-rules
@ -1323,6 +1308,7 @@ onMounted(async () => {
<q-input <q-input
class="" class=""
outlined outlined
:readonly="checkRoutePermisson"
hide-bottom-space hide-bottom-space
v-model="props.row.accountName" v-model="props.row.accountName"
dense dense
@ -1336,6 +1322,7 @@ onMounted(async () => {
</q-td> </q-td>
<q-td auto-width> <q-td auto-width>
<q-btn <q-btn
v-if="!checkRoutePermisson"
color="red" color="red"
flat flat
dense dense
@ -1365,6 +1352,7 @@ onMounted(async () => {
color="gray" color="gray"
type="file" type="file"
flat flat
:readonly="checkRoutePermisson"
ref="uploader" ref="uploader"
class="full-width" class="full-width"
text-color="dark" text-color="dark"
@ -1381,7 +1369,9 @@ onMounted(async () => {
class="row no-wrap items-center q-pa-sm q-gutter-xs text-white" class="row no-wrap items-center q-pa-sm q-gutter-xs text-white"
> >
<q-btn <q-btn
v-if="scope.queuedFiles.length > 0" v-if="
scope.queuedFiles.length > 0 && !checkRoutePermisson
"
icon="clear_all" icon="clear_all"
@click="scope.removeQueuedFiles" @click="scope.removeQueuedFiles"
round round
@ -1391,7 +1381,9 @@ onMounted(async () => {
<q-tooltip>ลบทงหมด</q-tooltip> <q-tooltip>ลบทงหมด</q-tooltip>
</q-btn> </q-btn>
<q-btn <q-btn
v-if="scope.uploadedFiles.length > 0" v-if="
scope.uploadedFiles.length > 0 && !checkRoutePermisson
"
icon="done_all" icon="done_all"
@click="scope.removeUploadedFiles" @click="scope.removeUploadedFiles"
round round
@ -1417,7 +1409,7 @@ onMounted(async () => {
</div> </div>
</div> </div>
<q-btn <q-btn
v-if="scope.canAddFiles" v-if="scope.canAddFiles && !checkRoutePermisson"
type="a" type="a"
icon="add_box" icon="add_box"
@click="scope.pickFiles" @click="scope.pickFiles"
@ -1429,7 +1421,7 @@ onMounted(async () => {
<q-tooltip>เลอกไฟล</q-tooltip> <q-tooltip>เลอกไฟล</q-tooltip>
</q-btn> </q-btn>
<q-btn <q-btn
v-if="scope.isUploading" v-if="scope.isUploading && !checkRoutePermisson"
icon="clear" icon="clear"
@click="scope.abort" @click="scope.abort"
round round
@ -1484,7 +1476,7 @@ onMounted(async () => {
round round
color="red" color="red"
icon="mdi-delete-outline" icon="mdi-delete-outline"
v-if="edit" v-if="edit && !checkRoutePermisson"
@click="deleteDocData(file.id)" @click="deleteDocData(file.id)"
> >
<q-tooltip>ลบไฟล</q-tooltip> <q-tooltip>ลบไฟล</q-tooltip>
@ -1504,6 +1496,7 @@ onMounted(async () => {
flat flat
ref="uploader" ref="uploader"
class="full-width" class="full-width"
:readonly="checkRoutePermisson"
text-color="dark" text-color="dark"
:max-size="10000000" :max-size="10000000"
accept=".jpg,.png,.pdf,.csv,.doc,.docx" accept=".jpg,.png,.pdf,.csv,.doc,.docx"
@ -1518,7 +1511,9 @@ onMounted(async () => {
class="row no-wrap items-center q-pa-sm q-gutter-xs text-white" class="row no-wrap items-center q-pa-sm q-gutter-xs text-white"
> >
<q-btn <q-btn
v-if="scope.queuedFiles.length > 0" v-if="
scope.queuedFiles.length > 0 && !checkRoutePermisson
"
icon="clear_all" icon="clear_all"
@click="scope.removeQueuedFiles" @click="scope.removeQueuedFiles"
round round
@ -1528,7 +1523,9 @@ onMounted(async () => {
<q-tooltip>ลบทงหมด</q-tooltip> <q-tooltip>ลบทงหมด</q-tooltip>
</q-btn> </q-btn>
<q-btn <q-btn
v-if="scope.uploadedFiles.length > 0" v-if="
scope.uploadedFiles.length > 0 && !checkRoutePermisson
"
icon="done_all" icon="done_all"
@click="scope.removeUploadedFiles" @click="scope.removeUploadedFiles"
round round
@ -1554,7 +1551,7 @@ onMounted(async () => {
</div> </div>
</div> </div>
<q-btn <q-btn
v-if="scope.canAddFiles" v-if="scope.canAddFiles && !checkRoutePermisson"
type="a" type="a"
icon="add_box" icon="add_box"
@click="scope.pickFiles" @click="scope.pickFiles"
@ -1566,7 +1563,7 @@ onMounted(async () => {
<q-tooltip>เลอกไฟล</q-tooltip> <q-tooltip>เลอกไฟล</q-tooltip>
</q-btn> </q-btn>
<q-btn <q-btn
v-if="scope.isUploading" v-if="scope.isUploading && !checkRoutePermisson"
icon="clear" icon="clear"
@click="scope.abort" @click="scope.abort"
round round
@ -1621,7 +1618,7 @@ onMounted(async () => {
round round
color="red" color="red"
icon="mdi-delete-outline" icon="mdi-delete-outline"
v-if="edit" v-if="edit && !checkRoutePermisson"
@click="deleteDocData(file.id)" @click="deleteDocData(file.id)"
> >
<q-tooltip>ลบไฟล</q-tooltip> <q-tooltip>ลบไฟล</q-tooltip>
@ -1643,6 +1640,7 @@ onMounted(async () => {
:dense="$q.screen.lt.md" :dense="$q.screen.lt.md"
toolbar-text-color="blue-grey-10" toolbar-text-color="blue-grey-10"
toolbar-bg="blue-grey-2" toolbar-bg="blue-grey-2"
:readonly="checkRoutePermisson"
toolbar-toggle-color="blue-grey-8" toolbar-toggle-color="blue-grey-8"
class="editor" class="editor"
:toolbar="[ :toolbar="[
@ -1701,6 +1699,7 @@ onMounted(async () => {
<div class="col-12 q-mt-md"> <div class="col-12 q-mt-md">
<q-input <q-input
outlined outlined
:readonly="checkRoutePermisson"
v-model="note" v-model="note"
label="หมายเหตุ" label="หมายเหตุ"
dense dense
@ -1720,6 +1719,7 @@ onMounted(async () => {
:dense="$q.screen.lt.md" :dense="$q.screen.lt.md"
toolbar-text-color="blue-grey-10" toolbar-text-color="blue-grey-10"
toolbar-bg="blue-grey-2" toolbar-bg="blue-grey-2"
:readonly="checkRoutePermisson"
toolbar-toggle-color="blue-grey-8" toolbar-toggle-color="blue-grey-8"
class="editor" class="editor"
:toolbar="[ :toolbar="[
@ -1784,6 +1784,7 @@ onMounted(async () => {
v-model="editorConfirm" v-model="editorConfirm"
:dense="$q.screen.lt.md" :dense="$q.screen.lt.md"
toolbar-text-color="blue-grey-10" toolbar-text-color="blue-grey-10"
:readonly="checkRoutePermisson"
toolbar-bg="blue-grey-2" toolbar-bg="blue-grey-2"
toolbar-toggle-color="blue-grey-8" toolbar-toggle-color="blue-grey-8"
class="editor" class="editor"
@ -1842,10 +1843,11 @@ onMounted(async () => {
</div> </div>
</div> </div>
</q-card-section> </q-card-section>
<q-separator /> <q-separator v-if="!checkRoutePermisson" />
<q-card-actions class="text-primary q-py-sm"> <q-card-actions class="text-primary q-py-sm">
<q-space /> <q-space />
<q-btn <q-btn
v-if="!checkRoutePermisson"
flat flat
round round
color="public" color="public"

View file

@ -360,9 +360,6 @@ async function saveDataAgency(data: DataLink[], del: string) {
async function saveDataGoverment(data: DataLink[], del: string) { async function saveDataGoverment(data: DataLink[], del: string) {
dialogform.value?.validate().then(async (result: boolean) => { dialogform.value?.validate().then(async (result: boolean) => {
if (result) { if (result) {
// if (data.length === 0) {
// dialogMessageNotify($q, " 2 2 ");
// } else
if (del) { if (del) {
dialogRemove($q, () => dataPost(data)); dialogRemove($q, () => dataPost(data));
} else { } else {
@ -853,7 +850,6 @@ onMounted(async () => {
:disable="statusHeader()" :disable="statusHeader()"
class="q-pt-sm" class="q-pt-sm"
/> />
<!-- :disable="true" -->
<q-input <q-input
v-model="web.thai" v-model="web.thai"
:class="getClass(enable.web)" :class="getClass(enable.web)"
@ -1116,17 +1112,20 @@ onMounted(async () => {
> >
<template #columns="props"> <template #columns="props">
<q-tr :props="props"> <q-tr :props="props">
<q-td <q-td auto-width>
v-for="col in props.cols" <q-btn
:key="col.name" v-if="checkPermission($route)?.attrIsUpdate"
:props="props" @click="selectData(props.row.id, false)"
@click=" flat
checkPermission($route)?.attrIsUpdate dense
? selectData(props.row.id, false) round
: undefined color="primary"
" icon="edit"
class="cursor-pointer" >
> <q-tooltip>แกไขขอม</q-tooltip>
</q-btn>
</q-td>
<q-td v-for="col in props.cols" :key="col.name" :props="props">
<div v-if="col.name == 'createdAt'" class=""> <div v-if="col.name == 'createdAt'" class="">
{{ date2Thai(col.value) }} {{ date2Thai(col.value) }}
</div> </div>
@ -1159,17 +1158,20 @@ onMounted(async () => {
> >
<template #columns="props"> <template #columns="props">
<q-tr :props="props"> <q-tr :props="props">
<q-td <q-td auto-width>
v-for="col in props.cols" <q-btn
:key="col.name" v-if="checkPermission($route)?.attrIsUpdate"
:props="props" @click="selectData(props.row.id, true)"
@click=" flat
checkPermission($route)?.attrIsUpdate dense
? selectData(props.row.id, true) round
: undefined color="primary"
" icon="edit"
class="cursor-pointer" >
> <q-tooltip>แกไขขอม</q-tooltip>
</q-btn>
</q-td>
<q-td v-for="col in props.cols" :key="col.name" :props="props">
<div v-if="col.name == 'createdAt'" class=""> <div v-if="col.name == 'createdAt'" class="">
{{ date2Thai(col.value) }} {{ date2Thai(col.value) }}
</div> </div>

View file

@ -433,7 +433,7 @@ $toggle-control-ease: ease-in;
// These are our computed variables // These are our computed variables
// change at your own risk. // change at your own risk.
$toggle-radius: $toggle-height / 2; $toggle-radius: ($toggle-height / 2);
$toggle-control-size: $toggle-height - ($toggle-gutter * 2); $toggle-control-size: $toggle-height - ($toggle-gutter * 2);
.toggle-control { .toggle-control {

View file

@ -365,7 +365,7 @@ $toggle-control-ease: ease-in;
// These are our computed variables // These are our computed variables
// change at your own risk. // change at your own risk.
$toggle-radius: $toggle-height / 2; $toggle-radius: ($toggle-height / 2);
$toggle-control-size: $toggle-height - ($toggle-gutter * 2); $toggle-control-size: $toggle-height - ($toggle-gutter * 2);
.toggle-control { .toggle-control {