|
@@ -1,9 +1,139 @@
|
|
|
-import React from 'react'
|
|
|
+import React, { useCallback, useEffect, useMemo, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
+import { useDispatch, useSelector } from 'react-redux'
|
|
|
+import { A2FromDataType, A2SelectData, A2tableType } from './data'
|
|
|
+import { A2_APIdel, A2_APIgetList } from '@/store/action/A2message'
|
|
|
+import { RootState } from '@/store'
|
|
|
+import { Button, Select } from 'antd'
|
|
|
+import MyTable from '@/components/MyTable'
|
|
|
+import { A2tableC } from '@/utils/tableData'
|
|
|
+import A2audit from './A2audit'
|
|
|
+import { MessageFu } from '@/utils/message'
|
|
|
+import MyPopconfirm from '@/components/MyPopconfirm'
|
|
|
+
|
|
|
+const baseFromData: A2FromDataType = {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ status: ''
|
|
|
+}
|
|
|
+
|
|
|
function A2message() {
|
|
|
+ const dispatch = useDispatch()
|
|
|
+
|
|
|
+ const [fromData, setFromData] = useState(baseFromData)
|
|
|
+
|
|
|
+ const getListFu = useCallback(() => {
|
|
|
+ dispatch(A2_APIgetList(fromData))
|
|
|
+ }, [dispatch, fromData])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ getListFu()
|
|
|
+ }, [getListFu])
|
|
|
+
|
|
|
+ const tableInfo = useSelector((state: RootState) => state.A2message.tableInfo)
|
|
|
+
|
|
|
+ const delTableFu = useCallback(
|
|
|
+ async (id: number) => {
|
|
|
+ const res = await A2_APIdel(id)
|
|
|
+ if (res.code === 0) {
|
|
|
+ MessageFu.success('删除成功!')
|
|
|
+ getListFu()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ [getListFu]
|
|
|
+ )
|
|
|
+
|
|
|
+ const tableLastBtn = useMemo(() => {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ title: '简介',
|
|
|
+ width: 700,
|
|
|
+ render: (item: A2tableType) => {
|
|
|
+ const txt = item.content
|
|
|
+ return txt ? (
|
|
|
+ txt.length > 100 ? (
|
|
|
+ <span className='A1Tit' title={txt}>
|
|
|
+ {txt.substring(0, 100)}...
|
|
|
+ </span>
|
|
|
+ ) : (
|
|
|
+ txt
|
|
|
+ )
|
|
|
+ ) : (
|
|
|
+ '(空)'
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '审批状态',
|
|
|
+ width: 120,
|
|
|
+ render: (item: A2tableType) => (
|
|
|
+ <Button
|
|
|
+ size='small'
|
|
|
+ type='text'
|
|
|
+ onClick={() => setAuditSta({ sta: item.status, id: item.id })}
|
|
|
+ >
|
|
|
+ {A2SelectData.find(v => v.value === item.status)?.label}
|
|
|
+ </Button>
|
|
|
+ )
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ width: 120,
|
|
|
+ render: (item: A2tableType) => (
|
|
|
+ <MyPopconfirm txtK='删除' onConfirm={() => delTableFu(item.id)} />
|
|
|
+ )
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }, [delTableFu])
|
|
|
+
|
|
|
+ // 审批页面
|
|
|
+ const [auditSta, setAuditSta] = useState({ sta: -1, id: 0 })
|
|
|
+
|
|
|
return (
|
|
|
<div className={styles.A2message}>
|
|
|
<div className='pageTitle'>留言管理</div>
|
|
|
+
|
|
|
+ {/* 顶部筛选 */}
|
|
|
+ <div className='A2top'>
|
|
|
+ <div className='A2topLeft'>
|
|
|
+ <div>
|
|
|
+ 审批状态:
|
|
|
+ <Select
|
|
|
+ style={{ width: 200 }}
|
|
|
+ placeholder='全部'
|
|
|
+ value={fromData.status ? fromData.status : null}
|
|
|
+ options={A2SelectData}
|
|
|
+ onChange={e => setFromData({ ...fromData, status: e, pageNum: 1 })}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div></div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 表格主体 */}
|
|
|
+ <div className='A2tableBox'>
|
|
|
+ <MyTable
|
|
|
+ yHeight={645}
|
|
|
+ list={tableInfo.list}
|
|
|
+ columnsTemp={A2tableC}
|
|
|
+ lastBtn={tableLastBtn}
|
|
|
+ pageNum={fromData.pageNum}
|
|
|
+ pageSize={fromData.pageSize}
|
|
|
+ total={tableInfo.total}
|
|
|
+ onChange={(pageNum, pageSize) => setFromData({ ...fromData, pageNum, pageSize })}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 审批页面 */}
|
|
|
+ {auditSta.id ? (
|
|
|
+ <A2audit
|
|
|
+ state={auditSta.sta}
|
|
|
+ sId={auditSta.id}
|
|
|
+ closeFu={() => setAuditSta({ sta: -1, id: 0 })}
|
|
|
+ succFu={getListFu}
|
|
|
+ />
|
|
|
+ ) : null}
|
|
|
</div>
|
|
|
)
|
|
|
}
|