2 files added
36 files modified
| | |
| | | "axios": "^0.26.0", |
| | | "craco-less": "^2.0.0", |
| | | "crypto-js": "^4.1.1", |
| | | "docx-preview": "^0.3.5", |
| | | "echarts": "^5.4.2", |
| | | "html2canvas": "^1.4.1", |
| | | "import": "0.0.6", |
| | |
| | | * @Company: hugeInfo |
| | | * @Author: ldh |
| | | * @Date: 2022-02-16 11:25:57 |
| | | * @LastEditTime: 2025-05-26 15:03:51 |
| | | * @LastEditTime: 2025-06-10 17:33:34 |
| | | * @LastEditors: lwh |
| | | * @Version: 1.0.0 |
| | | * @Description: api地址 |
| | |
| | | }; |
| | | |
| | | // 测试 |
| | | // export const test = { |
| | | // // web服务 |
| | | // baseUrl: 'http://10.202.1.71:80', |
| | | // // baseUrl: 'https://zfw-dyh.by.gov.cn', |
| | | // // baseUrl: 'http://146.4.99.61:8088/byzfw', |
| | | |
| | | // // 附件服务 |
| | | // fileUrl: 'http://10.202.1.71:80', |
| | | // // fileUrl: 'https://zfw-dyh.by.gov.cn', |
| | | |
| | | // // 文件查看url 后面接附件编号 |
| | | // fileShowUrl: '/gzdyh-test-sys/api/web/fileInfo/show/', |
| | | // // 文件下载url 后面接附件编号 |
| | | // fileDownUrl: '/gzdyh-test-sys/api/web/fileInfo/down/', |
| | | // // 在线文档编辑链接 |
| | | // fileDocx: '/word/docDraft/showWord', |
| | | // // 签章的文档编辑链接 |
| | | // fileDocx2: '/InsertSeal/Word/AddSeal1/Word1', |
| | | |
| | | // // 不同服务接口type |
| | | // mediate: 'gzdyh-test-mediate', // dyh-mediate |
| | | // cust: 'gzdyh-test-cust', // dyh-cust |
| | | // oper: 'gzdyh-test-oper', // dyh-oper |
| | | // sys: 'gzdyh-test-sys', // dyh-sys |
| | | // disp: 'gzdyh-test-disp', //dyh-disp |
| | | // utils: 'gzdyh-test-utils', |
| | | // know: 'gzdyh-test-know', |
| | | // }; |
| | | |
| | | |
| | | // 测试 |
| | | export const test = { |
| | | // web服务 |
| | | baseUrl: 'http://10.202.1.71:80', |
| | | // baseUrl: 'https://zfw-dyh.by.gov.cn', |
| | | // baseUrl: 'http://146.4.99.61:8088/byzfw', |
| | | |
| | | // 附件服务 |
| | | fileUrl: 'http://10.202.1.71:80', |
| | | // fileUrl: 'https://zfw-dyh.by.gov.cn', |
| | | |
| | | // 文件查看url 后面接附件编号 |
| | | fileShowUrl: '/gzdyh-test-sys/api/web/fileInfo/show/', |
| | |
| | | * @Author: dminyi 1301963064@qq.com |
| | | * @Date: 2024-09-02 19:56:05 |
| | | * @LastEditors: lwh |
| | | * @LastEditTime: 2024-12-10 15:46:19 |
| | | * @LastEditTime: 2025-06-10 16:23:39 |
| | | * @FilePath: \gzDyh\gz-customerSystem\src\components\ArcoUpload\index.jsx |
| | | * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE |
| | | */ |
| | |
| | | drag |
| | | multiple |
| | | style={{ ...props.style }} |
| | | accept='.png,.jpg,.pdf' |
| | | accept='.png,.jpg,.pdf,.doc,.docx' |
| | | onDrop={(e) => { |
| | | }} |
| | | tip='支持png、jpg、pdf格式的图片上传,每次上传大小不超过10M' |
New file |
| | |
| | | import React, { Fragment, useState, useEffect, useRef } from 'react'; |
| | | import PropTypes from 'prop-types'; |
| | | import { Button, Space } from 'antd'; |
| | | import { Modal } from '@arco-design/web-react'; |
| | | import { CloseCircleFilled, DownloadOutlined } from '@ant-design/icons'; |
| | | import { IconAttachment } from '@arco-design/web-react/icon'; |
| | | import { Document, Page, pdfjs } from 'react-pdf'; |
| | | import * as $$ from '@/utils/utility'; |
| | | import './index.less'; |
| | | |
| | | // 设置pdf.js工作器路径 |
| | | pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`; |
| | | |
| | | const appUrl = $$.appUrl; |
| | | const MyPDF = ({ name, fileUrl }) => { |
| | | const [visible, setVisible] = useState(false); |
| | | const [numPages, setNumPages] = useState(null); |
| | | const [pageNumber, setPageNumber] = useState(1); |
| | | |
| | | // 成功加载PDF文件时的回调 |
| | | function onDocumentLoadSuccess({ numPages }) { |
| | | setNumPages(numPages); |
| | | setPageNumber(1); |
| | | } |
| | | |
| | | function changePage(offset) { |
| | | setPageNumber((prevPageNumber) => prevPageNumber + offset); |
| | | } |
| | | |
| | | function previousPage() { |
| | | changePage(-1); |
| | | } |
| | | |
| | | function nextPage() { |
| | | changePage(1); |
| | | } |
| | | |
| | | return ( |
| | | <div> |
| | | {fileUrl ? ( |
| | | <div |
| | | onClick={() => { |
| | | setVisible(true); |
| | | }} |
| | | className="pdf-title" |
| | | > |
| | | <IconAttachment style={{ color: '#1A6FB8' }} /> |
| | | <div className="pdf-name">{name}</div> |
| | | </div> |
| | | ) : ( |
| | | '-' |
| | | )} |
| | | |
| | | <Modal |
| | | style={{ width: '80%' }} |
| | | closable={false} |
| | | title={name} |
| | | footer={ |
| | | <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '10px' }}> |
| | | <button |
| | | type="button" |
| | | disabled={pageNumber <= 1} |
| | | onClick={previousPage} |
| | | style={{ padding: '4px 15px', cursor: pageNumber <= 1 ? 'not-allowed' : 'pointer' }} |
| | | > |
| | | 上一页 |
| | | </button> |
| | | <p style={{ margin: 0 }}> |
| | | 第 {pageNumber} 页 / 共 {numPages || '--'} 页 |
| | | </p> |
| | | <button |
| | | type="button" |
| | | disabled={pageNumber >= numPages} |
| | | onClick={nextPage} |
| | | style={{ padding: '4px 15px', cursor: pageNumber >= numPages ? 'not-allowed' : 'pointer' }} |
| | | > |
| | | 下一页 |
| | | </button> |
| | | <Button |
| | | type="primary" |
| | | icon={<DownloadOutlined />} |
| | | onClick={() => { |
| | | window.open(`${appUrl.fileUrl}${appUrl.fileDownUrl}${fileUrl.split('/').pop()}`); |
| | | }} |
| | | style={{ marginLeft: '10px' }} |
| | | > |
| | | 下载 |
| | | </Button> |
| | | </div> |
| | | } |
| | | centered |
| | | unmountOnExit={true} |
| | | visible={visible} |
| | | onCancel={() => { |
| | | setVisible(false); |
| | | }} |
| | | > |
| | | <div style={{ width: '100%', height: 'calc(100vh - 200px)', display: 'flex', justifyContent: 'center', overflow: 'auto' }}> |
| | | <Document |
| | | file={`${appUrl.fileUrl}/${appUrl.sys}${fileUrl}`} |
| | | onLoadSuccess={onDocumentLoadSuccess} |
| | | loading={<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>PDF加载中...</div>} |
| | | error={<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>PDF加载失败,请稍后重试</div>} |
| | | > |
| | | <Page pageNumber={pageNumber} renderTextLayer={false} renderAnnotationLayer={false} scale={1.2} /> |
| | | </Document> |
| | | </div> |
| | | </Modal> |
| | | </div> |
| | | ); |
| | | }; |
| | | |
| | | MyPDF.propTypes = { |
| | | title: PropTypes.any, |
| | | visible: PropTypes.bool, |
| | | onCancel: PropTypes.func, |
| | | onOk: PropTypes.func, |
| | | footer: PropTypes.any, |
| | | onText: PropTypes.string, |
| | | cancelText: PropTypes.string, |
| | | zIndex: PropTypes.number, |
| | | bodyStyle: PropTypes.object, |
| | | closable: PropTypes.bool, |
| | | centered: PropTypes.bool, |
| | | }; |
| | | |
| | | export default MyPDF; |
New file |
| | |
| | | @import '../../styles/theme.less'; |
| | | |
| | | .pdf { |
| | | &-title { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 4px; |
| | | cursor: pointer; |
| | | } |
| | | &-name { |
| | | color: @main-color; |
| | | } |
| | | } |
| | |
| | | import { CloseCircleFilled, DownloadOutlined } from '@ant-design/icons'; |
| | | import { IconAttachment } from '@arco-design/web-react/icon'; |
| | | import { Document, Page, pdfjs } from 'react-pdf'; |
| | | import * as docx from 'docx-preview'; |
| | | import * as $$ from '@/utils/utility'; |
| | | import PreviewImage from '@/components/PreviewImage'; |
| | | import './index.less'; |
| | | |
| | | // 设置pdf.js工作器路径 |
| | | pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`; |
| | | |
| | | const appUrl = $$.appUrl; |
| | | const MyPDF = ({ name, fileUrl }) => { |
| | | const MyPDF = ({ name, fileUrl, fileType }) => { |
| | | const [visible, setVisible] = useState(false); |
| | | const [numPages, setNumPages] = useState(null); |
| | | const [pageNumber, setPageNumber] = useState(1); |
| | | const containerRef = useRef(null); |
| | | |
| | | // 成功加载PDF文件时的回调 |
| | | function onDocumentLoadSuccess({ numPages }) { |
| | |
| | | } |
| | | |
| | | return ( |
| | | <> |
| | | {fileType === 'jpg' || fileType === 'png' ? ( |
| | | <PreviewImage name={name} src={fileUrl} /> |
| | | ) : ( |
| | | <div> |
| | | {fileUrl ? ( |
| | | <div |
| | | onClick={() => { |
| | | setVisible(true); |
| | | if (fileType === 'docx' || fileType === 'doc') { |
| | | const renderDocx = async () => { |
| | | try { |
| | | const response = await fetch(`${appUrl.fileUrl}/${appUrl.sys}${fileUrl}`); |
| | | const blob = await response.blob(); |
| | | await docx.renderAsync(blob, containerRef.current); |
| | | } catch (error) { |
| | | console.error('文档加载失败', error); |
| | | } |
| | | }; |
| | | renderDocx(); |
| | | } |
| | | }} |
| | | className="pdf-title" |
| | | > |
| | |
| | | }} |
| | | > |
| | | <div style={{ width: '100%', height: 'calc(100vh - 200px)', display: 'flex', justifyContent: 'center', overflow: 'auto' }}> |
| | | {fileType === 'pdf' && ( |
| | | <Document |
| | | file={`${appUrl.fileUrl}/${appUrl.sys}${fileUrl}`} |
| | | onLoadSuccess={onDocumentLoadSuccess} |
| | | loading={<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>PDF加载中...</div>} |
| | | error={<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>PDF加载失败,请稍后重试</div>} |
| | | error={ |
| | | <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>PDF加载失败,请稍后重试</div> |
| | | } |
| | | > |
| | | <Page pageNumber={pageNumber} renderTextLayer={false} renderAnnotationLayer={false} scale={1.2} /> |
| | | </Document> |
| | | )} |
| | | {fileType === 'docx' && <div ref={containerRef} className="docx-container" />} |
| | | {fileType === 'doc' && <div ref={containerRef} className="docx-container" />} |
| | | </div> |
| | | </Modal> |
| | | </div> |
| | | )} |
| | | </> |
| | | ); |
| | | }; |
| | | |
| | |
| | | * @Company: hugeInfo |
| | | * @Author: ldh |
| | | * @Date: 2022-03-04 14:29:11 |
| | | * @LastEditTime: 2024-10-24 10:25:23 |
| | | * @LastEditTime: 2025-06-12 17:24:36 |
| | | * @LastEditors: lwh |
| | | * @Version: 1.0.0 |
| | | * @Description: 页面框架 |
| | |
| | | import './index.less'; |
| | | import * as $$ from '../../utils/utility'; |
| | | import RegisterChooseModal from '../RegisterChooseModal'; |
| | | import { Watermark } from '@arco-design/web-react'; |
| | | |
| | | const NewPage = ({ children, pageHead, registerChooseModalVisible }) => { |
| | | if (!$$.getSessionStorage('customerSystemToken')) { |
| | |
| | | return null; |
| | | } |
| | | |
| | | let customerSystemUser = $$.getSessionStorage('customerSystemUser'); |
| | | |
| | | const getCurrentTime = () => { |
| | | const now = new Date(); |
| | | const year = now.getFullYear(); |
| | | const month = String(now.getMonth() + 1).padStart(2, '0'); |
| | | const day = String(now.getDate()).padStart(2, '0'); |
| | | const hours = String(now.getHours()).padStart(2, '0'); |
| | | const minutes = String(now.getMinutes()).padStart(2, '0'); |
| | | const seconds = String(now.getSeconds()).padStart(2, '0'); |
| | | return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
| | | }; |
| | | |
| | | const watermarkContent = `${customerSystemUser.trueName} ${getCurrentTime()}`; |
| | | |
| | | return ( |
| | | <> |
| | | <Watermark style={{ height: '100%' }} gap={[200, 200]} content={watermarkContent}> |
| | | {!!pageHead && <PageHead {...pageHead} />} |
| | | {children} |
| | | {/* 纠纷登录入口modal */} |
| | | {!!registerChooseModalVisible && <RegisterChooseModal visible={registerChooseModalVisible} />} |
| | | </> |
| | | </Watermark> |
| | | ); |
| | | }; |
| | | |
| | |
| | | handleSearch('', arr); |
| | | }, [data]); |
| | | |
| | | |
| | | const getParentKey = (key, tree) => { |
| | | let parentKey; |
| | | for (let i = 0; i < tree.length; i++) { |
| | |
| | | }; |
| | | |
| | | function handleSearch(value, dataList) { |
| | | |
| | | console.log('value, dataList', value, dataList); |
| | | const newExpandedKeys = dataList |
| | | .map((item) => { |
| | |
| | | } |
| | | |
| | | const treeData = useMemo(() => { |
| | | const loop = (data) => |
| | | data.map((item) => { |
| | | const loop = (data) => { |
| | | const copiedData = JSON.parse(JSON.stringify(data)); |
| | | return copiedData.map((item, idx) => { |
| | | const strTitle = item.label; |
| | | const index = strTitle.indexOf(searchValue); |
| | | |
| | | // 只保留包含 searchValue 的项 |
| | | if (index <= -1 && !item.children) { |
| | | return null; // 返回 null 表示不包含在最终结果中 |
| | | } |
| | | |
| | | const beforeStr = strTitle.substring(0, index); |
| | | const afterStr = strTitle.slice(index + searchValue.length); |
| | | const label = |
| | |
| | | ) : ( |
| | | <span>{strTitle}</span> |
| | | ); |
| | | |
| | | if (item.children) { |
| | | const filteredChildren = loop(item.children).filter(Boolean); // 递归处理子项并过滤掉 null |
| | | return { |
| | | label, |
| | | name: strTitle, |
| | | value: item.value, |
| | | checkable: item.checkable, |
| | | children: loop(item.children), |
| | | children: filteredChildren.length > 0 ? filteredChildren : undefined, |
| | | }; |
| | | } |
| | | |
| | | return { |
| | | label, |
| | | name: strTitle, |
| | | checkable: item.checkable, |
| | | value: item.value, |
| | | }; |
| | | }); |
| | | // data = data.filter(i => i.label?.indexOf(searchValue) > -1); |
| | | // console.log('data.filter',data.filter(i => i.label?.indexOf(searchValue) > -1)); |
| | | console.log('loop(data)', loop(data)); |
| | | }).filter(Boolean); // 过滤掉 null |
| | | }; |
| | | |
| | | return loop(data); |
| | | |
| | | }, [searchValue, data]); |
| | | |
| | | |
| | | useEffect(() => { |
| | | if (!visible) return; |
| | |
| | | <div className="selectObjModal-main"> |
| | | <div className="selectObjModal-left"> |
| | | <div className="selectObjModal-left-search"> |
| | | <Search placeholder={`查询${nameStr}名称`} onChange={(e) => handleSearch(e.target.value, dataList)} /> |
| | | <Search |
| | | placeholder={`查询${nameStr}名称`} |
| | | onSearch={(e) => { |
| | | // handleSearch('', dataList) |
| | | if (!e) { |
| | | handleSearch('', dataList); |
| | | } else { |
| | | handleSearch(e, dataList); |
| | | } |
| | | }} |
| | | /> |
| | | </div> |
| | | <div className="selectObjModal-left-main"> |
| | | {data.length > 0 ? ( |
| | |
| | | const txtMap = { |
| | | supUnit: '组织', |
| | | dept: '部门', |
| | | dept_union: '部门', |
| | | person: '人', |
| | | unit: '组织' |
| | | } |
| | |
| | | case 'dept': |
| | | url = `ctUnit/unitChoose` |
| | | break; |
| | | case 'dept_union': |
| | | url = `ctUnit/unitChoose4Union` |
| | | break; |
| | | case 'person': |
| | | url = 'ctUser/userChoose' |
| | | break |
| | |
| | | import React, { useEffect, useState } from 'react' |
| | | import KeyVisits from "./KeyVisits"; |
| | | import React, { useEffect, useState } from 'react'; |
| | | import KeyVisits from './KeyVisits'; |
| | | import { majorStatus_1 } from '@/assets/images'; |
| | | import { Scrollbars } from "react-custom-scrollbars"; |
| | | import { Scrollbars } from 'react-custom-scrollbars'; |
| | | import PreviewImage from '../PreviewImage'; |
| | | import MyPDF from '../MyPDF'; |
| | | import { checkIdCard } from "../../utils/utility"; |
| | | import { checkIdCard } from '../../utils/utility'; |
| | | import { Tooltip } from '@arco-design/web-react'; |
| | | import * as $$ from '@/utils/utility'; |
| | | const appUrl = $$.appUrl; |
| | |
| | | value: '', |
| | | field: 'age', |
| | | }, |
| | | |
| | | ], |
| | | [ |
| | | { |
| | |
| | | field: 'extreme', |
| | | }, |
| | | ], |
| | | ] |
| | | ]; |
| | | const legalList = [ |
| | | [ |
| | | { |
| | |
| | | label: '住所', |
| | | value: '', |
| | | field: 'placeAddr', |
| | | isRow: true |
| | | isRow: true, |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | field: 'file1', |
| | | }, |
| | | ], |
| | | ] |
| | | ]; |
| | | const organizationList = [ |
| | | [ |
| | | { |
| | |
| | | label: '住所', |
| | | value: '', |
| | | field: 'placeAddr', |
| | | isRow: true |
| | | isRow: true, |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | field: 'file1', |
| | | }, |
| | | ], |
| | | ] |
| | | ]; |
| | | const agentList = [ |
| | | [ |
| | | { |
| | |
| | | label: '代理对象', |
| | | value: '', |
| | | field: 'personId', |
| | | isRow: true |
| | | isRow: true, |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | field: 'file1', |
| | | }, |
| | | ], |
| | | ] |
| | | const [tableList, setTableList] = useState([]) |
| | | ]; |
| | | const [tableList, setTableList] = useState([]); |
| | | const [certiNo, setCertiNo] = useState(''); |
| | | const [certiShow, setCertiShow] = useState(false); |
| | | // 反应诉求记录 |
| | |
| | | const [search, setSearch] = useState({ page: 1, size: 5 }); |
| | | |
| | | function getAllApi(num) { |
| | | countPerson(num) |
| | | pagePerson({ ...search, certiNo: num }) |
| | | countPerson(num); |
| | | pagePerson({ ...search, certiNo: num }); |
| | | } |
| | | |
| | | // 根据个人身份证号查询重点人员信息 |
| | | async function getLabelInfo(idCard) { |
| | | const res = await getLabelInfoApi({ idNumber: idCard }) |
| | | const res = await getLabelInfoApi({ idNumber: idCard }); |
| | | if (res.type) { |
| | | let data = res.data || {}; |
| | | console.log('res.data', res.data); |
| | | setLabelInfo(data?.labelList) |
| | | setLabelInfo(data?.labelList); |
| | | } |
| | | } |
| | | |
| | | // 个人案件统计 |
| | | async function countPerson(idCard) { |
| | | const res = await countPersonApi({ certiNo: idCard }) |
| | | const res = await countPersonApi({ certiNo: idCard }); |
| | | if (res.type) { |
| | | setHisData(res.data || {}) |
| | | setHisData(res.data || {}); |
| | | } |
| | | } |
| | | |
| | |
| | | // 页码修改 |
| | | function handleChangePage(page, pageSize, field, order) { |
| | | let paramsObj = Object.assign(search, { page, size: pageSize }); |
| | | paramsObj = { ...paramsObj } |
| | | paramsObj = { ...paramsObj }; |
| | | setSearch(paramsObj); |
| | | |
| | | pagePerson(paramsObj); |
| | |
| | | |
| | | useEffect(() => { |
| | | if (checkIdCard(props.editData?.certiNo)) { |
| | | setCertiShow(true) |
| | | setCertiNo(props.editData?.certiNo) |
| | | getAllApi(props.editData?.certiNo) |
| | | setCertiShow(true); |
| | | setCertiNo(props.editData?.certiNo); |
| | | getAllApi(props.editData?.certiNo); |
| | | } |
| | | const data = props.editData |
| | | let newList |
| | | let mapList = [] |
| | | if (data.perClass === "09_01001-1") { |
| | | const data = props.editData; |
| | | let newList; |
| | | let mapList = []; |
| | | if (data.perClass === '09_01001-1') { |
| | | //自然人 |
| | | mapList = nuturalList |
| | | mapList = nuturalList; |
| | | } |
| | | if (data.perClass === "09_01001-2") { |
| | | if (data.perClass === '09_01001-2') { |
| | | //法人组织 |
| | | mapList = legalList |
| | | mapList = legalList; |
| | | } |
| | | if (data.perClass === "09_01001-3") { |
| | | if (data.perClass === '09_01001-3') { |
| | | //非法人组织 |
| | | mapList = organizationList |
| | | mapList = organizationList; |
| | | } |
| | | if (data.perType === "24_00006-1" || data.perType === "24_00006-2") { |
| | | if (data.perType === '24_00006-1' || data.perType === '24_00006-2') { |
| | | //代理人 |
| | | mapList = agentList |
| | | mapList = agentList; |
| | | } |
| | | newList = mapList.map(item => { |
| | | return item.map(res => { |
| | | newList = mapList.map((item) => { |
| | | return item.map((res) => { |
| | | if (res.isFile) { |
| | | return { |
| | | ...res, |
| | | value: <> |
| | | value: ( |
| | | <> |
| | | {data[res.field]?.map((item, index) => { |
| | | if (item.response) { |
| | | //新上传的,前端数据 |
| | | const newData = item.response.data[0] |
| | | return <div style={{ display: 'inline-block' }}> |
| | | {newData.suffix === 'pdf' ? <MyPDF name={newData.name} fileUrl={newData.showUrl} /> : <PreviewImage name={newData.name} src={newData.showUrl} />} |
| | | const newData = item.response.data[0]; |
| | | return ( |
| | | <div style={{ display: 'inline-block' }}> |
| | | <MyPDF key={index} name={newData.name} fileUrl={newData.showUrl} fileType={newData.suffix} /> |
| | | {index !== data[res.field].length - 1 && <>,</>} |
| | | </div> |
| | | ); |
| | | } else { |
| | | return <div style={{ display: 'inline-block' }}> |
| | | {item.suffix === 'pdf' ? <MyPDF name={item.name} fileUrl={item.showUrl} /> : <PreviewImage name={item.name} src={item.showUrl} />} |
| | | return ( |
| | | <div style={{ display: 'inline-block' }}> |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | {index !== data[res.field].length - 1 && <>,</>} |
| | | </div> |
| | | ); |
| | | } |
| | | })} |
| | | </> |
| | | } |
| | | ), |
| | | }; |
| | | } |
| | | if (res.isName) { |
| | | return { |
| | | ...res, |
| | | value: data[res.field], |
| | | perClass: data.perClassName || data.perTypeName |
| | | } |
| | | perClass: data.perClassName || data.perTypeName, |
| | | }; |
| | | } else { |
| | | if (res.field === 'personId') { |
| | | const filterValue = props.personData.filter(result => data[res.field].indexOf(result.id) != -1).map(result => result.trueName).join(',') |
| | | const filterValue = props.personData |
| | | .filter((result) => data[res.field].indexOf(result.id) != -1) |
| | | .map((result) => result.trueName) |
| | | .join(','); |
| | | return { |
| | | ...res, |
| | | value: filterValue |
| | | } |
| | | value: filterValue, |
| | | }; |
| | | } else if (res.field === 'extreme') { |
| | | return { |
| | | ...res, |
| | | label: <div style={{ |
| | | label: ( |
| | | <div |
| | | style={{ |
| | | padding: '8px', |
| | | display: 'flex', |
| | | gap: '8px', |
| | | alignItems: 'center', |
| | | color: data[res.field] === 1 ? '#F53F3F' : 'inherit' |
| | | }} className='title-text-red'> |
| | | color: data[res.field] === 1 ? '#F53F3F' : 'inherit', |
| | | }} |
| | | className="title-text-red" |
| | | > |
| | | {data[res.field] === 1 && <img src={majorStatus_1} alt="" srcset="" />} |
| | | <Tooltip content='是否有个人极端倾向'>{$$.ellipsis('是否有个人极端倾向', 6)}</Tooltip> |
| | | </div>, |
| | | value: data[res.field] === 1 ? '是' : data[res.field] === 0 ? '否' : '-' |
| | | } |
| | | <Tooltip content="是否有个人极端倾向">{$$.ellipsis('是否有个人极端倾向', 6)}</Tooltip> |
| | | </div> |
| | | ), |
| | | value: data[res.field] === 1 ? '是' : data[res.field] === 0 ? '否' : '-', |
| | | }; |
| | | } else { |
| | | return { |
| | | ...res, |
| | | value: data[res.field] |
| | | value: data[res.field], |
| | | }; |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | }); |
| | | }); |
| | | |
| | | setTableList(newList) |
| | | }, []) |
| | | |
| | | setTableList(newList); |
| | | }, []); |
| | | |
| | | return ( |
| | | <Scrollbars |
| | |
| | | autoHeightMax={590} |
| | | > |
| | | <table border="1" align="center" cellpadding="8" className="table" style={{ marginBottom: '20px' }}> |
| | | { |
| | | tableList?.map((item, index) => { |
| | | return <tr key={'tableList' + index}> |
| | | { |
| | | item?.map(res => { |
| | | return <> |
| | | <th bgcolor="#F7F8FA" className="table-title" width={150}>{res.label}</th> |
| | | {tableList?.map((item, index) => { |
| | | return ( |
| | | <tr key={'tableList' + index}> |
| | | {item?.map((res) => { |
| | | return ( |
| | | <> |
| | | <th bgcolor="#F7F8FA" className="table-title" width={150}> |
| | | {res.label} |
| | | </th> |
| | | <td width={320} colspan={res.isRow ? '3' : '1'}> |
| | | <div style={{ display: 'flex', minHeight: '22px' }}> |
| | | <div>{res.value}</div> |
| | |
| | | </div> |
| | | </td> |
| | | </> |
| | | }) |
| | | } |
| | | ); |
| | | })} |
| | | </tr> |
| | | }) |
| | | } |
| | | ); |
| | | })} |
| | | </table> |
| | | {/* 重复来访重点人员 */} |
| | | { |
| | | certiShow && |
| | | {certiShow && ( |
| | | <div style={{ width: 'calc(100% - 9px)', background: '#f2f3f5', marginBottom: '20px', padding: '12px' }}> |
| | | <KeyVisits labelInfo={labelInfo} data={hisData} fakeData={fakeData} search={search} handleChangePage={handleChangePage} /> |
| | | </div> |
| | | } |
| | | )} |
| | | </Scrollbars> |
| | | ) |
| | | ); |
| | | } |
| | |
| | | label: '待分派', |
| | | }, |
| | | { |
| | | value: '2', |
| | | label: '待签收', |
| | | }, |
| | | { |
| | | value: '3', |
| | | label: '待受理', |
| | | }, |
| | |
| | | }, |
| | | ] |
| | | |
| | | |
| | | const systemSource = [ |
| | | { |
| | | value: '0', |
| | | label: '市平台', |
| | | }, |
| | | { |
| | | value: '1', |
| | | label: '白云区平台', |
| | | }, |
| | | ] |
| | | |
| | | const obj = { |
| | | systemSource, |
| | | caseCanal, |
| | | visitWay, |
| | | personType, |
| | |
| | | * @Company: hugeInfo |
| | | * @Author: ldh |
| | | * @Date: 2022-02-16 11:57:54 |
| | | * @LastEditTime: 2025-05-30 16:51:32 |
| | | * @LastEditTime: 2025-06-10 17:40:29 |
| | | * @LastEditors: lwh |
| | | * @Version: 1.0.0 |
| | | * @Description: 公共模块方法 |
| | |
| | | import { empty } from '@/assets/images'; |
| | | |
| | | export const isDebug = false; // 是否开发环境 |
| | | export const isTest = false; // 是否测试环境 |
| | | export const isTest = true; // 是否测试环境 |
| | | |
| | | export const appUrl = isDebug ? debug : isTest ? test : web; // api |
| | | |
| | |
| | | { type: 'RangePicker', name: 'fileTime', label: '归档时间', shortcutsPlacementLeft: true, shortcuts: $$.shortcutsList(), span: 8 }, |
| | | { type: 'Cascader', name: 'caseType', label: '纠纷类型', placeholder: '请选择', span: 8, changeSelect: true, treedata: $$.caseTypeSelect.caseTypeSelect }, |
| | | { type: 'Select', name: 'mediResult', label: '化解结果', placeholder: '请选择', span: 8, selectdata: $$.options.mediResult }, |
| | | { type: 'Input', name: 'caseRef', label: '事项编号' }, |
| | | { type: 'Select', name: 'canal', label: '事项来源', placeholder: '请选择', span: 8, selectdata: $$.options.caseCanal }, |
| | | { type: 'Select', name: 'status', label: '事项状态', placeholder: '请选择', span: 8, selectdata: $$.options.caseStatus }, |
| | | { type: 'Select', name: 'caseLevel', label: '事项等级', placeholder: '请选择', span: 8, selectdata: $$.options.caseLevelList }, |
| | | { type: 'Select', name: 'systemSource', label: '系统来源', placeholder: '请选择', span: 8, selectdata: $$.options.systemSource }, |
| | | { type: 'Input', name: 'inputUnitName', label: '登记机构' }, |
| | | { type: 'searchButton', name: 'mediateUnitId', maxLength: 0, onClear: () => { console.log('clear'); setSelectObjModalData({ ...selectObjModalData, mediateUnitId: {} }); form.setFieldValue('mediateUnitId', '') }, onSearch: () => { onChange('mediateUnitId') }, searchButton: '选择', placeholder: '请选择', label: '承办部门' }, |
| | | { type: 'searchButton', name: 'assistUnitId', maxLength: 0, onClear: () => { setSelectObjModalData({ ...selectObjModalData, assistUnitId: {} }); form.setFieldValue('assistUnitId', '') }, onSearch: () => { onChange('assistUnitId') }, searchButton: '选择', placeholder: '请选择', label: '配合部门' }, |
| | | { type: 'Input', name: 'caseRef', label: '事项编号' }, |
| | | { type: 'Input', name: 'plaintiffs', label: '申请方', labelStyle: { width: '56px' } }, |
| | | { type: 'Input', name: 'defendants', label: '被申请方' }, |
| | | { type: 'Select', name: 'peopleNum', placeholder: '请选择', label: '涉及人数', selectdata: $$.options.peopleNum }, |
| | |
| | | { type: 'Select', name: 'isRisk', placeholder: '请选择', label: '是否扬言极端', selectdata: [{ label: '是', value: '1' }, { label: '否', value: '0' }] }, |
| | | { type: 'Select', name: 'agreeType', placeholder: '请选择', label: '结案协议类型', selectdata: $$.options.caseAgreeType }, |
| | | { type: 'Select', name: 'repeatCase', placeholder: '请选择', label: '合并事项', selectdata: $$.options.repeatCase }, |
| | | { type: 'Input', name: 'caseCityCode', label: '市民编号' }, |
| | | ]} |
| | | handleReset={() => { |
| | | form.resetFields(); |
| | |
| | | * @Company: hugeInfo |
| | | * @Author: lwh |
| | | * @Date: 2024-09-14 15:59:17 |
| | | * @LastEditTime: 2025-06-04 21:18:43 |
| | | * @LastEditTime: 2025-06-14 11:35:43 |
| | | * @LastEditors: lwh |
| | | * @Version: 1.0.0 |
| | | * @Description: |
| | |
| | | > |
| | | <div> |
| | | <div className="disputeLedger-card-content"> |
| | | <div className={`disputeLedger-card-content-t`}> |
| | | {item.title} |
| | | </div> |
| | | <div className={`disputeLedger-card-content-t`}>{item.title}</div> |
| | | <div> |
| | | <span className={`disputeLedger-card-title`}> |
| | | {item.value} |
| | | </span>{' '} |
| | | <span className={`disputeLedger-unit`}>件</span>{' '} |
| | | {item.per && ( |
| | | <span className={`disputeLedger-unit `}>| {item.per}</span> |
| | | )} |
| | | <span className={`disputeLedger-card-title`}>{item.value}</span> <span className={`disputeLedger-unit`}>件</span>{' '} |
| | | {item.per && <span className={`disputeLedger-unit `}>| {item.per}</span>} |
| | | </div> |
| | | </div> |
| | | <img src={item.icon} style={{ width: activeKey === index && '52px', height: activeKey === index && '52px' }} alt="" /> |
| | |
| | | <div style={{ paddingBottom: '12px' }}> |
| | | <MyLTopChartPie1 |
| | | data={[ |
| | | { value: data.data4.value1, name: '化解中' }, |
| | | { value: data.data4.value2, name: '化解成功' }, |
| | | { value: data.data4.value3, name: '化解不成功' }, |
| | | { value: data.rejectNum, name: '不予受理' }, |
| | | { value: data.processNum, name: '化解中' }, |
| | | { value: data.finishNum, name: '化解成功' }, |
| | | { value: data.failNum, name: '化解不成功' }, |
| | | ]} |
| | | allNum={allNum} |
| | | /> |
| | |
| | | }, |
| | | data: [ |
| | | { |
| | | name: '不予受理', |
| | | icon: 'circle', // 图例标记的形状 |
| | | }, |
| | | { |
| | | name: '化解中', |
| | | icon: 'circle', // 图例标记的形状 |
| | | }, |
| | |
| | | type: 'pie', |
| | | radius: ['60%', '90%'], // 设置饼图的内半径和外半径,实现扇形区域 |
| | | center: ['30%', '50%'], |
| | | color: ['#B6DDF1', '#3A8AC6', '#094282'], |
| | | color: ['#B6DDF1', '#5BA8E5', '#3A8AC6', '#094282'], |
| | | data: data, |
| | | label: { |
| | | show: true, |
| | |
| | | import NameCard2 from '../../components/NameCard2'; |
| | | import MyPDF from '../../components/MyPDF'; |
| | | import PersonCard from '../register/matterDetail/personCard'; |
| | | import { Scrollbars } from "react-custom-scrollbars"; |
| | | import { Scrollbars } from 'react-custom-scrollbars'; |
| | | import TranferReviewProgress from '@/components/ReviewProgress/ReviewProgress.jsx'; |
| | | |
| | | function listMyApplyRecord(data) { |
| | |
| | | export default function ApplyInfo(props) { |
| | | const [list, setList] = useState([]); |
| | | const [loading, setLoading] = useState(false); |
| | | const [personView, setPersonView] = useState(false) |
| | | const [personId, setPersonId] = useState('') |
| | | |
| | | const [personView, setPersonView] = useState(false); |
| | | const [personId, setPersonId] = useState(''); |
| | | |
| | | const map = { |
| | | '上报申请': [ |
| | | [{ |
| | | [ |
| | | { |
| | | value: 'subTitle', |
| | | label: '申请信息', |
| | | }, |
| | |
| | | { |
| | | value: 'fileInfo', |
| | | label: '附件材料', |
| | | fileKey: '22_00018-512' |
| | | fileKey: '22_00018-512', |
| | | }, |
| | | { |
| | | value: 'applyTime', |
| | |
| | | value: 'applyPeople', |
| | | label: '申请人', |
| | | unitName: 'applyUnitName', |
| | | peopleName: 'applyUserName' |
| | | peopleName: 'applyUserName', |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | { |
| | | value: 'fileInfo', |
| | | label: '附件材料', |
| | | fileKey: '22_00018-513' |
| | | fileKey: '22_00018-513', |
| | | }, |
| | | { |
| | | value: 'auditTime', |
| | |
| | | value: 'auditPeople', |
| | | label: '审核人', |
| | | unitName: 'auditUnitName', |
| | | peopleName: 'auditUserName' |
| | | peopleName: 'auditUserName', |
| | | }, |
| | | ] |
| | | ], |
| | | ], |
| | | '回退申请': [ |
| | | [{ |
| | | [ |
| | | { |
| | | value: 'subTitle', |
| | | label: '申请信息', |
| | | }, |
| | |
| | | { |
| | | value: 'fileInfo', |
| | | label: '附件材料', |
| | | fileKey: '22_00018-510' |
| | | fileKey: '22_00018-510', |
| | | }, |
| | | { |
| | | value: 'returnTime', |
| | |
| | | value: 'applyPeople', |
| | | label: '申请人', |
| | | unitName: 'returnUnitName', |
| | | peopleName: 'returnUserName' |
| | | peopleName: 'returnUserName', |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | { |
| | | value: 'fileInfo', |
| | | label: '附件材料', |
| | | fileKey: '22_00018-511' |
| | | fileKey: '22_00018-511', |
| | | }, |
| | | { |
| | | value: 'auditTime', |
| | |
| | | value: 'auditPeople', |
| | | label: '审核人', |
| | | unitName: 'auditUnitName', |
| | | peopleName: 'auditUserName' |
| | | peopleName: 'auditUserName', |
| | | }, |
| | | ] |
| | | ], |
| | | ], |
| | | '联合处置申请': [ |
| | | [{ |
| | | [ |
| | | { |
| | | value: 'subTitle', |
| | | label: '申请信息', |
| | | }, |
| | |
| | | { |
| | | value: 'fileInfo', |
| | | label: '附件材料', |
| | | fileKey: '22_00018-508' |
| | | fileKey: '22_00018-508', |
| | | }, |
| | | { |
| | | value: 'applyTime', |
| | |
| | | value: 'applyPeople', |
| | | label: '申请人', |
| | | unitName: 'applyUnitName', |
| | | peopleName: 'applyUserName' |
| | | peopleName: 'applyUserName', |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | { |
| | | value: 'fileInfo', |
| | | label: '附件材料', |
| | | fileKey: '22_00018-509' |
| | | fileKey: '22_00018-509', |
| | | }, |
| | | { |
| | | value: 'auditTime', |
| | |
| | | value: 'auditPeople', |
| | | label: '审核人', |
| | | unitName: 'auditUnitName', |
| | | peopleName: 'auditUserName' |
| | | peopleName: 'auditUserName', |
| | | }, |
| | | ] |
| | | ], |
| | | ], |
| | | '结案申请': [ |
| | | [{ |
| | | [ |
| | | { |
| | | value: 'subTitle', |
| | | label: '申请信息', |
| | | }, |
| | |
| | | value: 'applyPeople', |
| | | label: '申请人', |
| | | unitName: 'applyUnitName', |
| | | peopleName: 'applyUserName' |
| | | peopleName: 'applyUserName', |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | { |
| | | value: 'fileInfo', |
| | | label: '附件材料', |
| | | fileKey: '22_00018-514' |
| | | fileKey: '22_00018-514', |
| | | }, |
| | | { |
| | | value: 'auditTime', |
| | |
| | | value: 'auditPeople', |
| | | label: '审核人', |
| | | unitName: 'auditUnitName', |
| | | peopleName: 'auditUserName' |
| | | peopleName: 'auditUserName', |
| | | }, |
| | | ] |
| | | ], |
| | | ], |
| | | '结案申请1': [ |
| | | [{ |
| | | [ |
| | | { |
| | | value: 'subTitle', |
| | | label: '申请信息', |
| | | }, |
| | |
| | | value: 'applyPeople', |
| | | label: '申请人', |
| | | unitName: 'applyUnitName', |
| | | peopleName: 'applyUserName' |
| | | peopleName: 'applyUserName', |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | { |
| | | value: 'reviewProgress', |
| | | }, |
| | | ] |
| | | ], |
| | | ],//这个是1、2事件的结案申请 |
| | | '转入人民调解系统申请': [ |
| | | [{ |
| | | [ |
| | | { |
| | | value: 'subTitle', |
| | | label: '申请信息', |
| | | }, |
| | |
| | | value: 'applyPeople', |
| | | label: '申请人', |
| | | unitName: 'applyUnitName', |
| | | peopleName: 'applyUserName' |
| | | peopleName: 'applyUserName', |
| | | }, |
| | | ], |
| | | [ |
| | |
| | | { |
| | | value: 'tranferReviewProgress', |
| | | }, |
| | | ] |
| | | ], |
| | | ], |
| | | '司法确认申请': [ |
| | | [{ |
| | | [ |
| | | { |
| | | value: 'subTitle', |
| | | label: '申请信息', |
| | | }, |
| | |
| | | { |
| | | value: 'filePDF', |
| | | label: '调解协议书', |
| | | fileKey: '22_00018-302' |
| | | fileKey: '22_00018-302', |
| | | }, |
| | | { |
| | | value: 'filePDF', |
| | | label: '非诉讼调解协议司法确认申请书', |
| | | fileKey: '22_00018-402' |
| | | fileKey: '22_00018-402', |
| | | }, |
| | | { |
| | | value: 'filePDF', |
| | | label: '诉前联调协议案件移送函', |
| | | fileKey: '22_00018-403' |
| | | fileKey: '22_00018-403', |
| | | }, |
| | | { |
| | | value: 'filePDF', |
| | | label: '送达地址确认书', |
| | | fileKey: '22_00018-108' |
| | | fileKey: '22_00018-108', |
| | | }, |
| | | { |
| | | value: 'applyTime', |
| | |
| | | value: 'applyPeople', |
| | | label: '申请人', |
| | | unitName: 'applyUnitName', |
| | | peopleName: 'applyUserName' |
| | | peopleName: 'applyUserName', |
| | | }, |
| | | ] |
| | | ], |
| | | } |
| | | ], |
| | | }; |
| | | |
| | | useEffect(() => { |
| | | getData(props.caseId) |
| | | }, []) |
| | | getData(props.caseId); |
| | | }, []); |
| | | |
| | | const getData = async (caseId) => { |
| | | setLoading(true) |
| | | setLoading(true); |
| | | const res = await listMyApplyRecord({ |
| | | caseId |
| | | }) |
| | | caseId, |
| | | }); |
| | | if (res.type) { |
| | | setLoading(false) |
| | | setList(res.data) |
| | | setLoading(false); |
| | | setList(res.data); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | const toggleView = (id) => { |
| | | setList(list.map((record, index) => { |
| | | setList( |
| | | list.map((record, index) => { |
| | | if (index === id) { |
| | | return { |
| | | ...record, |
| | |
| | | }; |
| | | } |
| | | return record; |
| | | })); |
| | | }) |
| | | ); |
| | | }; |
| | | |
| | | const handlePersonDetail = (id) => { |
| | | setPersonId(id) |
| | | setPersonView(true) |
| | | } |
| | | setPersonId(id); |
| | | setPersonView(true); |
| | | }; |
| | | |
| | | const handleDom = (data, item) => { |
| | | console.log('111111111111', data, item); |
| | | const { object, fileList } = item |
| | | const { object, fileList } = item; |
| | | if (data.value === 'subTitle') { |
| | | //标题 |
| | | return <Col span={24} key={data.value}> |
| | | <Space size='small'> |
| | | <div className='MediationInfo-subTitle' style={{ marginTop: '-8px' }}></div><h5>{data.label}</h5> |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <Space size="small"> |
| | | <div className="MediationInfo-subTitle" style={{ marginTop: '-8px' }}></div> |
| | | <h5>{data.label}</h5> |
| | | </Space> |
| | | </Col> |
| | | ); |
| | | } else if (data.value === 'fileInfo') { |
| | | //文件 |
| | | let fileData = {} |
| | | let fileData = {}; |
| | | if (fileList && fileList.length != 0) { |
| | | fileData = fileList.find(item => data.fileKey == item.ownerType) || {} |
| | | fileData = fileList.find((item) => data.fileKey == item.ownerType) || {}; |
| | | } |
| | | return <Col span={24} key={data.value}> |
| | | <div><div className="title-text">{data.label}</div></div> |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <div> |
| | | <div className="title-text">{data.label}</div> |
| | | </div> |
| | | <div style={{ color: '#1A6FB8' }}> |
| | | {fileData.fileList?.map((result, resIndex) => { |
| | | return <div style={{ display: 'inline-block' }}> |
| | | return ( |
| | | <div style={{ display: 'inline-block' }}> |
| | | <PreviewImage name={result.name} src={result.showUrl} /> |
| | | {resIndex !== fileData.fileList?.length - 1 && <>,</>} |
| | | </div> |
| | | ); |
| | | }) || '-'} |
| | | </div> |
| | | </Col> |
| | | ); |
| | | } else if (data.value === 'filePDF') { |
| | | //文件 |
| | | let fileData = {} |
| | | let fileData = {}; |
| | | if (fileList && fileList.length != 0) { |
| | | fileData = fileList.find(item => data.fileKey == item.ownerType) || {} |
| | | fileData = fileList.find((item) => data.fileKey == item.ownerType) || {}; |
| | | } |
| | | console.log('fileData', fileData); |
| | | |
| | | return <Col span={24} key={data.value}> |
| | | <div><div className="title-text">{data.label}</div></div> |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <div> |
| | | <div className="title-text">{data.label}</div> |
| | | </div> |
| | | <div style={{ color: '#1A6FB8' }}> |
| | | {fileData.fileList?.map((result, resIndex) => { |
| | | return <div style={{ display: 'inline-block' }}> |
| | | {result.suffix === 'pdf' ? |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} /> : |
| | | <PreviewImage name={result.name} src={result.showUrl} /> |
| | | } |
| | | return ( |
| | | <div style={{ display: 'inline-block' }}> |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} /> |
| | | {resIndex !== fileData.fileList?.length - 1 && <>,</>} |
| | | </div> |
| | | ); |
| | | }) || '-'} |
| | | </div> |
| | | </Col> |
| | | ); |
| | | } else if (data.value === 'applyPeople' || data.value === 'auditPeople') { |
| | | //申请人 |
| | | return <Col span={24} key={data.value}> |
| | | <div><div className="title-text">{data.label}</div></div> |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <div> |
| | | <div className="title-text">{data.label}</div> |
| | | </div> |
| | | <span> |
| | | <span style={{ color: '#86909C' }}></span><span>{object[data.unitName]}</span> |
| | | <span style={{ color: '#86909C' }}></span> |
| | | <span>{object[data.unitName]}</span> |
| | | </span> |
| | | <span> |
| | | <span className='public-infoSubTitle'><span className='public-nameCard'> <NameCard2 name={data.value === 'auditPeople' ? object.auditUserName : object.applyUserName} userId={data.value === 'auditPeople' ? object.auditUserId : object.applyUserId} /></span></span> |
| | | <span className="public-infoSubTitle"> |
| | | <span className="public-nameCard"> |
| | | |
| | | <NameCard2 |
| | | name={data.value === 'auditPeople' ? object.auditUserName : object.applyUserName} |
| | | userId={data.value === 'auditPeople' ? object.auditUserId : object.applyUserId} |
| | | /> |
| | | </span> |
| | | </span> |
| | | </span> |
| | | </Col> |
| | | ); |
| | | } else if (data.value === 'applyTime' || data.value == 'auditTime' || data.value == 'returnTime') { |
| | | //时间格式化 |
| | | return <Col span={24} key={data.value}> |
| | | <div><div className="title-text">{data.label}</div></div> |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <div> |
| | | <div className="title-text">{data.label}</div> |
| | | </div> |
| | | <div>{$$.minuteFormat(object[data.value]) || '-'}</div> |
| | | </Col> |
| | | ); |
| | | } else if (data.value == 'auditResultName') { |
| | | //审核结果 |
| | | return <Col span={24} key={data.value}> |
| | | <div><div className="title-text">{data.label}</div></div> |
| | | <div style={{ color: object.auditResult == '24_00004-1' ? '#00b42a' : '#f53f3f' }}> |
| | | {object[data.value] || '-'} |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <div> |
| | | <div className="title-text">{data.label}</div> |
| | | </div> |
| | | <div style={{ color: object.auditResult == '24_00004-1' ? '#00b42a' : '#f53f3f' }}>{object[data.value] || '-'}</div> |
| | | </Col> |
| | | ); |
| | | } else if (data.value === 'reviewProgress') { |
| | | //这个是1、2级事件,结案申请的时候显示 |
| | | //注意:暂时还没做12级的流程,还没得数据 |
| | | return <Col span={24} key={data.value}> |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <ReviewProgress progressData={object.progressData || { handleCaseFlowList: [] }} /> |
| | | </Col> |
| | | ); |
| | | } else if (data.value === 'mediResultName') { |
| | | //化解结果 |
| | | return <Col span={24} key={data.value}> |
| | | <div><div className="title-text">{data.label}</div></div> |
| | | <div style={{ color: object.mediResult == '22_00025-1' ? '#00b42a' : '#f53f3f' }}> |
| | | {object[data.value] || '-'} |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <div> |
| | | <div className="title-text">{data.label}</div> |
| | | </div> |
| | | <div style={{ color: object.mediResult == '22_00025-1' ? '#00b42a' : '#f53f3f' }}>{object[data.value] || '-'}</div> |
| | | </Col> |
| | | ); |
| | | } else if (data.value === 'failReason') { |
| | | //化解不成功原因 |
| | | return object.mediResult == '22_00025-1' ? '' : |
| | | return object.mediResult == '22_00025-1' ? ( |
| | | '' |
| | | ) : ( |
| | | <Col span={24} key={data.value}> |
| | | <div><div className="title-text">{data.label}</div></div> |
| | | <div> |
| | | <div className="title-text">{data.label}</div> |
| | | </div> |
| | | <div>{object[data.value] || '-'}</div> |
| | | </Col> |
| | | ); |
| | | } else if (data.value === 'tranferReviewProgress') { |
| | | //转入人民调解申请 |
| | | return <Col span={24} key={data.value}> |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <TranferReviewProgress progressData={object.applyList || []} /> |
| | | </Col> |
| | | ); |
| | | } else { |
| | | return <Col span={24} key={data.value}> |
| | | <div><div className="title-text">{data.label}</div></div> |
| | | return ( |
| | | <Col span={24} key={data.value}> |
| | | <div> |
| | | <div className="title-text">{data.label}</div> |
| | | </div> |
| | | <div>{object[data.value] || '-'}</div> |
| | | </Col> |
| | | ); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | return ( |
| | | <div style={{ margin: '0 16px' }}> |
| | | <Spin loading={loading} style={{ width: '100%', height: '100%', minHeight: '200px' }}> |
| | | <Scrollbars style={{ height: 'calc(100vh - 156px)',backgroundColor: '#ffff' }} autoHide> |
| | | {list && list.length !== 0 ? list?.map((item, listIndex) => { |
| | | const object = item.object || item |
| | | {list && list.length !== 0 ? ( |
| | | list?.map((item, listIndex) => { |
| | | const object = item.object || item; |
| | | if (item.type == '回退申请') { |
| | | object.applyStatus = object.returnStatus |
| | | object.applyTime = object.returnTime |
| | | object.applyUnitName = object.returnUnitName |
| | | object.applyUserName = object.returnUserName |
| | | object.applyUserId = object.returnUserId |
| | | object.applyStatus = object.returnStatus; |
| | | object.applyTime = object.returnTime; |
| | | object.applyUnitName = object.returnUnitName; |
| | | object.applyUserName = object.returnUserName; |
| | | object.applyUserId = object.returnUserId; |
| | | } |
| | | if (item.type == '上报申请') { |
| | | object.applyStatus = object.applyStatus |
| | | object.applyTime = object.appearTime |
| | | object.applyUnitName = object.appearUnitName |
| | | object.applyUserName = object.appearUserName |
| | | object.applyUserId = object.appearUserId |
| | | object.applyStatus = object.applyStatus; |
| | | object.applyTime = object.appearTime; |
| | | object.applyUnitName = object.appearUnitName; |
| | | object.applyUserName = object.appearUserName; |
| | | object.applyUserId = object.appearUserId; |
| | | } |
| | | if (item.type == '司法确认申请') { |
| | | object.applyStatus = object.judicAudit === "24_00004-0" ? 0 : 1 |
| | | object.auditResult = object.judicAudit |
| | | object.applyStatus = object.judicAudit === '24_00004-0' ? 0 : 1; |
| | | object.auditResult = object.judicAudit; |
| | | } |
| | | return <div className='applyInfoClass' style={{ border: item.showView ? '1px solid #1a6fb8' : '' }} key={listIndex}> |
| | | <div className='applyInfoClass-img' onClick={() => { toggleView(listIndex) }}> |
| | | return ( |
| | | <div className="applyInfoClass" style={{ border: item.showView ? '1px solid #1a6fb8' : '' }} key={listIndex}> |
| | | <div |
| | | className="applyInfoClass-img" |
| | | onClick={() => { |
| | | toggleView(listIndex); |
| | | }} |
| | | > |
| | | <img src={item.showView ? up : downO} alt="" className="title-downUp" /> |
| | | </div> |
| | | <div className='applyInfoClass-title'> |
| | | <div className='applyInfoClass-title-txt'>{item.type}</div> |
| | | <div className="applyInfoClass-title"> |
| | | <div className="applyInfoClass-title-txt">{item.type}</div> |
| | | <div className={`applyInfoClass-title-tag-${object.applyStatus === 0 ? '2' : object.auditResult == '24_00004-1' ? '1' : '3'}`} > |
| | | {object.applyStatus === 0 ? '审核中' : object.auditResult == '24_00004-1' ? '审核通过' : '审核不通过'} |
| | | </div> |
| | | </div> |
| | | {item.showView ? <div> |
| | | { |
| | | map[(object.caseLevel && object.caseLevel != 3) ? item.type + '1' : item.type]?.filter((fil, filIndex) => { |
| | | {item.showView ? ( |
| | | <div> |
| | | {map[object.caseLevel && object.caseLevel != 3 ? item.type + '1' : item.type] |
| | | ?.filter((fil, filIndex) => { |
| | | //如果是审核中就不需要审核栏 |
| | | if (object.applyStatus === 0) { |
| | | return filIndex === 0 |
| | | return filIndex === 0; |
| | | } else { |
| | | return true |
| | | return true; |
| | | } |
| | | }).map((res, index) => { |
| | | return <Row gutter={[16, 16]} key={index}> |
| | | {res.map(data => { |
| | | }) |
| | | .map((res, index) => { |
| | | return ( |
| | | <Row gutter={[16, 16]} key={index}> |
| | | {res.map((data) => { |
| | | if (item.type == '转入人民调解系统申请') { |
| | | return handleDom(data, { object: item }) |
| | | return handleDom(data, { object: item }); |
| | | } else { |
| | | return handleDom(data, item) |
| | | return handleDom(data, item); |
| | | } |
| | | })} |
| | | </Row> |
| | | }) |
| | | } |
| | | </div> : <div> |
| | | ); |
| | | })} |
| | | </div> |
| | | ) : ( |
| | | <div> |
| | | <span style={{ marginRight: '32px' }}> |
| | | <span style={{ color: '#86909C' }}>申请时间:</span><span>{$$.minuteFormat(object.applyTime)}</span> |
| | | <span style={{ color: '#86909C' }}>申请时间:</span> |
| | | <span>{$$.minuteFormat(object.applyTime)}</span> |
| | | </span> |
| | | <span style={{ marginRight: '8px' }}> |
| | | <span style={{ color: '#86909C' }}>申请人:</span> |
| | | </span> |
| | | <span> |
| | | <span className='public-infoSubTitle'><span className='public-nameCard'>{(object?.applyUnitName)} <NameCard2 name={object.applyUserName} userId={object.applyUserId} /></span></span> |
| | | <span className="public-infoSubTitle"> |
| | | <span className="public-nameCard"> |
| | | {object?.applyUnitName} |
| | | <NameCard2 name={object.applyUserName} userId={object.applyUserId} /> |
| | | </span> |
| | | </div>} |
| | | |
| | | </span> |
| | | </span> |
| | | </div> |
| | | }) : <div className='handle-content-empty' style={{ marginTop: '10%' }}> |
| | | )} |
| | | </div> |
| | | ); |
| | | }) |
| | | ) : ( |
| | | <div className="handle-content-empty" style={{ marginTop: '10%' }}> |
| | | {$$.MyNewEmpty()} |
| | | </div>} |
| | | </div> |
| | | )} |
| | | </Scrollbars> |
| | | </Spin> |
| | | <PersonCard personView={personView} handleCancel={() => setPersonView(false)} personId={personId} /> |
| | | </div> |
| | | ) |
| | | ); |
| | | } |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | {item.suffix === 'pdf' ? ( |
| | | <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> |
| | | ) : ( |
| | | <PreviewImage key={index} name={item.name} src={item.showUrl} /> |
| | | )} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | |
| | | import { Row, Col, Space, Typography, Empty } from 'antd'; |
| | | import { Input, Select, Radio, Modal, Button, Form, Divider, DatePicker, Alert } from '@arco-design/web-react'; |
| | | import { IconInfoCircleFill } from '@arco-design/web-react/icon'; |
| | | import { Scrollbars } from "react-custom-scrollbars"; |
| | | import { Scrollbars } from 'react-custom-scrollbars'; |
| | | import * as $$ from '../../utils/utility'; |
| | | import { useNavigate } from 'react-router-dom'; |
| | | import ArcoUpload from '@/components/ArcoUpload'; |
| | |
| | | } |
| | | // 提交审核 |
| | | function judicConfirmApi(submitData) { |
| | | return $$.ax.request({ url: `judicInfo/judicConfirm`, type: 'post', service: 'mediate', data: submitData, }); |
| | | return $$.ax.request({ url: `judicInfo/judicConfirm`, type: 'post', service: 'mediate', data: submitData }); |
| | | } |
| | | // 获取助理列表 |
| | | function listAssistApi(submitData) { |
| | |
| | | return $$.ax.request({ url: `meetJudic/saveVideo`, type: 'post', service: 'mediate', data }); |
| | | } |
| | | |
| | | |
| | | const CourtAuditEdit = () => { |
| | | const formRef = useRef(); |
| | | const form = useRef(); |
| | | const formVideo = useRef(); |
| | | let navigate = useNavigate(); |
| | | const judicId = $$.getQueryString('judicId') |
| | | const caseId = $$.getQueryString('caseId') |
| | | const caseTaskId = $$.getQueryString('caseTaskId') |
| | | const judicId = $$.getQueryString('judicId'); |
| | | const caseId = $$.getQueryString('caseId'); |
| | | const caseTaskId = $$.getQueryString('caseTaskId'); |
| | | |
| | | const [caseCheckModal, setCaseCheckModal] = useState(false); |
| | | |
| | |
| | | // 数据 |
| | | const [formData, setFormData] = useState({}); |
| | | const [caseData, setCaseData] = useState({}); |
| | | |
| | | |
| | | const [filesList, setFilesList] = useState([]); |
| | | // 司法确认部门单位 |
| | |
| | | |
| | | // 选择法官弹窗 |
| | | const [isModalVisible, setIsModalVisible] = useState(false); |
| | | const [selectObjModalData, setSelectObjModalData] = useState({}) |
| | | const [selectObjModalData, setSelectObjModalData] = useState({}); |
| | | // 司法确认结果是否同意 |
| | | const [agree, setAgree] = useState('') |
| | | const [agree, setAgree] = useState(''); |
| | | |
| | | function handleChangeFile(type, info, apiResult) { |
| | | console.log('handleChangeFile', type, info, apiResult); |
| | | let list = info.fileList ? info.fileList : []; |
| | | // .map(item => ({ ...item, name: item.trueName })) |
| | | setFilesList(list) |
| | | setFilesList(list); |
| | | // setResult(apiResult) |
| | | console.log('list', list); |
| | | if (list.length >= 1) { |
| | | setStepsNum(1) |
| | | setStepsNum(1); |
| | | } else { |
| | | setStepsNum(0) |
| | | setStepsNum(0); |
| | | } |
| | | } |
| | | |
| | | //删除文件 |
| | | const handleDelFile = async (id) => { |
| | | const res = await delFile(id) |
| | | const res = await delFile(id); |
| | | if (res.type) { |
| | | $$.infoSuccess({ content: '删除成功!' }); |
| | | } |
| | | } |
| | | |
| | | }; |
| | | |
| | | // 修改 |
| | | function handleChangeValue(key, value) { |
| | |
| | | if (formRef.current) { |
| | | formRef.current.validate(undefined, (errors, values) => { |
| | | if (!errors) { |
| | | const data = formRef?.current.getFields() |
| | | const data = formRef?.current.getFields(); |
| | | console.log('data', data); |
| | | |
| | | $$.arcoModalInfo({ |
| | |
| | | okText: '确定', |
| | | cancelText: '我再想想', |
| | | onOk: () => { |
| | | applyJudicial({ ...data, judicId, submitType: '1' }, type) |
| | | saveVideo(caseId) |
| | | applyJudicial({ ...data, judicId, submitType: '1' }, type); |
| | | saveVideo(caseId); |
| | | }, |
| | | }); |
| | | |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | } |
| | | if (type === 'draft') { |
| | | const data = formRef?.current.getFields(); |
| | | applyJudicial({ ...data, judicId, submitType: '2' }, type) |
| | | applyJudicial({ ...data, judicId, submitType: '2' }, type); |
| | | } |
| | | } |
| | | |
| | | // 保存调解视频 |
| | | async function saveVideo(caseId) { |
| | | const res = await saveVideoApi({ caseId }) |
| | | const res = await saveVideoApi({ caseId }); |
| | | if (res.type) { |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | // 助理列表字典值选择 |
| | | async function gatListCourt(data) { |
| | | global.setSpinning(true); |
| | | const res = await listAssistApi({ courtId: data?.courtId }); |
| | | global.setSpinning(false); |
| | | if (res.type) { |
| | | setListCourt(res.data || []) |
| | | setListCourt(res.data || []); |
| | | } |
| | | } |
| | | |
| | |
| | | setData(res.data); |
| | | gatListCourt(res.data || {}); |
| | | formRef.current.setFieldsValue(res.data || {}); |
| | | setAgree(res.data?.judicResult || '') |
| | | setAgree(res.data?.judicResult || ''); |
| | | } |
| | | } |
| | | async function getCaseData() { |
| | |
| | | const res = await getCaseDataApi({ id: caseId }); |
| | | global.setSpinning(false); |
| | | if (res.type) { |
| | | const { agentList, personList, ...rest } = res.data |
| | | const parList = agentList.concat(personList) |
| | | const newParList = parList?.map(item => { |
| | | const fileInfoList = item.fileInfoList |
| | | const { agentList, personList, ...rest } = res.data; |
| | | const parList = agentList.concat(personList); |
| | | const newParList = |
| | | parList?.map((item) => { |
| | | const fileInfoList = item.fileInfoList; |
| | | let file = [];//身份证明材料、企业登记材料 |
| | | let file1 = [];//法人、机构身份证明材料、代理人授权委托书 |
| | | if (fileInfoList && fileInfoList.length != 0) { |
| | | fileInfoList.forEach(item => { |
| | | fileInfoList.forEach((item) => { |
| | | if (item.ownerType == '22_00018-202' || item.ownerType == '22_00018-203') { |
| | | item.fileList.forEach(res => { |
| | | item.fileList.forEach((res) => { |
| | | file.push({ |
| | | ...res, |
| | | uid: res.id, |
| | | }) |
| | | }) |
| | | }); |
| | | }); |
| | | } |
| | | if (item.ownerType == '22_00018-204' || item.ownerType == '22_00018-207') { |
| | | item.fileList.forEach(res => { |
| | | item.fileList.forEach((res) => { |
| | | file1.push({ |
| | | ...res, |
| | | uid: res.id, |
| | | }) |
| | | }) |
| | | }); |
| | | }); |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | return { |
| | | ...item, |
| | | file, |
| | | file1 |
| | | } |
| | | }) || [] |
| | | file1, |
| | | }; |
| | | }) || []; |
| | | const obj = { |
| | | ...rest, |
| | | fakeData: newParList, |
| | | } |
| | | setCaseData(obj) |
| | | }; |
| | | setCaseData(obj); |
| | | } |
| | | } |
| | | |
| | | // 视频调解部分 |
| | | // 添加预约重置 |
| | | function resetClick() { |
| | | form.current.resetFields() |
| | | form.current.setFieldValue() |
| | | form.current.resetFields(); |
| | | form.current.setFieldValue(); |
| | | } |
| | | |
| | | function submitClick() { |
| | |
| | | let submitData = form.current.getFields(); |
| | | submitData.orderStartTime = submitData.time[0]; |
| | | submitData.orderEndTime = submitData.time[1]; |
| | | delete submitData.time |
| | | delete submitData.time; |
| | | console.log('submitData', submitData); |
| | | // submitData. |
| | | $$.modalInfo({ |
| | | title: '添加预约调解确认', |
| | | content: <div>确认添加预约<span className='public-color'>{submitData.orderStartTime}</span>-<span className='public-color'>{submitData.orderEndTime}</span>的调解吗?</div>, |
| | | content: ( |
| | | <div> |
| | | 确认添加预约<span className="public-color">{submitData.orderStartTime}</span>- |
| | | <span className="public-color">{submitData.orderEndTime}</span>的调解吗? |
| | | </div> |
| | | ), |
| | | okText: '确定添加', |
| | | cancelText: '我再想想', |
| | | onOk: () => addMeetInfo({ caseId, ...submitData }), |
| | |
| | | const res = await addMeetInfoApi(submitData); |
| | | global.setSpinning(false); |
| | | if (res.type) { |
| | | setPreBookVisible(false) |
| | | form.current.resetFields() |
| | | setPreBookVisible(false); |
| | | form.current.resetFields(); |
| | | getMeetInfo(caseId); |
| | | } |
| | | } |
| | |
| | | if (formVideo.current) { |
| | | formVideo.current.validate(undefined, (errors, values) => { |
| | | if (!errors) { |
| | | let submitData = formVideo.current.getFields() |
| | | let submitData = formVideo.current.getFields(); |
| | | submitData.orderStartTime = submitData.time[0]; |
| | | submitData.orderEndTime = submitData.time[1]; |
| | | delete submitData.time |
| | | delete submitData.time; |
| | | console.log('submitData', submitData); |
| | | $$.modalInfo({ |
| | | title: '创建视频号确认', |
| | | content: <div>确认创建<span className='public-color'>{submitData.orderStartTime}</span>-<span className='public-color'>{submitData.orderEndTime}</span>的视频号吗?</div>, |
| | | content: ( |
| | | <div> |
| | | 确认创建<span className="public-color">{submitData.orderStartTime}</span>- |
| | | <span className="public-color">{submitData.orderEndTime}</span>的视频号吗? |
| | | </div> |
| | | ), |
| | | okText: '确定创建', |
| | | cancelText: '我再想想', |
| | | onOk: () => addRoomInfo({ caseId, ...submitData }), |
| | |
| | | const res = await addRoomInfoApi(submitData); |
| | | global.setSpinning(false); |
| | | if (res.type) { |
| | | setRadioVisible(false) |
| | | formVideo.current.resetFields() |
| | | setRadioVisible(false); |
| | | formVideo.current.resetFields(); |
| | | getMeetInfo(caseId); |
| | | } |
| | | } |
| | | |
| | | function radioResetClick() { |
| | | formVideo.current.resetFields() |
| | | formVideo.current.resetFields(); |
| | | } |
| | | |
| | | function delClick() { |
| | |
| | | global.setSpinning(false); |
| | | if (res.type) { |
| | | $$.infoSuccess({ content: '删除成功' }); |
| | | setPreBookData({}) |
| | | setPreBookData({}); |
| | | } |
| | | } |
| | | |
| | |
| | | if (res.type) { |
| | | let list = res.data || []; |
| | | if (list?.length > 0) { |
| | | setPreBookData(list[0]) |
| | | setPreBookData(list[0]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | function checkTimeRange(startTime, endTime, currentTime) { |
| | | if (currentTime < new Date(startTime)) { |
| | | return <div className='public-color'>未开始</div>; // 当前时间在时间范围之前 |
| | | return <div className="public-color">未开始</div>; // 当前时间在时间范围之前 |
| | | } else if (currentTime >= new Date(startTime) && currentTime <= new Date(endTime)) { |
| | | return <div style={{ color: '#EF6C24' }}>进行中</div>; // 当前时间在时间范围内 |
| | | } else { |
| | | return <div className='public-orange'>已结束</div>; // 当前时间在时间范围之后 |
| | | return <div className="public-orange">已结束</div>; // 当前时间在时间范围之后 |
| | | } |
| | | } |
| | | |
| | | async function getTransactResult(id) { |
| | | const res = await getTransactResultApi(id) |
| | | const res = await getTransactResultApi(id); |
| | | if (res.type) { |
| | | if (res.data) { |
| | | setTransactResult({ ...res.data }) |
| | | setTransactResult({ ...res.data }); |
| | | } else { |
| | | setTransactResult(null) |
| | | setTransactResult(null); |
| | | } |
| | | } |
| | | } |
| | |
| | | useEffect(() => { |
| | | if (caseId) { |
| | | getMeetInfo(caseId); |
| | | getTransactResult(caseId) |
| | | getTransactResult(caseId); |
| | | } |
| | | if (judicId) { |
| | | getCaseData(); |
| | |
| | | } |
| | | }, []); |
| | | |
| | | |
| | | |
| | | return ( |
| | | <NewPage pageHead={{ breadcrumbData: [{ title: '工作台' }, { title: '司法确认' }], title: '司法确认' }}> |
| | | <Fragment> |
| | | <Scrollbars style={{ height: 'calc(100vh - 219px)' }} autoHide> |
| | | <div className=' dataSync-noScrollPage'> |
| | | <div className=" dataSync-noScrollPage"> |
| | | <Row gutter={[16, 16]}> |
| | | <Col span={24}> |
| | | <Space> |
| | | <div className='MediationInfo-subTitle'></div><span style={{ fontSize: '16px', lineHeight: '24px' }}>申请信息</span> |
| | | <div className="MediationInfo-subTitle"></div> |
| | | <span style={{ fontSize: '16px', lineHeight: '24px' }}>申请信息</span> |
| | | </Space> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='public-infoTitle'>案件信息</div> |
| | | <div className="public-infoTitle">案件信息</div> |
| | | {/* <div className='judicialSubmit-audit-case' onClick={() => setCaseCheckModal(true)}> */} |
| | | |
| | | <div className='judicialSubmit-audit-case' onClick={() => window.open(`${$$.windowUrl}/windowDetail?caseTaskId=${caseTaskId}&caseId=${caseId}`)}> |
| | | <div |
| | | className="judicialSubmit-audit-case" |
| | | onClick={() => window.open(`${$$.windowUrl}/windowDetail?caseTaskId=${caseTaskId}&caseId=${caseId}`)} |
| | | > |
| | | <div style={{ display: 'flex', gap: '16px', alignItems: 'center' }}> |
| | | <div><img src={judicial_5} alt="" srcset="" /></div> |
| | | <div> |
| | | <div className='judicialSubmit-audit-case-flex'> |
| | | <img src={judicial_5} alt="" srcset="" /> |
| | | </div> |
| | | <div> |
| | | <div className="judicialSubmit-audit-case-flex"> |
| | | <div>承办部门:{transactResult?.mediateUnitName || '-'}</div> |
| | | <div className='judicialSubmit-audit-case-subTitle'>申请方:{caseData.fakeData?.filter(i => i.perType === '15_020008-1')?.length === 1 ? caseData.fakeData?.filter(i => i.perType === '15_020008-1')[0].trueName : caseData.fakeData?.filter(i => i.perType === '15_020008-1')?.length > 1 ? `${caseData.fakeData?.filter(i => i.perType === '15_020008-1')[0].trueName}...等共${caseData.fakeData?.filter(i => i.perType === '15_020008-1')?.length}人` : '-'} | 被申请方:{caseData.fakeData?.filter(i => i.perType === '15_020008-2')?.length === 1 ? caseData.fakeData?.filter(i => i.perType === '15_020008-1')[0].trueName : caseData.fakeData?.filter(i => i.perType === '15_020008-2')?.length > 1 ? `${caseData.fakeData?.filter(i => i.perType === '15_020008-2')[0].trueName}...等共${caseData.fakeData?.filter(i => i.perType === '15_020008-2')?.length}人` : '-'}</div> |
| | | </div> |
| | | <div className='judicialSubmit-audit-case-subTitle'>办结时间:{$$.minuteFormat(transactResult?.closeTime)} | {transactResult?.mediResultName || '-'}</div> |
| | | <div className="judicialSubmit-audit-case-subTitle"> |
| | | 申请方: |
| | | {caseData.fakeData?.filter((i) => i.perType === '15_020008-1')?.length === 1 |
| | | ? caseData.fakeData?.filter((i) => i.perType === '15_020008-1')[0].trueName |
| | | : caseData.fakeData?.filter((i) => i.perType === '15_020008-1')?.length > 1 |
| | | ? `${caseData.fakeData?.filter((i) => i.perType === '15_020008-1')[0].trueName}...等共${ |
| | | caseData.fakeData?.filter((i) => i.perType === '15_020008-1')?.length |
| | | }人` |
| | | : '-'}{' '} |
| | | | 被申请方: |
| | | {caseData.fakeData?.filter((i) => i.perType === '15_020008-2')?.length === 1 |
| | | ? caseData.fakeData?.filter((i) => i.perType === '15_020008-1')[0].trueName |
| | | : caseData.fakeData?.filter((i) => i.perType === '15_020008-2')?.length > 1 |
| | | ? `${caseData.fakeData?.filter((i) => i.perType === '15_020008-2')[0].trueName}...等共${ |
| | | caseData.fakeData?.filter((i) => i.perType === '15_020008-2')?.length |
| | | }人` |
| | | : '-'} |
| | | </div> |
| | | </div> |
| | | <div><img src={judicial_6} alt="" srcset="" /></div> |
| | | <div className="judicialSubmit-audit-case-subTitle"> |
| | | 办结时间:{$$.minuteFormat(transactResult?.closeTime)} | {transactResult?.mediResultName || '-'} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <img src={judicial_6} alt="" srcset="" /> |
| | | </div> |
| | | </div> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='public-infoTitle'>申请理由</div> |
| | | <div className='public-infoSubTitle'>{data?.applyContent || '-'}</div> |
| | | <div className="public-infoTitle">申请理由</div> |
| | | <div className="public-infoSubTitle">{data?.applyContent || '-'}</div> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='public-infoTitle'>调解协议书</div> |
| | | { |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-302')?.fileList?.length ? |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-302')?.fileList?.map((item, index) => { |
| | | return <>{item.suffix === 'pdf' ? <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> : <PreviewImage key={index} name={item.name} src={item.showUrl} />}</> |
| | | <div className="public-infoTitle">调解协议书</div> |
| | | {data?.fileList?.find((i) => i.ownerType === '22_00018-302')?.fileList?.length ? ( |
| | | data?.fileList |
| | | ?.find((i) => i.ownerType === '22_00018-302') |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | | : <div className='public-infoSubTitle'>-</div> |
| | | } |
| | | ) : ( |
| | | <div className="public-infoSubTitle">-</div> |
| | | )} |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='public-infoTitle'>非诉讼调解协议司法确认申请书</div> |
| | | { |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-402')?.fileList?.length ? |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-402')?.fileList?.map((item, index) => { |
| | | return <>{item.suffix === 'pdf' ? <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> : <PreviewImage key={index} name={item.name} src={item.showUrl} />}</> |
| | | <div className="public-infoTitle">非诉讼调解协议司法确认申请书</div> |
| | | {data?.fileList?.find((i) => i.ownerType === '22_00018-402')?.fileList?.length ? ( |
| | | data?.fileList |
| | | ?.find((i) => i.ownerType === '22_00018-402') |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | | : <div className='public-infoSubTitle'>-</div> |
| | | } |
| | | ) : ( |
| | | <div className="public-infoSubTitle">-</div> |
| | | )} |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='public-infoTitle'>诉前联调协议案件移送函</div> |
| | | { |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-403')?.fileList?.length ? |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-403')?.fileList?.map((item, index) => { |
| | | return <>{item.suffix === 'pdf' ? <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> : <PreviewImage key={index} name={item.name} src={item.showUrl} />}</> |
| | | <div className="public-infoTitle">诉前联调协议案件移送函</div> |
| | | {data?.fileList?.find((i) => i.ownerType === '22_00018-403')?.fileList?.length ? ( |
| | | data?.fileList |
| | | ?.find((i) => i.ownerType === '22_00018-403') |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | | : <div className='public-infoSubTitle'>-</div> |
| | | } |
| | | ) : ( |
| | | <div className="public-infoSubTitle">-</div> |
| | | )} |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='public-infoTitle'>送达地址确认书</div> |
| | | { |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-108')?.fileList?.length ? |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-108')?.fileList?.map((item, index) => { |
| | | return <>{item.suffix === 'pdf' ? <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> : <PreviewImage key={index} name={item.name} src={item.showUrl} />}</> |
| | | <div className="public-infoTitle">送达地址确认书</div> |
| | | {data?.fileList?.find((i) => i.ownerType === '22_00018-108')?.fileList?.length ? ( |
| | | data?.fileList |
| | | ?.find((i) => i.ownerType === '22_00018-108') |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | | : <div className='public-infoSubTitle'>-</div> |
| | | } |
| | | ) : ( |
| | | <div className="public-infoSubTitle">-</div> |
| | | )} |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='public-infoTitle'>申请时间</div> |
| | | <div className='public-infoSubTitle'>{$$.minuteFormat(data?.applyTime)}</div> |
| | | <div className="public-infoTitle">申请时间</div> |
| | | <div className="public-infoSubTitle">{$$.minuteFormat(data?.applyTime)}</div> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='public-infoTitle'>申请人</div> |
| | | <div className='public-infoSubTitle'><span className='public-nameCard2'>{(data?.applyUnitName)} <NameCard2 name={data.applyUserName} userId={data.applyUserId} /></span></div> |
| | | <div className="public-infoTitle">申请人</div> |
| | | <div className="public-infoSubTitle"> |
| | | <span className="public-nameCard2"> |
| | | {data?.applyUnitName} |
| | | <NameCard2 name={data.applyUserName} userId={data.applyUserId} /> |
| | | </span> |
| | | </div> |
| | | </Col> |
| | | </Row> |
| | | </div> |
| | | <div style={{ height: '16px' }}></div> |
| | | <div className=' dataSync-noScrollPage'> |
| | | <div className=" dataSync-noScrollPage"> |
| | | <Row gutter={[20, 20]}> |
| | | <Col span={24}> |
| | | <Space> |
| | | <div className='MediationInfo-subTitle'></div><span style={{ fontSize: '16px', lineHeight: '24px' }}>司法确认信息</span> |
| | | <div className="MediationInfo-subTitle"></div> |
| | | <span style={{ fontSize: '16px', lineHeight: '24px' }}>司法确认信息</span> |
| | | </Space> |
| | | </Col> |
| | | <Col span={24}> |
| | | <table style={{ marginBottom: '0px' }} border="1" align="center" cellpadding="6" className="table"> |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120" >承办法官</th> |
| | | <td width='380'><div className='public-infoSubTitle'><NameCard2 name={data.judgeName} userId={data.judicId} /></div></td> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120">助理/书记员</th> |
| | | <td width='380'><div style={{ display: 'flex', gap: '16px', flexWrap: 'wrap' }} className='public-infoSubTitle'>{data?.judicAssistList?.map(i => (<NameCard2 name={i.assUserName} userId={i.assUserId} />))}</div></td> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120"> |
| | | 承办法官 |
| | | </th> |
| | | <td width="380"> |
| | | <div className="public-infoSubTitle"> |
| | | <NameCard2 name={data.judgeName} userId={data.judicId} /> |
| | | </div> |
| | | </td> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120"> |
| | | 助理/书记员 |
| | | </th> |
| | | <td width="380"> |
| | | <div style={{ display: 'flex', gap: '16px', flexWrap: 'wrap' }} className="public-infoSubTitle"> |
| | | {data?.judicAssistList?.map((i) => ( |
| | | <NameCard2 name={i.assUserName} userId={i.assUserId} /> |
| | | ))} |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className='judicial-item' style={{ marginTop: '0', marginRight: '0' }}> |
| | | <div className='handle-content-empty judicial-item-left' > |
| | | <div className='judicial-item-title'><img src={judicial_1} alt="" srcset="" />预约信息</div> |
| | | { |
| | | preBookData?.orderStartTime ? |
| | | <div className='judicial-item-content'> |
| | | <div className='judicial-item-content-left'> |
| | | <div onClick={() => delClick()} className='judicial-item-content-left-del public-a'><img src={judicial_3} alt="" srcset="" /></div> |
| | | <div className='judicial-item-content-left-t'> |
| | | <div className='judicial-item-content-left-t-l'><div className='judicial-item-content-left-bigTitle public-color'>{$$.myTimeFormat(preBookData?.orderStartTime, 'HH:mm')}</div><div className='public-color'>{$$.myTimeFormat(preBookData?.orderStartTime, 'YYYY年MM月DD日')}</div></div> |
| | | <div className='judicial-item-content-left-t-l'> |
| | | <Space size='small'> |
| | | <div className='judicial-item-content-left-inline'></div> |
| | | <div style={{ display: 'flex', flexDirection: 'column', gap: '4px', alignItems: 'center', justifyContent: 'center' }}>{checkTimeRange(preBookData?.orderStartTime, preBookData?.orderEndTime, new Date())}<div className='public-color judicial-item-content-left-time'>{$$.calculateTimeDifference(preBookData?.orderStartTime, preBookData?.orderEndTime)}</div></div> |
| | | <div className='judicial-item-content-left-inline'></div> |
| | | <div className="judicial-item" style={{ marginTop: '0', marginRight: '0' }}> |
| | | <div className="handle-content-empty judicial-item-left"> |
| | | <div className="judicial-item-title"> |
| | | <img src={judicial_1} alt="" srcset="" /> |
| | | 预约信息 |
| | | </div> |
| | | {preBookData?.orderStartTime ? ( |
| | | <div className="judicial-item-content"> |
| | | <div className="judicial-item-content-left"> |
| | | <div onClick={() => delClick()} className="judicial-item-content-left-del public-a"> |
| | | <img src={judicial_3} alt="" srcset="" /> |
| | | </div> |
| | | <div className="judicial-item-content-left-t"> |
| | | <div className="judicial-item-content-left-t-l"> |
| | | <div className="judicial-item-content-left-bigTitle public-color"> |
| | | {$$.myTimeFormat(preBookData?.orderStartTime, 'HH:mm')} |
| | | </div> |
| | | <div className="public-color">{$$.myTimeFormat(preBookData?.orderStartTime, 'YYYY年MM月DD日')}</div> |
| | | </div> |
| | | <div className="judicial-item-content-left-t-l"> |
| | | <Space size="small"> |
| | | <div className="judicial-item-content-left-inline"></div> |
| | | <div style={{ display: 'flex', flexDirection: 'column', gap: '4px', alignItems: 'center', justifyContent: 'center' }}> |
| | | {checkTimeRange(preBookData?.orderStartTime, preBookData?.orderEndTime, new Date())} |
| | | <div className="public-color judicial-item-content-left-time"> |
| | | {$$.calculateTimeDifference(preBookData?.orderStartTime, preBookData?.orderEndTime)} |
| | | </div> |
| | | </div> |
| | | <div className="judicial-item-content-left-inline"></div> |
| | | </Space> |
| | | </div> |
| | | <div className='judicial-item-content-left-t-l'><div className='judicial-item-content-left-bigTitle public-color'>{$$.myTimeFormat(preBookData?.orderEndTime, 'HH:mm')}</div><div className='public-color'>{$$.myTimeFormat(preBookData?.orderEndTime, 'YYYY年MM月DD日')}</div></div> |
| | | <div className="judicial-item-content-left-t-l"> |
| | | <div className="judicial-item-content-left-bigTitle public-color"> |
| | | {$$.myTimeFormat(preBookData?.orderEndTime, 'HH:mm')} |
| | | </div> |
| | | <div className="public-color">{$$.myTimeFormat(preBookData?.orderEndTime, 'YYYY年MM月DD日')}</div> |
| | | </div> |
| | | </div> |
| | | <Divider /> |
| | | <div className='judicial-item-content-left-c-flex'> |
| | | <div className='judicial-item-content-left-c'> |
| | | <div className='judicial-item-content-left-c-title'>司法确认方式</div> |
| | | <div className='judicial-item-content-left-c-content'>{preBookData?.meetWayName || '-'}</div> |
| | | <div className="judicial-item-content-left-c-flex"> |
| | | <div className="judicial-item-content-left-c"> |
| | | <div className="judicial-item-content-left-c-title">司法确认方式</div> |
| | | <div className="judicial-item-content-left-c-content">{preBookData?.meetWayName || '-'}</div> |
| | | </div> |
| | | <div className='judicial-item-content-left-c'> |
| | | <div className='judicial-item-content-left-c-title'>远程视频司法确认号</div> |
| | | <div className='judicial-item-content-left-c-content'><span style={{ fontSize: '16px', lineHeight: '24px' }}>{preBookData?.roomNo || '-'}</span> {preBookData?.roomNo && <span onClick={() => { |
| | | navigator.clipboard.writeText(preBookData?.roomNo).then(() => { |
| | | <div className="judicial-item-content-left-c"> |
| | | <div className="judicial-item-content-left-c-title">远程视频司法确认号</div> |
| | | <div className="judicial-item-content-left-c-content"> |
| | | <span style={{ fontSize: '16px', lineHeight: '24px' }}>{preBookData?.roomNo || '-'}</span> |
| | | {preBookData?.roomNo && ( |
| | | <span |
| | | onClick={() => { |
| | | navigator.clipboard |
| | | .writeText(preBookData?.roomNo) |
| | | .then(() => { |
| | | $$.infoSuccess({ content: '复制成功' }); |
| | | }).catch(err => { |
| | | }) |
| | | .catch((err) => { |
| | | $$.catchApiError('复制失败', err); |
| | | }); |
| | | }} className='public-color public-a'>复制</span>}</div> |
| | | }} |
| | | className="public-color public-a" |
| | | > |
| | | 复制 |
| | | </span> |
| | | )} |
| | | </div> |
| | | <div className='judicial-item-content-left-c'> |
| | | <div className='judicial-item-content-left-c-title'>司法确认地点</div> |
| | | <div className='judicial-item-content-left-c-content'>{preBookData?.meetAddr || '-'}</div> |
| | | </div> |
| | | <div className="judicial-item-content-left-c"> |
| | | <div className="judicial-item-content-left-c-title">司法确认地点</div> |
| | | <div className="judicial-item-content-left-c-content">{preBookData?.meetAddr || '-'}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> : |
| | | <Empty description={<span className='empty-text'>暂无数据</span>} image={empty}><Button onClick={() => setPreBookVisible(true)} type='outline'>添加预约</Button></Empty> |
| | | } |
| | | </div> |
| | | <div className='handle-content-empty judicial-item-left'> |
| | | <div className='judicial-item-title'><img src={judicial_2} alt="" srcset="" />远程视频司法确认</div> |
| | | { |
| | | preBookData?.orderStartTime ? |
| | | <div className='judicial-item-video'> |
| | | <div className='judicial-item-video-flex'> |
| | | <div className='judicial-item-video-img'><img src={judicial_4} alt="" srcset="" /></div> |
| | | ) : ( |
| | | <Empty description={<span className="empty-text">暂无数据</span>} image={empty}> |
| | | <Button onClick={() => setPreBookVisible(true)} type="outline"> |
| | | 添加预约 |
| | | </Button> |
| | | </Empty> |
| | | )} |
| | | </div> |
| | | <div className="handle-content-empty judicial-item-left"> |
| | | <div className="judicial-item-title"> |
| | | <img src={judicial_2} alt="" srcset="" /> |
| | | 远程视频司法确认 |
| | | </div> |
| | | {preBookData?.orderStartTime ? ( |
| | | <div className="judicial-item-video"> |
| | | <div className="judicial-item-video-flex"> |
| | | <div className="judicial-item-video-img"> |
| | | <img src={judicial_4} alt="" srcset="" /> |
| | | </div> |
| | | <div> |
| | | <div className='judicial-item-content-left-c-content'><span style={{ fontSize: '16px', lineHeight: '24px' }}>{preBookData?.roomNo || '-'}</span> {preBookData?.roomNo && <span onClick={() => { |
| | | navigator.clipboard.writeText(preBookData?.roomNo).then(() => { $$.infoSuccess({ content: '复制成功' }) }).catch(err => { $$.catchApiError('复制失败', err) }) |
| | | }} className='public-color public-a'>复制</span>}</div> |
| | | <div style={{ color: "#4E5969", marginTop: '4px' }}>{$$.myTimeFormat(preBookData?.orderStartTime, 'YYYY年MM月DD日')} {$$.myTimeFormat(preBookData?.orderStartTime, 'HH:mm')}-{$$.myTimeFormat(preBookData?.orderEndTime, 'HH:mm')}</div> |
| | | <div className="judicial-item-content-left-c-content"> |
| | | <span style={{ fontSize: '16px', lineHeight: '24px' }}>{preBookData?.roomNo || '-'}</span> |
| | | {preBookData?.roomNo && ( |
| | | <span |
| | | onClick={() => { |
| | | navigator.clipboard |
| | | .writeText(preBookData?.roomNo) |
| | | .then(() => { |
| | | $$.infoSuccess({ content: '复制成功' }); |
| | | }) |
| | | .catch((err) => { |
| | | $$.catchApiError('复制失败', err); |
| | | }); |
| | | }} |
| | | className="public-color public-a" |
| | | > |
| | | 复制 |
| | | </span> |
| | | )} |
| | | </div> |
| | | <div style={{ color: '#4E5969', marginTop: '4px' }}> |
| | | {$$.myTimeFormat(preBookData?.orderStartTime, 'YYYY年MM月DD日')} |
| | | {$$.myTimeFormat(preBookData?.orderStartTime, 'HH:mm')}-{$$.myTimeFormat(preBookData?.orderEndTime, 'HH:mm')} |
| | | </div> |
| | | </div> |
| | | <Alert type='info' content={<span>请使用小鱼易连客户端加入该号码连线</span>} /> |
| | | </div> : |
| | | <Empty description={<span className='empty-text'>暂无数据</span>} image={empty}><Button onClick={() => setRadioVisible(true)} type='outline'>创建视频号</Button></Empty>} |
| | | </div> |
| | | <Alert type="info" content={<span>请使用小鱼易连客户端加入该号码连线</span>} /> |
| | | </div> |
| | | ) : ( |
| | | <Empty description={<span className="empty-text">暂无数据</span>} image={empty}> |
| | | <Button onClick={() => setRadioVisible(true)} type="outline"> |
| | | 创建视频号 |
| | | </Button> |
| | | </Empty> |
| | | )} |
| | | </div> |
| | | </div> |
| | | </Col> |
| | | |
| | | </Row> |
| | | |
| | | </div> |
| | | <div className=' dataSync-noScrollPage'> |
| | | <div className=" dataSync-noScrollPage"> |
| | | <Form |
| | | ref={formRef} |
| | | layout='vertical' |
| | | layout="vertical" |
| | | requiredSymbol={false} |
| | | scrollToFirstError={true} |
| | | onChange={(first, allValues) => { |
| | | if (first?.judicResult) { |
| | | setAgree(first?.judicResult) |
| | | formRef.current.clearFields() |
| | | setAgree(first?.judicResult); |
| | | formRef.current.clearFields(); |
| | | formRef.current.setFieldsValue({ |
| | | judicResult: first.judicResult, |
| | | }); |
| | | } |
| | | }} |
| | | initialValues={{ |
| | | }}//默认值 |
| | | initialValues={{}} //默认值 |
| | | > |
| | | <Row> |
| | | <Col span={24}> |
| | | <FormItem |
| | | label={(<div style={{ display: 'flex' }}>司法确认结果</div>)} |
| | | field='judicResult' |
| | | label={<div style={{ display: 'flex' }}>司法确认结果</div>} |
| | | field="judicResult" |
| | | rules={[{ required: true, message: '请选择司法确认结果' }]} |
| | | > |
| | | <Radio.Group> |
| | | <Space direction="vertical"> |
| | | {[{ value: '22_00028-1', label: '已达成', }, { value: '22_00028-2', label: '未达成' }].map((x) => ( |
| | | {[ |
| | | { value: '22_00028-1', label: '已达成' }, |
| | | { value: '22_00028-2', label: '未达成' }, |
| | | ].map((x) => ( |
| | | <Radio value={x.value} key={x.value} label={x.label}> |
| | | {x.label} |
| | | </Radio> |
| | |
| | | <> |
| | | <Col span={24}> |
| | | <FormItem |
| | | label={(<div style={{ display: 'flex' }}>未达成原因<div className="must">必填</div></div>)} |
| | | field='judicFalseCause' |
| | | label={ |
| | | <div style={{ display: 'flex' }}> |
| | | 未达成原因<div className="must">必填</div> |
| | | </div> |
| | | } |
| | | field="judicFalseCause" |
| | | rules={[{ required: true, message: '未达成原因不能为空' }]} |
| | | > |
| | | <TextArea |
| | | rows={5} |
| | | maxLength={256} |
| | | autoSize={{ minRows: 4, maxRows: 8 }} |
| | | placeholder='请填写' |
| | | /> |
| | | <TextArea rows={5} maxLength={256} autoSize={{ minRows: 4, maxRows: 8 }} placeholder="请填写" /> |
| | | </FormItem> |
| | | </Col> |
| | | </> |
| | |
| | | {agree === '22_00028-1' && ( |
| | | <> |
| | | <Col span={24} className="doubleFile"> |
| | | <div style={{ display: 'flex', marginBottom: '8px' }}>裁定文书<div className="must">必填</div></div> |
| | | <div style={{ display: 'flex', marginBottom: '8px' }}> |
| | | 裁定文书<div className="must">必填</div> |
| | | </div> |
| | | <ArcoUpload |
| | | params={{ |
| | | action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${caseId}&&ownerId=${judicId}&ownerType=22_00018-405`, |
| | | }} |
| | | formItemParams={{ |
| | | rules: [{ message: '请上传裁定文书', required: true }] |
| | | rules: [{ message: '请上传裁定文书', required: true }], |
| | | }} |
| | | field='filesList' |
| | | label='' |
| | | field="filesList" |
| | | label="" |
| | | editData={{ |
| | | filesList: filesList || [] |
| | | filesList: filesList || [], |
| | | }} |
| | | handleDelFile={handleDelFile} |
| | | onFileListChange={(v) => { |
| | | let newList = v?.map(item => { |
| | | let newList = v?.map((item) => { |
| | | if (item.response) { |
| | | return item.response.data[0] |
| | | return item.response.data[0]; |
| | | } else { |
| | | return item |
| | | return item; |
| | | } |
| | | }) |
| | | setFilesList(newList) |
| | | }); |
| | | setFilesList(newList); |
| | | }} |
| | | /> |
| | | </Col> |
| | |
| | | params={{ |
| | | action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${caseId}&&ownerId=${judicId}&ownerType=22_00018-401`, |
| | | }} |
| | | field='filesList1' |
| | | label='' |
| | | field="filesList1" |
| | | label="" |
| | | editData={{ |
| | | filesList1: filesList || [] |
| | | filesList1: filesList || [], |
| | | }} |
| | | handleDelFile={handleDelFile} |
| | | onFileListChange={(v) => { |
| | | let newList = v?.map(item => { |
| | | let newList = v?.map((item) => { |
| | | if (item.response) { |
| | | return item.response.data[0] |
| | | return item.response.data[0]; |
| | | } else { |
| | | return item |
| | | return item; |
| | | } |
| | | }) |
| | | setFilesList(newList) |
| | | }); |
| | | setFilesList(newList); |
| | | }} |
| | | /> |
| | | </Col> |
| | | <Col span={24}> |
| | | <FormItem |
| | | label={(<div style={{ display: 'flex' }}>诉前调确号</div>)} |
| | | field='mediateJudicNo' |
| | | > |
| | | <Input style={{ width: '450px' }} placeholder='请填写审判系统中的诉前调确号(如有)' allowClear /> |
| | | <FormItem label={<div style={{ display: 'flex' }}>诉前调确号</div>} field="mediateJudicNo"> |
| | | <Input style={{ width: '450px' }} placeholder="请填写审判系统中的诉前调确号(如有)" allowClear /> |
| | | </FormItem> |
| | | </Col> |
| | | <Col span={24}> |
| | | <FormItem |
| | | label={(<div style={{ display: 'flex' }}>结案说明</div>)} |
| | | field='judicContent' |
| | | > |
| | | <TextArea |
| | | rows={5} |
| | | maxLength={256} |
| | | autoSize={{ minRows: 4, maxRows: 8 }} |
| | | placeholder='请填写' |
| | | /> |
| | | <FormItem label={<div style={{ display: 'flex' }}>结案说明</div>} field="judicContent"> |
| | | <TextArea rows={5} maxLength={256} autoSize={{ minRows: 4, maxRows: 8 }} placeholder="请填写" /> |
| | | </FormItem> |
| | | </Col> |
| | | </> |
| | | )} |
| | | |
| | | |
| | | </Row> |
| | | </Form > |
| | | </div> |
| | | </Scrollbars> |
| | | <div className="dataSync-excel"> |
| | | <Space size="large" style={{ margin: '4px 14px' }}> |
| | | <Button onClick={() => handleApply('submit')} type="primary" className="dialogPrimary">办结</Button> |
| | | <Button onClick={() => handleApply('draft')} type="outline" className="dialogPrimary">保存</Button> |
| | | <Button type='secondary' onClick={() => navigate(-1)}>返回上级页面</Button> |
| | | <Button onClick={() => handleApply('submit')} type="primary" className="dialogPrimary"> |
| | | 办结 |
| | | </Button> |
| | | <Button onClick={() => handleApply('draft')} type="outline" className="dialogPrimary"> |
| | | 保存 |
| | | </Button> |
| | | <Button type="secondary" onClick={() => navigate(-1)}> |
| | | 返回上级页面 |
| | | </Button> |
| | | </Space> |
| | | </div> |
| | | </Fragment> |
| | |
| | | <CaseDetail caseId={caseId} caseData={caseData} /> |
| | | </MyModal> |
| | | <Modal |
| | | title='添加预约' |
| | | title="添加预约" |
| | | style={{ width: '40%' }} |
| | | className='judicial-handle-modal' |
| | | className="judicial-handle-modal" |
| | | onCancel={() => setPreBookVisible(false)} |
| | | visible={preBookVisible} |
| | | footer={null} |
| | |
| | | <Col span={24} > |
| | | <Form |
| | | ref={form} |
| | | layout='vertical' |
| | | layout="vertical" |
| | | requiredSymbol={false} |
| | | initialValues={{ |
| | | meetWay: '22_00021-3', |
| | | meetWayName: '线上 + 线下' |
| | | meetWayName: '线上 + 线下', |
| | | }}//默认值 |
| | | scrollToFirstError |
| | | > |
| | | <Row> |
| | | <Col span={24}> |
| | | <Form.Item rules={[{ required: true, message: '请选择预约调解时间' }]} label={(<div style={{ display: 'flex' }}>预约调解时间<div className="must">必填</div></div>)} field="time"> |
| | | <RangePicker |
| | | showTime={{ format: 'HH:mm' }} |
| | | allowClear={true} |
| | | style={{ width: '100%' }} |
| | | /> |
| | | <Form.Item |
| | | rules={[{ required: true, message: '请选择预约调解时间' }]} |
| | | label={ |
| | | <div style={{ display: 'flex' }}> |
| | | 预约调解时间<div className="must">必填</div> |
| | | </div> |
| | | } |
| | | field="time" |
| | | > |
| | | <RangePicker showTime={{ format: 'HH:mm' }} allowClear={true} style={{ width: '100%' }} /> |
| | | </Form.Item> |
| | | </Col> |
| | | <Col span={24}> |
| | | <FormItem |
| | | label='纠纷化解方式' |
| | | field='meetWay' |
| | | > |
| | | <FormItem label="纠纷化解方式" field="meetWay"> |
| | | <Select |
| | | placeholder='请选择' |
| | | placeholder="请选择" |
| | | allowClear={false} |
| | | options={$$.options.meetWay} |
| | | onChange={(value, options) => { |
| | | form.current.setFieldValue('meetWayName', options && options.children) |
| | | form.current.setFieldValue('meetWayName', options && options.children); |
| | | }} |
| | | /> |
| | | </FormItem> |
| | | </Col> |
| | | <Col span={24}> |
| | | <FormItem label='纠纷化解地点' field='meetAddr'> |
| | | <Input placeholder='请填写' /> |
| | | <FormItem label="纠纷化解地点" field="meetAddr"> |
| | | <Input placeholder="请填写" /> |
| | | </FormItem> |
| | | </Col> |
| | | </Row> |
| | | </Form> |
| | | <div style={{ display: 'flex', alignItems: 'center', gap: '16px', position: 'absolute', bottom: '0' }}> |
| | | <Button type="primary" onClick={() => submitClick()}>提交</Button> |
| | | <Button onClick={() => resetClick()} danger>重置</Button> |
| | | <Button type="primary" onClick={() => submitClick()}> |
| | | 提交 |
| | | </Button> |
| | | <Button onClick={() => resetClick()} danger> |
| | | 重置 |
| | | </Button> |
| | | </div> |
| | | </Col> |
| | | </Row> |
| | | </Modal> |
| | | <Modal |
| | | title='创建远程调解视频号' |
| | | title="创建远程调解视频号" |
| | | style={{ width: '40%' }} |
| | | className='judicial-handle-modal' |
| | | className="judicial-handle-modal" |
| | | onCancel={() => setRadioVisible(false)} |
| | | visible={radioVisible} |
| | | footer={null} |
| | | > |
| | | <Row style={{ height: '480px', position: 'relative' }}> |
| | | <Col span={24} > |
| | | <Form |
| | | ref={formVideo} |
| | | layout='vertical' |
| | | requiredSymbol={false} |
| | | scrollToFirstError |
| | | > |
| | | <Form ref={formVideo} layout="vertical" requiredSymbol={false} scrollToFirstError> |
| | | <Row> |
| | | <Col span={24}> |
| | | <Form.Item style={{ marginBottom: '8px' }} rules={[{ required: true, message: '请选择有效期' }]} label={(<div style={{ display: 'flex' }}>有效期<div className="must">必填</div></div>)} field="time"> |
| | | <RangePicker |
| | | showTime={{ format: 'HH:mm' }} |
| | | allowClear={true} |
| | | style={{ width: '100%' }} |
| | | /> |
| | | <Form.Item |
| | | style={{ marginBottom: '8px' }} |
| | | rules={[{ required: true, message: '请选择有效期' }]} |
| | | label={ |
| | | <div style={{ display: 'flex' }}> |
| | | 有效期<div className="must">必填</div> |
| | | </div> |
| | | } |
| | | field="time" |
| | | > |
| | | <RangePicker showTime={{ format: 'HH:mm' }} allowClear={true} style={{ width: '100%' }} /> |
| | | </Form.Item> |
| | | <Alert type='info' content={<span>创建成功后请在有效期内使用小鱼易连客户端加入该号码连线</span>} /> |
| | | <Alert type="info" content={<span>创建成功后请在有效期内使用小鱼易连客户端加入该号码连线</span>} /> |
| | | </Col> |
| | | </Row> |
| | | </Form> |
| | | <div style={{ display: 'flex', alignItems: 'center', gap: '16px', position: 'absolute', bottom: '0' }}> |
| | | <Button type="primary" onClick={() => radioSubmitClick()}>提交</Button> |
| | | <Button onClick={() => radioResetClick()} danger>重置</Button> |
| | | <Button type="primary" onClick={() => radioSubmitClick()}> |
| | | 提交 |
| | | </Button> |
| | | <Button onClick={() => radioResetClick()} danger> |
| | | 重置 |
| | | </Button> |
| | | </div> |
| | | </Col> |
| | | </Row> |
| | |
| | | </NewPage > |
| | | ); |
| | | }; |
| | | |
| | | |
| | | |
| | | export default CourtAuditEdit; |
| | |
| | | <div ><div className="title-text">事项来源</div></div> |
| | | <div>{props.data?.canalName || '大厅来访'}</div> |
| | | </Col> |
| | | <Col span={16}> |
| | | {/* <Col span={16}> |
| | | <div ><div className="title-text">来访形式</div></div> |
| | | <div>来访</div> |
| | | </Col> |
| | | </Col> */} |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项概况</div></div> |
| | | <div>{props.data?.caseDes || '-'} </div> |
| | |
| | | <div className="title"><div className="title-text">事项申请</div></div> |
| | | <div>{props.data?.caseClaim || '-'}</div> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项备注</div></div> |
| | | <div>{props.data?.caseRemark || '-'}</div> |
| | | </Col> |
| | | <Col span={8}> |
| | | <div className="title title-gap"> |
| | | {props.data?.majorStatus === 1 && <img src={majorStatus_1} alt="" srcset="" />} |
| | |
| | | if (type === 1) { |
| | | formRef.current.setFieldValue( |
| | | 'assignContent', |
| | | '本事项经初步核实,认为属于贵部门职责范围内的矛盾纠纷化解工作。请组织专门人员负责此事,尽快查明事实真相,依法依规进行处理,并在处理过程中充分考虑当事人的合理诉求,确保公平公正,维护当事人的合法权益。同时,请务必保持与当事人的沟通畅通,及时反馈办理进展,以增强矛盾纠纷化解工作的透明度和公信力。' |
| | | '经核查,本矛盾纠纷事项属于贵单位职能管辖范围,请组织专人跟进化解,并及时反馈化解进展情况。' |
| | | ); |
| | | } else { |
| | | formRef.current.setFieldValue('assignContent', ''); |
| | |
| | | |
| | | const handleTemplate = (type) => { |
| | | if (type === 1) { |
| | | formRef.current.setFieldValue('appearContent', '经初步核查,该事项较为复杂,且涉及多个相关部门的协调配合,为确保能够高效、妥善地解决当事人的问题,特此请求上级给予指导和支持。') |
| | | formRef.current.setFieldValue('appearContent', '经我部门核查,该矛盾纠纷涉及XX业务,化解事权应由XX部门牵头,特请求上级协调交办XX部门牵头办理。') |
| | | } else { |
| | | formRef.current.setFieldValue('appearContent', '') |
| | | formRef.current.setFieldValue('appearContent', '经综合研判,该纠纷事权在XX区/镇街,特请移交XX区/镇街牵头办理。') |
| | | } |
| | | } |
| | | |
| | |
| | | </Col> |
| | | <Col span={24} style={{ position: 'relative' }}> |
| | | <div style={{ position: 'absolute', display: 'flex ', top: '28px', zIndex: 1 }}> |
| | | <div className='myTag' style={{ marginRight: '22px' }} onClick={() => { handleTemplate(1) }}>公共模板1:通用上报意见范本</div> |
| | | <div className='myTag' style={{ marginRight: '22px' }} onClick={() => { handleTemplate(1) }}>公共模板1:申请移交上级职能部门范本</div> |
| | | <div className='myTag' style={{ marginRight: '22px' }} onClick={() => { handleTemplate(2) }}>公共模板2:跨区域纠纷移交上报范本</div> |
| | | </div> |
| | | <FormItem |
| | | label={(<div style={{ display: 'flex' }}>上报意见<div className="must">必填</div></div>)} |
| | |
| | | const handleTemplate = (type) => { |
| | | setSelectedTemplate(type); |
| | | if (type === 1) { |
| | | formRef.current.setFieldValue('windupContent', '双方当事人于xx时间xx地址已达成xx协议,纠纷已化解。') |
| | | } else { |
| | | formRef.current.setFieldValue('windupContent', '') |
| | | formRef.current.setFieldValue('windupContent', '当事人XXX已于XX年X月X日支付赔偿金XX元,纠纷已化解。') |
| | | } else if (type === 2) { |
| | | formRef.current.setFieldValue('windupContent', '用人单位已于XX年X月X日补发劳动者工资差额人民币XX元整,纠纷已化解。') |
| | | } else if (type === 3) { |
| | | formRef.current.setFieldValue('windupContent', '双方当事人已达成协议,纠纷不涉及赔偿问题,纠纷已化解。') |
| | | } |
| | | } |
| | | |
| | | const handleTemplate1 = (type) => { |
| | | setSelectedTemplate1(type); |
| | | if (type === 1) { |
| | | formRef.current.setFieldValue('agreeContent', '根据纠纷化解人员的协调,当事人双方同意如下调解协议:[简要说明协议第一条][简要说明协议第二条][……]本口头调解协议由纠纷化解人员记录,并已告知双方当事人。双方当事人确认无误。') |
| | | formRef.current.setFieldValue('agreeContent', '据工作人员协调,当事人双方达成一致调解意见:\n1.被申请方一次性向申请方支付人民币 XX 元,于协议达成后XX日内付清;\n2.双方就此次纠纷不再追究任何法律责任。\n本口头调解协议由纠纷化解人员记录,并已告知双方当事人。双方当事人确认无误。') |
| | | } else if (type === 2) { |
| | | formRef.current.setFieldValue('agreeContent', '据工作人员协调,当事人双方达成一致调解意见:\n1.被申请方承诺每日XX时间段不得产生明显噪音;\n2.双方就此次纠纷不再追究任何法律责任。\n本口头调解协议由纠纷化解人员记录,并已告知双方当事人。双方当事人确认无误。') |
| | | } else if (type === 3) { |
| | | formRef.current.setFieldValue('agreeContent', '据工作人员协调,当事人双方达成一致调解意见:\n1.被申请方自即日起停止在公共区域堆放杂物;\n2.双方就此次纠纷不再追究任何法律责任。\n本口头调解协议由纠纷化解人员记录,并已告知双方当事人。双方当事人确认无误。') |
| | | } else if (type === 4) { |
| | | formRef.current.setFieldValue('agreeContent', '据工作人员协调,当事人双方达成一致调解意见:\n1.用人单位于XX时间补发劳动者工资XX元;\n2.双方就此次纠纷不再追究任何法律责任。\n本口头调解协议由纠纷化解人员记录,并已告知双方当事人。双方当事人确认无误。') |
| | | } |
| | | } |
| | | |
| | | const handleTemplate2 = (type) => { |
| | | setSelectedTemplate2(type); |
| | | // if (type === 1) { |
| | | // formRefWrite.current.setFieldValue('windupContent', '双方当事人于xx时间xx地址已达成xx协议,纠纷已化解。') |
| | | // } else { |
| | | // formRefWrite.current.setFieldValue('windupContent', '') |
| | | // } |
| | | if (type === 1) { |
| | | formRefWrite.current.setFieldValue('windupContent', '双方当事人于xx时间xx地址已达成xx协议,纠纷已化解。') |
| | | } else { |
| | | formRefWrite.current.setFieldValue('windupContent', '') |
| | | formRefWrite.current.setFieldValue('windupContent', '当事人XXX已于XX年X月X日支付赔偿金XX元,纠纷已化解。') |
| | | } else if (type === 2) { |
| | | formRefWrite.current.setFieldValue('windupContent', '用人单位已于XX年X月X日补发劳动者工资差额人民币XX元整,纠纷已化解。') |
| | | } else if (type === 3) { |
| | | formRefWrite.current.setFieldValue('windupContent', '双方当事人已达成协议,纠纷不涉及赔偿问题,纠纷已化解。') |
| | | } |
| | | } |
| | | |
| | |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate1(1)} |
| | | > |
| | | 公共模板:调解成功口头协议 |
| | | 口头协议范本(经济纠纷) |
| | | </div> |
| | | <div |
| | | className={`myTag ${selectedTemplate1 === 1 ? 'highlighted' : ''}`} // 条件样式 |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate1(2)} |
| | | > |
| | | 口头协议范本(邻里纠纷-噪音) |
| | | </div> |
| | | <div |
| | | className={`myTag ${selectedTemplate1 === 1 ? 'highlighted' : ''}`} // 条件样式 |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate1(3)} |
| | | > |
| | | 口头协议范本(邻里纠纷-公共区域) |
| | | </div> |
| | | <div |
| | | className={`myTag ${selectedTemplate1 === 1 ? 'highlighted' : ''}`} // 条件样式 |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate1(4)} |
| | | > |
| | | 口头协议范本(劳资纠纷) |
| | | </div> |
| | | </div> |
| | | </> |
| | |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate(1)} |
| | | > |
| | | 公共模板:化解成功协议履行情况范本 |
| | | 公共模板:赔偿纠纷和解协议 |
| | | </div> |
| | | <div |
| | | className={`myTag ${selectedTemplate === 1 ? 'highlighted' : ''}`} // 条件样式 |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate(2)} |
| | | > |
| | | 公共模板:劳资纠纷和解协议 |
| | | </div> |
| | | <div |
| | | className={`myTag ${selectedTemplate === 1 ? 'highlighted' : ''}`} // 条件样式 |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate(3)} |
| | | > |
| | | 公共模板:邻里纠纷和解协议 |
| | | </div> |
| | | </div> |
| | | <FormItem |
| | |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate2(1)} |
| | | > |
| | | 公共模板:化解成功协议履行情况范本 |
| | | 公共模板:赔偿纠纷和解协议 |
| | | </div> |
| | | <div |
| | | className={`myTag ${selectedTemplate2 === 1 ? 'highlighted' : ''}`} // 条件样式 |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate2(2)} |
| | | > |
| | | 公共模板:劳资纠纷和解协议 |
| | | </div> |
| | | <div |
| | | className={`myTag ${selectedTemplate2 === 1 ? 'highlighted' : ''}`} // 条件样式 |
| | | style={{ marginRight: '22px' }} |
| | | onClick={() => handleTemplate2(3)} |
| | | > |
| | | 公共模板:邻里纠纷和解协议 |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | import { useNavigate } from 'react-router-dom'; |
| | | import { tab0, tab1, tab2, tab3, tab4, tab5, tab6, allSign, tab1bg } from '@/assets/images'; |
| | | import TableView from '../../components/TableView'; |
| | | import NewPage from '../../components/NewPage'; |
| | | import TableDraftSearch from '../../components/TableDraftSearch'; |
| | | import TableSearch from '../../components/TableSearch'; |
| | | import MyTabsNew from '../../components/MyTabsNew'; |
| | |
| | | title: '事项来源', |
| | | dataIndex: 'caseSource', |
| | | key: 'caseSource', |
| | | width: 120, |
| | | width: 150, |
| | | render: (text, record) => { |
| | | return record.caseSecondSource && record.caseSecondSource !== null |
| | | ? `${text}/${record.caseSecondSource}` |
| | | : text; |
| | | }, |
| | | }, |
| | | { |
| | | title: '问题属地', |
| | |
| | | console.log('tableTab', tableTab, tabActivekey, tableData); |
| | | |
| | | return ( |
| | | <NewPage> |
| | | <div className="VisitWorkBench"> |
| | | <div className="VisitWorkBench-top"> |
| | | <span style={{ fontWeight: 600 }}>工作总览</span> |
| | |
| | | handleText={'重置'} |
| | | form={form} |
| | | itemData={[ |
| | | { type: 'RangePicker', name: 'updateTime', label: '保存时间', shortcutsPlacementLeft: true, shortcuts: $$.shortcutsList(), span: 6 }, |
| | | { |
| | | type: 'RangePicker', |
| | | name: 'updateTime', |
| | | label: '保存时间', |
| | | shortcutsPlacementLeft: true, |
| | | shortcuts: $$.shortcutsList(), |
| | | span: 6, |
| | | }, |
| | | { type: 'Input', name: 'plaintiffs', placeholder: '查询关键词', label: '申请方', span: 6 }, |
| | | { type: 'Input', name: 'defendants', placeholder: '查询关键词', label: '被申请方', span: 6 }, |
| | | ]} |
| | |
| | | textAlign={{ textAlign: 'left' }} |
| | | form={form} |
| | | itemData={[ |
| | | { type: 'RangePicker', name: 'createTime', label: '登记时间', shortcutsPlacementLeft: true, shortcuts: $$.shortcutsList(), span: 6 }, |
| | | { |
| | | type: 'RangePicker', |
| | | name: 'createTime', |
| | | label: '登记时间', |
| | | shortcutsPlacementLeft: true, |
| | | shortcuts: $$.shortcutsList(), |
| | | span: 6, |
| | | }, |
| | | { type: 'Input', name: 'plaintiffs', placeholder: '查询关键词', label: '申请方', span: 6 }, |
| | | { type: 'Input', name: 'defendants', placeholder: '查询关键词', label: '被申请方', span: 6 }, |
| | | { |
| | |
| | | caseClaim={caseClaim} |
| | | /> |
| | | </div> |
| | | </NewPage> |
| | | ); |
| | | }; |
| | | |
| | |
| | | * @Company: hugeInfo |
| | | * @Author: lwh |
| | | * @Date: 2024-11-26 15:49:14 |
| | | * @LastEditTime: 2025-04-21 19:01:28 |
| | | * @LastEditTime: 2025-06-14 11:18:59 |
| | | * @LastEditors: lwh |
| | | * @Version: 1.0.0 |
| | | * @Description: |
| | |
| | | {fileData.fileList?.map((result, resIndex) => { |
| | | return ( |
| | | <div style={{ display: 'inline-block' }}> |
| | | {result.suffix === 'pdf' ? ( |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} /> |
| | | ) : ( |
| | | <PreviewImage name={result.name} src={result.showUrl} /> |
| | | )} |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} /> |
| | | {resIndex !== fileData.fileList?.length - 1 && <>,</>} |
| | | </div> |
| | | ); |
| | |
| | | {fileData.fileList?.map((result, resIndex) => { |
| | | return ( |
| | | <div style={{ display: 'inline-block' }}> |
| | | {result.suffix === 'pdf' ? ( |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} /> |
| | | ) : ( |
| | | <PreviewImage name={result.name} src={result.showUrl} /> |
| | | )} |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} /> |
| | | {resIndex !== fileData.fileList?.length - 1 && <>,</>} |
| | | </div> |
| | | ); |
| | |
| | | <span className="public-infoSubTitle"> |
| | | <span className="public-nameCard"> |
| | | |
| | | <NameCard2 name={data.value === 'auditPeople' ? object.auditUserName : object.applyUserName} userId={data.value === 'auditPeople' ? object.auditUserId : object.applyUserId} /> |
| | | <NameCard2 |
| | | name={data.value === 'auditPeople' ? object.auditUserName : object.applyUserName} |
| | | userId={data.value === 'auditPeople' ? object.auditUserId : object.applyUserId} |
| | | /> |
| | | </span> |
| | | </span> |
| | | </span> |
| | |
| | | {fileData.fileList?.map((result, resIndex) => { |
| | | return ( |
| | | <div style={{ display: 'inline-block' }}> |
| | | {result.suffix === 'pdf' ? ( |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} /> |
| | | ) : ( |
| | | <PreviewImage name={result.name} src={result.showUrl} /> |
| | | )} |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} /> |
| | | {resIndex !== fileData.fileList?.length - 1 && <>,</>} |
| | | </div> |
| | | ); |
| | |
| | | {props.dismissData?.fileInfoList?.map((result, resIndex) => { |
| | | return ( |
| | | <div style={{ display: 'inline-block' }}> |
| | | {result.suffix === 'pdf' ? ( |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} /> |
| | | ) : ( |
| | | <PreviewImage name={result.name} src={result.showUrl} /> |
| | | )} |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} /> |
| | | {/* <PreviewImage name={result.name} src={result.showUrl} /> */} |
| | | {resIndex !== props.dismissData?.fileInfoList?.length - 1 && <>,</>} |
| | | </div> |
| | |
| | | * @Author: dminyi 1301963064@qq.com |
| | | * @Date: 2024-09-06 09:40:00 |
| | | * @LastEditors: lwh |
| | | * @LastEditTime: 2025-05-10 17:26:00 |
| | | * @LastEditTime: 2025-06-14 11:16:06 |
| | | * @FilePath: \gzDyh\gz-customerSystem\src\views\register\matterDetail\HandleRecord.jsx |
| | | * @Description: 办理记录 |
| | | */ |
| | |
| | | <div> |
| | | {record?.fileInfoList?.map((result, index) => ( |
| | | <> |
| | | {result.suffix === 'pdf' ? ( |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} /> |
| | | ) : ( |
| | | <PreviewImage name={result.name} src={result.showUrl} /> |
| | | )} |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} /> |
| | | </> |
| | | // <div key={index} onClick={() => handleOpenFiles(item)} style={{ cursor: 'pointer' }}> |
| | | // {item.name || '-'} |
| | |
| | | import React, { useState, useEffect } from "react"; |
| | | import React, { useState, useEffect } from 'react'; |
| | | import { Row, Col, Space, Typography } from 'antd'; |
| | | import { Modal, Divider } from '@arco-design/web-react'; |
| | | import * as $$ from '../../../utils/utility'; |
| | |
| | | import NameCard2 from '../../../components/NameCard2'; |
| | | import { judicial_3 } from '@/assets/images'; |
| | | import MyPDF from '../../../components/MyPDF'; |
| | | import { judicial_7 } from "../../../assets/images"; |
| | | import { judicial_7 } from '../../../assets/images'; |
| | | |
| | | // 司法确认详情接口 |
| | | function getJudicInfoApi(submitData) { |
| | |
| | | const { Paragraph, Link, Text } = Typography; |
| | | const Judicial = (props) => { |
| | | const [data, setData] = useState({}); |
| | | const [videoList, setVideoList] = useState([]) |
| | | const [videoList, setVideoList] = useState([]); |
| | | // 预添加预约 |
| | | const [preBookData, setPreBookData] = useState({}); |
| | | const [radioVisible, setRadioVisible] = useState(false); |
| | | |
| | | |
| | | function checkTimeRange(startTime, endTime, currentTime) { |
| | | if (currentTime < new Date(startTime)) { |
| | | return <div className='public-color'>未开始</div>; // 当前时间在时间范围之前 |
| | | return <div className="public-color">未开始</div>; // 当前时间在时间范围之前 |
| | | } else if (currentTime >= new Date(startTime) && currentTime <= new Date(endTime)) { |
| | | return <div style={{ color: '#EF6C24' }}>进行中</div>; // 当前时间在时间范围内 |
| | | } else { |
| | | return <div className='public-orange'>已结束</div>; // 当前时间在时间范围之后 |
| | | return <div className="public-orange">已结束</div>; // 当前时间在时间范围之后 |
| | | } |
| | | } |
| | | // 初始化附件回显 |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | // 获取预约调解记录 |
| | | async function getMeetInfo(id) { |
| | | global.setSpinning(true); |
| | |
| | | if (res.type) { |
| | | let list = res.data || []; |
| | | if (list?.length > 0) { |
| | | setPreBookData(list[0]) |
| | | setPreBookData(list[0]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | const getVideo = async (id) => { |
| | | const res = await getVideoApi(id) |
| | | const res = await getVideoApi(id); |
| | | if (res.type) { |
| | | if (res.data) { |
| | | setVideoList(res.data || []) |
| | | setVideoList(res.data || []); |
| | | } else { |
| | | setVideoList(null) |
| | | setVideoList(null); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | |
| | | useEffect(() => { |
| | | getJudicialApply(props.caseId) |
| | | getMeetInfo(props.caseId) |
| | | getVideo(props.caseId) |
| | | }, []) |
| | | getJudicialApply(props.caseId); |
| | | getMeetInfo(props.caseId); |
| | | getVideo(props.caseId); |
| | | }, []); |
| | | |
| | | return ( |
| | | <div style={{ ...props.style, position: 'relative' }}> |
| | | <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}> |
| | | <Space size='small'> |
| | | <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>司法确认信息</h4> |
| | | <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' style={{ color: data?.judicResult == '22_00028-1' ? '#00b42a' : '#f53f3f' }}> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120"> |
| | | 司法确认结果 |
| | | </th> |
| | | <td width="380" style={{ color: data?.judicResult == '22_00028-1' ? '#00b42a' : '#f53f3f' }}> |
| | | {data?.judicResult == '22_00028-1' ? '已达成' : data?.judicResult == '22_00028-2' ? '未达成' : '-'} |
| | | </td> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120">预约信息</th> |
| | | <td width='380'>{preBookData?.orderStartTime ? <span className="public-a public-color" onClick={() => { setRadioVisible(true) }}>点击查看</span> : '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120"> |
| | | 预约信息 |
| | | </th> |
| | | <td width="380"> |
| | | {preBookData?.orderStartTime ? ( |
| | | <span |
| | | className="public-a public-color" |
| | | onClick={() => { |
| | | setRadioVisible(true); |
| | | }} |
| | | > |
| | | 点击查看 |
| | | </span> |
| | | ) : ( |
| | | '-' |
| | | )} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120">司法确认部门</th> |
| | | <td width='380'>{data?.courtName || '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120">结案时间</th> |
| | | <td width='380'>{$$.minuteFormat(data?.judicEndTime)}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120"> |
| | | 司法确认部门 |
| | | </th> |
| | | <td width="380">{data?.courtName || '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120"> |
| | | 结案时间 |
| | | </th> |
| | | <td width="380">{$$.minuteFormat(data?.judicEndTime)}</td> |
| | | </tr> |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title">承办法官</th> |
| | | <td width='380'><div className='public-infoSubTitle'><NameCard2 name={data.judgeName} userId={data.judgeNameId || ''} /></div></td> |
| | | <th bgcolor="#F7F8FA" className="table-title">助理/书记员</th> |
| | | <td width='380'><div style={{ display: 'flex', gap: '16px', flexWrap: 'wrap' }} className='public-infoSubTitle'>{data?.judicAssistList?.map(i => (<NameCard2 name={i.assUserName} userId={i.assUserId} />))}</div></td> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 承办法官 |
| | | </th> |
| | | <td width="380"> |
| | | <div className="public-infoSubTitle"> |
| | | <NameCard2 name={data.judgeName} userId={data.judgeNameId || ''} /> |
| | | </div> |
| | | </td> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 助理/书记员 |
| | | </th> |
| | | <td width="380"> |
| | | <div style={{ display: 'flex', gap: '16px', flexWrap: 'wrap' }} className="public-infoSubTitle"> |
| | | {data?.judicAssistList?.map((i) => ( |
| | | <NameCard2 name={i.assUserName} userId={i.assUserId} /> |
| | | ))} |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | { |
| | | data?.judicResult == '22_00028-1' && |
| | | {data?.judicResult == '22_00028-1' && ( |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title">司法确认案号</th> |
| | | <td width='380'>{data?.judicNo || '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title">诉前调确号</th> |
| | | <td width='380'>{data?.mediateJudicNo || '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 司法确认案号 |
| | | </th> |
| | | <td width="380">{data?.judicNo || '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 诉前调确号 |
| | | </th> |
| | | <td width="380">{data?.mediateJudicNo || '-'}</td> |
| | | </tr> |
| | | } |
| | | )} |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title">申请时间</th> |
| | | <td width='380'>{$$.minuteFormat(data?.applyTime)}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title">申请部门</th> |
| | | <td width='380'>{data?.applyUnitName || '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 申请时间 |
| | | </th> |
| | | <td width="380">{$$.minuteFormat(data?.applyTime)}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 申请部门 |
| | | </th> |
| | | <td width="380">{data?.applyUnitName || '-'}</td> |
| | | </tr> |
| | | { |
| | | data?.judicResult == '22_00028-1' && |
| | | {data?.judicResult == '22_00028-1' && ( |
| | | <> |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title">裁定文书</th> |
| | | <td width='380' colspan='3'>{ |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-405')?.fileList?.length ? |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-405')?.fileList?.map((item, index) => { |
| | | return <>{item.suffix === 'pdf' ? <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> : <PreviewImage key={index} name={item.name} src={item.showUrl} />}</> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 裁定文书 |
| | | </th> |
| | | <td width="380" colspan="3"> |
| | | {data?.fileList?.find((i) => i.ownerType === '22_00018-405')?.fileList?.length ? ( |
| | | data?.fileList |
| | | ?.find((i) => i.ownerType === '22_00018-405') |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | | : <div className='public-infoSubTitle'>-</div> |
| | | }</td> |
| | | ) : ( |
| | | <div className="public-infoSubTitle">-</div> |
| | | )} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title">询问笔录</th> |
| | | <td width='380' colspan='3'>{ |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-401')?.fileList?.length ? |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-401')?.fileList?.map((item, index) => { |
| | | return <>{item.suffix === 'pdf' ? <MyPDF name={item?.name} fileUrl={item?.showUrl} key={index} /> : <PreviewImage key={index} name={item.name} src={item.showUrl} />}</> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 询问笔录 |
| | | </th> |
| | | <td width="380" colspan="3"> |
| | | {data?.fileList?.find((i) => i.ownerType === '22_00018-401')?.fileList?.length ? ( |
| | | data?.fileList |
| | | ?.find((i) => i.ownerType === '22_00018-401') |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | | : <div className='public-infoSubTitle'>-</div> |
| | | }</td> |
| | | ) : ( |
| | | <div className="public-infoSubTitle">-</div> |
| | | )} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title">送达地址确认书</th> |
| | | <td width='380' colspan='3'>{ |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-108')?.fileList?.length ? |
| | | data?.fileList?.find(i => i.ownerType === '22_00018-108')?.fileList?.map((item, index) => { |
| | | return <>{item.suffix === 'pdf' ? <MyPDF name={item?.fileName} fileUrl={item?.showUrl} key={index} /> : <PreviewImage key={index} name={item.fileName} src={item.showUrl} />}</> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 送达地址确认书 |
| | | </th> |
| | | <td width="380" colspan="3"> |
| | | {data?.fileList?.find((i) => i.ownerType === '22_00018-108')?.fileList?.length ? ( |
| | | data?.fileList |
| | | ?.find((i) => i.ownerType === '22_00018-108') |
| | | ?.fileList?.map((item, index) => { |
| | | return ( |
| | | <> |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | </> |
| | | ); |
| | | }) |
| | | : <div className='public-infoSubTitle'>-</div> |
| | | }</td> |
| | | ) : ( |
| | | <div className="public-infoSubTitle">-</div> |
| | | )} |
| | | </td> |
| | | </tr> |
| | | { |
| | | videoList?.length > 0 && <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120">司法确认视频</th> |
| | | <td colspan='3'> |
| | | {videoList?.length > 0 && ( |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title" width="120"> |
| | | 司法确认视频 |
| | | </th> |
| | | <td colspan="3"> |
| | | {videoList?.map((item, index) => { |
| | | return <div key={'video' + index} style={{ display: 'flex', alignItems: 'center', gap: '8px' }}> |
| | | <img src={judicial_7} alt="" srcset="" /><Link onClick={() => { window.open(item.playUrl) }}>{item.videoName}</Link> |
| | | return ( |
| | | <div key={'video' + index} style={{ display: 'flex', alignItems: 'center', gap: '8px' }}> |
| | | <img src={judicial_7} alt="" srcset="" /> |
| | | <Link |
| | | onClick={() => { |
| | | window.open(item.playUrl); |
| | | }} |
| | | > |
| | | {item.videoName} |
| | | </Link> |
| | | </div> |
| | | ); |
| | | })} |
| | | </td> |
| | | </tr> |
| | | } |
| | | )} |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title">结案说明</th> |
| | | <td width='380' colspan='3'>{data?.judicContent || '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 结案说明 |
| | | </th> |
| | | <td width="380" colspan="3"> |
| | | {data?.judicContent || '-'} |
| | | </td> |
| | | </tr> |
| | | </> |
| | | } |
| | | { |
| | | data?.judicResult == '22_00028-2' && |
| | | )} |
| | | {data?.judicResult == '22_00028-2' && ( |
| | | <tr> |
| | | <th bgcolor="#F7F8FA" className="table-title">未达成原因</th> |
| | | <td width='380' colspan='3'>{data?.judicFalseCause || '-'}</td> |
| | | <th bgcolor="#F7F8FA" className="table-title"> |
| | | 未达成原因 |
| | | </th> |
| | | <td width="380" colspan="3"> |
| | | {data?.judicFalseCause || '-'} |
| | | </td> |
| | | </tr> |
| | | } |
| | | )} |
| | | </table> |
| | | <Modal |
| | | title='预约信息' |
| | | title="预约信息" |
| | | style={{ width: '40%' }} |
| | | className='judicial-handle-modal' |
| | | className="judicial-handle-modal" |
| | | onCancel={() => setRadioVisible(false)} |
| | | visible={radioVisible} |
| | | footer={null} |
| | | > |
| | | <div style={{ marginBottom: '0' }} className='judicial-item-content'> |
| | | <div className='judicial-item-content-left'> |
| | | <div style={{ marginBottom: '0' }} className="judicial-item-content"> |
| | | <div className="judicial-item-content-left"> |
| | | {/* <div className='judicial-item-content-left-del public-a'><img src={judicial_3} alt="" srcset="" /></div> */} |
| | | <div className='judicial-item-content-left-t'> |
| | | <div className='judicial-item-content-left-t-l'><div className='judicial-item-content-left-bigTitle public-color'>{$$.myTimeFormat(preBookData?.orderStartTime, 'HH:mm')}</div><div className='public-color'>{$$.myTimeFormat(preBookData?.orderStartTime, 'YYYY年MM月DD日')}</div></div> |
| | | <div className='judicial-item-content-left-t-l'> |
| | | <Space size='small'> |
| | | <div className='judicial-item-content-left-inline'></div> |
| | | <div style={{ display: 'flex', flexDirection: 'column', gap: '4px', alignItems: 'center', justifyContent: 'center' }}>{checkTimeRange(preBookData?.orderStartTime, preBookData?.orderEndTime, new Date())}<div className='public-color judicial-item-content-left-time'>{$$.calculateTimeDifference(preBookData?.orderStartTime, preBookData?.orderEndTime)}</div></div> |
| | | <div className='judicial-item-content-left-inline'></div> |
| | | <div className="judicial-item-content-left-t"> |
| | | <div className="judicial-item-content-left-t-l"> |
| | | <div className="judicial-item-content-left-bigTitle public-color">{$$.myTimeFormat(preBookData?.orderStartTime, 'HH:mm')}</div> |
| | | <div className="public-color">{$$.myTimeFormat(preBookData?.orderStartTime, 'YYYY年MM月DD日')}</div> |
| | | </div> |
| | | <div className="judicial-item-content-left-t-l"> |
| | | <Space size="small"> |
| | | <div className="judicial-item-content-left-inline"></div> |
| | | <div style={{ display: 'flex', flexDirection: 'column', gap: '4px', alignItems: 'center', justifyContent: 'center' }}> |
| | | {checkTimeRange(preBookData?.orderStartTime, preBookData?.orderEndTime, new Date())} |
| | | <div className="public-color judicial-item-content-left-time"> |
| | | {$$.calculateTimeDifference(preBookData?.orderStartTime, preBookData?.orderEndTime)} |
| | | </div> |
| | | </div> |
| | | <div className="judicial-item-content-left-inline"></div> |
| | | </Space> |
| | | </div> |
| | | <div className='judicial-item-content-left-t-l'><div className='judicial-item-content-left-bigTitle public-color'>{$$.myTimeFormat(preBookData?.orderEndTime, 'HH:mm')}</div><div className='public-color'>{$$.myTimeFormat(preBookData?.orderEndTime, 'YYYY年MM月DD日')}</div></div> |
| | | <div className="judicial-item-content-left-t-l"> |
| | | <div className="judicial-item-content-left-bigTitle public-color">{$$.myTimeFormat(preBookData?.orderEndTime, 'HH:mm')}</div> |
| | | <div className="public-color">{$$.myTimeFormat(preBookData?.orderEndTime, 'YYYY年MM月DD日')}</div> |
| | | </div> |
| | | </div> |
| | | <Divider /> |
| | | <div className='judicial-item-content-left-c-flex'> |
| | | <div className='judicial-item-content-left-c'> |
| | | <div className='judicial-item-content-left-c-title'>司法确认方式</div> |
| | | <div className='judicial-item-content-left-c-content'>{preBookData?.meetWayName || '-'}</div> |
| | | <div className="judicial-item-content-left-c-flex"> |
| | | <div className="judicial-item-content-left-c"> |
| | | <div className="judicial-item-content-left-c-title">司法确认方式</div> |
| | | <div className="judicial-item-content-left-c-content">{preBookData?.meetWayName || '-'}</div> |
| | | </div> |
| | | <div className='judicial-item-content-left-c'> |
| | | <div className='judicial-item-content-left-c-title'>远程视频司法确认号</div> |
| | | <div className='judicial-item-content-left-c-content'><span style={{ fontSize: '16px', lineHeight: '24px' }}>{preBookData?.roomNo || '-'}</span> {preBookData?.roomNo && <span onClick={() => { |
| | | navigator.clipboard.writeText(preBookData?.roomNo).then(() => { |
| | | <div className="judicial-item-content-left-c"> |
| | | <div className="judicial-item-content-left-c-title">远程视频司法确认号</div> |
| | | <div className="judicial-item-content-left-c-content"> |
| | | <span style={{ fontSize: '16px', lineHeight: '24px' }}>{preBookData?.roomNo || '-'}</span> |
| | | {preBookData?.roomNo && ( |
| | | <span |
| | | onClick={() => { |
| | | navigator.clipboard |
| | | .writeText(preBookData?.roomNo) |
| | | .then(() => { |
| | | $$.infoSuccess({ content: '复制成功' }); |
| | | }).catch(err => { |
| | | }) |
| | | .catch((err) => { |
| | | $$.catchApiError('复制失败', err); |
| | | }); |
| | | }} className='public-color public-a'>复制</span>}</div> |
| | | }} |
| | | className="public-color public-a" |
| | | > |
| | | 复制 |
| | | </span> |
| | | )} |
| | | </div> |
| | | <div className='judicial-item-content-left-c'> |
| | | <div className='judicial-item-content-left-c-title'>司法确认地点</div> |
| | | <div className='judicial-item-content-left-c-content'>{preBookData?.meetAddr || '-'}</div> |
| | | </div> |
| | | <div className="judicial-item-content-left-c"> |
| | | <div className="judicial-item-content-left-c-title">司法确认地点</div> |
| | | <div className="judicial-item-content-left-c-content">{preBookData?.meetAddr || '-'}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </Modal> |
| | | </div> |
| | | ) |
| | | } |
| | | ); |
| | | }; |
| | | |
| | | export default Judicial |
| | | export default Judicial; |
| | |
| | | import { Row, Col, Space } from 'antd'; |
| | | import { Select, DatePicker, Form, Button, Menu } from '@arco-design/web-react'; |
| | | import * as $$ from '@/utils/utility'; |
| | | import * as docx from 'docx-preview'; |
| | | |
| | | const FormItem = Form.Item; |
| | | const MenuItem = Menu.Item; |
| | |
| | | }, |
| | | }; |
| | | |
| | | |
| | | const NewFileCheck = (props) => { |
| | | const formRef = useRef(); |
| | | const [fileUrl, setFileUrl] = useState('') |
| | | const [itemData, setItemData] = useState(null) |
| | | const [list, setList] = useState([]) |
| | | const [fileUrl, setFileUrl] = useState(''); |
| | | const [itemData, setItemData] = useState(null); |
| | | const [list, setList] = useState([]); |
| | | const peopleTypeMap = { |
| | | 1: '工作人员', |
| | | 2: '当事人' |
| | | } |
| | | 2: '当事人', |
| | | }; |
| | | const containerRef = useRef(null); |
| | | |
| | | useEffect(() => { |
| | | setList(props.menuList || []) |
| | | }, [props.menuList]) |
| | | setList(props.menuList || []); |
| | | }, [props.menuList]); |
| | | |
| | | //点击菜单 |
| | | const clickItem = (data) => { |
| | | console.log(data); |
| | | setItemData(data) |
| | | setFileUrl(`${appUrl.fileUrl}/${appUrl.sys}${data.showUrl}`) |
| | | setItemData(data); |
| | | if (data.suffix === 'docx' || data.suffix === 'doc') { |
| | | const renderDocx = async () => { |
| | | try { |
| | | const response = await fetch(`${appUrl.fileUrl}/${appUrl.sys}${data.showUrl}`); |
| | | const blob = await response.blob(); |
| | | await docx.renderAsync(blob, containerRef.current); |
| | | } catch (error) { |
| | | console.error('文档加载失败', error); |
| | | } |
| | | }; |
| | | renderDocx(); |
| | | } |
| | | setFileUrl(`${appUrl.fileUrl}/${appUrl.sys}${data.showUrl}`); |
| | | }; |
| | | |
| | | //查询 |
| | | const handleSUbmit = (type) => { |
| | | const data = formRef.current.getFieldsValue(); |
| | | console.log('data', data); |
| | | if (type === 'search') { |
| | | let newList = props.menuList |
| | | let newList = props.menuList; |
| | | if (data.type) { |
| | | newList = newList.filter(item => item.ownerType === data.type) |
| | | newList = newList.filter((item) => item.ownerType === data.type); |
| | | } |
| | | if (data.name) { |
| | | newList = newList.map(item => ({ ...item, fileList: item.fileList?.filter(i => i.uploaderType === data.name) })) |
| | | newList = newList.map((item) => ({ ...item, fileList: item.fileList?.filter((i) => i.uploaderType === data.name) })); |
| | | } |
| | | if (data.time) { |
| | | let timeStart = new Date(data.time[0]); |
| | | let timeEnd = new Date(data.time[1]); |
| | | newList = newList.map(item => ({ ...item, fileList: item.fileList?.filter(i => new Date(i.createTime) >= timeStart && new Date(i.createTime) <= timeEnd) })) |
| | | newList = newList.map((item) => ({ |
| | | ...item, |
| | | fileList: item.fileList?.filter((i) => new Date(i.createTime) >= timeStart && new Date(i.createTime) <= timeEnd), |
| | | })); |
| | | } |
| | | setList(newList) |
| | | setItemData(null) |
| | | setFileUrl('') |
| | | setList(newList); |
| | | setItemData(null); |
| | | setFileUrl(''); |
| | | } |
| | | // 重置 |
| | | if (type === 'reset') { |
| | | setList(props.menuList || []) |
| | | setItemData(null) |
| | | setFileUrl('') |
| | | setList(props.menuList || []); |
| | | setItemData(null); |
| | | setFileUrl(''); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | console.log('list', list); |
| | | |
| | | |
| | | return ( |
| | | <nav className="filesCheck-nav" style={{ borderRight: '1px solid transparent' }}> |
| | | <Form |
| | | ref={formRef} |
| | | layout='horizontal' |
| | | style={{ marginTop: '24px' }} |
| | | scrollToFirstError={true} |
| | | {...formItemLayout} |
| | | > |
| | | <Form ref={formRef} layout="horizontal" style={{ marginTop: '24px' }} scrollToFirstError={true} {...formItemLayout}> |
| | | <Row gutter={24} style={{ marginRight: '0px' }}> |
| | | <Col span={6}> |
| | | <FormItem label='材料类型:' field='type'> |
| | | <FormItem label="材料类型:" field="type"> |
| | | <Select |
| | | placeholder='请选择' |
| | | placeholder="请选择" |
| | | allowClear |
| | | options={[ |
| | | { |
| | |
| | | </FormItem> |
| | | </Col> |
| | | <Col span={7}> |
| | | <FormItem |
| | | label='上传时间:' |
| | | field='time' |
| | | > |
| | | <DatePicker.RangePicker |
| | | showTime |
| | | shortcutsPlacementLeft={true} |
| | | shortcuts={$$.shortcutsList()} |
| | | separator='~' |
| | | style={{ width: '100%' }} |
| | | /> |
| | | <FormItem label="上传时间:" field="time"> |
| | | <DatePicker.RangePicker showTime shortcutsPlacementLeft={true} shortcuts={$$.shortcutsList()} separator="~" style={{ width: '100%' }} /> |
| | | </FormItem> |
| | | </Col> |
| | | <Col span={7}> |
| | | <FormItem |
| | | label='上传人类型:' |
| | | field='name' |
| | | onChange={(e) => console.log(e.target.value, 'vvv')} |
| | | > |
| | | <FormItem label="上传人类型:" field="name" onChange={(e) => console.log(e.target.value, 'vvv')}> |
| | | <Select |
| | | placeholder='请选择' |
| | | placeholder="请选择" |
| | | allowClear |
| | | style={{ width: '100%' }} |
| | | options={[ |
| | | { |
| | | label: '工作人员', |
| | | value: 1 |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: '当事人', |
| | | value: 2 |
| | | } |
| | | value: 2, |
| | | }, |
| | | ]} |
| | | /> |
| | | </FormItem> |
| | | </Col> |
| | | <Col span={4}> |
| | | <Space> |
| | | <Button className="dialogPrimary" type='primary' onClick={() => handleSUbmit('search')}>查询</Button> |
| | | <Button onClick={() => { |
| | | <Button className="dialogPrimary" type="primary" onClick={() => handleSUbmit('search')}> |
| | | 查询 |
| | | </Button> |
| | | <Button |
| | | onClick={() => { |
| | | formRef.current.resetFields(); |
| | | handleSUbmit('reset') |
| | | }}>重置</Button> |
| | | handleSUbmit('reset'); |
| | | }} |
| | | > |
| | | 重置 |
| | | </Button> |
| | | </Space> |
| | | </Col> |
| | | </Row> |
| | | |
| | | </Form> |
| | | <div style={{ display: 'flex', height: '550px' }}> |
| | | <div style={{ width: '256px', borderRight: '1px solid #F0F0F0' }}> |
| | | <Menu |
| | | style={{ width: '100%', height: '100%' }} |
| | | <Menu style={{ width: '100%', height: '100%' }}> |
| | | {list?.map((item) => { |
| | | return ( |
| | | <SubMenu key={item.id} title={item.ownerTypeName + `(${(item.fileList && item.fileList.length) || 0})`}> |
| | | {item.fileList?.map((res) => { |
| | | return ( |
| | | <MenuItem |
| | | key={res.id} |
| | | onClick={() => { |
| | | clickItem(res); |
| | | }} |
| | | > |
| | | {list?.map(item => { |
| | | return <SubMenu |
| | | key={item.id} |
| | | title={item.ownerTypeName + `(${item.fileList && item.fileList.length || 0})`} |
| | | > |
| | | {item.fileList?.map(res => { |
| | | return <MenuItem key={res.id} onClick={() => { clickItem(res) }}>{res.name}</MenuItem> |
| | | {res.name} |
| | | </MenuItem> |
| | | ); |
| | | })} |
| | | </SubMenu> |
| | | ); |
| | | })} |
| | | </Menu> |
| | | </div> |
| | | <div style={{ flex: 1 }}> |
| | | { |
| | | itemData ? <Fragment> |
| | | {itemData ? ( |
| | | <Fragment> |
| | | <div style={{ background: '#e8f3ff', color: '#1A6FB8', padding: '5px 10px', marginBottom: '16px', marginLeft: '16px' }}> |
| | | <span>材料名称:{itemData.name}</span> | |
| | | <span>上传时间:{$$.timeFormat(itemData.updateTime)}</span> | |
| | | <span>上传人:{itemData.uploaderName} {itemData.uploaderType && <span>({peopleTypeMap[itemData.uploaderType]})</span>}</span> |
| | | <span> |
| | | 上传人:{itemData.uploaderName} {itemData.uploaderType && <span>({peopleTypeMap[itemData.uploaderType]})</span>} |
| | | </span> |
| | | </div> |
| | | <div style={{ width: '100%', height: '470px', display: 'flex', justifyContent: 'center', alignItems: 'center', overflow: 'auto' }}> |
| | | { |
| | | itemData.suffix === 'pdf' ? |
| | | {itemData.suffix === 'pdf' ? ( |
| | | <embed src={fileUrl} type="application/pdf" width="100%" height="100%"></embed> |
| | | : |
| | | ) : itemData.suffix === 'docx' ? ( |
| | | <div ref={containerRef} style={{ width: '100%', height: '100%' }} className="docx-container" /> |
| | | ) : ( |
| | | <img src={fileUrl} alt="" style={{ maxWidth: '100%', maxHeight: '100%', objectFit: 'contain' }} /> |
| | | } |
| | | )} |
| | | </div> |
| | | </Fragment> : <Fragment> |
| | | </Fragment> |
| | | ) : ( |
| | | <Fragment> |
| | | <div style={{ padding: '100px 0' }}>{$$.MyEmpty()}</div> |
| | | </Fragment> |
| | | } |
| | | )} |
| | | </div> |
| | | </div> |
| | | </nav> |
| | |
| | | setIsModalVisible(false) |
| | | }} |
| | | onClose={() => setIsModalVisible(false)} |
| | | type='dept' |
| | | type='dept_union' |
| | | isCheckbox={true} |
| | | /> |
| | | </Modal> |
| | |
| | | <div ><div className="title-text">事项来源</div></div> |
| | | <div>{infoData.canalName || '-'}</div> |
| | | </Col> |
| | | <Col span={16}> |
| | | {/* <Col span={16}> |
| | | <div ><div className="title-text">来访形式</div></div> |
| | | <div>{infoData.visitWayName || '-'}</div> |
| | | </Col> |
| | | </Col> */} |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项概况</div></div> |
| | | <div>{infoData.caseDes || '-'}</div> |
| | |
| | | <div className="title"><div className="title-text">事项申请</div></div> |
| | | <div>{infoData.caseClaim || '-'}</div> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项备注</div></div> |
| | | <div>{infoData.caseRemark || '-'}</div> |
| | | </Col> |
| | | <Col span={8}> |
| | | <div className="title title-gap"> |
| | | {props.data?.majorStatus === 1 && <img src={majorStatus_1} alt="" srcset="" />} |
| | |
| | | <div><div className="title-text">事项来源</div></div> |
| | | <div>自行排查</div> |
| | | </Col> |
| | | <Col span={8}> |
| | | {/* <Col span={8}> |
| | | <div ><div className="title-text">来访形式</div></div> |
| | | <div>排查</div> |
| | | </Col> |
| | | </Col> */} |
| | | <Col span={8}> |
| | | <div ><div className="title-text">纠纷类型</div></div> |
| | | <div> |
| | |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项申请</div></div> |
| | | <div>{props.data?.caseClaim || '-'}</div> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项备注</div></div> |
| | | <div>{props.data?.caseRemark || '-'}</div> |
| | | </Col> |
| | | <Col span={8}> |
| | | <div className="title title-gap"> |
| | |
| | | {props.transactResult?.fileInfoBaseDTOList?.map((item, index) => { |
| | | console.log(item); |
| | | return <div style={{ display: 'inline-block' }}> |
| | | {item.suffix === 'pdf' ? <MyPDF name={item.name} fileUrl={item.showUrl} key={index} /> : <PreviewImage name={item.name} src={item.showUrl} />} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | {/* <PreviewImage name={item.name} src={item.showUrl} /> */} |
| | | {index !== props.transactResult?.fileInfoBaseDTOList.length - 1 && <>,</>} |
| | | </div> |
| | |
| | | /> |
| | | </FormItem> |
| | | </Col> |
| | | <Col span={24}> |
| | | <FormItem |
| | | label={ |
| | | <div style={{ display: 'flex' }}> |
| | | 备注 |
| | | <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} /> |
| | | <div |
| | | style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} |
| | | onClick={() => { |
| | | setScanFile(true); |
| | | setOcrText('caseRemark'); |
| | | }} |
| | | > |
| | | 识别材料 |
| | | </div> |
| | | </div> |
| | | } |
| | | field="caseRemark" |
| | | > |
| | | <Input.TextArea |
| | | maxLength={500} |
| | | showWordLimit |
| | | rows={7} |
| | | placeholder="请填写备注" |
| | | wrapperStyle={{ width: '100%' }} |
| | | /> |
| | | </FormItem> |
| | | </Col> |
| | | <div style={{ padding: '0px 16px', borderRadius: '2px', display: 'flex', alignItems: 'center' }}> |
| | | <img src={majorStatus_1} alt="" srcset="" /> |
| | | <FormItem |
| | |
| | | /> |
| | | </FormItem> |
| | | </Col> |
| | | <Col span={24}> |
| | | <FormItem |
| | | label={ |
| | | <div style={{ display: 'flex' }}> |
| | | 备注 |
| | | <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} /> |
| | | <div |
| | | style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} |
| | | onClick={() => { |
| | | setScanFile(true); |
| | | setOcrText('caseRemark'); |
| | | }} |
| | | > |
| | | 识别材料 |
| | | </div> |
| | | </div> |
| | | } |
| | | field="caseRemark" |
| | | > |
| | | <Input.TextArea |
| | | maxLength={500} |
| | | showWordLimit |
| | | rows={7} |
| | | placeholder="请填写备注" |
| | | wrapperStyle={{ width: '100%' }} |
| | | /> |
| | | </FormItem> |
| | | </Col> |
| | | <div style={{ padding: '0px 16px', borderRadius: '2px', display: 'flex', alignItems: 'center' }}> |
| | | <img src={majorStatus_1} alt="" srcset="" /> |
| | | <FormItem |
| | |
| | | * @Author: dminyi 1301963064@qq.com |
| | | * @Date: 2024-08-09 09:59:43 |
| | | * @LastEditors: lwh |
| | | * @LastEditTime: 2025-05-30 17:04:48 |
| | | * @LastEditTime: 2025-06-13 15:16:34 |
| | | * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx |
| | | * @Description: 来访登记 |
| | | */ |
| | |
| | | import '../index.less'; |
| | | import { Space } from 'antd'; |
| | | import { Button, Steps, Message } from '@arco-design/web-react'; |
| | | import { visit_10 } from '../../../assets/images'; |
| | | import { Modal } from 'antd'; |
| | | import VisitorRegister from './component/visitorRegister'; |
| | | import Preview from './preview'; |
| | |
| | | <div ><div className="title-text">事项来源</div></div> |
| | | <div>{props.data?.canalName || '大厅来访'}</div> |
| | | </Col> |
| | | <Col span={16}> |
| | | {/* <Col span={16}> |
| | | <div ><div className="title-text">来访形式</div></div> |
| | | <div>来访</div> |
| | | </Col> |
| | | </Col> */} |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项概况</div></div> |
| | | <div>{props.data?.caseDes || '-'} </div> |
| | |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项申请</div></div> |
| | | <div>{props.data?.caseClaim || '-'}</div> |
| | | </Col> |
| | | <Col span={24}> |
| | | <div className="title"><div className="title-text">事项备注</div></div> |
| | | <div>{props.data?.caseRemark || '-'}</div> |
| | | </Col> |
| | | <Col span={8}> |
| | | <div className="title title-gap"> |
| | |
| | | <div style={{ display: 'flex', gap: '8px' }}> |
| | | {props.transactResult?.fileInfoBaseDTOList?.map((item, index) => { |
| | | return <div style={{ display: 'inline-block' }}> |
| | | {item.suffix === 'pdf' ? <MyPDF name={item.name} fileUrl={item.showUrl} key={index} /> : <PreviewImage name={item.name} src={item.showUrl} />} |
| | | <MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} /> |
| | | {/* <PreviewImage name={item.name} src={item.showUrl} /> */} |
| | | {/* {index !== props.transactResult?.fileInfoBaseDTOList.length - 1 && <>,</>} */} |
| | | </div> |
| | |
| | | <div style={{ color: '#1A6FB8' }}> |
| | | {fileData.fileList?.map((result, resIndex) => { |
| | | return <div style={{ display: 'inline-block' }}> |
| | | {result.suffix === 'pdf' ? |
| | | <MyPDF name={result.name} fileUrl={result.showUrl} /> : |
| | | <PreviewImage name={result.name} src={result.showUrl} /> |
| | | } |
| | | <MyPDF key={resIndex} name={result.name} fileUrl={result.showUrl} fileType={result.suffix} /> |
| | | {resIndex !== fileData.fileList?.length - 1 && <>,</>} |
| | | </div> |
| | | }) || '-'} |
| | |
| | | getCaseInfo(caseId); |
| | | listFeedback(caseId); |
| | | getData(caseId); |
| | | getDismissData(caseId) |
| | | }, []) |
| | | |
| | | //获取权限tab和按钮权限 |
| | |
| | | placeholder: '请选择', |
| | | label: '配合部门', |
| | | }, |
| | | { type: 'Select', name: 'systemSource', label: '系统来源', placeholder: '请选择', span: 8, selectdata: $$.options.systemSource }, |
| | | ]} |
| | | handleReset={() => { |
| | | form.resetFields(); |
| | |
| | | <div style={{ display: 'flex', alignItems: 'center' }}> |
| | | <span className="workDash-item-title-green"></span> |
| | | <span style={{ color: '#4E5969', fontSize: '14px', display: 'flex', alignItems: 'center' }}> |
| | | 化解成功:{data?.resolveNum || 0}件 | 成功率:<span style={{ color: '#00B42A' }}>{data?.resolveRate || '0'}%</span> |
| | | 化解成功:{data?.finishNum || 0}件 | 成功率:<span style={{ color: '#00B42A' }}>{((data?.finishNum*100)/(data?.finishNum+data?.failNum) || 0).toFixed(2)}%</span> |
| | | <img style={{ width: '14px', height: '14px', marginLeft: '8px' }} src={workDash_5} alt="" srcset="" /> |
| | | </span> |
| | | </div> |
| | | </Space> |
| | | </div> |
| | | <div className="workDash-item-value"> |
| | | <div style={{ width: '50px' }}>{data?.finishNum || 0}</div> |
| | | <div style={{ width: '50px' }}>{data?.finishNum+data?.failNum || 0}</div> |
| | | <div style={{ width: '36px' }}></div> |
| | | <Space split={<Divider type="vertical" />}> |
| | | <div> |
| | | <span className="workDash-item-title-red"></span> |
| | | <span style={{ color: '#4E5969', fontSize: '14px' }}>化解不成功:{data?.unResolveNum || 0}件</span> |
| | | <span style={{ color: '#4E5969', fontSize: '14px' }}>化解不成功:{data?.failNum || 0}件</span> |
| | | </div> |
| | | </Space> |
| | | </div> |