广州市综治平台前端
8 files modified
1461 ■■■■ changed files
src/utils/utility.js 4 ●●●● patch | view | raw | blame | history
src/views/comprehensive/index.jsx 17 ●●●● patch | view | raw | blame | history
src/views/disputeLedger/index.jsx 10 ●●●● patch | view | raw | blame | history
src/views/register/closeCaseEdit/component/selectAddr.jsx 297 ●●●● patch | view | raw | blame | history
src/views/register/closeCaseEdit/component/visitorRegister.jsx 1016 ●●●● patch | view | raw | blame | history
src/views/register/closeCaseEdit/index.jsx 20 ●●●●● patch | view | raw | blame | history
src/views/register/visit/index.jsx 49 ●●●●● patch | view | raw | blame | history
src/views/workDash/index.jsx 48 ●●●● patch | view | raw | blame | history
src/utils/utility.js
@@ -2,7 +2,7 @@
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-02-16 11:57:54
 * @LastEditTime: 2025-06-10 17:40:29
 * @LastEditTime: 2025-06-23 14:30:22
 * @LastEditors: lwh
 * @Version: 1.0.0
 * @Description: 公共模块方法
@@ -17,7 +17,7 @@
import { pdf, jpg, file, word, excel } from '../assets/images/icon';
import { empty } from '@/assets/images';
export const isDebug = true; // 是否开发环境
export const isDebug = false; // 是否开发环境
export const isTest = true; // 是否测试环境
export const appUrl = isDebug ? debug : isTest ? test : web; // api
src/views/comprehensive/index.jsx
@@ -348,8 +348,6 @@
                                shortcuts: $$.shortcutsList(),
                                span: 8,
                            },
                            { type: 'RangePicker', name: 'closeTime', label: '办结时间', shortcutsPlacementLeft: true, shortcuts: $$.shortcutsList(), span: 8 },
                            { type: 'RangePicker', name: 'fileTime', label: '归档时间', shortcutsPlacementLeft: true, shortcuts: $$.shortcutsList(), span: 8 },
                            {
                                type: 'Cascader',
                                name: 'caseType',
@@ -360,7 +358,7 @@
                                treedata: $$.caseTypeSelect.caseTypeSelect,
                            },
                            { type: 'Select', name: 'mediResult', label: '化解结果', placeholder: '请选择', span: 8, selectdata: $$.options.mediResult },
                            { type: 'Input', name: 'caseRef', label: '事项编号' },
                            {
                                type: 'Cascader',
                                name: 'canal',
@@ -371,9 +369,9 @@
                                treedata: $$.options.caseCanal,
                            },
                            { type: 'Select', name: 'status', label: '事项状态', placeholder: '请选择', span: 8, selectdata: $$.options.caseStatus },
                            { type: 'Select', name: 'caseLevel', label: '事项等级', placeholder: '请选择', span: 8, selectdata: $$.options.caseLevelList },
                            { type: 'Select', name: 'systemSource', label: '系统来源', placeholder: '请选择', span: 8, selectdata: $$.options.systemSource },
                            { type: 'Input', name: 'inputUnitName', label: '登记机构' },
                            { type: 'Input', name: 'caseRef', label: '事项编号' },
                            {
                                type: 'searchButton',
                                name: 'mediateUnitId',
@@ -405,10 +403,13 @@
                                placeholder: '请选择',
                                label: '配合部门',
                            },
                            { type: 'Select', name: 'systemSource', label: '系统来源', placeholder: '请选择', span: 8, selectdata: $$.options.systemSource },
                            { type: 'Input', name: 'inputUnitName', label: '登记机构' },
                            { type: 'Input', name: 'plaintiffs', label: '申请方', labelStyle: { width: '56px' } },
                            { type: 'Input', name: 'defendants', label: '被申请方' },
                            { type: 'Select', name: 'peopleNum', placeholder: '请选择', label: '涉及人数', selectdata: $$.options.peopleNum },
                            { type: 'Select', name: 'amount', placeholder: '请选择', label: '涉及金额', selectdata: $$.options.amount },
                            { type: 'Select', name: 'caseLevel', label: '事项等级', placeholder: '请选择', span: 8, selectdata: $$.options.caseLevelList },
                            { type: 'Select', name: 'evaluateGrade', placeholder: '请选择', label: '评价等级', selectdata: $$.options.evaluateGrade },
                            {
                                type: 'Select',
@@ -446,8 +447,8 @@
                                ],
                            },
                            { type: 'Select', name: 'agreeType', placeholder: '请选择', label: '结案协议类型', selectdata: $$.options.caseAgreeType },
                            { type: 'Select', name: 'repeatCase', placeholder: '请选择', label: '合并事项', selectdata: $$.options.repeatCase },
                            { type: 'Input', name: 'caseCityCode', label: '市民编号' },
                            { type: 'RangePicker', name: 'closeTime', label: '办结时间', shortcutsPlacementLeft: true, shortcuts: $$.shortcutsList(), span: 8 },
                            { type: 'RangePicker', name: 'fileTime', label: '归档时间', shortcutsPlacementLeft: true, shortcuts: $$.shortcutsList(), span: 8 },
                        ]}
                        handleReset={() => {
                            form.resetFields();
src/views/disputeLedger/index.jsx
@@ -330,7 +330,7 @@
                            },
                            {
                                icon: disputeLedger_10,
                                title: '12345',
                                title: '12345热线处置的矛盾',
                                value: allData?.ottffNum || 0,
                                backgroundColor: '#F9F0FF',
                                borderColor: '#722ED1',
@@ -339,7 +339,7 @@
                            },
                            {
                                icon: disputeLedger_11,
                                title: '非警务纠纷',
                                title: '公安处置的非警务纠纷',
                                value: allData?.tzfjwjfNum || 0,
                                backgroundColor: 'rgba(182,221,241,0.24)',
                                borderColor: '#1A6FB8',
@@ -348,7 +348,7 @@
                            },
                            {
                                icon: disputeLedger_12,
                                title: '人民调解',
                                title: '其他部门处置的调解案件',
                                value: allData?.rmtjNum || 0,
                                backgroundColor: 'rgba(253,205,197,0.24)',
                                borderColor: '#F53F3F',
@@ -357,7 +357,7 @@
                            },
                            {
                                icon: disputeLedger_13,
                                title: '信访',
                                title: '信访部门处置的矛盾纠纷',
                                value: allData?.xfNum || 0,
                                backgroundColor: 'rgba(175,240,181,0.24)',
                                borderColor: '#00B42A',
@@ -366,7 +366,7 @@
                            },
                            {
                                icon: disputeLedger_14,
                                title: '劳动争议',
                                title: '人社部门处置的劳动争议',
                                value: allData?.ldzcNum || 0,
                                backgroundColor: 'rgba(181,245,236,0.24)',
                                borderColor: '#08979c',
src/views/register/closeCaseEdit/component/selectAddr.jsx
@@ -1,174 +1,173 @@
import React, { useEffect, useRef, useState } from 'react';
import MyDrawer from '@/components/MyDrawer';
import { caselogo } from '@/assets/images';
import * as $$ from '@/utils/utility';
import { Scrollbars } from "react-custom-scrollbars";
import { Scrollbars } from 'react-custom-scrollbars';
// import { Col, Button, Input, Form } from 'antd';
import { Input, Select, Button } from '@arco-design/web-react';
import { aiSubmit, Aimge } from '@/assets/images';
//手动输入的级联数据
function createAiChatMessageApi(data) {
  return $$.ax.request({ url: `syRegion/getRegionTree`, type: 'get', service: 'sys', data });
    return $$.ax.request({ url: `syRegion/getRegionTree`, type: 'get', service: 'sys', data });
}
const SelectAddr = ({ addAdressClick }) => {
  const [cascaderList, setCascaderList] = useState([]);
  const [oneList, setOneList] = useState([]);
  const [twoList, setTwoList] = useState([]);
  const [threeList, setThreeList] = useState([]);
  const [formData, setFormData] = useState({})
    const [cascaderList, setCascaderList] = useState([]);
    const [oneList, setOneList] = useState([]);
    const [twoList, setTwoList] = useState([]);
    const [threeList, setThreeList] = useState([]);
    const [formData, setFormData] = useState({});
  async function createAiChatMessage() {
    global.setSpinning(true);
    const res = await createAiChatMessageApi();
    global.setSpinning(false);
    if (res.type) {
      console.log('res', res.data);
      let list = res?.data[0]?.children || [];
      let nowList = flattenArray(list) || [];
      // 转换为一维数组
      setCascaderList(nowList)
      setOneList(nowList?.filter(i => i.level === '2'))
    }
  }
    async function createAiChatMessage() {
        global.setSpinning(true);
        const res = await createAiChatMessageApi();
        global.setSpinning(false);
        if (res.type) {
            console.log('res', res.data);
            let list = res?.data[0]?.children || [];
            let nowList = flattenArray(list) || [];
            // 转换为一维数组
            setCascaderList(nowList);
            setOneList(nowList?.filter((i) => i.level === '2'));
        }
    }
    // 多维数组转一维数组
    function flattenArray(arr) {
        let result = [];
        function recursiveFlatten(items) {
            items.forEach((item) => {
                // 将当前对象推入结果数组
                result.push(item);
  // 多维数组转一维数组
  function flattenArray(arr) {
    let result = [];
    function recursiveFlatten(items) {
      items.forEach(item => {
        // 将当前对象推入结果数组
        result.push(item);
                // 如果该对象有 children 属性且是数组,则递归处理
                if (Array.isArray(item.children)) {
                    recursiveFlatten(item.children);
                }
            });
        }
        // 如果该对象有 children 属性且是数组,则递归处理
        if (Array.isArray(item.children)) {
          recursiveFlatten(item.children);
        }
      });
    }
        recursiveFlatten(arr);
        return result;
    }
    recursiveFlatten(arr);
    return result;
  }
    // 区级下拉事件
    function handleOneChange(e) {
        console.log('e', e);
        if (e) {
            setFormData({ ...formData, queArea: e, queRoad: '', village: '' });
            setTwoList(cascaderList?.filter((i) => i.parentId === e));
        }
    }
  // 区级下拉事件
  function handleOneChange(e) {
    console.log('e', e);
    function handleTwoChange(e) {
        if (e) {
            setFormData({ ...formData, queRoad: e, village: '' });
            setThreeList(cascaderList?.filter((i) => i.parentId === e));
        }
    }
    if (e) {
      setFormData({ ...formData, queArea: e, queRoad: '', village: '' })
      setTwoList(cascaderList?.filter(i => i.parentId === e))
    }
  }
    function handleThreeChange(e) {
        setFormData({ ...formData, village: e });
    }
  function handleTwoChange(e) {
    if (e) {
      setFormData({ ...formData, queRoad: e, village: '' })
      setThreeList(cascaderList?.filter(i => i.parentId === e))
    }
  }
    function submit() {
        if (!formData.queArea) {
            return $$.info({ type: 'warning', content: '请选择区、街镇、村社' });
        }
        let queAreaName = cascaderList?.find((i) => i.value === formData.queArea)?.label;
        let queRoadName = cascaderList?.find((i) => i.value === formData.queRoad)?.label;
        let villageName = cascaderList?.find((i) => i.value === formData.village)?.label;
        let address = `${queAreaName}${queRoadName || ''}${villageName || ''}${formData.addr || ''}`;
        addAdressClick &&
            addAdressClick({
                addr: address,
                addrNameList: [queAreaName, queRoadName],
                addrList: formData.queRoad ? [formData.queArea, formData.queRoad] : [formData.queArea],
            });
    }
  function handleThreeChange(e) {
    setFormData({ ...formData, village: e })
  }
    useEffect(() => {
        createAiChatMessage();
    }, []);
    return (
        <div style={{ height: '356px' }}>
            <div style={{ display: 'flex', gap: '16px' }}>
                <div style={{ width: '200px' }}>
                    <Select
                        placeholder="请选择区域"
                        allowClear
                        onChange={handleOneChange}
                        onClear={() => {
                            setFormData({ ...formData, queArea: '', queRoad: '', village: '' });
                            setTwoList([]);
                            setThreeList([]);
                        }}
                        value={formData.queArea || undefined}
                        style={{ width: 200 }}
                    >
                        {oneList.map((i, idx) => (
                            <Select.Option key={i.value} value={i.value}>
                                {i.label}
                            </Select.Option>
                        ))}
                    </Select>
                </div>
                <div style={{ width: '200px' }}>
                    <Select
                        allowClear
                        placeholder="请选择街镇"
                        onChange={handleTwoChange}
                        onClear={() => {
                            setFormData({ ...formData, queRoad: '', village: '' });
                            setThreeList([]);
                        }}
                        value={formData.queRoad || undefined}
                        style={{ width: 200 }}
                    >
                        {twoList.map((i, idx) => (
                            <Select.Option key={i.value} value={i.value}>
                                {i.label}
                            </Select.Option>
                        ))}
                    </Select>
                </div>
                <div style={{ width: '200px' }}>
                    <Select
                        allowClear
                        onClear={() => {
                            setFormData({ ...formData, village: '' });
                        }}
                        placeholder="请选择村社"
                        onChange={handleThreeChange}
                        value={formData.village || undefined}
                        style={{ width: 200 }}
                    >
                        {threeList.map((i, idx) => (
                            <Select.Option key={i.value} value={i.value}>
                                {i.label}
                            </Select.Option>
                        ))}
                    </Select>
                </div>
                <div style={{ width: '100%' }}>
                    <Input
                        placeholder="请填写具体地点信息"
                        style={{ width: '100%' }}
                        onChange={(e) => {
                            setFormData({ ...formData, addr: e });
                        }}
                    />
                </div>
            </div>
            <Button style={{ marginTop: '16px' }} type="primary" onClick={() => submit()}>
                提交
            </Button>
        </div>
    );
};
  function submit() {
    if (!formData.queArea || !formData.queRoad || !formData.village) {
      return $$.info({ type: 'warning', content: '请选择区、街镇、村社' });
    }
    if (!formData.addr) {
      return $$.info({ type: 'warning', content: '请填写具体地点信息' });
    }
    let queAreaName = cascaderList?.find(i => i.value === formData.queArea)?.label;
    let queRoadName = cascaderList?.find(i => i.value === formData.queRoad)?.label;
    let villageName = cascaderList?.find(i => i.value === formData.village)?.label;
    let address = `${queAreaName}${queRoadName}${villageName}${formData.addr}`
    addAdressClick && addAdressClick({
      addr: address,
      queArea: formData.queArea,
      queAreaName,
      queRoadName,
      queRoad: formData.queRoad,
    }, [formData.queArea, formData.queRoad])
  }
  useEffect(() => {
    createAiChatMessage();
  }, [])
  return (
    <div style={{ height: '356px' }}>
      <div style={{ display: 'flex', gap: '16px' }}>
        <div style={{ width: '200px' }}>
          <Select
            placeholder="请选择区域"
            allowClear
            onChange={handleOneChange}
            onClear={() => { setFormData({ ...formData, queArea: '', queRoad: '', village: '' }); setTwoList([]); setThreeList([]) }}
            value={formData.queArea || undefined}
            style={{ width: 200 }}
          >
            {oneList.map((i, idx) => (
              <Select.Option key={i.value} value={i.value}>
                {i.label}
              </Select.Option>
            ))}
          </Select>
        </div>
        <div style={{ width: '200px' }}>
          <Select
            allowClear
            placeholder="请选择街镇"
            onChange={handleTwoChange}
            onClear={() => { setFormData({ ...formData, queRoad: '', village: '', }); setThreeList([]) }}
            value={formData.queRoad || undefined}
            style={{ width: 200 }}
          >
            {twoList.map((i, idx) => (
              <Select.Option key={i.value} value={i.value}>
                {i.label}
              </Select.Option>
            ))}
          </Select>
        </div>
        <div style={{ width: '200px' }}>
          <Select
            allowClear
            onClear={() => { setFormData({ ...formData, village: '' }) }}
            placeholder="请选择村社"
            onChange={handleThreeChange}
            value={formData.village || undefined}
            style={{ width: 200 }}
          >
            {threeList.map((i, idx) => (
              <Select.Option key={i.value} value={i.value}>
                {i.label}
              </Select.Option>
            ))}
          </Select>
        </div>
        <div style={{ width: '100%' }}>
          <Input
            placeholder='请填写具体地点信息'
            style={{ width: '100%' }}
            onChange={(e) => {
              setFormData({ ...formData, addr: e })
            }}
          />
        </div>
      </div>
      <Button style={{ marginTop: '16px' }} type="primary" onClick={() => submit()}>提交</Button>
    </div>
  )
}
export default SelectAddr;
export default SelectAddr;
src/views/register/closeCaseEdit/component/visitorRegister.jsx
@@ -1,537 +1,549 @@
import React, { useState, useEffect, useRef } from "react";
import React, { useState, useEffect, useRef } from 'react';
import { Row, Col, Space, Tooltip, Button } from 'antd';
import { Form, Input, Radio, Select, DatePicker, Cascader, Modal, Alert, InputNumber } from '@arco-design/web-react';
import PersonCard from '@/components/personCard';
import MyTabsNew from '../../../../components/MyTabsNew';
import * as $$ from '@/utils/utility';
import {
  question1,
  majorStatus_1
} from '@/assets/images';
import { question1, majorStatus_1 } from '@/assets/images';
import '../../index.less';
import ApplyDialog from "./applyDialog";
import AgentDialog from "./agentDialog";
import ApplyDialog from './applyDialog';
import AgentDialog from './agentDialog';
import MapView from './map';
import SelectAddr from './selectAddr';
import { scan } from '@/assets/images/icon';
import { EventLevelDrawer, MattersDetail } from './levelDetail';
import DocumentScanner from '../../matterDetail/FileUpLoad';
import FileTable from "../../matterDetail/FileTable";
import FileTable from '../../matterDetail/FileTable';
const RadioGroup = Radio.Group;// 根据调解案号获取纠纷登记信息
const RadioGroup = Radio.Group; // 根据调解案号获取纠纷登记信息
const FormItem = Form.Item;
const InputSearch = Input.Search;
const VisitorRegister = (props) => {
  const [dialogType, setDialogType] = useState();//添加当事人的类型
  const [addVisabled, setAddVisabled] = useState(false);//添加当事人弹窗控制
  const [fakeData, setFakeData] = useState([]);//当事人信息数据
  const [scanFile, setScanFile] = useState(false);
  const [ocrText, setOcrText] = useState('');
    const [dialogType, setDialogType] = useState(); //添加当事人的类型
    const [addVisabled, setAddVisabled] = useState(false); //添加当事人弹窗控制
    const [fakeData, setFakeData] = useState([]); //当事人信息数据
    const [scanFile, setScanFile] = useState(false);
    const [ocrText, setOcrText] = useState('');
  const [mapView, setMapView] = useState(false);
  const [visible, setVisible] = useState(false);
  const [apply, setApply] = useState(false);
  const [editData, setEditData] = useState(null);
  const [agentVisible, setAgentVisible] = useState(false);
  const [mediateTab, setMediateTab] = useState('1'); //选择纠纷发生地1,地图 2.手动输入
    const [mapView, setMapView] = useState(false);
    const [visible, setVisible] = useState(false);
    const [apply, setApply] = useState(false);
    const [editData, setEditData] = useState(null);
    const [agentVisible, setAgentVisible] = useState(false);
    const [mediateTab, setMediateTab] = useState('1'); //选择纠纷发生地1,地图 2.手动输入
  const peopleMap = {
    '15_020008-1': '申请方',
    '15_020008-2': '被申请方',
    '24_00006-1': '申请方代理人',
    '24_00006-2': '被申请方代理人'
  }
    const peopleMap = {
        '15_020008-1': '申请方',
        '15_020008-2': '被申请方',
        '24_00006-1': '申请方代理人',
        '24_00006-2': '被申请方代理人',
    };
  useEffect(() => {
    if (props.formRef.current) {
      //引入当事人数据
      props.formRef.current.setFieldValue('fakeData', fakeData)
    }
  }, [fakeData])
    useEffect(() => {
        if (props.formRef.current) {
            //引入当事人数据
            props.formRef.current.setFieldValue('fakeData', fakeData);
        }
    }, [fakeData]);
  useEffect(() => {
    setFakeData(props.partyList || [])
  }, [props.partyList])
    useEffect(() => {
        setFakeData(props.partyList || []);
    }, [props.partyList]);
  //获取当前时间
  const getFormattedDateTime = () => {
    let now = new Date();
    let year = now.getFullYear();
    let month = (now.getMonth() + 1).toString().padStart(2, '0'); // 月份是从0开始的,所以要+1
    let day = now.getDate().toString().padStart(2, '0');
    let hours = now.getHours().toString().padStart(2, '0');
    let minutes = now.getMinutes().toString().padStart(2, '0');
    //获取当前时间
    const getFormattedDateTime = () => {
        let now = new Date();
        let year = now.getFullYear();
        let month = (now.getMonth() + 1).toString().padStart(2, '0'); // 月份是从0开始的,所以要+1
        let day = now.getDate().toString().padStart(2, '0');
        let hours = now.getHours().toString().padStart(2, '0');
        let minutes = now.getMinutes().toString().padStart(2, '0');
    return `${year}-${month}-${day} ${hours}:${minutes}`;
  }
        return `${year}-${month}-${day} ${hours}:${minutes}`;
    };
  //添加当事人
  const handleAdd = (type) => {
    if (type === '24_00006-1' || type === '24_00006-2') {
      setAgentVisible(true)
    } else {
      setAddVisabled(true)
    }
    setDialogType(type)
  }
    //添加当事人
    const handleAdd = (type) => {
        if (type === '24_00006-1' || type === '24_00006-2') {
            setAgentVisible(true);
        } else {
            setAddVisabled(true);
        }
        setDialogType(type);
    };
  const handleConfirm = (scanContent) => {
    // 处理确认逻辑
    props.formRef.current.setFieldValue(ocrText, scanContent)
    setScanFile(false);
  };
    const handleConfirm = (scanContent) => {
        // 处理确认逻辑
        props.formRef.current.setFieldValue(ocrText, scanContent);
        setScanFile(false);
    };
  const handleCancel = () => {
    // 处理取消逻辑
    setScanFile(false);
  };
    const handleCancel = () => {
        // 处理取消逻辑
        setScanFile(false);
    };
  //添加当事人
  const handleAddParty = (value, isEdit) => {
    if (isEdit) {
      //编辑
      const newList = fakeData.map(item => {
        if (item.id === value.id) {
          return value
        } else {
          return item
        }
      })
      setFakeData(newList)
      setEditData(null)
    } else {
      setFakeData([...fakeData, {
        ...value
      }])
    }
  }
    //添加当事人
    const handleAddParty = (value, isEdit) => {
        if (isEdit) {
            //编辑
            const newList = fakeData.map((item) => {
                if (item.id === value.id) {
                    return value;
                } else {
                    return item;
                }
            });
            setFakeData(newList);
            setEditData(null);
        } else {
            setFakeData([
                ...fakeData,
                {
                    ...value,
                },
            ]);
        }
    };
  //删除当事人
  const handleDeleteParty = (event, value) => {
    $$.modalInfo({
      content: `确定删除${value.trueName}的当事人信息吗?`,
      onOk: () => {
        event.stopPropagation();
        const filterData = fakeData.filter(item => item.id !== value.id)
        setFakeData(filterData)
      },
    });
  }
    //删除当事人
    const handleDeleteParty = (event, value) => {
        $$.modalInfo({
            content: `确定删除${value.trueName}的当事人信息吗?`,
            onOk: () => {
                event.stopPropagation();
                const filterData = fakeData.filter((item) => item.id !== value.id);
                setFakeData(filterData);
            },
        });
    };
  //编辑
  const handleEdit = (value) => {
    if (value.perType === '15_020008-1' || value.perType === '15_020008-2') {
      //当事人
      setAddVisabled(true)
    } else {
      //代理人
      setAgentVisible(true)
    }
    setDialogType(value.perType)
    console.log('value', value);
    //编辑
    const handleEdit = (value) => {
        if (value.perType === '15_020008-1' || value.perType === '15_020008-2') {
            //当事人
            setAddVisabled(true);
        } else {
            //代理人
            setAgentVisible(true);
        }
        setDialogType(value.perType);
        console.log('value', value);
    setEditData(value)
  }
        setEditData(value);
    };
    return (
        <div className="" style={{ ...props.style }}>
            <Col span={24} style={{ display: 'flex', alignItems: 'center' }}>
                <Space size="small">
                    <div className="MediationInfo-subTitle" style={{ marginTop: '-9px' }}></div>
                    <div style={{ display: 'flex' }}>
                        <h4>当事人信息</h4>
                    </div>
                </Space>
            </Col>
            <div style={{ margin: '16px 0' }}>
                <PersonCard isCheck={true} data={fakeData} handleAdd={handleAdd} handleDeleteParty={handleDeleteParty} handleEdit={handleEdit} />
            </div>
            <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}>
                <Space size="small">
                    <div className="MediationInfo-subTitle" style={{ marginTop: '-9px' }}></div>
                    <h4>纠纷基本情况</h4>
                </Space>
            </Col>
            <Form
                ref={props.formRef}
                layout="vertical"
                requiredSymbol={false}
                scrollToFirstError={true}
                initialValues={{
                    caseLevel: '3',
                    visitPeopleNum: 1,
                    visitTime: getFormattedDateTime(),
                    occurTime: getFormattedDateTime(),
                    majorStatus: 0,
                }} //默认值
                onValuesChange={props.onValuesChange}
            >
                <Row gutter={[32, 0]}>
                    <Col span={8}>
                        <FormItem
                            label={
                                <div style={{ display: 'flex' }}>
                                    事项等级
                                    <Tooltip onClick={() => setApply(true)}>
                                        <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px', cursor: 'pointer' }} />
                                    </Tooltip>
                                </div>
                            }
                            field="caseLevel"
                        >
                            <Select placeholder="请选择事项等级" allowClear options={$$.options.caseLevelList}></Select>
                        </FormItem>
                    </Col>
                    <Col span={8}>
                        <FormItem label="来访时间" field="visitTime">
                            <DatePicker style={{ width: '100%' }} format="YYYY-MM-DD HH:mm" showTime={true} />
                        </FormItem>
                    </Col>
                    <Col span={8}>
                        {props.canal === '22_00001-1' && (
                            <FormItem
                                rules={[{ message: '请填写来访人数', required: true }]}
                                label={
                                    <div style={{ display: 'flex' }}>
                                        来访人数(人)<div className="must">必填</div>
                                    </div>
                                }
                                field="visitPeopleNum"
                            >
                                <InputNumber placeholder="请填写" min={1} precision={0} step={1} />
                            </FormItem>
                        )}
                    </Col>
                    <Col span={8}>
                        <FormItem
                            label={
                                <div style={{ display: 'flex' }}>
                                    纠纷类型<div className="must">必填</div>
                                </div>
                            }
                            rules={[{ message: '请选择纠纷类型', required: true }]}
                            field="myCaseType"
                        >
                            <Cascader
                                placeholder="请选择"
                                options={$$.caseTypeSelect.caseTypeSelect}
                                onChange={(value, option) => {
                                    if (option) {
                                        props.formRef.current.setFieldsValue({
                                            caseTypeFirst: option[0].value,
                                            caseTypeFirstName: option[0].label,
                                            caseType: option[1].value,
                                            caseTypeName: option[1].label,
                                        });
                                    } else {
                                        //清除数据
                                        props.formRef.current.setFieldsValue({
                                            caseTypeFirst: undefined,
                                            caseTypeFirstName: undefined,
                                            caseType: undefined,
                                            caseTypeName: undefined,
                                        });
                                    }
                                }}
                                showSearch
                                allowClear
                            />
                        </FormItem>
                    </Col>
                    <Col span={8}>
                        <FormItem
                            label={
                                <div style={{ display: 'flex' }}>
                                    纠纷发生时间<div className="must">必填</div>
                                </div>
                            }
                            rules={[{ message: '请选择纠纷发生时间', required: true }]}
                            field="occurTime"
                        >
                            <DatePicker style={{ width: '100%' }} placeholder="请选择" format="YYYY-MM-DD HH:mm" showTime={true} />
                        </FormItem>
                    </Col>
                    <Col span={8}>
                        <FormItem
                            label={
                                <div style={{ display: 'flex' }}>
                                    纠纷发生地点<div className="must">必填</div>
                                </div>
                            }
                            rules={[{ message: '请选择纠纷发生地点', required: true }]}
                            field="addr"
                        >
                            <InputSearch
                                placeholder="选择纠纷发生地的详细地址"
                                searchButton="选择"
                                readOnly={true} // 设置为只读,防止直接编辑
                                onSearch={() => setMapView(true)}
                            />
                        </FormItem>
                    </Col>
                    <Col span={8}>
                        <FormItem
                            label={
                                <div style={{ display: 'flex' }}>
                                    问题属地<div className="must">必填</div>
                                </div>
                            }
                            field="myQuesAddress"
                            rules={[{ message: '请选择问题属地', required: true }]}
                        >
                            <Cascader
                                placeholder="请选择"
                                changeOnSelect={true}
                                options={$$.locationOption()}
                                showSearch
                                onChange={(value, option) => {
                                    if (option) {
                                        props.formRef.current.setFieldsValue({
                                            // queProv: option[0].value,
                                            // queProvName: option[0].label,
                                            // queCity: option[1].value,
                                            // queCityName: option[1].label,
                                            queArea: option[0].value,
                                            queAreaName: option[0].label,
                                            queRoad: (option[1] && option[1].value) || '',
                                            queRoadName: (option[1] && option[1].label) || '',
                                        });
                                    } else {
                                        //清除数据
                                        props.formRef.current.setFieldsValue({
                                            // queProv: undefined,
                                            // queProvName: undefined,
                                            // queCity: undefined,
                                            // queCityName: undefined,
                                            queArea: undefined,
                                            queAreaName: undefined,
                                            queRoad: undefined,
                                            queRoadName: undefined,
                                        });
                                    }
                                }}
                                allowClear
                            />
                        </FormItem>
                    </Col>
                    <Col span={8}>
                        <FormItem label="涉及人数(人)" field="peopleNum">
                            <InputNumber placeholder="请填写" min={1} precision={0} step={1} />
                        </FormItem>
                    </Col>
  return (
    <div className='' style={{ ...props.style }}>
      <Col span={24} style={{ display: 'flex', alignItems: 'center' }}>
        <Space size='small'>
          <div className='MediationInfo-subTitle' style={{ marginTop: '-9px', }}></div><div style={{ display: 'flex' }}><h4>当事人信息</h4></div>
        </Space>
      </Col>
      <div style={{ margin: '16px 0' }}>
        <PersonCard
          isCheck={true}
          data={fakeData}
          handleAdd={handleAdd}
          handleDeleteParty={handleDeleteParty}
          handleEdit={handleEdit}
        />
      </div>
      <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}>
        <Space size='small'>
          <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>纠纷基本情况</h4>
        </Space>
      </Col>
      <Form
        ref={props.formRef}
        layout='vertical'
        requiredSymbol={false}
        scrollToFirstError={true}
        initialValues={{
          caseLevel: '3',
          visitPeopleNum: 1,
          visitTime: getFormattedDateTime(),
          occurTime: getFormattedDateTime(),
          majorStatus: 0,
        }}//默认值
        onValuesChange={props.onValuesChange}
      >
        <Row gutter={[32, 0]}>
          <Col span={8}>
            <FormItem
              label={<div style={{ display: 'flex' }}>
                事项等级
                <Tooltip onClick={() => setApply(true)}>
                  <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px', cursor: 'pointer' }} />
                </Tooltip>
              </div>
              }
              field='caseLevel'
            >
              <Select placeholder='请选择事项等级' allowClear options={$$.options.caseLevelList}>
              </Select>
            </FormItem>
          </Col>
          <Col span={8}>
            <FormItem label='来访时间' field='visitTime'>
              <DatePicker
                style={{ width: '100%' }}
                format='YYYY-MM-DD HH:mm'
                showTime={true}
              />
            </FormItem>
          </Col>
          <Col span={8}>
            {props.canal==='22_00001-1' && (<FormItem rules={[{ message: '请填写来访人数', required: true }]} label={(<div style={{ display: 'flex' }}>来访人数(人)<div className="must">必填</div></div>)} field='visitPeopleNum'>
              <InputNumber
                placeholder='请填写'
                min={1}
                precision={0}
                step={1}
              />
            </FormItem>)}
          </Col>
          <Col span={8}>
            <FormItem
              label={(<div style={{ display: 'flex' }}>纠纷类型<div className="must">必填</div></div>)}
              rules={[{ message: '请选择纠纷类型', required: true }]}
              field='myCaseType'
            >
              <Cascader
                placeholder='请选择'
                options={$$.caseTypeSelect.caseTypeSelect}
                onChange={(value, option) => {
                  if (option) {
                    props.formRef.current.setFieldsValue({
                      caseTypeFirst: option[0].value,
                      caseTypeFirstName: option[0].label,
                      caseType: option[1].value,
                      caseTypeName: option[1].label,
                    })
                  } else {
                    //清除数据
                    props.formRef.current.setFieldsValue({
                      caseTypeFirst: undefined,
                      caseTypeFirstName: undefined,
                      caseType: undefined,
                      caseTypeName: undefined,
                    })
                  }
                }}
                showSearch
                allowClear
              />
            </FormItem>
          </Col>
          <Col span={8}>
            <FormItem
              label={(<div style={{ display: 'flex' }}>纠纷发生时间<div className="must">必填</div></div>)}
              rules={[{ message: '请选择纠纷发生时间', required: true }]}
              field='occurTime'
            >
              <DatePicker
                style={{ width: '100%' }}
                placeholder='请选择'
                format='YYYY-MM-DD HH:mm'
                showTime={true}
              />
            </FormItem>
          </Col>
          <Col span={8}>
            <FormItem
              label={(<div style={{ display: 'flex' }}>纠纷发生地点<div className="must">必填</div></div>)}
              rules={[{ message: '请选择纠纷发生地点', required: true }]}
              field='addr'
            >
              <InputSearch
                placeholder='选择纠纷发生地的详细地址'
                searchButton='选择'
                readOnly={true} // 设置为只读,防止直接编辑
                onSearch={() => setMapView(true)}
              />
            </FormItem>
          </Col>
          <Col span={8}>
            <FormItem
              label={(<div style={{ display: 'flex' }}>问题属地<div className="must">必填</div></div>)}
              field='myQuesAddress'
              rules={[{ message: '请选择问题属地', required: true }]}
            >
              <Cascader
                placeholder='请选择'
                options={$$.locationOption()}
                showSearch
                onChange={(value, option) => {
                  if (option) {
                    props.formRef.current.setFieldsValue({
                      // queProv: option[0].value,
                      // queProvName: option[0].label,
                      // queCity: option[1].value,
                      // queCityName: option[1].label,
                      queArea: option[0].value,
                      queAreaName: option[0].label,
                      queRoad: option[1] && option[1].value || '',
                      queRoadName: option[1] && option[1].label || '',
                    })
                  } else {
                    //清除数据
                    props.formRef.current.setFieldsValue({
                      // queProv: undefined,
                      // queProvName: undefined,
                      // queCity: undefined,
                      // queCityName: undefined,
                      queArea: undefined,
                      queAreaName: undefined,
                      queRoad: undefined,
                      queRoadName: undefined,
                    })
                  }
                }}
                allowClear
              />
            </FormItem>
          </Col>
          <Col span={8}>
            <FormItem label='涉及人数(人)' field='peopleNum'>
              <InputNumber
                placeholder='请填写'
                min={1}
                precision={0}
                step={1}
              />
            </FormItem>
          </Col>
          <Col span={8}>
            <FormItem label='涉及金额(元)' field='amount'>
              <InputNumber
                placeholder='请填写'
                formatter={(value) => {
                  return `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
                }}
                parser={(value) => value.replace(/,/g, '')}
              />
            </FormItem>
          </Col>
          <Col span={24}>
            <FormItem
              label={<div style={{ display: 'flex' }}>
                事项概况
                <Tooltip onClick={() => setVisible(true)}>
                  <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px', cursor: 'pointer' }} />
                </Tooltip>
                <div className="must" style={{ marginLeft: '4px' }}>必填</div>
                <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} />
                <div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} onClick={() => { setScanFile(true); setOcrText('caseDes') }}>识别材料</div>
              </div>
              }
              field='caseDes'
              rules={[{ message: '请填写事项概况', required: true }]}
            >
              <Input.TextArea
                maxLength={2000}
                showWordLimit
                rows={7}
                placeholder='请完整描述事项概况,应具备5要素:发生时间+发生地点+人物情况+事项起因+事项经过'
                wrapperStyle={{ width: '100%' }}
              />
            </FormItem>
          </Col>
          <Col span={24}>
            <FormItem
              label={<div style={{ display: 'flex' }}>
                申请请求
                {/* <Tooltip onClick={() => setApply(true)}>
                    <Col span={8}>
                        <FormItem label="涉及金额(元)" field="amount">
                            <InputNumber
                                placeholder="请填写"
                                formatter={(value) => {
                                    return `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
                                }}
                                parser={(value) => value.replace(/,/g, '')}
                            />
                        </FormItem>
                    </Col>
                    <Col span={24}>
                        <FormItem
                            label={
                                <div style={{ display: 'flex' }}>
                                    事项概况
                                    <Tooltip onClick={() => setVisible(true)}>
                                        <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px', cursor: 'pointer' }} />
                                    </Tooltip>
                                    <div className="must" style={{ marginLeft: '4px' }}>
                                        必填
                                    </div>
                                    <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} />
                                    <div
                                        style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }}
                                        onClick={() => {
                                            setScanFile(true);
                                            setOcrText('caseDes');
                                        }}
                                    >
                                        识别材料
                                    </div>
                                </div>
                            }
                            field="caseDes"
                            rules={[{ message: '请填写事项概况', required: true }]}
                        >
                            <Input.TextArea
                                maxLength={2000}
                                showWordLimit
                                rows={7}
                                placeholder="请完整描述事项概况,应具备5要素:发生时间+发生地点+人物情况+事项起因+事项经过"
                                wrapperStyle={{ width: '100%' }}
                            />
                        </FormItem>
                    </Col>
                    <Col span={24}>
                        <FormItem
                            label={
                                <div style={{ display: 'flex' }}>
                                    申请请求
                                    {/* <Tooltip onClick={() => setApply(true)}>
                  <img src={question1} alt="" style={{ width: '13px', height: '13px', margin:'4px 4px 0px 4px' }} />
                </Tooltip> */}
                <div className="must">必填</div>
                <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} />
                <div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} onClick={() => { setScanFile(true); setOcrText('caseClaim') }}>识别材料</div>
              </div>
              }
              field='caseClaim'
              rules={[{ message: '请填写申请请求', required: true }]}
            >
              <Input.TextArea
                maxLength={500}
                showWordLimit
                rows={7}
                placeholder='希望相关部门如何处理,建议分条描述,如请求1,请求2...'
                wrapperStyle={{ width: '100%' }}
              />
            </FormItem>
          </Col>
          <div style={{ padding: '0px 16px', borderRadius: '2px', display: 'flex', alignItems: 'center' }}>
            <img src={majorStatus_1} alt="" srcset="" />
            <FormItem
              label='是否重大矛盾纠纷'
              style={{ width: '300px', marginBottom: 0 }}
              field='majorStatus'
              layout='horizontal'
              labelCol={{ span: 11 }}
              wrapperCol={{ span: 13 }}
            >
              <RadioGroup options={[{ value: 0, label: '否' }, { value: 1, label: '是' }]} />
            </FormItem>
          </div>
        </Row>
      </Form >
      <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px', marginTop: '20px' }}>
        <Space size='small'>
          <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>事件材料</h4>
        </Space>
      </Col>
      <div style={{ marginBottom: '12px' }}>
        <FileTable
          mainId={props.mainId}
          fileInfoList={props.fileInfoList}
          isReview={false}
          isEdit={props.isEdit ? props.isEdit : false}
          handleSaveList={(list) => {
            props.formRef.current.setFieldValue('fileInfoList', list)
          }}
        />
      </div>
      <DocumentScanner
        visible={scanFile}
        onConfirm={handleConfirm}
        onCancel={handleCancel}
      />
      <Modal
        title={(editData ? '修改' : '添加') + peopleMap[dialogType]}
        visible={addVisabled}
        onOk={() => setAddVisabled(false)}
        onCancel={() => {
          setAddVisabled(false)
          setEditData(null)
        }}
        autoFocus={false}
        focusLock={true}
        footer={null}
        unmountOnExit={true}
        maskClosable={false}
      >
        <ApplyDialog
          dialogType={dialogType}
          onClose={() => setAddVisabled(false)}
          handleAddParty={handleAddParty}
          editData={editData}
          mainId={props.mainId}
          canal={props.canal}
        />
      </Modal>
      <Modal
        title={(editData ? '修改' : '添加') + peopleMap[dialogType]}
        visible={agentVisible}
        onOk={() => setAgentVisible(false)}
        onCancel={() => {
          setAgentVisible(false)
          setEditData(null)
        }}
        autoFocus={false}
        focusLock={true}
        footer={null}
        unmountOnExit={true}
        maskClosable={false}
      >
        <AgentDialog
          handleAddParty={handleAddParty}
          onClose={() => setAgentVisible(false)}
          fakeData={fakeData}
          dialogType={dialogType}
          editData={editData}
          mainId={props.mainId}
        />
      </Modal>
      <Modal
        style={{ width: '1200px' }}
        visible={mapView}
        onCancel={() => setMapView(false)}
        footer={null}
        title='选择纠纷发生地'
        centered
        unmountOnExit={true}
        maskClosable={false}
      >
        <div className="pageTabs">
          <MyTabsNew
            style={{ padding: '0 0 10px', }}
            tabs={[
              { key: '1', label: '手动输入' },
              { key: '2', label: '地图选择' },
            ]}
            activeKey={mediateTab}
            onChange={(activeKey) => {
              setMediateTab(activeKey);
            }}
          />
        </div>
        <div style={{ margin: '12px 0' }}>
          {
            mediateTab == '2' &&
            <Alert
              type='info'
              content={<span>根据纠纷入格要求,手动输入纠纷发生地时,需完整填写区、街镇、村社及具体地点信息</span>}
            />
          }
        </div>
        {
          mediateTab == '2' &&
          <MapView
            selectAdd={(data) => {
              props.formRef.current.setFieldsValue({
                addr: data.addName,
                lng: data.pt.lng,
                lat: data.pt.lat,
              })
              setMapView(false)
            }}
          />
        }
        {
          mediateTab == '1' &&
          <SelectAddr addAdressClick={(data, list) => {
            props.formRef.current.setFieldsValue({
              ...data,
              myQuesAddress: list
            })
            setMapView(false)
          }} />
        }
      </Modal>
      <MattersDetail
        visible={visible}
        onClose={() => setVisible(false)}
      />
      <EventLevelDrawer
        visible={apply}
        onClose={() => setApply(false)}
      />
    </div >
  )
}
                                    <div className="must">必填</div>
                                    <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} />
                                    <div
                                        style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }}
                                        onClick={() => {
                                            setScanFile(true);
                                            setOcrText('caseClaim');
                                        }}
                                    >
                                        识别材料
                                    </div>
                                </div>
                            }
                            field="caseClaim"
                            rules={[{ message: '请填写申请请求', required: true }]}
                        >
                            <Input.TextArea
                                maxLength={500}
                                showWordLimit
                                rows={7}
                                placeholder="希望相关部门如何处理,建议分条描述,如请求1,请求2..."
                                wrapperStyle={{ width: '100%' }}
                            />
                        </FormItem>
                    </Col>
                    <div style={{ padding: '0px 16px', borderRadius: '2px', display: 'flex', alignItems: 'center' }}>
                        <img src={majorStatus_1} alt="" srcset="" />
                        <FormItem
                            label="是否重大矛盾纠纷"
                            style={{ width: '300px', marginBottom: 0 }}
                            field="majorStatus"
                            layout="horizontal"
                            labelCol={{ span: 11 }}
                            wrapperCol={{ span: 13 }}
                        >
                            <RadioGroup
                                options={[
                                    { value: 0, label: '否' },
                                    { value: 1, label: '是' },
                                ]}
                            />
                        </FormItem>
                    </div>
                </Row>
            </Form>
            <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px', marginTop: '20px' }}>
                <Space size="small">
                    <div className="MediationInfo-subTitle" style={{ marginTop: '-9px' }}></div>
                    <h4>事件材料</h4>
                </Space>
            </Col>
            <div style={{ marginBottom: '12px' }}>
                <FileTable
                    mainId={props.mainId}
                    fileInfoList={props.fileInfoList}
                    isReview={false}
                    isEdit={props.isEdit ? props.isEdit : false}
                    handleSaveList={(list) => {
                        props.formRef.current.setFieldValue('fileInfoList', list);
                    }}
                />
            </div>
            <DocumentScanner visible={scanFile} onConfirm={handleConfirm} onCancel={handleCancel} />
            <Modal
                title={(editData ? '修改' : '添加') + peopleMap[dialogType]}
                visible={addVisabled}
                onOk={() => setAddVisabled(false)}
                onCancel={() => {
                    setAddVisabled(false);
                    setEditData(null);
                }}
                autoFocus={false}
                focusLock={true}
                footer={null}
                unmountOnExit={true}
                maskClosable={false}
            >
                <ApplyDialog
                    dialogType={dialogType}
                    onClose={() => setAddVisabled(false)}
                    handleAddParty={handleAddParty}
                    editData={editData}
                    mainId={props.mainId}
                    canal={props.canal}
                />
            </Modal>
            <Modal
                title={(editData ? '修改' : '添加') + peopleMap[dialogType]}
                visible={agentVisible}
                onOk={() => setAgentVisible(false)}
                onCancel={() => {
                    setAgentVisible(false);
                    setEditData(null);
                }}
                autoFocus={false}
                focusLock={true}
                footer={null}
                unmountOnExit={true}
                maskClosable={false}
            >
                <AgentDialog
                    handleAddParty={handleAddParty}
                    onClose={() => setAgentVisible(false)}
                    fakeData={fakeData}
                    dialogType={dialogType}
                    editData={editData}
                    mainId={props.mainId}
                />
            </Modal>
            <Modal
                style={{ width: '1200px' }}
                visible={mapView}
                onCancel={() => setMapView(false)}
                footer={null}
                title="选择纠纷发生地"
                centered
                unmountOnExit={true}
                maskClosable={false}
            >
                <div className="pageTabs">
                    <MyTabsNew
                        style={{ padding: '0 0 10px' }}
                        tabs={[
                            { key: '1', label: '手动输入' },
                            { key: '2', label: '地图选择' },
                        ]}
                        activeKey={mediateTab}
                        onChange={(activeKey) => {
                            setMediateTab(activeKey);
                        }}
                    />
                </div>
                <div style={{ margin: '12px 0' }}>
                    {mediateTab == '2' && (
                        <Alert type="info" content={<span>根据纠纷入格要求,手动输入纠纷发生地时,需完整填写区、街镇、村社及具体地点信息</span>} />
                    )}
                </div>
                {mediateTab == '2' && (
                    <MapView
                        selectAdd={(data) => {
                            props.formRef.current.setFieldsValue({
                                addr: data.addName,
                                lng: data.pt.lng,
                                lat: data.pt.lat,
                            });
                            setMapView(false);
                        }}
                    />
                )}
                {mediateTab == '1' && (
                    <SelectAddr
                        addAdressClick={({ addr, addrNameList, addrList }) => {
                            props.formRef.current.setFieldsValue({
                                addr: addr,
                                myQuesAddress: addrList,
                                queArea: addrList[0],
                                queAreaName: addrNameList[0],
                                queRoad: addrList[1] ? addrList[1] : '',
                                queRoadName: addrNameList[1] ? addrNameList[1] : '',
                            });
                            setMapView(false);
                        }}
                    />
                )}
            </Modal>
            <MattersDetail visible={visible} onClose={() => setVisible(false)} />
            <EventLevelDrawer visible={apply} onClose={() => setApply(false)} />
        </div>
    );
};
export default VisitorRegister;
src/views/register/closeCaseEdit/index.jsx
@@ -2,7 +2,7 @@
 * @Author: dminyi 1301963064@qq.com
 * @Date: 2024-08-09 09:59:43
 * @LastEditors: lwh
 * @LastEditTime: 2025-03-07 14:52:17
 * @LastEditTime: 2025-06-23 18:17:42
 * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx
 * @Description: 来访登记
 */
