From 5aa4a814ab8d4aa194a9683ebefaefdfc6d92c3a Mon Sep 17 00:00:00 2001
From: liuwh <964324856@qq.com>
Date: Tue, 17 Sep 2024 17:18:05 +0800
Subject: [PATCH] Merge branch 'master' of http://120.79.193.119:9090/r/gzzfw/frontEnd/gzDyh into master
---
gz-customerSystem/src/views/register/matterDetail/RateModule.jsx | 4
gz-customerSystem/src/views/register/visit/component/SelfVisitorRegister.jsx | 451 ++++++++++++++++++
gz-customerSystem/src/components/personCard/DetailDialog.jsx | 5
gz-customerSystem/src/views/comprehensive/index.jsx | 2
gz-customerSystem/src/views/register/eventFlow/component/EventFlow.jsx | 2
gz-customerSystem/src/api/appUrl.js | 6
gz-customerSystem/src/views/register/index.jsx | 12
gz-customerSystem/src/components/ProgressStep/index.less | 26
gz-customerSystem/src/views/register/visit/SelfPreview.jsx | 240 ++++++++++
gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx | 3
gz-customerSystem/src/router/router.js | 3
gz-customerSystem/src/views/register/handleFeedback/component/CaseResult.jsx | 124 ++--
gz-customerSystem/src/components/ProgressStep/VisitStep.jsx | 95 +++
gz-customerSystem/src/views/register/matterDetail/index.jsx | 2
gz-customerSystem/src/components/Layout/index.jsx | 21
gz-customerSystem/src/components/ArcoUpload/index.jsx | 2
gz-customerSystem/src/views/register/index.less | 15
gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx | 2
gz-customerSystem/src/views/register/visit/preview.jsx | 35
gz-customerSystem/src/views/register/visit/SelfInspection.jsx | 264 +++++++++++
gz-customerSystem/public/locationSelect.js | 10
gz-customerSystem/src/views/register/visit/index.jsx | 45 +
gz-customerSystem/src/components/Layout/Header.jsx | 16
gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx | 30
24 files changed, 1,240 insertions(+), 175 deletions(-)
diff --git a/gz-customerSystem/public/locationSelect.js b/gz-customerSystem/public/locationSelect.js
index f95c58f..de6b9be 100644
--- a/gz-customerSystem/public/locationSelect.js
+++ b/gz-customerSystem/public/locationSelect.js
@@ -7,6 +7,11 @@
'parentId': '1601',
'children': [
{
+ 'label': '新市街道',
+ 'value': '62857',
+ 'parentId': '50258',
+ },
+ {
'label': '云城街道',
'value': '129164',
'parentId': '50258',
@@ -104,11 +109,6 @@
{
'label': '同德街道',
'value': '62856',
- 'parentId': '50258',
- },
- {
- 'label': '新市街道',
- 'value': '62857',
'parentId': '50258',
},
{
diff --git a/gz-customerSystem/src/api/appUrl.js b/gz-customerSystem/src/api/appUrl.js
index 9a37c3e..ff9a0c3 100644
--- a/gz-customerSystem/src/api/appUrl.js
+++ b/gz-customerSystem/src/api/appUrl.js
@@ -9,12 +9,12 @@
*/
export const debug = {
// web服务
- baseUrl: 'http://gz.hugeinfo.com.cn',
- // baseUrl: "http://4gg4nv.natappfree.cc",
+ // baseUrl: 'http://gz.hugeinfo.com.cn',
+ baseUrl: "http://fv633e.natappfree.cc",
// baseUrl: 'http://mdqgnh.natappfree.cc',
// 附件服务
- fileUrl: "http://4gg4nv.natappfree.cc",
+ fileUrl: "http://fv633e.natappfree.cc",
// fileUrl: 'http://gz.hugeinfo.com.cn',
// 文件查看url 后面接附件编号
diff --git a/gz-customerSystem/src/components/ArcoUpload/index.jsx b/gz-customerSystem/src/components/ArcoUpload/index.jsx
index 7f87aa1..034b40c 100644
--- a/gz-customerSystem/src/components/ArcoUpload/index.jsx
+++ b/gz-customerSystem/src/components/ArcoUpload/index.jsx
@@ -24,6 +24,7 @@
* editData *, // 编辑回显数据
* handleDelFile *,//删除文件接口
* ownerType,//用于回显文件
+ * formItemParams, formItem的参数
*/
export default function ArcoUpload(props) {
@@ -62,6 +63,7 @@
label={props.label}
field={props.field}
triggerPropName='fileList'
+ {...props.formItemParams}
>
<Upload
drag
diff --git a/gz-customerSystem/src/components/Layout/Header.jsx b/gz-customerSystem/src/components/Layout/Header.jsx
index a91e32c..bb24e9b 100644
--- a/gz-customerSystem/src/components/Layout/Header.jsx
+++ b/gz-customerSystem/src/components/Layout/Header.jsx
@@ -37,10 +37,9 @@
* handleClickMenu: function 头部导航点击
* handleChangeRole: function 切换角色
*/
-const Header = ({ roleActive, headerMenu, headerMenuActive, headerUserChange, handleClickMenu, handleChangeRole }) => {
- let navigate = useNavigate();
+const Header = ({ roleActive, headerMenu, headerMenuActive, headerUserChange, handleClickMenu, handleChangeRole,userData }) => {
- const [data, setData] = useState([]);
+ let navigate = useNavigate();
// 修改密码窗口显示隐藏
const [visible, setVisible] = useState(false);
@@ -73,7 +72,7 @@
const userMenu = (
<Menu>
- {data?.ctUseroleList?.length > 1 && (
+ {userData?.ctUseroleList?.length > 1 && (
<>
<Menu.Item key="changeRole" onClick={() => setRoleModal({ visible: true, value: roleActive.id })}>
<UserSwitchOutlined style={{ marginRight: '8px' }} />
@@ -110,9 +109,6 @@
}
}
- useEffect(() => {
- setData($$.getLocal('customerSystemUser') || {});
- }, [headerUserChange]);
return (
<header className="header">
@@ -155,9 +151,9 @@
<div className="header-user-avatar">
<Avatar icon={<UserOutlined />} />
<div>
- <div className="header-user-name">{data?.trueName || '-'}</div>
+ <div className="header-user-name">{userData?.trueName || '-'}</div>
<div className="header-user-unit">
- <span>{data?.unit || '-'}</span>
+ <span>{userData?.unit || '-'}</span>
<span className="public-rightBorder">{roleActive.roleName || '-'}</span>
<DownCircleFilled style={{ fontSize: '10px', marginLeft: '8px', color: '#ffffff' }} />
</div>
@@ -173,7 +169,7 @@
value={roleModal.value}
onChange={(e) => setRoleModal({ visible: true, value: e.target.value, name: e.target.label, roleCode: e.target.roleCode })}
>
- {data?.ctUseroleList?.map((x) => (
+ {userData?.ctUseroleList?.map((x) => (
<Radio key={x.roleId} value={x.roleId} label={x.roleName} roleCode={x.roleCode}>
{x.roleName}
</Radio>
diff --git a/gz-customerSystem/src/components/Layout/index.jsx b/gz-customerSystem/src/components/Layout/index.jsx
index 36eca5f..1b04597 100644
--- a/gz-customerSystem/src/components/Layout/index.jsx
+++ b/gz-customerSystem/src/components/Layout/index.jsx
@@ -7,8 +7,8 @@
* @Version: 1.0.0
* @Description: 外层layout
*/
-import React, { useState, useRef, useEffect } from 'react';
-import { useLocation, Outlet, useNavigate } from 'react-router-dom';
+import React, { useState, useRef, useEffect } from 'react';
+import { useLocation, Outlet, useNavigate,useSearchParams } from 'react-router-dom';
import './index.less';
import Header from './Header';
import Navigation from './Navigation';
@@ -54,6 +54,9 @@
//网格跳转请求状态
const [gridStatus, setGridStatus] = useState(false)
+ const [searchParams] = useSearchParams();
+ const [userData, setUserData] = useState({});
+
// 切换头部menu
function handleClickHeaderMenu(values) {
@@ -120,6 +123,8 @@
$$.clearSessionStorage();
$$.setSessionStorage('customerSystemToken', res.data?.token);
$$.setLocal('customerSystemUser', res.data || {});
+ console.log('getGridToken', res.data);
+ setUserData(res.data || {})
let ctUseroleList = res.data?.ctUseroleList || [];
console.log(ctUseroleList);
const roleId = ctUseroleList[0]?.roleId
@@ -134,11 +139,15 @@
}
}
}
+
// 初始化 格式化数据适应菜单栏
useEffect(() => {
//单点登录,网格传一个token在session,如果有就请求接口
- const gridToken = $$.getSessionStorage('gridToken');
+ // const gridToken = $$.getSessionStorage('gridToken');
+
+ const gridToken = searchParams.get('gridToken'); // 获取名为 'gridToken' 的参数
+ console.log(gridToken,'gridToken')
if (gridToken) {
getGridToken(gridToken)
} else {
@@ -149,6 +158,7 @@
return;
}
let customerSystemUser = $$.getLocal('customerSystemUser');
+ setUserData(customerSystemUser || {})
let ctUseroleList = customerSystemUser?.ctUseroleList || [];
if (ctUseroleList[0]?.roleId) {
setRoleActive({ id: ctUseroleList[0]?.roleId, roleName: ctUseroleList[0]?.roleName, powerMap: {} });
@@ -207,6 +217,10 @@
getRolePower(roleActive.id, roleActive.roleName);
}
}, [roleActive.id]);
+ useEffect(() => {
+ let customerSystemUser = $$.getLocal('customerSystemUser');
+ setUserData(customerSystemUser || {});
+ }, [headerUserChange]);
console.log(gridStatus);
return (
<>
@@ -217,6 +231,7 @@
handleClickMenu={handleClickHeaderMenu}
headerUserChange={headerUserChange}
handleChangeRole={handleChangeRole}
+ userData={userData}
/>
{gridStatus && isNotNav ? (
<main className="layout-main" id="layoutMain">
diff --git a/gz-customerSystem/src/components/ProgressStep/VisitStep.jsx b/gz-customerSystem/src/components/ProgressStep/VisitStep.jsx
index 0dfa948..be73cf0 100644
--- a/gz-customerSystem/src/components/ProgressStep/VisitStep.jsx
+++ b/gz-customerSystem/src/components/ProgressStep/VisitStep.jsx
@@ -22,6 +22,8 @@
*/
const ProgressStep = ({ progressData, hasTab }) => {
const [proType, setProType] = useState('handleCaseFlowList')
+ const [assistType, setAssistType] = useState(progressData.assistCaseFlowList && progressData.assistCaseFlowList[0]?.unitId || '')
+ const [progressList, setProgressList] = useState([]);
const iconMap = {
1: ledger_7,//完成
2: ledger_12,//回退
@@ -40,38 +42,87 @@
useEffect(() => {
setProType('handleCaseFlowList')
+ setProgressList(progressData.handleCaseFlowList)
}, [progressData])
+
+ //详细结果的处理
+ const typeDom = (data) => {
+ //审核结果同意
+ if (data.auditResult && data.auditResult == '24_00004-1') {
+ return <span>审核结果:<span style={{ color: '#00B42A' }}>{data.auditResultName}</span></span>
+ }
+ //审核结果不同意
+ if (data.auditResult && data.auditResult == '24_00004-2') {
+ return <span>审核结果:<span style={{ color: '#FF4D4F' }}>{data.auditResultName}</span></span>
+ }
+ //化解结果成功
+ if (data.mediResult && data.mediResult == '22_00025-1') {
+ return <span>审核结果:<span style={{ color: '#00B42A' }}>{data.mediResultName}</span></span>
+ }
+ //化解结果不成功
+ if (data.mediResult && data.mediResult == '22_00025-2') {
+ return <span>审核结果:<span style={{ color: '#FF4D4F' }}>{data.mediResultName}</span></span>
+ }
+ return <span>{data.handleNotes || '-'}</span>
+ }
return (
<Fragment>
{hasTab &&
- <div className='tabBtn'>
- {btnList.map((item, index) => {
- return <div
- className={`tabBtn-btn ${proType === item.value ? 'tabBtn-active' : ''}`}
- key={item.value}
- onClick={() => { setProType(item.value) }}
- style={{ marginRight: (index + 1) !== btnList.length ? '20px' : '0' }}
- >{item.label}</div>
- })}
-
- </div>
+ <>
+ <div className='tabBtn'>
+ {btnList.map((item, index) => {
+ return <div
+ className={`tabBtn-btn ${proType === item.value ? 'tabBtn-active' : ''}`}
+ key={item.value}
+ onClick={() => {
+ setProType(item.value)
+ if(item.value == 'handleCaseFlowList') {
+ setProgressList(progressData.handleCaseFlowList)
+ } else {
+ const findData = progressData.assistCaseFlowList?.find(res => res.unitId == assistType) || {}
+ setProgressList(findData.caseFlowList || [])
+ }
+ }}
+ style={{ marginRight: (index + 1) !== btnList.length ? '20px' : '0' }}
+ >{item.label}</div>
+ })}
+ </div>
+ {
+ proType == 'assistCaseFlowList' && <div className='tabBtn'>
+ {progressData.assistCaseFlowList?.map(item => {
+ return <div
+ key={item.unitId}
+ className={`tabBtn-unit ${assistType === item.unitId ? 'tabBtn-unitActive' : ''}`}
+ onClick={() => {
+ setAssistType(item.unitId)
+ setProgressList(item.caseFlowList)
+ }}
+ >
+ {item.unitName}
+ </div>
+ })}
+ </div>
+ }
+ </>
}
- {progressData[proType] && progressData[proType].length !== 0
- ? progressData[proType].map((x, t) => {
+ {progressList && progressList.length !== 0
+ ? progressList.map((x, t) => {
return (
<div key={t + 1}>
<div className="myStep-item">
- {t === progressData[proType].length - 1 ? null : <div className={`${!x.handleContent ? 'myStep-item-divider' : x.fileInfoList?.length > 0 ? 'myStep-item-divider2' : "myStep-item-divider1"} ${x.status === '2' && 'myStep-item-divider-success'}`} />}
- <div className={`myStep-item-icon1 myStep-item-${x.status === 1 ? 'noStarted1' : 'success1'}`}>
- <div className="myStep-item-title">{x.nodeShowName || '事件流转'}</div>
- <img className='myStep-item-img' src={x.status === 1 ? ledger_8 : iconMap[x.taskType]} alt="" />
+ <div>
+ <div className={`myStep-item-icon1 myStep-item-${x.status === 1 ? 'noStarted1' : 'success1'}`}>
+ <div className="myStep-item-title">{x.nodeShowName || '事件流转'}</div>
+ <img className='myStep-item-img' src={x.status === 1 ? ledger_8 : iconMap[x.taskType]} alt="" />
+ </div>
+ {t === progressList.length - 1 ? null : <div className='myStep-item-divider' />}
</div>
<div className="myStep-item-right">
- {t === progressData[proType].length - 1 ?
+ {x.status === 1 ?
<div>
<div className="myStep-item-p" style={{ color: 'rgba(0,0,0,0.50)' }}>
- {x.processName}
+ {x.processName || '-'}
</div>
<div className="myStep-item-p">
<span>{x.handleUnitName || '-'}</span>
@@ -96,7 +147,11 @@
x.handleNotes &&
<div className='myStep-item-p-yy' style={{ width: '200px' }}>
<span className='myStep-item-p-yy-l'>
- <span><Tooltip placement="top" title={x.handleNotes || ''}><span>{x.handleNotes || '-'}</span></Tooltip></span>
+ <span>
+ <Tooltip placement="top" title={x.handleNotes || ''}>
+ {typeDom(x)}
+ </Tooltip>
+ </span>
</span>
</div>
}
diff --git a/gz-customerSystem/src/components/ProgressStep/index.less b/gz-customerSystem/src/components/ProgressStep/index.less
index e574fab..93245ce 100644
--- a/gz-customerSystem/src/components/ProgressStep/index.less
+++ b/gz-customerSystem/src/components/ProgressStep/index.less
@@ -3,7 +3,7 @@
.myStep {
&-item {
position: relative;
- padding-bottom: 32px;
+ padding-bottom: 34px;
&-success {
background-color: @main-color;
@@ -74,16 +74,15 @@
&-divider {
position: absolute;
- top: 0;
+ top: 56px;//52+4
left: 24px;
- width: 3px;
- height: 32px+52px;
- padding-top: 22px;
+ width: 2px;
+ bottom: 4px;
&::after {
content: '';
display: inline-block;
- height: 32px+52px;
+ height: 100%;
border-left: 2px solid;
border-color: @divider-color;
}
@@ -213,7 +212,7 @@
border: 1px solid #e5e6eb;
border-radius: 4px;
color: #e5e6eb;
- padding: 4px 8px;
+ padding: 3px 8px 4px 8px;
cursor: pointer;
}
@@ -221,4 +220,17 @@
color: #1a6fb8;
border-color: #1a6fb8;
}
+
+ &-unit {
+ height: 32px;
+ border-radius: 21px;
+ color: #1D2129;
+ padding: 3px 12px 4px 12px;
+ cursor: pointer;
+ }
+
+ &-unitActive {
+ background: #f3f2f7;
+ color: #1a6fb8;
+ }
}
\ No newline at end of file
diff --git a/gz-customerSystem/src/components/personCard/DetailDialog.jsx b/gz-customerSystem/src/components/personCard/DetailDialog.jsx
index 9038fef..2a94e1c 100644
--- a/gz-customerSystem/src/components/personCard/DetailDialog.jsx
+++ b/gz-customerSystem/src/components/personCard/DetailDialog.jsx
@@ -357,6 +357,11 @@
...res,
value: filterValue
}
+ } else if (res.field === 'extreme') {
+ return {
+ ...res,
+ value: data[res.field] === 0 ? '否' : '是'
+ }
} else {
return {
...res,
diff --git a/gz-customerSystem/src/router/router.js b/gz-customerSystem/src/router/router.js
index a482be0..0195b1a 100644
--- a/gz-customerSystem/src/router/router.js
+++ b/gz-customerSystem/src/router/router.js
@@ -147,6 +147,8 @@
import ClosingReview from '../views/register/closingReview';
//工作台
import VisitWorkBench from '../views/register';
+//自行排查
+import SelfInspection from '../views/register/visit/SelfInspection';
import Test from '../views/test';
@@ -225,6 +227,7 @@
<Route path="visit/fileMessage" element={<FileMessage />} />
<Route path="visit/closingReview" element={<ClosingReview />} />
<Route path="visit/visitWorkBench" element={<VisitWorkBench />} />
+ <Route path="selfInspection/:id?" element={<SelfInspection />} />
{/* 工作流模块 */}
<Route path="workflowTemplate" element={<WorkflowTemplate />} />
diff --git a/gz-customerSystem/src/views/comprehensive/index.jsx b/gz-customerSystem/src/views/comprehensive/index.jsx
index f1bd214..dd193a3 100644
--- a/gz-customerSystem/src/views/comprehensive/index.jsx
+++ b/gz-customerSystem/src/views/comprehensive/index.jsx
@@ -46,7 +46,7 @@
{ title: '事项来源', width: 100, dataIndex: 'canalName' },
{ title: '事项等级', width: 100, dataIndex: 'caseLevel' },
{ title: '纠纷类型', width: 150, dataIndex: 'caseTypeName' },
- { title: '承办部门', width: 150, dataIndex: 'mediateDeptName' },
+ { title: '承办部门', width: 150, dataIndex: 'mediateUnitName' },
{ title: '配合部门', width: 150, dataIndex: 'assistUnitName' },
// 22_00025-1 成功 22_00025-2 化解不成功
{ title: '化解结果', width: 100, dataIndex: 'mediResult', render: (text) => <div className={text === '22_00025-1' ? 'comprehensive-green' : text === '22_00025-2' ? 'comprehensive-red' : '-'} >{text === '22_00025-1' ? '化解成功' : text === '22_00025-2' ? '化解不成功' : '-'}</div> },
diff --git a/gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx b/gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx
index b76c6a2..1bb57d2 100644
--- a/gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx
+++ b/gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx
@@ -58,21 +58,19 @@
}
const handleSubmit = () => {
- formRef.current.validate(undefined, (errors, values) => {
- if (formRef.current) {
- formRef.current.validate(undefined, (errors, values) => {
- if (!errors) {
- handleEscala({
- id,
- caseId: props.caseId,
- caseTaskId: props.caseTaskId,
- returnContent: values.returnContent,
- ...unitData
- })
- }
- })
- }
- })
+ if (formRef.current) {
+ formRef.current.validate(undefined, (errors, values) => {
+ if (!errors) {
+ handleEscala({
+ id,
+ caseId: props.caseId,
+ caseTaskId: props.caseTaskId,
+ appearContent: values.appearContent,
+ ...unitData
+ })
+ }
+ })
+ }
}
const handleTemplate = (type) => {
@@ -130,7 +128,7 @@
</div>
<FormItem
label={(<div style={{ display: 'flex' }}>上报意见<div className="must">必填</div></div>)}
- field='returnContent'
+ field='appearContent'
rules={[{ required: true, message: '请选择回退理由' }]}
>
<TextArea
diff --git a/gz-customerSystem/src/views/register/eventFlow/component/EventFlow.jsx b/gz-customerSystem/src/views/register/eventFlow/component/EventFlow.jsx
index 47faac2..c87f76f 100644
--- a/gz-customerSystem/src/views/register/eventFlow/component/EventFlow.jsx
+++ b/gz-customerSystem/src/views/register/eventFlow/component/EventFlow.jsx
@@ -38,7 +38,7 @@
})
if (res.type) {
$$.infoSuccess({ content: '受理成功!' });
- navigate(`/mediate/visit/handleFeedback?caseTaskId=${props.caseTaskId}&caseId=${props.caseId}`)
+ navigate(`/mediate/visit/handleFeedback?caseTaskId=${res.data}&caseId=${props.caseId}`)
}
},
});
diff --git a/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx b/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx
index 32121ac..d409482 100644
--- a/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx
+++ b/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx
@@ -7,6 +7,7 @@
import * as $$ from '@/utils/utility';
import { Scrollbars } from "react-custom-scrollbars";
import { getOffset, getSize } from '@/utils/utility';
+import { useNavigate } from 'react-router-dom';
const FormItem = Form.Item;
const appUrl = $$.appUrl;
@@ -26,6 +27,7 @@
}
const AuditView = (props) => {
+ const navigate = useNavigate();
const formRef = useRef();
const scrollRef = useRef(null);
const [id, setId] = useState();
@@ -89,6 +91,7 @@
const res = await submit(data)
if (res.type) {
$$.infoSuccess({ content: '提交成功!' });
+ navigate('/mediate/visit/visitWorkBench')
}
}
diff --git a/gz-customerSystem/src/views/register/handleFeedback/component/CaseResult.jsx b/gz-customerSystem/src/views/register/handleFeedback/component/CaseResult.jsx
index a2a9fd8..66eba3e 100644
--- a/gz-customerSystem/src/views/register/handleFeedback/component/CaseResult.jsx
+++ b/gz-customerSystem/src/views/register/handleFeedback/component/CaseResult.jsx
@@ -40,22 +40,14 @@
const failRef = useRef();
const [selectedTab, setSelectedTab] = useState('1'); // 默认选中第一个 tab
const [scanFile, setScanFile] = useState(false);
- const [selectedTab1, setSelectedTab1] = useState('1'); // 默认选中第一个 tab
- const [fileTip, setFileTip] = useState('0');
- const [value, setValue] = useState(1)
+ const [value, setValue] = useState(2)
const [noHandleReason, setNoHandleReason] = useState(false);
- const [radioValue, setRadioValue] = useState(1);
const [mode, setMode] = useState(false)
const tabs = [
{ index: '1', label: '化解成功' },
{ index: '2', label: '化解不成功' },
];
-
- const tabs1 = [
- { index: '1', label: '公共模板1:化解成功结案意见范本' },
- { index: '2', label: '个人模板1:化解成功结案意见范本(完整版)' }
- ]
const agreement = [
{ value: 1, label: '口头协议' },
@@ -65,10 +57,6 @@
const handleTabChange = (newTabIndex) => {
setSelectedTab(newTabIndex);
- };
-
- const handleTabChange1 = (newTabIndex) => {
- setSelectedTab1(newTabIndex);
};
const handleConfirm = (scanContent) => {
@@ -116,53 +104,57 @@
}
}
+ //化解成功的提交处理
const handleSubmit = () => {
+ //口头协议
if (value === 1) {
- const data = formRef?.current.getFields()
- console.log(data, 'handleSubmit')
- windupApply(data)
+ formRef?.current.validate(undefined, (errors, values) => {
+ if (!errors) {
+ const data = formRef?.current.getFields()
+ windupApply({
+ agreeType: '24_00003-1',
+ agreeTypeName: '口头协议',
+ ...data
+ })
+ }
+ })
}
+ //书面协议
if (value === 2) {
- const data = formRefWrite?.current.getFields()
- console.log(data, 'handleSubmit')
- windupApply(data)
+ formRefWrite?.current.validate(undefined, (errors, values) => {
+ if (!errors) {
+ const { file, ...rest } = formRefWrite?.current.getFields()
+ windupApply({
+ agreeType: '24_00003-2',
+ agreeTypeName: '书面协议',
+ ...rest
+ })
+ }
+ })
}
- if (selectedTab === '2') {
- const data = failRef?.current.getFields()
- console.log(data, 'handleSubmit')
- // windupApply(data)
-
-
- }
-
}
+
+ //化解不成功的提交处理
const handleSubmit1 = () => {
- if (selectedTab === '2') {
- const data = failRef?.current.getFields()
- console.log(data, 'handleSubmit')
- windupApply(data)
- }
+ failRef?.current.validate(undefined, (errors, values) => {
+ if (!errors) {
+ const { failReason1, failReason2, failReason3, ...rest } = failRef?.current.getFields()
+ const failReason = `1、${failReason1};2、${failReason2};3、${failReason3}。`
+ windupApply({
+ failReason: failReason,
+ ...rest
+ })
+ }
+ })
}
+ //结案申请请求
const windupApply = async (submitData) => {
- console.log(
- {
- mediResultName: selectedTab === '1' ? '化解成功' : '化解不成功',
- mediResult: selectedTab === '1' ? '22_00025-1' : '22_00025-2',
- agreeType: selectedTab === '1' ? '24_00003-1' : '24_00003-2',
- agreeTypeName: value === 1 ? '口头协议' : '书面协议',
- caseTaskId: caseTaskId,
- caseId: caseId,
- caseResultId: caseResultId,
- ...submitData
- }, 'windupApplyData'
- )
+ console.log(submitData);
const res = await windupApplyApi({
mediResultName: selectedTab === '1' ? '化解成功' : '化解不成功',
mediResult: selectedTab === '1' ? '22_00025-1' : '22_00025-2',
- agreeType: selectedTab === '1' ? '24_00003-1' : '24_00003-2',
- agreeTypeName: value === 1 ? '口头协议' : '书面协议',
caseTaskId: caseTaskId,
caseId: caseId,
caseResultId: caseResultId,
@@ -213,7 +205,7 @@
scrollToFirstError={true}
requiredSymbol={false}
initialValues={{
- agreeType: 2,
+ agreeType: value,
}} //默认值
>
<Col span={8}>
@@ -224,7 +216,7 @@
}
field='agreeType'
>
- <Select options={agreement} onChange={(v) => { setValue(v); console.log(typeof v, 'vvv') }}>
+ <Select options={agreement} onChange={(v) => { setValue(v); }}>
</Select>
</FormItem>
</Col>
@@ -247,7 +239,7 @@
<div className="must">必填</div>
</div>
<div className='caseResult-tips'>
- <img src={tip} alt='' style={{ width: '16px', marginRight: '8px',marginTop: '-5px' }} />
+ <img src={tip} alt='' style={{ width: '16px', marginRight: '8px', marginTop: '-5px' }} />
<span>协议要点应尽量简洁,当事人大厅来访或小程序线上反映问题时,可在小程序中查看到填写的协议要点内容</span>
</div>
<div style={{ position: 'absolute', display: 'flex ', top: '79px', zIndex: 1 }}>
@@ -262,6 +254,7 @@
</>
)}
field='agreeContent'
+ rules={[{ message: '请填写协议要点', required: true }]}
>
<TextArea
autoSize={{ minRows: 4, maxRows: 8 }}
@@ -289,6 +282,7 @@
<FormItem
label={(<div style={{ display: 'flex' }}>结案意见<div className="must">必填</div></div>)}
field='windupContent'
+ rules={[{ message: '请填写结案意见', required: true }]}
>
<TextArea
autoSize={{ minRows: 4, maxRows: 8 }}
@@ -312,7 +306,14 @@
>
<Row>
<Col span={24}>
- <FormItem
+ <ArcoUpload
+ params={{
+ action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${caseId}&ownerId=${caseResultId}&ownerType=22_00018-302`,
+ }}
+ formItemParams={{
+ rules: [{ message: '请上传协议文书', required: true }]
+ }}
+ field='file'
label={
<>
<div style={{ display: 'flex' }}>
@@ -325,19 +326,8 @@
</div>
</>
}
- field='caseDes'
- rules={[{ message: '请填写事项概况', required: true }]}
- >
- <ArcoUpload
- params={{
- action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${caseId}&ownerId=${caseResultId}&ownerType=22_00018-302`,
- }}
- field='file'
- label=''
- // editData={props.editData}
- ownerType='22_00018-302'
- />
- </FormItem>
+ ownerType='22_00018-302'
+ />
</Col>
<Col span={24} style={{ position: 'relative' }}>
<div style={{ position: 'absolute', display: 'flex', top: '28px', zIndex: 1 }}>
@@ -359,6 +349,7 @@
<FormItem
label={(<div style={{ display: 'flex' }}>结案意见<div className="must">必填</div></div>)}
field='windupContent'
+ rules={[{ message: '请填写结案意见', required: true }]}
>
<TextArea
autoSize={{ minRows: 4, maxRows: 8 }}
@@ -370,7 +361,6 @@
</Row>
</Form>
</>
-
}
<Space style={{ marginBottom: '16px' }}>
<Button type='primary' onClick={handleSubmit}>提交</Button>
@@ -409,6 +399,7 @@
<FormItem
label=''
field='failReason1'
+ rules={[{ message: '请填写调解过程中提供的解决方案', required: true }]}
>
<Input.TextArea
showWordLimit
@@ -425,6 +416,7 @@
<FormItem
label=''
field='failReason2'
+ rules={[{ message: '请填写调解过程中的主要分歧点', required: true }]}
>
<Input.TextArea
showWordLimit
@@ -441,6 +433,7 @@
<FormItem
label=''
field='failReason3'
+ rules={[{ message: '请填写最终难以调和的原因', required: true }]}
>
<Input.TextArea
showWordLimit
@@ -460,6 +453,7 @@
<FormItem
label={(<div style={{ display: 'flex' }}>结案意见<div className="must">必填</div></div>)}
field='windupContent'
+ rules={[{ message: '请填写结案意见', required: true }]}
>
<TextArea
autoSize={{ minRows: 4, maxRows: 8 }}
@@ -470,7 +464,7 @@
</Col>
<Space style={{ marginBottom: '16px' }}>
<Button type='primary' onClick={handleSubmit1}>提交</Button>
- <Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }}>保存</Button>
+ {/* <Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }}>保存</Button> */}
</Space>
</Form>
}
diff --git a/gz-customerSystem/src/views/register/index.jsx b/gz-customerSystem/src/views/register/index.jsx
index 8f5a353..31fb16e 100644
--- a/gz-customerSystem/src/views/register/index.jsx
+++ b/gz-customerSystem/src/views/register/index.jsx
@@ -1188,6 +1188,10 @@
//改变tab
const handleColumnType = (type) => {
+ setPageData({
+ page: 1,
+ size: 10,
+ })
setSearchData({
...searchData,
status: type
@@ -1196,6 +1200,10 @@
//改变工作总览
const tabActive = (key, data) => {
+ setPageData({
+ page: 1,
+ size: 10,
+ })
//默认第一个tab
if (key == '5') {
setSearchData({
@@ -1402,7 +1410,7 @@
setPageData({
...pageData,
page,
- pageSize
+ size: pageSize
})
},
}}
@@ -1464,7 +1472,7 @@
<div className='VisitWorkBench-bottom-title' style={{ color: '#206BCD' }}>大厅来访</div>
{/* <img src={visitInto} alt='' className='VisitWorkBench-bottom-img' /> */}
</div>
- <div className='bottomTab2'>
+ <div className='bottomTab2' onClick={() => navigate(`/mediate/selfInspection`)}>
<div className='VisitWorkBench-bottom-title' style={{ color: '#D46B08' }}>自行排查</div>
{/* <img src={checkInto} alt='' className='VisitWorkBench-bottom-img' /> */}
</div>
diff --git a/gz-customerSystem/src/views/register/index.less b/gz-customerSystem/src/views/register/index.less
index 35027f2..d016546 100644
--- a/gz-customerSystem/src/views/register/index.less
+++ b/gz-customerSystem/src/views/register/index.less
@@ -523,12 +523,13 @@
}
.reviewLine {
- height: calc(100% - 19px);
- width: 14px;
- display: flex;
- align-items: center;
- justify-content: center;
- position: relative;
+ height: calc(100% - 23px);
+ width: 14px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ margin-top: 4px;
&::before {
content: '';
@@ -934,7 +935,7 @@
padding: 12px 16px 16px 16px;
flex: 1;
justify-content: center;
-
+ cursor: pointer;
}
.timeTip {
diff --git a/gz-customerSystem/src/views/register/matterDetail/RateModule.jsx b/gz-customerSystem/src/views/register/matterDetail/RateModule.jsx
index 5233d61..e0639e9 100644
--- a/gz-customerSystem/src/views/register/matterDetail/RateModule.jsx
+++ b/gz-customerSystem/src/views/register/matterDetail/RateModule.jsx
@@ -1,7 +1,7 @@
import React, { Fragment } from 'react'
import { Row, Col, Space } from 'antd';
import { Rate } from '@arco-design/web-react';
-
+import * as $$ from '../../../utils/utility';
export default function RateModule(props) {
return (
<Fragment>
@@ -21,7 +21,7 @@
<div className="title">
<div className="title-text">评价时间</div>
</div>
- <div>{props.grade?.createTime || '-'}</div>
+ <div>{$$.minuteFormat(props.grade?.createTime) || '-'}</div>
</Col>
<Col span={8}>
<div className="title">
diff --git a/gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx b/gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx
index 3bac15e..2dac1a5 100644
--- a/gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx
+++ b/gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx
@@ -139,13 +139,13 @@
visible={isModalVisible}
checkKeys={wantUser}
onOk={(value) => {
- console.log(value);
setWantUser(value.items)
setSelectOptions(value.items.map(item => ({
label: item.name,
value: item.value
})))
formRef.current.setFieldValue('unit', value.items.map(item => item.value))
+ setIsModalVisible(false)
}}
onClose={() => setIsModalVisible(false)}
type='dept'
diff --git a/gz-customerSystem/src/views/register/matterDetail/index.jsx b/gz-customerSystem/src/views/register/matterDetail/index.jsx
index 84efe13..08c5efb 100644
--- a/gz-customerSystem/src/views/register/matterDetail/index.jsx
+++ b/gz-customerSystem/src/views/register/matterDetail/index.jsx
@@ -29,7 +29,7 @@
const partyList = data.personList.concat(data.agentList)
setInfoData({
...data,
- questionName: data.queProvName === null ? '-' : data.queCityName + '/' + data.queAreaName + '/' + data.queRoadName,
+ questionName: data.queAreaName === null ? '-' : data.queAreaName + '/' + data.queRoadName,
caseType: data.caseTypeFirstName === null ? '-' : data.caseTypeFirstName + '/' + data.caseTypeName
})
setFakeData(partyList.map(item => {
diff --git a/gz-customerSystem/src/views/register/visit/SelfInspection.jsx b/gz-customerSystem/src/views/register/visit/SelfInspection.jsx
new file mode 100644
index 0000000..5d3bf4e
--- /dev/null
+++ b/gz-customerSystem/src/views/register/visit/SelfInspection.jsx
@@ -0,0 +1,264 @@
+import React, { useState, useRef, Fragment, useEffect } from "react";
+import { useParams, useNavigate } from 'react-router-dom';
+import NewPage from '@/components/NewPage';
+import * as $$ from '@/utils/utility';
+import "@arco-themes/react-gzzz/css/arco.css";
+import '../index.less';
+import { Space } from 'antd';
+import { Button, Steps, Message } from '@arco-design/web-react';
+import VisitorRegister from './component/SelfVisitorRegister';
+import Preview from './preview';
+
+const Step = Steps.Step;
+
+function saveDispute(data) {
+ return $$.ax.request({ url: `casedraftInfo/caseDraftRegister`, type: 'post', service: 'mediate', data });
+}
+
+function getId() {
+ return $$.ax.request({ url: `caseUtils/getNewTimeCaseId`, type: 'get', service: 'utils' });
+}
+
+function submitDispute(data) {
+ return $$.ax.request({ url: `caseInfo/caseRegister`, type: 'post', service: 'mediate', data });
+}
+
+function getDetailData(id) {
+ return $$.ax.request({ url: `casedraftInfo/getCasedraftInfo?id=${id}`, type: 'get', service: 'mediate' });
+}
+
+
+const Organization = (props) => {
+ const formRef = useRef();
+ const routeData = useParams();
+ const navigate = useNavigate();
+ const [isReview, setIsReview] = useState(false);//预览页面控制
+ const [current, setCurrent] = useState(1);
+ const [id, setId] = useState();
+ const [editData, setEditData] = useState({});//回显数据
+
+ useEffect(() => {
+ if (routeData.id) {
+ getDeatil(routeData.id)
+ setId(routeData.id)
+ } else {
+ getAppId()
+ }
+
+ }, [])
+
+ //编辑
+ const getDeatil = async (id) => {
+ const res = await getDetailData(id)
+ if (res.type) {
+ 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 => {
+ if (item.ownerType == '22_00018-202' || item.ownerType == '22_00018-203') {
+ 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 => {
+ file1.push({
+ ...res,
+ uid: res.id,
+ })
+ })
+ }
+ })
+ }
+ return {
+ ...item,
+ file,
+ file1
+ }
+ }) || []
+ const obj = {
+ ...rest,
+ fakeData: newParList,
+ myCaseType: [rest.caseTypeFirst, rest.caseType],
+ myQuesAddress: rest.queRoad ? [rest.queProv, rest.queCity, rest.queArea, rest.queRoad] : undefined
+ }
+ formRef.current.setFieldsValue(obj)
+ setEditData(obj)
+ }
+ }
+
+ //获取id
+ const getAppId = async () => {
+ const res = await getId()
+ if (res.type) {
+ setId(res.data)
+ }
+ }
+
+ //提交信息,需要校验规则
+ const handleSubmit = async () => {
+ if (formRef.current) {
+ formRef.current.validate(undefined, (errors, values) => {
+ if (!errors) {
+ const { myCaseType, myQuesAddress, ...rest } = formRef.current.getFields()
+ const params = handleData(rest)
+ $$.modalInfo({
+ title: '提醒',
+ content: '确定提交吗?',
+ cancelText: '我再想想',
+ onOk: () => {
+ reauestSubmit({
+ ...params,
+ isSelfAccept: 0,
+ isDraft: 0,
+ operateType: 0,
+ })
+ },
+ });
+ }
+ });
+ }
+ }
+
+ //保存草稿信息,不需要校验规则
+ const handleSave = () => {
+ if (formRef.current) {
+ const { myCaseType, myQuesAddress, ...rest } = formRef.current.getFields()
+ const params = handleData(rest)
+ requestSave(params)
+ }
+ }
+
+ //数据处理
+ const handleData = (data) => {
+ const { fakeData, ...newObj } = data
+ if (data.id) {
+ return {
+ ...newObj,
+ personList: fakeData?.filter(item => item.perType === "15_020008-1" || item.perType === "15_020008-2"),
+ agentList: fakeData?.filter(item => item.perType === "24_00006-1" || item.perType === "24_00006-2").map(item => {
+ return {
+ ...item,
+ personId: item.personId.join(',')
+ }
+ }),
+ }
+ } else {
+ return {
+ ...newObj,
+ personList: fakeData?.filter(item => item.perType === "15_020008-1" || item.perType === "15_020008-2"),
+ agentList: fakeData?.filter(item => item.perType === "24_00006-1" || item.perType === "24_00006-2").map(item => {
+ return {
+ ...item,
+ personId: item.personId.join(',')
+ }
+ }),
+ id: id
+ }
+ }
+ }
+
+ //预览信息
+ const handleReview = () => {
+ setIsReview(!isReview)
+ }
+
+ function selfAcceptance() {
+ if (formRef.current) {
+ formRef.current.validate(undefined, (errors, values) => {
+ if (!errors) {
+ const { myCaseType, myQuesAddress, ...rest } = formRef.current.getFields()
+ const params = handleData(rest)
+ $$.modalInfo({
+ title: '自行受理确认',
+ content: '确定自行受理吗?',
+ okText: '确定受理',
+ cancelText: '我再想想',
+ onOk: async () => {
+ reauestSubmit({
+ ...params,
+ isSelfAccept: 1,
+ isDraft: 0,
+ operateType: 0,
+ }, true)
+ },
+ });
+ }
+ });
+ }
+ }
+
+ //保存请求
+ const requestSave = async (data) => {
+ const response = await saveDispute(data)
+ if (response.type) {
+ Message.success('保存草稿成功!')
+ }
+ }
+
+ //提交请求
+ const reauestSubmit = async (data, isSelfAccept) => {
+ const response = await submitDispute(data)
+ if (response.type) {
+ if(isSelfAccept) {
+ //自行受理
+ navigate(`/mediate/visit/handleFeedback?caseTaskId=${response.data}&caseId=${id}`)
+ } else {
+ Message.success('提交成功!')
+ navigate(`/mediate/visit/visitWorkBench`, { replace: true })
+ setCurrent(2)
+ }
+ }
+ }
+
+ return (
+ <div style={{ position: 'relative' }}>
+ <NewPage
+ pageHead={
+ { breadcrumbData: [{ title: '工作台' }, { title: '来访登记' }], title: '自行排查' }
+ }
+ >
+ <Fragment>
+ <div style={{ backgroundColor: '#fff', margin: '12px 16px 0px 16px', paddingTop: '16px', paddingLeft: '91px' }}>
+ <Steps type='navigation' current={current}>
+ <Step title='排查登记' disabled />
+ <Step title='事件流转' disabled />
+ <Step title='办理反馈' disabled />
+ <Step title='结案审核' disabled />
+ <Step title='当事人评价' disabled />
+ <Step title='结案归档' disabled />
+ </Steps>
+ </div>
+ <div style={{ backgroundColor: '#ffff', margin: '8px 8px 0px 16px', padding: '12px 18px 82px 16px', height: 'calc(100vh - 231px)', overflowY: 'scroll', display: isReview ? '' : 'none' }}>
+ <Preview style={{ display: isReview ? '' : 'none' }} data={formRef?.current?.getFields()} mainId={id} />
+ </div>
+ <VisitorRegister
+ formRef={formRef}
+ style={{ display: isReview ? 'none' : '' }}
+ mainId={id}
+ partyList={editData.fakeData}
+ fileInfoList={editData.fileInfoList}
+ />
+ <div className="dataSync-excel">
+ <Space size="middle" style={{ margin: '4px 14px' }}>
+ <Button type="primary" style={{ backgroundColor: '#1A6FB8' }} onClick={handleSave} >保存</Button>
+ <Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }} onClick={handleReview}>{isReview ? '修改' : '预览'}</Button>
+ <Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }} onClick={handleSubmit}>提交</Button>
+ <Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }} onClick={() => selfAcceptance()}>自行受理</Button>
+ <Button type='secondary' onClick={() => { navigate(-1) }}>返回上级页面</Button>
+ </Space>
+ </div>
+ </Fragment>
+ </NewPage>
+ </div>
+ )
+}
+
+export default Organization;
\ No newline at end of file
diff --git a/gz-customerSystem/src/views/register/visit/SelfPreview.jsx b/gz-customerSystem/src/views/register/visit/SelfPreview.jsx
new file mode 100644
index 0000000..ec84936
--- /dev/null
+++ b/gz-customerSystem/src/views/register/visit/SelfPreview.jsx
@@ -0,0 +1,240 @@
+import React, { useState, useEffect } from "react";
+import { Row, Col, Space } from 'antd';
+import * as $$ from '../../../utils/utility';
+import { ApplyDialog, AgentDialog, Respondent, Company } from './component/previewTable'
+import FileTable from "../matterDetail/FileTable";
+import { link } from '@/assets/images';
+import PreviewImage from '@/components/PreviewImage';
+
+const Preview = (props) => {
+ const [data, setData] = useState({});
+ const levelColorMap = {
+ 1: '#F53F3F',
+ 2: '#EF6C24',
+ 3: '#00B42A',
+ }
+
+ useEffect(() => {
+ console.log(props.data);
+ const applyData = props.data?.fakeData?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "自然人");
+ const agentData = props.data?.fakeData?.filter(item => item.perTypeName === "申请方代理人");
+ const company = props.data?.fakeData?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "非法人组织");
+ const respondentData = props.data?.fakeData?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "法人");
+
+ const applyData1 = props.data?.fakeData?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "自然人");
+ const agentData1 = props.data?.fakeData?.filter(item => item.perTypeName === "被申请方代理人");
+ const company1 = props.data?.fakeData?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "非法人组织");
+ const respondentData1 = props.data?.fakeData?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "法人");
+
+ setData({
+ applyData,
+ agentData,
+ company,
+ respondentData,
+ applyData1,
+ agentData1,
+ company1,
+ respondentData1
+ })
+ }, [props.data])
+
+ return (
+ <div style={{ ...props.style }}>
+ <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}>
+ <Space size='small'>
+ <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>当事人信息</h4>
+ </Space>
+ </Col>
+ <div style={{ marginBottom: '8px' }}>申请方</div>
+ <div className="line-container" style={{ marginBottom: '20px' }}>
+ <div className="line left-line"></div>
+ <div className="line middle-line"></div>
+ <div className="line right-line"></div>
+ </div>
+ {/* ApplyDialog 只有在 applyData 存在且不为空时才渲染 */}
+ {data.applyData && data.applyData.length > 0 ? (
+ <ApplyDialog applyDialog={data.applyData} />
+ ) : null}
+
+ {/* AgentDialog 只有在 agentData 存在且不为空时才渲染 */}
+ {data.agentData && data.agentData.length > 0 ? (
+ <AgentDialog agentDialog={data.agentData} />
+ ) : null}
+
+ {/* Respondent 只有在 respondentData 存在且不为空时才渲染 */}
+ {data.respondentData && data.respondentData.length > 0 ? (
+ <Respondent respondent={data.respondentData} />
+ ) : null}
+
+ {data.company && data.company.length > 0 ? (
+ <Company company={data.company} />
+ ) : null}
+
+ <div style={{ marginBottom: '8px' }}>被申请方</div>
+ <div className="line-container" style={{ marginBottom: '20px' }}>
+ <div className="line left-line"></div>
+ <div className="line middle-line"></div>
+ <div className="line right-line"></div>
+ </div>
+ {data.applyData1 && data.applyData1.length > 0 ? (
+ <ApplyDialog applyDialog={data.applyData1} />
+ ) : null}
+
+ {data.agentData1 && data.agentData1.length > 0 ? (
+ <AgentDialog agentDialog={data.agentData1} />
+ ) : null}
+
+ {data.respondentData1 && data.respondentData1.length > 0 ? (
+ <Respondent respondent={data.respondentData1} />
+ ) : null}
+
+ {data.company1 && data.company1.length > 0 ? (
+ <Company company={data.company1} />
+ ) : null}
+ <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}>
+ <Space size='small'>
+ <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>纠纷基本情况</h4>
+ </Space>
+ </Col>
+ <Row gutter={[16, 16]}>
+ {props.isDoc &&
+ <>
+ <Col span={8}>
+ <div><div className="title-text">事项状态</div></div>
+ <div style={{ color: '#1A6FB8' }}>{props.data?.statusName || '-'}</div>
+ </Col>
+ <Col span={16}>
+ <div><div className="title-text">事项编号</div></div>
+ <div>{props.data?.caseRef || '-'}</div>
+ </Col>
+ </>
+ }
+ <Col span={8}>
+ <div className="title">
+ <div className="title-text">事项等级</div>
+ </div>
+ <div style={{ display: 'flex' }}><div style={{ backgroundColor: levelColorMap[props.data?.caseLevel], marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{props.data?.caseLevel || '-'}</div></div>级</div>
+ </Col>
+ <Col span={8}>
+ <div><div className="title-text">来访时间</div></div>
+ <div>{props.data?.visitTime || '-'}</div>
+ </Col>
+ <Col span={8}>
+ <div ><div className="title-text">来访人数(人)</div></div>
+ <div>{props.data?.visitPeopleNum || '-'}</div>
+ </Col>
+ <Col span={8}>
+ <div ><div className="title-text">纠纷类型</div></div>
+ <div>
+ {props.data?.caseTypeFirstName ?
+ `${props.data.caseTypeFirstName}/${props.data.caseTypeName}`
+ : '-'
+ }
+ </div>
+ </Col>
+ <Col span={8}>
+ <div ><div className="title-text">纠纷发生时间</div></div>
+ <div>{props.data?.occurTime || '-'}</div>
+ </Col>
+ <Col span={8}>
+ <div ><div className="title-text">纠纷发生地点</div></div>
+ <div>{props.data?.addr || '-'}</div>
+ </Col>
+ <Col span={8}>
+ <div ><div className="title-text">问题属地</div></div>
+ <div>
+ {props.data?.queAreaName ? `${props.data.queAreaName}/${props.data.queRoadName}` : '-'
+ }
+ </div>
+ </Col>
+ <Col span={8}>
+ <div ><div className="title-text">涉及人数(人)</div></div>
+ <div>{props.data?.peopleNum || '-'}</div>
+ </Col>
+ <Col span={8}>
+ <div ><div className="title-text">涉及金额(元)</div></div>
+ <div>{$$.thousands(props.data?.amount) || '-'}</div>
+ </Col>
+ <Col span={8}>
+ <div ><div className="title-text">事项来源</div></div>
+ <div>{props.data?.canalName}</div>
+ </Col>
+ <Col span={16}>
+ <div ><div className="title-text">来访形式</div></div>
+ <div>来访</div>
+ </Col>
+ <Col span={24}>
+ <div className="title"><div className="title-text">事项概况</div></div>
+ <div>{props.data?.caseDes || '-'} </div>
+ </Col>
+ <Col span={24}>
+ <div className="title"><div className="title-text">事项申请</div></div>
+ <div>{props.data?.caseClaim || '-'}</div>
+ </Col>
+ <Col span={16}>
+ <div className="title"><div className="title-text">是否重大矛盾纠纷</div></div>
+ <div>{props.data?.majorStatus === 1 ? '是' : '否'}</div>
+ </Col>
+ </Row>
+ {props.transactResult && <>
+ <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '16px', marginTop: '20px' }}>
+ <Space size='small'>
+ <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>办理结果</h4>
+ </Space>
+ </Col>
+ <table border="1" align="center" cellpadding="8" className="table" >
+ <tr>
+ <th bgcolor="#F7F8FA" className="table-title" width="120">化解结果</th>
+ <td width='380'>{props.transactResult.mediResultName || '-'}</td>
+ <th bgcolor="#F7F8FA" className="table-title" width="120">经办人</th>
+ <td width='380'>{props.transactResult.mediator || '-'}</td>
+ </tr>
+ <tr>
+ <th bgcolor="#F7F8FA" className="table-title">承办部门</th>
+ <td>{props.transactResult.mediateUnitName || '-'}</td>
+ <th bgcolor="#F7F8FA" className="table-title">配合部门</th>
+ <td>{props.transactResult.applyAssistUnitName || '-'}</td>
+ </tr>
+ <tr>
+ <th bgcolor="#F7F8FA" className="table-title" width="120">受理时间</th>
+ <td width='380'>{$$.minuteFormat(props.transactResult?.acceptTime) || '-'}</td>
+ <th bgcolor="#F7F8FA" className="table-title" width="120">办结时间</th>
+ <td width='380'>{$$.minuteFormat(props.transactResult?.closeTime) || '-'}</td>
+ </tr>
+ <tr>
+ <th bgcolor="#F7F8FA" className="table-title" width="120">办理意见</th>
+ <td width='380' colspan='3'>{props.transactResult?.windupContent || '-'}</td>
+ </tr>
+ <tr>
+ <th bgcolor="#F7F8FA" className="table-title" width="120">协议要点</th>
+ <td width='380' colspan='3'>{props.transactResult?.agreeContent || '-'}</td>
+ </tr>
+ <tr>
+ <th bgcolor="#F7F8FA" className="table-title" width="120">结案意见</th>
+ <td width='380' colspan='3'>{props.transactResult?.windupContent || '-'}</td>
+ </tr>
+ <tr>
+ <th bgcolor="#F7F8FA" className="table-title" width="120">协议文书</th>
+ <td colspan='3'>
+ {props.transactResult?.fileInfoBaseDTOList?.map((item, index) => {
+ console.log(item);
+ return <div style={{ display: 'inline-block' }}>
+ <PreviewImage name={item.name} src={item.showUrl} />
+ {index !== props.transactResult?.fileInfoBaseDTOList.length - 1 && <>,</>}
+ </div>
+ })}
+ </td>
+ </tr>
+ </table>
+ </>}
+ <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px', marginTop: '20px' }}>
+ <Space size='small'>
+ <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>事件材料</h4>
+ </Space>
+ </Col>
+ <FileTable mainId={props.mainId} fileInfoList={props.data?.fileInfoList} isReview={true} />
+ </div>
+ )
+}
+
+export default Preview
\ No newline at end of file
diff --git a/gz-customerSystem/src/views/register/visit/component/SelfVisitorRegister.jsx b/gz-customerSystem/src/views/register/visit/component/SelfVisitorRegister.jsx
new file mode 100644
index 0000000..4bc0b21
--- /dev/null
+++ b/gz-customerSystem/src/views/register/visit/component/SelfVisitorRegister.jsx
@@ -0,0 +1,451 @@
+import React, { useState, useEffect, useRef } from "react";
+import { Row, Col, Space, Tooltip, Button } from 'antd';
+import { Form, Input, Radio, Select, DatePicker, Cascader, Modal, Upload, InputNumber } from '@arco-design/web-react';
+import PersonCard from '@/components/personCard';
+import * as $$ from '@/utils/utility';
+import {
+ question1,
+} from '@/assets/images';
+import '../../index.less';
+import ApplyDialog from "./applyDialog";
+import AgentDialog from "./agentDialog";
+import MapView from './map';
+import { scan } from '@/assets/images/icon';
+import { EventLevelDrawer, MattersDetail } from './levelDetail';
+import DocumentScanner from '../../matterDetail/FileUpLoad';
+import FileTable from "../../matterDetail/FileTable";
+
+
+const RadioGroup = Radio.Group;// 根据调解案号获取纠纷登记信息
+const FormItem = Form.Item;
+const InputSearch = Input.Search;
+
+
+const VisitorRegister = (props) => {
+ const [dialogType, setDialogType] = useState();//添加当事人的类型
+ const [addVisabled, setAddVisabled] = useState(false);//添加当事人弹窗控制
+ const [fakeData, setFakeData] = useState([]);//当事人信息数据
+ const [scanFile, setScanFile] = useState(false);
+ const [ocrText, setOcrText] = useState('');
+
+ const [mapView, setMapView] = useState(false);
+ const [visible, setVisible] = useState(false);
+ const [apply, setApply] = useState(false);
+ const [editData, setEditData] = useState(null);
+ const [agentVisible, setAgentVisible] = useState(false);
+
+ const peopleMap = {
+ '15_020008-1': '申请方',
+ '15_020008-2': '被申请方',
+ '24_00006-1': '申请方代理人',
+ '24_00006-2': '被申请方代理人'
+ }
+
+ useEffect(() => {
+ if (props.formRef.current) {
+ //引入当事人数据
+ props.formRef.current.setFieldValue('fakeData', fakeData)
+ }
+ }, [fakeData])
+
+ useEffect(() => {
+ setFakeData(props.partyList || [])
+ }, [props.partyList])
+
+ //获取当前时间
+ const getFormattedDateTime = () => {
+ let now = new Date();
+ let year = now.getFullYear();
+ let month = (now.getMonth() + 1).toString().padStart(2, '0'); // 月份是从0开始的,所以要+1
+ let day = now.getDate().toString().padStart(2, '0');
+ let hours = now.getHours().toString().padStart(2, '0');
+ let minutes = now.getMinutes().toString().padStart(2, '0');
+
+ return `${year}-${month}-${day} ${hours}:${minutes}`;
+ }
+
+ //添加当事人
+ const handleAdd = (type) => {
+ if (type === '24_00006-1' || type === '24_00006-2') {
+ setAgentVisible(true)
+ } else {
+ setAddVisabled(true)
+ }
+ setDialogType(type)
+ }
+
+ const handleConfirm = (scanContent) => {
+ // 处理确认逻辑
+ props.formRef.current.setFieldValue(ocrText, scanContent)
+ setScanFile(false);
+ console.log(scanContent, 'scanContent')
+
+ };
+
+ const handleCancel = () => {
+ // 处理取消逻辑
+ setScanFile(false);
+ };
+
+ //添加当事人
+ const handleAddParty = (value, isEdit) => {
+ console.log(value);
+ if (isEdit) {
+ //编辑
+ const newList = fakeData.map(item => {
+ if (item.id === value.id) {
+ return value
+ } else {
+ return item
+ }
+ })
+ setFakeData(newList)
+ setEditData(null)
+ } else {
+ setFakeData([...fakeData, {
+ ...value
+ }])
+ }
+ }
+
+ //删除当事人
+ const handleDeleteParty = (event, value) => {
+ event.stopPropagation();
+ const filterData = fakeData.filter(item => item.id !== value.id)
+ setFakeData(filterData)
+ }
+
+ //编辑
+ const handleEdit = (value) => {
+ if (value.perType === '15_020008-1' || value.perType === '15_020008-2') {
+ //当事人
+ setAddVisabled(true)
+ } else {
+ //代理人
+ setAgentVisible(true)
+ }
+ setDialogType(value.perType)
+ setEditData(value)
+ }
+
+ return (
+ <div className='dataSync-page' style={{ ...props.style, marginTop: '8px' }}>
+ <Col span={24} style={{ display: 'flex', alignItems: 'center' }}>
+ <Space size='small'>
+ <div className='MediationInfo-subTitle' style={{ marginTop: '-9px', }}></div><h4>当事人信息</h4>
+ </Space>
+ </Col>
+ <div style={{ margin: '16px 0' }}>
+ <PersonCard
+ isCheck={true}
+ data={fakeData}
+ handleAdd={handleAdd}
+ handleDeleteParty={handleDeleteParty}
+ handleEdit={handleEdit}
+ />
+ </div>
+ <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}>
+ <Space size='small'>
+ <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>纠纷基本情况</h4>
+ </Space>
+ </Col>
+ <Form
+ ref={props.formRef}
+ layout='vertical'
+ requiredSymbol={false}
+ scrollToFirstError={true}
+ initialValues={{
+ caseLevel: 3,
+ occurTime: getFormattedDateTime(),
+ majorStatus: 0,
+ }}//默认值
+ >
+ <Row gutter={[32, 0]}>
+ <Col span={8}>
+ <FormItem
+ label={<div style={{ display: 'flex' }}>
+ 事项等级
+ <Tooltip onClick={() => setApply(true)}>
+ <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px' }} />
+ </Tooltip>
+ </div>
+ }
+ field='caseLevel'
+ >
+ <Select placeholder='请选择事项等级' allowClear options={$$.options.caseLevelList}>
+ </Select>
+ </FormItem>
+ </Col>
+ <Col span={8}>
+ <FormItem label='涉及人数(人)' field='peopleNum'>
+ <InputNumber placeholder='请填写' />
+ </FormItem>
+ </Col>
+ <Col span={8}>
+ <FormItem label='涉及金额(元)' field='amount'>
+ <InputNumber placeholder='请填写' />
+ </FormItem>
+ </Col>
+ <Col span={8}>
+ <FormItem
+ label={(<div style={{ display: 'flex' }}>纠纷类型<div className="must">必填</div></div>)}
+ rules={[{ message: '请选择纠纷类型', required: true }]}
+ field='myCaseType'
+ >
+ <Cascader
+ placeholder='请选择'
+ options={$$.caseTypeSelect.caseTypeSelect}
+ onChange={(value, option) => {
+ if (option) {
+ props.formRef.current.setFieldsValue({
+ caseTypeFirst: option[0].value,
+ caseTypeFirstName: option[0].label,
+ caseType: option[1].value,
+ caseTypeName: option[1].label,
+ })
+ } else {
+ //清除数据
+ props.formRef.current.setFieldsValue({
+ caseTypeFirst: undefined,
+ caseTypeFirstName: undefined,
+ caseType: undefined,
+ caseTypeName: undefined,
+ })
+ }
+ }}
+ allowClear
+ />
+ </FormItem>
+ </Col>
+ <Col span={8}>
+ <FormItem
+ label={(<div style={{ display: 'flex' }}>纠纷发生时间<div className="must">必填</div></div>)}
+ rules={[{ message: '请选择纠纷发生时间', required: true }]}
+ field='occurTime'
+ >
+ <DatePicker
+ style={{ width: '100%' }}
+ placeholder='请选择'
+ format='YYYY-MM-DD HH:mm'
+ showTime={true}
+ />
+ </FormItem>
+ </Col>
+ <Col span={8}>
+ <FormItem
+ label={(<div style={{ display: 'flex' }}>纠纷发生地点<div className="must">必填</div></div>)}
+ rules={[{ message: '请选择纠纷发生地点', required: true }]}
+ field='addr'
+ >
+ <InputSearch
+ placeholder='选择纠纷发生地的详细地址'
+ searchButton='选择'
+ readOnly={true} // 设置为只读,防止直接编辑
+ onSearch={() => setMapView(true)}
+ />
+ </FormItem>
+ </Col>
+ <Col span={8}>
+ <FormItem
+ label={(<div style={{ display: 'flex' }}>问题属地<div className="must">必填</div></div>)}
+ field='myQuesAddress'
+ rules={[{ message: '请选择问题属地', required: true }]}
+ >
+ <Cascader
+ placeholder='请选择'
+ options={$$.locationOption()}
+ showSearch
+ onChange={(value, option) => {
+ if (option) {
+ console.log(option)
+ props.formRef.current.setFieldsValue({
+ // queProv: option[0].value,
+ // queProvName: option[0].label,
+ // queCity: option[1].value,
+ // queCityName: option[1].label,
+ queArea: option[0].value,
+ queAreaName: option[0].label,
+ queRoad: option[1] && option[1].value || '',
+ queRoadName: option[1] && option[1].label || '',
+ })
+ } else {
+ //清除数据
+ props.formRef.current.setFieldsValue({
+ queProv: undefined,
+ queProvName: undefined,
+ queCity: undefined,
+ queCityName: undefined,
+ queArea: undefined,
+ queAreaName: undefined,
+ queRoad: undefined,
+ queRoadName: undefined,
+ })
+ }
+ }}
+ allowClear
+ />
+ </FormItem>
+ </Col>
+ <Col span={24}>
+ <FormItem
+ label={<div style={{ display: 'flex' }}>
+ 事项概况
+ <Tooltip onClick={() => setVisible(true)}>
+ <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px' }} />
+ </Tooltip>
+ <div className="must" style={{ marginLeft: '4px' }}>必填</div>
+ <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} />
+ <div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} onClick={() => { setScanFile(true); setOcrText('caseDes') }}>识别材料</div>
+ </div>
+ }
+ field='caseDes'
+ rules={[{ message: '请填写事项概况', required: true }]}
+ >
+ <Input.TextArea
+ maxLength={2000}
+ showWordLimit
+ rows={5}
+ placeholder='请完整描述事项概况,应具备5要素:发生时间+发生地点+人物情况+事项起因+事项经过'
+ wrapperStyle={{ width: '100%' }}
+ />
+ </FormItem>
+ </Col>
+ <Col span={24}>
+ <FormItem
+ label={<div style={{ display: 'flex' }}>
+ 申请请求
+ {/* <Tooltip onClick={() => setApply(true)}>
+ <img src={question1} alt="" style={{ width: '13px', height: '13px', margin:'4px 4px 0px 4px' }} />
+ </Tooltip> */}
+ <div className="must">必填</div>
+ <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} />
+ <div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} onClick={() => { setScanFile(true); setOcrText('caseClaim') }}>识别材料</div>
+ </div>
+ }
+ field='caseClaim'
+ rules={[{ message: '请填写申请请求', required: true }]}
+
+ >
+ <Input.TextArea
+ maxLength={2000}
+ showWordLimit
+ rows={5}
+ placeholder='希望相关部门如何处理,建议分条描述,如请求1,请求2...'
+ wrapperStyle={{ width: '100%' }}
+ />
+ </FormItem>
+ </Col>
+ <div style={{ marginLeft: '16px', padding: '12px 16px', backgroundColor: '#F2F3F5', borderRadius: '2px', marginTop: '4px', display: 'flex', alignItems: 'center' }}>
+ <FormItem
+ label='是否重大矛盾纠纷'
+ style={{ width: '300px', marginBottom: 0 }}
+ field='majorStatus'
+ layout='horizontal'
+ labelCol={{ span: 11 }}
+ wrapperCol={{ span: 13 }}
+ >
+ <RadioGroup options={[{ value: 0, label: '否' }, { value: 1, label: '是' }]} />
+ </FormItem>
+ </div>
+ </Row>
+
+ </Form >
+ <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px', marginTop: '20px' }}>
+ <Space size='small'>
+ <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>事件材料</h4>
+ </Space>
+ </Col>
+ <div style={{ marginBottom: '65px' }}>
+ <FileTable
+ mainId={props.mainId}
+ fileInfoList={props.fileInfoList}
+ isReview={false}
+ handleSaveList={(list) => {
+ props.formRef.current.setFieldValue('fileInfoList', list)
+ }}
+ />
+ </div>
+ <DocumentScanner
+ visible={scanFile}
+ onConfirm={handleConfirm}
+ onCancel={handleCancel}
+ />
+ <Modal
+ title={(editData ? '修改' : '添加') + peopleMap[dialogType]}
+ visible={addVisabled}
+ onOk={() => setAddVisabled(false)}
+ onCancel={() => {
+ setAddVisabled(false)
+ setEditData(null)
+ }}
+ autoFocus={false}
+ focusLock={true}
+ footer={null}
+ unmountOnExit={true}
+ maskClosable={false}
+ >
+ <ApplyDialog
+ dialogType={dialogType}
+ onClose={() => setAddVisabled(false)}
+ handleAddParty={handleAddParty}
+ editData={editData}
+ mainId={props.mainId}
+ />
+ </Modal>
+ <Modal
+ title={(editData ? '修改' : '添加') + peopleMap[dialogType]}
+ visible={agentVisible}
+ onOk={() => setAgentVisible(false)}
+ onCancel={() => {
+ setAgentVisible(false)
+ setEditData(null)
+ }}
+ autoFocus={false}
+ focusLock={true}
+ footer={null}
+ unmountOnExit={true}
+ maskClosable={false}
+ >
+ <AgentDialog
+ handleAddParty={handleAddParty}
+ onClose={() => setAgentVisible(false)}
+ fakeData={fakeData}
+ dialogType={dialogType}
+ editData={editData}
+ mainId={props.mainId}
+ />
+ </Modal>
+ <Modal
+ style={{ width: '1200px' }}
+ visible={mapView}
+ onCancel={() => setMapView(false)}
+ footer={null}
+ title='选择纠纷发生地'
+ centered
+ unmountOnExit={true}
+ maskClosable={false}
+ >
+ <MapView
+ selectAdd={(data) => {
+ props.formRef.current.setFieldsValue({
+ addr: data.addName,
+ lng: data.pt.lng,
+ lat: data.pt.lat,
+ })
+ setMapView(false)
+ }}
+ />
+ </Modal>
+ <MattersDetail
+ visible={visible}
+ onClose={() => setVisible(false)}
+ />
+ <EventLevelDrawer
+ visible={apply}
+ onClose={() => setApply(false)}
+ />
+ </div >
+ )
+}
+
+export default VisitorRegister;
\ No newline at end of file
diff --git a/gz-customerSystem/src/views/register/visit/index.jsx b/gz-customerSystem/src/views/register/visit/index.jsx
index 0002a87..6783643 100644
--- a/gz-customerSystem/src/views/register/visit/index.jsx
+++ b/gz-customerSystem/src/views/register/visit/index.jsx
@@ -180,16 +180,28 @@
}
function selfAcceptance() {
- $$.modalInfo({
- title: '自行受理确认',
- content: '确定自行受理吗?',
- okText: '确定受理',
- cancelText: '我再想想',
- onOk: async () => {
- setCurrent(3);
- navigate(`mediate/visit/handleFeedback`, { replace: true })
- },
- });
+ if (formRef.current) {
+ formRef.current.validate(undefined, (errors, values) => {
+ if (!errors) {
+ const { myCaseType, myQuesAddress, ...rest } = formRef.current.getFields()
+ const params = handleData(rest)
+ $$.modalInfo({
+ title: '自行受理确认',
+ content: '确定自行受理吗?',
+ okText: '确定受理',
+ cancelText: '我再想想',
+ onOk: async () => {
+ reauestSubmit({
+ ...params,
+ isSelfAccept: 1,
+ isDraft: 0,
+ operateType: 0,
+ }, true)
+ },
+ });
+ }
+ });
+ }
}
//保存请求
@@ -201,12 +213,17 @@
}
//提交请求
- const reauestSubmit = async (data) => {
+ const reauestSubmit = async (data, isSelfAccept) => {
const response = await submitDispute(data)
if (response.type) {
- Message.success('提交成功!')
- navigate(`/mediate/visit/visitWorkBench`, { replace: true })
- setCurrent(2)
+ if(isSelfAccept) {
+ //自行受理
+ navigate(`/mediate/visit/handleFeedback?caseTaskId=${response.data}&caseId=${id}`)
+ } else {
+ Message.success('提交成功!')
+ navigate(`/mediate/visit/visitWorkBench`, { replace: true })
+ setCurrent(2)
+ }
}
}
diff --git a/gz-customerSystem/src/views/register/visit/preview.jsx b/gz-customerSystem/src/views/register/visit/preview.jsx
index d908672..ff662fa 100644
--- a/gz-customerSystem/src/views/register/visit/preview.jsx
+++ b/gz-customerSystem/src/views/register/visit/preview.jsx
@@ -15,7 +15,12 @@
import PreviewImage from '@/components/PreviewImage';
const Preview = (props) => {
- const [data, setData] = useState({})
+ const [data, setData] = useState({});
+ const levelColorMap = {
+ 1: '#F53F3F',
+ 2: '#EF6C24',
+ 3: '#00B42A',
+ }
useEffect(() => {
console.log(props.data);
@@ -116,15 +121,21 @@
<div className="title">
<div className="title-text">事项等级</div>
</div>
- <div style={{ display: 'flex' }}><div style={{ backgroundColor: '#00B42A', marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{props.data?.caseLevel || '-'}</div></div>级</div>
+ <div style={{ display: 'flex' }}>
+ <div style={{ backgroundColor: levelColorMap[props.data?.caseLevel], marginRight: '4px', borderRadius: '4px' }}>
+ <div style={{ color: '#FFFFFF', padding: '0px 6px' }}>
+ {props.data?.caseLevel || '-'}
+ </div>
+ </div>级
+ </div>
</Col>
<Col span={8}>
- <div><div className="title-text">来访时间</div></div>
- <div>{props.data?.visitTime || '-'}</div>
+ <div><div className="title-text">事项来源</div></div>
+ <div>自行排查</div>
</Col>
<Col span={8}>
- <div ><div className="title-text">来访人数(人)</div></div>
- <div>{props.data?.visitPeopleNum || '-'}</div>
+ <div ><div className="title-text">来访形式</div></div>
+ <div>排查</div>
</Col>
<Col span={8}>
<div ><div className="title-text">纠纷类型</div></div>
@@ -146,9 +157,7 @@
<Col span={8}>
<div ><div className="title-text">问题属地</div></div>
<div>
- {props.data?.queProvName ?
- `${props.data.queCityName}/${props.data.queAreaName}/${props.data.queRoadName}`
- : '-'
+ {props.data?.queAreaName ? `${props.data.queAreaName}/${props.data.queRoadName}` : '-'
}
</div>
</Col>
@@ -159,14 +168,6 @@
<Col span={8}>
<div ><div className="title-text">涉及金额(元)</div></div>
<div>{$$.thousands(props.data?.amount) || '-'}</div>
- </Col>
- <Col span={8}>
- <div ><div className="title-text">事项来源</div></div>
- <div>{props.data?.canalName}</div>
- </Col>
- <Col span={16}>
- <div ><div className="title-text">来访形式</div></div>
- <div>来访</div>
</Col>
<Col span={24}>
<div className="title"><div className="title-text">事项概况</div></div>
--
Gitblit v1.8.0