From 4ce904268ef0738537de05e5df18e54768f15575 Mon Sep 17 00:00:00 2001 From: dminyi <1301963064@qq.com> Date: Tue, 10 Sep 2024 16:54:37 +0800 Subject: [PATCH] Merge branch 'master' of http://120.79.193.119:9090/r/gzzfw/frontEnd/gzDyh into master --- gz-customerSystem/src/views/register/matterDetail/RateModule.jsx | 41 + gz-customerSystem/src/views/register/matterDetail/RegisInfoModule.jsx | 38 + gz-customerSystem/src/api/appUrl.js | 4 gz-customerSystem/src/views/register/matterDetail/fileMessage.jsx | 799 +++++------------------------- gz-customerSystem/src/views/register/index.jsx | 21 gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx | 4 gz-customerSystem/src/views/register/matterDetail/index.jsx | 2 gz-customerSystem/src/views/register/visit/component/previewTable.jsx | 107 +++ gz-customerSystem/src/views/register/index.less | 4 gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx | 5 gz-customerSystem/src/views/register/matterDetail/FileTable.jsx | 1 gz-customerSystem/src/views/register/visit/preview.jsx | 478 ++++++++---------- gz-customerSystem/src/views/register/closingReview/index.jsx | 15 gz-customerSystem/src/views/register/handleFeedback/index.jsx | 14 gz-customerSystem/src/views/register/eventFlow/index.jsx | 6 gz-customerSystem/src/views/register/visit/index.jsx | 7 16 files changed, 554 insertions(+), 992 deletions(-) diff --git a/gz-customerSystem/src/api/appUrl.js b/gz-customerSystem/src/api/appUrl.js index 8045a55..7424d14 100644 --- a/gz-customerSystem/src/api/appUrl.js +++ b/gz-customerSystem/src/api/appUrl.js @@ -10,11 +10,11 @@ export const debug = { // web服务 // baseUrl: 'http://gz.hugeinfo.com.cn', - baseUrl: "http://192.168.3.108:9002", + baseUrl: "http://6dycet.natappfree.cc", // baseUrl: 'http://mdqgnh.natappfree.cc', // 附件服务 - fileUrl: "http://192.168.3.108:9002", + fileUrl: "http://6dycet.natappfree.cc", // fileUrl: 'http://gz.hugeinfo.com.cn', // 文件查看url 后面接附件编号 diff --git a/gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx b/gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx index a43ce32..5b6f465 100644 --- a/gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx +++ b/gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx @@ -6,6 +6,7 @@ import { Scrollbars } from "react-custom-scrollbars"; import ReviewProgress from './ReviewProgress'; import * as $$ from '@/utils/utility'; +import { useNavigate } from 'react-router-dom'; const RadioGroup = Radio.Group; const FormItem = Form.Item; @@ -33,6 +34,7 @@ } export default function ReviewExamine(props) { + const navigate = useNavigate(); const formRef = useRef(); const [result, setResult] = useState() const [infoData, setInfoData] = useState({}); @@ -109,7 +111,7 @@ const res = await submit(data) if (res.type) { $$.infoSuccess({ content: '提交成功!' }); - } + navigate(`/mediate/visit/visitWorkBench`) } } //删除文件 diff --git a/gz-customerSystem/src/views/register/closingReview/index.jsx b/gz-customerSystem/src/views/register/closingReview/index.jsx index 684c094..a9dfa4f 100644 --- a/gz-customerSystem/src/views/register/closingReview/index.jsx +++ b/gz-customerSystem/src/views/register/closingReview/index.jsx @@ -12,8 +12,8 @@ const TabPane = Tabs.TabPane; -function getTabButton(data) { - return $$.ax.request({ url: `caseTask/getTabButton`, type: 'get', service: 'mediate', data }); +function getTabButton(caseTaskId) { + return $$.ax.request({ url: `caseTask/getTabButton?caseTaskId=${caseTaskId}`, type: 'get', service: 'mediate' }); } const myTab = [ @@ -34,6 +34,8 @@ }, ] const ClosingReview = () => { + const caseId = $$.getQueryString('caseId') + const caseTaskId = $$.getQueryString('caseTaskId') const routeData = useParams(); const [authorData, setAuthorData] = useState({}); const [tabsList, setTabsList] = useState([]); @@ -41,13 +43,12 @@ useEffect(() => { getAuthor() + console.log(caseId,caseTaskId,'caseId','caseTaskId') }, []) //获取权限tab和按钮权限 const getAuthor = async () => { - const res = await getTabButton({ - caseTaskId: routeData.caseTaskId - }) + const res = await getTabButton(caseTaskId) if (res.type) { const { tabList } = res.data setAuthorData(res.data) @@ -70,13 +71,13 @@ //根据id定义组件 const getTypeDom = (key) => { if (key === 'dslxq' || key === 'sxxq') { - return <EventFlow authorData={authorData} caseId={routeData.caseId} /> + return <EventFlow authorData={authorData} caseId={caseId} /> } if (key === 'sqjl') { return <ApplyInfo /> } if (key === 'jash') { - return <ReviewExamine caseTaskId={routeData.caseTaskId} caseId={routeData.caseId} /> + return <ReviewExamine caseTaskId={caseTaskId} caseId={caseId} /> } } diff --git a/gz-customerSystem/src/views/register/eventFlow/index.jsx b/gz-customerSystem/src/views/register/eventFlow/index.jsx index 36b134a..4257ef1 100644 --- a/gz-customerSystem/src/views/register/eventFlow/index.jsx +++ b/gz-customerSystem/src/views/register/eventFlow/index.jsx @@ -1,10 +1,10 @@ -import React, { useState, useRef, Fragment, useEffect } from "react"; +import React, { useState, useEffect } from "react"; import NewPage from '@/components/NewPage'; import * as $$ from '@/utils/utility'; import "@arco-themes/react-gzzz/css/arco.css"; import '../index.less'; import { Steps, Tabs } from '@arco-design/web-react'; -import { examine, Matter, transfer, applyRecord } from '@/assets/images' +import { examine, Matter, applyRecord } from '@/assets/images' import EventFlow from './component/EventFlow'; import Examine from "./component/Examine"; import ApplyInfo from "../matterDetail/ApplyInfo"; @@ -59,7 +59,7 @@ //获取权限tab和按钮权限 const getAuthor = async () => { - console.log(routeData, 'routeData') + console.log(caseTaskId, caseId) const res = await getTabButton({ caseTaskId: caseTaskId }) diff --git a/gz-customerSystem/src/views/register/handleFeedback/index.jsx b/gz-customerSystem/src/views/register/handleFeedback/index.jsx index 431fa9e..99f4559 100644 --- a/gz-customerSystem/src/views/register/handleFeedback/index.jsx +++ b/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-10 09:16:47 + * @LastEditTime: 2024-09-10 16:22:30 * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx * @Description: 来访登记 * @@ -40,8 +40,8 @@ -function getTabButton(data) { - return $$.ax.request({ url: `caseTask/getTabButton`, type: 'get', service: 'mediate', data }); +function getTabButton(caseTaskId) { + return $$.ax.request({ url: `caseTask/getTabButton?caseTaskId=` + caseTaskId, type: 'get', service: 'mediate' }); } @@ -108,9 +108,7 @@ const getAuthor = async () => { - const res = await getTabButton({ - caseTaskId: caseTaskId - }) + const res = await getTabButton(caseTaskId) if (res.type) { const { tabList } = res.data console.log(tabList, 'tabList1') @@ -180,11 +178,11 @@ </div> } {tabsActive === 'sxxq' && - <MatterDetail hasApplet={true} hasEditBtn={true} authorData={authorData} caseId={caseId}/> + <MatterDetail hasApplet={true} hasEditBtn={true} authorData={authorData} caseId={caseId} /> } { tabsActive === 'sxbl' && <Typography.Paragraph style={style}> - <Handle authorData={authorData} caseId={caseId} caseTaskId={caseTaskId}/> + <Handle authorData={authorData} caseId={caseId} caseTaskId={caseTaskId} /> </Typography.Paragraph> } { diff --git a/gz-customerSystem/src/views/register/index.jsx b/gz-customerSystem/src/views/register/index.jsx index f870fc7..c6bd0be 100644 --- a/gz-customerSystem/src/views/register/index.jsx +++ b/gz-customerSystem/src/views/register/index.jsx @@ -2,7 +2,7 @@ * @Author: dminyi 1301963064@qq.com * @Date: 2024-09-08 15:14:12 * @LastEditors: dminyi 1301963064@qq.com - * @LastEditTime: 2024-09-10 15:54:01 + * @LastEditTime: 2024-09-10 16:54:28 * @FilePath: \gzDyh\gz-customerSystem\src\views\register\index.jsx * @Description: 工作台 */ @@ -13,6 +13,7 @@ import { Space } from 'antd'; import { Tabs, Typography, Radio } from '@arco-design/web-react'; import * as $$ from '@/utils/utility'; + const TabPane = Tabs.TabPane; @@ -496,8 +497,8 @@ width: 180, render: (text, record) => ( <Space style={{ color: '#1A6FB8' }}> - <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div> - </Space> + <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> + </Space> ), }, ]; @@ -552,7 +553,7 @@ width: 180, render: (text, record) => ( <Space style={{ color: '#1A6FB8' }}> - <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div> + <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> <div onClick={() => handleSign(record.caseId, record.ownerId)}>签收</div> </Space> ), @@ -609,7 +610,7 @@ width: 180, render: (text, record) => ( <Space style={{ color: '#1A6FB8' }}> - <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div> + <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> <div>签收</div> </Space> ), @@ -665,7 +666,7 @@ width: 180, render: (text, record) => ( <Space style={{ color: '#1A6FB8' }}> - <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div> + <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> <div onClick={() => navigate(`/mediate/visit/eventFlow?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>处理</div> </Space> ), @@ -721,7 +722,7 @@ width: 180, render: (text, record) => ( <Space style={{ color: '#1A6FB8' }}> - <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div> + <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> <div onClick={() => navigate(`/mediate/visit/eventFlow?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div> </Space> ), @@ -796,7 +797,7 @@ width: 180, render: (text, record) => ( <Space> - <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer', color: '#1A6FB8' }}>详情</div> + <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> <div onClick={() => navigate(`/mediate/visit/handleFeedback?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer', color: '#1A6FB8' }}>处理</div> </Space> ), @@ -859,7 +860,7 @@ width: 180, render: (text, record) => ( <Space> - <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div> + <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> {/* <div onClick={() => navigate(`/mediate/visit/handleFeedback?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div> */} {(direction === '回退审核' || direction === '上报审核') && <div onClick={() => navigate(`/mediate/visit/eventFlow?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div> @@ -1007,7 +1008,7 @@ render: (text, record) => ( <Space style={{ color: '#1A6FB8' }}> <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> - <div onClick={() => navigate(`/mediate/visit/eventFlow/caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>处理</div> + <div onClick={() => navigate(`/mediate/visit/closingReview?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>处理</div> </Space> ), }, diff --git a/gz-customerSystem/src/views/register/index.less b/gz-customerSystem/src/views/register/index.less index 97b121f..71d05d2 100644 --- a/gz-customerSystem/src/views/register/index.less +++ b/gz-customerSystem/src/views/register/index.less @@ -88,7 +88,7 @@ width: 14px; height: 14px; margin-right: 4px; - margin-top: 4px; + margin-top: -2px; } &-register { @@ -141,7 +141,7 @@ align-items: center; justify-content: space-between; box-shadow: 0px -1px 2px 0px rgba(0, 0, 0, 0.25); - z-index: 1; + z-index: 2; } &-hasTabPage { diff --git a/gz-customerSystem/src/views/register/matterDetail/FileTable.jsx b/gz-customerSystem/src/views/register/matterDetail/FileTable.jsx index f1cc458..d85e8ed 100644 --- a/gz-customerSystem/src/views/register/matterDetail/FileTable.jsx +++ b/gz-customerSystem/src/views/register/matterDetail/FileTable.jsx @@ -342,7 +342,6 @@ size="small" rowKey="ownerType" bordered={true} - style={{ marginBottom: '65px' }} scroll={{ x: 1300 }} /> <Modal diff --git a/gz-customerSystem/src/views/register/matterDetail/RateModule.jsx b/gz-customerSystem/src/views/register/matterDetail/RateModule.jsx new file mode 100644 index 0000000..5233d61 --- /dev/null +++ b/gz-customerSystem/src/views/register/matterDetail/RateModule.jsx @@ -0,0 +1,41 @@ +import React, { Fragment } from 'react' +import { Row, Col, Space } from 'antd'; +import { Rate } from '@arco-design/web-react'; + +export default function RateModule(props) { + return ( + <Fragment> + <Col span={24} style={{ display: 'flex', alignItems: 'center', margin: '12px 0px 4px 0px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>当事人评价</h4> + </Space> + </Col> + <Row gutter={[16, 16]}> + <Col span={8}> + <div className="title"> + <div className="title-text">评价等级</div> + </div> + <div style={{ display: 'flex' }}><Rate value={props.grade?.evaluateGrade} disabled /></div> + </Col> + <Col span={8}> + <div className="title"> + <div className="title-text">评价时间</div> + </div> + <div>{props.grade?.createTime || '-'}</div> + </Col> + <Col span={8}> + <div className="title"> + <div className="title-text">评价人</div> + </div> + <div>{props.grade?.evaluateUserName || '-'}</div> + </Col> + <Col span={12}> + <div className="title"> + <div className="title-text">评语</div> + </div> + <div>{props.grade?.evaluateContent}</div> + </Col> + </Row> + </Fragment> + ) +} diff --git a/gz-customerSystem/src/views/register/matterDetail/RegisInfoModule.jsx b/gz-customerSystem/src/views/register/matterDetail/RegisInfoModule.jsx new file mode 100644 index 0000000..2fa8d51 --- /dev/null +++ b/gz-customerSystem/src/views/register/matterDetail/RegisInfoModule.jsx @@ -0,0 +1,38 @@ +import React, { Fragment } from 'react'; +import { Row, Col, Space } from 'antd'; +import { register } from '@/assets/images'; + +export default function RegisInfoModule(props) { + return ( + <Fragment> + <Col span={24} style={{ display: 'flex', alignItems: 'center', margin: '12px 0px 4px 0px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>登记信息</h4> + </Space> + </Col> + <Row gutter={[16, 16]} > + <Col span={8}> + <div className="title"> + <div className="title-text">登记机构</div> + </div> + <div>{props.caseInfo?.inputUnitName || '-'}</div> + </Col> + <Col span={8}> + <div className="title"> + <div className="title-text">登记人</div> + </div> + <div> + {props.caseInfo?.inputUserName} + <img src={register} alt='' style={{ width: '14px', height: '14px', marginLeft: '8px', marginTop: '-4px' }} /> + </div> + </Col> + <Col span={8}> + <div className="title"> + <div className="title-text">登记时间</div> + </div> + <div>{props.caseInfo?.visitTime || '-'}</div> + </Col> + </Row> + </Fragment> + ) +} diff --git a/gz-customerSystem/src/views/register/matterDetail/fileMessage.jsx b/gz-customerSystem/src/views/register/matterDetail/fileMessage.jsx index 1ededa6..97153d1 100644 --- a/gz-customerSystem/src/views/register/matterDetail/fileMessage.jsx +++ b/gz-customerSystem/src/views/register/matterDetail/fileMessage.jsx @@ -1,18 +1,18 @@ import React, { useEffect, useState } from 'react'; import NewPage from '@/components/NewPage'; -import { Row, Col, Space } from 'antd'; -import { Steps, Tabs, Typography, Rate, Button } from '@arco-design/web-react'; +import { Steps, Tabs, Button, Badge } from '@arco-design/web-react'; import { apply, floating } from '@/assets/images'; import { result } from '@/assets/images/icon'; import * as $$ from '@/utils/utility'; -import TableView from '../../../components/TableView'; -import { register, fold, down, empty, link } from '@/assets/images'; +import { Space } from 'antd'; import ProgressStep from '@/components/ProgressStep/VisitStep'; -import { ApplyDialog, AgentDialog, Respondent, Company } from '../visit/component/previewTable'; +import ApplyInfo from './ApplyInfo'; +import Preview from '../visit/preview'; import HandleRecord from './HandleRecord'; -import { useParams } from 'react-router-dom'; -import ApplyInfo from './ApplyInfo' - +import { Scrollbars } from "react-custom-scrollbars"; +import RateModule from './RateModule'; +import RegisInfoModule from './RegisInfoModule'; +import SupervisingView from "./Supervising"; const Step = Steps.Step; const TabPane = Tabs.TabPane; @@ -38,14 +38,13 @@ } const FileMessage = (props) => { - const caseId = $$.getQueryString('caseId'); - const routeData = useParams(); + const caseTaskId = $$.getQueryString('caseTaskId') + const caseId = $$.getQueryString('caseId') const [tabsActive, setTabsActive] = useState('1'); const [current, setCurrent] = useState(7); - const [grade, setGrade] = useState(0); + const [grade, setGrade] = useState(null); const [caseInfo, setCaseInfo] = useState({}) const [TransactResult, setTransactResult] = useState({}) - const [filesCheck, setFilesCheck] = useState(false); const [tabsList, setTabList] = useState([ { img: result, @@ -64,88 +63,42 @@ key: '3', }, ]) - const [selectedTab, setSelectedTab] = useState('1'); // 默认选中第一个 tab const [list, setList] = useState([]) - const [progressData, setProgressData] = useState({}) + const [progressData, setProgressData] = useState({}); + useEffect(() => { + console.log(caseId, 'caseId') + getByCaseId(caseId); + getTransactResult(caseId); + getCaseInfo(caseId); + listFeedback(caseId); + getData(caseId) + }, []) - const tabs = [ - { index: '1', label: '承办部门' }, - { index: '2', label: '配合部门' }, - ]; - const fakeData = [ - { - handlerUserName: '天河区棠下街综治中心', - finishTime: new Date().getTime() - 24 * 60 * 60 * 1000, // 一天前的时间 - handleResult: '1', - status: '2', - taskNodeName: '来访登记', - mediResult: '22_00025-1', - handleContent: '调解成功,双方达成一致意见。', - operationName: '李晓明' - }, - { - handlerUserName: '系统派单', - finishTime: new Date().getTime() - 12 * 60 * 60 * 1000, // 半天前的时间 - handleResult: '1', - status: '2', - taskNodeName: '事件流转', - mediResult: '22_00025-1', - handleContent: '派单至:白云区新市街市场监管所', - }, - { - handlerUserName: '白云区新市街市场监管所', - finishTime: new Date().getTime() - 11 * 60 * 60 * 1000, // 半天前的时间 - handleResult: '1', - status: '2', - taskNodeName: '事件流转', - mediResult: '22_00025-1', - handleContent: '已签收', - operationName: '赵菲菲' - }, - { - handlerUserName: '白云区新市街市场监管所', - finishTime: new Date().getTime() - 11 * 60 * 60 * 1000, // 半天前的时间 - handleResult: '1', - status: '3', - taskNodeName: '事件回退', - mediResult: '22_00025-1', - // handleContent: '已签收', - operationName: '赵菲菲' - }, - { - handlerUserName: '天河区棠下街综治中心', - finishTime: new Date().getTime() - 6 * 60 * 60 * 1000, // 6小时前的时间 - handleResult: '2', - status: '1', - taskNodeName: '事件流转', - mediResult: '22_00025-1', - handleContent: '案件已被签收,准备开始调解。', - operationName: '李晓明' - }, - ]; - - const handleTabChange = (newTabIndex) => { - setSelectedTab(newTabIndex); - }; - - const getTransactResult = async () => { - const res = await getTransactResultApi('24083010062110001') + const getTransactResult = async (id) => { + const res = await getTransactResultApi(id) if (res.type) { setTransactResult({ ...res.data, fileName: res.data.fileInfoBaseDTOList.map(item => item.trueName) }) } } - const getByCaseId = async () => { - const res = await getByCaseIdApi('24083010062110001') - setGrade(res.data) - console.log(res, 'resrs') + const getByCaseId = async (id) => { + const res = await getByCaseIdApi(id) + if (res.type) { + setGrade(res.data) + } } - const getCaseInfo = async () => { - const res = await getCaseInfoApi('24083010062110001') + const getCaseInfo = async (id) => { + const res = await getCaseInfoApi(id) if (res.type) { - setCaseInfo(res.data) + const { agentList, personList, ...rest } = res.data + const parList = agentList.concat(personList) + const obj = { + ...rest, + fakeData: parList, + } + setCaseInfo(obj) } } @@ -157,594 +110,116 @@ } } - const getData = async () => { - const res = await getListCaseFlow({ - caseId: caseId - }) + const getData = async (id) => { + const res = await getListCaseFlow(id) if (res.type) { setProgressData(res.data) } } - const fakeColumns = [ - { - title: '序号', - dataIndex: 'caseNo', - key: 'caseNo', - width: 100, - render: (text, record, index) => <span>{index + 1}</span>, - }, - { - title: '材料类型', - dataIndex: 'judicNo', - key: 'judicNo', - width: 60, - - }, - { - title: '材料数量', - dataIndex: 'inputUserName', - key: 'perClassName', - width: 180, - render: (text) => ( - <> - {text}份 - </> - ) - - }, - { - title: '最新上传时间', - dataIndex: 'perClassName', - key: 'perClassName', - width: 180, - - }, - { - title: '操作', - dataIndex: 'perClassName', - key: 'perClassName', - width: 200, - render: (text) => ( - <div style={{ display: 'flex', color: '#1A6FB8', gap: '16px' }}> - <div onClick={() => setFilesCheck(true)}>查看</div> - <div>下载</div> - </div> - ) - }, - // 更多列配置... - ]; - const fakeData1 = [ - { - id: 1, - caseNo: 'A20230101', - judicNo: '申请材料', - perClassName: '李晓明的纠纷化解申请表、身份证...', - inputUserName: '0', - mediateUserName: '2024-7-12 12:00', - judgeName: '王五', - mediator: '赵六', - handlerUserName: '钱七', - returnUserName: '孙八', - expireTime: '2023-08-10T08:00:00.000Z', - processName: '进行中', - otherMediator: '周九', - canalName: '网络', - judicResult: '通过', - assistName: '吴十', - mediTypeName: '民事调解', - serieStatus: '1', // 1 表示非系列案,2 表示系列案 - // 更多字段... - }, - { - id: 2, - caseNo: 'A20230101', - judicNo: '证据材料', - perClassName: '李晓明的纠纷化解申请表、身份证...', - inputUserName: '0', - mediateUserName: '2024-7-12 12:00', - judgeName: '王五', - mediator: '赵六', - handlerUserName: '钱七', - returnUserName: '孙八', - expireTime: '2023-08-10T08:00:00.000Z', - processName: '进行中', - otherMediator: '周九', - canalName: '网络', - judicResult: '通过', - assistName: '吴十', - mediTypeName: '民事调解', - serieStatus: '1', // 1 表示非系列案,2 表示系列案 - // 更多字段... - }, - - // 更多数据... - ]; - const [records, setRecords] = useState([ - { - id: 1, - date: '2024 - 7 - 1 10:00', - location: '天河区棠下街综治中心', - remark: '配合部门', - showView: false, - details: [ - { - title: '操作人', - content: ( - <div style={{ display: 'flex' }}> - <div>李晓明</div> - <img src={register} alt='' style={{ width: '14px', height: '14px', marginLeft: '8px', marginTop: '4px' }} /> - </div> - ), - }, - { - title: '办理意见', - content: ( - <div> - 调解开始,我首先安抚双方情绪,确保对话在一个平和的氛围中展开。随后,我引导王先生详细说明了他的财务困境及还款意愿,同时让银行代表理解其处境,强调长期合作的重要性。经过反复沟通,银行同意调整还款计划,降低利率,并给予王先生一定的宽限期。王先生则承诺按新计划履行还款义务,双方最终达成一致,签署了调解协议。 - </div> - ), - }, - { - title: '办理附件', - content: ( - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />江照月法人身份证明.pdf - </a> - ), - }, - ], - }, - { - id: 2, - date: '2024 - 7 - 2 14:00', - location: '天河区天河南街道办事处', - remark: '承办部门', - showView: false, - details: [ - { - title: '操作人', - content: ( - <div style={{ display: 'flex' }}> - <div>张伟</div> - <img src={register} alt='' style={{ width: '14px', height: '14px', marginLeft: '8px', marginTop: '4px' }} /> - </div> - ), - }, - { - title: '办理意见', - content: ( - <div> - 在本次协调会议中,我们成功解决了双方之间的纠纷,确保了所有参与方的利益得到了妥善处理。通过深入交流,各方达成了共识,同意采取一系列措施来解决现存的问题。 - </div> - ), - }, - { - title: '办理附件', - content: '广州市天河区天河南路200号', - }, - ], - }, - ]); - const toggleView = (id) => { - setRecords(records.map(record => { - if (record.id === id) { - return { - ...record, - showView: !record.showView, - }; - } - return record; - })); - }; - - - useEffect(() => { - getByCaseId(); - getTransactResult(); - getCaseInfo(); - listFeedback('24083010062110001'); - getData() - }, []) - - - const applyData = caseInfo?.personList?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "自然人"); - const agentData = caseInfo?.personList?.filter(item => item.perTypeName === "申请方代理人"); - const company = caseInfo?.personList?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "非法人组织"); - const respondentData = caseInfo?.personList?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "法人"); - - const applyData1 = caseInfo?.personList?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "自然人"); - const agentData1 = caseInfo?.personList?.filter(item => item.perTypeName === "被申请方代理人"); - const company1 = caseInfo?.personList?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "非法人组织"); - const respondentData1 = caseInfo?.personList?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "法人"); - - - - return ( - <> - <NewPage - pageHead={ - { breadcrumbData: [{ title: '工作台' }, { title: '事件中心' }], title: '详情' } - } + <NewPage + pageHead={ + { breadcrumbData: [{ title: '工作台' }, { title: '事件中心' }], title: '详情' } + } + > + <Tabs + defaultActiveTab='1' + onChange={(v) => setTabsActive(v)} + className='myTabContent' > - <Tabs - defaultActiveTab='1' - onChange={(v) => setTabsActive(v)} - className='myTabContent' - > - {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: '12px 16px 0px 16px', paddingTop: '16px', paddingLeft: '91px' }}> - <Steps type='navigation' current={current}> - <Step title='来访登记' disabled /> - <Step title='事件流转' disabled /> - <Step title='办理反馈' disabled /> - <Step title='结案审核' disabled /> - <Step title='当事人评价' disabled /> - <Step title='结案归档' disabled /> - </Steps> + {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: '0 16px', paddingTop: '16px', paddingLeft: '91px' }}> + <Steps type='navigation' current={current}> + <Step title='来访登记' disabled /> + <Step title='事件流转' disabled /> + <Step title='办理反馈' disabled /> + <Step title='结案审核' disabled /> + <Step title='当事人评价' disabled /> + <Step title='结案归档' disabled /> + </Steps> + </div> + } + { + tabsActive === '1' && + <> + <Scrollbars style={{ height: 'calc(100vh - 291px)', marginTop: '8px' }} autoHide> + <div style={{ backgroundColor: '#ffff', margin: '0 16px 0px 16px', padding: '12px' }}> + <Preview mainId={caseId} data={caseInfo} transactResult={TransactResult} isDoc={true} /> + </div> + {list.length != 0 && + <div style={{ backgroundColor: '#ffff', margin: '8px 16px 0px 16px', padding: '12px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>办理记录({list.length})</h4> + </Space> + <HandleRecord isReview={true} data={list} /> + </div> + } + {grade && + <div style={{ backgroundColor: '#ffff', margin: '8px 16px 0px 16px', padding: '12px' }}> + <RateModule grade={grade} /> + </div> + } + <div style={{ backgroundColor: '#ffff', margin: '8px 16px 65px 16px', padding: '12px' }}> + <RegisInfoModule caseInfo={caseInfo} /> + </div> + </Scrollbars> + <div className="dataSync-excel"> + <Space size="large" style={{ margin: '4px 14px' }}> + <Button type='primary' >导出</Button> + <Button type='secondary' >返回上级页面</Button> + </Space> </div> - } - {tabsActive === '1' && - <> - <div style={{ backgroundColor: '#ffff', margin: '8px 8px 0px 16px', padding: '12px 18px 16px 16px', height: 'calc(100vh - 278px)', overflowY: 'scroll' }}> - <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>当事人信息</h4> - </Space> - </Col> - <div style={{ marginBottom: '8px' }}>申请方</div> - <div className="line-container" style={{ marginBottom: '20px' }}> - <div className="line left-line"></div> - <div className="line middle-line"></div> - <div className="line right-line"></div> + </> + } + { + tabsActive === '2' && + <div className='dataSync-hasTabPage' style={{ marginTop: '-8px' }}> + <Tabs defaultActiveTab='1' > + <TabPane + key='1' + title={ + <span style={{ fontSize: '15px' }}> + 流转进度 + </span> + } + > + <ProgressStep progressData={progressData} hasTab={true} /> + </TabPane> + <TabPane + key='2' + title={ + <span style={{ fontSize: '15px' }}> + 督办信息 + <Badge maxCount={99} count={1000} /> + </span> + } + > + <div style={{ marginBottom: '20px' }}> + <SupervisingView id={''} /> </div> - {/* ApplyDialog 只有在 applyData 存在且不为空时才渲染 */} - {applyData && applyData.length > 0 ? ( - <ApplyDialog applyDialog={applyData} /> - ) : null} - - {/* AgentDialog 只有在 agentData 存在且不为空时才渲染 */} - {agentData && agentData.length > 0 ? ( - <AgentDialog agentDialog={agentData} /> - ) : null} - - {/* Respondent 只有在 respondentData 存在且不为空时才渲染 */} - {respondentData && respondentData.length > 0 ? ( - <Respondent respondent={respondentData} /> - ) : null} - - {company && company.length > 0 ? ( - <Company company={company} /> - ) : null} - - <div style={{ marginBottom: '8px' }}>被申请方</div> - <div className="line-container" style={{ marginBottom: '20px' }}> - <div className="line left-line"></div> - <div className="line middle-line"></div> - <div className="line right-line"></div> - </div> - {applyData1 && applyData1.length > 0 ? ( - <ApplyDialog applyDialog={applyData1} /> - ) : null} - - {agentData1 && agentData1.length > 0 ? ( - <AgentDialog agentDialog={agentData1} /> - ) : null} - - {respondentData1 && respondentData1.length > 0 ? ( - <Respondent respondent={respondentData1} /> - ) : null} - - {company1 && company1.length > 0 ? ( - <Company company={company1} /> - ) : null} - <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '4px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h5>纠纷基本情况</h5> - </Space> - </Col> - <Row gutter={[16, 16]}> - <Col span={8}> - <div><div className="title-text">事项状态</div></div> - <div style={{ color: '#1A6FB8' }}>{caseInfo?.statusName || '-'}</div> - </Col> - <Col span={16}> - <div><div className="title-text">事项编号</div></div> - <div>{caseInfo?.caseRef || '-'}</div> - </Col> - {/*事项等级分为三级,颜色需要做判断*/} - <Col span={8}> - <div className="title"><div className="title-text">事项等级</div></div> - <div style={{ display: 'flex' }}><div style={{ backgroundColor: '#00B42A', marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{caseInfo?.caseLevel || '-'}</div></div>级</div> - </Col> - <Col span={8}> - <div><div className="title-text">来访时间</div></div> - <div>{caseInfo?.visitTime || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">来访人数(人)</div></div> - <div>{caseInfo?.visitPeopleNum || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">纠纷类型</div></div> - <div>{caseInfo?.caseType || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">纠纷发生时间</div></div> - <div>{caseInfo?.occurTime || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">纠纷发生地点</div></div> - <div>{caseInfo?.addr || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">问题属地</div></div> - <div>{caseInfo?.questionName || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">涉及人数(人)</div></div> - <div>{caseInfo?.peopleNum || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">涉及金额(元)</div></div> - <div>{$$.thousands(caseInfo?.amount) || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">事项来源</div></div> - <div>{caseInfo?.canalName || '-'}</div> - </Col> - <Col span={16}> - <div ><div className="title-text">来访形式</div></div> - <div>{caseInfo?.visitWayName || '-'}</div> - </Col> - <Col span={24}> - <div className="title"><div className="title-text">事项概况</div></div> - <div>{caseInfo?.caseDes || '-'}</div> - </Col> - <Col span={24}> - <div className="title"><div className="title-text">事项申请</div></div> - <div>{caseInfo?.caseClaim || '-'}</div> - </Col> - <Col span={16}> - <div className="title"><div className="title-text">是否重大矛盾纠纷</div></div> - <div>{caseInfo?.majorStatus === '0' ? '否' : '是'}</div> - </Col> - </Row> - <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '16px', marginTop: '20px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>办理结果</h4> - </Space> - </Col> - <table border="1" align="center" cellpadding="8" className="table" > - <tr> - <th bgcolor="#F7F8FA" className="table-title" width="120">化解结果</th> - <td width='380'>{TransactResult.mediResultName || '-'}</td> - <th bgcolor="#F7F8FA" className="table-title" width="120">经办人</th> - <td width='380'>{TransactResult.mediator || '-'}</td> - </tr> - <tr> - <th bgcolor="#F7F8FA" className="table-title">承办部门</th> - <td>{TransactResult.mediateUnitName || '-'}</td> - <th bgcolor="#F7F8FA" className="table-title">配合部门</th> - <td>{TransactResult.applyAssistUnitName || '-'}</td> - </tr> - <tr> - <th bgcolor="#F7F8FA" className="table-title" width="120">受理时间</th> - <td width='380'>2024-7-1 10:00</td> - <th bgcolor="#F7F8FA" className="table-title" width="120">办结时间</th> - <td width='380'>{TransactResult?.fileTime || '-'}</td> - </tr> - <tr> - <th bgcolor="#F7F8FA" className="table-title" width="120">办理意见</th> - <td width='380' colspan='3'>{TransactResult?.windupContent || '-'}</td> - </tr> - <tr> - <th bgcolor="#F7F8FA" className="table-title" width="120">协议要点</th> - <td width='380' colspan='3'>{TransactResult?.agreeContent || '-'}</td> - </tr> - <tr> - <th bgcolor="#F7F8FA" className="table-title" width="120">结案意见</th> - <td width='380' colspan='3'>{TransactResult?.windupContent || '-'}</td> - </tr> - <tr> - <th bgcolor="#F7F8FA" className="table-title" width="120">协议文书</th> - <td colspan='3'> - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />申请人张三丰的人民调解协议书.pdf - </a> - </td> - </tr> - </table> - <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '16px', marginTop: '20px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>事件材料</h4> - </Space> - </Col> - <TableView - columns={fakeColumns} - dataSource={fakeData1} - size="small" - rowKey="id" - bordered={true} - style={{ marginBottom: '16px' }} - /> - <div className='gap'></div> - <Col span={24} style={{ marginTop: '12px' }}> - <div style={{ color: 'rgb(134, 144, 156)' }}>办理记录</div> - <HandleRecord isReview={false} data={list} /> - - {/* <div> - {records.map(record => ( - <div key={record.id} className='container-bottom-left-record'> - <div className='container-bottom-left-record-top'> - { - record.showView ? ( - <img src={down} alt='' style={{ width: '18px', marginRight: '6px' }} onClick={() => toggleView(record.id)} /> - ) : ( - <img src={fold} alt='' className='container-bottom-left-record-top-icon' onClick={() => toggleView(record.id)} /> - ) - } - <div>{`${record.date} ${record.location}`}</div> - <div className={`container-bottom-left-record-top-${record.remark === '配合部门' ? 'remark' : 'hostOrg'}`}>{record.remark}</div> - </div> - <div className='container-bottom-left-record-bottom' style={{ display: record.showView ? 'block' : 'none' }}> - <table border="1" cellpadding="8" className='container-bottom-left-record-bottom-table'> - {record.details.map(detail => ( - <tr key={detail.title}> - <th bgcolor="#F7F8FA" className="table-title" width="120">{detail.title}</th> - <td>{detail.content}</td> - </tr> - ))} - </table> - </div> - </div> - ))} - </div> */} - </Col> - <div className='gap'></div> - <div style={{ marginLeft: '-16px' }}> - <Tabs defaultActiveTab='1'> - <TabPane - key='1' - title={ - <span style={{ fontSize: '15px' }}> - 流转进度 - </span> - } - > - <Typography.Paragraph> - <div style={{ display: 'flex', marginLeft: '16px', gap: '16px' }}> - {tabs.map((tab) => ( - <div - key={tab.index} - style={{ - color: selectedTab === tab.index ? 'rgba(26,111,184,1)' : 'rgba(0,0,0,0.45)', - padding: '6px 12px', - border: `1px solid ${selectedTab === tab.index ? 'rgba(26,111,184,1)' : 'rgba(229,230,235,1)'}`, - borderRadius: '4px', - cursor: 'pointer', - }} - onClick={() => handleTabChange(tab.index)} - > - {tab.label} - </div> - ))} - </div> - {selectedTab === '1' && - <div className='progress'> - <ProgressStep progressData={fakeData} /> - </div> - } - </Typography.Paragraph> - </TabPane> - <TabPane - key='2' - title={ - <span style={{ fontSize: '15px' }}> - 督办信息 - </span> - } - > - <Typography.Paragraph>Content of Tab Panel 2</Typography.Paragraph> - </TabPane> - </Tabs> - - </div> - <div className='gap'></div> - <Col span={24} style={{ display: 'flex', alignItems: 'center', margin: '12px 0px 4px 0px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>当事人评价</h4> - </Space> - </Col> - <Row gutter={[16, 16]}> - <Col span={8}> - <div className="title"> - <div className="title-text">评价等级</div> - </div> - <div style={{ display: 'flex' }}><Rate value={grade?.evaluateGrade} disabled /></div> - </Col> - <Col span={8}> - <div className="title"> - <div className="title-text">评价时间</div> - </div> - <div>{grade?.createTime || '-'}</div> - </Col> - <Col span={8}> - <div className="title"> - <div className="title-text">评价人</div> - </div> - <div>{grade?.evaluateUserName || '-'}</div> - </Col> - <Col span={12}> - <div className="title"> - <div className="title-text">评语</div> - </div> - <div>{grade?.evaluateContent}</div> - </Col> - </Row> - <div className='gap'></div> - <Col span={24} style={{ display: 'flex', alignItems: 'center', margin: '12px 0px 4px 0px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>登记信息</h4> - </Space> - </Col> - <Row gutter={[16, 16]} style={{ marginBottom: '90px' }}> - <Col span={8}> - <div className="title"> - <div className="title-text">登记机构</div> - </div> - <div>{caseInfo?.inputUnitName || '-'}</div> - </Col> - <Col span={8}> - <div className="title"> - <div className="title-text">登记人</div> - </div> - <div> - {caseInfo.inputUserName} - <img src={register} alt='' style={{ width: '14px', height: '14px', marginLeft: '8px', marginTop: '4px' }} /> - </div> - </Col> - <Col span={8}> - <div className="title"> - <div className="title-text">登记时间</div> - </div> - <div>{caseInfo?.visitTime || '-'}</div> - </Col> - </Row> - </div> - <div className="dataSync-excel"> - <Space size="large" style={{ margin: '4px 14px' }}> - <Button type="primary" style={{ backgroundColor: '#1A6FB8' }} >导出</Button> - <Button type='secondary'>返回上级页面</Button> - </Space> - </div> - </> - } - { - tabsActive === '2' && - <ProgressStep progressData={progressData} /> - } - {tabsActive === '3' && - <ApplyInfo /> - } - </TabPane> - })} - </Tabs> - - - </NewPage> - </> + </TabPane> + </Tabs> + </div> + } + { + tabsActive === '3' && + <ApplyInfo /> + } + </TabPane> + })} + </Tabs> + </NewPage> ) } diff --git a/gz-customerSystem/src/views/register/matterDetail/index.jsx b/gz-customerSystem/src/views/register/matterDetail/index.jsx index 6f259da..57af84b 100644 --- a/gz-customerSystem/src/views/register/matterDetail/index.jsx +++ b/gz-customerSystem/src/views/register/matterDetail/index.jsx @@ -29,7 +29,7 @@ const partyList = data.personList.concat(data.agentList) setInfoData({ ...data, - questionName: data.queProvName === null ? '-' : data.queProvName + '/' + data.queCityName + '/' + data.queAreaName + '/' + data.queRoadName + '/' + data.queVillageName, + questionName: data.queProvName === null ? '-' : data.queProvName + '/' + data.queCityName + '/' + data.queAreaName + '/' + data.queRoadName, caseType: data.caseTypeFirstName === null ? '-' : data.caseTypeFirstName + '/' + data.caseTypeName }) setFakeData(partyList.map(item => { diff --git a/gz-customerSystem/src/views/register/visit/component/previewTable.jsx b/gz-customerSystem/src/views/register/visit/component/previewTable.jsx index 6ab1329..6785ad2 100644 --- a/gz-customerSystem/src/views/register/visit/component/previewTable.jsx +++ b/gz-customerSystem/src/views/register/visit/component/previewTable.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { person, link } from '@/assets/images' @@ -45,9 +45,18 @@ <td>{item.workUnit || '-'}</td> <th bgcolor="#F7F8FA" className="table-title">身份证明材料</th> <td> - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />李晓明身份证明材料.pdf - </a> + { + item.fileInfoList?.map(res => { + if (res.ownerType == "22_00018-202") { + return res.fileList.map((result, resIndex) => { + return <a href="your-link-here.html" target="_blank"> + <img src={link} alt="" className="title-file" />{result.trueName} + {resIndex !== res.fileList.length - 1 && <>,</>} + </a> + }) + } + }) + } </td> </tr> </table> @@ -106,15 +115,33 @@ <td>{item.personId || '-'}</td> <th bgcolor="#F7F8FA" className="table-title">身份证明材料</th> <td> - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />李巧凤身份证明材料.pdf - </a> + { + item.fileInfoList?.map(res => { + if (res.ownerType == "22_00018-202") { + return res.fileList?.map((result, resIndex) => { + return <a href="your-link-here.html" target="_blank"> + <img src={link} alt="" className="title-file" />{result.trueName} + {resIndex !== res.fileList.length - 1 && <>,</>} + </a> + }) + } + }) + } </td> <th bgcolor="#F7F8FA" className="table-title">代理人授权委托书</th> <td> - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />李晓明身份证明材料.pdf - </a> + { + item.fileInfoList?.map(res => { + if (res.ownerType == '22_00018-207') { + return res.fileList.map((result, resIndex) => { + return <a href="your-link-here.html" target="_blank"> + <img src={link} alt="" className="title-file" />{result.trueName} + {resIndex !== res.fileList.length - 1 && <>,</>} + </a> + }) + } + }) + } </td> </tr> @@ -151,15 +178,33 @@ <td>{item.placeAddr || '-'}</td> <th bgcolor="#F7F8FA" className="table-title">企业登记材料</th> <td> - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />广东好又多贸易有限公司营业执照副本.pdf - </a> + { + item.fileInfoList?.map(res => { + if (res.ownerType == '22_00018-203') { + return res.fileList.map((result, resIndex) => { + return <a href="your-link-here.html" target="_blank"> + <img src={link} alt="" className="title-file" />{result.trueName} + {resIndex !== res.fileList.length - 1 && <>,</>} + </a> + }) + } + }) + } </td> <th bgcolor="#F7F8FA" className="table-title" >法定代表人身份证明材料</th> <td> - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />江照月法人身份证明.pdf - </a> + { + item.fileInfoList?.map(res => { + if (res.ownerType == '22_00018-204') { + return res.fileList.map((result, resIndex) => { + return <a href="your-link-here.html" target="_blank"> + <img src={link} alt="" className="title-file" />{result.trueName} + {resIndex !== res.fileList.length - 1 && <>,</>} + </a> + }) + } + }) + } </td> </tr> </table> @@ -197,15 +242,33 @@ <td>{item.placeAddr || '-'}</td> <th bgcolor="#F7F8FA" className="table-title">机构登记材料</th> <td> - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />广东好又多贸易有限公司营业执照副本.pdf - </a> + { + item.fileInfoList?.map(res => { + if (res.ownerType == '22_00018-203') { + return res.fileList.map((result, resIndex) => { + return <a href="your-link-here.html" target="_blank"> + <img src={link} alt="" className="title-file" />{result.trueName} + {resIndex !== res.fileList.length - 1 && <>,</>} + </a> + }) + } + }) + } </td> <th bgcolor="#F7F8FA" className="table-title" >机构代表人身份证明材料</th> <td> - <a href="your-link-here.html" target="_blank"> - <img src={link} alt="" className="title-file" />江照月法人身份证明.pdf - </a> + { + item.fileInfoList?.map(res => { + if (res.ownerType == '22_00018-204') { + return res.fileList.map((result, resIndex) => { + return <a href="your-link-here.html" target="_blank"> + <img src={link} alt="" className="title-file" />{result.trueName} + {resIndex !== res.fileList.length - 1 && <>,</>} + </a> + }) + } + }) + } </td> </tr> </table> diff --git a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx index 0a883e8..305c8c3 100644 --- a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx +++ b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx @@ -390,7 +390,10 @@ <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>事件材料</h4> </Space> </Col> - <FileTable mainId={props.mainId} fileInfoList={props.fileInfoList} isReview={false}/> + <div style={{ marginBottom: '65px' }}> + <FileTable mainId={props.mainId} fileInfoList={props.fileInfoList} isReview={false} /> + </div> + <DocumentScanner visible={scanFile} diff --git a/gz-customerSystem/src/views/register/visit/index.jsx b/gz-customerSystem/src/views/register/visit/index.jsx index e00c310..d914bfc 100644 --- a/gz-customerSystem/src/views/register/visit/index.jsx +++ b/gz-customerSystem/src/views/register/visit/index.jsx @@ -8,7 +8,7 @@ */ import React, { useState, useRef, Fragment, useEffect } from "react"; -import { useSearchParams, useNavigate } from 'react-router-dom'; +import { useParams, useNavigate } from 'react-router-dom'; import NewPage from '@/components/NewPage'; import * as $$ from '@/utils/utility'; import "@arco-themes/react-gzzz/css/arco.css"; @@ -17,7 +17,6 @@ import { Button, Steps, Message } from '@arco-design/web-react'; import VisitorRegister from './component/visitorRegister'; import Preview from './preview'; -import { useParams } from 'react-router-dom'; const Step = Steps.Step; @@ -192,7 +191,9 @@ <Step title='结案归档' disabled /> </Steps> </div> - <Preview style={{ display: isReview ? '' : 'none' }} data={formRef?.current?.getFields()} /> + <div style={{ backgroundColor: '#ffff', margin: '8px 8px 0px 16px', padding: '12px 18px 16px 16px', height: 'calc(100vh - 228px)', overflowY: 'scroll', display: isReview ? '' : 'none' }}> + <Preview style={{ display: isReview ? '' : 'none' }} data={formRef?.current?.getFields()} mainId={id} /> + </div> <VisitorRegister formRef={formRef} style={{ display: isReview ? 'none' : '' }} diff --git a/gz-customerSystem/src/views/register/visit/preview.jsx b/gz-customerSystem/src/views/register/visit/preview.jsx index 2d2c797..308a020 100644 --- a/gz-customerSystem/src/views/register/visit/preview.jsx +++ b/gz-customerSystem/src/views/register/visit/preview.jsx @@ -6,126 +6,18 @@ * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\preview.jsx * @Description: 预览信息 */ -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { Row, Col, Space } from 'antd'; -import { person, question, link } from '../../../assets/images' -import '../index.less'; -import TableView from '../../../components/TableView'; -import { Modal } from '@arco-design/web-react'; -import NewFileCheck from '../matterDetail/NewFileCheck'; import * as $$ from '../../../utils/utility'; import { ApplyDialog, AgentDialog, Respondent, Company } from './component/previewTable' +import FileTable from "../matterDetail/FileTable"; +import { link } from '@/assets/images'; const Preview = (props) => { - const [filesCheck, setFilesCheck] = useState(false); - const [apply, setApply] = useState(false); - const [visible, setVisible] = useState(false); + const [data, setData] = useState({}) - const fakeData1 = [ - { - id: 1, - caseNo: 'A20230101', - judicNo: '申请材料', - perClassName: '李晓明的纠纷化解申请表、身份证...', - inputUserName: '0', - mediateUserName: '2024-7-12 12:00', - judgeName: '王五', - mediator: '赵六', - handlerUserName: '钱七', - returnUserName: '孙八', - expireTime: '2023-08-10T08:00:00.000Z', - processName: '进行中', - otherMediator: '周九', - canalName: '网络', - judicResult: '通过', - assistName: '吴十', - mediTypeName: '民事调解', - serieStatus: '1', // 1 表示非系列案,2 表示系列案 - // 更多字段... - }, - { - id: 2, - caseNo: 'A20230101', - judicNo: '证据材料', - perClassName: '李晓明的纠纷化解申请表、身份证...', - inputUserName: '0', - mediateUserName: '2024-7-12 12:00', - judgeName: '王五', - mediator: '赵六', - handlerUserName: '钱七', - returnUserName: '孙八', - expireTime: '2023-08-10T08:00:00.000Z', - processName: '进行中', - otherMediator: '周九', - canalName: '网络', - judicResult: '通过', - assistName: '吴十', - mediTypeName: '民事调解', - serieStatus: '1', // 1 表示非系列案,2 表示系列案 - // 更多字段... - }, - - // 更多数据... - ]; - - // 列配置 - const fakeColumns = [ - { - title: '序号', - dataIndex: 'caseNo', - key: 'caseNo', - width: 100, - render: (text, record, index) => <span>{index + 1}</span>, - }, - { - title: '材料类型', - dataIndex: 'judicNo', - key: 'judicNo', - width: 60, - - }, - { - title: '材料数量', - dataIndex: 'inputUserName', - key: 'perClassName', - width: 180, - render: (text) => ( - <> - {text}份 - </> - ) - - }, - { - title: '材料名称', - dataIndex: 'perClassName', - key: 'perClassName', - width: 180, - - }, - { - title: '上传时间', - dataIndex: 'mediateUserName', - key: 'mediateUserName', - width: 180, - - }, - { - title: '操作', - dataIndex: 'perClassName', - key: 'perClassName', - width: 200, - render: (text) => ( - <div style={{ display: 'flex', color: '#1A6FB8', gap: '16px' }}> - <div onClick={() => setFilesCheck(true)}>查看</div> - <div>下载</div> - </div> - ) - }, - // 更多列配置... - ]; - - + useEffect(() => { + console.log(props.data); const applyData = props.data?.fakeData?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "自然人"); const agentData = props.data?.fakeData?.filter(item => item.perTypeName === "申请方代理人"); const company = props.data?.fakeData?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "非法人组织"); @@ -136,168 +28,216 @@ const company1 = props.data?.fakeData?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "非法人组织"); const respondentData1 = props.data?.fakeData?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "法人"); - console.log(props.data, 'props.data') + setData({ + applyData, + agentData, + company, + respondentData, + applyData1, + agentData1, + company1, + respondentData1 + }) + }, [props.data]) + return ( + <div style={{ ...props.style }}> + <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>当事人信息</h4> + </Space> + </Col> + <div style={{ marginBottom: '8px' }}>申请方</div> + <div className="line-container" style={{ marginBottom: '20px' }}> + <div className="line left-line"></div> + <div className="line middle-line"></div> + <div className="line right-line"></div> + </div> + {/* ApplyDialog 只有在 applyData 存在且不为空时才渲染 */} + {data.applyData && data.applyData.length > 0 ? ( + <ApplyDialog applyDialog={data.applyData} /> + ) : null} + {/* AgentDialog 只有在 agentData 存在且不为空时才渲染 */} + {data.agentData && data.agentData.length > 0 ? ( + <AgentDialog agentDialog={data.agentData} /> + ) : null} + {/* Respondent 只有在 respondentData 存在且不为空时才渲染 */} + {data.respondentData && data.respondentData.length > 0 ? ( + <Respondent respondent={data.respondentData} /> + ) : null} + {data.company && data.company.length > 0 ? ( + <Company company={data.company} /> + ) : null} - return ( - <div style={{ backgroundColor: '#ffff', margin: '8px 8px 0px 16px', padding: '12px 18px 16px 16px', height: 'calc(100vh - 228px)', overflowY: 'scroll', ...props.style }}> - <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>当事人信息</h4> - </Space> + <div style={{ marginBottom: '8px' }}>被申请方</div> + <div className="line-container" style={{ marginBottom: '20px' }}> + <div className="line left-line"></div> + <div className="line middle-line"></div> + <div className="line right-line"></div> + </div> + {data.applyData1 && data.applyData1.length > 0 ? ( + <ApplyDialog applyDialog={data.applyData1} /> + ) : null} + + {data.agentData1 && data.agentData1.length > 0 ? ( + <AgentDialog agentDialog={data.agentData1} /> + ) : null} + + {data.respondentData1 && data.respondentData1.length > 0 ? ( + <Respondent respondent={data.respondentData1} /> + ) : null} + + {data.company1 && data.company1.length > 0 ? ( + <Company company={data.company1} /> + ) : null} + <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>纠纷基本情况</h4> + </Space> + </Col> + <Row gutter={[16, 16]}> + {props.isDoc && + <> + <Col span={8}> + <div><div className="title-text">事项状态</div></div> + <div style={{ color: '#1A6FB8' }}>{props.data?.statusName || '-'}</div> </Col> - <div style={{ marginBottom: '8px' }}>申请方</div> - <div className="line-container" style={{ marginBottom: '20px' }}> - <div className="line left-line"></div> - <div className="line middle-line"></div> - <div className="line right-line"></div> - </div> - {/* ApplyDialog 只有在 applyData 存在且不为空时才渲染 */} - {applyData && applyData.length > 0 ? ( - <ApplyDialog applyDialog={applyData} /> - ) : null} - - {/* AgentDialog 只有在 agentData 存在且不为空时才渲染 */} - {agentData && agentData.length > 0 ? ( - <AgentDialog agentDialog={agentData} /> - ) : null} - - {/* Respondent 只有在 respondentData 存在且不为空时才渲染 */} - {respondentData && respondentData.length > 0 ? ( - <Respondent respondent={respondentData} /> - ) : null} - - {company && company.length > 0 ? ( - <Company company={company} /> - ) : null} - - <div style={{ marginBottom: '8px' }}>被申请方</div> - <div className="line-container" style={{ marginBottom: '20px' }}> - <div className="line left-line"></div> - <div className="line middle-line"></div> - <div className="line right-line"></div> - </div> - {applyData1 && applyData1.length > 0 ? ( - <ApplyDialog applyDialog={applyData1} /> - ) : null} - - {agentData1 && agentData1.length > 0 ? ( - <AgentDialog agentDialog={agentData1} /> - ) : null} - - {respondentData1 && respondentData1.length > 0 ? ( - <Respondent respondent={respondentData1} /> - ) : null} - - {company1 && company1.length > 0 ? ( - <Company company={company1} /> - ) : null} - <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>纠纷基本情况</h4> - </Space> + <Col span={16}> + <div><div className="title-text">事项编号</div></div> + <div>{props.data?.caseRef || '-'}</div> </Col> - <Row gutter={[16, 16]}> - <Col span={8}> - <div className="title"> - <div className="title-text">事项等级</div> - </div> - <div style={{ display: 'flex' }}><div style={{ backgroundColor: '#00B42A', marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{props.data?.caseLevel || '-'}</div></div>级</div> - </Col> - <Col span={8}> - <div><div className="title-text">来访时间</div></div> - <div>{props.data?.visitTime || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">来访人数(人)</div></div> - <div>{props.data?.visitPeopleNum || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">纠纷类型</div></div> - <div> - {props.data?.caseTypeFirstName ? - `${props.data.caseTypeFirstName}/${props.data.caseTypeName}` - : '-' - } - </div> - </Col> - <Col span={8}> - <div ><div className="title-text">纠纷发生时间</div></div> - <div>{props.data?.occurTime || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">纠纷发生地点</div></div> - <div>{props.data?.addr || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">问题属地</div></div> - <div> - {props.data?.queProvName ? - `${props.data.queProvName}/${props.data.queCityName}/${props.data.queAreaName}/${props.data.queRoadName}` - : '-' - } - </div> - </Col> - <Col span={8}> - <div ><div className="title-text">涉及人数(人)</div></div> - <div>{props.data?.peopleNum || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">涉及金额(元)</div></div> - <div>{$$.thousands(props.data?.amount) || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">事项来源</div></div> - <div>大厅来访</div> - </Col> - <Col span={16}> - <div ><div className="title-text">来访形式</div></div> - <div>来访</div> - </Col> - <Col span={24}> - <div className="title"><div className="title-text">事项概况</div></div> - <div>{props.data?.caseDes || '-'} </div> - </Col> - <Col span={24}> - <div className="title"><div className="title-text">事项申请</div></div> - <div>{props.data?.caseClaim || '-'}</div> - </Col> - <Col span={16}> - <div className="title"><div className="title-text">是否重大矛盾纠纷</div></div> - <div>{props.data?.majorStatus === 1 ? '是' : '否'}</div> - </Col> - </Row> - <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px', marginTop: '20px' }}> - <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>事件材料</h4> - </Space> - </Col> - - <TableView - columns={fakeColumns} - dataSource={fakeData1} - size="small" - rowKey="id" - bordered={true} - style={{ marginBottom: '65px' }} - /> - - <Modal style={{ width: '1200px' }} visible={filesCheck} onCancel={() => setFilesCheck(false)} footer={null} title='查看事件材料' centered> - {/* <div className="mediationWindow-modal-main" style={{ display: 'flex' }}> */} - <div style={{ marginTop: '-16px' }}> - <NewFileCheck /> - </div> - - {/* </div> */} - </Modal> - - - - </div> - ) + </> + } + <Col span={8}> + <div className="title"> + <div className="title-text">事项等级</div> + </div> + <div style={{ display: 'flex' }}><div style={{ backgroundColor: '#00B42A', marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{props.data?.caseLevel || '-'}</div></div>级</div> + </Col> + <Col span={8}> + <div><div className="title-text">来访时间</div></div> + <div>{props.data?.visitTime || '-'}</div> + </Col> + <Col span={8}> + <div ><div className="title-text">来访人数(人)</div></div> + <div>{props.data?.visitPeopleNum || '-'}</div> + </Col> + <Col span={8}> + <div ><div className="title-text">纠纷类型</div></div> + <div> + {props.data?.caseTypeFirstName ? + `${props.data.caseTypeFirstName}/${props.data.caseTypeName}` + : '-' + } + </div> + </Col> + <Col span={8}> + <div ><div className="title-text">纠纷发生时间</div></div> + <div>{props.data?.occurTime || '-'}</div> + </Col> + <Col span={8}> + <div ><div className="title-text">纠纷发生地点</div></div> + <div>{props.data?.addr || '-'}</div> + </Col> + <Col span={8}> + <div ><div className="title-text">问题属地</div></div> + <div> + {props.data?.queProvName ? + `${props.data.queProvName}/${props.data.queCityName}/${props.data.queAreaName}/${props.data.queRoadName}` + : '-' + } + </div> + </Col> + <Col span={8}> + <div ><div className="title-text">涉及人数(人)</div></div> + <div>{props.data?.peopleNum || '-'}</div> + </Col> + <Col span={8}> + <div ><div className="title-text">涉及金额(元)</div></div> + <div>{$$.thousands(props.data?.amount) || '-'}</div> + </Col> + <Col span={8}> + <div ><div className="title-text">事项来源</div></div> + <div>大厅来访</div> + </Col> + <Col span={16}> + <div ><div className="title-text">来访形式</div></div> + <div>来访</div> + </Col> + <Col span={24}> + <div className="title"><div className="title-text">事项概况</div></div> + <div>{props.data?.caseDes || '-'} </div> + </Col> + <Col span={24}> + <div className="title"><div className="title-text">事项申请</div></div> + <div>{props.data?.caseClaim || '-'}</div> + </Col> + <Col span={16}> + <div className="title"><div className="title-text">是否重大矛盾纠纷</div></div> + <div>{props.data?.majorStatus === 1 ? '是' : '否'}</div> + </Col> + </Row> + {props.transactResult && <> + <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '16px', marginTop: '20px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>办理结果</h4> + </Space> + </Col> + <table border="1" align="center" cellpadding="8" className="table" > + <tr> + <th bgcolor="#F7F8FA" className="table-title" width="120">化解结果</th> + <td width='380'>{props.transactResult.mediResultName || '-'}</td> + <th bgcolor="#F7F8FA" className="table-title" width="120">经办人</th> + <td width='380'>{props.transactResult.mediator || '-'}</td> + </tr> + <tr> + <th bgcolor="#F7F8FA" className="table-title">承办部门</th> + <td>{props.transactResult.mediateUnitName || '-'}</td> + <th bgcolor="#F7F8FA" className="table-title">配合部门</th> + <td>{props.transactResult.applyAssistUnitName || '-'}</td> + </tr> + <tr> + <th bgcolor="#F7F8FA" className="table-title" width="120">受理时间</th> + <td width='380'>2024-7-1 10:00</td> + <th bgcolor="#F7F8FA" className="table-title" width="120">办结时间</th> + <td width='380'>{props.transactResult?.fileTime || '-'}</td> + </tr> + <tr> + <th bgcolor="#F7F8FA" className="table-title" width="120">办理意见</th> + <td width='380' colspan='3'>{props.transactResult?.windupContent || '-'}</td> + </tr> + <tr> + <th bgcolor="#F7F8FA" className="table-title" width="120">协议要点</th> + <td width='380' colspan='3'>{props.transactResult?.agreeContent || '-'}</td> + </tr> + <tr> + <th bgcolor="#F7F8FA" className="table-title" width="120">结案意见</th> + <td width='380' colspan='3'>{props.transactResult?.windupContent || '-'}</td> + </tr> + <tr> + <th bgcolor="#F7F8FA" className="table-title" width="120">协议文书</th> + <td colspan='3'> + {props.transactResult?.fileInfoBaseDTOList?.map((item, index) => { + return <a href="your-link-here.html" target="_blank"> + <img src={link} alt="" className="title-file" />{item.trueName} + {index !== props.transactResult.fileInfoBaseDTOList.length - 1 && <>,</>} + </a> + })} + </td> + </tr> + </table> + </>} + <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px', marginTop: '20px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>事件材料</h4> + </Space> + </Col> + <FileTable mainId={props.mainId} fileInfoList={props.data?.fileInfoList} isReview={true} /> + </div> + ) } export default Preview \ No newline at end of file -- Gitblit v1.8.0