소스 검색

字典管理:添加“项目类型”页

任一存 1 년 전
부모
커밋
03570d3db4

+ 3 - 0
src/pages/A2Dict/A2Tab1/A2Tab1Add/index.tsx

@@ -51,6 +51,9 @@ function A2Tab1Add({ info, closeFu, addFu }: Props) {
       status: "状态",
       main: '主体',
       dept: '部门',
+      projectBusiness: '业务类型',
+      projectScope: '项目范围',
+      projectApp: '客户端',
     }
     let txt1 = type2text[info.type];
     let txt2 = info.id === -1 ? "新增" : "编辑";

+ 1 - 1
src/pages/A2Dict/A2Tab1/A2Table1.tsx

@@ -10,7 +10,7 @@ import { MessageFu } from "@/utils/message";
 type Props = {
   editFu: (item: A2Tab1_1) => void;
   upTaleFu: () => void;
-  type: "job" | "status" | "main" | "dept";
+  type: "job" | "status" | "main" | "dept" | "projectBusiness" | "projectScope" | "projectApp";
 };
 
 function A2Table1({ editFu, upTaleFu, type }: Props) {

+ 0 - 1
src/pages/A2Dict/A2Tab1/index.tsx

@@ -84,7 +84,6 @@ function A2Tab1() {
         />
       </div>
 
-      {/* 新增一个table: 业务部门(dept)*/}
       <div className="A2tableBox">
         <div className="A2tableBoxBtn">
           <h3>业务部门</h3>

+ 33 - 0
src/pages/A2Dict/A2Tab3/index.module.scss

@@ -0,0 +1,33 @@
+.A2Tab1 {
+  :global {
+
+    .A2tableBox {
+      border-top: 1px solid var(--themeColor);
+      padding-top: 15px;
+      margin-bottom: 20px;
+
+      .A2tableBoxBtn {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        margin-bottom: 10px;
+        padding: 0 10px;
+
+        &>h3 {
+          font-size: 18px;
+          font-weight: 700;
+        }
+      }
+
+      #A2Table3 {
+        .ant-table-body {
+          overflow-y: auto !important;
+
+
+        }
+      }
+    }
+
+
+  }
+}

+ 91 - 0
src/pages/A2Dict/A2Tab3/index.tsx

@@ -0,0 +1,91 @@
+import React, { useCallback, useEffect, useState } from "react";
+import styles from "./index.module.scss";
+import { useDispatch } from "react-redux";
+import { A2_APIgetList1 } from "@/store/action/A2Dict";
+import A2Table1 from "../A2Tab1/A2Table1";
+import { Button } from "antd";
+import { A2Tab1_1 } from "@/types/api/A2Dict";
+import A2Tab1Add from "../A2Tab1/A2Tab1Add";
+
+function A2Tab3() {
+  const dispatch = useDispatch();
+
+  const getListFu1 = useCallback(() => {
+    dispatch(A2_APIgetList1());
+  }, [dispatch]);
+
+  useEffect(() => {
+    getListFu1();
+  }, [getListFu1]);
+
+  const [addInfo1, setAddInfo1] = useState({} as A2Tab1_1);
+
+  return (
+    <div className={styles.A2Tab1}>
+      <div className="A2tableBox">
+        <div className="A2tableBoxBtn">
+          <h3>业务类型</h3>
+          <Button
+            type="primary"
+            onClick={() => setAddInfo1({ id: -1, type: "projectBusiness" } as A2Tab1_1)}
+          >
+            新增
+          </Button>
+        </div>
+        <A2Table1
+          editFu={(item) => setAddInfo1(item)}
+          upTaleFu={() => getListFu1()}
+          type="projectBusiness"
+        />
+      </div>
+
+      <div className="A2tableBox">
+        <div className="A2tableBoxBtn">
+          <h3>项目范围</h3>
+          <Button
+            type="primary"
+            onClick={() => setAddInfo1({ id: -1, type: "projectScope" } as A2Tab1_1)}
+          >
+            新增
+          </Button>
+        </div>
+        <A2Table1
+          editFu={(item) => setAddInfo1(item)}
+          upTaleFu={() => getListFu1()}
+          type="projectScope"
+        />
+      </div>
+
+      <div className="A2tableBox">
+        <div className="A2tableBoxBtn">
+          <h3>客户端</h3>
+          <Button
+            type="primary"
+            onClick={() => setAddInfo1({ id: -1, type: "projectApp" } as A2Tab1_1)}
+          >
+            新增
+          </Button>
+        </div>
+        <A2Table1
+          editFu={(item) => setAddInfo1(item)}
+          upTaleFu={() => getListFu1()}
+          type="projectApp"
+        />
+      </div>
+
+      {/* 新增功能弹窗 */}
+      {addInfo1.id ? (
+        <A2Tab1Add
+          info={addInfo1}
+          closeFu={() => setAddInfo1({} as A2Tab1_1)}
+          addFu={() => getListFu1()}
+        />
+      ) : null}
+
+    </div>
+  );
+}
+
+const MemoA2Tab3 = React.memo(A2Tab3);
+
+export default MemoA2Tab3;

+ 8 - 1
src/pages/A2Dict/index.module.scss

@@ -2,7 +2,14 @@
   padding: 20px 15px;
   background-color: #fff;
   border-radius: 10px;
-
+  >.A2Top {
+    >.tabBtn {
+      margin-right: 10px;
+      &:last-child{
+        margin-right: 0;
+      }
+    }
+  }
   :global {
     .A2Main {
       width: 100%;

+ 6 - 3
src/pages/A2Dict/index.tsx

@@ -3,9 +3,11 @@ import styles from "./index.module.scss";
 import { Button } from "antd";
 import A2Tab1 from "./A2Tab1";
 import A2Tab2 from "./A2Tab2";
+import A2Tab3 from "./A2Tab3";
 
 const topBtnArr = [
   { id: 1, name: "项目属性" },
+  { id: 3, name: "项目类型" },
   { id: 2, name: "内控文件属性" },
 ];
 
@@ -15,9 +17,10 @@ function A2Dict() {
   return (
     <div className={styles.A2Dict}>
       <div className="pageTitle">字典管理</div>
-      <div className="A2Top">
+      <div className={styles.A2Top}>
         {topBtnArr.map((v) => (
           <Button
+            className={styles.tabBtn}
             onClick={() => setAcId(v.id)}
             key={v.id}
             type={v.id === acId ? "primary" : "default"}
@@ -25,14 +28,14 @@ function A2Dict() {
             {v.name}
           </Button>
         ))}
-        {acId === 1 ? (
+        {acId === 1 || acId === 3 ? (
           <>
             &emsp;&emsp;注:删除字典名称时,与该字典名称关联的数据都将关联到“其它”
           </>
         ) : null}
       </div>
 
-      <div className="A2Main">{acId === 1 ? <A2Tab1 /> : <A2Tab2 />}</div>
+      <div className="A2Main">{acId === 1 ? <A2Tab1 /> : acId === 2 ? <A2Tab2 /> : <A2Tab3 />}</div>
     </div>
   );
 }

+ 10 - 1
src/store/action/A2Dict.ts

@@ -3,7 +3,7 @@ import { AppDispatch } from "..";
 import { A2Tab1Type, A2Tab1_1 } from "@/types/api/A2Dict";
 import { A5TableType } from "@/types";
 /**
- * 获取项目属性 职能,状态,签订主体,业务部门
+ * 获取项目属性:职能,状态,签订主体,业务部门,业务类型,项目范围,客户端
  */
 export const A2_APIgetList1 = () => {
   return async (dispatch: AppDispatch) => {
@@ -16,12 +16,18 @@ export const A2_APIgetList1 = () => {
       const arr2: A2Tab1_1[] = [];
       const arrMain: A2Tab1_1[] = []; // 签订主体
       const arrDept: A2Tab1_1[] = []; // 业务部门
+      const arrProjectBusiness: A2Tab1_1[] = []; // 业务类型
+      const arrProjectScope: A2Tab1_1[] = []; // 项目范围
+      const arrProjectApp: A2Tab1_1[] = []; // 客户端
 
       arrTemp.forEach((v) => {
         if (v.type === "job") arr1.push(v);
         else if (v.type === "status") arr2.push(v);
         else if (v.type === "main") arrMain.push(v);
         else if (v.type === "dept") arrDept.push(v);
+        else if (v.type === "projectBusiness") arrProjectBusiness.push(v);
+        else if (v.type === "projectScope") arrProjectScope.push(v);
+        else if (v.type === "projectApp") arrProjectApp.push(v);
       });
 
       const obj: A2Tab1Type = {
@@ -29,6 +35,9 @@ export const A2_APIgetList1 = () => {
         status: arr2,
         main: arrMain,
         dept: arrDept,
+        projectBusiness: arrProjectBusiness,
+        projectScope: arrProjectScope,
+        projectApp: arrProjectApp,
       };
       dispatch({ type: "A2/getInfo1_1", payload: obj });
     }

+ 3 - 0
src/store/reducer/A2Dict.ts

@@ -9,6 +9,9 @@ const initState = {
     job: [],
     main: [],
     dept: [],
+    projectBusiness: [],
+    projectScope: [],
+    projectApp: [],
   } as A2Tab1Type,
 
   // 阶段

+ 4 - 1
src/types/api/A2Dict.d.ts

@@ -8,7 +8,7 @@ export type A2Tab1_1 = {
   name: string;
   parentId: number;
   sort: number;
-  type: "status" | "job" | "main" | "dept";
+  type: "status" | "job" | "main" | "dept" | "projectBusiness" | "projectScope" | "projectApp";
   updateTime: string;
 };
 
@@ -17,6 +17,9 @@ export type A2Tab1Type = {
   job: A2Tab1_1[];
   main: A2Tab1_1[];
   dept: A2Tab1_1[];
+  projectBusiness: A2Tab1_1[];
+  projectScope: A2Tab1_1[];
+  projectApp: A2Tab1_1[];
 };
 
 export type A2Tab2Type = {