forked from gzzfw/frontEnd/gzDyh

liuwh
2024-09-14 221546808c11df777199def992e4abbf1fc31b5a
gz-customerSystem/src/views/register/index.jsx
@@ -1,22 +1,25 @@
/*
 * @Author: dminyi 1301963064@qq.com
 * @Date: 2024-09-08 15:14:12
 * @LastEditors: dminyi 1301963064@qq.com
 * @LastEditTime: 2024-09-12 15:42:34
 * @LastEditors: lwh
 * @LastEditTime: 2024-09-13 10:35:03
 * @FilePath: \gzDyh\gz-customerSystem\src\views\register\index.jsx
 * @Description: 工作台
 */
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) {
@@ -58,13 +61,14 @@
  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();
  // 静态数据
  //分派表头
@@ -73,7 +77,7 @@
      title: '流转时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
      width: 150,
    },
    {
      title: '分派时限',
@@ -121,7 +125,7 @@
      title: '流转时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
      width: 150,
    },
    {
      title: '签收时限',
@@ -136,7 +140,7 @@
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 80,
      width: 100,
    },
    {
      title: '事项来源',
@@ -169,7 +173,7 @@
      title: '流转时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
      width: 150,
    },
    {
      title: '受理时限',
@@ -184,7 +188,7 @@
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 80,
      width: 100,
    },
    {
      title: '事项来源',
@@ -567,14 +571,14 @@
      },
      tabList: [
        {
          value: '0',
          value: '2',
          label: '办理中',
          columns: [
            {
              title: '流转时间',
              dataIndex: 'turnaroundTime',
              key: 'turnaroundTime',
              width: 100,
              width: 150,
            },
            {
              title: '已办天数',
@@ -646,14 +650,14 @@
          ]
        },
        {
          value: '1',
          value: '0',
          label: '结案申请',
          columns: [
            {
              title: '结案申请时间',
              dataIndex: 'turnaroundTime',
              key: 'turnaroundTime',
              width: 180,
              width: 150,
            },
            {
              title: '事项等级',
@@ -718,7 +722,7 @@
          ]
        },
        {
          value: '2',
          value: '1',
          label: '已结案',
          columns: [
            {
@@ -844,7 +848,7 @@
              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>
              ),
            }]),
@@ -935,7 +939,7 @@
              title: '督办时间',
              dataIndex: 'turnaroundTime',
              key: 'turnaroundTime',
              width: 100,
              width: 150,
            },
            {
              title: '回复时限',
@@ -950,7 +954,7 @@
              title: '督办部门',
              dataIndex: 'caseGrade',
              key: 'caseGrade',
              width: 80,
              width: 110,
            },
            {
              title: '督办意见',
@@ -1016,7 +1020,7 @@
              title: '督办部门',
              dataIndex: 'caseGrade',
              key: 'caseGrade',
              width: 80,
              width: 110,
            },
            {
              title: '督办意见',
@@ -1094,6 +1098,8 @@
  })
  const [total, setTotal] = useState(0);//表格数据总数量
  const [loading, setLoading] = useState(false);//表格loading
  const [selectedRowKeys, setSelectedRowKeys] = useState([]);//批量签收的id
  const [selectedRows, setSelectedRows] = useState([]);//批量签收的数据
  useEffect(() => {
    getCountData();
@@ -1103,13 +1109,20 @@
    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();
      getTableData(tabActivekey)
      navigate(`/mediate/visit/eventFlow?caseTaskId=${ownerId}&caseId=${caseId}`)
    }
  }
@@ -1138,7 +1151,7 @@
        break;
      case '4'://办理中
        const { status, ...most } = searchData
        if (status && status === '0') {
        if (status && status === '2') {
          res = await pageMyTaskBlzApi({
            ...pageData,
            ...most
@@ -1191,7 +1204,13 @@
        status: '0',
        type: 1
      })
    } else if (key == '4' || key == '6') {
    } else if (key == '4') {
      setSearchData({
        sortType: 1,
        sortColmn: 1,
        status: '2',
      })
    } else if (key == '6') {
      setSearchData({
        sortType: 1,
        sortColmn: 1,
@@ -1206,13 +1225,14 @@
    }
    setTabActivekey(key);
    setTableTab(data.tabList)
    getCountData();
  }
  //获取工作总览数据
  const getCountData = async () => {
    const res = await getCountListApi()
    if (res.type) {
      const data = res.data
      const data = res.data || {};
      setCountData(data)
    }
  }
@@ -1245,8 +1265,48 @@
    }
  }
  //查询
  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'>
@@ -1272,7 +1332,14 @@
          }
        </div>
      </div>
      <div className='VisitWorkBench-middle'>
      <div
        className='VisitWorkBench-middle'
        onKeyUp={(e) => {
          if (e.key === 'Enter') {
            handleSubmit()
          }
        }}
      >
        <Tabs
          activeTab={searchData.status}
          onChange={handleColumnType}
@@ -1287,8 +1354,8 @@
                </span>
              }
            >
              <Typography.Paragraph key={item.value}>
                {tabActivekey == 5 &&
              <Typography.Paragraph key={tabActivekey + item.value}>
                {tabActivekey == '5' &&
                  <Radio.Group
                    type='button'
                    value={searchData.type}
@@ -1315,7 +1382,8 @@
                  />
                }
                <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"
@@ -1340,15 +1408,60 @@
                  }}
                />
              </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'>