@@ -267,7 +267,23 @@
                caseLevel: rest.caseLevel ? String(rest.caseLevel) : '',
                fakeData: newParList,
                myCaseType: rest.caseTypeFirst ? [rest.caseTypeFirst, rest.caseType] : undefined,
                myQuesAddress: rest.queRoad ? [rest.queArea, rest.queRoad] : undefined,
                myQuesAddress: (() => {
                    // 构建地址数组的逻辑
                    const addressArray = [];
                    // 如果有区域信息,添加到数组
                    if (rest.queArea && rest.queArea.trim()) {
                        addressArray.push(rest.queArea);
                    }
                    // 如果有道路信息,添加到数组
                    if (rest.queRoad && rest.queRoad.trim()) {
                        addressArray.push(rest.queRoad);
                    }
                    // 如果数组为空,返回undefined,否则返回数组
                    return addressArray.length > 0 ? addressArray : undefined;
                })(),
            };
            formRef.current.setFieldsValue(obj);
            setEditData(obj);
src/views/register/visit/index.jsx
@@ -2,7 +2,7 @@
 * @Author: dminyi 1301963064@qq.com
 * @Date: 2024-08-09 09:59:43
 * @LastEditors: lwh
 * @LastEditTime: 2025-06-13 15:16:34
 * @LastEditTime: 2025-06-23 15:22:52
 * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx
 * @Description: 来访登记
 */
