<template> <BasicModal v-bind="$attrs" @register="registerModal" :title="isUpdate ? '编辑' : '新增'" @ok="handleSubmit"> <BasicForm @register="registerForm" /> </BasicModal> </template> <script lang="ts" setup name="SystemClientModal"> import { ref, unref } from 'vue' import { BasicModal, useModalInner } from '@/components/Modal' import { BasicForm, useForm } from '@/components/Form' import { formSchema } from './client.data' import { createOAuth2Client, getOAuth2Client, updateOAuth2Client } from '@/api/system/oauth2/client' const emit = defineEmits(['success', 'register']) const isUpdate = ref(true) const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({ labelWidth: 160, baseColProps: { span: 24 }, schemas: formSchema, showActionButtonGroup: false, actionColOptions: { span: 23 } }) const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { resetFields() setModalProps({ confirmLoading: false }) isUpdate.value = !!data?.isUpdate if (unref(isUpdate)) { const res = await getOAuth2Client(data.record.id) setFieldsValue({ ...res }) } }) async function handleSubmit() { try { const values = await validate() setModalProps({ confirmLoading: true }) if (unref(isUpdate)) { await updateOAuth2Client(values) } else { await createOAuth2Client(values) } closeModal() emit('success') } finally { setModalProps({ confirmLoading: false }) } } </script>