no message
This commit is contained in:
parent
b21a4f53ac
commit
d54ab48bc5
27 changed files with 220 additions and 418 deletions
|
|
@ -32,7 +32,7 @@ const empType = ref<string>(pathRegistryEmp(route.name?.toString() ?? ""));
|
|||
/**
|
||||
* props
|
||||
*/
|
||||
const isLeave = defineModel<boolean>("isLeave", {
|
||||
const isLeave = defineModel<boolean>("isLeave", {
|
||||
required: true,
|
||||
});
|
||||
|
||||
|
|
@ -251,6 +251,7 @@ function closeDialog() {
|
|||
function closeHistoryDialog() {
|
||||
historyDialog.value = false;
|
||||
historyRows.value = [];
|
||||
historyKeyword.value = "";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -410,7 +411,6 @@ onMounted(() => {
|
|||
map-options
|
||||
:options="columns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
|
||||
|
|
@ -456,7 +456,7 @@ onMounted(() => {
|
|||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:filter="keyword"
|
||||
:filter="keyword.trim()"
|
||||
v-model:pagination="pagination"
|
||||
:rows-per-page-options="[20, 50, 100]"
|
||||
class="custom-header-table"
|
||||
|
|
@ -748,7 +748,6 @@ onMounted(() => {
|
|||
map-options
|
||||
:options="historyColumns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -758,7 +757,7 @@ onMounted(() => {
|
|||
:rows="historyRows"
|
||||
row-key="name"
|
||||
flat
|
||||
:filter="historyKeyword"
|
||||
:filter="historyKeyword.trim()"
|
||||
v-model:pagination="historyPagination"
|
||||
bordered
|
||||
:paging="true"
|
||||
|
|
|
|||
|
|
@ -482,6 +482,7 @@ function closeDialog() {
|
|||
function closeHistoryDialog() {
|
||||
historyDialog.value = false;
|
||||
historyRows.value = [];
|
||||
historyKeyword.value = "";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -566,7 +567,6 @@ onMounted(() => {
|
|||
map-options
|
||||
:options="columns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
|
||||
|
|
@ -612,7 +612,7 @@ onMounted(() => {
|
|||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:filter="keyword"
|
||||
:filter="keyword.trim()"
|
||||
:rows-per-page-options="[20, 50, 100]"
|
||||
v-model:pagination="pagination"
|
||||
class="custom-header-table"
|
||||
|
|
@ -642,9 +642,7 @@ onMounted(() => {
|
|||
<q-tooltip>ประวัติแก้ไขการฝึกอบรม/ดูงาน</q-tooltip>
|
||||
</q-btn>
|
||||
<q-btn
|
||||
v-if="
|
||||
isLeave == false && checkPermission($route)?.attrIsUpdate
|
||||
"
|
||||
v-if="isLeave == false && checkPermission($route)?.attrIsUpdate"
|
||||
flat
|
||||
dense
|
||||
round
|
||||
|
|
@ -684,9 +682,7 @@ onMounted(() => {
|
|||
<q-tooltip>ประวัติแก้ไขการฝึกอบรม/ดูงาน</q-tooltip>
|
||||
</q-btn>
|
||||
<q-btn
|
||||
v-if="
|
||||
isLeave == false && checkPermission($route)?.attrIsUpdate
|
||||
"
|
||||
v-if="isLeave == false && checkPermission($route)?.attrIsUpdate"
|
||||
flat
|
||||
round
|
||||
color="edit"
|
||||
|
|
@ -1136,7 +1132,6 @@ onMounted(() => {
|
|||
map-options
|
||||
:options="historyColumns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -1146,7 +1141,7 @@ onMounted(() => {
|
|||
:rows="historyRows"
|
||||
row-key="name"
|
||||
flat
|
||||
:filter="historyKeyword"
|
||||
:filter="historyKeyword.trim()"
|
||||
v-model:pagination="historyPagination"
|
||||
bordered
|
||||
:paging="true"
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ const modalHistory = ref<boolean>(false); //แสดง popup ประวั
|
|||
const OpsFilter = ref<InsigniaOps>({
|
||||
insigniaOptions: [],
|
||||
});
|
||||
|
||||
const insigniaOptions = ref<any[]>([]);
|
||||
//ต้วลือกรายการครื่องราช
|
||||
const Ops = ref<InsigniaOps>({
|
||||
insigniaOptions: [],
|
||||
|
|
@ -600,7 +602,7 @@ function filterSelector(val: string, update: Function, refData: string) {
|
|||
switch (refData) {
|
||||
case "insigniaOptions":
|
||||
update(() => {
|
||||
Ops.value.insigniaOptions = OpsFilter.value.insigniaOptions.filter(
|
||||
insigniaOptions.value = OpsFilter.value.insigniaOptions.filter(
|
||||
(v: DataOption) => v.name.indexOf(val) > -1
|
||||
);
|
||||
});
|
||||
|
|
@ -650,6 +652,7 @@ onMounted(async () => {
|
|||
store.insigniaOption.length === 0 ? await fetchInsignia() : "";
|
||||
Ops.value.insigniaOptions = store.insigniaOption;
|
||||
OpsFilter.value.insigniaOptions = store.insigniaOption;
|
||||
insigniaOptions.value = store.insigniaOption;
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
@ -677,18 +680,7 @@ onMounted(async () => {
|
|||
debounce="300"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon
|
||||
v-if="filterSearch == ''"
|
||||
name="search"
|
||||
@click.stop.prevent="filterSearch = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon
|
||||
v-if="filterSearch"
|
||||
name="cancel"
|
||||
@click.stop.prevent="filterSearch = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon name="search" />
|
||||
</template>
|
||||
</q-input>
|
||||
<q-select
|
||||
|
|
@ -703,7 +695,6 @@ onMounted(async () => {
|
|||
map-options
|
||||
:options="columns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
<q-btn-toggle
|
||||
|
|
@ -745,7 +736,7 @@ onMounted(async () => {
|
|||
:rows="rows"
|
||||
:paging="true"
|
||||
:columns="columns"
|
||||
:filter="filterSearch"
|
||||
:filter="filterSearch.trim()"
|
||||
v-model:pagination="pagination"
|
||||
:grid="modeView === 'card'"
|
||||
:visible-columns="visibleColumns"
|
||||
|
|
@ -776,9 +767,7 @@ onMounted(async () => {
|
|||
</q-btn>
|
||||
|
||||
<q-btn
|
||||
v-if="
|
||||
isLeave == false && checkPermission($route)?.attrIsUpdate
|
||||
"
|
||||
v-if="isLeave == false && checkPermission($route)?.attrIsUpdate"
|
||||
flat
|
||||
dense
|
||||
round
|
||||
|
|
@ -811,9 +800,7 @@ onMounted(async () => {
|
|||
<q-tooltip>ประวัติแก้ไขเครื่องราชอิสริยาภรณ์</q-tooltip>
|
||||
</q-btn>
|
||||
<q-btn
|
||||
v-if="
|
||||
isLeave == false && checkPermission($route)?.attrIsUpdate
|
||||
"
|
||||
v-if="isLeave == false && checkPermission($route)?.attrIsUpdate"
|
||||
flat
|
||||
round
|
||||
color="edit"
|
||||
|
|
@ -945,10 +932,12 @@ onMounted(async () => {
|
|||
</datepicker>
|
||||
</div>
|
||||
<div class="col-xs-6 col-sm-6 col-md-6">
|
||||
<selector
|
||||
<q-select
|
||||
dense
|
||||
outlined
|
||||
use-input
|
||||
hide-selected
|
||||
fill-input
|
||||
emit-value
|
||||
lazy-rules
|
||||
map-options
|
||||
|
|
@ -959,13 +948,21 @@ onMounted(async () => {
|
|||
v-model="insigniaForm.insigniaId"
|
||||
class="inputgreen"
|
||||
:label="`${'ชื่อเครื่องราชฯ'}`"
|
||||
:options="Ops.insigniaOptions"
|
||||
:options="insigniaOptions"
|
||||
:rules="[(val:string) => !!val || `${'กรุณาเลือกชื่อเครื่องราชฯ'}`]"
|
||||
@filter="(inputValue:string,
|
||||
doneFn:Function) => filterSelector(inputValue, doneFn,'insigniaOptions'
|
||||
) "
|
||||
@update:modelValue="insigniaTypeSelection"
|
||||
/>
|
||||
>
|
||||
<template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
<div class="col-xs-6 col-sm-6 col-md-6">
|
||||
<q-input
|
||||
|
|
@ -1165,7 +1162,11 @@ onMounted(async () => {
|
|||
<q-card style="min-width: 80%">
|
||||
<DialogHeader
|
||||
tittle="ประวัติแก้ไขเครื่องราชอิสริยาภรณ์"
|
||||
:close="() => ((modalHistory = false), (rowsHistory = []))"
|
||||
:close="
|
||||
() => (
|
||||
(modalHistory = false), (rowsHistory = []), (filterHistory = '')
|
||||
)
|
||||
"
|
||||
/>
|
||||
<q-separator />
|
||||
|
||||
|
|
@ -1182,18 +1183,7 @@ onMounted(async () => {
|
|||
debounce="300"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon
|
||||
v-if="filterHistory == ''"
|
||||
name="search"
|
||||
@click.stop.prevent="filterHistory = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon
|
||||
v-if="filterHistory"
|
||||
name="cancel"
|
||||
@click.stop.prevent="filterHistory = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon name="search" />
|
||||
</template>
|
||||
</q-input>
|
||||
<q-select
|
||||
|
|
@ -1207,7 +1197,6 @@ onMounted(async () => {
|
|||
map-options
|
||||
:options="columnsHistory"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -1222,7 +1211,7 @@ onMounted(async () => {
|
|||
:paging="true"
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
:visible-columns="visibleColumnsHistory"
|
||||
:filter="filterHistory"
|
||||
:filter="filterHistory.trim()"
|
||||
>
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ const empType = ref<string>(pathRegistryEmp(route.name?.toString() ?? ""));
|
|||
/**
|
||||
* props
|
||||
*/
|
||||
const isLeave = defineModel<boolean>("isLeave", {
|
||||
const isLeave = defineModel<boolean>("isLeave", {
|
||||
required: true,
|
||||
});
|
||||
|
||||
|
|
@ -393,18 +393,7 @@ onMounted(() => {
|
|||
debounce="300"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon
|
||||
v-if="filterSearch == ''"
|
||||
name="search"
|
||||
@click.stop.prevent="filterSearch = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon
|
||||
v-if="filterSearch"
|
||||
name="cancel"
|
||||
@click.stop.prevent="filterSearch = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon name="search" />
|
||||
</template>
|
||||
</q-input>
|
||||
<q-select
|
||||
|
|
@ -419,7 +408,6 @@ onMounted(() => {
|
|||
map-options
|
||||
:options="columns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
<q-btn-toggle
|
||||
|
|
@ -461,7 +449,7 @@ onMounted(() => {
|
|||
:rows="rows"
|
||||
:paging="true"
|
||||
:columns="columns"
|
||||
:filter="filterSearch"
|
||||
:filter="filterSearch.trim()"
|
||||
:grid="modeView === 'card'"
|
||||
v-model:pagination="pagination"
|
||||
:visible-columns="visibleColumns"
|
||||
|
|
@ -778,7 +766,11 @@ onMounted(() => {
|
|||
<q-card-section class="flex justify-between" style="padding: 0">
|
||||
<DialogHeader
|
||||
tittle="ประวัติแก้ไขประกาศเกียรติคุณ"
|
||||
:close="() => ((modalHistory = false), (rowsHistory = []))"
|
||||
:close="
|
||||
() => (
|
||||
(modalHistory = false), (rowsHistory = []), (filterHistory = '')
|
||||
)
|
||||
"
|
||||
/>
|
||||
</q-card-section>
|
||||
|
||||
|
|
@ -796,18 +788,7 @@ onMounted(() => {
|
|||
debounce="300"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon
|
||||
v-if="filterHistory == ''"
|
||||
name="search"
|
||||
@click.stop.prevent="filterHistory = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon
|
||||
v-if="filterHistory"
|
||||
name="cancel"
|
||||
@click.stop.prevent="filterHistory = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon name="search" />
|
||||
</template>
|
||||
</q-input>
|
||||
<q-select
|
||||
|
|
@ -821,7 +802,6 @@ onMounted(() => {
|
|||
map-options
|
||||
:options="columnsHistory"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -836,7 +816,7 @@ onMounted(() => {
|
|||
v-model:pagination="historyPagination"
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
:visible-columns="visibleColumnsHistory"
|
||||
:filter="filterHistory"
|
||||
:filter="filterHistory.trim()"
|
||||
>
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ const kpiDevelopmentId = ref<string>(""); // id การพัฒนารา
|
|||
/**
|
||||
* props
|
||||
*/
|
||||
const isLeave = defineModel<boolean>("isLeave", {
|
||||
const isLeave = defineModel<boolean>("isLeave", {
|
||||
required: true,
|
||||
});
|
||||
|
||||
|
|
@ -419,16 +419,19 @@ async function getDevelop(isLoad?: boolean) {
|
|||
await http
|
||||
.get(
|
||||
config.API.developMentPlan +
|
||||
`/${profileId.value}?page=${paginationIdp.value.page}&pageSize=${paginationIdp.value.rowsPerPage}&searchKeyword=${filterSearchPlan.value}
|
||||
`/${profileId.value}?page=${paginationIdp.value.page}&pageSize=${
|
||||
paginationIdp.value.rowsPerPage
|
||||
}&searchKeyword=${filterSearchPlan.value.trim()}
|
||||
`
|
||||
)
|
||||
.then((res) => {
|
||||
const data = res.data.result.data;
|
||||
totalListIdp.value = Math.ceil(
|
||||
res.data.result.total / pagination.value.rowsPerPage
|
||||
res.data.result.total / paginationIdp.value.rowsPerPage
|
||||
);
|
||||
totalIdp.value = res.data.result.total;
|
||||
rowsPlan.value = data;
|
||||
|
||||
isLoad && hideLoader();
|
||||
})
|
||||
.catch((e) => {
|
||||
|
|
@ -608,18 +611,7 @@ onMounted(async () => {
|
|||
debounce="300"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon
|
||||
v-if="filterSearch == ''"
|
||||
name="search"
|
||||
@click.stop.prevent="filterSearch = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon
|
||||
v-if="filterSearch"
|
||||
name="cancel"
|
||||
@click.stop.prevent="filterSearch = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon name="search" />
|
||||
</template>
|
||||
</q-input>
|
||||
<q-select
|
||||
|
|
@ -634,7 +626,6 @@ onMounted(async () => {
|
|||
map-options
|
||||
:options="columns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
<q-btn-toggle
|
||||
|
|
@ -678,7 +669,7 @@ onMounted(async () => {
|
|||
:rows="rows"
|
||||
:paging="true"
|
||||
:columns="columns"
|
||||
:filter="filterSearch"
|
||||
:filter="filterSearch.trim()"
|
||||
v-model:pagination="pagination"
|
||||
:grid="modeView === 'card'"
|
||||
:visible-columns="visibleColumns"
|
||||
|
|
@ -710,7 +701,9 @@ onMounted(async () => {
|
|||
>
|
||||
</q-btn>
|
||||
<q-btn
|
||||
v-if="isLeave == false && checkPermission($route)?.attrIsUpdate"
|
||||
v-if="
|
||||
isLeave == false && checkPermission($route)?.attrIsUpdate
|
||||
"
|
||||
flat
|
||||
dense
|
||||
round
|
||||
|
|
@ -745,7 +738,10 @@ onMounted(async () => {
|
|||
>
|
||||
</q-btn>
|
||||
<q-btn
|
||||
v-if="isLeave == false && checkPermission($route)?.attrIsUpdate"
|
||||
v-if="
|
||||
isLeave == false &&
|
||||
checkPermission($route)?.attrIsUpdate
|
||||
"
|
||||
flat
|
||||
round
|
||||
color="edit"
|
||||
|
|
@ -800,24 +796,12 @@ onMounted(async () => {
|
|||
ref="filterPlanRef"
|
||||
outlined
|
||||
placeholder="ค้นหา"
|
||||
debounce="300"
|
||||
@keydown.enter.prevent="getDevelop"
|
||||
@keydown.enter.prevent="
|
||||
(paginationIdp.page = 1), getDevelop(true)
|
||||
"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon
|
||||
v-if="filterSearchPlan == ''"
|
||||
name="search"
|
||||
@click.stop.prevent="filterSearchPlan = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon
|
||||
v-if="filterSearchPlan"
|
||||
name="cancel"
|
||||
@click.stop.prevent="
|
||||
(filterSearchPlan = ''), getDevelop(true)
|
||||
"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon name="search" />
|
||||
</template>
|
||||
</q-input>
|
||||
<q-select
|
||||
|
|
@ -832,7 +816,6 @@ onMounted(async () => {
|
|||
map-options
|
||||
:options="columnsPlan"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
<q-btn-toggle
|
||||
|
|
@ -1208,7 +1191,11 @@ onMounted(async () => {
|
|||
<q-card style="min-width: 80%">
|
||||
<DialogHeader
|
||||
tittle="ประวัติแก้ไขผลการประเมินการปฏิบัติราชการ"
|
||||
:close="() => ((modalHistory = false), (rowsHistory = []))"
|
||||
:close="
|
||||
() => (
|
||||
(modalHistory = false), (rowsHistory = []), (filterHistory = '')
|
||||
)
|
||||
"
|
||||
/>
|
||||
<q-separator />
|
||||
<q-card-section style="max-height: 60vh" class="scroll">
|
||||
|
|
@ -1224,18 +1211,7 @@ onMounted(async () => {
|
|||
debounce="300"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon
|
||||
v-if="filterHistory == ''"
|
||||
name="search"
|
||||
@click.stop.prevent="filterHistory = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon
|
||||
v-if="filterHistory"
|
||||
name="cancel"
|
||||
@click.stop.prevent="filterHistory = ''"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<q-icon name="search" />
|
||||
</template>
|
||||
</q-input>
|
||||
<q-select
|
||||
|
|
@ -1249,7 +1225,6 @@ onMounted(async () => {
|
|||
map-options
|
||||
:options="columnsHistory"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -1264,7 +1239,7 @@ onMounted(async () => {
|
|||
:paging="true"
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
:visible-columns="visibleColumnsHistory"
|
||||
:filter="filterHistory"
|
||||
:filter="filterHistory.trim()"
|
||||
>
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
|
|
|
|||
|
|
@ -267,7 +267,6 @@ watch(
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-3">
|
||||
<q-select
|
||||
class="inputgreen"
|
||||
outlined
|
||||
dense
|
||||
label="ตัวเลือก"
|
||||
|
|
@ -305,7 +304,6 @@ watch(
|
|||
outlined
|
||||
hide-bottom-space
|
||||
:rules="[(val:string) => !!val || `${'กรุณาเลือกปีงบประมาณ'}`,]"
|
||||
class="inputgreen"
|
||||
:model-value="
|
||||
formData.year === null ? null : Number(formData.year) + 543
|
||||
"
|
||||
|
|
@ -328,7 +326,6 @@ watch(
|
|||
outlined
|
||||
dense
|
||||
:rules="[(val:string) => !!val || `${'กรุณาเลือกโครงการ/หลักสูตรการฝึกอบรม'}`,]"
|
||||
class="inputgreen"
|
||||
label="โครงการ/หลักสูตรการฝึกอบรม"
|
||||
:options="projectOp"
|
||||
option-label="projectName"
|
||||
|
|
@ -475,7 +472,6 @@ watch(
|
|||
readonly
|
||||
type="textarea"
|
||||
dense
|
||||
class="inputgreen"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกเป้าหมายการนำไปพัฒนางาน'}`,]"
|
||||
lazy-rules
|
||||
hide-bottom-space
|
||||
|
|
@ -497,7 +493,7 @@ watch(
|
|||
</div>
|
||||
<div class="col-8">
|
||||
<q-input
|
||||
class="inputgreen"
|
||||
|
||||
v-model="formData.achievement10"
|
||||
outlined
|
||||
readonly
|
||||
|
|
@ -516,7 +512,7 @@ watch(
|
|||
</div>
|
||||
<div class="col-8">
|
||||
<q-input
|
||||
class="inputgreen"
|
||||
|
||||
v-model="formData.achievement5"
|
||||
outlined
|
||||
readonly
|
||||
|
|
@ -535,7 +531,6 @@ watch(
|
|||
</div>
|
||||
<div class="col-8">
|
||||
<q-input
|
||||
class="inputgreen"
|
||||
v-model="formData.achievement0"
|
||||
outlined
|
||||
readonly
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue