<template>
  <div class="app-container">
    <el-card shadow="always" style="width: 55%; margin: 0 auto">
      <el-form
        ref="formRef"
        :label-width="labelWidth + 'px'"
        :model="form"
        :rules="rules"
      >
        <p>
          <b> {{ t("admin.form.basicInfo") }}</b>
        </p>

        <el-row>
          <el-col :span="24">
            <el-form-item
              :label="
                t('admin.form.name', {
                  type: t('routes.company.technicalDemand'),
                })
              "
              prop="title"
            >
              <el-input v-model="form.title"></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="24">
            <!--           <el-checkbox label="0" @change="handleCheck">其他</el-checkbox>-->
            <el-form-item
              :label="
                t('admin.form.category', { type: t('admin.common.demand') })
              "
              prop="kinds"
            >
              <el-checkbox-group v-model="form.kinds">
                <el-checkbox
                  v-for="item in checkList"
                  :key="item.id"
                  :label="item.name"
                  >{{ item.name }}
                </el-checkbox>
              </el-checkbox-group>
              <el-row :gutter="20">
                <el-col :span="20">
                  <el-input
                    v-model="checkInput"
                    :placeholder="
                      t('admin.form.placeholder', {
                        type: t('webSearch.demand'),
                      })
                    "
                  ></el-input>
                </el-col>
                <el-col :span="4">
                  <el-button type="primary" @click="addCheck"
                    ><!--添加-->
                    {{ t("admin.form.add") }}
                  </el-button>
                </el-col>
              </el-row>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="24">
            <el-form-item
              :label="t('webSearch.demandDescription')"
              prop="introduce"
            >
              <!--              <wangEditor
                              v-model="form.introduce"
                              min-height="150px"
                              :placeholder="t('webSearch.pleaseEnterTheContentOfTheTechnicalRequirementsAndTheDetailedTechnicalIndicators')"
                              width="100%"
                              @blur="formRef.validateField(`introduce`)"
                            ></wangEditor>-->
              <!--              textarea -->
              <el-input
                v-model="form.introduce"
                type="textarea"
                :autosize="{ minRows: 6, maxRows: 6 }"
                :placeholder="
                  t(
                    'webSearch.pleaseEnterTheContentOfTheTechnicalRequirementsAndTheDetailedTechnicalIndicators'
                  )
                "
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <field-options
          ref="fieldFormRef"
          v-model="form"
          :labelWidth="labelWidth"
        />
        <!--        <city-options-->
        <!--          ref="cityFormRef"-->
        <!--          v-model="form"-->
        <!--          :labelWidth="labelWidth"-->
        <!--        ></city-options>-->

        <el-row>
          <el-col :span="12">
            <el-form-item
              :prop="form.budgetMode == 1 ? 'budget' : ''"
              :label="t('admin.form.achievementDemandBudget')"
            >
              <el-input
                v-model="form.budget"
                oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"
                :placeholder="
                  t('admin.form.placeholder', {
                    type: t('admin.form.technicalDemandBudget'),
                  })
                "
              >
                <template #append
                  >{{ t("admin.table.tenThousandYuan") }}
                </template>
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label-width="50px">
              <el-checkbox
                v-model="form.budgetMode"
                false-label="1"
                true-label="2"
                >{{ t("tips.faceToFace") }}
              </el-checkbox>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item :label="t('admin.table.deadline')" prop="deadline">
              <el-date-picker
                v-model="form.deadline"
                :placeholder="
                  t('admin.form.pleaseSelect', {
                    type: t('admin.table.deadline'),
                  })
                "
                style="width: 100%"
                type="date"
                value-format="YYYY-MM-DD"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item :label="t('admin.form.demandContact')" prop="name">
              <el-input
                v-model="form.name"
                :placeholder="
                  t('admin.form.placeholder', {
                    type: t('admin.form.demandContact'),
                  })
                "
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item :label="t('admin.form.contactPhone')" prop="mobile">
              <!--                maxlength="11"-->
              <el-input
                v-model="form.mobile"
                :placeholder="
                  t('admin.form.placeholder', {
                    type: t('admin.form.contactPhone'),
                  })
                "
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <!-- <el-row>
          <el-col :span="12">
            <el-form-item label="需求提交人:" prop="commitUserName">
              <el-input
                v-model="form.commitUserName"
                placeholder="请输入需求提交人"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="需求提交人手机号:" prop="commitUserPhone">
              <el-input
                v-model="form.commitUserPhone"
                placeholder="请输入需求提交人手机号"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row> -->

        <el-row>
          <el-col :span="24">
            <input-box-add
              ref="directionsFormRef"
              v-model="form"
              :labelWidth="labelWidth"
              class="cooperation-mode"
              fieldKey="wants"
              :placeholder="t('admin.table.cooperationType')"
              :title="t('webSearch.cooperationMode')"
            />
          </el-col>
        </el-row>
      </el-form>
      <!-- <div :style="{ marginLeft: labelWidth + 'px' }">
        <el-button @click="router.go(-1)">{{ t("admin.common.cancel") }}</el-button>
        <el-button type="primary" @click="submitForm">{{ t('admin.common.submit') }}</el-button>
      </div> -->
      <div :style="{ marginLeft: labelWidth + 'px' }">
        <el-button type="primary" @click="submitForm(3)"
          >{{ t("admin.form.saveDraft") }}
        </el-button>
        <el-button type="primary" @click="submitForm(1)"
          >{{ t("admin.common.submitAudit") }}
        </el-button>
      </div>
    </el-card>
  </div>
