|  | @@ -97,18 +97,6 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |      let [columnID, tableID] = ids[1].split('>');
 | 
	
		
			
				|  |  |      let [columnLabel, tableLabel] = label.split('>');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const { columns: originColumns } = data.formData.find(
 | 
	
		
			
				|  |  | -      (item) => item.props.id === tableID,
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // 检查是否有文字说明控件,有的话需要写入tableData
 | 
	
		
			
				|  |  | -    const allTextNote = originColumns.filter((item, index) => {
 | 
	
		
			
				|  |  | -      if (item.componentName === 'TextNote') {
 | 
	
		
			
				|  |  | -        item.index = index;
 | 
	
		
			
				|  |  | -        return true;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      const cell = {
 | 
	
		
			
				|  |  |        name: columnLabel,
 | 
	
		
			
				|  |  |        id: columnID,
 | 
	
	
		
			
				|  | @@ -118,27 +106,19 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |      // 组装可能用到的数据
 | 
	
		
			
				|  |  |      const cols = [];
 | 
	
		
			
				|  |  |      cols[colIndex] = cell;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // 对这个表格的每个第 allTextNote item 的 index 列写入
 | 
	
		
			
				|  |  | -    let textNoteCellList = [];
 | 
	
		
			
				|  |  | -    if (allTextNote && allTextNote.length) {
 | 
	
		
			
				|  |  | -      // 不可编辑控件
 | 
	
		
			
				|  |  | -      textNoteCellList = allTextNote.map((item) => {
 | 
	
		
			
				|  |  | -        return {
 | 
	
		
			
				|  |  | -          name: item.props.label,
 | 
	
		
			
				|  |  | -          id: item.props.id,
 | 
	
		
			
				|  |  | -          type: item.componentName,
 | 
	
		
			
				|  |  | -          value: [item.props.placeholder],
 | 
	
		
			
				|  |  | -          colIndex: item.index,
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      const rows = [];
 | 
	
		
			
				|  |  |      rows[rowIndex] = cols;
 | 
	
		
			
				|  |  | -    // 可能不止一个表格
 | 
	
		
			
				|  |  | -    if (tableData.length > 0) {
 | 
	
		
			
				|  |  | -      let table = tableData.find((item) => item.id === tableID);
 | 
	
		
			
				|  |  | +    // 如果已经有数据
 | 
	
		
			
				|  |  | +    let oldTableData = [];
 | 
	
		
			
				|  |  | +    // 这里不知道为什么不能直接读取state(tableData)
 | 
	
		
			
				|  |  | +    setTableData((prevState) => {
 | 
	
		
			
				|  |  | +      oldTableData = prevState;
 | 
	
		
			
				|  |  | +      return prevState;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    console.clear();
 | 
	
		
			
				|  |  | +    console.log(oldTableData);
 | 
	
		
			
				|  |  | +    if (oldTableData && oldTableData.length > 0) {
 | 
	
		
			
				|  |  | +      let table = oldTableData.find((item) => item.id === tableID);
 | 
	
		
			
				|  |  |        // 如果某个表格数据存在
 | 
	
		
			
				|  |  |        if (table) {
 | 
	
		
			
				|  |  |          const oldRows = table.value;
 | 
	
	
		
			
				|  | @@ -150,12 +130,11 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |              // 记录可编辑控件
 | 
	
		
			
				|  |  |              table.value[rowIndex][colIndex] = cell;
 | 
	
		
			
				|  |  |              // 不可编辑控件
 | 
	
		
			
				|  |  | -            if (textNoteCellList.length) {
 | 
	
		
			
				|  |  | -              for (const note of textNoteCellList) {
 | 
	
		
			
				|  |  | -                table.value[rowIndex][note.colIndex] = note;
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            const newTableData = tableData.map((item) => {
 | 
	
		
			
				|  |  | +            table.value[rowIndex] = addUnEditableColumn(
 | 
	
		
			
				|  |  | +              table.value[rowIndex],
 | 
	
		
			
				|  |  | +              tableID,
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +            const newTableData = oldTableData.map((item) => {
 | 
	
		
			
				|  |  |                if (item.id === table.id) {
 | 
	
		
			
				|  |  |                  return table;
 | 
	
		
			
				|  |  |                }
 | 
	
	
		
			
				|  | @@ -168,17 +147,17 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |              // 写入可编辑控件
 | 
	
		
			
				|  |  |              table.value[rowIndex] = cols;
 | 
	
		
			
				|  |  |              // 写入不可编辑控件的值
 | 
	
		
			
				|  |  | -            if (textNoteCellList.length) {
 | 
	
		
			
				|  |  | -              for (const note of textNoteCellList) {
 | 
	
		
			
				|  |  | -                table.value[rowIndex][note.colIndex] = note;
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            const newTableData = tableData.map((item) => {
 | 
	
		
			
				|  |  | +            table.value[rowIndex] = addUnEditableColumn(
 | 
	
		
			
				|  |  | +              table.value[rowIndex],
 | 
	
		
			
				|  |  | +              tableID,
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +            const newTableData = oldTableData.map((item) => {
 | 
	
		
			
				|  |  |                if (item.id === table.id) {
 | 
	
		
			
				|  |  |                  return table;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                return item;
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  | +            setTableData([]);
 | 
	
		
			
				|  |  |              setTableData(newTableData);
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          } else {
 | 
	
	
		
			
				|  | @@ -186,12 +165,11 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |            // 写入可编辑控件
 | 
	
		
			
				|  |  |            table.value = rows;
 | 
	
		
			
				|  |  |            // 写入不可编辑控件
 | 
	
		
			
				|  |  | -          if (textNoteCellList.length) {
 | 
	
		
			
				|  |  | -            for (const note of textNoteCellList) {
 | 
	
		
			
				|  |  | -              table.value[rowIndex][note.colIndex] = note;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          const newTableData = tableData.map((item) => {
 | 
	
		
			
				|  |  | +          table.value[rowIndex] = addUnEditableColumn(
 | 
	
		
			
				|  |  | +            table.value[rowIndex],
 | 
	
		
			
				|  |  | +            tableID,
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +          const newTableData = oldTableData.map((item) => {
 | 
	
		
			
				|  |  |              if (item.id === table.id) {
 | 
	
		
			
				|  |  |                return table;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -200,8 +178,9 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |            setTableData(newTableData);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  | +        // 如果某个table的数据不存在
 | 
	
		
			
				|  |  | +        rows[rowIndex] = addUnEditableColumn(rows[rowIndex], tableID);
 | 
	
		
			
				|  |  |          const newTableData = [
 | 
	
		
			
				|  |  | -          ...tableData,
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |              name: tableLabel,
 | 
	
		
			
				|  |  |              id: tableID,
 | 
	
	
		
			
				|  | @@ -209,14 +188,12 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |              value: rows,
 | 
	
		
			
				|  |  |            },
 | 
	
		
			
				|  |  |          ];
 | 
	
		
			
				|  |  | -        setTableData(newTableData);
 | 
	
		
			
				|  |  | +        setTableData([...oldTableData, ...newTableData]);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  | -      if (textNoteCellList.length) {
 | 
	
		
			
				|  |  | -        for (const note of textNoteCellList) {
 | 
	
		
			
				|  |  | -          rows[rowIndex][note.colIndex] = note;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | +      // 如果没有数据
 | 
	
		
			
				|  |  | +      // 添加不可编辑控件
 | 
	
		
			
				|  |  | +      rows[rowIndex] = addUnEditableColumn(rows[rowIndex], tableID);
 | 
	
		
			
				|  |  |        const newTableData = [
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |            name: tableLabel,
 | 
	
	
		
			
				|  | @@ -225,11 +202,43 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |            value: rows,
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |        ];
 | 
	
		
			
				|  |  | -      console.log(newTableData);
 | 
	
		
			
				|  |  |        setTableData(newTableData);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  const addUnEditableColumn = (rows, tableID) => {
 | 
	
		
			
				|  |  | +    const { columns: originColumns } = data.formData.find(
 | 
	
		
			
				|  |  | +      (item) => item.props.id === tableID,
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +    // 检查是否有文字说明控件,有的话需要添加在第几列的index后写入tableData
 | 
	
		
			
				|  |  | +    const allTextNote = originColumns.filter((item, index) => {
 | 
	
		
			
				|  |  | +      if (item.componentName === 'TextNote') {
 | 
	
		
			
				|  |  | +        item.index = index;
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return false;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    // 对这个表格的每个第 (allTextNote.item 的 index )列写入
 | 
	
		
			
				|  |  | +    let textNoteCellList = [];
 | 
	
		
			
				|  |  | +    if (allTextNote && allTextNote.length) {
 | 
	
		
			
				|  |  | +      textNoteCellList = allTextNote.map((item) => {
 | 
	
		
			
				|  |  | +        return {
 | 
	
		
			
				|  |  | +          name: item.props.label,
 | 
	
		
			
				|  |  | +          id: item.props.id,
 | 
	
		
			
				|  |  | +          type: item.componentName,
 | 
	
		
			
				|  |  | +          value: [item.props.placeholder],
 | 
	
		
			
				|  |  | +          colIndex: item.index,
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (textNoteCellList.length) {
 | 
	
		
			
				|  |  | +      for (const note of textNoteCellList) {
 | 
	
		
			
				|  |  | +        rows[note.colIndex] = note;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return rows;
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    const submit = async () => {
 | 
	
		
			
				|  |  |      form.validateFields().then((values) => {
 | 
	
		
			
				|  |  |        const { form: formCur } = formValueRef.current;
 | 
	
	
		
			
				|  | @@ -264,7 +273,6 @@ const OaDetail = () => {
 | 
	
		
			
				|  |  |        tableIndex.forEach((item, index) => {
 | 
	
		
			
				|  |  |          formData.splice(item, 0, tableData[index]);
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |        createRun({
 | 
	
		
			
				|  |  |          flow_id: Number(oaId),
 | 
	
		
			
				|  |  |          form: JSON.stringify(formData),
 |