|
/*
|
* @Author: dminyi 1301963064@qq.com
|
* @Date: 2024-08-09 09:59:43
|
* @LastEditors: lwh
|
* @LastEditTime: 2025-01-02 10:12:05
|
* @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx
|
* @Description: 来访登记
|
*
|
*/
|
|
import React, { useEffect, useState } from "react";
|
import NewPage from '@/components/NewPage';
|
import "@arco-themes/react-gzzz/css/arco.css";
|
import '../index.less';
|
import { Typography, Steps, Tabs } from '@arco-design/web-react';
|
import { Scrollbars } from "react-custom-scrollbars";
|
import { aiMainTitle, Matter, applyRecord, transfer, transfer_1, Aimge, examine } from '@/assets/images'
|
import MatterDetail from '../matterDetail';
|
import Handle from './component/handle';
|
import RepeatView from './component/RepeatView';
|
import AuditView from './component/AuditView';
|
import { AiQuestion } from '../visit/component/levelDetail';
|
import * as $$ from '@/utils/utility';
|
import ApplyInfo from "../matterDetail/ApplyInfo";
|
|
|
const Step = Steps.Step;
|
const TabPane = Tabs.TabPane;
|
const style = {
|
// textAlign: 'center',
|
// marginTop: 20,
|
};
|
|
function getCaseApi(data) {
|
return $$.ax.request({ urlAi: `case-law/get-case`, typeAi: 'post', service: 'mediate', data });
|
}
|
|
function getLawApi(data) {
|
return $$.ax.request({ urlAi: `case-law/get-law`, typeAi: 'post', service: 'mediate', data });
|
}
|
|
function getTabButton(caseTaskId) {
|
return $$.ax.request({ url: `caseTask/getTabButton?caseTaskId=` + caseTaskId, type: 'get', service: 'mediate' });
|
}
|
|
function getCaseInfoApi(id) {
|
return $$.ax.request({ url: 'caseInfo/getCaseInfo?id=' + id, type: 'get', service: 'mediate' });
|
}
|
|
//创建会话
|
function createAiChatApi() {
|
return $$.ax.request({ urlAi: 'case-law/createAiChat', typeAi: 'get', service: 'mediate' });
|
}
|
|
//获取对话列表
|
function getAiChatMessageListApi(aiConversationId) {
|
return $$.ax.request({ urlAi: `case-law/getAiChatMessageList?aiConversationId=${aiConversationId}`, typeAi: 'get', service: 'mediate' });
|
}
|
|
const Organization = () => {
|
const caseTaskId = $$.getQueryString('caseTaskId')
|
const caseId = $$.getQueryString('caseId')
|
const moutedTab = $$.getQueryString('moutedTab')
|
const [current, setCurrent] = useState(3);
|
const [tabsActive, setTabsActive] = useState('');
|
const [AiQuestionView, setAiQuestionView] = useState(false)
|
const [aiData, setAiData] = useState([])
|
const [aiLawData, setAiLawData] = useState([]);
|
const [caseDetailAi, setCaseDetailAi] = useState({});
|
const [caseClaim, setCaseClaim] = useState('');
|
const [authorData, setAuthorData] = useState({});
|
const [tabsList, setTabsList] = useState([]);
|
const [createAiChatId, setCreateAiChatId] = useState('2409181409361000')
|
const [AiChatList, setAiChatList] = useState([])
|
const [canal, setCanal] = useState();//判断自行排查和大厅来访
|
|
const myTab = [
|
{
|
img: Matter,
|
label: '详情',
|
key: "dslxq"
|
},
|
{
|
img: Matter,
|
label: '事项详情',
|
key: "sxxq"
|
},
|
{
|
img: transfer,
|
label: '事项办理',
|
key: "sxbl",
|
isNeedStep: true,
|
},
|
{
|
img: transfer_1,
|
label: '重复事项',
|
key: "cfsx",
|
isNeedStep: true,
|
},
|
{
|
img: applyRecord,
|
label: '申请记录',
|
key: "sqjl",
|
},
|
{
|
img: examine,
|
label: '联合处置审核',
|
key: 'lhczsh',
|
},
|
]
|
|
useEffect(() => {
|
getCaseInfo(caseId)
|
getAuthor();
|
// getAiChatMessageList()
|
}, [])
|
|
const handleAi = () => {
|
setAiQuestionView(true)
|
}
|
|
const getCase = async (caseDes, caseClaim) => {
|
const res = await getCaseApi({
|
caseDes: caseDes,
|
caseClaim: caseClaim,
|
caseId: caseId
|
})
|
if (res.type) {
|
setAiData(res.data)
|
}
|
}
|
|
const getLaw = async (caseDes, caseClaim) => {
|
const res = await getLawApi({
|
caseDes: caseDes,
|
caseClaim: caseClaim,
|
caseId: caseId
|
})
|
if (res.type) {
|
setAiLawData(res.data)
|
}
|
}
|
|
const getAuthor = async () => {
|
const res = await getTabButton(caseTaskId)
|
if (res.type) {
|
const { tabList } = res.data
|
setAuthorData(res.data)
|
if (tabList.length === 0) {
|
//没有tab就不展示
|
} else {
|
const list = myTab.filter(item => {
|
const flag = tabList.some(result => {
|
if (result.id === item.key) {
|
return true
|
}
|
})
|
return flag
|
}).map(item => {
|
const data = tabList.find(res => res.id == item.key)
|
return {
|
...item,
|
label: data.name
|
}
|
})
|
setTabsList(list)
|
setTabsActive(moutedTab || list[0].key)
|
}
|
}
|
}
|
|
const getCaseInfo = async (id) => {
|
const res = await getCaseInfoApi(id)
|
if (res.type) {
|
let caseDes = res.data.caseDes;
|
let caseClaim = res.data.caseClaim;
|
setCanal(res.data.canal)
|
setCaseDetailAi(caseDes);
|
setCaseClaim(caseClaim)
|
getCase(caseDes, caseClaim);
|
getLaw(caseDes, caseClaim);
|
}
|
}
|
|
//根据id定义组件
|
const getTypeDom = (key) => {
|
if (key === 'sxxq' || key === 'dslxq') {
|
return <MatterDetail hasApplet={true} hasEditBtn={true} authorData={authorData} caseId={caseId} />
|
}
|
if (key === 'sxbl') {
|
return <Handle authorData={authorData} caseId={caseId} caseTaskId={caseTaskId} caseDetailAi={caseDetailAi} canal={canal} />
|
}
|
if (key === 'cfsx') {
|
return <Scrollbars style={{ height: 'calc(100vh - 219px)', backgroundColor: '#ffff' }} autoHide>
|
<div style={{ backgroundColor: '#ffff', margin: '0 16px 0px 16px', padding: '12px' }}>
|
<RepeatView caseId={caseId} />
|
</div>
|
</Scrollbars>
|
}
|
if (key === 'sqjl') {
|
return <ApplyInfo caseId={caseId} />
|
}
|
if (key === 'lhczsh') {
|
return <AuditView authorData={authorData} caseId={caseId} caseTaskId={caseTaskId} />
|
}
|
}
|
|
//创建会话
|
// const createAiChat = async () => {
|
// const res = await createAiChatApi()
|
// if (res.type) {
|
// let data = res.data.aiConversationId
|
// setCreateAiChatId(data)
|
// }
|
// }
|
|
//创建对话
|
const getAiChatMessageList = async () => {
|
const res = await getAiChatMessageListApi(createAiChatId)
|
if (res.type) {
|
setAiChatList(res.data)
|
}
|
}
|
|
//获取智能对话列表
|
|
return (
|
<div style={{ position: 'relative', height: '100vh' }}>
|
<NewPage
|
pageHead={
|
{ breadcrumbData: [{ title: '工作台' }, { title: '事件中心' }], title: '办理反馈' }
|
}
|
>
|
<Tabs
|
onChange={(v) => setTabsActive(v)}
|
className='myTabContent'
|
activeTab={tabsActive}
|
destroyOnHide
|
>
|
{tabsList?.map(item => {
|
return <TabPane
|
key={item.key}
|
title={
|
<span>
|
{tabsActive === item.key && <img src={item.img} alt="" style={{ width: '16px', height: '16px', margin: '-5px 12px 0px 0px' }} />}
|
<span style={{ fontSize: '16px' }}>{item.label}</span>
|
</span>
|
}
|
>
|
{
|
item.isNeedStep && <div style={{ backgroundColor: '#fff', margin: '0px 16px 0px 16px', paddingTop: '16px', paddingLeft: '91px' }}>
|
<Steps type='navigation' current={current}>
|
<Step title='来访登记' disabled />
|
<Step title='事件流转' disabled />
|
<Step title='办理反馈' disabled />
|
<Step title='结案审核' disabled />
|
{canal != '22_00001-3' && <Step title='当事人评价' disabled />}
|
<Step title='结案归档' disabled />
|
</Steps>
|
</div>
|
}
|
{getTypeDom(item.key)}
|
</TabPane>
|
})}
|
</Tabs>
|
</NewPage>
|
<div className="gradient-box" onClick={() => handleAi()}>
|
<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>
|
<AiQuestion
|
visible={AiQuestionView}
|
onClose={() => setAiQuestionView(false)}
|
aiData={aiData}
|
aiLawData={aiLawData}
|
caseDetailAi={caseDetailAi}
|
AiChatList={AiChatList}
|
caseClaim={caseClaim}
|
/>
|
</div>
|
)
|
}
|
|
export default Organization;
|