Ver código fonte

fix: form内容未存储问题

ZhaoJun 1 ano atrás
pai
commit
999cf8905d

+ 2 - 2
src/components/DDComponents/DDMultiSelectField/index.js

@@ -4,13 +4,13 @@ import { Select } from 'antd';
 const { Option } = Select;
 
 function DDMultiSelectField(props) {
-  const { options, disabled, onChange } = props;
-
+  const { options, disabled, onChange, value } = props;
   return (
     <Select
       mode="multiple"
       allowClear
       style={{ width: '100%' }}
+      defaultValue={value}
       disabled={disabled}
       onChange={value => {
         onChange(value);

+ 13 - 11
src/pages/Detail/CommitAuditModal.js

@@ -158,9 +158,6 @@ function CommitAuditModal(props) {
     if (res.data) {
       const formList = JSON.parse(res.data.json);
       setApprovalProcess(formList.approvalProcess || {});
-      const temp = formList.formList;
-      const prevFormData = (temp && temp.length) ? temp.map(tempItem => JSON.parse(tempItem)) : [];
-      setFormComponentValues(prevFormData);
       return formList;
     }
   };
@@ -260,8 +257,15 @@ function CommitAuditModal(props) {
     // 加载之前提交的form数据
     const resFormData = await initFormList();
     const resData = resFormData?.formList;
-
     const prevFormData = resData && resData.length ? resData.map(resItem => JSON.parse(resItem)) : null;
+    if (prevFormData && prevFormData.length) {
+      const formValues = {}
+      prevFormData.forEach(pItem => {
+        formValues[pItem.template_node_id] = [...pItem.formComponentValues]
+      })
+      setFormComponentValues(formValues)
+    }
+
     if (value) {
       changeAudit(value[value.length - 1]);
       if (prevFormData !== null) {
@@ -357,12 +361,11 @@ function CommitAuditModal(props) {
     addAuditList.forEach((item, index) => {
       // 回填历史数据
       if (prevFormData.length) {
-        const currentForm = prevFormData.find(pItem=>pItem.template_node_id===item.nodeId);
+        const currentForm = prevFormData.find(pItem => pItem.template_node_id === item.nodeId);
         item.items.forEach((DDComponent) => {
-          console.log(currentForm, DDComponent)
           const prevValue = currentForm?.formComponentValues?.find(cItem => cItem.id === DDComponent.props.id)
-          // console.log(prevValue)
           DDComponent.props.defaultValue = prevValue?.value || prevValue?.defaultValue
+
         })
       }
       let Components = Form3x.create({
@@ -390,6 +393,7 @@ function CommitAuditModal(props) {
             })
             .filter(item => item);
           if (getReComputeAudit(items, changedValues)) advanceSubmit();
+          console.log(formComponentValues)
           setFormComponentValues({...formComponentValues});
         },
       })(AuditDetailed);
@@ -418,8 +422,8 @@ function CommitAuditModal(props) {
     firstList.forEach(id => {
       let approvalNode = flowDetail.nodes.find?.(item => item.Id == id);
       if (!approvalNode) return;
-      const prevValues = data.length ? data.find((item)=>item.template_node_id === approvalNode.Id).formComponentValues : []
-      let values = data[approvalNode.Id] || prevValues ||  [];
+      const prevValues = data.length ? data.find((item) => item.template_node_id === approvalNode.Id).formComponentValues : []
+      let values = data[approvalNode.Id] || prevValues || [];
       let audit_list = [],
         cc_list = [];
       approvalProcess[approvalNode.Id]?.forEach(item => {
@@ -427,7 +431,6 @@ function CommitAuditModal(props) {
         if (item[0].type == 'role') return arr.push(item[0].nowValue);
         return arr.push(item[0].value);
       });
-      console.log(values)
       const formItem = {
         flow_id: approvalNode.flow_id,
         template_node_id: approvalNode.Id,
@@ -569,7 +572,6 @@ function CommitAuditModal(props) {
         message.error('当前存在审批节点未绑定审批流程!请联系管理员。');
         return;
       }
-      debugger
       await querySaveBomForm({
         project_id: version.project_id,
         node_id: version.template_node_id,

+ 16 - 16
src/pages/Detail/FlowModal.js

@@ -388,15 +388,15 @@ function FlowModal(props) {
     setInputValue(null);
   };
 
-  function calculateHoursDifference(date1, date2) {
-    const timestamp1 = date1.getTime(); // 获取第一个Date对象的时间戳(以毫秒为单位)
-    const timestamp2 = date2.getTime(); // 获取第二个Date对象的时间戳(以毫秒为单位)
-
-    const timeDifferenceInMillis = Math.abs(timestamp2 - timestamp1); // 计算时间戳之间的差值(毫秒数)
-    const hoursDifference = timeDifferenceInMillis / (1000 * 60 * 60); // 将差值转换为小时数
-
-    return hoursDifference.toFixed(2);
-  }
+  // function calculateHoursDifference(date1, date2) {
+  //   const timestamp1 = date1.getTime(); // 获取第一个Date对象的时间戳(以毫秒为单位)
+  //   const timestamp2 = date2.getTime(); // 获取第二个Date对象的时间戳(以毫秒为单位)
+  //
+  //   const timeDifferenceInMillis = Math.abs(timestamp2 - timestamp1); // 计算时间戳之间的差值(毫秒数)
+  //   const hoursDifference = timeDifferenceInMillis / (1000 * 60 * 60); // 将差值转换为小时数
+  //
+  //   return hoursDifference.toFixed(2);
+  // }
 
   const getDescription = (node, prevNode) => {
     let str = `审批人:${node.AuditorUser?.CName || '-'}`;
@@ -407,8 +407,8 @@ function FlowModal(props) {
         : date.toLocaleDateString('zh-CN', {
             format: 'YYYY-MM-DD hh:mm:ss',
           });
-    const residenceTime =
-      auditTime === '-' ? '-' : calculateHoursDifference(date, new Date(prevNode.audit_time));
+    // const residenceTime =
+    //   auditTime === '-' ? '-' : calculateHoursDifference(date, new Date(prevNode.audit_time));
     return (
       <div>
         审批人:{node.AuditorUser?.CName || '-'}
@@ -420,9 +420,9 @@ function FlowModal(props) {
         <div>
           <span>审批时间:{auditTime || '-'}</span>
         </div>
-        <div>
-          <span>滞留时间:{`${residenceTime}小时`}</span>
-        </div>
+        {/* <div> */}
+        {/*   <span>滞留时间:{`${residenceTime}小时`}</span> */}
+        {/* </div> */}
       </div>
     );
   };
@@ -611,11 +611,11 @@ function FlowModal(props) {
                       current={item.current}
                       status={item.status}
                     >
-                      {item.list.reduce((prev, node) => (
+                      {item.list.map(( node) => (
                         <Step
                           key={`${node.id}_${node.node}`}
                           title={node.node}
-                          description={getDescription(node, prev)}
+                          description={getDescription(node)}
                         />
                       ))}
                     </Steps>