forked from gzzfw/frontEnd/gzDyh

dminyi
2024-09-02 564bfb399c4bf4d9a59d7d5d2f2bf56f75f5b220
流转办理
9 files modified
454 ■■■■ changed files
gz-customerSystem/src/api/appUrl.js 85 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/router/router.js 4 ●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/eventFlow/index.jsx 6 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/handleFeedback/component/FileUpLoad.jsx 122 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx 121 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/index.less 1 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/matterDetail/index.jsx 23 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx 88 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/visit/index.jsx 4 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/api/appUrl.js
@@ -2,62 +2,61 @@
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-02-16 11:25:57
 * @LastEditTime: 2024-08-31 10:29:49
 * @LastEditTime: 2024-09-02 10:43:43
 * @LastEditors: dminyi 1301963064@qq.com
 * @Version: 1.0.0
 * @Description: api地址
 */
export const debug = {
    // web服务
    // baseUrl: 'http://gz.hugeinfo.com.cn',
    baseUrl: 'http://b8bmfu.natappfree.cc',
    // baseUrl: 'http://mdqgnh.natappfree.cc',
  // web服务
  // baseUrl: 'http://gz.hugeinfo.com.cn',
  baseUrl: "http://192.168.3.108:9002",
  // baseUrl: 'http://mdqgnh.natappfree.cc',
    // 附件服务
    fileUrl: 'http://b8bmfu.natappfree.cc',
    // fileUrl: 'http://gz.hugeinfo.com.cn',
  // 附件服务
  fileUrl: "http://192.168.3.108:9002",
  // fileUrl: 'http://gz.hugeinfo.com.cn',
  // 文件查看url 后面接附件编号
  fileShowUrl: "/dyh-sys/api/v1/fileInfo/show/",
  // 文件下载url 后面接附件编号
  fileDownUrl: "/dyh-sys/api/v1/fileInfo/down/",
  // 在线文档编辑链接
  fileDocx: "/word/docDraft/showWord",
  // 签章的文档编辑链接
  fileDocx2: "/InsertSeal/Word/AddSeal1/Word1",
    // 文件查看url 后面接附件编号
    fileShowUrl: '/dyh-sys/api/v1/fileInfo/show/',
    // 文件下载url 后面接附件编号
    fileDownUrl: '/dyh-sys/api/v1/fileInfo/down/',
    // 在线文档编辑链接
    fileDocx: '/word/docDraft/showWord',
    // 签章的文档编辑链接
    fileDocx2: '/InsertSeal/Word/AddSeal1/Word1',
    // 不同服务接口type
    mediate: 'dyh-mediate', // dyh-mediate
    cust: 'dyh-cust', // dyh-cust
    oper: 'dyh-oper', // dyh-oper
    sys: 'dyh-sys', // dyh-sys
    disp: 'dyh-disp', //dyh-disp
    utils: 'dyh-utils'
  // 不同服务接口type
  mediate: "dyh-mediate", // dyh-mediate
  cust: "dyh-cust", // dyh-cust
  oper: "dyh-oper", // dyh-oper
  sys: "dyh-sys", // dyh-sys
  disp: "dyh-disp", //dyh-disp
  utils: "dyh-utils",
};
// 正式版
export const web = {
    // web服务
    baseUrl: 'https://zfw-dyh.by.gov.cn',
    // baseUrl: 'http://146.4.99.61:8088/byzfw',
  // web服务
  baseUrl: "https://zfw-dyh.by.gov.cn",
  // baseUrl: 'http://146.4.99.61:8088/byzfw',
    // 附件服务
    fileUrl: 'https://dyh.hugeinfo.com.cn',
  // 附件服务
  fileUrl: "https://dyh.hugeinfo.com.cn",
    // 文件查看url 后面接附件编号
    fileShowUrl: '/dyh-sys/api/v1/fileInfo/show/',
    // 文件下载url 后面接附件编号
    fileDownUrl: '/dyh-sys/api/v1/fileInfo/down/',
    // 在线文档编辑链接
    fileDocx: '/word/docDraft/showWord',
    // 签章的文档编辑链接
    fileDocx2: '/InsertSeal/Word/AddSeal1/Word1',
  // 文件查看url 后面接附件编号
  fileShowUrl: "/dyh-sys/api/v1/fileInfo/show/",
  // 文件下载url 后面接附件编号
  fileDownUrl: "/dyh-sys/api/v1/fileInfo/down/",
  // 在线文档编辑链接
  fileDocx: "/word/docDraft/showWord",
  // 签章的文档编辑链接
  fileDocx2: "/InsertSeal/Word/AddSeal1/Word1",
    // 不同服务接口type
    mediate: 'dyh-mediate', // dyh-mediate
    cust: 'dyh-cust', // dyh-cust
    oper: 'dyh-oper', // dyh-oper
    sys: 'dyh-sys', // dyh-sys
    disp: 'dyh-disp', //dyh-disp
  // 不同服务接口type
  mediate: "dyh-mediate", // dyh-mediate
  cust: "dyh-cust", // dyh-cust
  oper: "dyh-oper", // dyh-oper
  sys: "dyh-sys", // dyh-sys
  disp: "dyh-disp", //dyh-disp
};
gz-customerSystem/src/router/router.js
@@ -2,7 +2,7 @@
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-03-28 11:22:41
 * @LastEditTime: 2024-08-27 10:42:32
 * @LastEditTime: 2024-08-31 17:09:28
 * @LastEditors: dminyi 1301963064@qq.com
 * @Version: 1.0.0
 * @Description: 路由
@@ -215,6 +215,8 @@
                        <Route path="visit" element={<Visit />} />
                        <Route path="visit/eventFlow" element={<EventFlow />} />
                        <Route path="visit/handleFeedback" element={<HandleFeedback />} />
                        {/* 工作流模块 */}
                        <Route path="workflowTemplate" element={<WorkflowTemplate />} />
                        <Route path="workflowTemplate/workflowTemplateEdit" element={<WorkflowTemplateEdit />} />
gz-customerSystem/src/views/register/eventFlow/index.jsx
@@ -2,7 +2,7 @@
 * @Author: dminyi 1301963064@qq.com
 * @Date: 2024-08-09 09:59:43
 * @LastEditors: dminyi 1301963064@qq.com
 * @LastEditTime: 2024-08-28 14:38:20
 * @LastEditTime: 2024-08-31 17:13:53
 * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx
 * @Description: 来访登记
 */
@@ -15,7 +15,7 @@
import { Button, Steps, Tabs, Message } from '@arco-design/web-react';
import { question, register, Matter, transfer } from '@/assets/images'
import EventFlow from './component/EventFlow';
import MatterDetali from '../matterDetail';
import MatterDetail from '../matterDetail';
const Step = Steps.Step;
const TabPane = Tabs.TabPane;
@@ -74,7 +74,7 @@
                                </div>
                            }
                            {tabsActive === '1' &&
                                <MatterDetali />
                                <MatterDetail />
                            }
                            {
                                (tabsActive === '2' && current === 2) && <EventFlow />
gz-customerSystem/src/views/register/handleFeedback/component/FileUpLoad.jsx
@@ -1,92 +1,86 @@
import React, { useState, useEffect } from 'react';
import { Typography, Button } from 'antd';
import { CheckOutlined, } from '@ant-design/icons';
import { Form, Input, Modal,Upload } from '@arco-design/web-react';
import { Form, Input, Modal, Upload } from '@arco-design/web-react';
import { IconLink } from '@arco-design/web-react/icon';
const { TextArea } = Input;
const { Text } = Typography;
const FormItem = Form.Item;
const DocumentScanner = ({
  visible,
  onCancel,
  onConfirm,
  formRef,
  onCancel
}) => {
  const [scanFile, setScanFile] = useState(false);
  const [scanImage, setScanImage] = useState(false);
  const [scaned, setScaned] = useState(false);
  const [fileView, setFileView] = useState(null);
  const [fileView, setFileView] = useState();
  useEffect(() => {
    if (!visible) {
      setScanImage(false);
      setScaned(false);
      setFileView(null);
    }
  }, [visible]);
  const handleUploadChange = (info) => {
    if (info.fileList.length > 0) {
  const handleUploadChange = (info, currentFile) => {
    if (info.length > 0) {
      setScanImage(true);
    }
    setFileView({
      ...info.fileList[0],
      url: URL.createObjectURL(info.fileList[0].originFile),
      ...currentFile,
      url: URL.createObjectURL(currentFile.originFile),
    });
  };
  const handleStartRecognition = () => {
    setScaned(true);
    setScanImage(false);
  };
  const handleUseText = (text) => {
    onConfirm(text);
    onCancel(); // 关闭弹窗
  };
  return (
    <>
      <Modal
        style={{ width: '1200px' }}
        visible={visible && !scanImage && !scaned}
        onCancel={onCancel}
        title='识别上传材料'
        centered
        footer={null}
      >
      <Modal style={{ width: '1200px' }} visible={visible} onCancel={onCancel} title='识别上传材料' centered footer={null}>
        <Form
          ref={formRef}
          layout='vertical'
          requiredSymbol={false}
          initialValues={{
          }}//默认值
          style={{ marginTop: '4px' }}
        >
          <Form.Item label='选择图片' name='file'>
          <FormItem
            label='选择图片'
            field='file'
          >
            <Upload
              drag
              // multiple
              limit={1}
              accept='image/*'
              onDrop={() => {}}
              tip='支持png、jpg、pdf等格式文件上传,每次上传大小不超过10M'
              // action='/'
              onDrop={(e) => {
              }}
              tip='支持png、 jpg、pdf等格式文件上传,每次上传大小不超过10M'
              showUploadList={{
                // Please dont remove this comment
                fileIcon: <IconLink style={{ color: '#1D2129' }} />,
              }}
              // onChange={(info, currentFile) => {
              //   console.log(currentFile, info, 'info', 'currentFile')
              //   if (info.length > 0) {
              //     setScanImage(true);
              //   }
              //   setFileView({
              //     ...currentFile,
              //     url: URL.createObjectURL(currentFile.originFile),
              //   });
              // }}
              onChange={handleUploadChange}
            >
              <Text>点击或者拖拽文件到这里</Text>
            </Upload>
          </Form.Item>
            // onSuccess={() => setScanImage(true)}
            />
            {/* <img src={file?.url} alt=""/> */}
          </FormItem>
        </Form>
      </Modal>
      <Modal
        style={{ width: '944px' }}
        visible={visible && scanImage}
        onCancel={() => setScanImage(false)}
        footer={null}
        title='选择识别范围'
        centered
      >
      <Modal style={{ width: '944px' }} visible={scanImage} onCancel={() => setScanImage(false)} footer={null} title='选择识别范围' centered>
        <img
          src={fileView?.url}
          alt=""
@@ -98,35 +92,21 @@
            objectFit: 'contain',
          }}
        />
        <div style={{ marginTop: '20px' }}>
          <Button type="primary" onClick={handleStartRecognition}>
            开始识别
          </Button>
        </div>
        <div><Button type="primary" onClick={() => setScaned(true)} style={{ marginTop: '20px' }}>开始识别</Button></div>
      </Modal>
      <Modal
        style={{ width: '1200px' }}
        visible={visible && scaned}
        onCancel={() => setScaned(false)}
        footer={null}
        title='识别上传材料'
        centered
      >
        <div style={{ marginTop: '20px', marginBottom: '8px' }}>识别内容</div>
        <TextArea
      <Modal style={{ width: '1200px' }} visible={scaned} onCancel={() => setScaned(false)} footer={null} title='识别上传材料' centered>
        <div style={{  marginBottom: '8px' }}>识别内容</div>
        <Input.TextArea
          showWordLimit
          rows={5}
          placeholder=''
          wrapperStyle={{ width: '100%' }}
          defaultValue='识别内容'
          onChange={(e) => handleUseText(e.target.value)}
          onChange={(v) => console.log(v, 'vvvvvv')}
        />
        <div style={{ marginTop: '24px' }}>
          <Button type="primary" onClick={() => handleUseText('识别内容')}>
            使用文字
          </Button>
        </div>
        <div style={{ marginTop: '24px' }}><Button type="primary" onClick={() => { onConfirm(); setScanFile(false); setScanImage(false); setScaned(false); }}>使用文字</Button></div>
      </Modal>
    </>
  );
};
gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx
@@ -1,7 +1,7 @@
import React, { useState, useRef, useEffect } from 'react';
import { Col, Space, Row, Tooltip, Button } from 'antd';
import { Col, Space, Row, Tooltip } from 'antd';
import { register, fold, down, empty, link } from '@/assets/images';
import { Form, Input, Tabs, Typography, Empty } from '@arco-design/web-react';
import { Form, Input, Tabs, Typography, Empty, Upload, Button, Modal } from '@arco-design/web-react';
import { question1, } from '@/assets/images';
import ProgressStep from '@/components/ProgressStep/VisitStep';
import SelectObjModal from '@/components/SelectObjModal/selectPerson';
@@ -9,6 +9,9 @@
import { scan } from '@/assets/images/icon'
import DocumentScanner from './FileUpLoad'
import * as $$ from '@/utils/utility';
import {
  IconLink,
} from '@arco-design/web-react/icon';
const InputSearch = Input.Search;
@@ -77,7 +80,8 @@
const Handle = () => {
  const [selectedTab, setSelectedTab] = useState('1'); // 默认选中第一个 tab
  const [wantUser, setWantUser] = useState({});
  // const [scanFile, setScanFile] = useState(false);
  const [formView, setFormView] = useState(false);
  const [personView, setPersonView] = useState(false);
  const tabs = [
    { index: '1', label: '承办部门' },
@@ -177,20 +181,20 @@
  const [scannerVisible, setScannerVisible] = useState(false);
  const handleConfirm = (text) => {
    console.log('识别完成:', text);
  const handleConfirm = () => {
    // 处理确认逻辑
    setScannerVisible(false);
  };
  const handleCancel = () => {
    // 处理取消逻辑
    setScannerVisible(false);
  };
  const openScanner = () => {
    setScannerVisible(true);
    formRef.current?.resetFields();
    formRef.current?.setFieldsValue({});
  };
  const onCancel = () => {
    setScannerVisible(false);
  };
@@ -245,7 +249,7 @@
                <FormItem label={<div style={{ display: 'flex' }}>
                  <span style={{ color: '#86909C' }}>经办人</span>
                  <Tooltip>
                    <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px' }} />
                    <img onClick={() => setPersonView(!personView)} src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px' }} />
                  </Tooltip>
                </div>
                }
@@ -309,38 +313,67 @@
                    description='暂无数据'
                  />
                }
                <div className='Form'>
                  <Col span={24} style={{ marginBottom: '8px' }}>
                    <Space size='small'>
                      <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h5>添加办理记录</h5>
                {formView &&
                  <div className='Form'>
                    <Col span={24} style={{ marginBottom: '8px' }}>
                      <Space size='small'>
                        <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h5>添加办理记录</h5>
                      </Space>
                    </Col>
                    <Col span={24}>
                      <FormItem
                        label={<div style={{ display: 'flex' }}>
                          办理意见
                          <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} />
                          <div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} onClick={openScanner}>识别材料</div>
                        </div>
                        }
                        field='caseDes'
                        rules={[{ message: '请填写事项概况', required: true }]}
                      >
                        <Input.TextArea
                          maxLength={2000}
                          showWordLimit
                          rows={5}
                          placeholder='请完整描述事项概况,应具备5要素:发生时间+发生地点+人物情况+事项起因+事项经过'
                          wrapperStyle={{ width: '100%' }}
                        />
                      </FormItem>
                    </Col>
                    <Col span={24}>
                      <FormItem
                        label={<div style={{ display: 'flex' }}>
                          办理附件
                        </div>
                        }
                        field='caseDes'
                        rules={[{ message: '请填写事项概况', required: true }]}
                      >
                        <Upload
                          drag
                          multiple
                          accept='image/*'
                          action='/'
                          onDrop={(e) => {
                          }}
                          tip='支持png、jpg、pdf格式的图片上传,每次上传大小不超过10M'
                          showUploadList={{
                            fileIcon: <IconLink style={{ color: '#1D2129' }} />,
                          }}
                        />
                      </FormItem>
                    </Col>
                    <Space size='middle'>
                      <Button type='primary'>保存</Button>
                      <Button type='secondary'>取消添加</Button>
                    </Space>
                  </Col>
                  <Col span={24}>
                    <FormItem
                      label={<div style={{ display: 'flex' }}>
                        办理意见
                        <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} />
                        <div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} onClick={openScanner}>识别材料</div>
                      </div>
                      }
                      field='caseDes'
                      rules={[{ message: '请填写事项概况', required: true }]}
                    >
                      <Input.TextArea
                        maxLength={2000}
                        showWordLimit
                        rows={5}
                        placeholder='请完整描述事项概况,应具备5要素:发生时间+发生地点+人物情况+事项起因+事项经过'
                        wrapperStyle={{ width: '100%' }}
                      />
                    </FormItem>
                  </Col>
                  </div>
                </div>
                }
              </Col>
            </Form>
            <Space style={{ marginTop: '38px', position: 'absolute', bottom: '4px' }}>
              <Button type="primary" style={{ backgroundColor: '#1A6FB8' }}>添加办理记录</Button>
            <Space style={{ marginTop: '38px', bottom: '4px' }}>
              <Button type="primary" style={{ backgroundColor: '#1A6FB8' }} onClick={() => setFormView(!formView)}>添加办理记录</Button>
              <Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }} >结案申请</Button>
              <Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }}>联合处置申请</Button>
              <Button type='secondary'>返回上级页面</Button>
