forked from gzzfw/frontEnd/gzDyh

dminyi
2024-09-08 d773483d402b983f67822c434546009bd0f1e2e9
ai对接
1 files added
4 files modified
160 ■■■■■ changed files
gz-customerSystem/src/router/router.js 5 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/handleFeedback/index.jsx 51 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/index.jsx 10 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/index.less 9 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/visit/component/levelDetail.jsx 85 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/router/router.js
@@ -2,7 +2,7 @@
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-03-28 11:22:41
 * @LastEditTime: 2024-09-07 18:23:05
 * @LastEditTime: 2024-09-08 15:15:51
 * @LastEditors: dminyi 1301963064@qq.com
 * @Version: 1.0.0
 * @Description: 路由
@@ -144,6 +144,8 @@
import FileMessage from "../views/register/matterDetail/fileMessage";
//结案审核
import ClosingReview from "../views/register/closingReview";
//工作台
import VisitWorkBench from "../views/register";
import Test from "../views/test";
@@ -221,6 +223,7 @@
                        <Route path="visit/handleFeedback/:caseTaskId?/:caseId?" element={<HandleFeedback />} />
                        <Route path="visit/fileMessage" element={<FileMessage />} />
                        <Route path="visit/closingReview/:caseTaskId?/:caseId?" element={<ClosingReview />}/>
                        <Route path="visit/visitWorkBench" element={<VisitWorkBench />}/>
                        
                        
gz-customerSystem/src/views/register/handleFeedback/index.jsx
@@ -3,7 +3,7 @@
 * @Author: dminyi 1301963064@qq.com
 * @Date: 2024-08-09 09:59:43
 * @LastEditors: dminyi 1301963064@qq.com
 * @LastEditTime: 2024-09-08 11:17:47
 * @LastEditTime: 2024-09-08 11:53:51
 * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx
 * @Description: 来访登记
 * 
@@ -38,9 +38,7 @@
    return $$.ax.request({ urlAi: `case-law/get-law`, typeAi: 'post', service: 'mediate', data });
}
function getCaseDetailApi(data) {
    return $$.ax.request({ urlAi: `case-law/get-case-detail`, typeAi: 'get', service: 'mediate', data });
}
function getTabButton(data) {
    return $$.ax.request({ url: `caseTask/getTabButton`, type: 'get', service: 'mediate', data });
@@ -51,7 +49,7 @@
const Organization = () => {
    const routeData = useParams();
    const [current, setCurrent] = useState(3);
    const [tabsActive, setTabsActive] = useState('1');
    const [tabsActive, setTabsActive] = useState('sxxq');
    const [AiQuestionView, setAiQuestionView] = useState(false)
    const [aiData, setAiData] = useState([])
    const [aiLawData, setAiLawData] = useState([])
@@ -63,23 +61,18 @@
        {
            img: Matter,
            label: '事项详情',
            key: '1'
            key: "sxxq"
        },
        {
            img: transfer,
            label: '流转办理',
            key: '2',
            label: '事项办理',
            key: "sxbl",
            isNeedStep: true,
        },
        {
            img: applyRecord,
            label: '申请记录',
            key: '3',
        },
        {
            img: Audit,
            label: '审核',
            key: '4',
            key: "sqjl",
        },
    ]
@@ -110,15 +103,7 @@
        }
    }
    const getCaseDetail = async () => {
        const res = await getCaseDetailApi({
            caseId: '10086',
            type: '1'
        })
        if (res.type) {
            setCaseDetail(res.data)
        }
    }
    const getAuthor = async () => {
        const res = await getTabButton({
@@ -126,6 +111,7 @@
        })
        if (res.type) {
            const { tabList } = res.data
            console.log(tabList, 'tabList1')
            setAuthorData(res.data)
            if (tabList.length === 0) {
                //没有tab就不展示
@@ -139,6 +125,7 @@
                    })
                    return flag
                }))
                console.log(tabsList, 'tabsList2')
                setTabsActive(tabList[0].id)
            }
        }
@@ -148,10 +135,9 @@
    useEffect(() => {
        // getAuthor();
        // getCase();
        // getLaw();
        // getCaseDetail();
        getAuthor();
        getCase();
        getLaw();
    }, [])
