Merge branch 'develop' into devTee
This commit is contained in:
commit
3a6b4f83c8
8 changed files with 110 additions and 54 deletions
|
|
@ -433,6 +433,8 @@ onMounted(() => {
|
||||||
lazy-rules
|
lazy-rules
|
||||||
:rules="[(val:string) => !!val || `${'กรุณากรอกน้ำหนัก'}`,]"
|
:rules="[(val:string) => !!val || `${'กรุณากรอกน้ำหนัก'}`,]"
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
|
mask="#"
|
||||||
|
reverse-fill-mask
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
|
|
|
||||||
|
|
@ -402,20 +402,24 @@ onMounted(() => {
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:body="props">
|
<template v-slot:body="props">
|
||||||
<q-tr :props="props">
|
<q-tr :props="props">
|
||||||
<q-td
|
<q-td auto-width>
|
||||||
auto-width
|
|
||||||
v-if="
|
|
||||||
checkPermission($route)?.attrIsUpdate ||
|
|
||||||
checkPermission($route)?.attrIsDelete ||
|
|
||||||
checkPermission($route)?.attrIsGet
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<q-btn
|
<q-btn
|
||||||
icon="mdi-dots-horizontal-circle-outline"
|
icon="mdi-dots-horizontal-circle-outline"
|
||||||
color="secondary"
|
color="secondary"
|
||||||
flat
|
flat
|
||||||
round
|
round
|
||||||
dense
|
dense
|
||||||
|
v-if="
|
||||||
|
(props.row.status !== 'REPORT' &&
|
||||||
|
props.row.status !== 'DONE' &&
|
||||||
|
checkPermission($route)?.attrIsGet) ||
|
||||||
|
(checkPermission($route)?.attrIsDelete &&
|
||||||
|
props.row.status !== 'REPORT' &&
|
||||||
|
props.row.status !== 'DONE') ||
|
||||||
|
(checkPermission($route)?.attrIsGet &&
|
||||||
|
checkPermission($route)?.attrIsDelete) ||
|
||||||
|
checkPermission($route)?.attrIsGet
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<q-menu
|
<q-menu
|
||||||
transition-show="jump-down"
|
transition-show="jump-down"
|
||||||
|
|
@ -424,9 +428,10 @@ onMounted(() => {
|
||||||
<q-list dense style="min-width: 100px">
|
<q-list dense style="min-width: 100px">
|
||||||
<q-item
|
<q-item
|
||||||
v-if="
|
v-if="
|
||||||
|
checkPermission($route)?.attrIsUpdate &&
|
||||||
|
checkPermission($route)?.attrIsGet &&
|
||||||
props.row.status !== 'REPORT' &&
|
props.row.status !== 'REPORT' &&
|
||||||
props.row.status !== 'DONE' &&
|
props.row.status !== 'DONE'
|
||||||
checkPermission($route)?.attrIsUpdate
|
|
||||||
"
|
"
|
||||||
clickable
|
clickable
|
||||||
v-close-popup
|
v-close-popup
|
||||||
|
|
@ -447,6 +452,7 @@ onMounted(() => {
|
||||||
<q-item
|
<q-item
|
||||||
v-if="
|
v-if="
|
||||||
checkPermission($route)?.attrIsUpdate &&
|
checkPermission($route)?.attrIsUpdate &&
|
||||||
|
checkPermission($route)?.attrIsGet &&
|
||||||
props.row.status !== 'REPORT' &&
|
props.row.status !== 'REPORT' &&
|
||||||
props.row.status !== 'DONE'
|
props.row.status !== 'DONE'
|
||||||
"
|
"
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ const formIndicators = reactive<FormIndicators>({
|
||||||
results: "",
|
results: "",
|
||||||
obstacles: "",
|
obstacles: "",
|
||||||
suggestions: "",
|
suggestions: "",
|
||||||
result: "",
|
|
||||||
});
|
});
|
||||||
/** ข้อมูล Table */
|
/** ข้อมูล Table */
|
||||||
const rows = ref<DevelopmentEvaluations[]>([]); // ข้อมูลรายการ
|
const rows = ref<DevelopmentEvaluations[]>([]); // ข้อมูลรายการ
|
||||||
|
|
@ -120,11 +119,11 @@ const columns = ref<QTableProps["columns"]>([
|
||||||
style: "font-size: 14px ; ",
|
style: "font-size: 14px ; ",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "result",
|
name: "results",
|
||||||
align: "left",
|
align: "left",
|
||||||
label: "ผลการดำเนินการ",
|
label: "ผลการดำเนินการ",
|
||||||
sortable: true,
|
sortable: true,
|
||||||
field: "result",
|
field: "results",
|
||||||
headerStyle: "font-size: 14px",
|
headerStyle: "font-size: 14px",
|
||||||
style: "font-size: 14px ; ",
|
style: "font-size: 14px ; ",
|
||||||
},
|
},
|
||||||
|
|
@ -231,7 +230,10 @@ function onSubmitIndicators() {
|
||||||
dialogConfirm($q, () => {
|
dialogConfirm($q, () => {
|
||||||
showLoader();
|
showLoader();
|
||||||
http
|
http
|
||||||
.put(config.API.developmentMainTab(path, id), formIndicators)
|
.put(config.API.developmentMainTab(path, id), {
|
||||||
|
...formIndicators,
|
||||||
|
results: status.value === "FINISH" ? formIndicators.results : undefined,
|
||||||
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
success($q, "บันทึกข้อมูลสำเร็จ");
|
success($q, "บันทึกข้อมูลสำเร็จ");
|
||||||
fetchData();
|
fetchData();
|
||||||
|
|
@ -482,7 +484,13 @@ defineExpose({
|
||||||
<q-card style="width: 900px; max-width: 80vw">
|
<q-card style="width: 900px; max-width: 80vw">
|
||||||
<q-form greedy @submit.prevent @validation-success="onSubmitIndicators">
|
<q-form greedy @submit.prevent @validation-success="onSubmitIndicators">
|
||||||
<DialogHeader
|
<DialogHeader
|
||||||
:tittle="isEdit ? 'แก้ไขตัวชี้วัด' : 'เพิ่มตัวชี้วัด'"
|
:tittle="
|
||||||
|
isEdit && typeAction === 'result'
|
||||||
|
? 'ผลการดำเนินการ'
|
||||||
|
: isEdit
|
||||||
|
? 'แก้ไขตัวชี้วัด'
|
||||||
|
: 'เพิ่มตัวชี้วัด'
|
||||||
|
"
|
||||||
:close="closeDialog"
|
:close="closeDialog"
|
||||||
/>
|
/>
|
||||||
<q-separator />
|
<q-separator />
|
||||||
|
|
@ -497,7 +505,7 @@ defineExpose({
|
||||||
outlined
|
outlined
|
||||||
class="inputgreen"
|
class="inputgreen"
|
||||||
label="ผลการดำเนิดการ"
|
label="ผลการดำเนิดการ"
|
||||||
v-model="formIndicators.result"
|
v-model="formIndicators.results"
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
lazy-rules
|
lazy-rules
|
||||||
:rules="[
|
:rules="[
|
||||||
|
|
|
||||||
|
|
@ -234,13 +234,13 @@ function fetchData() {
|
||||||
data.developmentProjectTechniqueActuals;
|
data.developmentProjectTechniqueActuals;
|
||||||
formData.projectModalPlanned = data.projectModalPlanned;
|
formData.projectModalPlanned = data.projectModalPlanned;
|
||||||
formData.projectModalActual = data.projectModalActual;
|
formData.projectModalActual = data.projectModalActual;
|
||||||
// formData.dateStart = data.dateStart;
|
formData.dateStart = data.dateStart;
|
||||||
// formData.dateEnd = data.dateEnd;
|
formData.dateEnd = data.dateEnd;
|
||||||
// formData.totalDate = data.totalDate;
|
formData.totalDate = data.totalDate;
|
||||||
// formData.developmentAddresss = data.developmentAddresss.map((e: any) => ({
|
formData.developmentAddresss = data.developmentAddresss.map((e: any) => ({
|
||||||
// address: e.address,
|
address: e.address,
|
||||||
// provinceId: e.provinceId,
|
provinceId: e.provinceId,
|
||||||
// }));
|
}));
|
||||||
|
|
||||||
const arrayExpanded = [
|
const arrayExpanded = [
|
||||||
data.strategyChild1Planned,
|
data.strategyChild1Planned,
|
||||||
|
|
@ -314,6 +314,7 @@ function onSubmit() {
|
||||||
http
|
http
|
||||||
.put(config.API.developmentMainTab("tab3", projectId.value), {
|
.put(config.API.developmentMainTab("tab3", projectId.value), {
|
||||||
...formData,
|
...formData,
|
||||||
|
totalDate: formData.totalDate === "" ? null : formData.totalDate,
|
||||||
reasonPlanned70: reasonPlanned70.value,
|
reasonPlanned70: reasonPlanned70.value,
|
||||||
reasonPlanned20: reasonPlanned20.value,
|
reasonPlanned20: reasonPlanned20.value,
|
||||||
reasonPlanned10: reasonPlanned10.value,
|
reasonPlanned10: reasonPlanned10.value,
|
||||||
|
|
@ -376,14 +377,11 @@ const filterSelector = (val: string, update: Function) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
watch(
|
function updatetotalDate() {
|
||||||
() => [formData.dateStart, formData.dateEnd],
|
if (formData.dateStart && formData.dateEnd) {
|
||||||
() => {
|
formData.totalDate = diffDay(formData.dateStart, formData.dateEnd);
|
||||||
if (formData.dateStart && formData.dateEnd) {
|
|
||||||
formData.totalDate = diffDay(formData.dateStart, formData.dateEnd);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
);
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* function ไปยัง Tab ค่อไป
|
* function ไปยัง Tab ค่อไป
|
||||||
|
|
@ -586,7 +584,9 @@ defineExpose({
|
||||||
:enableTimePicker="false"
|
:enableTimePicker="false"
|
||||||
week-start="0"
|
week-start="0"
|
||||||
:max-date="formData.dateEnd"
|
:max-date="formData.dateEnd"
|
||||||
@update:model-value="props.onCheckChangeData()"
|
@update:model-value="
|
||||||
|
props.onCheckChangeData(), updatetotalDate()
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<template #year="{ year }">{{ year + 543 }}</template>
|
<template #year="{ year }">{{ year + 543 }}</template>
|
||||||
<template #year-overlay-value="{ value }">{{
|
<template #year-overlay-value="{ value }">{{
|
||||||
|
|
@ -628,7 +628,9 @@ defineExpose({
|
||||||
:enableTimePicker="false"
|
:enableTimePicker="false"
|
||||||
week-start="0"
|
week-start="0"
|
||||||
:min-date="formData.dateStart"
|
:min-date="formData.dateStart"
|
||||||
@update:model-value="props.onCheckChangeData()"
|
@update:model-value="
|
||||||
|
props.onCheckChangeData(), updatetotalDate()
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<template #year="{ year }">{{ year + 543 }}</template>
|
<template #year="{ year }">{{ year + 543 }}</template>
|
||||||
<template #year-overlay-value="{ value }">{{
|
<template #year-overlay-value="{ value }">{{
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ interface FormProjectDetail {
|
||||||
strategyChildActualNode: number | null; //node ยุทธศาสตร์เป้าหมายตามจริง
|
strategyChildActualNode: number | null; //node ยุทธศาสตร์เป้าหมายตามจริง
|
||||||
dateStart: Date | null; //วันที่เริ่มต้น
|
dateStart: Date | null; //วันที่เริ่มต้น
|
||||||
dateEnd: Date | null; //วันที่สิ้นสุด
|
dateEnd: Date | null; //วันที่สิ้นสุด
|
||||||
totalDate: number | null; //รวมระยะเวลา (วัน)
|
totalDate: number | null | string; //รวมระยะเวลา (วัน)
|
||||||
developmentAddresss: [{ address: string; provinceId: string }]; //ที่อยู่ ,จังหวัด
|
developmentAddresss: [{ address: string; provinceId: string }]; //ที่อยู่ ,จังหวัด
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ interface FormIndicators {
|
||||||
results: string;
|
results: string;
|
||||||
obstacles: string;
|
obstacles: string;
|
||||||
suggestions: string;
|
suggestions: string;
|
||||||
result: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FormProject {
|
interface FormProject {
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ export default [
|
||||||
component: mainPage,
|
component: mainPage,
|
||||||
meta: {
|
meta: {
|
||||||
Auth: true,
|
Auth: true,
|
||||||
Key: [1],
|
Key: "SYS_ACTING",
|
||||||
Role: "organization",
|
Role: "STAFF",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, reactive, watch } from "vue";
|
import { ref, onMounted } from "vue";
|
||||||
import { useQuasar } from "quasar";
|
import { useQuasar } from "quasar";
|
||||||
|
import { checkPermission } from "@/utils/permissions";
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
|
|
||||||
|
|
@ -27,7 +28,9 @@ const nodeTree = ref<DataTree[]>([]);
|
||||||
const posmasterId = ref<string>("");
|
const posmasterId = ref<string>("");
|
||||||
const isAll = ref<boolean>(false);
|
const isAll = ref<boolean>(false);
|
||||||
|
|
||||||
/** function เรียกข้อมูลโครงสร้าง แบบปัจุบัน*/
|
/**
|
||||||
|
* function เรียกข้อมูลโครงสร้าง แบบปัจุบัน
|
||||||
|
*/
|
||||||
function fetchOrganizationActive() {
|
function fetchOrganizationActive() {
|
||||||
showLoader();
|
showLoader();
|
||||||
http
|
http
|
||||||
|
|
@ -140,7 +143,9 @@ const columns = ref<QTableProps["columns"]>([
|
||||||
]);
|
]);
|
||||||
const keyword = ref<string>("");
|
const keyword = ref<string>("");
|
||||||
|
|
||||||
/** function fetch รายชื่อ*/
|
/**
|
||||||
|
* function fetch รายชื่อ
|
||||||
|
*/
|
||||||
function fetchPosMaster() {
|
function fetchPosMaster() {
|
||||||
showLoader();
|
showLoader();
|
||||||
http
|
http
|
||||||
|
|
@ -185,11 +190,13 @@ function selectPosition(data: ListPerson) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** รายชื่อคนรักษาการ*/
|
/********** รายชื่อคนรักษาการ **************/
|
||||||
const rowListPerson = ref<ListPerson[]>([]);
|
const rowListPerson = ref<ListPerson[]>([]);
|
||||||
const keywordAct = ref<string>("");
|
const keywordAct = ref<string>("");
|
||||||
|
|
||||||
/** function fetch รายชื่อรักษาการ */
|
/**
|
||||||
|
* function fetch รายชื่อรักษาการ
|
||||||
|
*/
|
||||||
function fetchListAct() {
|
function fetchListAct() {
|
||||||
showLoader();
|
showLoader();
|
||||||
http
|
http
|
||||||
|
|
@ -254,6 +261,7 @@ onMounted(() => {
|
||||||
</div>
|
</div>
|
||||||
<q-card style="height: 100%">
|
<q-card style="height: 100%">
|
||||||
<q-card-section :horizontal="$q.screen.gt.sm">
|
<q-card-section :horizontal="$q.screen.gt.sm">
|
||||||
|
<!-- โครงสร้าง -->
|
||||||
<q-card-section class="col-lg-3 col-md-4 col-xs-12 q-gutter-sm">
|
<q-card-section class="col-lg-3 col-md-4 col-xs-12 q-gutter-sm">
|
||||||
<div>
|
<div>
|
||||||
<q-input dense outlined v-model="filter" label="ค้นหา">
|
<q-input dense outlined v-model="filter" label="ค้นหา">
|
||||||
|
|
@ -305,7 +313,7 @@ onMounted(() => {
|
||||||
<div v-if="prop.node.posMaster">
|
<div v-if="prop.node.posMaster">
|
||||||
<q-list dense v-for="col in prop.node.posMaster">
|
<q-list dense v-for="col in prop.node.posMaster">
|
||||||
<q-item
|
<q-item
|
||||||
clickable
|
:clickable="checkPermission($route)?.attrIsGet"
|
||||||
:active="posmasterId == col.posmasterId"
|
:active="posmasterId == col.posmasterId"
|
||||||
:class="posmasterId !== col.posmasterId ? 'text-info' : ''"
|
:class="posmasterId !== col.posmasterId ? 'text-info' : ''"
|
||||||
active-class="my-list-link text-primary text-weight-medium"
|
active-class="my-list-link text-primary text-weight-medium"
|
||||||
|
|
@ -325,6 +333,7 @@ onMounted(() => {
|
||||||
|
|
||||||
<q-separator :vertical="$q.screen.gt.xs" />
|
<q-separator :vertical="$q.screen.gt.xs" />
|
||||||
|
|
||||||
|
<!-- รายชื่อ -->
|
||||||
<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 scroll"
|
||||||
|
|
@ -390,12 +399,21 @@ onMounted(() => {
|
||||||
</q-tr>
|
</q-tr>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:body="props">
|
<template v-slot:body="props">
|
||||||
<q-tr :props="props" class="cursor-pointer">
|
<q-tr
|
||||||
|
:props="props"
|
||||||
|
:class="
|
||||||
|
checkPermission($route)?.attrIsUpdate &&
|
||||||
|
'cursor-pointer'
|
||||||
|
"
|
||||||
|
>
|
||||||
<q-td
|
<q-td
|
||||||
v-for="col in props.cols"
|
v-for="col in props.cols"
|
||||||
:key="col.name"
|
:key="col.name"
|
||||||
:props="props"
|
:props="props"
|
||||||
@click="selectPosition(props.row)"
|
@click="
|
||||||
|
checkPermission($route)?.attrIsUpdate &&
|
||||||
|
selectPosition(props.row)
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<div v-if="col.name === 'no'">
|
<div v-if="col.name === 'no'">
|
||||||
{{ props.rowIndex + 1 }}
|
{{ props.rowIndex + 1 }}
|
||||||
|
|
@ -464,8 +482,20 @@ onMounted(() => {
|
||||||
>
|
>
|
||||||
<template v-slot:header="props">
|
<template v-slot:header="props">
|
||||||
<q-tr :props="props">
|
<q-tr :props="props">
|
||||||
<q-th auto-width v-if="rowListPerson.length !== 1" />
|
<q-th
|
||||||
<q-th auto-width v-if="rowListPerson.length !== 1" />
|
auto-width
|
||||||
|
v-if="
|
||||||
|
rowListPerson.length !== 1 &&
|
||||||
|
checkPermission($route)?.attrIsUpdate
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
<q-th
|
||||||
|
auto-width
|
||||||
|
v-if="
|
||||||
|
rowListPerson.length !== 1 &&
|
||||||
|
checkPermission($route)?.attrIsUpdate
|
||||||
|
"
|
||||||
|
/>
|
||||||
<q-th auto-width />
|
<q-th auto-width />
|
||||||
<q-th
|
<q-th
|
||||||
v-for="col in props.cols"
|
v-for="col in props.cols"
|
||||||
|
|
@ -479,11 +509,16 @@ onMounted(() => {
|
||||||
</q-tr>
|
</q-tr>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:body="props">
|
<template v-slot:body="props">
|
||||||
<q-tr :props="props" class="cursor-pointer">
|
<q-tr :props="props">
|
||||||
<q-td auto-width v-if="rowListPerson.length !== 1">
|
<q-td
|
||||||
|
auto-width
|
||||||
|
v-if="
|
||||||
|
rowListPerson.length !== 1 &&
|
||||||
|
checkPermission($route)?.attrIsUpdate
|
||||||
|
"
|
||||||
|
>
|
||||||
<q-btn
|
<q-btn
|
||||||
dense
|
dense
|
||||||
size="12px"
|
|
||||||
flat
|
flat
|
||||||
round
|
round
|
||||||
:color="props.rowIndex + 1 == 1 ? 'grey' : 'green'"
|
:color="props.rowIndex + 1 == 1 ? 'grey' : 'green'"
|
||||||
|
|
@ -494,10 +529,15 @@ onMounted(() => {
|
||||||
<!-- <q-tooltip>เลื่อนลำดับขึ้น</q-tooltip> -->
|
<!-- <q-tooltip>เลื่อนลำดับขึ้น</q-tooltip> -->
|
||||||
</q-btn>
|
</q-btn>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td auto-width v-if="rowListPerson.length !== 1">
|
<q-td
|
||||||
|
auto-width
|
||||||
|
v-if="
|
||||||
|
rowListPerson.length !== 1 &&
|
||||||
|
checkPermission($route)?.attrIsUpdate
|
||||||
|
"
|
||||||
|
>
|
||||||
<q-btn
|
<q-btn
|
||||||
dense
|
dense
|
||||||
size="12px"
|
|
||||||
flat
|
flat
|
||||||
round
|
round
|
||||||
:color="
|
:color="
|
||||||
|
|
@ -514,10 +554,10 @@ onMounted(() => {
|
||||||
<!-- <q-tooltip>เลื่อนลำดับลง</q-tooltip> -->
|
<!-- <q-tooltip>เลื่อนลำดับลง</q-tooltip> -->
|
||||||
</q-btn>
|
</q-btn>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td>
|
<q-td auto-width>
|
||||||
<q-btn
|
<q-btn
|
||||||
|
v-if="checkPermission($route)?.attrIsDelete"
|
||||||
dense
|
dense
|
||||||
size="12px"
|
|
||||||
flat
|
flat
|
||||||
round
|
round
|
||||||
color="red"
|
color="red"
|
||||||
|
|
@ -539,7 +579,6 @@ onMounted(() => {
|
||||||
{{ col.value ? col.value : "-" }}
|
{{ col.value ? col.value : "-" }}
|
||||||
</div>
|
</div>
|
||||||
</q-td>
|
</q-td>
|
||||||
|
|
||||||
</q-tr>
|
</q-tr>
|
||||||
</template>
|
</template>
|
||||||
<!-- <template v-slot:pagination="scope">
|
<!-- <template v-slot:pagination="scope">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue