ข้อมูลการประเมิณ => ปรับ form Dialog

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-06-11 13:16:30 +07:00
parent 6f9a82faa3
commit dafe59cf27
8 changed files with 619 additions and 633 deletions

View file

@ -1,3 +1,4 @@
divdivdivdivdivdivdiv
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, onMounted } from "vue"; import { ref, reactive, onMounted } from "vue";
import { QForm, useQuasar } from "quasar"; import { QForm, useQuasar } from "quasar";
@ -264,407 +265,411 @@ onMounted(() => {
</script> </script>
<template> <template>
<q-form @submit.prevent greedy @validation-success="onSubmit()"> <q-card>
<div> <q-form @submit.prevent greedy @validation-success="onSubmit()">
<div class="row q-col-gutter-md q-pa-md"> <q-card-section>
<div class="col-2" v-if="editCheck"> <div class="row q-col-gutter-md q-pa-md">
<q-input <div class="col-2" v-if="editCheck">
outlined <q-input
v-model="planData.including" outlined
label="ลำดับ/รหัสตัวชี้วัด" v-model="planData.including"
bg-color="white" label="ลำดับ/รหัสตัวชี้วัด"
readonly bg-color="white"
dense readonly
class="inputgreen" dense
/> class="inputgreen"
</div> />
<div :class="`${editCheck ? 'col-6' : 'col-8'}`"> </div>
<q-input <div :class="`${editCheck ? 'col-6' : 'col-8'}`">
outlined <q-input
v-model="planData.includingName" outlined
label="ชื่อตัวชี้วัด" v-model="planData.includingName"
bg-color="white" label="ชื่อตัวชี้วัด"
dense bg-color="white"
class="inputgreen" dense
:rules="[(val) => !!val || `${'กรุณากรอกชิ่อตัวชี้วัด'}`]" class="inputgreen"
hide-bottom-space :rules="[(val) => !!val || `${'กรุณากรอกชิ่อตัวชี้วัด'}`]"
/> hide-bottom-space
</div> />
<div class="col-2"> </div>
<datepicker <div class="col-2">
menu-class-name="modalfix" <datepicker
v-model="year" menu-class-name="modalfix"
:locale="'th'" v-model="year"
autoApply :locale="'th'"
year-picker autoApply
:enableTimePicker="false" year-picker
> :enableTimePicker="false"
<template #year="{ year }">{{ year + 543 }}</template> >
<template #year-overlay-value="{ value }">{{ <template #year="{ year }">{{ year + 543 }}</template>
parseInt(value + 543) <template #year-overlay-value="{ value }">{{
}}</template> parseInt(value + 543)
<template #trigger> }}</template>
<q-input <template #trigger>
dense <q-input
outlined dense
class="inputgreen" outlined
hide-bottom-space class="inputgreen"
:model-value="!!year ? year + 543 : null" hide-bottom-space
:label="`${'ปีงบประมาณ'}`" :model-value="!!year ? year + 543 : null"
> :label="`${'ปีงบประมาณ'}`"
<template v-slot:prepend> >
<q-icon <template v-slot:prepend>
name="event" <q-icon
class="cursor-pointer" name="event"
style="color: var(--q-primary)" class="cursor-pointer"
> style="color: var(--q-primary)"
</q-icon> >
</template> </q-icon>
<template v-slot:append> </template>
<q-icon <template v-slot:append>
v-if="year" <q-icon
name="cancel" v-if="year"
class="cursor-pointer" name="cancel"
@click.stop.prevent="year = 0" class="cursor-pointer"
/> @click.stop.prevent="year = 0"
</template> />
</q-input> </template>
</template> </q-input>
</datepicker> </template>
</div> </datepicker>
<div class="col-2"> </div>
<q-select <div class="col-2">
ref="inputRef" <q-select
dense ref="inputRef"
outlined dense
v-model="planData.period" outlined
:options="roundOp" v-model="planData.period"
label="รอบการประเมิน" :options="roundOp"
option-label="name" label="รอบการประเมิน"
option-value="id" option-label="name"
map-options option-value="id"
emit-value map-options
class="inputgreen" emit-value
/> class="inputgreen"
</div> />
<div class="col-4"> </div>
<q-input <div class="col-4">
outlined <q-input
v-model="planData.target" outlined
label="ค่าเป้าหมาย" v-model="planData.target"
bg-color="white" label="ค่าเป้าหมาย"
dense bg-color="white"
class="inputgreen" dense
:rules="[(val) => !!val || `${'กรุณากรอกค่าเป้าหมาย'}`]" class="inputgreen"
hide-bottom-space :rules="[(val) => !!val || `${'กรุณากรอกค่าเป้าหมาย'}`]"
/> hide-bottom-space
</div> />
<div class="col-4"> </div>
<q-input <div class="col-4">
outlined <q-input
v-model="planData.unit" outlined
label="หน่วยนับ" v-model="planData.unit"
bg-color="white" label="หน่วยนับ"
dense bg-color="white"
lazy-rules dense
class="inputgreen" lazy-rules
:rules="[(val) => !!val || `${'กรุณากรอกหน่วยนับ'}`]" class="inputgreen"
hide-bottom-space :rules="[(val) => !!val || `${'กรุณากรอกหน่วยนับ'}`]"
/> hide-bottom-space
</div> />
<div class="col-4"> </div>
<q-input <div class="col-4">
outlined <q-input
v-model="planData.weight" outlined
label="น้ำหนัก" v-model="planData.weight"
type="number" label="น้ำหนัก"
bg-color="white" type="number"
dense bg-color="white"
class="inputgreen" dense
:rules="[(val) => !!val || `${'กรุณากรอกน้ำหนัก'}`]" class="inputgreen"
hide-bottom-space :rules="[(val) => !!val || `${'กรุณากรอกน้ำหนัก'}`]"
/> hide-bottom-space
</div> />
<div class="col-12 row"> </div>
<div class="col-6"> <div class="col-12 row">
<q-card flat bordered> <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>
<div class="col-4 flex justify-center items-center"> </div>
<div>5</div> <div class="col-12">
</div> <q-input
<div class="col-8 q-pa-sm"> outlined
<q-input v-model="planData.meaning"
outlined label="นิยามหรือความหมาย"
v-model="planData.achievement5" type="textarea"
label="กรอกผลสำเร็จของงาน" bg-color="white"
bg-color="white" dense
dense class="inputgreen"
class="inputgreen" :rules="[(val) => !!val || `${'กรุณากรอกนิยามหรือความหมาย'}`]"
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]" hide-bottom-space
hide-bottom-space />
/> </div>
</div> <div class="col-12">
</div> <q-input
<div class="row"> outlined
<div class="col-4 flex justify-center items-center"> v-model="planData.formula"
<div>4</div> label="สูตรคำนวณ"
</div> bg-color="white"
<div class="col-8 q-pa-sm"> type="textarea"
<q-input dense
outlined class="inputgreen"
v-model="planData.achievement4" :rules="[(val) => !!val || `${'กรุณากรอกสูตรคำนวณ'}`]"
label="กรอกผลสำเร็จของงาน" hide-bottom-space
bg-color="white" />
dense </div>
class="inputgreen" <div class="col-6">
:rules="[(val) => !!val || `${'กรุณากรอกผลสำเร็จของงาน'}`]" <q-card bordered class="col-12">
hide-bottom-space <div
/> class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-xs q-px-md"
</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>
<q-separator />
<q-card-section class="q-pa-sm">
<q-input
dense
outlined
v-model="filterAgency"
label="ค้นหา"
class="inputgreen"
>
<template v-slot:append>
<q-icon
v-if="filterAgency !== ''"
name="clear"
class="cursor-pointer"
@click="filterAgency = ''"
/>
<q-icon v-else name="search" color="grey-5" />
</template>
</q-input>
<q-tree
style="height: 350px; overflow: scroll"
dense
:nodes="nodeAgency"
node-key="orgTreeId"
label-key="orgTreeName"
selected-color="primary"
:filter="filterAgency"
no-results-label="ไม่พบข้อมูลที่ค้นหา"
no-nodes-label="ไม่มีข้อมูล"
v-model:expanded="expandedAgency"
v-model:selected="planData.nodeId"
>
<template v-slot:default-header="prop">
<q-item
clickable
@click.stop="updateSelectedAgency(prop.node)"
:active="planData.nodeId == prop.node.orgTreeId"
active-class="my-list-link text-primary text-weight-medium"
class="row col-12 items-center text-dark q-py-xs q-pl-sm rounded-borders my-list"
>
<div>
<div class="text-weight-medium">
{{ prop.node.orgTreeName }}
</div>
<div class="text-weight-light text-grey-8">
{{
prop.node.orgCode == null ? null : prop.node.orgCode
}}
{{
prop.node.orgTreeShortName == null
? null
: prop.node.orgTreeShortName
}}
</div>
</div>
</q-item>
</template>
</q-tree>
</q-card-section>
</q-card> </q-card>
</div> </div>
</div> <div class="col-6">
<div class="col-12"> <q-card bordered class="col-12">
<q-input <div
outlined class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-xs q-px-md"
v-model="planData.meaning" >
label="นิยามหรือความหมาย" ทธศาสตร / แผน
type="textarea" </div>
bg-color="white" <q-separator />
dense
class="inputgreen"
:rules="[(val) => !!val || `${'กรุณากรอกนิยามหรือความหมาย'}`]"
hide-bottom-space
/>
</div>
<div class="col-12">
<q-input
outlined
v-model="planData.formula"
label="สูตรคำนวณ"
bg-color="white"
type="textarea"
dense
class="inputgreen"
:rules="[(val) => !!val || `${'กรุณากรอกสูตรคำนวณ'}`]"
hide-bottom-space
/>
</div>
<div class="col-6">
<q-card bordered class="col-12">
<div
class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-xs q-px-md"
>
หนวยงาน/วนราชการ
</div>
<q-separator />
<q-card-section class="q-pa-sm"> <q-card-section class="q-pa-sm">
<q-input <q-input
dense dense
outlined outlined
v-model="filterAgency" v-model="filter"
label="ค้นหา" label="ค้นหา"
class="inputgreen" class="inputgreen"
> >
<template v-slot:append> <template v-slot:append>
<q-icon <q-icon
v-if="filterAgency !== ''" v-if="filter !== ''"
name="clear" name="clear"
class="cursor-pointer" class="cursor-pointer"
@click="filterAgency = ''" @click="filter = ''"
/> />
<q-icon v-else name="search" color="grey-5" /> <q-icon v-else name="search" color="grey-5" />
</template> </template>
</q-input> </q-input>
<q-tree <q-tree
style="height: 350px; overflow: scroll" style="height: 350px; overflow: scroll"
dense dense
:nodes="nodeAgency" :nodes="nodeplan"
node-key="orgTreeId" selected-color="primary"
label-key="orgTreeName" node-key="id"
selected-color="primary" label-key="name"
:filter="filterAgency" :filter="filter"
no-results-label="ไม่พบข้อมูลที่ค้นหา" no-results-label="ไม่พบข้อมูลที่ค้นหา"
no-nodes-label="ไม่มีข้อมูล" no-nodes-label="ไม่มีข้อมูล"
v-model:expanded="expandedAgency" v-model:expanded="expandedPlan"
v-model:selected="planData.nodeId" v-model:selected="planData.strategyId"
> >
<template v-slot:default-header="prop"> <template v-slot:default-header="prop">
<q-item <q-item
clickable clickable
@click.stop="updateSelectedAgency(prop.node)" @click.stop="updateSelected(prop.node)"
:active="planData.nodeId == prop.node.orgTreeId" :active="planData.strategyId == prop.node.id"
active-class="my-list-link text-primary text-weight-medium" active-class="my-list-link text-primary text-weight-medium"
class="row col-12 items-center text-dark q-py-xs q-pl-sm rounded-borders my-list" class="row col-12 items-center text-dark q-py-xs q-pl-sm rounded-borders my-list"
> >
<div> <div>
<div class="text-weight-medium"> <div class="text-weight-medium">
{{ prop.node.orgTreeName }} {{ prop.node.name }}
</div>
</div> </div>
<div class="text-weight-light text-grey-8"> </q-item>
{{ </template>
prop.node.orgCode == null ? null : prop.node.orgCode </q-tree>
}} </q-card-section>
{{ </q-card>
prop.node.orgTreeShortName == null </div>
? null <div class="col-12">
: prop.node.orgTreeShortName <q-input
}} class="inputgreen"
</div> v-model="planData.documentInfoEvidence"
</div> label="ข้อมูลเอกสารหลักฐาน"
</q-item> outlined
</template> dense
</q-tree> type="textarea"
</q-card-section> ></q-input>
</q-card> </div>
</div> </div>
<div class="col-6"> </q-card-section>
<q-card bordered class="col-12">
<div
class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-xs q-px-md"
>
ทธศาสตร / แผน
</div>
<q-separator />
<q-card-section class="q-pa-sm">
<q-input
dense
outlined
v-model="filter"
label="ค้นหา"
class="inputgreen"
>
<template v-slot:append>
<q-icon
v-if="filter !== ''"
name="clear"
class="cursor-pointer"
@click="filter = ''"
/>
<q-icon v-else name="search" color="grey-5" />
</template>
</q-input>
<q-tree
style="height: 350px; overflow: scroll"
dense
:nodes="nodeplan"
selected-color="primary"
node-key="id"
label-key="name"
:filter="filter"
no-results-label="ไม่พบข้อมูลที่ค้นหา"
no-nodes-label="ไม่มีข้อมูล"
v-model:expanded="expandedPlan"
v-model:selected="planData.strategyId"
>
<template v-slot:default-header="prop">
<q-item
clickable
@click.stop="updateSelected(prop.node)"
:active="planData.strategyId == prop.node.id"
active-class="my-list-link text-primary text-weight-medium"
class="row col-12 items-center text-dark q-py-xs q-pl-sm rounded-borders my-list"
>
<div>
<div class="text-weight-medium">
{{ prop.node.name }}
</div>
</div>
</q-item>
</template>
</q-tree>
</q-card-section>
</q-card>
</div>
<div class="col-12">
<q-input
class="inputgreen"
v-model="planData.documentInfoEvidence"
label="ข้อมูลเอกสารหลักฐาน"
outlined
dense
type="textarea"
></q-input>
</div>
</div>
<q-separator color="grey-4" /> <q-separator color="grey-4" />
</div> <q-card-actions align="right">
<q-toolbar class="fit row wrap justify-end items-start content-start"> <q-btn label="บันทึก" id="onSubmit" type="submit" color="public">
<q-btn <q-tooltip>นทกขอม</q-tooltip>
dense </q-btn>
unelevated </q-card-actions>
label="บันทึก" </q-form>
id="onSubmit" </q-card>
type="submit"
color="public"
class="q-px-md"
>
<q-tooltip>นทกขอม</q-tooltip>
</q-btn>
</q-toolbar>
</q-form>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>

View file

@ -337,12 +337,10 @@ onMounted(async () => {
/> />
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-actions align="right" class="bg-white text-teal"> <q-card-actions align="right">
<q-btn <q-btn
type="submit" type="submit"
for="#submitForm" for="#submitForm"
unelevated
dense
class="q-px-md items-center" class="q-px-md items-center"
color="public" color="public"
label="บันทึก" label="บันทึก"

View file

@ -571,12 +571,10 @@ onMounted(async () => {
</div> </div>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-actions align="right" class="bg-white text-teal"> <q-card-actions align="right">
<q-btn <q-btn
type="submit" type="submit"
for="#submitForm" for="#submitForm"
unelevated
dense
class="q-px-md items-center" class="q-px-md items-center"
color="public" color="public"
label="บันทึก" label="บันทึก"

View file

@ -67,83 +67,90 @@ onMounted(() => {
</script> </script>
<template> <template>
<q-card flat bordered> <q-card>
<q-form greedy @submit.prevent @validation-success="onSubmit"> <q-form greedy @submit.prevent @validation-success="onSubmit">
<q-card-section class="bg-grey-3 q-pa-sm"> <q-card-section>
<div class="row text-dark text-body2 text-weight-medium"> <q-card flat bordered>
<div class="text-center col-8">เกณฑการประเม</div> <q-card-section class="bg-grey-3">
<div class="text-center col-4">ระดบคะแนน</div> <div class="row text-dark text-body2 text-weight-medium">
</div> <div class="text-center col-8">เกณฑการประเม</div>
</q-card-section> <div class="text-center col-4">ระดบคะแนน</div>
<q-card-section class="q-pa-none"> </div>
<div v-for="(field, index) in dataLevel" :key="field.id"> </q-card-section>
<div class="row q-pa-sm"> <q-card-section class="q-pa-none">
<div class="col-8 text-left"> <div v-for="(field, index) in dataLevel" :key="field.id">
<q-field <div class="row q-pa-sm">
class="q_field_p_none" <div class="col-8 text-left">
ref="fieldRef" <q-field
v-model="field.description" class="q_field_p_none"
label-slot ref="fieldRef"
borderless
:rules="[(val) => !!val || 'กรุณากรอกมาตรฐานพฤติกรรม']"
hide-bottom-space
>
<template #control>
<q-editor
class="full-width"
v-model="field.description" v-model="field.description"
:dense="$q.screen.lt.md" label-slot
min-height="5rem" borderless
:toolbar="[ :rules="[(val) => !!val || 'กรุณากรอกมาตรฐานพฤติกรรม']"
[ hide-bottom-space
'bold', >
'italic', <template #control>
'strike', <q-editor
'underline', class="full-width"
'subscript', v-model="field.description"
'superscript', :dense="$q.screen.lt.md"
], min-height="5rem"
:toolbar="[
[
'bold',
'italic',
'strike',
'underline',
'subscript',
'superscript',
],
['unordered', 'ordered'], ['unordered', 'ordered'],
]" ]"
:fonts="{ :fonts="{
arial: 'Arial', arial: 'Arial',
arial_black: 'Arial Black', arial_black: 'Arial Black',
comic_sans: 'Comic Sans MS', comic_sans: 'Comic Sans MS',
courier_new: 'Courier New', courier_new: 'Courier New',
impact: 'Impact', impact: 'Impact',
lucida_grande: 'Lucida Grande', lucida_grande: 'Lucida Grande',
times_new_roman: 'Times New Roman', times_new_roman: 'Times New Roman',
verdana: 'Verdana', verdana: 'Verdana',
}" }"
/> />
</template> </template>
</q-field> </q-field>
<!-- <q-input <!-- <q-input
v-model="formScore[field]" v-model="formScore[field]"
dense dense
outlined outlined
class="inputgreen" class="inputgreen"
label="กรอกข้อความเพื่อไว้ใช้อ้างอิงเท่านั้น" label="กรอกข้อความเพื่อไว้ใช้อ้างอิงเท่านั้น"
:rules="[(val:string) => !!val || `${'กรุณากรอกข้อความเพื่อไว้ใช้อ้างอิงเท่านั้น'}`,]" :rules="[(val:string) => !!val || `${'กรุณากรอกข้อความเพื่อไว้ใช้อ้างอิงเท่านั้น'}`,]"
hide-bottom-space hide-bottom-space
/> --> /> -->
</div>
<div
class="col-4 text-center text-body1 text-weight-bold self-center"
>
{{ field.level }}
</div>
</div>
<div
class="col-12"
v-if="index !== Object.keys(fieldLabels).length - 1"
>
<q-separator />
</div>
</div> </div>
<div </q-card-section>
class="col-4 text-center text-body1 text-weight-bold self-center" </q-card>
>
{{ field.level }}
</div>
</div>
<div
class="col-12"
v-if="index !== Object.keys(fieldLabels).length - 1"
>
<q-separator />
</div>
</div>
</q-card-section> </q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn label="บันทึก" color="secondary" type="submit" <q-btn label="บันทึก" color="secondary" type="submit"
><q-tooltip>นทกขอม</q-tooltip></q-btn ><q-tooltip>นทกขอม</q-tooltip></q-btn
> >

View file

@ -3,11 +3,7 @@ import { ref, reactive } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import Main from "@/modules/01_metadataNew/components/competency/Forms/Main.vue"; import Main from "@/modules/01_metadataNew/components/competency/Forms/Main.vue";
// import FormMain from "@/modules/14_KPI/components/competency/Forms/01_FormMain.vue";
// import FormGroup from "@/modules/14_KPI/components/competency/Forms/02_FormGroup.vue";
// import FormExecutive from "@/modules/14_KPI/components/competency/Forms/03_FormExecutive.vue";
// import FormExecutivePosition from "@/modules/14_KPI/components/competency/Forms/04_FormExecutivePosition.vue";
// import FormExecutiveLevel from "@/modules/14_KPI/components/competency/Forms/05_FormExecutiveLevel.vue";
import { useKPIDataStore } from "@/modules/01_metadataNew/stores/KPIStore"; import { useKPIDataStore } from "@/modules/01_metadataNew/stores/KPIStore";
import type { DataOption } from "@/modules/01_metadataNew/interface/index/Main"; import type { DataOption } from "@/modules/01_metadataNew/interface/index/Main";
@ -88,11 +84,9 @@ function onSubmit() {
/> />
<span class="toptitle text-dark">เพ/แกไขสมรรถนะ</span> <span class="toptitle text-dark">เพ/แกไขสมรรถนะ</span>
</div> </div>
<q-card flat bordered> <q-card>
<!-- @submit.prevent @validation-success="onSubmit" -->
<!-- <q-form greedy> -->
<q-card-section> <q-card-section>
<div class="row q-col-gutter-sm"> <div class="row">
<div class="col-12"> <div class="col-12">
<q-select <q-select
v-model="store.competencyTypeVal" v-model="store.competencyTypeVal"
@ -106,16 +100,11 @@ function onSubmit() {
map-options map-options
:rules="[(val:string) => !!val || `${'กรุณาเลือกประเภทสมรรถนะ'}`,]" :rules="[(val:string) => !!val || `${'กรุณาเลือกประเภทสมรรถนะ'}`,]"
hide-bottom-space hide-bottom-space
class="inputgreen"
/> />
</div> </div>
<Main />
<!-- <FormMain v-if="store.competencyType === 'ID1'" />
<FormGroup v-else-if="store.competencyType === 'ID2'" />
<FormExecutive v-else-if="store.competencyType === 'ID3'" />
<FormExecutivePosition v-else-if="store.competencyType === 'ID4'" />
<FormExecutiveLevel v-else-if="store.competencyType === 'ID5'" /> -->
</div> </div>
</q-card-section> </q-card-section>
<Main />
</q-card> </q-card>
</template> </template>

View file

@ -1,4 +1,3 @@
div
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, onMounted } from "vue"; import { ref, reactive, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
@ -107,19 +106,21 @@ onMounted(() => {
<template> <template>
<q-form greedy @submit.prevent @validation-success="onSubmit" class="col-12"> <q-form greedy @submit.prevent @validation-success="onSubmit" class="col-12">
<div class="row"> <q-card-section class="q-pt-none">
<div class="col-12"> <div class="row q-col-gutter-sm">
<q-input <div class="col-12">
v-model="formData.competencyName" <q-input
dense v-model="formData.competencyName"
outlined dense
label="ชื่อสมรรถนะ" outlined
:rules="[(val:string) => !!val || `${'กรุณากรอกชื่อสมรรถนะ'}`,]" label="ชื่อสมรรถนะ"
hide-bottom-space :rules="[(val:string) => !!val || `${'กรุณากรอกชื่อสมรรถนะ'}`,]"
/> hide-bottom-space
</div> class="inputgreen"
<q-card-section class="col-12 q-px-none"> />
<div> </div>
<div class="col-12">
<q-field <q-field
class="q_field_p_none" class="q_field_p_none"
ref="fieldRef" ref="fieldRef"
@ -162,133 +163,129 @@ onMounted(() => {
</template> </template>
</q-field> </q-field>
</div> </div>
</q-card-section>
<div class="col-12">
<q-card flat bordered>
<q-card-section class="bg-grey-4">
<div
class="row items-center text-dark text-body2 text-weight-medium"
>
<div class="col-3">
<div class="row items-center">
<div class="col-1">
<q-btn
dense
flat
round
color="primary"
icon="add"
@click="onClickAddLevels"
>
<q-tooltip>เพ</q-tooltip></q-btn
>
</div>
<div class="col-11 text-center">
<span>ระดบสมรรถนะ</span>
</div>
</div>
</div>
<div class="col-4">
<span>พฤตกรรมทคาดหว/พฤตกรรมยอย</span>
</div>
</div>
</q-card-section>
<q-card-section>
<div
class="row q-pa-sm"
v-for="(items, index) in formData.levels"
key="index"
>
<div class="col-3 align-center q-pr-lg">
<q-input
:readonly="
store.competencyTypeVal === 'HEAD' ||
store.competencyTypeVal === 'GROUP'
"
v-model="formData.levels[index].level"
dense
outlined
:rules="[(val:string) => !!val || `${'กรุณากรอกระดับสมรรถนะ'}`,]"
hide-bottom-space
/>
</div>
<div class="col-9">
<div class="row q-col-gutter-md">
<div class="col-11">
<q-field
class="q_field_p_none"
ref="fieldRef"
v-model="formData.levels[index].description"
label-slot
borderless
:rules="[
(val) =>
!!val || 'กรุณากรอกพฤติกรรมที่คาดหวัง/พฤติกรรมย่อย',
]"
hide-bottom-space
>
<template #control>
<q-editor
class="full-width"
v-model="formData.levels[index].description"
:dense="$q.screen.lt.md"
min-height="5rem"
:toolbar="[
[
'bold',
'italic',
'strike',
'underline',
'subscript',
'superscript',
],
['unordered', 'ordered'], <div class="col-12">
]" <q-card flat bordered>
/> <q-card-section class="bg-grey-4">
</template> <div
</q-field> class="row items-center text-dark text-body2 text-weight-medium"
>
<div class="col-3">
<div class="row items-center">
<div class="col-1">
<q-btn
dense
flat
round
color="primary"
icon="add"
@click="onClickAddLevels"
>
<q-tooltip>เพ</q-tooltip></q-btn
>
</div>
<div class="col-11 text-center">
<span>ระดบสมรรถนะ</span>
</div>
</div> </div>
<div class="col-1 text-center"> </div>
<q-btn <div class="col-4">
dense <span>พฤตกรรมทคาดหว/พฤตกรรมยอย</span>
flat </div>
round </div>
color="red" </q-card-section>
icon="delete" <q-card-section>
@click="onDeleteLevels(index)" <div
v-if=" class="row q-pa-sm"
(store.competencyTypeVal === 'HEAD' && index > 4) || v-for="(items, index) in formData.levels"
(store.competencyTypeVal === 'GROUP' && index > 4) || key="index"
((store.competencyTypeVal === 'EXECUTIVE' || >
store.competencyTypeVal === 'DIRECTOR' || <div class="col-3 align-center q-pr-lg">
store.competencyTypeVal === 'INSPECTOR') && <q-input
index > 0) :readonly="
" store.competencyTypeVal === 'HEAD' ||
> store.competencyTypeVal === 'GROUP'
<q-tooltip>ลบ</q-tooltip></q-btn "
> v-model="formData.levels[index].level"
dense
outlined
:rules="[(val:string) => !!val || `${'กรุณากรอกระดับสมรรถนะ'}`,]"
hide-bottom-space
/>
</div>
<div class="col-9">
<div class="row q-col-gutter-md">
<div class="col-11">
<q-field
class="q_field_p_none"
ref="fieldRef"
v-model="formData.levels[index].description"
label-slot
borderless
:rules="[
(val) =>
!!val || 'กรุณากรอกพฤติกรรมที่คาดหวัง/พฤติกรรมย่อย',
]"
hide-bottom-space
>
<template #control>
<q-editor
class="full-width"
v-model="formData.levels[index].description"
:dense="$q.screen.lt.md"
min-height="5rem"
:toolbar="[
[
'bold',
'italic',
'strike',
'underline',
'subscript',
'superscript',
],
['unordered', 'ordered'],
]"
/>
</template>
</q-field>
</div>
<div class="col-1 text-center">
<q-btn
dense
flat
round
color="red"
icon="delete"
@click="onDeleteLevels(index)"
v-if="
(store.competencyTypeVal === 'HEAD' && index > 4) ||
(store.competencyTypeVal === 'GROUP' && index > 4) ||
((store.competencyTypeVal === 'EXECUTIVE' ||
store.competencyTypeVal === 'DIRECTOR' ||
store.competencyTypeVal === 'INSPECTOR') &&
index > 0)
"
>
<q-tooltip>ลบ</q-tooltip></q-btn
>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </q-card-section>
</q-card-section> </q-card>
</q-card> </div>
</div> </div>
<div class="col-12 q-my-sm"><q-separator /></div> </q-card-section>
<div class="col-12 row justify-end">
<q-btn <div class="col-12"><q-separator /></div>
dense
unelevated <q-card-actions align="right">
label="บันทึก" <q-btn label="บันทึก" color="public" class="q-px-md" type="submit">
color="public" <q-tooltip>นทกขอม</q-tooltip>
class="q-px-md" </q-btn>
type="submit" </q-card-actions>
>
<q-tooltip>นทกขอม</q-tooltip>
</q-btn>
</div>
</div>
</q-form> </q-form>
</template> </template>

View file

@ -28,7 +28,7 @@ interface FormDataRole {
includingName: string; includingName: string;
target: string; target: string;
unit: string; unit: string;
weight: string; weight: string | null;
meaning: string; meaning: string;
formula: string; formula: string;
documentInfoEvidence: string; documentInfoEvidence: string;

View file

@ -328,8 +328,8 @@ onMounted(() => {
/> />
<q-separator /> <q-separator />
<q-card-section class="q-pt-none"> <q-card-section>
<div class="row q-pa-md"> <div class="row">
<div class="col"> <div class="col">
<q-input <q-input
dense dense
@ -349,16 +349,8 @@ onMounted(() => {
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-actions align="right" class="bg-white text-teal"> <q-card-actions align="right">
<q-btn <q-btn label="บันทึก" id="onSubmit" type="submit" color="public">
dense
unelevated
label="บันทึก"
id="onSubmit"
type="submit"
color="public"
class="q-px-md"
>
<q-tooltip>นทกขอม</q-tooltip> <q-tooltip>นทกขอม</q-tooltip>
</q-btn> </q-btn>
</q-card-actions> </q-card-actions>