@@ -165,11 +151,11 @@
                }
            >
                <Tabs
                    defaultActiveTab='1'
                    defaultActiveTab='sxxq'
                    onChange={(v) => setTabsActive(v)}
                    className='myTabContent'
                >
                    {myTab?.map(item => {
                    {tabsList?.map(item => {
                        return <TabPane
                            key={item.key}
                            title={
@@ -191,16 +177,16 @@
                                    </Steps>
                                </div>
                            }
                            {tabsActive === '1' &&
                            {tabsActive === 'sxxq' &&
                                <MatterDetail hasApplet={true} hasEditBtn={true} />
                            }
                            {
                                tabsActive === '2' && <Typography.Paragraph style={style}>
                                tabsActive === 'sxbl' && <Typography.Paragraph style={style}>
                                    <Handle />
                                </Typography.Paragraph>
                            }
                            {
                                tabsActive === '3' && <Typography.Paragraph style={style}>
                                tabsActive === 'sqjl' && <Typography.Paragraph style={style}>
                                    <AuditView />
                                </Typography.Paragraph>
                            }
@@ -217,7 +203,6 @@
                onClose={() => setAiQuestionView(false)}
                aiData={aiData}
                aiLawData={aiLawData}
                caseDetail={caseDetailView}
            />
        </div>
    )
gz-customerSystem/src/views/register/index.jsx
New file
@@ -0,0 +1,10 @@
import React from 'react';
const VisitWorkBench = () => {
  return (
    <>
    </>
  )
}
export default VisitWorkBench;
gz-customerSystem/src/views/register/index.less
@@ -719,6 +719,7 @@
    flex: 1 1 0%;
    background-color: rgb(242, 243, 245);
    height: 100vh;
    overflow-y: auto;
    &-case {
        display: flex;
@@ -745,20 +746,28 @@
            padding: 8px 12px;
            border-radius: 8px;
            margin-bottom: 8px;
            margin-right: 16px;
            align-items: center;
            &-type {
                border: 1px solid #1A6FB8;
                padding: 0px 8px;
                color: #1A6FB8;
                border-radius: 4px;
                width: 79px;
                height: 24px;
            }
            &-name{
                margin: 0px 16px 0px 8px;
                max-width: 828px;
                width: fit-content;
            }
            &-btn{
                color: #1A6FB8;
                width: 30px;
            }
        }
    }
gz-customerSystem/src/views/register/visit/component/levelDetail.jsx
@@ -2,13 +2,19 @@
 * @Author: dminyi 1301963064@qq.com
 * @Date: 2024-08-27 16:47:12
 * @LastEditors: dminyi 1301963064@qq.com
 * @LastEditTime: 2024-09-08 10:36:03
 * @LastEditTime: 2024-09-08 15:06:05
 * @FilePath: \gzDyh\gz-customerSystem\src\views\register\visit\component\levelDetail.jsx
 * @Description: 右抽屉提示
 */
import React, { useEffect, useState } from 'react';
import MyDrawer from '@/components/MyDrawer';
import { caselogo } from '@/assets/images';
import * as $$ from '@/utils/utility';
function getCaseDetailApi(data) {
    return $$.ax.request({ urlAi: `case-law/get-case-detail`, typeAi: 'get', service: 'mediate', data });
}
const EventLevelDrawer = ({ visible, onClose }) => {
@@ -104,7 +110,7 @@
}
const AiQuestion = ({ visible, onClose, aiData,aiLawData,caseDetailView }) => {
const AiQuestion = ({ visible, onClose, aiData, aiLawData }) => {
    const [list, setList] = useState([
        // {
        //     id: '1',
@@ -122,6 +128,10 @@
        //     name: '曾某某诉某网络科技公司劳动争议案'
        // },
    ])
    const [caseDetailView, setCaseDetailView] = useState({})
    const [modalType, setModalType] = useState('case')
    const [lawDetail, setLawDetail] = useState({})
    const [layerList, setLayerList] = useState([
        {
@@ -139,25 +149,47 @@
    ])
    const [caseDetail, setCaseDetail] = useState(false)
    const toggleView = (type,id) => {
        console.log(id, 'iddddddd')
    const toggleView = (type, id) => {
        setCaseDetail(true)
        if(type==='case'){
            setCaseDetail(true)
        setModalType(type)
        if (type === 'case') {
            getCaseDetail(id);
        }
        if (type === 'law') {
            console.log(id,'idddddd')
            const lawItem = aiLawData.find(item => item.lawInfoId === id)
            console.log(lawItem,'lawItem')
            setLawDetail(lawItem)
        }
    };
    const caseDetailOnClose = () => {
        setCaseDetail(false)
    }
    const getCaseDetail = async (id) => {
        const res = await getCaseDetailApi({
            caseId: id,
            type: '1'
        })
        if (res.type) {
            setCaseDetailView(res.data)
        }
    }
    useEffect(() => {
        setList(aiData)
        setLayerList(aiLawData)
    }, [aiData,aiLawData])
        setList(aiData);
        setLayerList(aiLawData);
    }, [aiData, aiLawData])
    return (
        <>
@@ -186,7 +218,7 @@
                                    <div className='aiBox-list-item'>
                                        <div className='aiBox-list-item-type'>{item.caseType === 1 ? '典型案例' : '相似案例'}</div>
                                        <div className='aiBox-list-item-name'>{item.caseName}</div>
                                        <div className='aiBox-list-item-btn' onClick={() => toggleView('case',item.id)}>查看</div>
                                        <div className='aiBox-list-item-btn' onClick={() => toggleView('case', item.caseId)}>查看</div>
                                    </div>
                                ))}
                            </div>
@@ -198,7 +230,7 @@
                                    <div className='aiBox-list-item'>
                                        <div className='aiBox-list-item-type'>相关法条</div>
                                        <div className='aiBox-list-item-name'>{item.lawTitle}{item.lawIndex}</div>
                                        <div className='aiBox-list-item-btn' onClick={() => toggleView('law',item.lawInfoId)}>查看</div>
                                        <div className='aiBox-list-item-btn' onClick={() => toggleView('law', item.lawInfoId)}>查看</div>
                                    </div>
                                ))}
                            </div>
@@ -211,20 +243,31 @@
                <MyDrawer
                    visible={caseDetail}
                    onClose={caseDetailOnClose}
                    title="查看相关案例"
                    title={modalType === 'case'?"查看相关案例":"查看相关法条"}
                    width={400}
                    style={{ position: 'absolute' }}
                    bodyStyle={{ marginTop: '-8px' }}
                    titleBefore={true}
                >
                    <div className='layerDetail'>
                        <div className='layerDetail-title'>参考案例</div>
                        <div className='layerDetail-name'>唐某某诉重庆某工业有限公司劳动合同纠纷案</div>
                        <div className='layerDetail-littleTitle'>智能摘要</div>
                        <div className='layerDetail-content'>法院生效裁判认为,本案是肖某某要求某工业公司支付经济补偿金,原审法院已经确认某工业公司存在未足额支付肖某某工资、未休年休假工资情形,故依照《中华人民共和国劳动合同法》(以下简称劳动合同法)第三十八条第一款的规定,某工业公司应当支付解除合同的经济补偿金。</div>
                    </div>
                    {
                        modalType === 'case' &&
                        <div className='layerDetail'>
                            <div className='layerDetail-title'>参考案例</div>
                            <div className='layerDetail-name'>{caseDetailView?.caseTitle || '-'}</div>
                            <div className='layerDetail-littleTitle'>基本案情</div>
                            <div className='layerDetail-content'>{caseDetailView?.caseDesc || '-'}</div>
                            <div className='layerDetail-littleTitle'>结果</div>
                            <div className='layerDetail-content'>{caseDetailView?.caseClaim || '-'}</div>
                        </div>
                    }
                    {
                        modalType === 'law' &&
                        <div className='layerDetail'>
                            <div className='layerDetail-title'>{lawDetail?.lawIndex}&nbsp;&nbsp;{lawDetail?.lawTitle}</div>
                            <div className='layerDetail-littleTitle'>{lawDetail.lawDesc}</div>
                        </div>
                    }
                </MyDrawer>
            </div>
        </>