import {useEffect, useState, useRef} from "react";
import {useRouter} from '@tarojs/taro'
import {Button, Loading, CellGroup, Input, TextArea, Form} from '@nutui/nutui-react-taro'
import Taro from '@tarojs/taro'
import {View} from '@tarojs/components'
import {ClinicAppointment} from "@/api/clinic/clinicAppointment/model";
import {getClinicAppointment, listClinicAppointment, updateClinicAppointment, addClinicAppointment} from "@/api/clinic/clinicAppointment";

const AddClinicAppointment = () => {
  const {params} = useRouter();
  const [loading, setLoading] = useState<boolean>(true)
  const [FormData, setFormData] = useState<ClinicAppointment>({})
  const formRef = useRef<any>(null)

  const reload = async () => {
    if (params.id) {
      const data = await getClinicAppointment(Number(params.id))
      setFormData(data)
    } else {
      setFormData({})
    }
  }

  // 提交表单
  const submitSucceed = async (values: any) => {
    try {
      if (params.id) {
        // 编辑模式
        await updateClinicAppointment({
          ...values,
          id: Number(params.id)
        })
      } else {
        // 新增模式
        await addClinicAppointment(values)
      }

      Taro.showToast({
        title: `操作成功`,
        icon: 'success'
      })

      setTimeout(() => {
        return Taro.navigateBack()
      }, 1000)
    } catch (error) {
      Taro.showToast({
        title: `操作失败`,
        icon: 'error'
      });
    }
  }

  const submitFailed = (error: any) => {
    console.log(error, 'err...')
  }

  useEffect(() => {
    reload().then(() => {
      setLoading(false)
    })
  }, []);

  if (loading) {
    return <Loading className={'px-2'}>加载中</Loading>
  }

  return (
    <>
      <Form
        ref={formRef}
        divider
        initialValues={FormData}
        labelPosition="left"
        onFinish={(values) => submitSucceed(values)}
        onFinishFailed={(errors) => submitFailed(errors)}
        footer={
          <div
            style={{
              display: 'flex',
              justifyContent: 'center',
              width: '100%'
            }}
          >
            <Button
              nativeType="submit"
              type="success"
              size="large"
              className={'w-full'}
              block
            >
              {params.id ? '更新' : '保存'}
            </Button>
          </div>
        }
      >
        <CellGroup style={{padding: '4px 0'}}>
          <Form.Item name="type" label="类型" initialValue={FormData.type} required>