</template>
<script setup>
// import { expert } from "@/api/identity/index";
// import { insertTechnologyDemand } from "@/api/admin/enterprise";

// import { expert } from "@/api/identity/index";
// import { insertTechnologyDemand } from "@/api/admin/enterprise";
import tab from "@/plugins/tab";
import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import { getTechnologyDemand } from "@/api/admin/enterprise/demand";
import {
  computed,
  getCurrentInstance,
  onMounted,
  reactive,
  ref,
  toRefs,
} from "vue";
import { updateCount } from "@/api/admin/count";
import { insertDemand } from "@/api/admin/agent/service/technology-demand";
import { useI18n } from "vue-i18n";
import modal from "@/plugins/modal";
import { techinicalDemandTypeDict } from "@/constant/dict";

const { t } = useI18n();
const router = useRouter();
const route = useRoute();
const data = reactive({
  form: {
    check: [],
  },
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    postCode: undefined,
  },
  rules: {
    title: [
      {
        required: true,
        /*"需求名称不能为空"*/
        message: computed(() =>
          t("admin.validation.required", {
            type: t("admin.form.name", { type: t("admin.common.demand") }),
          })
        ),
        trigger: "blur",
      },
    ],
    introduce: [
      {
        required: true,
        /*"需求描述不能为空"*/
        message: computed(() =>
          t("admin.validation.required", {
            type: t("webSearch.demandDescription"),
          })
        ),
        trigger: "change",
      },
    ],
    name: [
      {
        required: true,
        /*"需求联系人不能为空"*/
        message: computed(() =>
          t("admin.validation.required", {
            type: t("admin.form.demandContact"),
          })
        ),
        trigger: "blur",
      },
    ],
    mobile: [
      {
        required: true,
        /*"联系人手机号不能为空"*/
        message: computed(() =>
          t("admin.validation.required", {
            type: t("admin.form.contactPhone"),
          })
        ),
        trigger: "blur",
      },
      /*  {
          pattern: /^1[3456789]\d{9}$/,
          message: "手机号格式不正确",
          trigger: "blur",
        },*/
    ],
    commitUserName: [
      {
        required: true,
        message: computed(() => t("webContact.demandSubmit")),
        trigger: "blur",
      },
    ],
    kinds: [
      {
        required: true,
        message: computed(() => t("webContact.demandType")),
        trigger: "change",
      },
    ],
    budget: [
      {
        required: true,
        message: computed(() => t("webContact.demandBudget")),
        trigger: "blur",
      },
    ],
    deadline: [
      {
        required: true,
        /*"请选择截止时间"*/
        message: computed(() =>
          t("admin.form.pleaseSelect", { type: t("admin.table.deadline") })
        ),
        trigger: ["change", "blur"],
      },
    ],
    commitUserPhone: [
      {
        required: true,
        /*"需求提交人手机号不能为空"*/
        message: computed(() =>
          t("admin.validation.required", {
            type: t("admin.form.contactPhone"),
          })
        ),
        trigger: "blur",
      },
    ],
  },
});

