| | |
| | | import React, { useEffect, useState, useMemo, useRef } from 'react'; |
| | | import { useNavigate } from 'react-router-dom'; |
| | | import { tab0, tab1, tab2, tab3, tab4, tab5, tab6, allSign, tab1bg } from '@/assets/images'; |
| | | import { aiMainTitle, Matter, applyRecord, transfer, transfer_1, Aimge, examine } from '@/assets/images' |
| | | import TableView from '../../components/TableView'; |
| | | import NewPage from '../../components/NewPage'; |
| | | import TableDraftSearch from '../../components/TableDraftSearch'; |
| | |
| | | import './index.less'; |
| | | import ResponseDetail from './matterDetail/responseDetail'; |
| | | import SupervisingViews from './matterDetail/SupervisingViews'; |
| | | import { AiQuestion } from './visit/component/levelDetail'; |
| | | // import { AiQuestion } from './visit/component/levelDetail'; |
| | | import AiChat from './visit/component/AiChat'; |
| | | import { IconSend } from '@arco-design/web-react/icon'; // 顶部加上 |
| | | const FormItem = Form.Item; |
| | | const TabPane = Tabs.TabPane; |
| | | const { RangePicker } = DatePicker; |
| | |
| | | const [aiLawData, setAiLawData] = useState([]); |
| | | const [caseDetailAi, setCaseDetailAi] = useState({}); |
| | | const [caseClaim, setCaseClaim] = useState(''); |
| | | const [aiResult, setAiResult] = useState(null); // AI分析结果 |
| | | const [caseDes, setCaseDes] = useState(''); // 案件描述 |
| | | |
| | | // AI相关函数 |
| | | const handleAi = () => { |
| | | setCaseDes(''); |
| | | setAiQuestionView(true); |
| | | }; |
| | | |
| | | useEffect(() => { |
| | | getCountData(); |
| | | const visitWorkBenchStore = $$.getSessionStorage('visitWorkBench'); //缓存数据 |
| | | const toKey = $$.getQueryString('tabActivekey'); //跳转的活跃key |
| | | |
| | | // 获取aiResult参数 |
| | | const aiResultParam = $$.getQueryString('aiResult'); |
| | | if (aiResultParam) { |
| | | try { |
| | | const aiResultData = JSON.parse(decodeURIComponent(aiResultParam)); |
| | | setAiResult(aiResultData); |
| | | console.log('获取到AI分析结果:', aiResultData); |
| | | } catch (error) { |
| | | console.error('解析aiResult参数失败:', error); |
| | | } |
| | | } |
| | | |
| | | // 从sessionStorage获取caseDes参数 |
| | | const caseDesFromStorage = sessionStorage.getItem('ai_chat_caseDes'); |
| | | if (caseDesFromStorage) { |
| | | // 将案件描述包装成指定的查询格式 |
| | | const formattedCaseDes = `我有一个案件:${caseDesFromStorage},请给我一些调解策略和相关法条信息`; |
| | | setCaseDes(formattedCaseDes); |
| | | console.log('获取到案件描述:', formattedCaseDes); |
| | | // 使用后立即删除,避免重复使用 |
| | | sessionStorage.removeItem('ai_chat_caseDes'); |
| | | } |
| | | |
| | | setMoutedFlag(true); |
| | | if (visitWorkBenchStore) { |
| | | setTabActivekey(visitWorkBenchStore.tabActivekey); |
| | |
| | | } |
| | | window.addEventListener('beforeunload', handleBeforeUnload); |
| | | }, []); |
| | | |
| | | // 监听caseDes变化,如果有caseDes则自动打开AiChat弹窗 |
| | | useEffect(() => { |
| | | if (caseDes && caseDes.trim()) { |
| | | console.log('检测到案件描述,1秒后自动打开AiChat弹窗:', caseDes); |
| | | // 延迟1秒等页面渲染完毕后再打开弹窗 |
| | | setTimeout(() => { |
| | | setAiQuestionView(true); |
| | | }, 1000); |
| | | } |
| | | }, [caseDes]); |
| | | |
| | | useEffect(() => { |
| | | if (moutedFlag) { |
| | |
| | | </Button> |
| | | </div> |
| | | </Modal> |
| | | <AiQuestion |
| | | visible={AiQuestionView} |
| | | onClose={() => setAiQuestionView(false)} |
| | | aiData={aiData} |
| | | aiLawData={aiLawData} |
| | | caseDetailAi={caseDetailAi} |
| | | caseClaim={caseClaim} |
| | | /> |
| | | {/* 解纷数智人图标 */} |
| | | <div className="gradient-box" onClick={() => handleAi()} style={{ top: '50%', zIndex: 1000 }}> |
| | | <div><img src={Aimge} alt='' style={{ width: '111px', height: '120px' }} /></div> |
| | | <div className="gradient-box-mainTitle">解纷数智人</div> |
| | | <div className="gradient-box-mainTitle"><img src={aiMainTitle} alt='' style={{ width: '14px', height: '14px', marginTop: '4px' }} /></div> |
| | | </div> |
| | | {AiQuestionView && ( |
| | | <div style={{position: 'fixed', top: 0, left: 0, width: '100vw', height: '100vh', background: 'rgba(0,0,0,0.15)', zIndex: 2000, display: 'flex', alignItems: 'center', justifyContent: 'center'}}> |
| | | <div style={{position: 'relative'}}> |
| | | <AiChat user="hugeinfo" onClose={() => { |
| | | setAiQuestionView(false) |
| | | setCaseDes('') |
| | | sessionStorage.removeItem('ai_chat_caseDes'); |
| | | }} initialQuery={caseDes} visible={AiQuestionView} /> |
| | | </div> |
| | | </div> |
| | | )} |
| | | </div> |
| | | </NewPage> |
| | | ); |