<script lang="ts">
// 声明额外的选项
export default {
  name: "Add"
};
</script>
<script setup lang="ts">
import { inject, onMounted, reactive, ref, Uploadfile, UploadImg, Editor, useRenderIcon, ElMessage, ElMessageBox, Upload, Close, http, getGroupUrl, RegularVerification, verification } from "@/utils/importUsed"
// 接口列表实例
let UrlList = reactive(null)
// 获取当前板块接口列表
onMounted(async () => {
  UrlList = await getGroupUrl(["kxsConfigServer"]);
  groupIdQuery();

})
// 组件传参对象
const props = defineProps<{
  submit: Function;
  addVisible: {
    type: Boolean;
    default: false;
  };
  width: {
    type: Number;
    default: 50;
  };
}>();
// 表单数据
let UpdateForm = ref({
  groupId: "", //分组
  apiName: "", //接口名称
  apiKey: "", //接口关键字
  apiHost: "", //接口主机头
  apiPort: "", //接口端口号
  apiRouter: "", //接口路由
  apiMethod: "", //接口请求方式

});
// 表单实例
const ruleFormRef = ref()

// 传参选项数据
// 分组选项数据
const groupIdOptionList = ref([]);

// 选项卡参数(默认值为列表某项的id)
const activeId = ref('1')
// 提交函数
const submit = async (formEl) => {
  // 表单校验拦截
  if (!formEl) return
  await formEl.validate(async (valid, fields) => {
    if (valid) {
      //表单校验成功回调
      console.log('submit!')


      // 需动态生成接口
      const { status, msg }: any = await http.Request({
        method: UrlList.kxsConfigServer.apiInfoadd.method,
        url: UrlList.kxsConfigServer.apiInfoadd.url,
        params: UpdateForm.value
      });
      if (status === 1) {
        //业务成功回调
        ElMessage({
          message: "新增成功",
          type: "success"
        });
        UpdateForm.value = {
                groupId: "", //分组
      apiName: "", //接口名称
      apiKey: "", //接口关键字
      apiHost: "", //接口主机头
      apiPort: "", //接口端口号
      apiRouter: "", //接口路由
      apiMethod: "", //接口请求方式

        };
        // 关闭新增弹窗;
        closeVisible()
      } else {
        //业务失败回调
        ElMessageBox.alert(msg, "提示", {
          confirmButtonText: "关闭",
          type: "warning"
        });
      }
    } else {
      //表单校验失败回调
      ElMessage({
        message: "请输入完整信息",
        type: "error"
      });
    }
  })
};

//获取分组数据
const groupIdQuery = async () => {
  const { status, data }: any = await http.Request({ method: UrlList.kxsConfigServer.apiGroupselectList.method, url: UrlList.kxsConfigServer.apiGroupselectList.url, params: { } });
  if (status === 1) {
    groupIdOptionList.value = data.records;
  }
};



// 表单校验规则
const rules = reactive({
  apiName: [
    { required: true, message: '请输入接口名称', trigger: 'blur' },
  ],
  apiKey: [
    { required: true, message: '请输入接口关键字', trigger: 'blur' },
  ],
  apiHost: [
    { required: true, message: '请输入接口主机头', trigger: 'blur' },
  ],
  apiPort: [
    { required: true, message: '请输入接口端口号', trigger: 'blur' },
  ],
  apiRouter: [
    { required: true, message: '请输入接口路由', trigger: 'blur' },
  ],

})
// 关闭弹窗回调函数
const closeFn: any = inject("closeAddVisible");
const closeVisible = () => {
  // 清空表单项;
  UpdateForm.value = {
        groupId: "", //分组
    apiName: "", //接口名称
    apiKey: "", //接口关键字
    apiHost: "", //接口主机头
    apiPort: "", //接口端口号
    apiRouter: "", //接口路由
    apiMethod: "", //接口请求方式

  };
  closeFn();
};
</script>

<template lang="pug">
.main
  el-dialog(v-model='props.addVisible' width="50%" title="新增" @close="closeVisible")
    el-form(:model='UpdateForm' label-position="right" ref="ruleFormRef" :rules="rules" label-width="100px")
      el-form-item(label="分组", prop="groupId")
        el-select(
          v-model="UpdateForm.groupId",
          placeholder="请选择分组",
          clearable,
          class="!w-[230px]"
        )
          el-option(:label="item.groupName", :value="item.id" v-for="(item,index) in groupIdOptionList")
      el-form-item(label='接口名称' prop="apiName")
        el-input(v-model='UpdateForm.apiName' autocomplete='off' class="!w-[230px]"
          placeholder="请输入接口名称")
      el-form-item(label='接口关键字' prop="apiKey")
        el-input(v-model='UpdateForm.apiKey' autocomplete='off' class="!w-[230px]"
          placeholder="请输入接口关键字")
      el-form-item(label='接口主机头' prop="apiHost")
        el-input(v-model='UpdateForm.apiHost' autocomplete='off' class="!w-[230px]"
          placeholder="请输入接口主机头")
      el-form-item(label='接口端口号' prop="apiPort")
        el-input-number(v-model='UpdateForm.apiPort' :min="1" :max="1000"
          placeholder="请输入接口端口号")
      el-form-item(label='接口路由' prop="apiRouter")
        el-input(v-model='UpdateForm.apiRouter' autocomplete='off' class="!w-[230px]"
          placeholder="请输入接口路由")
      el-form-item(label='接口请求方式' prop="apiMethod")
        el-input(v-model='UpdateForm.apiMethod' autocomplete='off' class="!w-[230px]"
          placeholder="请输入接口请求方式")

    el-button(
      :icon="useRenderIcon(Close)",
      @click="closeVisible"
    ) 关闭
    el-button(
      type="primary",
      :icon="useRenderIcon(Upload)",
      @click="submit(ruleFormRef)"
    ) 确认提交
</template>

<style scoped lang="scss">
:deep(.el-dropdown-menu__item i) {
  margin: 0;
}

:deep(.el-form-item__label) {
  font-weight: 700;
}

:deep(.el-pagination) {
  flex-flow: wrap;
}

:deep(.is-draggable) {
  max-height: 80vh;
  overflow: auto;
}

:deep(.el-dialog__header) {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #fff;
}

.collapsedom {
  padding: 0 20px;
  background-color: #fff;
}

.ovh-x {
  height: 40vh;
  overflow-y: auto;
}

:deep(.el-descriptions__header) {
  margin: 16px 0 !important;
}
</style>
