Modal4.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="Modal Title"
  6. @visible-change="handleVisibleChange"
  7. >
  8. <BasicForm @register="registerForm" :model="model" />
  9. </BasicModal>
  10. </template>
  11. <script lang="ts">
  12. import { defineComponent, ref, nextTick } from 'vue';
  13. import { BasicModal, useModalInner } from '/@/components/Modal';
  14. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  15. const schemas: FormSchema[] = [
  16. {
  17. field: 'field1',
  18. component: 'Input',
  19. label: '字段1',
  20. colProps: {
  21. span: 24,
  22. },
  23. defaultValue: '111',
  24. },
  25. {
  26. field: 'field2',
  27. component: 'Input',
  28. label: '字段2',
  29. colProps: {
  30. span: 24,
  31. },
  32. },
  33. ];
  34. export default defineComponent({
  35. components: { BasicModal, BasicForm },
  36. props: {
  37. userData: { type: Object },
  38. },
  39. setup(props) {
  40. const modelRef = ref({});
  41. const [
  42. registerForm,
  43. {
  44. // setFieldsValue,
  45. // setProps
  46. },
  47. ] = useForm({
  48. labelWidth: 120,
  49. schemas,
  50. showActionButtonGroup: false,
  51. actionColOptions: {
  52. span: 24,
  53. },
  54. });
  55. const [register] = useModalInner((data) => {
  56. data && onDataReceive(data);
  57. });
  58. function onDataReceive(data) {
  59. console.log('Data Received', data);
  60. // 方式1;
  61. // setFieldsValue({
  62. // field2: data.data,
  63. // field1: data.info,
  64. // });
  65. // // 方式2
  66. modelRef.value = { field2: data.data, field1: data.info };
  67. // setProps({
  68. // model:{ field2: data.data, field1: data.info }
  69. // })
  70. }
  71. function handleVisibleChange(v) {
  72. v && props.userData && nextTick(() => onDataReceive(props.userData));
  73. }
  74. return { register, schemas, registerForm, model: modelRef, handleVisibleChange };
  75. },
  76. });
  77. </script>