Browse Source

fix: 调整引入接口

liaojiaxing 3 weeks ago
parent
commit
3dd0067af7

+ 8 - 8
apps/er-designer/.umirc.ts

@@ -15,14 +15,14 @@ export default defineConfig({
   metas: [
     { name: 'viewport', content: 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' }
   ],
-  // proxy: {
-  //   '/api': {
-  //     'target': 'http://ab.dev.jbpm.shalu.com/',
-  //     // 'target': 'https://edesign.shalu.com/',
-  //     'changeOrigin': true,
-  //     'pathRewrite': { '^/api' : '' },
-  //   },
-  // },
+  proxy: {
+    '/api': {
+      'target': 'http://ab.dev.jbpm.shalu.com/',
+      // 'target': 'https://edesign.shalu.com/',
+      'changeOrigin': true,
+      'pathRewrite': { '^/api' : '' },
+    },
+  },
   scripts: [
     '//at.alicdn.com/t/c/font_4767192_5rinbe5e4f6.js'
   ],

+ 1 - 1
apps/er-designer/src/app.ts

@@ -24,7 +24,7 @@ export const request: RequestConfig = {
       }
 
       return {
-        url: 'http://ab.dev.jbpm.shalu.com' + url,
+        url: baseUrl + url,
         options
       }
     }

+ 42 - 37
apps/er-designer/src/components/AddModel.tsx

@@ -94,22 +94,9 @@ export default React.forwardRef(function AddModel(
   const handleSubmit = () => {
     form.validateFields().then(async (values) => {
       if (editInfo.current) {
-        const businessTables =
-          data?.result
-            ?.filter((item: any) => values.table.includes(item.id))
-            ?.map((item: any) => {
-              return pick(item, [
-                "aliasName",
-                "schemaName",
-                "id",
-                "parentBusinessTableId",
-              ]);
-            }) || [];
         const params = {
           ...editInfo.current,
           ...values,
-          businessTables,
-          color
         };
         // 编辑
         await SaveDataModel(params);
@@ -118,11 +105,25 @@ export default React.forwardRef(function AddModel(
         setOpen(false);
       } else {
         // 新增
+        const businessTables =
+          data?.result
+            ?.filter((item: any) => values.table.includes(item.id))
+            ?.map((item: any) => {
+              return pick(item, [
+                "aliasName",
+                "schemaName",
+                "id",
+                "parentBusinessTableId",
+              ]);
+            }) || [];
         const res = await SaveDataModel({
           ...values,
           directory: folderRef.current,
           type: type.current,
           setting: JSON.stringify(DEFAULT_SETTING),
+          table: undefined,
+          businessTables,
+          color,
         });
         message.success("创建成功");
         props.onChange?.(res?.result);
@@ -155,30 +156,34 @@ export default React.forwardRef(function AddModel(
         <Form.Item name="description" label="模型描述">
           <Input.TextArea placeholder="请输入模型描述" />
         </Form.Item>
-        <Form.Item label="选择表" name="table">
-          <TreeSelect
-            multiple
-            treeCheckable
-            allowClear
-            placeholder="请选择"
-            loading={loadingOptions}
-            treeData={treeData}
-          />
-        </Form.Item>
-        <Form.Item label="颜色" name="color">
-          <CustomColorPicker onChange={setColor}>
-            {color ? (
-              <div
-                className="rounded-4px cus-btn w-32px h-32px bg-#eee flex-none cursor-pointer shadow-inner"
-                style={{ background: color || "#eee" }}
-              ></div>
-            ) : (
-              <span className="bg-#eee px-5px py-3px rounded-4px cursor-pointer text-12px text-#666">
-                随机生成,点击可选择颜色
-              </span>
-            )}
-          </CustomColorPicker>
-        </Form.Item>
+        {!editInfo.current && (
+          <>
+            <Form.Item label="选择表" name="table">
+              <TreeSelect
+                multiple
+                treeCheckable
+                allowClear
+                placeholder="请选择"
+                loading={loadingOptions}
+                treeData={treeData}
+              />
+            </Form.Item>
+            <Form.Item label="颜色" name="color">
+              <CustomColorPicker onChange={setColor}>
+                {color ? (
+                  <div
+                    className="rounded-4px cus-btn w-32px h-32px bg-#eee flex-none cursor-pointer shadow-inner"
+                    style={{ background: color || "#eee" }}
+                  ></div>
+                ) : (
+                  <span className="bg-#eee px-5px py-3px rounded-4px cursor-pointer text-12px text-#666">
+                    随机生成,点击可选择颜色
+                  </span>
+                )}
+              </CustomColorPicker>
+            </Form.Item>
+          </>
+        )}
       </Form>
     </Modal>
   );

+ 11 - 133
apps/er-designer/src/components/AddTable.tsx

@@ -265,70 +265,6 @@ export default forwardRef(function AddTable(
       });
   };
 
-  // 获取引入的表转换成模型表
-  // const getNewTableByTable = async (
-  //   tableData: any,
-  //   columns: any[],
-  //   tableOther: Record<string, any> = {}
-  // ): Promise<TableItemType> => {
-  //   const newTable = createTable(project.type, project.id);
-  //   const langKeyList: string[] = [];
-  //   if (tableData.langName) {
-  //     langKeyList.push(tableData.langName);
-  //   }
-  //   if (tableData.langDescription) {
-  //     langKeyList.push(tableData.langDescription);
-  //   }
-  //   columns.forEach((item) => {
-  //     if (item.langName) {
-  //       langKeyList.push(item.langName);
-  //     }
-  //   });
-
-  //   // 获取全部多语言数据
-  //   const langList = await Promise.all(
-  //     [...new Set(langKeyList)].map((key) =>
-  //       ListLangByKey({ key }).then((res) => res.result)
-  //     )
-  //   );
-
-  //   const langName = langList.find((item) => item.key === tableData.langName);
-  //   const descName = langList.find(
-  //     (item) => item.key === tableData.langDescription
-  //   );
-  //   return {
-  //     isTable: true,
-  //     // 表格数据
-  //     table: {
-  //       ...newTable.table,
-  //       ...pick(tableData, ["schemaName", "aliasName", "isDeleted"]),
-  //       langNameList: [
-  //         { name: "zh-CN", value: langName?.["zh-CN"] || "" },
-  //         { name: "en", value: langName?.["en"] || "" },
-  //       ],
-  //       langDescriptionList: [
-  //         { name: "zh-CN", value: descName?.["zh-CN"] || "" },
-  //         { name: "en", value: descName?.["en"] || "" },
-  //       ],
-  //       ...tableOther,
-  //     },
-  //     // 字段数据
-  //     tableColumnList: columns.map((item) => {
-  //       const column = createColumn(newTable.table.id);
-  //       const langName = langList.find((lang) => lang.key === item.langName);
-
-  //       return {
-  //         ...column,
-  //         ...pick(item, Object.keys(column)),
-  //         langNameList: [
-  //           { name: "zh-CN", value: langName?.["zh-CN"] || "" },
-  //           { name: "en", value: langName?.["en"] || "" },
-  //         ],
-  //       };
-  //     }),
-  //   };
-  // };
-
   const [loadingColumns, setLoadingColumns] = useState(false);
   const handleOk = () => {
     // 新建
@@ -353,77 +289,12 @@ export default forwardRef(function AddTable(
         const values = form1.getFieldsValue();
         try {
           setLoadingColumns(true);
-          // const requestList = values.table.map((tableId: string) => [
-          //   GetBusinessTablesByTableId(tableId),
-          //   GetAllBusinessTableColumns({
-          //     currentPage: 1,
-          //     pageSize: 2000,
-          //     orderByProperty: "isPreDefined DESC, DisplayOrder",
-          //     Ascending: true,
-          //     totalPage: 1,
-          //     totalCount: 1,
-          //     filters: [
-          //       {
-          //         name: "BusinessTableId",
-          //         value: tableId,
-          //       },
-          //     ],
-          //   }),
-          // ]);
+
           if (values.table.length === 0) {
             message.error("请选择要引入的表");
             return;
           }
-          // const resArr = await Promise.allSettled(
-          //   (requestList as Promise<any>[]).flat(1)
-          // );
-
-          // const tableMap: Record<string, any> = {};
-          // resArr.forEach((res) => {
-          //   if (res.status === "fulfilled") {
-          //     const value = res.value?.result;
-          //     // 表格数据
-          //     if (Array.isArray(value) && value[0]) {
-          //       tableMap[value[0].id] = {
-          //         table: value[0],
-          //         tableColumnList: [],
-          //       };
-          //     } else {
-          //       // 字段数据
-          //       const model = res.value?.result?.model;
-          //       const tableId = model?.[0]?.businessTableId;
-          //       if (tableId) {
-          //         if (tableMap[tableId]) {
-          //           tableMap[tableId].tableColumnList = model;
-          //         } else {
-          //           tableMap[tableId] = {
-          //             table: {},
-          //             tableColumnList: model,
-          //           };
-          //         }
-          //       }
-          //     }
-          //   }
-          // });
-
-          // const rect = graph?.getAllCellsBBox();
-          // // 计算起始位置 默认往最后加
-          // const startY = (rect?.height || 0) + (rect?.y || 0) + 20;
-          // const result = Object.keys(tableMap).map(async (key, index) => {
-          //   const table = await getNewTableByTable(
-          //     tableMap[key].table,
-          //     tableMap[key].tableColumnList
-          //   );
-          //   table.table.style.y = startY;
-          //   table.table.style.x =
-          //     100 + index * (project.setting.tableWidth + 20);
-          //   if (color) {
-          //     table.table.style.color = color;
-          //   }
-          //   return table;
-          // });
 
-          // const newTables = await Promise.all(result);
           const businessTables =
             data?.result
               ?.filter((item: any) => values.table.includes(item.id))
@@ -441,9 +312,16 @@ export default forwardRef(function AddTable(
             businessTables,
           });
           console.log("导入结果:", res);
-          // props.onChange(res.result);
-          // form1.resetFields();
-          // setOpen(false);
+          const rect = graph?.getAllCellsBBox();
+          // 计算起始位置 默认往最后加
+          const startY = (rect?.height || 0) + (rect?.y || 0) + 20;
+          props.onChange(res.result?.map((item: any) => {
+            item.table.style = JSON.parse(item.table.style || '{}');
+            item.table.style.y = startY;
+            return item
+          }));
+          form1.resetFields();
+          setOpen(false);
         } catch (err) {
           console.error(err);
           message.warning("引入失败");

+ 3 - 3
apps/er-designer/src/components/TableEdit.tsx

@@ -45,9 +45,9 @@ export default function TableEdit(props: {
     props.onChange?.(dataSource);
   }, [dataSource]);
 
-  useEffect(() => {
-    setDataSource(props.data);
-  }, [props.data]);
+  // useEffect(() => {
+  //   setDataSource(props.data);
+  // }, [props.data]);
   const DefaultValueComp = ({
     value,
     onChange,

+ 20 - 7
apps/er-designer/src/pages/detail/index.tsx

@@ -82,6 +82,19 @@ export default function index() {
     graph?.disableKeyboard();
   }, [project, graph]);
 
+  useEffect(() => {
+    // 监听浏览器tab切换 刷新数据
+    const handleVisibilityChange = () => {
+      if (document.visibilityState === "visible") {
+        refresh();
+      }
+    };
+    document.addEventListener("visibilitychange", handleVisibilityChange);
+    return () => {
+      document.removeEventListener("visibilitychange", handleVisibilityChange);
+    };
+  });
+
   const params = useParams();
 
   const { run, loading, refresh } = useRequest(GetDataModelDetail, {
@@ -127,11 +140,11 @@ export default function index() {
         label: "创建时间",
         children: project?.createTime || "-",
       },
-      {
-        key: "5",
-        label: "发布状态",
-        children: project?.publishStatus || "-",
-      },
+      // {
+      //   key: "5",
+      //   label: "发布状态",
+      //   children: project?.publishStatus || "-",
+      // },
       {
         key: "4-1",
         label: "更新用户",
@@ -144,8 +157,8 @@ export default function index() {
       },
       {
         key: "6",
-        label: "表",
-        children: `${project.tables.length}`,
+        label: "表",
+        children: `${project.tables.length}`,
       },
       {
         key: "7",

+ 19 - 3
apps/er-designer/src/pages/er/index.tsx

@@ -32,11 +32,14 @@ const App: React.FC = () => {
     }
   );
   // 更新画布key 用于刷新画布
-  const [updateKey, setUpdateKey] = useSessionStorageState('update-key', { listenStorageChange: true, defaultValue: 0 });
+  const [updateKey, setUpdateKey] = useSessionStorageState("update-key", {
+    listenStorageChange: true,
+    defaultValue: 0,
+  });
   const [show, setShow] = useSessionStorageState("show-navigator");
   const params = useParams();
 
-  const { run, loading } = useRequest(GetDataModelDetail, {
+  const { run, loading, refresh } = useRequest(GetDataModelDetail, {
     manual: true,
     onSuccess: (res) => {
       console.log("模型详情:", res);
@@ -67,6 +70,19 @@ const App: React.FC = () => {
     }
   }, [updateKey]);
 
+  useEffect(() => {
+    // 监听浏览器tab切换 刷新数据
+    const handleVisibilityChange = () => {
+      if (document.visibilityState === "visible") {
+        refresh();
+      }
+    };
+    document.addEventListener("visibilitychange", handleVisibilityChange);
+    return () => {
+      document.removeEventListener("visibilitychange", handleVisibilityChange);
+    };
+  });
+
   const tabItems: TabsProps["items"] = [
     {
       key: "1",
@@ -107,7 +123,7 @@ const App: React.FC = () => {
       function (event) {
         if (
           (event.ctrlKey === true || event.metaKey === true) &&
-          (event.key.toLowerCase()  === 's')
+          event.key.toLowerCase() === "s"
         ) {
           event.preventDefault();
         }