@@ -318,7 +318,8 @@
            if (res.type) {
                // setIsModalResult(res.data);
                let userInfo = $$.getLocal('customerSystemUser');
                let userInfo = $$.getSessionStorage('customerSystemUser');
                console.log(userInfo, 'userInfo');
                setIsModalEventInfo({
                    ...res.data,
                    mediateUnitName: userInfo?.unit || '',
@@ -402,6 +403,10 @@
            link.download = `受理回执书_${new Date().getTime()}.png`;
            link.href = imgData;
            link.click();
            // 同时上传图片到后台
            // await uploadReceiptImage(canvas);
            setIsShowModal(false);
            if (isModalSelfAccept) {
                getRiskResult({ caseId: id, caseText: (isShowModalData.caseDes || '') + '/n' + (isShowModalData.caseClaim || '') });
@@ -429,6 +434,44 @@
        } catch (error) {
            console.error('下载失败:', error);
            Message.error('下载失败,请重试');
        }
    };
    // 上传回执书图片到后台
    const uploadReceiptImage = async (canvas) => {
        try {
            // 将canvas转换为Blob
            canvas.toBlob(async (blob) => {
                // 创建FormData
                const formData = new FormData();
                formData.append('file', blob, `受理回执书_${new Date().getTime()}.png`);
                // 获取上传URL
                const appUrl = $$.appUrl;
                const uploadUrl = `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${id}&ownerId=${id}&ownerType=22_00018-600`;
                // 发送上传请求
                const response = await fetch(uploadUrl, {
                    method: 'POST',
                    headers: {
                        'Authorization': $$.getSessionStorage('customerSystemToken'),
                    },
                    body: formData
                });
                const result = await response.json();
                if (result.code === 0 || result.code === '0') {
                    console.log('回执书上传成功:', result);
                    Message.success('回执书已保存到系统');
                } else {
                    console.error('回执书上传失败:', result);
                    Message.warning('回执书上传失败,但不影响下载');
                }
            }, 'image/png');
        } catch (error) {
            console.error('上传回执书失败:', error);
            Message.warning('回执书上传失败,但不影响下载');
        }
    };
@@ -614,7 +657,7 @@
                                】
                            </p>
                            <p>
                                受理编号:【<u>&nbsp;{isModalEventInfo?.unifiedCode || '-'}&nbsp;</u>】
                                受理编号:【<u>&nbsp;{isModalEventInfo?.citizenEventCode || '-'}&nbsp;</u>】
                            </p>
                            <p>
                                提交日期:【<u>&nbsp;{isModalEventInfo?.reportTime ? $$.myTimeFormat(isModalEventInfo?.reportTime, 'YYYY年MM月DD日') : '-'}&nbsp;</u>
src/views/workDash/index.jsx
@@ -243,10 +243,10 @@
            firstLevel === '1'
                ? ['queCity', 'queArea', 'queRoad', 'queVillage']
                : firstLevel === '2'
                ? ['queArea', 'queRoad', 'queVillage']
                : firstLevel === '3'
                ? ['queRoad', 'queVillage']
                : ['queVillage'];
                    ? ['queArea', 'queRoad', 'queVillage']
                    : firstLevel === '3'
                        ? ['queRoad', 'queVillage']
                        : ['queVillage'];
        let key = keyList[queCodeLength - 1];
        obj[key] = queCode[queCodeLength - 1];
    }
@@ -755,12 +755,12 @@
                list[0].level === '1'
                    ? 'queCity'
                    : list[0].level === '2'
                    ? 'queArea'
                    : list[0].level === '3'
                    ? 'queRoad'
                    : list[0].level === '4'
                    ? 'queVillage'
                    : 'queRoad';
                        ? 'queArea'
                        : list[0].level === '3'
                            ? 'queRoad'
                            : list[0].level === '4'
                                ? 'queVillage'
                                : 'queRoad';
            values.queCode = [list[0].value];
            values.createTime = [
                $$.myMoment().subtract(0, 'months').startOf('month').format('YYYY-MM-DD'),
@@ -819,12 +819,12 @@
                    option.level === '1'
                        ? 'queCity'
                        : option.level === '2'
                        ? 'queArea'
                        : option.level === '3'
                        ? 'queRoad'
                        : option.level === '4'
                        ? 'queVillage'
                        : 'queRoad',
                            ? 'queArea'
                            : option.level === '3'
                                ? 'queRoad'
                                : option.level === '4'
                                    ? 'queVillage'
                                    : 'queRoad',
            }))
        );
    };
