chenlei 4 months ago
parent
commit
9675a2112f

+ 1 - 1
package.json

@@ -84,7 +84,7 @@
     "workbox-webpack-plugin": "^6.4.1"
   },
   "scripts": {
-    "start": "cross-env REACT_APP_API_URL=http://192.168.20.61:8090 REACT_APP_IMG_PUBLIC=/api node scripts/start.js",
+    "start": "cross-env REACT_APP_API_URL=https://sit-shoubodyh.4dage.com REACT_APP_IMG_PUBLIC=/api node scripts/start.js",
     "build": "cross-env PUBLIC_URL=./ REACT_APP_API_URL=https://sit-shoubodyh.4dage.com REACT_APP_IMG_PUBLIC= node scripts/build.js",
     "build:prod": "cross-env PUBLIC_URL=./ REACT_APP_API_URL=http://192.124.82.43:8091 REACT_APP_IMG_PUBLIC= node scripts/build.js"
   },

+ 5 - 0
src/api/assessment.ts

@@ -57,6 +57,11 @@ export const deleteAssInspectionApi = (ids: string | number) => {
   return requestByGet(`/api/cms/norm/gist/removes/${ids}`);
 };
 
+// 检查打分点是否存在次级
+export const checkAssIsPointApi = (id: string | number) => {
+  return requestByGet(`/api/cms/norm/checkPoint/${id}`);
+};
+
 /**
  * ====================
  * 考核模板 API

+ 4 - 0
src/api/management.ts

@@ -162,6 +162,10 @@ export const saveManageRoleGroupApi = (params: {
   return requestByPost<IManageRoleGroupItem>("/api/cms/group/save", params);
 };
 
+export const deleteManageRoleGroupApi = (ids: string | number) => {
+  return requestByGet(`/api/cms/group/removes/${ids}`);
+};
+
 export const saveManageAssOperationWeightApi = (
   id: number | string,
   weight: number | string

+ 1 - 0
src/components/AddIndexTemplateModal/index.tsx

@@ -101,6 +101,7 @@ export const AddIndexTemplateModal: FC<AddIndexTemplateModalProps> = ({
           {
             title: "说明",
             dataIndex: "remark",
+            ellipsis: true,
           },
         ]}
       />

+ 3 - 2
src/components/FileTemplateModal/constants.ts

@@ -17,11 +17,12 @@ export const FILE_TYPE_ENUM = [
   ".rmvb",
   ".4dage",
   ".wav",
-  ".ma",
+  ".wma",
+  ".m4a",
   ".obj",
   ".pdf",
   ".audio",
-  ".pt",
+  ".ppt",
   ".ptx",
   ".xls",
   ".xlsx",

+ 13 - 1
src/pages/Assessment/Index/CreateOrEdit/index.tsx

@@ -21,6 +21,7 @@ import {
   YES_OR_NO,
 } from "@/types";
 import {
+  checkAssIsPointApi,
   getAssIndexDetailApi,
   getAssIndexTreeApi,
   saveAssIndexApi,
@@ -62,7 +63,7 @@ const CreateOrEditIndex: FC = () => {
   const inspectionRef = useRef<InspectionEditableMethods | null>(null);
   const [loading, setLoading] = useState(false);
   const [values, setValues] = useState<any>({
-    isPoint: YES_OR_NO.YES,
+    isPoint: YES_OR_NO.NO,
     isWarn: YES_OR_NO.YES,
   });
   const [treeData, setTreeData] = useState<AssIndexTreeItemType[]>([]);
@@ -71,6 +72,7 @@ const CreateOrEditIndex: FC = () => {
     [location]
   );
   const [detail, setDetail] = useState<null | IAssIndexDetail>(null);
+  const [disablePointBtn, setDisablePointBtn] = useState(false);
   const isFixed = params.type === ASS_INDEX_TYPE.FIXED;
   const parentId = Form.useWatch("parentId", form);
   /** 考察要点 */
@@ -163,6 +165,9 @@ const CreateOrEditIndex: FC = () => {
       if (temp.level < 2) {
         temp.children = filterTreeData(children);
       }
+      if (temp.isPoint === YES_OR_NO.YES) {
+        temp.disabled = true;
+      }
 
       return temp;
     });
