这是基于vue-vben-admin 模板适用于abp vNext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

56 lines
1.7 KiB

<template>
<BasicModal
@register="registerModal"
:title="L('Resources')"
:can-fullscreen="false"
:width="800"
:height="500"
@ok="handleSubmit"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { nextTick } from 'vue';
import { BasicForm, useForm } from '/@/components/Form';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { useMessage } from '/@/hooks/web/useMessage';
import { useLocalization } from '/@/hooks/abp/useLocalization';
import { getModalFormSchemas } from './ModalData';
import { formatToDateTime } from '/@/utils/dateUtil';
import { Resource } from '/@/api/localization/model/resourcesModel';
import { CreateAsyncByInput, UpdateAsyncByNameAndInput } from '/@/api/localization/resources';
const emits = defineEmits(['change', 'register']);
const { createMessage } = useMessage();
const { L } = useLocalization(['LocalizationManagement', 'AbpUi']);
const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
layout: 'vertical',
showActionButtonGroup: false,
schemas: getModalFormSchemas(),
transformDateFunc: (date) => {
return date ? formatToDateTime(date) : '';
},
});
const [registerModal, { closeModal }] = useModalInner((data: Resource) => {
nextTick(() => {
resetFields();
setFieldsValue(data);
});
});
function handleSubmit() {
validate().then((input) => {
const api = input.id
? UpdateAsyncByNameAndInput(input.name, input)
: CreateAsyncByInput(input);
api.then((dto) => {
createMessage.success(L('SuccessfullySaved'));
emits('change', dto);
closeModal();
});
});
}
</script>