From 2127fb90182bf9f8b767369678f5b7e2c46b2228 Mon Sep 17 00:00:00 2001 From: zhangyongtian <1181606322@qq.com> Date: Sun, 08 Sep 2024 11:20:11 +0800 Subject: [PATCH] feat:事件流转对接 --- gz-customerSystem/src/views/register/visit/component/applyDialog.jsx | 2 gz-customerSystem/src/views/register/eventFlow/component/BackModel.jsx | 2 gz-customerSystem/src/views/register/visit/component/agentDialog.jsx | 2 gz-customerSystem/src/api/appUrl.js | 4 gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx | 2 gz-customerSystem/src/views/register/matterDetail/Supervising.jsx | 2 gz-customerSystem/src/router/router.js | 2 gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx | 2 gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx | 2 /dev/null | 184 -------------------- gz-customerSystem/src/views/register/eventFlow/component/AssignedModel.jsx | 2 gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx | 2 gz-customerSystem/src/views/register/closingReview/index.jsx | 129 ++++++++------ gz-customerSystem/src/views/register/eventFlow/index.jsx | 23 -- gz-customerSystem/src/views/register/eventFlow/component/Examine.jsx | 166 +++++++++++++---- gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx | 2 16 files changed, 214 insertions(+), 314 deletions(-) diff --git a/gz-customerSystem/src/api/appUrl.js b/gz-customerSystem/src/api/appUrl.js index 2cf0ece..17e5446 100644 --- a/gz-customerSystem/src/api/appUrl.js +++ b/gz-customerSystem/src/api/appUrl.js @@ -10,11 +10,11 @@ export const debug = { // web服务 // baseUrl: 'http://gz.hugeinfo.com.cn', - baseUrl: "http://192.168.3.108:9002", + baseUrl: "http://fydddb.natappfree.cc", // baseUrl: 'http://mdqgnh.natappfree.cc', // 附件服务 - fileUrl: "http://192.168.3.108:9002", + fileUrl: "http://fydddb.natappfree.cc", // fileUrl: 'http://gz.hugeinfo.com.cn', // 文件查看url 后面接附件编号 diff --git a/gz-customerSystem/src/router/router.js b/gz-customerSystem/src/router/router.js index c341bbf..3538643 100644 --- a/gz-customerSystem/src/router/router.js +++ b/gz-customerSystem/src/router/router.js @@ -220,7 +220,7 @@ <Route path="visit/eventFlow/:caseTaskId?/:caseId?" element={<EventFlow />} /> <Route path="visit/handleFeedback" element={<HandleFeedback />} /> <Route path="visit/fileMessage" element={<FileMessage />} /> - <Route path="visit/closingReview" element={<ClosingReview />}/> + <Route path="visit/closingReview/:caseTaskId?/:caseId?" element={<ClosingReview />}/> diff --git a/gz-customerSystem/src/views/register/closingReview/component/AssignedModel.jsx b/gz-customerSystem/src/views/register/closingReview/component/AssignedModel.jsx deleted file mode 100644 index caf18e2..0000000 --- a/gz-customerSystem/src/views/register/closingReview/component/AssignedModel.jsx +++ /dev/null @@ -1,130 +0,0 @@ -import React, { useRef, useState } from 'react' -import { Row, Col } from 'antd'; -import { Form, Input, Button, Select } from '@arco-design/web-react'; -import ArcoUpload from '@/components/ArcoUpload'; -import { Scrollbars } from "react-custom-scrollbars"; -import SelectObjModal from '@/components/SelectObjModal/selectPerson'; - -const FormItem = Form.Item; -const TextArea = Input.TextArea; -const Option = Select.Option; -const options = ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Chengdu', 'Wuhan']; - -export default function BackModel(props) { - const formRef = useRef(); - const [isModalVisible, setIsModalVisible] = useState(false); - const [wantUser, setWantUser] = useState({}); - - const handleSubmit = () => { - formRef.current.validate(undefined, (errors, values) => { - console.log(errors, values); - }) - } - - const handleTemplate = (type) => { - if (type === 1) { - formRef.current.setFieldValue('trueName', '本事项经初步核实,认为属于贵部门职责范围内的矛盾纠纷化解工作。请组织专门人员负责此事,尽快查明事实真相,依法依规进行处理,并在处理过程中充分考虑当事人的合理诉求,确保公平公正,维护当事人的合法权益。同时,请务必保持与当事人的沟通畅通,及时反馈办理进展,以增强矛盾纠纷化解工作的透明度和公信力。') - } else { - formRef.current.setFieldValue('trueName', '') - } - } - - const handleFocus = (e) => { - e.stopPropagation() - setIsModalVisible(true) - } - - return ( - <div> - <Scrollbars style={{ height: '550px' }} autoHide> - <Form - ref={formRef} - layout='vertical' - requiredSymbol={false} - initialValues={{ - }}//默认值 - scrollToFirstError - > - <Row> - <Col span={24}> - <FormItem - label={(<div style={{ display: 'flex' }}>承办部门<div className="must">必填</div></div>)} - field='bumen' - > - <Select - mode='multiple' - placeholder='请选择承办部门' - allowClear - onFocus={handleFocus} - > - </Select> - </FormItem> - </Col> - <Col span={24}> - <FormItem - label={(<div style={{ display: 'flex' }}>配合部门<div style={{ color: '#86909C' }}>(可多选)</div></div>)} - field='peihe' - > - <Select - mode='multiple' - placeholder='请选择配合部门' - allowClear - > - {options.map((option) => ( - <Option key={option} value={option}> - {option} - </Option> - ))} - </Select> - </FormItem> - </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' onClick={() => { handleTemplate(2) }}>个人模板1:张三的交办意见范本</div> - </div> - <FormItem - label={(<div style={{ display: 'flex' }}>交办意见<div className="must">必填</div></div>)} - field='trueName' - rules={[{ required: true, message: '请选择回退理由' }]} - > - <TextArea - autoSize={{ minRows: 4, maxRows: 8 }} - placeholder='请填写回退的具体理由' - style={{ marginTop: '40px' }} - /> - </FormItem> - </Col> - <Col span={24} className="doubleFile"> - <ArcoUpload - params={{ - action: ``, - }} - field='file' - label='附件材料' - /> - </Col> - </Row> - </Form> - </Scrollbars> - <div className='dialogFooter'> - <Button - type="primary" - className="dialogPrimary" - onClick={handleSubmit} - > - 提交 - </Button> - </div> - <SelectObjModal - visible={isModalVisible} - checkKeys={wantUser.wantUserId ? [{ label: wantUser.wantUserName, value: wantUser.wantUserId }] : undefined} - onOk={(value) => { - setIsModalVisible(false); - setWantUser({ wantUserId: value.keys[0], wantUserName: value.items[0].name }); - }} - onClose={() => setIsModalVisible(false)} - /> - </div> - ) -} \ No newline at end of file diff --git a/gz-customerSystem/src/views/register/closingReview/component/BackModel.jsx b/gz-customerSystem/src/views/register/closingReview/component/BackModel.jsx deleted file mode 100644 index a353b0c..0000000 --- a/gz-customerSystem/src/views/register/closingReview/component/BackModel.jsx +++ /dev/null @@ -1,95 +0,0 @@ -import React, { useRef } 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"; - -const RadioGroup = Radio.Group; -const FormItem = Form.Item; -const TextArea = Input.TextArea; - -export default function BackModel(props) { - const formRef = useRef(); - const options = [ - { - label: '不属于本部门的职能范围', - value: 1 - }, - { - label: '超出本部门管辖范围', - value: 2 - }, - { - label: '重复上报', - value: 3 - }, - { - label: '无法与当事人取得联系', - value: 4 - }, - { - label: '其他', - value: 5 - }, - ] - const handleSubmit = () => { - - } - return ( - <div> - <Scrollbars style={{ height: '550px' }} autoHide> - <Form - ref={formRef} - layout='vertical' - requiredSymbol={false} - initialValues={{ - }}//默认值 - scrollToFirstError - > - <Row> - <Col span={24}> - <FormItem - label={(<div style={{ display: 'flex' }}>回退理由<div className="must">必填</div></div>)} - field='trueName' - rules={[{ required: true, message: '请选择回退理由' }]} - > - <RadioGroup direction='vertical' options={options}> - </RadioGroup> - </FormItem> - </Col> - <Col span={24}> - <FormItem - label=' ' - field='luyou' - rules={[{ required: true, message: '回退理由不能为空' }]} - > - <TextArea - autoSize={{ minRows: 4, maxRows: 8 }} - placeholder='请填写回退的具体理由' - /> - </FormItem> - </Col> - <Col span={24} className="doubleFile"> - <ArcoUpload - params={{ - action: ``, - }} - field='file' - label='附件材料' - /> - </Col> - </Row> - </Form> - </Scrollbars> - <div className='dialogFooter'> - <Button - type="primary" - className="dialogPrimary" - onClick={handleSubmit} - > - 提交 - </Button> - </div> - </div> - ) -} diff --git a/gz-customerSystem/src/views/register/closingReview/component/EscalationModel.jsx b/gz-customerSystem/src/views/register/closingReview/component/EscalationModel.jsx deleted file mode 100644 index 6ccf1a5..0000000 --- a/gz-customerSystem/src/views/register/closingReview/component/EscalationModel.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import React, { useRef } from 'react' -import { Row, Col } from 'antd'; -import { Form, Input, Button } from '@arco-design/web-react'; -import ArcoUpload from '@/components/ArcoUpload'; -import { Scrollbars } from "react-custom-scrollbars"; -import { escalation } from '@/assets/images/icon'; - -const FormItem = Form.Item; -const TextArea = Input.TextArea; - -export default function BackModel(props) { - const formRef = useRef(); - - const handleSubmit = () => { - formRef.current.validate(undefined, (errors, values) => { - console.log(errors, values); - }) - } - - const handleTemplate = (type) => { - if(type === 1) { - formRef.current.setFieldValue('trueName', '经初步核查,该事项较为复杂,且涉及多个相关部门的协调配合,为确保能够高效、妥善地解决当事人的问题,特此请求上级给予指导和支持。') - } else { - formRef.current.setFieldValue('trueName', '') - } - } - - return ( - <div> - <Scrollbars style={{ height: '550px' }} autoHide> - <Form - ref={formRef} - layout='vertical' - requiredSymbol={false} - initialValues={{ - }}//默认值 - scrollToFirstError - > - <Row> - <Col span={24}> - <FormItem - label='上报至' - field='trueName' - > - <div className='myTag' > - <img src={escalation} alt="" className="title-file" />白云区综治中心 - </div> - </FormItem> - </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' onClick={() => { handleTemplate(2) }}>个人模板1:超过处置范围的上报意见</div> - </div> - <FormItem - label={(<div style={{ display: 'flex' }}>上报意见<div className="must">必填</div></div>)} - field='trueName' - rules={[{ required: true, message: '请选择回退理由' }]} - > - - <TextArea - autoSize={{ minRows: 4, maxRows: 8 }} - placeholder='请填写回退的具体理由' - style={{ marginTop: '40px' }} - /> - </FormItem> - </Col> - <Col span={24} className="doubleFile"> - <ArcoUpload - params={{ - action: ``, - }} - field='file' - label='附件材料' - /> - </Col> - </Row> - </Form> - </Scrollbars> - <div className='dialogFooter'> - <Button - type="primary" - className="dialogPrimary" - onClick={handleSubmit} - > - 提交 - </Button> - </div> - </div> - ) -} \ No newline at end of file diff --git a/gz-customerSystem/src/views/register/closingReview/component/EventFlow.jsx b/gz-customerSystem/src/views/register/closingReview/component/EventFlow.jsx deleted file mode 100644 index 96ba746..0000000 --- a/gz-customerSystem/src/views/register/closingReview/component/EventFlow.jsx +++ /dev/null @@ -1,184 +0,0 @@ -import React, { useState, useRef, useEffect } from 'react'; -import { Button, Modal, Tabs, Badge } from '@arco-design/web-react'; -import { Space } from 'antd'; -import ProgressStep from '@/components/ProgressStep/VisitStep'; -import BackModel from "./BackModel"; -import { Scrollbars } from "react-custom-scrollbars"; -import { getOffset, getSize } from '@/utils/utility'; -import EscalationModel from './EscalationModel'; -import AssignedModel from './AssignedModel'; - -const TabPane = Tabs.TabPane; - -const fakeData = [ - { - handlerUserName: '天河区棠下街综治中心', - finishTime: new Date().getTime() - 24 * 60 * 60 * 1000, // 一天前的时间 - handleResult: '1', - status: '2', - taskNodeName: '来访登记', - mediResult: '22_00025-1', - handleContent: '调解成功,双方达成一致意见。', - operationName: '李晓明' - }, - { - handlerUserName: '系统派单', - finishTime: new Date().getTime() - 12 * 60 * 60 * 1000, // 半天前的时间 - handleResult: '1', - status: '2', - taskNodeName: '事件流转', - mediResult: '22_00025-1', - handleContent: '派单至:白云区新市街市场监管所', - }, - { - handlerUserName: '白云区新市街市场监管所', - finishTime: new Date().getTime() - 11 * 60 * 60 * 1000, // 半天前的时间 - handleResult: '1', - status: '2', - taskNodeName: '事件流转', - mediResult: '22_00025-1', - handleContent: '已签收', - operationName: '赵菲菲' - }, - { - handlerUserName: '白云区新市街市场监管所', - finishTime: new Date().getTime() - 10 * 60 * 60 * 1000, // 半天前的时间 - handleResult: '1', - status: '3', - taskNodeName: '事件回退', - mediResult: '22_00025-1', - // handleContent: '已签收', - operationName: '赵菲菲' - }, - { - handlerUserName: '白云区新市街综治中心', - finishTime: new Date().getTime() - 9 * 60 * 60 * 1000, // 半天前的时间 - handleResult: '1', - status: '2', - taskNodeName: '回退审核', - mediResult: '22_00025-1', - handleContent: '通过', - operationName: '赵菲菲' - }, - { - handlerUserName: '天河区棠下街综治中心', - finishTime: new Date().getTime() - 6 * 60 * 60 * 1000, // 6小时前的时间 - handleResult: '2', - status: '1', - taskNodeName: '事件流转', - mediResult: '22_00025-1', - handleContent: '案件已被签收,准备开始调解。', - operationName: '李晓明' - }, -]; - -export default function EventFlow(props) { - const scrollRef = useRef(null) - const [backVisible, setBackVisible] = useState(false) - const [height, setHeight] = useState(500) - const [escalationVisible, setEscalationVisible] = useState(false) - const [assignedVisible, setAssignedVisible] = useState(false) - - useEffect(() => { - onWindowResize() - window.addEventListener("resize", onWindowResize); - }, []) - - const onWindowResize = () => { - let offsetLeft = 0; - let offsetTop = 0; - if (scrollRef.current.container) { - offsetLeft = getOffset(scrollRef.current.container).left; - offsetTop = getOffset(scrollRef.current.container).top; - } - setHeight(getSize().windowH - offsetTop - 65) - }; - - return ( - <div className='dataSync'> - <div className='dataSync-hasTabPage' > - <Tabs defaultActiveTab='1' > - <TabPane - key='1' - title={ - <span style={{ fontSize: '15px' }}> - 流转进度 - </span> - } - > - <Scrollbars - style={{ height: height }} - ref={scrollRef} - autoHide - > - <ProgressStep progressData={fakeData} /> - </Scrollbars> - </TabPane> - <TabPane - key='2' - title={ - <span style={{ fontSize: '15px' }}> - 督办信息 - <Badge maxCount={99} count={1000} /> - </span> - } - > - <Scrollbars - style={{ height: height }} - ref={scrollRef} - ></Scrollbars> - </TabPane> - </Tabs> - - </div> - <div className="dataSync-excel"> - <Space size="large" style={{ margin: '4px 14px' }}> - <Button type="primary" >受理</Button> - <Button type="primary" >提交</Button> - <Button type="primary" >自行受理</Button> - <Button type='outline' status='danger' onClick={() => setBackVisible(true)}>回退</Button> - <Button type='outline' onClick={() => setAssignedVisible(true)}>交办</Button> - <Button type='outline' onClick={() => setEscalationVisible(true)}>上报</Button> - <Button type='secondary' >返回上级页面</Button> - </Space> - </div> - <Modal - title='回退' - visible={backVisible} - onOk={() => setBackVisible(false)} - onCancel={() => { setBackVisible(false) }} - autoFocus={false} - focusLock={true} - footer={null} - unmountOnExit={true} - maskClosable={false} - > - <BackModel /> - </Modal> - <Modal - title='上报' - visible={escalationVisible} - onOk={() => setEscalationVisible(false)} - onCancel={() => { setEscalationVisible(false) }} - autoFocus={false} - focusLock={true} - footer={null} - unmountOnExit={true} - maskClosable={false} - > - <EscalationModel /> - </Modal> - <Modal - title='交办' - visible={assignedVisible} - onOk={() => setAssignedVisible(false)} - onCancel={() => { setAssignedVisible(false) }} - footer={null} - unmountOnExit={true} - maskClosable={false} - > - <AssignedModel /> - </Modal> - </div> - ) -} diff --git a/gz-customerSystem/src/views/register/closingReview/component/Examine.jsx b/gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx similarity index 99% rename from gz-customerSystem/src/views/register/closingReview/component/Examine.jsx rename to gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx index 913bd84..e5b8cad 100644 --- a/gz-customerSystem/src/views/register/closingReview/component/Examine.jsx +++ b/gz-customerSystem/src/views/register/closingReview/component/ReviewExamine.jsx @@ -10,7 +10,7 @@ const FormItem = Form.Item; const TextArea = Input.TextArea; -export default function Examine(props) { +export default function ReviewExamine(props) { const formRef = useRef(); const [result, setResult] = useState() const infoData = { diff --git a/gz-customerSystem/src/views/register/closingReview/index.jsx b/gz-customerSystem/src/views/register/closingReview/index.jsx index 746f3ba..78da404 100644 --- a/gz-customerSystem/src/views/register/closingReview/index.jsx +++ b/gz-customerSystem/src/views/register/closingReview/index.jsx @@ -1,49 +1,84 @@ -/* - * @Author: dminyi 1301963064@qq.com - * @Date: 2024-08-09 09:59:43 - * @LastEditors: dminyi 1301963064@qq.com - * @LastEditTime: 2024-08-31 17:13:53 - * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx - * @Description: 来访登记 - */ - -import React, { useState, useRef, Fragment } from "react"; +import React, { useState, useRef, Fragment, useEffect } from "react"; import NewPage from '@/components/NewPage'; import * as $$ from '@/utils/utility'; import "@arco-themes/react-gzzz/css/arco.css"; import '../index.less'; -import { Steps, Tabs } from '@arco-design/web-react'; -import { examine, Matter, transfer } from '@/assets/images' -import EventFlow from './component/EventFlow'; -import MatterDetail from '../matterDetail'; -import Examine from "./component/Examine"; +import { Tabs } from '@arco-design/web-react'; +import { examine, Matter, transfer, applyRecord } from '@/assets/images' +import EventFlow from '../eventFlow/component/EventFlow'; +import ApplyInfo from "../matterDetail/ApplyInfo"; +import { useParams } from 'react-router-dom'; +import ReviewExamine from './component/ReviewExamine'; -const Step = Steps.Step; const TabPane = Tabs.TabPane; +function getTabButton(data) { + return $$.ax.request({ url: `caseTask/getTabButton`, type: 'get', service: 'mediate', data }); +} -const Organization = () => { - const [current, setCurrent] = useState(2); - const [tabsActive, setTabsActive] = useState('3'); - const [tabsList, setTabList] = useState([ - { - img: Matter, - label: '事项详情', - key: '1' - }, - { - img: transfer, - label: '流转办理', - key: '2', - isNeedStep: true,//加上这个就有进度条 - }, - { - img: examine, - label: '审核', - key: '3', - }, - ]) +const myTab = [ + { + img: Matter, + label: '事项详情', + key: 'sxxq', + }, + { + img: applyRecord, + label: '申请记录', + key: 'sqjl', + }, + { + img: examine, + label: '结案审核', + key: 'jash', + }, +] +const ClosingReview = () => { + const routeData = useParams(); + const [authorData, setAuthorData] = useState({}); + const [tabsList, setTabsList] = useState([]); + const [tabsActive, setTabsActive] = useState(); + useEffect(() => { + getAuthor() + }, []) + + //获取权限tab和按钮权限 + const getAuthor = async () => { + const res = await getTabButton({ + caseTaskId: routeData.caseTaskId + }) + if (res.type) { + const { tabList } = res.data + setAuthorData(res.data) + if (tabList.length === 0) { + //没有tab就不展示 + } else { + setTabsList(myTab.filter(item => { + const flag = tabList.some(result => { + if (result.id === item.key) { + return true + } + }) + return flag + })) + setTabsActive(tabList[0].id) + } + } + } + + //根据id定义组件 + const getTypeDom = (key) => { + if (key === 'dslxq' || key === 'sxxq') { + return <EventFlow authorData={authorData} caseId={routeData.caseId} /> + } + if (key === 'sqjl') { + return <ApplyInfo /> + } + if (key === 'jash') { + return <ReviewExamine type={key} /> + } + } return ( <div style={{ position: 'relative' }}> @@ -53,9 +88,9 @@ } > <Tabs - activeTab={tabsActive} onChange={(v) => setTabsActive(v)} className='myTabContent' + activeTab={tabsActive} > {tabsList?.map(item => { return <TabPane @@ -67,21 +102,7 @@ </span> } > - { - item.isNeedStep && <div style={{ backgroundColor: '#fff', margin: '0 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> - } - {tabsActive === '1' && <MatterDetail />} - {tabsActive === '2' && <EventFlow />} - {tabsActive === '3' && <Examine />} + {getTypeDom(item.key)} </TabPane> })} </Tabs> @@ -90,4 +111,4 @@ ) } -export default Organization; \ No newline at end of file +export default ClosingReview; \ No newline at end of file diff --git a/gz-customerSystem/src/views/register/eventFlow/component/AssignedModel.jsx b/gz-customerSystem/src/views/register/eventFlow/component/AssignedModel.jsx index fbcbc7c..ce47fb4 100644 --- a/gz-customerSystem/src/views/register/eventFlow/component/AssignedModel.jsx +++ b/gz-customerSystem/src/views/register/eventFlow/component/AssignedModel.jsx @@ -16,7 +16,7 @@ } function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } export default function BackModel(props) { diff --git a/gz-customerSystem/src/views/register/eventFlow/component/BackModel.jsx b/gz-customerSystem/src/views/register/eventFlow/component/BackModel.jsx index a7e9b0e..f677318 100644 --- a/gz-customerSystem/src/views/register/eventFlow/component/BackModel.jsx +++ b/gz-customerSystem/src/views/register/eventFlow/component/BackModel.jsx @@ -15,7 +15,7 @@ } function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } function returnApply(data) { diff --git a/gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx b/gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx index 9db6691..5ec4abf 100644 --- a/gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx +++ b/gz-customerSystem/src/views/register/eventFlow/component/EscalationModel.jsx @@ -15,7 +15,7 @@ } function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } function appearApply(data) { diff --git a/gz-customerSystem/src/views/register/eventFlow/component/Examine.jsx b/gz-customerSystem/src/views/register/eventFlow/component/Examine.jsx index d6e00e3..80d6a84 100644 --- a/gz-customerSystem/src/views/register/eventFlow/component/Examine.jsx +++ b/gz-customerSystem/src/views/register/eventFlow/component/Examine.jsx @@ -1,26 +1,106 @@ -import React, { useRef } from 'react' +import React, { useRef, useEffect, useState } from 'react' import { Row, Col, Space } from 'antd'; import { link, register } from '@/assets/images'; 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'; const RadioGroup = Radio.Group; const FormItem = Form.Item; const TextArea = Input.TextArea; +const appUrl = $$.appUrl; + +function getData(type, data) { + let url = type === 'htsh' ? `caseTask/getReturnApplyInfo` : `caseTask/getAppearApplyInfo` + return $$.ax.request({ url: url, type: 'get', service: 'mediate', data }); +} + +function submit(type, data) { + let url = type === 'htsh' ? `caseTask/returnAudit` : `caseTask/appearAudit` + return $$.ax.request({ url: url, type: 'post', service: 'mediate', data }); +} + +function getId() { + return $$.ax.request({ url: `caseUtils/getNewTimeId`, type: 'get', service: 'utils' }); +} + +function delFile(id) { + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); +} export default function Examine(props) { const formRef = useRef(); - const infoData = { - reason: '已经与双方当事人沟通,其中被申请方反应所谓的“个性化学习计划”费用是得到了白云区教育局的批准,而该费用收取是否合理,本部门无法判断', - file: '广东明智教育培训机构资质合理性调查记录.pdf', - time: '2024-7-21 12:00', - people: '白云区新市街市场监管所', - person: '张晓霞', + const [infoData, setInfoData] = useState({}); + const [id, setId] = useState(); + const mainFlag = props.type == 'htsh' ? 'return' : 'appear' + const options = [ + { + label: '回退理由不充分', + value: '0' + }, + { + label: '回退延迟', + value: '1' + }, + { + label: '其他', + value: '2' + }, + ] + + useEffect(() => { + getInfoData() + getAppId() + }, [props.type]) + + //获取id + const getAppId = async () => { + const res = await getId() + if (res.type) { + setId(res.data) + } + } + + //回显数据 + const getInfoData = async () => { + const res = await getData(props.type, { + caseTaskId: props.caseTaskId + }) + if (res.type) { + setInfoData(res.data || {}) + } } const handleSubmit = () => { + if (formRef.current) { + formRef.current.validate(undefined, (errors, values) => { + if (!errors) { + const { file, myNoUp, ...rest } = formRef.current.getFields() + requestSubmit({ + id, + caseId: props.caseId, + caseTaskId: props.caseTaskId, + ...rest + }) + } + }) + } + } + const requestSubmit = async (data) => { + const res = await submit(props.type, data) + if (res.type) { + $$.infoSuccess({ content: '提交成功!' }); + } + } + + //删除文件 + const handleDelFile = async (id) => { + const res = await delFile(id) + if (res.type) { + $$.infoSuccess({ content: '删除成功!' }); + } } return ( @@ -28,24 +108,30 @@ <div className='dataSync-noBackTabPage'> <div className='whiteBox'> <Space size='small'> - <div className='MediationInfo-subTitle' style={{ marginTop: '-8px' }}></div><h5>回退申请</h5> + <div className='MediationInfo-subTitle' style={{ marginTop: '-8px' }}></div><h5>{props.type === 'htsh' ? '回退申请' : '上报申请'}</h5> </Space> <Row gutter={[16, 16]}> <Col span={24}> - <div><div className="title-text">回退理由</div></div> - <div>{infoData?.reason || '-'}</div> + <div><div className="title-text">{props.type === 'htsh' ? '回退理由' : '上报理由'}</div></div> + <div>{infoData[mainFlag + 'Content'] || '-'}</div> </Col> <Col span={24}> <div><div className="title-text">附件材料</div></div> - <div style={{ color: '#1A6FB8' }}><img src={link} alt="" className="title-file" />{infoData?.file || '-'}</div> + <div style={{ color: '#1A6FB8' }}> + <img src={link} alt="" className="title-file" />{infoData?.file || '-'} + </div> </Col> <Col span={24}> <div><div className="title-text">申请时间</div></div> - <div>{infoData?.time || '-'}</div> + <div>{infoData[mainFlag + 'Time'] || '-'}</div> </Col> <Col span={24}> <div><div className="title-text">申请人</div></div> - <div>{infoData?.people} {infoData?.person}<img src={register} alt="" className="title-register" /></div> + <div> + {infoData[mainFlag + 'UnitName']} + {infoData[mainFlag + 'UserName'] || '-'} + <img src={register} alt="" className="title-register" /> + </div> </Col> </Row> </div> @@ -66,48 +152,43 @@ <Col span={24}> <FormItem label={(<div style={{ display: 'flex' }}>审核结果</div>)} - field='result' + field='auditResult' > - <RadioGroup direction='vertical' options={[ - { - label: '同意', - value: 1 - }, - { - label: '不同意', - value: 0 - }, - ]}> - </RadioGroup> + <RadioGroup + direction='vertical' + options={$$.options.auditResult} + onChange={(value) => { + if (value) { + const data = $$.options.auditResult.find(item => item.value === value) + formRef.current.setFieldValue('auditResultName', data.label) + } else { + formRef.current.setFieldValue('auditResultName', '') + } + }} + /> </FormItem> </Col> <Col span={24}> <FormItem label={(<div style={{ display: 'flex' }}>理由说明<div className="must">必填</div></div>)} - field='trueName' + field='myNoUp' rules={[{ required: true, message: '请选择理由说明' }]} > - <RadioGroup direction='vertical' options={[ - { - label: '回退理由不充分', - value: '0' - }, - { - label: '回退延迟', - value: '1' - }, - { - label: '其他', - value: '2' - }, - ]}> + <RadioGroup + direction='vertical' + options={options} + onChange={(value) => { + const obj = options.find(item => item.value === value) + formRef.current.setFieldValue('audit_content', obj.label) + }} + > </RadioGroup> </FormItem> </Col> <Col span={24}> <FormItem label=' ' - field='luyou' + field='audit_content' rules={[{ required: true, message: '理由不能为空' }]} > <TextArea @@ -119,10 +200,11 @@ <Col span={24} className="doubleFile"> <ArcoUpload params={{ - action: ``, + action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${props.caseId}&ownerId=${id}&ownerType=${props.type == 'htsh' ? '22_00018-511' : '22_00018-513'}`, }} field='file' label='附件材料' + handleDelFile={handleDelFile} /> </Col> </Row> diff --git a/gz-customerSystem/src/views/register/eventFlow/index.jsx b/gz-customerSystem/src/views/register/eventFlow/index.jsx index c6453a2..5fa937c 100644 --- a/gz-customerSystem/src/views/register/eventFlow/index.jsx +++ b/gz-customerSystem/src/views/register/eventFlow/index.jsx @@ -1,12 +1,3 @@ -/* - * @Author: dminyi 1301963064@qq.com - * @Date: 2024-08-09 09:59:43 - * @LastEditors: dminyi 1301963064@qq.com - * @LastEditTime: 2024-08-31 17:13:53 - * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx - * @Description: 来访登记 - */ - import React, { useState, useRef, Fragment, useEffect } from "react"; import NewPage from '@/components/NewPage'; import * as $$ from '@/utils/utility'; @@ -51,16 +42,6 @@ img: examine, label: '上报审核', key: 'sbsh', - }, - { - img: examine, - label: '结案审核', - key: 'jash', - }, - { - img: examine, - label: '联合处置申请审核', - key: 'lhczsh', }, ] const Organization = () => { @@ -107,8 +88,8 @@ if (key === 'sqjl') { return <ApplyInfo /> } - if (key === 'htsh' || key === 'sbsh' || key === 'jash' || key === 'lhczsh') { - return <Examine type={key} /> + if (key === 'htsh' || key === 'sbsh' || key === 'lhczsh') { + return <Examine type={key} caseTaskId={routeData.caseTaskId} caseId={routeData.caseId} /> } } diff --git a/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx b/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx index fb9456b..7f00526 100644 --- a/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx +++ b/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx @@ -12,7 +12,7 @@ function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } diff --git a/gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx b/gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx index 0340129..77d07c1 100644 --- a/gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx +++ b/gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx @@ -81,7 +81,7 @@ } function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } function getNewTimeIdApi(id) { diff --git a/gz-customerSystem/src/views/register/matterDetail/Supervising.jsx b/gz-customerSystem/src/views/register/matterDetail/Supervising.jsx index ab8b43b..4398e73 100644 --- a/gz-customerSystem/src/views/register/matterDetail/Supervising.jsx +++ b/gz-customerSystem/src/views/register/matterDetail/Supervising.jsx @@ -22,7 +22,7 @@ const appUrl = $$.appUrl; function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } diff --git a/gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx b/gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx index 53965fa..0f71759 100644 --- a/gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx +++ b/gz-customerSystem/src/views/register/matterDetail/UniteHandle.jsx @@ -10,7 +10,7 @@ const appUrl = $$.appUrl; function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } diff --git a/gz-customerSystem/src/views/register/visit/component/agentDialog.jsx b/gz-customerSystem/src/views/register/visit/component/agentDialog.jsx index 911d774..5329deb 100644 --- a/gz-customerSystem/src/views/register/visit/component/agentDialog.jsx +++ b/gz-customerSystem/src/views/register/visit/component/agentDialog.jsx @@ -18,7 +18,7 @@ } function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } export default function AgentDialog(props) { diff --git a/gz-customerSystem/src/views/register/visit/component/applyDialog.jsx b/gz-customerSystem/src/views/register/visit/component/applyDialog.jsx index 1004661..68546ba 100644 --- a/gz-customerSystem/src/views/register/visit/component/applyDialog.jsx +++ b/gz-customerSystem/src/views/register/visit/component/applyDialog.jsx @@ -30,7 +30,7 @@ } function delFile(id) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } export default function ApplyDialog(props) { -- Gitblit v1.8.0