浏览代码

Merge branch 'develop' of http://120.55.44.4:10080/xujunjie/BomWeb into develop

xujunjie 1 年之前
父节点
当前提交
bc9439078e

+ 3 - 71
src/components/DDComponents/DepartmentField/index.js

@@ -6,77 +6,9 @@ import { connect } from 'dva';
 
 
 function DepartmentField(props) {
 function DepartmentField(props) {
   const { value = [], onChange, defaultValue, depTrees } = props;
   const { value = [], onChange, defaultValue, depTrees } = props;
-  // const [treeData, setTreeData] = useState([]);
 
 
-  // const genTreeNode = dep => {
-  //   return {
-  //     id: dep.dept_id,
-  //     pId: dep.parent_id,
-  //     value: dep.dept_id,
-  //     title: dep.name,
-  //     isLeaf: false,
-  //   };
-  // };
-
-  // const onLoadData = async ({ id }) => {
-  //   let depList = await queryDDdepList({ dept_id: id });
-
-  //   console.log(depList);
-  //   if (depList.length > 0) {
-  //     let nodes = depList.map(genTreeNode);
-  //     setTreeData([...treeData, ...nodes]);
-  //   }
-  // };
-
-  const findDepName = (list, ID) => {
-    let result = '';
-    const dep = list.find(item => item.ID === ID);
-    if (dep) {
-      result = dep.Name;
-      return result;
-    }
-    for (let index = 0; index < list.length; index++) {
-      const element = list[index];
-      if (element?.children && element?.children.length) {
-        result = findDepName(element.children, ID);
-        if (result) {
-          break;
-        }
-      }
-    }
-    return result;
-  };
-
-  const findDepID = (list, Name) => {
-    let result = '';
-    const dep = list.find(item => item.Name === Name);
-    if (dep) {
-      result = dep.ID;
-    } else {
-      for (let index = 0; index < list.length; index++) {
-        const element = list[index];
-        if (element?.children && element?.children.length) {
-          result = findDepID(element.children, Name);
-          if (result) {
-            break;
-          }
-        }
-      }
-    }
-    return result;
-  };
-
-  const defaultID = useMemo(() => {
-    if (defaultValue !== undefined) {
-      return findDepID(depTrees, defaultValue[0]);
-    } else {
-      return null;
-    }
-  }, [defaultValue]);
-
-  const onChangeValue = (newValue, label) => {
-    // const depName = findDepName(depTrees, newValue);
-    onChange(label);
+  const onChangeValue = newValue => {
+    onChange(String(newValue));
   };
   };
 
 
   return (
   return (
@@ -84,7 +16,7 @@ function DepartmentField(props) {
       showSearch
       showSearch
       // // multiple
       // // multiple
       allowClear
       allowClear
-      defaultValue={defaultID}
+      defaultValue={defaultValue ? Number(defaultValue) : null}
       dropdownStyle={{
       dropdownStyle={{
         maxHeight: 400,
         maxHeight: 400,
         overflow: 'auto',
         overflow: 'auto',

+ 22 - 0
src/components/Flow/components/judgeComponent/index.tsx

@@ -108,6 +108,8 @@ const RenderJudge = (props: any) => {
 
 
   const RenderComp = (item: FormItem) => {
   const RenderComp = (item: FormItem) => {
     let component;
     let component;
+    console.log(item);
+
     switch (item.componentName) {
     switch (item.componentName) {
       case ComponentName.Inner:
       case ComponentName.Inner:
         component = (
         component = (
@@ -133,6 +135,26 @@ const RenderJudge = (props: any) => {
         );
         );
         break;
         break;
       case ComponentName.Depart:
       case ComponentName.Depart:
+        component = (
+          <>
+            <div style={{ display: 'flex', justifyContent: 'space-between' }}>
+              <div>{item.props.label}</div>
+              <DeleteOutlined onClick={() => handleDelete(item)} />
+            </div>
+            <TreeSelect
+              showSearch
+              multiple
+              allowClear
+              defaultValue={item.judge?.values?.map(item => item.origin)}
+              style={{ width: '100%' }}
+              placeholder="请选择部门"
+              treeData={depUserTree}
+              onChange={values => {
+                handleTreeChange(values, item);
+              }}
+            />
+          </>
+        );
         break;
         break;
       case ComponentName.Money:
       case ComponentName.Money:
       case ComponentName.Number:
       case ComponentName.Number:

+ 1 - 1
src/components/Flow/components/judgeModal/index.tsx

@@ -18,7 +18,7 @@ const AddCondition = (props: any) => {
     .filter((item: FormItem) => {
     .filter((item: FormItem) => {
       return (
       return (
         (item.componentName == ComponentName.Inner ||
         (item.componentName == ComponentName.Inner ||
-          // item.componentName == 'DepartmentField' ||
+          item.componentName == ComponentName.Depart ||
           item.componentName == ComponentName.Select ||
           item.componentName == ComponentName.Select ||
           item.componentName == ComponentName.MultiSelect ||
           item.componentName == ComponentName.MultiSelect ||
           item.componentName == ComponentName.Number ||
           item.componentName == ComponentName.Number ||

+ 8 - 0
src/components/Flow/node/judgeNode/index.tsx

@@ -45,6 +45,14 @@ const JudgeRect = props => {
               .filter(item => item);
               .filter(item => item);
             text.push('发起人属于:' + list.join('或'));
             text.push('发起人属于:' + list.join('或'));
             break;
             break;
+          case ComponentName.Depart:
+            const DeoPlist = judge?.values
+              .map(item => {
+                return getName(item.value, depUserTree);
+              })
+              .filter(item => item);
+            text.push(`${label}:` + DeoPlist.join('或'));
+            break;
           case ComponentName.Number:
           case ComponentName.Number:
             const type: Number = judge.values[0];
             const type: Number = judge.values[0];
             const condition = judge.condition;
             const condition = judge.condition;

+ 0 - 1
src/components/Flow/node/registerNode.tsx

@@ -2,7 +2,6 @@ import React from 'react';
 import Rect, { RectServe } from './rect';
 import Rect, { RectServe } from './rect';
 import Circle, { CircleServe } from './circle';
 import Circle, { CircleServe } from './circle';
 import AuditNode, { AuditServe } from './auditNode';
 import AuditNode, { AuditServe } from './auditNode';
-
 import judgeNode, { judgeServe } from './judgeNode';
 import judgeNode, { judgeServe } from './judgeNode';
 
 
 export const registerNode = [
 export const registerNode = [

+ 44 - 9
src/pages/Detail/FormAndFilesNode.js

@@ -12,7 +12,7 @@ const { confirm } = Modal;
 const { Panel } = Collapse;
 const { Panel } = Collapse;
 
 
 const FormAndFilesNode = props => {
 const FormAndFilesNode = props => {
-  const { formData, excelFileList, comment, version, loading } = props;
+  const { formData, excelFileList, comment, depTrees, version, loading } = props;
 
 
   const [projectList, setProjectList] = useState([]);
   const [projectList, setProjectList] = useState([]);
 
 
@@ -30,7 +30,7 @@ const FormAndFilesNode = props => {
   }, []);
   }, []);
 
 
   const FormContent = useMemo(() => {
   const FormContent = useMemo(() => {
-    return renderFrom(formData, projectList);
+    return renderFrom(formData, projectList, depTrees);
   }, [formData]);
   }, [formData]);
 
 
   if (formData) {
   if (formData) {
@@ -57,13 +57,32 @@ const FormAndFilesNode = props => {
   return null;
   return null;
 };
 };
 
 
-const renderFrom = (data, projects) => {
+const renderFrom = (data, projects, depTrees) => {
   if (!data) return <Empty description="没有表单信息" />;
   if (!data) return <Empty description="没有表单信息" />;
   try {
   try {
     const ding_schema = JSON.parse(data)[0];
     const ding_schema = JSON.parse(data)[0];
     const formData = JSON.parse(ding_schema)?.formComponentValues;
     const formData = JSON.parse(ding_schema)?.formComponentValues;
-
     if (formData.length == 0) return <Empty description="没有表单信息" />;
     if (formData.length == 0) return <Empty description="没有表单信息" />;
+
+    function getDepName(id, tree) {
+      if (tree.length === 0) {
+        return;
+      }
+      let result = tree.find(item => item.ID === id);
+      if (result) {
+        return result.Name;
+      } else {
+        for (let index = 0; index < tree.length; index++) {
+          const element = tree[index];
+          result = getDepName(id, element?.children || []);
+          if (result) {
+            return result;
+          }
+        }
+      }
+      return '';
+    }
+
     return (
     return (
       <>
       <>
         {formData.map((item, idx) => {
         {formData.map((item, idx) => {
@@ -82,11 +101,26 @@ const renderFrom = (data, projects) => {
           let value = item.value.join(',');
           let value = item.value.join(',');
           if (item.id.includes('ProjectField')) {
           if (item.id.includes('ProjectField')) {
             if (value) {
             if (value) {
-              value = Number(value);
-              const project = projects.find(pitem => pitem.id === value);
-              if (project) {
-                value = `${project.project_name}(${project.project_full_code})`;
+              if (!Number.isNaN(Number(value))) {
+                value = Number(value);
+                const project = projects.find(pitem => pitem.id === value);
+                if (project) {
+                  value = `${project.project_name}(${project.project_full_code})`;
+                }
+              }
+            }
+          }
+          if (item.id.includes('DepartmentField')) {
+            if (value) {
+              if (!Number.isNaN(Number(value))) {
+                value = Number(value);
+                value = getDepName(value, depTrees);
+                console.log(value);
               }
               }
+              // const dep = depTrees.find(ditem => ditem.ID === value);
+              // if (dep) {
+              //   value = `${dep.name}`;
+              // }
             }
             }
           }
           }
           return (
           return (
@@ -117,7 +151,8 @@ const renderFrom = (data, projects) => {
     return <Empty description="没有表单信息" />;
     return <Empty description="没有表单信息" />;
   }
   }
 };
 };
-export default connect(({ detail, loading }) => ({
+export default connect(({ detail, user, loading }) => ({
   comment: detail.comment,
   comment: detail.comment,
+  depTrees: user.depTrees,
   loading,
   loading,
 }))(FormAndFilesNode);
 }))(FormAndFilesNode);