@@ -177,6 +182,7 @@ const CreateOrEditIndex: FC = () => {
     try {
       setLoading(true);
       const data = await getAssIndexDetailApi(Number(params.id));
+      const hasChildren = await checkAssIsPointApi(params.id!);
       const pointData =
         data.isPoint === YES_OR_NO.YES && data.jsonPoint
           ? JSON.parse(data.jsonPoint)
@@ -186,6 +192,7 @@ const CreateOrEditIndex: FC = () => {
           ? JSON.parse(data.jsonWarn)
           : null;
       setDetail(data);
+      hasChildren && setDisablePointBtn(true);
       form.setFieldsValue({
         parentId: data.parentId,
         name: data.name,
@@ -339,6 +346,7 @@ const CreateOrEditIndex: FC = () => {
               initialValue={values.isPoint}
             >
               <Radio.Group
+                disabled={disablePointBtn}
                 options={CONFIRM_OPTIONS}
                 optionType="button"
                 buttonStyle="solid"
@@ -357,6 +365,8 @@ const CreateOrEditIndex: FC = () => {
                     >
                       <InputNumber
                         precision={0}
+                        min={0}
+                        maxLength={4}
                         placeholder="请输入正整数"
                         className="w160"
                       />
@@ -437,6 +447,7 @@ const CreateOrEditIndex: FC = () => {
                       >
                         <InputNumber
                           precision={0}
+                          min={0}
                           placeholder="请输入正整数"
                           className="w100"
                         />
@@ -468,6 +479,7 @@ const CreateOrEditIndex: FC = () => {
                       <Form.Item noStyle name={["warnData", "num2"]}>
                         <InputNumber
                           precision={0}
+                          min={0}
                           placeholder="请输入正整数"
                           className="w100"
                         />

+ 4 - 1
src/pages/Assessment/Index/components/Sidebar/index.tsx

@@ -40,6 +40,8 @@ export const Sidebar: FC<SidebarProps> = ({
     return data.map((item) => {
       // @ts-ignore
       item.hideAddBtn = item.isPoint === YES_OR_NO.YES;
+      // @ts-ignore
+      item.hideDeleteBtn = Boolean(item.children.length);
 
       if (item.children && item.children.length > 0) {
         item.children = transformTreeData(item.children);
@@ -86,6 +88,7 @@ export const Sidebar: FC<SidebarProps> = ({
   };
 
   useEffect(() => {
+    setTreeData([]);
     getAssIndexTree();
   }, [type]);
 
@@ -105,7 +108,7 @@ export const Sidebar: FC<SidebarProps> = ({
         )}
       </div>
 
-      {currentId && (
+      {currentId && treeData.length && (
         <DageTreeActions
           defaultExpandAll
           maxLevel={isFixed ? 5 : 2}

+ 2 - 0
src/pages/Management/Index/CreateOrEdit/index.tsx

@@ -178,6 +178,7 @@ const CreateOrEditManagementIndex: FC = () => {
                     <InputNumber
                       variant="borderless"
                       size="small"
+                      min={1}
                       precision={0}
                       placeholder="请填入正整数"
                       className="w100"
@@ -258,6 +259,7 @@ const CreateOrEditManagementIndex: FC = () => {
                       variant="borderless"
                       size="small"
                       precision={0}
+                      min={1}
                       placeholder="请填入正整数"
                       className="w100"
                     />

+ 13 - 9
src/pages/Management/Index/SettingRole/components/Pane/index.tsx

@@ -9,6 +9,7 @@ export interface PaneProps {
   title: string;
   tips?: string;
   required?: boolean;
+  hideAddBtn?: boolean;
   onAdd?: () => void;
 }
 
@@ -17,6 +18,7 @@ export const Pane: FC<PropsWithChildren<PaneProps>> = ({
   tips,
   style,
   required,
+  hideAddBtn,
   children,
   onAdd,
 }) => {
@@ -36,15 +38,17 @@ export const Pane: FC<PropsWithChildren<PaneProps>> = ({
           {tips && <span>{tips}</span>}
         </p>
 
-        <Button
-          type="primary"
-          icon={<PlusOutlined />}
-          className="second-button"
-          size="large"
-          onClick={onAdd}
-        >
-          新增
-        </Button>
+        {!hideAddBtn && (
+          <Button
+            type="primary"
+            icon={<PlusOutlined />}
+            className="second-button"
+            size="large"
+            onClick={onAdd}
+          >
+            新增
+          </Button>
+        )}
       </div>
 
       <div className={_style.paneMain}>{children}</div>

+ 20 - 1
src/pages/Management/Index/SettingRole/index.tsx

@@ -11,6 +11,7 @@ import { Button, Table, Tag } from "antd";
 import { DageTableActions } from "@dage/pc-components";
 import {
   deleteManageRoleDeptApi,
+  deleteManageRoleGroupApi,
   getManageRoleDeptListApi,
   getManageRoleGroupListApi,
 } from "@/api";
@@ -36,6 +37,9 @@ const SettingRole: FC = () => {
   const [groupLoading, setGroupLoading] = useState(false);
   const [groupList, setGroupList] = useState<IManageRoleGroupItem[]>([]);
   const [checkedItem, setCheckedItem] = useState<null | IManageDeptItem>(null);
+  const [checkedGroup, setCheckedGroup] = useState<null | IManageRoleGroupItem>(
+    null
+  );
 
   // 获取责任部门列表
   const getDeptList = async () => {
@@ -80,6 +84,11 @@ const SettingRole: FC = () => {
     setAllocationOfIndexVisible(true);
   };
 
+  const handleDeleteGroup = async (id: number) => {
+    await deleteManageRoleGroupApi(id);
+    getGroupList();
+  };
+
   useEffect(() => {
     getDeptList();
     getGroupList();
@@ -164,6 +173,7 @@ const SettingRole: FC = () => {
       <Pane
         title="评定组"
         required
+        hideAddBtn={Boolean(groupList.length)}
         tips="负责评定责任部门填报结果的人员"
         style={{ marginTop: 40 }}
         onAdd={() => setAddGroupVisible(true)}
@@ -192,7 +202,15 @@ const SettingRole: FC = () => {
               title: "操作",
               align: "center",
               render: (item) => {
-                return <DageTableActions />;
+                return (
+                  <DageTableActions
+                    onEdit={() => {
+                      setCheckedGroup(item);
+                      setAddGroupVisible(true);
+                    }}
+                    onDelete={handleDeleteGroup.bind(undefined, item.id)}
+                  />
+                );
               },
             },
           ]}
@@ -213,6 +231,7 @@ const SettingRole: FC = () => {
 
       {/* 设置评定组 */}
       <AddGroupModal
+        checkedItem={checkedGroup}
         assessId={params.id as string}
         open={addGroupVisible}
         onOk={getGroupList}

+ 18 - 13
src/pages/Management/Index/components/AddGroupModal/index.tsx

@@ -1,11 +1,15 @@
 import { FC, useEffect, useState } from "react";
 import { Form, Modal, ModalProps, Select } from "antd";
 import { getManageUserListApi, saveManageRoleGroupApi } from "@/api";
-import { IManageDeptItem, IManageUserItem } from "@/types";
+import {
+  IManageDeptItem,
+  IManageRoleGroupItem,
+  IManageUserItem,
+} from "@/types";
 
 export interface AddGroupModalProps extends Omit<ModalProps, "onOk"> {
   assessId: number | string;
-  item?: null | IManageDeptItem;
+  checkedItem?: IManageRoleGroupItem | null;
   onCancel?: () => void;
   onOk?: () => void;
 }
@@ -13,7 +17,7 @@ export interface AddGroupModalProps extends Omit<ModalProps, "onOk"> {
 export const AddGroupModal: FC<AddGroupModalProps> = ({
   assessId,
   open,
-  item,
+  checkedItem,
   onOk,
   onCancel,
   ...rest
@@ -59,20 +63,21 @@ export const AddGroupModal: FC<AddGroupModalProps> = ({
   useEffect(() => {
     if (open) {
       !userList.length && getUserList();
-
-      if (item) {
-        const crewUserIds = item.crewUserIds.split(",").map((i) => Number(i));
-        form.setFieldsValue({
-          ...item,
-          crewUserIds,
-        });
-      }
     }
-  }, [open, item, userList]);
+  }, [open, userList]);
+
+  useEffect(() => {
+    if (!checkedItem) return;
+
+    form.setFieldValue(
+      "crewUserIds",
+      checkedItem.userIds.split(",").map((i) => Number(i))
+    );
+  }, [checkedItem]);
 
   return (
     <Modal
-      title={item ? "编辑评定组" : "新增评定组"}
+      title={checkedItem ? "编辑评定组" : "新增评定组"}
       okText="提交"
       cancelText="取消"
       maskClosable={false}