| | |
| | | */ |
| | | import React, { useEffect, useState, useRef } from 'react'; |
| | | import { useNavigate } from 'react-router-dom'; |
| | | import { tab1, tab2, tab3, tab4, tab5, tab6, visitInto, checkInto } from '@/assets/images' |
| | | import { tab1, tab2, tab3, tab4, tab5, tab6 } from '@/assets/images' |
| | | import TableView from '../../components/TableView'; |
| | | import { Space } from 'antd'; |
| | | import { Tabs, Typography, Radio } from '@arco-design/web-react'; |
| | | import { Tabs, Typography, Radio, Form, Input, DatePicker, Button, Grid, Modal } from '@arco-design/web-react'; |
| | | import * as $$ from '@/utils/utility'; |
| | | import './index.less'; |
| | | |
| | | |
| | | const FormItem = Form.Item; |
| | | const TabPane = Tabs.TabPane; |
| | | const { RangePicker } = DatePicker; |
| | | const Row = Grid.Row; |
| | | const Col = Grid.Col; |
| | | |
| | | //工作总览数据 |
| | | function getCountListApi(data) { |
| | |
| | | return $$.ax.request({ url: `caseTask/pageMyTaskDb`, type: 'get', service: 'mediate', data }); |
| | | } |
| | | |
| | | //签收 |
| | | //签收接口 |
| | | function signApi(data) { |
| | | return $$.ax.request({ url: `caseTask/sign`, type: 'post', service: 'mediate', data }); |
| | | } |
| | | |
| | | const VisitWorkBench = () => { |
| | | const navigate = useNavigate(); |
| | | const formRef = useRef(); |
| | | |
| | | // 静态数据 |
| | | //分派表头 |
| | |
| | | title: '流转时间', |
| | | dataIndex: 'turnaroundTime', |
| | | key: 'turnaroundTime', |
| | | width: 100, |
| | | width: 150, |
| | | }, |
| | | { |
| | | title: '分派时限', |
| | |
| | | title: '流转时间', |
| | | dataIndex: 'turnaroundTime', |
| | | key: 'turnaroundTime', |
| | | width: 100, |
| | | width: 150, |
| | | }, |
| | | { |
| | | title: '签收时限', |
| | |
| | | title: '事项等级', |
| | | dataIndex: 'caseGrade', |
| | | key: 'caseGrade', |
| | | width: 80, |
| | | width: 100, |
| | | }, |
| | | { |
| | | title: '事项来源', |
| | |
| | | title: '流转时间', |
| | | dataIndex: 'turnaroundTime', |
| | | key: 'turnaroundTime', |
| | | width: 100, |
| | | width: 150, |
| | | }, |
| | | { |
| | | title: '受理时限', |
| | |
| | | title: '事项等级', |
| | | dataIndex: 'caseGrade', |
| | | key: 'caseGrade', |
| | | width: 80, |
| | | width: 100, |
| | | }, |
| | | { |
| | | title: '事项来源', |
| | |
| | | title: '化解结果', |
| | | dataIndex: 'mediResult', |
| | | key: 'mediResult', |
| | | width: 80, |
| | | width: 100, |
| | | }, |
| | | { |
| | | title: '无法化解理由', |
| | |
| | | title: '流转时间', |
| | | dataIndex: 'turnaroundTime', |
| | | key: 'turnaroundTime', |
| | | width: 100, |
| | | width: 150, |
| | | }, |
| | | { |
| | | title: '已办天数', |
| | |
| | | title: '结案申请时间', |
| | | dataIndex: 'turnaroundTime', |
| | | key: 'turnaroundTime', |
| | | width: 180, |
| | | width: 150, |
| | | }, |
| | | { |
| | | title: '事项等级', |
| | |
| | | title: '化解结果', |
| | | dataIndex: 'mediResult', |
| | | key: 'mediResult', |
| | | width: 180, |
| | | width: 100, |
| | | }, |
| | | { |
| | | title: '申请方', |
| | |
| | | render: (text, record) => ( |
| | | <Space style={{ color: '#1A6FB8' }}> |
| | | <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>详情</div> |
| | | <div onClick={() => navigate(`/mediate/visit/handleFeedback?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>审核</div> |
| | | <div onClick={() => navigate(`/mediate/visit/closingReview?caseTaskId=${record.ownerId}&caseId=${record.caseId}`)} style={{ cursor: 'pointer' }}>审核</div> |
| | | </Space> |
| | | ), |
| | | }]), |
| | |
| | | title: '督办时间', |
| | | dataIndex: 'turnaroundTime', |
| | | key: 'turnaroundTime', |
| | | width: 100, |
| | | width: 150, |
| | | }, |
| | | { |
| | | title: '回复时限', |
| | |
| | | }) |
| | | const [total, setTotal] = useState(0);//表格数据总数量 |
| | | const [loading, setLoading] = useState(false);//表格loading |
| | | const [selectedRowKeys, setSelectedRowKeys] = useState([]);//批量签收的id |
| | | const [selectedRows, setSelectedRows] = useState([]);//批量签收的数据 |
| | | |
| | | useEffect(() => { |
| | | getCountData(); |
| | |
| | | getTableData(tabActivekey) |
| | | }, [searchData, pageData]) |
| | | |
| | | //批量选择 |
| | | const onSelectChange = (newSelectedRowKeys, selectedRows) => { |
| | | setSelectedRowKeys(newSelectedRowKeys); |
| | | setSelectedRows(selectedRows) |
| | | } |
| | | |
| | | //签收 |
| | | const handleSign = async (caseId, ownerId) => { |
| | | const res = await signApi({ caseId: caseId, caseTaskId: ownerId }) |
| | | const res = await signApi([{ caseId: caseId, caseTaskId: ownerId }]) |
| | | if (res.type) { |
| | | $$.infoSuccess({ content: '签收成功' }); |
| | | getCountData(); |
| | |
| | | } |
| | | } |
| | | |
| | | //查询 |
| | | const handleSubmit = () => { |
| | | const data = formRef.current.getFieldsValue(); |
| | | const { time, ...rest } = data |
| | | setSearchData({ |
| | | ...searchData, |
| | | timeStart: time ? time[0] : '', |
| | | timeEnd: time ? time[1] : '', |
| | | ...rest |
| | | }) |
| | | } |
| | | |
| | | //批量签收 |
| | | const handleBatchQs = () => { |
| | | console.log(selectedRows); |
| | | const paramsList = selectedRows.map(item => { |
| | | return { |
| | | caseId: item.caseId, |
| | | caseTaskId: item.ownerId |
| | | } |
| | | }) |
| | | Modal.confirm({ |
| | | title: '签收确认', |
| | | content: '确认批量签收?', |
| | | onOk: async () => { |
| | | const res = await signApi(paramsList) |
| | | if (res.type) { |
| | | $$.infoSuccess({ content: '批量签收成功成功!' }); |
| | | getCountData(); |
| | | getTableData(tabActivekey) |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | | |
| | | const rowSelection = { |
| | | selectedRowKeys: selectedRowKeys, |
| | | onChange: onSelectChange, |
| | | } |
| | | |
| | | return ( |
| | | <div className='VisitWorkBench'> |
| | | <div className='VisitWorkBench' > |
| | | <div className='VisitWorkBench-top'> |
| | | <span style={{ fontWeight: 600 }}>工作总览</span> |
| | | <div className='VisitWorkBench-top-list'> |
| | |
| | | } |
| | | </div> |
| | | </div> |
| | | <div className='VisitWorkBench-middle'> |
| | | <div |
| | | className='VisitWorkBench-middle' |
| | | onKeyUp={(e) => { |
| | | if (e.key === 'Enter') { |
| | | handleSubmit() |
| | | } |
| | | }} |
| | | > |
| | | <Tabs |
| | | activeTab={searchData.status} |
| | | onChange={handleColumnType} |
| | |
| | | } |
| | | > |
| | | <Typography.Paragraph key={item.value}> |
| | | {tabActivekey == 5 && |
| | | {tabActivekey == '5' && |
| | | <Radio.Group |
| | | type='button' |
| | | value={searchData.type} |
| | |
| | | /> |
| | | } |
| | | <TableView |
| | | columns={tabActivekey == 5 ? item.columnsMap[searchData.type] : item.columns} |
| | | rowSelection={tabActivekey == '2' && item.value === '1' ? rowSelection : null} |
| | | columns={tabActivekey == '5' ? item.columnsMap[searchData.type] : item.columns} |
| | | dataSource={tableData} |
| | | size="small" |
| | | rowKey="caseId" |
| | |
| | | scroll={{ |
| | | x: 1300 |
| | | }} |
| | | offsetHeight={153} |
| | | offsetHeight={161} |
| | | loading={loading} |
| | | pagination={{ |
| | | current: pageData.page, |
| | |
| | | }} |
| | | /> |
| | | </Typography.Paragraph> |
| | | { |
| | | (tabActivekey == '2' && item.value === '1') && <div className='VisitWorkBench-middle-select'> |
| | | <span>已选{selectedRowKeys.length}项</span> |
| | | <span className='linkBtnColor' onClick={() => { |
| | | setSelectedRowKeys([]) |
| | | setSelectedRows([]) |
| | | }}>取消</span> |
| | | <span className='linkBtnColor' onClick={handleBatchQs}>批量签收</span> |
| | | </div> |
| | | } |
| | | </TabPane> |
| | | })} |
| | | </Tabs> |
| | | <div className='VisitWorkBench-middle-search'> |
| | | <Form |
| | | ref={formRef} |
| | | layout="vertical" |
| | | > |
| | | <div style={{ display: 'flex' }}> |
| | | <FormItem |
| | | label=' ' |
| | | field='time' |
| | | > |
| | | <RangePicker |
| | | style={{ width: '100%' }} |
| | | format='YYYY-MM-DD HH:mm' |
| | | showTime={true} |
| | | /> |
| | | </FormItem> |
| | | <FormItem |
| | | label=' ' |
| | | field='partyName' |
| | | > |
| | | <Input |
| | | allowClear |
| | | placeholder='查询申请方/被申请方关键词' |
| | | /> |
| | | </FormItem> |
| | | <Button |
| | | type="primary" |
| | | className="dialogPrimary" |
| | | onClick={handleSubmit} |
| | | > |
| | | 查询 |
| | | </Button> |
| | | </div> |
| | | </Form> |
| | | </div> |
| | | </div> |
| | | <div className='VisitWorkBench-bottom'> |
| | | 群众来访接待 |
| | | <div style={{ display: 'flex', justifyContent: 'space-evenly',gap:'24px',marginTop:'16px' }}> |
| | | <div style={{ display: 'flex', justifyContent: 'space-evenly', gap: '24px', marginTop: '16px' }}> |
| | | <div className='bottomTab1' onClick={() => navigate(`/mediate/visit`)}> |
| | | <div className='VisitWorkBench-bottom-title' style={{ color: '#206BCD' }}>大厅来访</div> |
| | | <div className='VisitWorkBench-bottom-title' style={{ color: '#206BCD' }}>大厅来访</div> |
| | | {/* <img src={visitInto} alt='' className='VisitWorkBench-bottom-img' /> */} |
| | | </div> |
| | | <div className='bottomTab2'> |