广州市综治平台前端
xusd
1 days ago bdeacb9f02dfa74bac74296a4a2c989a8e0d45ff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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 { Tabs } from '@arco-design/web-react';
import { examine, Matter, applyRecord } from '@/assets/images'
import EventFlow from '../eventFlow/component/EventFlow';
import ApplyInfo from "../matterDetail/ApplyInfo";
import ReviewExamine from './component/ReviewExamine';
 
const TabPane = Tabs.TabPane;
 
function getTabButton(caseTaskId) {
    return $$.ax.request({ url: `caseTask/getTabButton?caseTaskId=${caseTaskId}`, type: 'get', service: 'mediate' });
}
 
const myTab = [
    {
        img: Matter,
        label: '详情',
        key: 'dslxq',
    },
    {
        img: Matter,
        label: '事项详情',
        key: 'sxxq',
    },
    {
        img: applyRecord,
        label: '申请记录',
        key: 'sqjl',
    },
    {
        img: examine,
        label: '结案审核',
        key: 'jash',
    },
]
const ClosingReview = () => {
    const caseId = $$.getQueryString('caseId')
    const caseTaskId = $$.getQueryString('caseTaskId')
    const moutedTab = $$.getQueryString('moutedTab')
    const [authorData, setAuthorData] = useState({});
    const [tabsList, setTabsList] = useState([]);
    const [tabsActive, setTabsActive] = useState();
 
    useEffect(() => {
        getAuthor();
    }, [])
 
    //获取权限tab和按钮权限
    const getAuthor = async () => {
        const res = await getTabButton(caseTaskId)
        if (res.type) {
            const { tabList } = res.data
            setAuthorData({
                ...res.data,
                buttonList: res.data.buttonList.filter(item => {
                    return item.id != 'tabcl' && item.id != 'xqcl'
                })
            })
            if (tabList.length === 0) {
                //没有tab就不展示
            } else {
                const list = myTab.filter(item => {
          const flag = tabList.some(result => {
            if (result.id === item.key) {
              return true
            }
          })
          return flag
        }).map(item => {
          const data = tabList.find(res => res.id == item.key)
          return {
            ...item,
            label: data.name
          }
        })
        setTabsList(list)
        setTabsActive(moutedTab || list[0].key)
            }
        }
    }
 
    //根据id定义组件
    const getTypeDom = (key) => {
        if (key === 'dslxq' || key === 'sxxq') {
            return <EventFlow authorData={authorData} caseId={caseId} />
        }
        if (key === 'sqjl') {
            return <ApplyInfo caseId={caseId}/>
        }
        if (key === 'jash') {
            return <ReviewExamine caseTaskId={caseTaskId} caseId={caseId} />
        }
    }
 
    return (
        <div style={{ position: 'relative' }}>
            <NewPage
                pageHead={
                    { breadcrumbData: [{ title: '工作台' }, { title: '事件中心' }], title: '处理' }
                }
            >
                <Tabs
                    onChange={(v) => setTabsActive(v)}
                    className='myTabContent'
                    activeTab={tabsActive}
                >
                    {tabsList?.map(item => {
                        return <TabPane
                            key={item.key}
                            title={
                                <span>
                                    {tabsActive === item.key && <img src={item.img} alt="" style={{ width: '16px', height: '16px', margin: '-5px 12px 0px 0px' }} />}
                                    <span style={{ fontSize: '16px' }}>{item.label}</span>
                                </span>
                            }
                        >
                            {getTypeDom(item.key)}
                        </TabPane>
                    })}
                </Tabs>
            </NewPage>
        </div>
    )
}
 
export default ClosingReview;