فهرست منبع

fix: form内容未存储问题

ZhaoJun 1 سال پیش
والد
کامیت
c19a977583
2فایلهای تغییر یافته به همراه16 افزوده شده و 12 حذف شده
  1. 2 2
      src/components/DDComponents/DDMultiSelectField/index.js
  2. 14 10
      src/pages/Detail/CommitAuditModal.js

+ 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);

+ 14 - 10
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.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);
@@ -416,10 +420,11 @@ function CommitAuditModal(props) {
     let firstList = [...new Set(list)];
     // let attachment = await upload();
     firstList.forEach(id => {
+      debugger
       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 +432,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,