@@ -409,11 +442,15 @@
        <DocumentScanner
          visible={scannerVisible}
          onCancel={onCancel}
          onConfirm={handleConfirm}
          formRef={formRef}
          onCancel={handleCancel}
        />
      </div >
        <Modal visible={personView} onCancel={() => setPersonView(false)} title='工作人员信息' centered footer={null}>
        </Modal>
      </div>
    </>
  )
gz-customerSystem/src/views/register/index.less
@@ -363,6 +363,7 @@
    border: 1px dashed #1a6fb8;
    border-radius: 10px;
    margin-top: 16px;
    margin-right: 16px;
}
.tabs-container .arco-tabs-header {
gz-customerSystem/src/views/register/matterDetail/index.jsx
@@ -11,7 +11,7 @@
}
export default function MatterDetali() {
export default function MatterDetail() {
  const [fakeData, setFakeData] = useState([{
    "trueName": "王大锤",
    "mobile": "13380313412",
@@ -151,13 +151,14 @@
    if (res.type) {
      let data = res.data
      setInfoData([...fakeData1, {
      setInfoData({
        ...data,
        questionName: data.queProvName + '/' + data.queCityName + '/' + data.queAreaName + '/' + data.queRoadName + '/' + data.queVillageName,
        caseType: data.caseTypeFirstName + '/' + data.caseTypeName
      }])
        questionName: data.queProvName === null ? '-' : data.queProvName + '/' + data.queCityName + '/' + data.queAreaName + '/' + data.queRoadName + '/' + data.queVillageName,
        caseType: data.caseTypeFirstName === null ? '-' : data.caseTypeFirstName + '/' + data.caseTypeName
      })
      setFakeData(data.personList.concat(data.agentList))
    }
  }
@@ -192,11 +193,11 @@
          <Row gutter={[16, 16]}>
            <Col span={8}>
              <div><div className="title-text">事项状态</div></div>
              <div style={{ color: '#1A6FB8' }}>{infoData.statusName || '-'}</div>
              <div style={{ color: '#1A6FB8' }}>{infoData?.statusName || '-'}</div>
            </Col>
            <Col span={16}>
              <div><div className="title-text">事项编号</div></div>
              <div>{infoData.caseId || '-'}</div>
              <div>{infoData?.caseRef || '-'}</div>
            </Col>
            {/*事项等级分为三级,颜色需要做判断*/}
            <Col span={8}>
@@ -279,18 +280,18 @@
            {/*事项等级分为三级,颜色需要做判断*/}
            <Col span={8}>
              <div className="title"><div className="title-text">登记机构</div><img src={question} alt="" style={{ width: '14px', height: '14px', marginTop: '4px', marginLeft: '4px' }} /></div>
              <div>天河区棠下街道综治中心</div>
              <div>{infoData.inputUnitName || '-'}</div>
            </Col>
            <Col span={8}>
              <div><div className="title-text">登记人</div></div>
              <div style={{ display: 'flex' }}>
                <div>李晓明</div>
                <div>{infoData.inputUserName || '-'}</div>
                <img src={register} alt='' style={{ width: '14px', height: '14px', marginLeft: '8px', marginTop: '4px' }} />
              </div>
            </Col>
            <Col span={8}>
              <div ><div className="title-text">登记时间</div></div>
              <div>2024-7-8 10:00</div>
              <div>{infoData.createTime || '-'}</div>
            </Col>
          </Row>
          <Button type='primary' style={{ marginTop: '20px' }}>修改</Button>
gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx
@@ -20,6 +20,7 @@
import MapView from './map'
import { scan } from '@/assets/images/icon'
import { EventLevelDrawer, MattersDetail } from './levelDetail'
import DocumentScanner from '../../handleFeedback/component/FileUpLoad'
const RadioGroup = Radio.Group;// 根据调解案号获取纠纷登记信息
const FormItem = Form.Item;
@@ -319,6 +320,16 @@
    setDialogType(type)
  }
  const handleConfirm = () => {
    // 处理确认逻辑
    setScanFile(false);
  };
  const handleCancel = () => {
    // 处理取消逻辑
    setScanFile(false);
  };
  //添加当事人
  const handleAddParty = (value) => {
    if (value.id) {
@@ -589,78 +600,11 @@
        style={{ marginBottom: '65px' }}
      />
      <Modal style={{ width: '1200px' }} visible={scanFile} onCancel={() => setScanFile(false)} title='识别上传材料' centered footer={null}>
        <Form
          ref={props.formRef}
          layout='vertical'
          requiredSymbol={false}
          initialValues={{
          }}//默认值
          style={{ marginTop: '4px' }}
        >
          <FormItem
            label='选择图片'
            field='file'
          >
            <Upload
              drag
              // multiple
              limit={1}
              accept='image/*'
              // action='/'
              onDrop={(e) => {
              }}
              tip='支持png、 jpg、pdf等格式文件上传,每次上传大小不超过10M'
              showUploadList={{
                // Please dont remove this comment
                fileIcon: <IconLink style={{ color: '#1D2129' }} />,
              }}
              onChange={(info, currentFile) => {
                console.log(currentFile, info, 'info', 'currentFile')
                if (info.length > 0) {
                  setScanImage(true);
                }
                setFileView({
                  ...currentFile,
                  url: URL.createObjectURL(currentFile.originFile),
                });
              }}
              onSuccess={() => setScanImage(true)}
            />
            {/* <img src={file?.url} alt=""/> */}
          </FormItem>
        </Form>
      </Modal>
      <Modal style={{ width: '944px' }} visible={scanImage} onCancel={() => setScanImage(false)} footer={null} title='选择识别范围' centered>
        <img
          src={fileView?.url}
          alt=""
          style={{
            display: 'block',       // 确保图片在容器中居中显示
            margin: 'auto',         // 居中显示
            maxWidth: '100%',       // 图片最大宽度为容器宽度的100%
            maxHeight: '100%',      // 图片最大高度为容器高度的100%
            objectFit: 'contain',   // 图片缩放以适应容器,保持原图比例
          }}
        />
        <div><Button type="primary" onClick={() => setScaned(true)} style={{ marginTop: '20px' }}>开始识别</Button></div>
      </Modal>
      <Modal style={{ width: '1200px' }} visible={scaned} onCancel={() => setScaned(false)} footer={null} title='识别上传材料' centered>
        <div style={{ marginTop: '20px', marginBottom: '8px' }}>识别内容</div>
        <Input.TextArea
          showWordLimit
          rows={5}
          placeholder=''
          wrapperStyle={{ width: '100%' }}
          defaultValue='识别内容'
          onChange={(v) => console.log(v, 'vvvvvv')}
        />
        <div style={{ marginTop: '24px' }}><Button type="primary" onClick={() => { setScanFile(false); setScanImage(false); setScaned(false) }}>使用文字</Button></div>
      </Modal>
      <DocumentScanner
        visible={scanFile}
        onConfirm={handleConfirm}
        onCancel={handleCancel}
      />
      <Modal style={{ width: '512px' }} visible={upload} onCancel={() => setUpLoad(false)} footer={null} title='上传材料' centered>
        <div style={{ paddingTop: '8px' }}>
          <Row gutter={[30, 24]}>
gz-customerSystem/src/views/register/visit/index.jsx
@@ -2,7 +2,7 @@
 * @Author: dminyi 1301963064@qq.com
 * @Date: 2024-08-09 09:59:43
 * @LastEditors: dminyi 1301963064@qq.com
 * @LastEditTime: 2024-08-31 16:52:26
 * @LastEditTime: 2024-09-02 11:40:22
 * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx
 * @Description: 来访登记
 */
@@ -36,7 +36,7 @@
    const formRef = useRef();
    const [isReview, setIsReview] = useState(false);//预览页面控制
    const [current, setCurrent] = useState(1);
    const [current, setCurrent] = useState(3);
    //提交信息,需要校验规则
    const handleSubmit = async () => {