| | |
| | | <BasicForm @register="registerForm" /> |
| | | </BasicModal> |
| | | </template> |
| | | <script lang="ts"> |
| | | import { defineComponent, ref, computed, unref } from 'vue'; |
| | | import { BasicModal, useModalInner } from '/@/components/Modal'; |
| | | import { BasicForm, useForm } from '/@/components/Form/index'; |
| | | <script lang="ts" setup> |
| | | import { ref, computed, unref } from 'vue'; |
| | | import { BasicModal, useModalInner } from '@/components/Modal'; |
| | | import { BasicForm, useForm } from '@/components/Form'; |
| | | import { accountFormSchema } from './account.data'; |
| | | import { getDeptList } from '/@/api/demo/system'; |
| | | import { getDeptList } from '@/api/demo/system'; |
| | | |
| | | export default defineComponent({ |
| | | name: 'AccountModal', |
| | | components: { BasicModal, BasicForm }, |
| | | emits: ['success', 'register'], |
| | | setup(_, { emit }) { |
| | | const isUpdate = ref(true); |
| | | const rowId = ref(''); |
| | | defineOptions({ name: 'AccountModal' }); |
| | | |
| | | const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({ |
| | | labelWidth: 100, |
| | | baseColProps: { span: 24 }, |
| | | schemas: accountFormSchema, |
| | | showActionButtonGroup: false, |
| | | actionColOptions: { |
| | | span: 23, |
| | | }, |
| | | }); |
| | | const emit = defineEmits(['success', 'register']); |
| | | |
| | | const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { |
| | | resetFields(); |
| | | setModalProps({ confirmLoading: false }); |
| | | isUpdate.value = !!data?.isUpdate; |
| | | const isUpdate = ref(true); |
| | | const rowId = ref(''); |
| | | |
| | | if (unref(isUpdate)) { |
| | | rowId.value = data.record.id; |
| | | setFieldsValue({ |
| | | ...data.record, |
| | | }); |
| | | } |
| | | |
| | | const treeData = await getDeptList(); |
| | | updateSchema([ |
| | | { |
| | | field: 'pwd', |
| | | show: !unref(isUpdate), |
| | | }, |
| | | { |
| | | field: 'dept', |
| | | componentProps: { treeData }, |
| | | }, |
| | | ]); |
| | | }); |
| | | |
| | | const getTitle = computed(() => (!unref(isUpdate) ? '新增账号' : '编辑账号')); |
| | | |
| | | async function handleSubmit() { |
| | | try { |
| | | const values = await validate(); |
| | | setModalProps({ confirmLoading: true }); |
| | | // TODO custom api |
| | | console.log(values); |
| | | closeModal(); |
| | | emit('success', { isUpdate: unref(isUpdate), values: { ...values, id: rowId.value } }); |
| | | } finally { |
| | | setModalProps({ confirmLoading: false }); |
| | | } |
| | | } |
| | | |
| | | return { registerModal, registerForm, getTitle, handleSubmit }; |
| | | const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({ |
| | | labelWidth: 100, |
| | | baseColProps: { span: 24 }, |
| | | schemas: accountFormSchema, |
| | | showActionButtonGroup: false, |
| | | actionColOptions: { |
| | | span: 23, |
| | | }, |
| | | }); |
| | | |
| | | const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { |
| | | resetFields(); |
| | | setModalProps({ confirmLoading: false }); |
| | | isUpdate.value = !!data?.isUpdate; |
| | | |
| | | if (unref(isUpdate)) { |
| | | rowId.value = data.record.id; |
| | | setFieldsValue({ |
| | | ...data.record, |
| | | }); |
| | | } |
| | | |
| | | const treeData = await getDeptList(); |
| | | updateSchema([ |
| | | { |
| | | field: 'pwd', |
| | | show: !unref(isUpdate), |
| | | }, |
| | | { |
| | | field: 'dept', |
| | | componentProps: { treeData }, |
| | | }, |
| | | ]); |
| | | }); |
| | | |
| | | const getTitle = computed(() => (!unref(isUpdate) ? '新增账号' : '编辑账号')); |
| | | |
| | | async function handleSubmit() { |
| | | try { |
| | | const values = await validate(); |
| | | setModalProps({ confirmLoading: true }); |
| | | // TODO custom api |
| | | console.log(values); |
| | | closeModal(); |
| | | emit('success', { isUpdate: unref(isUpdate), values: { ...values, id: rowId.value } }); |
| | | } finally { |
| | | setModalProps({ confirmLoading: false }); |
| | | } |
| | | } |
| | | </script> |