<script setup lang="ts">
import { onMounted, reactive, ref } from "vue";
import { useQuasar } from "quasar";

import type { FormFollowResult } from "@/modules/15_development/interface/request/Main";
import type {
  DataOption,
  DataOptionCheckBox,
} from "@/modules/15_development/interface/index/Main";

import { useCounterMixin } from "@/stores/mixin";

const $q = useQuasar();
const { showLoader, hideLoader, dialogConfirm } = useCounterMixin();

const formData = reactive<FormFollowResult>({
  metricType: "",
  indicators: "",
  target: "",
  calculation: "",
  measuRement: "",
  results: "",
  obstacles: "",
  suggestions: "",
  project: '',
});

const group = ref<any[]>([]);
const metricTypeOp = ref<DataOption[]>([
  {
    id: "id1",
    name: "name1",
  },
  {
    id: "id2",
    name: "name2",
  },
  {
    id: "id3",
    name: "name3",
  },
]);
const projectOp = ref<DataOption[]>([
  {
    id: "true",
    name: "โครงการที่ เสนอขอ TN",
  },
  {
    id: "false",
    name: "โครงการที่ ไม่ เสนอขอ TN",
  },
]);

const optionsTNFirst = ref<DataOptionCheckBox[]>([
  {
    label: "ผ่านการพิจารณา ได้รับการจัดงบประมาณตามข้อบัญญัติ",
    value: "id1",
  },
  {
    label:
      "ผ่านการพิจารณา ไม่ได้รับการจัดสรรงบประมาณตามข้อบัญญัติ แต่ได้รับการจัดสรรเงินนอกงบประมาณ",
    value: "id2",
  },
  {
    label: "ไม่ผ่านการพิจารณา แต่ได้รับการจัดสรรเงินนอกงบประมาณ",
    value: "id3",
  },
]);
const optionsTNSecon = ref<DataOptionCheckBox[]>([
  {
    label: "แต่ได้รับการจัดสรรงบประมาณตามข้อบัญญัติ",
    value: "id1",
  },
  {
    label: "แต่ได้รับการจัดสรรเงินนอกงบประมาณ",
    value: "id2",
  },
]);

const options = ref<any>([
  "สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานครกองบริหารทั้วไป",
  "สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร",
]);
function onSubmit() {
  dialogConfirm($q, () => {});
}

onMounted(() => {
  console.log("ข้อมูลเบื้องต้น");
});
</script>
<template>
  <q-form greedy @submit.prevent @validation-success="onSubmit">
    <div class="row q-pa-md q-col-gutter-sm">
      <div class="col-12">
        <span class="text-weight-medium text-body1">ตัวชี้วัดความสำเร็จ</span>
      </div>
      <div class="col-12 col-sm-6 col-md-4">
        <q-select
          dense
          outlined
          label="ประเภทตัวชี้วัด"
          v-model="formData.metricType"
          :options="metricTypeOp"
          option-label="name"
          option-value="id"
          hide-bottom-space
          :rules="[
            (val:string) =>
              !!val || `${'กรุณากรอกประเภทตัวชี้วัด'}`,
          ]"
        />
      </div>
      <div class="col-12 col-sm-6 col-md-4">
        <q-input
          dense
          outlined
          label="ตัวชี้วัด"
          v-model="formData.indicators"
          hide-bottom-space
          :rules="[
            (val:string) =>
              !!val || `${'กรุณากรอกตัวชี้วัด'}`,
          ]"
        />
      </div>
      <div class="col-12 col-sm-6 col-md-4">
        <q-input
          dense
          outlined
          label="เป้าหมาย"
          v-model="formData.target"
          hide-bottom-space
          :rules="[
            (val:string) =>
              !!val || `${'กรุณากรอกเป้าหมาย'}`,
          ]"
        />
      </div>
      <div class="col-12">
        <q-input
          outlined
          dense
          v-model="formData.calculation"
          hide-bottom-space
          label="วิธีการคำนวณ/เครื่องมือ"
          type="textarea"
          :rules="[
            (val:string) =>
              !!val || `${'กรุณากรอกวิธีการคำนวณ/เครื่องมือ'}`,
          ]"
        />
      </div>
      <div class="col-12">
        <q-input
          outlined
          dense
          v-model="formData.measuRement"
          hide-bottom-space
          label="ระยะเวลาวัดผล"
          :rules="[
            (val:string) =>
              !!val || `${'กรุณากรอกระยะเวลาวัดผล'}`,
          ]"
        />
      </div>
      <div class="col-12">
        <q-input
          outlined
          dense
          v-model="formData.results"
          hide-bottom-space
          label="ผลการดำเนิน"
          type="textarea"
          :rules="[
            (val:string) =>
              !!val || `${'กรุณากรอกผลการดำเนิน'}`,
          ]"
        />
      </div>
      <div class="col-12">
        <q-input
          outlined
          dense
          v-model="formData.obstacles"
          hide-bottom-space
          label="ปัญหาอุปสรรค"
          type="textarea"
          :rules="[
            (val:string) =>
              !!val || `${'กรุณากรอกปัญหาอุปสรรค'}`,
          ]"
        />
      </div>
      <div class="col-12">
        <q-input
          outlined
          dense
          v-model="formData.suggestions"
          hide-bottom-space
          label="ข้อเสนอเเนะ"
          type="textarea"
          :rules="[
            (val:string) =>
              !!val || `${'กรุณากรอกข้อเสนอเเนะ'}`,
          ]"
        />
      </div>
      <div class="col-12">
        <span class="text-weight-medium text-body1"
          >ประเภทของผลการพิจารณาความเหมาะสมโครงการ</span
        >
      </div>
      <div class="col-12 col-sm-6 col-md-4">
        <q-select
          dense
          outlined
          label="ประเภทโครงการ"
          v-model="formData.project"
          :options="projectOp"
          option-label="name"
          option-value="id"
          hide-bottom-space
          map-options
          emit-value
          :rules="[
            (val:string) =>
              !!val || `${'กรุณาเลือกประเภทโครงการ'}`,
          ]"
        />
      </div>
      <div v-if="formData.project !== ''" class="col-12">
        <q-option-group
          :options="
            formData.project !== 'false' ? optionsTNFirst : optionsTNSecon
          "
          type="checkbox"
          v-model="group"
        />
      </div>
    </div>

    <q-separator />
    <div class="text-right q-pa-sm">
      <q-btn
        dense
        unelevated
        label="บันทึก"
        id="onSubmit"
        type="submit"
        color="public"
        class="q-px-md"
      >
        <q-tooltip>บันทึกข้อมูล</q-tooltip>
      </q-btn>
    </div>
  </q-form>
</template>

<style scoped></style>
