forked from gzzfw/frontEnd/gzDyh

dminyi
2024-09-12 ccbe1710b9c52b0ca23150b0a9ca763da6e1223c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
 * @Company: hugeInfo
 * @Author: lwh
 * @Date: 2023-12-13 10:40:08
 * @LastEditTime: 2023-12-26 11:38:44
 * @LastEditors: lwh
 * @Version: 1.0.0
 * @Description: 类案对比
 */
import React, { useState, useRef, useEffect } from 'react';
import { useVirtual } from 'react-virtual';
import { Spin, Space } from 'antd';
import { mediationRoom } from '../../../assets/images/icon';
import mediateDynamicStatus from '../../../status/mediateDynamicStatus';
import * as $$ from '../../../utils/utility';
import timer from '../../../utils/timer';
 
function getCaseGuideContrastApi(submitData) {
  return $$.ax.request({ url: `guide/getCaseGuideContrast`, type: 'get', data: submitData, service: 'mediate' });
}
 
const MediateRatio = ({ caseId, guideInfoId, guideId }) => {
 
  const [tag, setTag] = useState('1');
  const [data, setData] = useState({});
  const [spin, setSpin] = useState(false)
 
 
  async function getCaseGuideContrast() {
    setSpin(true)
    global.setSpinning(true);
    const res = await getCaseGuideContrastApi({ caseId, guideInfoId, guideId });
    global.setSpinning(false);
    if (res.type) {
      let newData = res.data || {};
      setData(newData);
      setSpin(false)
      // setSuggestList(newData?.find(i => i.guideName === '类案推荐')?.guideInfoList || [])
 
    }
  }
 
  useEffect(() => {
    getCaseGuideContrast();
  }, []);
 
  function highlightKeywords(text, keywords) {
    const regex = new RegExp(keywords.join('|'), 'gi');
    return text.replace(regex, '<span style="color: red;">$&</span>');
  }
 
  return (
    <div className='mediate-ratio-main' >
      <Spin spinning={spin}>
        {/* tag头部 */}
        < div className='mediate-ratio-main-head' >
          <div onClick={() => setTag('1')} className={`mediate-ratio-main-tag ${tag === '1' && 'mediate-ratio-main-tagActive'}`}>主体信息<br /><span className={`mediate-ratio-main-tag-subtitle ${tag === '1' && 'mediate-ratio-main-tag-subtitle-tagActive'}`}>【{data.similarity || '-'}相似】</span></div>
          {/* <div onClick={() => setTag('2')} className={`mediate-ratio-main-tag ${tag === '2' && 'mediate-ratio-main-tagActive'}`}>纠纷描述<br /><span className={`mediate-ratio-main-tag-subtitle ${tag === '2' && 'mediate-ratio-main-tag-subtitle-tagActive'}`}>【3%相似】</span></div>
        <div onClick={() => setTag('3')} className={`mediate-ratio-main-tag ${tag === '3' && 'mediate-ratio-main-tagActive'}`}>调解请求<br /><span className={`mediate-ratio-main-tag-subtitle ${tag === '3' && 'mediate-ratio-main-tag-subtitle-tagActive'}`}>【3%相似】</span></div>
        <div onClick={() => setTag('4')} className={`mediate-ratio-main-tag ${tag === '4' && 'mediate-ratio-main-tagActive'}`}>争议焦点<br /><span className={`mediate-ratio-main-tag-subtitle ${tag === '4' && 'mediate-ratio-main-tag-subtitle-tagActive'}`}>【3%相似】</span></div> */}
        </div >
        <div className='mediate-ratio-main-content'>
          <div className='mediate-ratio-main-content-l' style={{ overflow: 'auto' }}>
            <div className='mediate-ratio-main-content-l-title'>{data.guideTitle || '-'}</div>
            <div className='mediate-ratio-main-content-l-tip'>对比内容:【主体信息】 | 相似度:{data.similarity || '-'}</div>
            {
              data.guideText ?
                <div dangerouslySetInnerHTML={{ __html: highlightKeywords(data.guideText, data.guideSimilarTextList) }} ></div> : '-'
            }
          </div>
          <div style={{ width: '24px' }}></div>
          <div className='mediate-ratio-main-content-l' style={{ overflow: 'auto' }}>
            <div className='mediate-ratio-main-content-l-title'>本案</div>
            {
              data.caseText ?
                <div dangerouslySetInnerHTML={{ __html: highlightKeywords(data.caseText, data.caseSimilarTextList) }} ></div> : '-'
            }
            {/* <div>{data.caseText || '-'}</div> */}
          </div>
        </div>
 
      </Spin>
    </div >
  )
}
 
 
export default MediateRatio;