import React, { useEffect, useRef, useState } from 'react'
|
import { Row, Col } from 'antd';
|
import { Form, Input, Button, Radio } from '@arco-design/web-react';
|
import ArcoUpload from '@/components/ArcoUpload';
|
import { Scrollbars } from "react-custom-scrollbars";
|
import * as $$ from '@/utils/utility';
|
import { useNavigate } from 'react-router-dom';
|
|
const RadioGroup = Radio.Group;
|
const FormItem = Form.Item;
|
const TextArea = Input.TextArea;
|
const appUrl = $$.appUrl;
|
|
function getId() {
|
return $$.ax.request({ url: `caseUtils/getNewTimeId`, type: 'get', service: 'utils' });
|
}
|
|
function delFile(id) {
|
return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } });
|
}
|
|
function requestDismiss(data) {
|
return $$.ax.request({ url: `caseTask/dismiss`, type: 'post', service: 'mediate', data });
|
}
|
|
export default function BackModel(props) {
|
const navigate = useNavigate();
|
const formRef = useRef();
|
const [id, setId] = useState();
|
const [reasonRadio, setReasonRadio] = useState();
|
|
const { canalSecond } = props;
|
const isReturnMode = canalSecond === '22_00003-1';
|
|
const options = [
|
{
|
label: '不属于相关职责范围',
|
value: 0
|
},
|
{
|
label: '诉求不合理或不明确',
|
value: 1
|
},
|
{
|
label: '无法与当事人取得联系',
|
value: 2
|
},
|
{
|
label: '缺乏具体事实依据',
|
value: 3
|
},
|
{
|
label: '违反法律法规',
|
value: 4
|
},
|
{
|
label: isReturnMode ? '回退理由' : '其他',
|
value: 5
|
},
|
];
|
|
// 当为回退模式时,只显示value=5的选项
|
const displayOptions = isReturnMode ? options.filter(option => option.value === 5) : options;
|
|
useEffect(() => {
|
getAppId()
|
// 设置默认选中值
|
const defaultValue = isReturnMode ? 5 : 1;
|
setReasonRadio(defaultValue);
|
|
// 设置默认内容
|
if (formRef.current) {
|
setTimeout(() => {
|
formRef.current.setFieldValue('backType', defaultValue);
|
if (defaultValue !== 5) {
|
const obj = displayOptions.find(item => item.value === defaultValue);
|
if (obj) {
|
formRef.current.setFieldValue('disContent', obj.label);
|
}
|
}
|
}, 100);
|
}
|
}, [isReturnMode])
|
|
//获取id
|
const getAppId = async () => {
|
const res = await getId()
|
if (res.type) {
|
setId(res.data)
|
}
|
}
|
|
const handleSubmit = () => {
|
if (formRef.current) {
|
formRef.current.validate(undefined, (errors, values) => {
|
if (!errors) {
|
const disContent = formRef.current.getFieldValue('disContent')
|
handleReturn({
|
id,
|
caseId: props.caseId,
|
caseTaskId: props.caseTaskId,
|
disContent: disContent
|
})
|
}
|
})
|
}
|
}
|
|
//删除文件
|
const handleDelFile = async (id) => {
|
const res = await delFile(id)
|
if (res.type) {
|
$$.infoSuccess({ content: '删除成功!' });
|
}
|
}
|
|
//请求
|
const handleReturn = async (data) => {
|
const res = await requestDismiss(data)
|
if (res.type) {
|
$$.infoSuccess({ content: '提交申请成功!' });
|
props.onCancel()
|
navigate('/mediate/visit/visitWorkBench')
|
}
|
}
|
|
return (
|
<div>
|
<Scrollbars style={{ height: '550px' }} autoHide>
|
<Form
|
ref={formRef}
|
layout='vertical'
|
requiredSymbol={false}
|
initialValues={{
|
backType: isReturnMode ? 5 : 1
|
}}//默认值
|
scrollToFirstError
|
>
|
<Row>
|
<Col span={24}>
|
<FormItem
|
label={(<div style={{ display: 'flex' }}>{isReturnMode ? '回退理由' : '不予受理理由'}<div className="must">必填</div></div>)}
|
field='backType'
|
rules={[{ required: true, message: isReturnMode ? '请选择回退理由' : '请选择不予受理理由' }]}
|
>
|
<RadioGroup
|
direction='vertical'
|
options={displayOptions}
|
onChange={(value) => {
|
setReasonRadio(value)
|
if (value !== 5) {
|
const obj = displayOptions.find(item => item.value === value)
|
formRef.current.setFieldValue('disContent', obj.label)
|
} else {
|
formRef.current.setFieldValue('disContent', '')
|
}
|
}}
|
/>
|
</FormItem>
|
</Col>
|
{
|
reasonRadio === 5 && <Col span={24}>
|
<FormItem
|
label=' '
|
field='disContent'
|
rules={[{ required: true, message: isReturnMode ? '回退理由不能为空' : '不予受理理由不能为空' }]}
|
>
|
<TextArea
|
autoSize={{ minRows: 4, maxRows: 8 }}
|
placeholder={isReturnMode ? '请填写回退的具体理由' : '请填写不予受理的具体理由'}
|
/>
|
</FormItem>
|
</Col>
|
}
|
{!isReturnMode && (
|
<Col span={24} className="doubleFile">
|
<ArcoUpload
|
params={{
|
action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${props.caseId}&ownerId=${id}&ownerType=22_00018-515`,
|
}}
|
field='file'
|
label='附件材料'
|
handleDelFile={handleDelFile}
|
/>
|
</Col>
|
)}
|
</Row>
|
</Form>
|
</Scrollbars>
|
<div className='dialogFooter'>
|
<Button
|
type="primary"
|
className="dialogPrimary"
|
onClick={handleSubmit}
|
>
|
提交
|
</Button>
|
</div>
|
</div>
|
)
|
}
|