const { queryParams, form, rules } = toRefs(data);

const { proxy } = getCurrentInstance();
const labelWidth = 160;
// const isContainOther = ref(false);
const checkList = reactive([
  techinicalDemandTypeDict.map((el) => ({
    id: el.value,
    name: t(`dict.${el.i18n}`),
  })),
  // {
  //   id: 1,
  //   name: "成果难题解决",
  // },
  // {
  //   id: 2,
  //   name: "成果储备/项目投资",
  // },
  // {
  //   id: 3,
  //   name: "新成果开发",
  // },
  // {
  //   id: 4,
  //   name: "检验检测",
  // },
]);

const formRef = ref(null);
const fieldFormRef = ref(null);
const directionsFormRef = ref(null);
// const cityFormRef = ref(null);
const checkInput = ref("");
const submitForm = async (status) => {
  let formValid;
  try {
    formValid = await formRef.value.validate();
  } catch (error) {
    formValid = false;
  }
  form.value.status = status;
  const fieldFormValid = await fieldFormRef.value.validateForm();
  const directionsFormValid = await directionsFormRef.value.validateForm();
  // const cityFormValid = await cityFormRef.value.validateForm();
  if (formValid && fieldFormValid && directionsFormValid) {
    if (route.query.id) {
      /*TODO*/
      /*await updateTechnologyDemand(form.value);
      ElMessage.success("修改需求成功");*/
    } else {
      await insertDemand(form.value);
      ElMessage.success(t("admin.common.addSuccess"));
    }
    updateCount("technology");
    backToList();
  } else {
    console.log("validation failed");
  }
};

// 返回技术需求列表
const backToList = () => {
  tab.closeOpenPage({ path: "/demand/technology" });
};

const addCheck = () => {
  if (!checkInput.value.trim().length)
    return modal.msgError(t("admin.form.placeholder"));
  const flag = checkList.some((item) => {
    return item.name.trim() === checkInput.value.trim();
  });
  if (!flag) {
    checkList.push({
      id: checkList.length + 1,
      name: checkInput.value,
    });
    checkInput.value = "";
  }
};

onMounted(() => {
  formRef.value.resetFields();

  if (route.query.id) {
    const obj = Object.assign({}, route, {
      title: t("admin.form.edit", {
        type: t("routes.company.technicalDemand"),
      }),
    });
    tab.updatePage(obj);
    getTechnologyDemand({ id: route.query.id }).then((resp) => {
      form.value = resp.data;

      if (!form.value.kinds) {
        form.value.kinds = resp.data.kind?.split(",") ?? [];
        form.value.kinds.forEach((el, index) => {
          if (!checkList.find((item) => item.name === el)) {
            checkList.push({
              id: index,
              name: el,
            });
          }
        });
      }
      if (!form.value.wants) {
        form.value.wants = resp.data.want?.split(",") ?? [];
      }
    });
  } else {
    form.value = {
      check: [],
    };
    if (formRef.value) {
      formRef.value.resetFields();
    }
  }
});
</script>
<style lang="scss" scoped>
:deep(.cooperation-mode) {
  .input-add-bar {
    width: 100%;
  }
}
</style>