@@ -1317,7 +1317,7 @@
                                                </div>
                                            </Space>
                                        </div>
                    <div className="workDash-item-value" style={{ marginTop: '4px' }}>
                                        <div className="workDash-item-value" style={{ marginTop: '4px' }}>
                                            <div style={{ width: '50px' }}></div>
                                            <div style={{ width: '36px' }}></div>
                                            <Space split={<Divider type="vertical" />}>
@@ -1388,7 +1388,11 @@
                                                </div>
                                            </Space>
                                        </div>
                                </div>
                                        <div className="workDash-item-value" style={{ marginTop: '4px' }}>
                                            <div style={{ width: '50px' }}>{data?.totalNum || 0}</div>
                                            <div style={{ width: '36px' }}></div>
                                        </div>
                                    </div>
                                )}
                            </div>
                            <div
@@ -1707,7 +1711,7 @@
                                                    caseTypeLevel > 1
                                                        ? caseTypeList?.map((i) => ({ value: i.caseRate, caseNum: i.caseNum, name: i.caseTypeName, caseType: i.caseType })) || []
                                                        : data?.typeList?.map((i) => ({ value: i.caseRate, caseNum: i.caseNum, name: i.caseTypeName, caseType: i.caseType })) ||
                                                          []
                                                        []
                                                }
                                                onMyLTopChartPie={onMyLTopChartPie}
                                            />
@@ -2167,7 +2171,7 @@
                                    dataIndex: 'createTime',
                                    defaultSortOrder: 'descend',
                                    order: 'ascend',
                                    sorter: { compare: (a, b) => {} },
                                    sorter: { compare: (a, b) => { } },
                                    render: (text) => <div>{$$.dateFormat(text)}</div>,
                                },
                                { title: '事项来源', width: 100, dataIndex: 'canalName' },
@@ -2182,7 +2186,7 @@
                                    width: 100,
                                    dataIndex: 'closeTime',
                                    order: 'ascend',
                                    sorter: { compare: (a, b) => {} },
                                    sorter: { compare: (a, b) => { } },
                                    render: (text) => <span>{$$.dateFormat(text)}</span>,
                                },
                                {
@@ -2840,7 +2844,7 @@
        });
    }, [data]);
    useEffect(() => {});
    useEffect(() => { });
    return <div id="chartLTopPie1" ref={myChartRef} style={{ height: '232px', width: '100%' }} />;
};