sun-chaochao 3 lat temu
rodzic
commit
2f33a0b283
1 zmienionych plików z 21 dodań i 11 usunięć
  1. 21 11
      src/pages/Northbound/AliCloud/Detail/index.tsx

+ 21 - 11
src/pages/Northbound/AliCloud/Detail/index.tsx

@@ -11,10 +11,11 @@ import {
   Select,
 } from '@formily/antd';
 import type { Field } from '@formily/core';
+import { onFormInit } from '@formily/core';
 import { createForm, FormPath, onFieldChange, onFieldValueChange } from '@formily/core';
 import { createSchemaField, observer } from '@formily/react';
 import { Card, Col, Image, message, Row } from 'antd';
-import { useEffect, useMemo } from 'react';
+import { useMemo } from 'react';
 import { useParams } from 'umi';
 import { useAsyncDataSource } from '@/utils/util';
 import './index.less';
@@ -30,22 +31,41 @@ const Detail = observer(() => {
       createForm({
         validateFirst: true,
         effects() {
+          onFormInit(async (form1) => {
+            if (params.id === ':id') return;
+            const resp = await service.detail(params.id);
+            form1.setInitialValues(resp.result);
+          });
           onFieldValueChange('accessConfig.*', async (field, f) => {
             const regionId = field.query('accessConfig.regionId').value();
             const accessKeyId = field.query('accessConfig.accessKeyId').value();
             const accessSecret = field.query('accessConfig.accessSecret').value();
+            const instanceId = field.query('accessConfig.instanceId').value();
             let response: any[] = [];
             if (regionId && accessKeyId && accessSecret) {
               response = await service.getAliyunProductsList({
                 regionId,
                 accessKeyId,
                 accessSecret,
+                instanceId,
               });
             }
             f.setFieldState(field.query('bridgeProductKey'), (state) => {
               state.dataSource = response;
               Store.set('datalist', response);
+              if (field.modified) {
+                state.value = undefined;
+              }
             });
+            if (field.modified) {
+              f.setFieldState(field.query('mappings.*.productKey'), (state) => {
+                state.value = undefined;
+                state.componentProps = {
+                  header: '产品映射',
+                };
+                state.dataSource = response;
+              });
+            }
           });
 
           onFieldChange('mappings.*.productKey', async (field, f) => {
@@ -83,16 +103,6 @@ const Detail = observer(() => {
     [],
   );
 
-  useEffect(() => {
-    if (params.id && params.id !== ':id') {
-      service.detail(params.id).then((resp) => {
-        if (resp.status === 200) {
-          form.setValues(resp.result);
-        }
-      });
-    }
-  }, [params.id]);
-
   const SchemaField = createSchemaField({
     components: {
       FormItem,