广州市综治平台前端
xusd
2 days ago 9cbfaa22c35822e4f2f985907fce5da4c9ef7ac9
fix:超时办件优化
3 files modified
102 ■■■■■ changed files
src/utils/selectOption.js 13 ●●●●● patch | view | raw | blame | history
src/views/workEfficiency/component/TimeoutDialog.jsx 33 ●●●●● patch | view | raw | blame | history
src/views/workEfficiency/index.jsx 56 ●●●●● patch | view | raw | blame | history
src/utils/selectOption.js
@@ -787,6 +787,18 @@
    },
];
// 是否
const isOrNot = [
    {
        value: '1',
        label: '是',
    },
    {
        value: '0',
        label: '否',
    },
];
// VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 暂时用不到,防止以后会用的,先保留 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
// 调解类型
@@ -1603,6 +1615,7 @@
    resultList,
    rmtjList,
    inputWay,
    isOrNot,
};
export default obj;
src/views/workEfficiency/component/TimeoutDialog.jsx
@@ -211,14 +211,43 @@
    caseId: '',
    type: 0,
  })
  const [isResetting, setIsResetting] = useState(false); // 添加重置标志位
  useEffect(() => {
    if (!isResetting) {
    getTableData()
    }
  }, [searchData])
  // 监听timeoutKey变化,重置数据
  useEffect(() => {
    setIsResetting(true); // 开始重置
    // 重置表格数据
    setTableData([]);
    setTotal(0);
    // 重置搜索条件
    setSearchData({
      page: 1,
      size: 10,
      sortType: 2,
      sortColmn: 1,
    });
    // 重置表单
    form.resetFields();
    // 重置选择状态
    setSelectedRowKeys([]);
    setSelectedRows([]);
    // 延迟重置标志位,确保重置完成后再允许API调用
    setTimeout(() => {
      setIsResetting(false);
    }, 100);
  }, [props.timeoutKey]);
  //获取表格数据
  const getTableData = async () => {
    setLoading(true)
    try {
    const res = await getTable({
      ...searchData,
      queryType: dialogTypeMap[props.timeoutKey],
@@ -228,6 +257,10 @@
      const { data } = res
      setTableData(data?.content)
      setTotal(data.totalElements)
      }
    } catch (error) {
      console.error('获取表格数据失败:', error)
    } finally {
      setLoading(false)
    }
  }
src/views/workEfficiency/index.jsx
@@ -295,13 +295,38 @@
    // 超时办件列表
    async function pageQuantity(search, values = {}) {
        global.setSpinning(true);
        try {
        const res = await pageQuantityApi({ ...search, ...values });
        global.setSpinning(false);
        if (res.type) {
            let data = res.data.content || [];
            let total = res?.data?.totalElements || 0;
            setTableData({ list: data, total });
                setTableData({
                    list: data,
                    total,
                    page: search.page || 1,
                    size: search.size || 10
                });
            setTimeoutSearch(search);
            } else {
                // API调用失败时,确保数据状态正确
                setTableData({
                    list: [],
                    total: 0,
                    page: search.page || 1,
                    size: search.size || 10
                });
            }
        } catch (error) {
            console.error('获取超时办件列表失败:', error);
            // 异常时,确保数据状态正确
            setTableData({
                list: [],
                total: 0,
                page: search.page || 1,
                size: search.size || 10
            });
        } finally {
            global.setSpinning(false);
        }
    }
@@ -525,6 +550,13 @@
            },
        },
        {
            title: '任务节点',
            dataIndex: 'nodeName',
            width: 150,
            sorter: true,
            sortNumber: 1, //设置这个传给后端的
        },
        {
            title: '处理时限',
            dataIndex: 'timeLimit',
            defaultSortOrder: 'descend',
@@ -537,6 +569,14 @@
                        {`超${$$.formatHoursToDaysAndHours(text)}`}
                    </div>
                );
            },
        },
        {
            title: '是否处理',
            dataIndex: 'taskStatus',
            width: 80,
            render: (text) => {
                return <span>{text === 1 ? '是' : '否'}</span>;
            },
        },
        {
@@ -753,6 +793,7 @@
                                    treedata: $$.caseTypeSelect.caseTypeSelect,
                                },
                                { type: 'Select', name: 'canal', label: '事项来源', placeholder: '请选择', span: 8, selectdata: $$.options.caseCanal },
                                { type: 'Select', name: 'taskStatus', label: '任务是否处理', placeholder: '请选择', span: 8, selectdata: $$.options.isOrNot },
                            ]}
                            handleReset={() => {
                                form.resetFields();
@@ -1112,7 +1153,15 @@
                                    activeKey={radioData.tab2}
                                    onChange={(v) => {
                                        setRadioData({ ...radioData, tab2: v });
                                        pageQuantity({ ...timeoutSearch, queryType: v }, search);
                                        // 立即清空数据,确保TableView显示清空状态
                                        setTableData({ list: [], total: 0, page: 1, size: 10 });
                                        // 重置分页状态,避免列表内容重复
                                        const resetSearch = {
                                            ...timeoutSearch,
                                            queryType: v,
                                            page: 1
                                        };
                                        pageQuantity(resetSearch, search);
                                        listTimeOutTaskGroup({ queryType: v }, search);
                                    }}
                                />
@@ -1132,6 +1181,7 @@
                            <div>
                                {radioData.radio2 === '1' && (
                                    <TableView
                                        key={`timeout-table-${radioData.tab2}`} // 添加key强制重新渲染
                                        columns={fxColumns}
                                        dataSource={tableData.list}
                                        size="small"