forked from gzzfw/frontEnd/gzDyh

zhangyongtian
2024-09-11 92e258fd2f911df1e04d81ea847cfacdc7b8b874
gz-customerSystem/src/views/register/matterDetail/FileUpLoad.jsx
@@ -1,11 +1,13 @@
import React, { useState, useEffect } from 'react';
import { Typography, Button } from 'antd';
import { CheckOutlined, } from '@ant-design/icons';
import React, { useState, useRef } from 'react';
import { Button } from 'antd';
import * as $$ from '@/utils/utility';
import { Form, Input, Modal, Upload } from '@arco-design/web-react';
import { IconLink } from '@arco-design/web-react/icon';
import './index.less'
const FormItem = Form.Item;
const appUrl = $$.appUrl;
const DocumentScanner = ({
  visible,
@@ -13,11 +15,12 @@
  onCancel
}) => {
  const formRef = useRef();
  const [scanFile, setScanFile] = useState(false);
  const [scanImage, setScanImage] = useState(false);
  const [scaned, setScaned] = useState(false);
  const [fileView, setFileView] = useState();
  const [scanContent, setScanContent] = useState('');
  const handleUploadChange = (info, currentFile) => {
    if (info.length > 0) {
@@ -29,12 +32,59 @@
    });
  };
  const handleScaned = () => {
    setScaned(true)
    const content = fileView.response.data.ocrResult.wordsResult.join('\n')
    setTimeout(() => {
      console.log(formRef.current, content);
      formRef.current.setFieldValue('scanContent', content)
    }, 0)
    setScanContent(content)
  }
  const handleText = () => {
    onConfirm(scanContent);
    setScanFile(false);
    setScanImage(false);
    setScaned(false);
  }
  return (
    <>
      <Modal style={{ width: '1200px' }} visible={visible} onCancel={onCancel} title='识别上传材料' centered footer={null}>
      <Modal
        // style={{ width: '944px' }}
        visible={scanImage}
        onCancel={() => setScanImage(false)}
        footer={null}
        title='选择识别范围'
        centered
        unmountOnExit={true}
        maskClosable={false}
      >
        <img
          src={fileView?.url}
          alt=""
          style={{
            display: 'block',
            margin: 'auto',
            maxWidth: '100%',
            maxHeight: '100%',
            objectFit: 'contain',
          }}
        />
        <div><Button type="primary" onClick={() => handleScaned()} style={{ marginTop: '20px' }}>开始识别</Button></div>
      </Modal>
      <Modal
        // style={{ width: '1200px' }}
        visible={visible}
        onCancel={onCancel}
        title='识别上传材料'
        centered
        footer={null}
        unmountOnExit={true}
        maskClosable={false}
      >
        <Form
          layout='vertical'
          requiredSymbol={false}
@@ -51,12 +101,12 @@
              // multiple
              limit={1}
              accept='image/*'
              // action='/'
              headers={{ Authorization: $$.getSessionStorage('customerSystemToken') }}
              action={`${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/recognitionText`}
              onDrop={(e) => {
              }}
              tip='支持png、 jpg、pdf等格式文件上传,每次上传大小不超过10M'
              showUploadList={{
                // Please dont remove this comment
                fileIcon: <IconLink style={{ color: '#1D2129' }} />,
              }}
              // onChange={(info, currentFile) => {
@@ -79,32 +129,42 @@
        </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%',
            maxHeight: '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={{  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={() => { onConfirm(); setScanFile(false); setScanImage(false); setScaned(false); }}>使用文字</Button></div>
      </Modal >
      <Modal
        className='scan-modal'
        // style={{ width: '1200px' }}
        wrapStyle={{ zIndex: 1002 }}
        visible={scaned}
        onCancel={() => setScaned(false)}
        footer={null}
        title='识别上传材料'
        centered
        unmountOnExit={true}
        maskClosable={false}
        mountOnEnter={false}
      >
        <Form
          ref={formRef}
          layout='vertical'
          requiredSymbol={false}
          scrollToFirstError={true}
          initialValues={{
          }}//默认值
        >
          <FormItem
            label='识别内容'
            field='scanContent'
          >
            <Input.TextArea
              showWordLimit
              rows={5}
              placeholder=''
              wrapperStyle={{ width: '100%' }}
              onChange={(v) => console.log(v, 'vvvvvv')}
            />
          </FormItem>
          <div style={{ marginTop: '24px' }}><Button type="primary" onClick={() => { handleText() }}>使用文字</Button></div>
        </Form>
      </Modal>
    </>