รายการตัวชี้วัดตามแผนฯ => แก้ไขตัวชี้วัดตามแผนฯ
This commit is contained in:
parent
b962fa3733
commit
87e006415c
2 changed files with 192 additions and 244 deletions
|
|
@ -1,43 +1,14 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted } from "vue";
|
import { ref } from "vue";
|
||||||
import { useQuasar } from "quasar";
|
|
||||||
import { useRouter, useRoute } from "vue-router";
|
import { useRouter, useRoute } from "vue-router";
|
||||||
import http from "@/plugins/http";
|
|
||||||
import config from "@/app.config";
|
|
||||||
|
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
|
||||||
import IndicatorByPlan from "@/modules/14_KPI/components/indicatorByPlan/IndicatorByPlan.vue";
|
import IndicatorByPlan from "@/modules/14_KPI/components/indicatorByPlan/IndicatorByPlan.vue";
|
||||||
|
|
||||||
const $q = useQuasar();
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const {
|
|
||||||
dialogConfirm,
|
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
messageError,
|
|
||||||
success,
|
|
||||||
date2Thai,
|
|
||||||
calculateDurationYmd,
|
|
||||||
} = useCounterMixin();
|
|
||||||
const title = ref<string>(route.params.id ? "แก้ไข" : "เพิ่ม");
|
const title = ref<string>(route.params.id ? "แก้ไข" : "เพิ่ม");
|
||||||
|
|
||||||
async function fetchData() {
|
|
||||||
showLoader();
|
|
||||||
await http
|
|
||||||
.get(config.API.kpiPlan)
|
|
||||||
.then(async (res) => {})
|
|
||||||
.catch((err) => {
|
|
||||||
messageError($q, err);
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
hideLoader();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(async () => {
|
|
||||||
await fetchData();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="toptitle text-dark col-12 row items-center">
|
<div class="toptitle text-dark col-12 row items-center">
|
||||||
|
|
@ -48,7 +19,7 @@ onMounted(async () => {
|
||||||
class="q-mr-sm"
|
class="q-mr-sm"
|
||||||
icon="mdi-arrow-left"
|
icon="mdi-arrow-left"
|
||||||
color="primary"
|
color="primary"
|
||||||
@click="router.go(-1)"
|
@click="router.push(`/KPI-indicator-plan`)"
|
||||||
/>
|
/>
|
||||||
{{ `${title}ตัวชี้วัดตามแผนฯ` }}
|
{{ `${title}ตัวชี้วัดตามแผนฯ` }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,29 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted } from "vue";
|
import { ref, reactive, onMounted } from "vue";
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
|
||||||
import config from "@/app.config";
|
|
||||||
import { QForm, useQuasar } from "quasar";
|
import { QForm, useQuasar } from "quasar";
|
||||||
|
import { useRoute, useRouter } from "vue-router";
|
||||||
|
import config from "@/app.config";
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import { useRoute } from "vue-router";
|
|
||||||
|
/** importType*/
|
||||||
|
import type { DataOption } from "@/modules/14_KPI/interface/index/Main";
|
||||||
|
|
||||||
|
/** importStore*/
|
||||||
import { usePositionEmp } from "@/modules/16_positionEmployee/store/organizational";
|
import { usePositionEmp } from "@/modules/16_positionEmployee/store/organizational";
|
||||||
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
|
|
||||||
|
/**use*/
|
||||||
|
const $q = useQuasar();
|
||||||
|
const route = useRoute();
|
||||||
|
const router = useRouter();
|
||||||
const store = usePositionEmp();
|
const store = usePositionEmp();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const $q = useQuasar();
|
const { dialogConfirm, showLoader, hideLoader, messageError, success } = mixin;
|
||||||
const {
|
|
||||||
dialogRemove,
|
|
||||||
dialogConfirm,
|
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
messageError,
|
|
||||||
success,
|
|
||||||
date2Thai,
|
|
||||||
} = mixin;
|
|
||||||
|
|
||||||
const planData = reactive<any>({
|
const id = ref<string>(route.params.id ? route.params.id.toLocaleString() : "");
|
||||||
|
|
||||||
|
/**form ตัวชี้วัดตามแผนฯ*/
|
||||||
|
const planData = reactive({
|
||||||
kpiPeriodId: "", //รอบการประเมิน(เมษา->APR, ตุลา->OCT)
|
kpiPeriodId: "", //รอบการประเมิน(เมษา->APR, ตุลา->OCT)
|
||||||
including: "", //รหัสตัวชี้วัด
|
including: "", //รหัสตัวชี้วัด
|
||||||
includingName: "", //ชื่อตัวชี้วัด
|
includingName: "", //ชื่อตัวชี้วัด
|
||||||
|
|
@ -34,40 +38,27 @@ const planData = reactive<any>({
|
||||||
meaning: "", //นิยามหรือความหมาย
|
meaning: "", //นิยามหรือความหมาย
|
||||||
formula: "", //สูตรคำนวณ
|
formula: "", //สูตรคำนวณ
|
||||||
node: null, //ระดับหน่วยงาน
|
node: null, //ระดับหน่วยงาน
|
||||||
nodeId: "", //id หน่วยงาน
|
nodeId: null, //id หน่วยงาน
|
||||||
orgRevisionId: "", //RevisionId หน่วยงาน
|
orgRevisionId: "", //RevisionId หน่วยงาน
|
||||||
strategy: null, //ระดับยุทธศาสตร์
|
strategy: null, //ระดับยุทธศาสตร์
|
||||||
strategyId: "", //id ยุทธศาสตร์
|
strategyId: "", //id ยุทธศาสตร์
|
||||||
});
|
});
|
||||||
|
|
||||||
const filter = ref<string>("");
|
const year = ref<number>(0); // ปีงยประมาณ
|
||||||
const filterAgency = ref<string>("");
|
const roundOp = ref<DataOption[]>([]);
|
||||||
const route = useRoute();
|
|
||||||
const id = ref<string>(route.params.id ? route.params.id.toLocaleString() : "");
|
|
||||||
const year = ref<number>(0);
|
|
||||||
|
|
||||||
const roundOp = ref<any[]>([]);
|
|
||||||
const notFound = ref<string>("ไม่พบข้อมูลที่ค้นหา");
|
|
||||||
const noData = ref<string>("ไม่มีข้อมูล");
|
|
||||||
const expandedPlan = ref<Array<string | null>>([]);
|
|
||||||
const expandedAgency = ref<Array<string | null>>([]);
|
|
||||||
const nodeplan = ref<any>([]);
|
const nodeplan = ref<any>([]);
|
||||||
const nodeAgency = ref<any>([]);
|
const nodeAgency = ref<any>([]);
|
||||||
const editStatus = ref<boolean>(false);
|
const filter = ref<string>("");
|
||||||
async function onSubmit() {
|
const filterAgency = ref<string>("");
|
||||||
dialogConfirm(
|
const expandedPlan = ref<string[]>([]);
|
||||||
$q,
|
const expandedAgency = ref<string[]>([]);
|
||||||
async () => {
|
|
||||||
editStatus.value ? editData(id.value) : addData();
|
|
||||||
},
|
|
||||||
"ยืนยันการบันทึกข้อมูล",
|
|
||||||
"ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
const editStatus = ref<boolean>(false);
|
||||||
const inputRef = ref<any>(null);
|
const inputRef = ref<any>(null);
|
||||||
|
|
||||||
|
/** functiopn fetch รอบการประเมิน*/
|
||||||
function fetchRoundOption(isId: number | null = null) {
|
function fetchRoundOption(isId: number | null = null) {
|
||||||
showLoader();
|
|
||||||
http
|
http
|
||||||
.get(
|
.get(
|
||||||
config.API.kpiPeriod +
|
config.API.kpiPeriod +
|
||||||
|
|
@ -93,14 +84,29 @@ function fetchRoundOption(isId: number | null = null) {
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
messageError($q, err);
|
messageError($q, err);
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
hideLoader();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetchTree() {
|
/** function fetch หาโครงสร้างที่ใช้งาน*/
|
||||||
showLoader();
|
function fetchOrganizationActive() {
|
||||||
|
http
|
||||||
|
.get(config.API.activeOrganization)
|
||||||
|
.then((res) => {
|
||||||
|
const data = res.data.result;
|
||||||
|
if (data) {
|
||||||
|
store.fetchDataActive(data);
|
||||||
|
|
||||||
|
store.activeId && fetchTreeAgency(store.activeId);
|
||||||
|
fetchTreeStrategy();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
messageError($q, err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** function fetchTree ยุทธศาสตร์ / แผน*/
|
||||||
|
function fetchTreeStrategy() {
|
||||||
http
|
http
|
||||||
.get(config.API.devStrategy)
|
.get(config.API.devStrategy)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
|
@ -109,15 +115,12 @@ function fetchTree() {
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
messageError($q, err);
|
messageError($q, err);
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
hideLoader();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchDataTree(id: string) {
|
/** functioon fetchcTree หน่วยงาน/ส่วนราชการ*/
|
||||||
showLoader();
|
function fetchTreeAgency(id: string) {
|
||||||
await http
|
http
|
||||||
.get(config.API.orgByid(id.toString()))
|
.get(config.API.orgByid(id.toString()))
|
||||||
.then(async (res) => {
|
.then(async (res) => {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
|
|
@ -142,39 +145,17 @@ async function fetchDataTree(id: string) {
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
messageError($q, err);
|
messageError($q, err);
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
hideLoader();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchOrganizationActive() {
|
/** function fetch ข้อมูลตัวชี้วัด*/
|
||||||
|
function fetchDataById(id: string) {
|
||||||
showLoader();
|
showLoader();
|
||||||
await http
|
http
|
||||||
.get(config.API.activeOrganization)
|
.get(config.API.kpiPlanById(id))
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
const data = res.data.result;
|
|
||||||
if (data) {
|
|
||||||
store.fetchDataActive(data);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
messageError($q, err);
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
hideLoader();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function fetchDataById(id: any) {
|
|
||||||
showLoader();
|
|
||||||
await http
|
|
||||||
.get(config.API.kpiPlanById(id))
|
|
||||||
.then(async (res) => {
|
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
year.value = data.year;
|
year.value = data.year;
|
||||||
// planData.value = data;
|
|
||||||
// planData.year = data.year;
|
|
||||||
planData.kpiPeriodId = data.kpiPeriodId;
|
planData.kpiPeriodId = data.kpiPeriodId;
|
||||||
planData.including = data.including;
|
planData.including = data.including;
|
||||||
planData.includingName = data.includingName;
|
planData.includingName = data.includingName;
|
||||||
|
|
@ -193,7 +174,6 @@ async function fetchDataById(id: any) {
|
||||||
planData.orgRevisionId = data.orgRevisionId;
|
planData.orgRevisionId = data.orgRevisionId;
|
||||||
planData.strategy = data.strategy;
|
planData.strategy = data.strategy;
|
||||||
planData.strategyId = data.strategyId;
|
planData.strategyId = data.strategyId;
|
||||||
console.log(data);
|
|
||||||
|
|
||||||
fetchRoundOption();
|
fetchRoundOption();
|
||||||
})
|
})
|
||||||
|
|
@ -201,15 +181,19 @@ async function fetchDataById(id: any) {
|
||||||
messageError($q, err);
|
messageError($q, err);
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
hideLoader();
|
setTimeout(() => {
|
||||||
|
hideLoader();
|
||||||
|
}, 1000);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** funtion เลือกหรืออัปดเดท ยุทธศาสตร์ / แผน*/
|
||||||
function updateSelected(data: any) {
|
function updateSelected(data: any) {
|
||||||
planData.strategyId = data.id;
|
planData.strategyId = data.id;
|
||||||
planData.strategy = data.level;
|
planData.strategy = data.level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** funtion เลือกหรืออัปดเดท หน่วยงาน/ส่วนราชการ*/
|
||||||
function updateSelectedAgency(data: any, isUpdate: boolean = false) {
|
function updateSelectedAgency(data: any, isUpdate: boolean = false) {
|
||||||
if (
|
if (
|
||||||
planData.node === data.orgLevel &&
|
planData.node === data.orgLevel &&
|
||||||
|
|
@ -218,42 +202,39 @@ function updateSelectedAgency(data: any, isUpdate: boolean = false) {
|
||||||
) {
|
) {
|
||||||
planData.node = null;
|
planData.node = null;
|
||||||
planData.nodeId = null;
|
planData.nodeId = null;
|
||||||
console.log("1");
|
|
||||||
} else {
|
} else {
|
||||||
planData.node = data.orgLevel;
|
planData.node = data.orgLevel;
|
||||||
planData.nodeId = data.orgTreeId;
|
planData.nodeId = data.orgTreeId;
|
||||||
console.log("2");
|
|
||||||
}
|
}
|
||||||
planData.orgRevisionId = data.orgRevisionId;
|
planData.orgRevisionId = data.orgRevisionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function addData() {
|
/**function ยืนยันการบันทึกข้อมูล */
|
||||||
await http
|
function onSubmit() {
|
||||||
.post(config.API.kpiPlan, planData)
|
dialogConfirm(
|
||||||
.then(() => {
|
$q,
|
||||||
success($q, "บันทึกข้อมูลสำเร็จ");
|
async () => {
|
||||||
})
|
showLoader();
|
||||||
.catch((err) => {
|
// editStatus.value ? editData(id.value) : addData();
|
||||||
messageError($q, err);
|
try {
|
||||||
})
|
const url = editStatus.value
|
||||||
.finally(() => {
|
? config.API.kpiPlanById(id.value)
|
||||||
hideLoader();
|
: config.API.kpiPlan;
|
||||||
});
|
const method = editStatus.value ? "put" : "post";
|
||||||
}
|
const res = await http[method](url, planData);
|
||||||
|
success($q, "บันทึกข้อมูลสำเร็จ");
|
||||||
async function editData(id: string) {
|
editStatus.value
|
||||||
await http
|
? fetchDataById(id.value)
|
||||||
.put(config.API.kpiPlanById(id), planData)
|
: router.push(`/KPI-indicator-plan/${res.data.result}`);
|
||||||
.then(() => {
|
} catch (e) {
|
||||||
success($q, "บันทึกข้อมูลสำเร็จ");
|
messageError($q, e);
|
||||||
fetchDataById(id);
|
} finally {
|
||||||
})
|
hideLoader();
|
||||||
.catch((err) => {
|
}
|
||||||
messageError($q, err);
|
},
|
||||||
})
|
"ยืนยันการบันทึกข้อมูล",
|
||||||
.finally(() => {
|
"ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?"
|
||||||
hideLoader();
|
);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -276,18 +257,12 @@ async function searchAndReplace(orgTreeData: any, treeId: string | null) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(() => {
|
||||||
// fetchData();
|
fetchOrganizationActive();
|
||||||
|
|
||||||
await fetchOrganizationActive();
|
|
||||||
if (id.value) {
|
if (id.value) {
|
||||||
editStatus.value = true;
|
editStatus.value = true;
|
||||||
fetchDataById(id.value);
|
fetchDataById(id.value);
|
||||||
}
|
}
|
||||||
setTimeout(async () => {
|
|
||||||
store.activeId && (await fetchDataTree(store.activeId));
|
|
||||||
await fetchTree();
|
|
||||||
}, 200);
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
@ -377,7 +352,7 @@ onMounted(async () => {
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-3">
|
<div class="col-4">
|
||||||
<q-input
|
<q-input
|
||||||
outlined
|
outlined
|
||||||
v-model="planData.target"
|
v-model="planData.target"
|
||||||
|
|
@ -389,7 +364,7 @@ onMounted(async () => {
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-3">
|
<div class="col-4">
|
||||||
<q-input
|
<q-input
|
||||||
outlined
|
outlined
|
||||||
v-model="planData.unit"
|
v-model="planData.unit"
|
||||||
|
|
@ -402,7 +377,7 @@ onMounted(async () => {
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-3">
|
<div class="col-4">
|
||||||
<q-input
|
<q-input
|
||||||
outlined
|
outlined
|
||||||
v-model="planData.weight"
|
v-model="planData.weight"
|
||||||
|
|
@ -417,99 +392,101 @@ onMounted(async () => {
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 row">
|
<div class="col-12 row">
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<q-card bordered>
|
<q-card flat bordered>
|
||||||
<q-card-actions class="bg-grey-3 row">
|
<q-card bordered>
|
||||||
|
<q-card-actions class="bg-grey-3 row">
|
||||||
|
<div class="col-4 flex justify-center items-center">
|
||||||
|
<div>ระดับคะแนน</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-8 q-px-xl">ผลสำเร็จของงาน</div>
|
||||||
|
</q-card-actions>
|
||||||
|
</q-card>
|
||||||
|
<div class="row">
|
||||||
<div class="col-4 flex justify-center items-center">
|
<div class="col-4 flex justify-center items-center">
|
||||||
<div>ระดับคะแนน</div>
|
<div>5</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-8 q-px-xl">ผลสำเร็จของงาน</div>
|
<div class="col-8 q-pa-sm">
|
||||||
</q-card-actions>
|
<q-input
|
||||||
|
outlined
|
||||||
|
v-model="planData.achievement5"
|
||||||
|
label="กรอกผลสำเร็จของงาน"
|
||||||
|
bg-color="white"
|
||||||
|
dense
|
||||||
|
class="inputgreen"
|
||||||
|
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
||||||
|
hide-bottom-space
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4 flex justify-center items-center">
|
||||||
|
<div>4</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-8 q-pa-sm">
|
||||||
|
<q-input
|
||||||
|
outlined
|
||||||
|
v-model="planData.achievement4"
|
||||||
|
label="กรอกผลสำเร็จของงาน"
|
||||||
|
bg-color="white"
|
||||||
|
dense
|
||||||
|
class="inputgreen"
|
||||||
|
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
||||||
|
hide-bottom-space
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4 flex justify-center items-center">
|
||||||
|
<div>3</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-8 q-pa-sm">
|
||||||
|
<q-input
|
||||||
|
outlined
|
||||||
|
v-model="planData.achievement3"
|
||||||
|
label="กรอกผลสำเร็จของงาน"
|
||||||
|
bg-color="white"
|
||||||
|
dense
|
||||||
|
class="inputgreen"
|
||||||
|
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
||||||
|
hide-bottom-space
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4 flex justify-center items-center">
|
||||||
|
<div>2</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-8 q-pa-sm">
|
||||||
|
<q-input
|
||||||
|
outlined
|
||||||
|
v-model="planData.achievement2"
|
||||||
|
label="กรอกผลสำเร็จของงาน"
|
||||||
|
bg-color="white"
|
||||||
|
dense
|
||||||
|
class="inputgreen"
|
||||||
|
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
||||||
|
hide-bottom-space
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4 flex justify-center items-center">
|
||||||
|
<div>1</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-8 q-pa-sm">
|
||||||
|
<q-input
|
||||||
|
outlined
|
||||||
|
v-model="planData.achievement1"
|
||||||
|
label="กรอกผลสำเร็จของงาน"
|
||||||
|
bg-color="white"
|
||||||
|
dense
|
||||||
|
class="inputgreen"
|
||||||
|
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
||||||
|
hide-bottom-space
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</q-card>
|
</q-card>
|
||||||
<div class="row">
|
|
||||||
<div class="col-4 flex justify-center items-center">
|
|
||||||
<div>5</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8 q-pa-sm">
|
|
||||||
<q-input
|
|
||||||
outlined
|
|
||||||
v-model="planData.achievement5"
|
|
||||||
label="กรอกผลสำเร็จของงาน"
|
|
||||||
bg-color="white"
|
|
||||||
dense
|
|
||||||
class="inputgreen"
|
|
||||||
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
|
||||||
hide-bottom-space
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-4 flex justify-center items-center">
|
|
||||||
<div>4</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8 q-pa-sm">
|
|
||||||
<q-input
|
|
||||||
outlined
|
|
||||||
v-model="planData.achievement4"
|
|
||||||
label="กรอกผลสำเร็จของงาน"
|
|
||||||
bg-color="white"
|
|
||||||
dense
|
|
||||||
class="inputgreen"
|
|
||||||
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
|
||||||
hide-bottom-space
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-4 flex justify-center items-center">
|
|
||||||
<div>3</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8 q-pa-sm">
|
|
||||||
<q-input
|
|
||||||
outlined
|
|
||||||
v-model="planData.achievement3"
|
|
||||||
label="กรอกผลสำเร็จของงาน"
|
|
||||||
bg-color="white"
|
|
||||||
dense
|
|
||||||
class="inputgreen"
|
|
||||||
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
|
||||||
hide-bottom-space
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-4 flex justify-center items-center">
|
|
||||||
<div>2</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8 q-pa-sm">
|
|
||||||
<q-input
|
|
||||||
outlined
|
|
||||||
v-model="planData.achievement2"
|
|
||||||
label="กรอกผลสำเร็จของงาน"
|
|
||||||
bg-color="white"
|
|
||||||
dense
|
|
||||||
class="inputgreen"
|
|
||||||
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
|
||||||
hide-bottom-space
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-4 flex justify-center items-center">
|
|
||||||
<div>1</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-8 q-pa-sm">
|
|
||||||
<q-input
|
|
||||||
outlined
|
|
||||||
v-model="planData.achievement1"
|
|
||||||
label="กรอกผลสำเร็จของงาน"
|
|
||||||
bg-color="white"
|
|
||||||
dense
|
|
||||||
class="inputgreen"
|
|
||||||
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]"
|
|
||||||
hide-bottom-space
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
|
|
@ -567,8 +544,8 @@ onMounted(async () => {
|
||||||
label-key="labelName"
|
label-key="labelName"
|
||||||
selected-color="primary"
|
selected-color="primary"
|
||||||
:filter="filterAgency"
|
:filter="filterAgency"
|
||||||
:no-results-label="notFound"
|
no-results-label="ไม่พบข้อมูลที่ค้นหา"
|
||||||
:no-nodes-label="noData"
|
no-nodes-label="ไม่มีข้อมูล"
|
||||||
v-model:expanded="expandedAgency"
|
v-model:expanded="expandedAgency"
|
||||||
v-model:selected="planData.nodeId"
|
v-model:selected="planData.nodeId"
|
||||||
>
|
>
|
||||||
|
|
@ -630,8 +607,8 @@ onMounted(async () => {
|
||||||
node-key="id"
|
node-key="id"
|
||||||
label-key="id"
|
label-key="id"
|
||||||
:filter="filter"
|
:filter="filter"
|
||||||
:no-results-label="notFound"
|
no-results-label="ไม่พบข้อมูลที่ค้นหา"
|
||||||
:no-nodes-label="noData"
|
no-nodes-label="ไม่มีข้อมูล"
|
||||||
v-model:expanded="expandedPlan"
|
v-model:expanded="expandedPlan"
|
||||||
v-model:selected="planData.strategyId"
|
v-model:selected="planData.strategyId"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue