Merge branch 'develop' into devTee

This commit is contained in:
setthawutttty 2024-12-20 14:20:46 +07:00
commit a31a388481
3 changed files with 224 additions and 213 deletions

View file

@ -120,7 +120,11 @@ async function fetchListProject() {
await http await http
.get( .get(
config.API.developmentMain + config.API.developmentMain +
`?page=${formQuery.page}&pageSize=${formQuery.pageSize}&keyword=${formQuery.keyword.trim()}&year=${formQuery.year}&status=${formQuery.status}&node=${formQuery.node}&nodeId=${formQuery.nodeId}` `?page=${formQuery.page}&pageSize=${
formQuery.pageSize
}&keyword=${formQuery.keyword.trim()}&year=${formQuery.year}&status=${
formQuery.status
}&node=${formQuery.node}&nodeId=${formQuery.nodeId}`
) )
.then((res) => { .then((res) => {
const data = res.data.result.data; const data = res.data.result.data;
@ -350,7 +354,7 @@ onMounted(() => {
</div> </div>
<!-- รายการโครงการ --> <!-- รายการโครงการ -->
<div class="col-xs-12 col-sm-9 q-pa-md row"> <div class="col-xs-12 col-sm-9 q-pa-md row scroll" style="height: 85vh">
<div class="col-12"> <div class="col-12">
<q-toolbar class="row col-8 q-pa-none q-gutter-x-sm" style="padding: 0"> <q-toolbar class="row col-8 q-pa-none q-gutter-x-sm" style="padding: 0">
<datepicker <datepicker

View file

@ -406,103 +406,105 @@ onMounted(() => {
<!-- รายช --> <!-- รายช -->
<q-card-section <q-card-section
v-if="posmasterId" v-if="posmasterId"
class="col-lg-9 col-md-8 col-xs-12 scroll" class="col-lg-9 col-md-8 col-xs-12"
style="height: 80vh" style="height: 80vh"
> >
<LoadView v-if="isLaod" /> <LoadView v-if="isLaod" />
<div class="column q-col-gutter-sm" v-else> <div class="column q-col-gutter-sm" style="height: 80vh" v-else>
<div class="col"> <div class="col">
<q-card bordered style="height: 100%; border: 1px solid #d6dee1"> <q-card bordered style="height: 100%; border: 1px solid #d6dee1">
<div class="col-12 text-weight-medium bg-grey-1 q-py-sm q-px-md"> <div class="col-12 text-weight-medium bg-grey-1 q-py-sm q-px-md">
รายช รายช
</div> </div>
<div class="col-12"><q-separator /></div> <div class="col-12"><q-separator /></div>
<div class="row q-pa-md"> <q-scroll-area style="height: 85%">
<div class="col-12"> <div class="row q-pa-md">
<q-toolbar style="padding: 0"> <div class="col-12">
<q-space /> <q-toolbar style="padding: 0">
<div class="row q-gutter-md"> <q-space />
<div> <div class="row q-gutter-md">
<q-checkbox <div>
@update:model-value="updateIsAll" <q-checkbox
keep-color @update:model-value="updateIsAll"
v-model="isAll" keep-color
label="แสดงตำแหน่งทั้งหมด" v-model="isAll"
color="primary" label="แสดงตำแหน่งทั้งหมด"
> color="primary"
<q-tooltip>แสดงตำแหนงทงหมด</q-tooltip> >
</q-checkbox> <q-tooltip>แสดงตำแหนงทงหมด</q-tooltip>
</q-checkbox>
</div>
<div>
<q-input
outlined
dense
v-model="keyword"
label="ค้นหา"
@keydown.enter="onSearchRowPosition"
>
<template v-slot:append>
<q-icon name="search" color="grey-5" />
</template>
</q-input>
</div>
</div> </div>
<div> </q-toolbar>
<q-input </div>
outlined <div class="col-12">
dense <d-table
v-model="keyword" ref="table"
label="ค้นหา" :columns="columns"
@keydown.enter="onSearchRowPosition" :rows="rowPosition"
> :paging="true"
<template v-slot:append> row-key="id"
<q-icon name="search" color="grey-5" /> flat
</template> bordered
</q-input> dense
</div> :rows-per-page-options="[10, 25, 50, 100]"
</div> >
</q-toolbar> <template v-slot:header="props">
</div> <q-tr :props="props">
<div class="col-12"> <q-th
<d-table v-for="col in props.cols"
ref="table" :key="col.name"
:columns="columns" :props="props"
:rows="rowPosition" >
:paging="true" <span class="text-weight-medium">{{
row-key="id" col.label
flat }}</span>
bordered </q-th>
dense </q-tr>
:rows-per-page-options="[10, 25, 50, 100]" </template>
> <template v-slot:body="props">
<template v-slot:header="props"> <q-tr
<q-tr :props="props">
<q-th
v-for="col in props.cols"
:key="col.name"
:props="props" :props="props"
> :class="
<span class="text-weight-medium">{{
col.label
}}</span>
</q-th>
</q-tr>
</template>
<template v-slot:body="props">
<q-tr
:props="props"
:class="
checkPermission($route)?.attrIsUpdate &&
'cursor-pointer'
"
>
<q-td
v-for="col in props.cols"
:key="col.name"
:props="props"
@click="
checkPermission($route)?.attrIsUpdate && checkPermission($route)?.attrIsUpdate &&
selectPosition(props.row) 'cursor-pointer'
" "
> >
<div v-if="col.name === 'no'"> <q-td
{{ props.rowIndex + 1 }} v-for="col in props.cols"
</div> :key="col.name"
<div v-else> :props="props"
{{ col.value ? col.value : "-" }} @click="
</div> checkPermission($route)?.attrIsUpdate &&
</q-td> selectPosition(props.row)
</q-tr> "
</template> >
</d-table> <div v-if="col.name === 'no'">
{{ props.rowIndex + 1 }}
</div>
<div v-else>
{{ col.value ? col.value : "-" }}
</div>
</q-td>
</q-tr>
</template>
</d-table>
</div>
</div> </div>
</div> </q-scroll-area>
</q-card> </q-card>
</div> </div>
<div class="col"> <div class="col">
@ -512,140 +514,144 @@ onMounted(() => {
</div> </div>
<div class="col-12"><q-separator /></div> <div class="col-12"><q-separator /></div>
<div class="row q-pa-md"> <q-scroll-area style="height: 85%">
<div class="col-12"> <div class="row q-pa-md">
<q-toolbar style="padding: 0"> <div class="col-12">
<q-space /> <q-toolbar style="padding: 0">
<div class="row q-gutter-md"> <q-space />
<div> <div class="row q-gutter-md">
<q-input <div>
outlined <q-input
dense outlined
v-model="keywordAct" dense
label="ค้นหา" v-model="keywordAct"
@keydown.enter="onSearchListPerson" label="ค้นหา"
> @keydown.enter="onSearchListPerson"
<template v-slot:append> >
<q-icon name="search" color="grey-5" /> <template v-slot:append>
</template> <q-icon name="search" color="grey-5" />
</q-input> </template>
</q-input>
</div>
</div> </div>
</div> </q-toolbar>
</q-toolbar> </div>
</div> <div class="col-12">
<div class="col-12"> <d-table
<d-table ref="table"
ref="table" :columns="columns"
:columns="columns" :rows="rowListPerson"
:rows="rowListPerson" :paging="true"
:paging="true" row-key="id"
row-key="id" flat
flat bordered
bordered dense
dense :rows-per-page-options="[10, 25, 50, 100]"
:rows-per-page-options="[10, 25, 50, 100]" >
> <template v-slot:header="props">
<template v-slot:header="props"> <q-tr :props="props">
<q-tr :props="props"> <q-th
<q-th auto-width
auto-width v-if="
v-if=" rowListPerson.length !== 1 &&
rowListPerson.length !== 1 && checkPermission($route)?.attrIsUpdate
checkPermission($route)?.attrIsUpdate
"
/>
<q-th
auto-width
v-if="
rowListPerson.length !== 1 &&
checkPermission($route)?.attrIsUpdate
"
/>
<q-th auto-width />
<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
auto-width
v-if="
rowListPerson.length !== 1 &&
checkPermission($route)?.attrIsUpdate
"
>
<q-btn
dense
flat
round
:color="props.rowIndex + 1 == 1 ? 'grey' : 'green'"
:disable="props.rowIndex + 1 == 1"
icon="mdi-arrow-up-bold"
@click="onSwapPerson('up', props.row.id)"
>
</q-btn>
</q-td>
<q-td
auto-width
v-if="
rowListPerson.length !== 1 &&
checkPermission($route)?.attrIsUpdate
"
>
<q-btn
dense
flat
round
:color="
rowListPerson.length == props.rowIndex + 1
? 'grey'
: 'red'
" "
:disable=" />
rowListPerson.length == props.rowIndex + 1 <q-th
auto-width
v-if="
rowListPerson.length !== 1 &&
checkPermission($route)?.attrIsUpdate
" "
icon="mdi-arrow-down-bold" />
@click="onSwapPerson('down', props.row.id)" <q-th auto-width />
<q-th
v-for="col in props.cols"
:key="col.name"
:props="props"
> >
</q-btn> <span class="text-weight-medium">{{
</q-td> col.label
<q-td auto-width> }}</span>
<q-btn </q-th>
v-if="checkPermission($route)?.attrIsDelete" </q-tr>
dense </template>
flat <template v-slot:body="props">
round <q-tr :props="props">
color="red" <q-td
icon="delete" auto-width
@click="onDelete(props.row.id)" v-if="
rowListPerson.length !== 1 &&
checkPermission($route)?.attrIsUpdate
"
> >
</q-btn> <q-btn
</q-td> dense
<q-td flat
v-for="col in props.cols" round
:key="col.name" :color="
:props="props" props.rowIndex + 1 == 1 ? 'grey' : 'green'
> "
<div v-if="col.name === 'no'"> :disable="props.rowIndex + 1 == 1"
{{ props.rowIndex + 1 }} icon="mdi-arrow-up-bold"
</div> @click="onSwapPerson('up', props.row.id)"
<div v-else> >
{{ col.value ? col.value : "-" }} </q-btn>
</div> </q-td>
</q-td> <q-td
</q-tr> auto-width
</template> v-if="
</d-table> rowListPerson.length !== 1 &&
checkPermission($route)?.attrIsUpdate
"
>
<q-btn
dense
flat
round
:color="
rowListPerson.length == props.rowIndex + 1
? 'grey'
: 'red'
"
:disable="
rowListPerson.length == props.rowIndex + 1
"
icon="mdi-arrow-down-bold"
@click="onSwapPerson('down', props.row.id)"
>
</q-btn>
</q-td>
<q-td auto-width>
<q-btn
v-if="checkPermission($route)?.attrIsDelete"
dense
flat
round
color="red"
icon="delete"
@click="onDelete(props.row.id)"
>
</q-btn>
</q-td>
<q-td
v-for="col in props.cols"
:key="col.name"
:props="props"
>
<div v-if="col.name === 'no'">
{{ props.rowIndex + 1 }}
</div>
<div v-else>
{{ col.value ? col.value : "-" }}
</div>
</q-td>
</q-tr>
</template>
</d-table>
</div>
</div> </div>
</div> </q-scroll-area>
</q-card> </q-card>
</div> </div>
</div> </div>

View file

@ -364,7 +364,8 @@ onMounted(async () => {
<!-- Table --> <!-- Table -->
<q-card-section <q-card-section
class="col-lg-9 col-md-8 col-xs-12 q-gutter-sm" class="col-lg-9 col-md-8 col-xs-12 q-gutter-sm scroll"
style="height: 80vh;"
v-if="orgTreeId" v-if="orgTreeId"
> >
<div class="row col-12 q-gutter-sm"> <div class="row col-12 q-gutter-sm">