|
@@ -1,8 +1,22 @@
|
|
import { RootState } from "@/store";
|
|
import { RootState } from "@/store";
|
|
-import { getBarrageListAPI } from "@/store/action/B4Barrage";
|
|
|
|
-import { Input, DatePicker, Select, Button } from "antd";
|
|
|
|
-import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
|
|
|
|
+import {
|
|
|
|
+ barrageAuditAPI,
|
|
|
|
+ barrageGetConfigAPI,
|
|
|
|
+ barrageGetUnauditedAPI,
|
|
|
|
+ barrageRemoveAPI,
|
|
|
|
+ getBarrageListAPI,
|
|
|
|
+} from "@/store/action/B4Barrage";
|
|
|
|
+import { BarrageTableType } from "@/types";
|
|
|
|
+import { Input, DatePicker, Select, Button, Table, Popconfirm } from "antd";
|
|
|
|
+import React, {
|
|
|
|
+ useCallback,
|
|
|
|
+ useEffect,
|
|
|
|
+ useMemo,
|
|
|
|
+ useRef,
|
|
|
|
+ useState,
|
|
|
|
+} from "react";
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
|
|
+import BarrageSet from "./BarrageSet";
|
|
import styles from "./index.module.scss";
|
|
import styles from "./index.module.scss";
|
|
const { RangePicker } = DatePicker;
|
|
const { RangePicker } = DatePicker;
|
|
|
|
|
|
@@ -11,6 +25,24 @@ function Barrage() {
|
|
const pageNumRef = useRef(1);
|
|
const pageNumRef = useRef(1);
|
|
const pagePageRef = useRef(10);
|
|
const pagePageRef = useRef(10);
|
|
|
|
|
|
|
|
+ // 进页面获取弹幕管未审核个数
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ dispatch(barrageGetUnauditedAPI());
|
|
|
|
+ }, [dispatch]);
|
|
|
|
+
|
|
|
|
+ const [barrageValue, setBarrageValue] = useState(false);
|
|
|
|
+
|
|
|
|
+ // 进页面获取弹幕功能设置信息
|
|
|
|
+ const getBarrageSetFu = useCallback(async () => {
|
|
|
|
+ const res = await barrageGetConfigAPI();
|
|
|
|
+ const dataRes = JSON.parse(res.data.content);
|
|
|
|
+ setBarrageValue(dataRes.value);
|
|
|
|
+ }, []);
|
|
|
|
+
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ getBarrageSetFu();
|
|
|
|
+ }, [getBarrageSetFu]);
|
|
|
|
+
|
|
// 从仓库获取表格列表信息
|
|
// 从仓库获取表格列表信息
|
|
const tableInfo = useSelector(
|
|
const tableInfo = useSelector(
|
|
(state: RootState) => state.barrageReducer.tableInfo
|
|
(state: RootState) => state.barrageReducer.tableInfo
|
|
@@ -18,15 +50,15 @@ function Barrage() {
|
|
|
|
|
|
// 顶部筛选
|
|
// 顶部筛选
|
|
const [tableSelect, setTableSelect] = useState({
|
|
const [tableSelect, setTableSelect] = useState({
|
|
- name: "",
|
|
|
|
- name2: "",
|
|
|
|
- name3: "",
|
|
|
|
- startTime: "",
|
|
|
|
- endTime: "",
|
|
|
|
- startTime2: "",
|
|
|
|
- endTime2: "",
|
|
|
|
- topic: -1,
|
|
|
|
|
|
+ searchKey: "",
|
|
|
|
+ barrageStartTime: "",
|
|
|
|
+ barrageEndTime: "",
|
|
|
|
+ authorName: "",
|
|
|
|
+ auditName: "",
|
|
|
|
+ status: -1,
|
|
display: -1,
|
|
display: -1,
|
|
|
|
+ auditStartTime: "",
|
|
|
|
+ auditEndTime: "",
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
});
|
|
});
|
|
@@ -36,7 +68,7 @@ function Barrage() {
|
|
const getList = useCallback(async () => {
|
|
const getList = useCallback(async () => {
|
|
const data = {
|
|
const data = {
|
|
...tableSelect,
|
|
...tableSelect,
|
|
- topic: tableSelect.topic === -1 ? null : tableSelect.topic,
|
|
|
|
|
|
+ status: tableSelect.status === -1 ? null : tableSelect.status,
|
|
display: tableSelect.display === -1 ? null : tableSelect.display,
|
|
display: tableSelect.display === -1 ? null : tableSelect.display,
|
|
pageNum: pageNumRef.current,
|
|
pageNum: pageNumRef.current,
|
|
};
|
|
};
|
|
@@ -61,7 +93,7 @@ function Barrage() {
|
|
nameTime.current = window.setTimeout(() => {
|
|
nameTime.current = window.setTimeout(() => {
|
|
setTableSelect({
|
|
setTableSelect({
|
|
...tableSelect,
|
|
...tableSelect,
|
|
- name: e.target.value,
|
|
|
|
|
|
+ searchKey: e.target.value,
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
});
|
|
});
|
|
}, 500);
|
|
}, 500);
|
|
@@ -71,13 +103,18 @@ function Barrage() {
|
|
|
|
|
|
// 弹幕日期的改变
|
|
// 弹幕日期的改变
|
|
const barrageTimeChange = (date: any, dateString: any) => {
|
|
const barrageTimeChange = (date: any, dateString: any) => {
|
|
- let startTime2 = "";
|
|
|
|
- let endTime2 = "";
|
|
|
|
|
|
+ let barrageStartTime = "";
|
|
|
|
+ let barrageEndTime = "";
|
|
if (dateString[0] && dateString[1]) {
|
|
if (dateString[0] && dateString[1]) {
|
|
- startTime2 = dateString[0] + " 00:00:00";
|
|
|
|
- endTime2 = dateString[1] + " 23:59:59";
|
|
|
|
|
|
+ barrageStartTime = dateString[0] + " 00:00:00";
|
|
|
|
+ barrageEndTime = dateString[1] + " 23:59:59";
|
|
}
|
|
}
|
|
- setTableSelect({ ...tableSelect, startTime2, endTime2, pageNum: 1 });
|
|
|
|
|
|
+ setTableSelect({
|
|
|
|
+ ...tableSelect,
|
|
|
|
+ barrageStartTime,
|
|
|
|
+ barrageEndTime,
|
|
|
|
+ pageNum: 1,
|
|
|
|
+ });
|
|
};
|
|
};
|
|
|
|
|
|
// 作者称呼的输入
|
|
// 作者称呼的输入
|
|
@@ -88,7 +125,7 @@ function Barrage() {
|
|
nameTime2.current = window.setTimeout(() => {
|
|
nameTime2.current = window.setTimeout(() => {
|
|
setTableSelect({
|
|
setTableSelect({
|
|
...tableSelect,
|
|
...tableSelect,
|
|
- name2: e.target.value,
|
|
|
|
|
|
+ authorName: e.target.value,
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
});
|
|
});
|
|
}, 500);
|
|
}, 500);
|
|
@@ -104,7 +141,7 @@ function Barrage() {
|
|
nameTime3.current = window.setTimeout(() => {
|
|
nameTime3.current = window.setTimeout(() => {
|
|
setTableSelect({
|
|
setTableSelect({
|
|
...tableSelect,
|
|
...tableSelect,
|
|
- name3: e.target.value,
|
|
|
|
|
|
+ auditName: e.target.value,
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
});
|
|
});
|
|
}, 500);
|
|
}, 500);
|
|
@@ -114,13 +151,18 @@ function Barrage() {
|
|
|
|
|
|
// 审核日期的改变
|
|
// 审核日期的改变
|
|
const timeChange = (date: any, dateString: any) => {
|
|
const timeChange = (date: any, dateString: any) => {
|
|
- let startTime = "";
|
|
|
|
- let endTime = "";
|
|
|
|
|
|
+ let auditStartTime = "";
|
|
|
|
+ let auditEndTime = "";
|
|
if (dateString[0] && dateString[1]) {
|
|
if (dateString[0] && dateString[1]) {
|
|
- startTime = dateString[0] + " 00:00:00";
|
|
|
|
- endTime = dateString[1] + " 23:59:59";
|
|
|
|
|
|
+ auditStartTime = dateString[0] + " 00:00:00";
|
|
|
|
+ auditEndTime = dateString[1] + " 23:59:59";
|
|
}
|
|
}
|
|
- setTableSelect({ ...tableSelect, startTime, endTime, pageNum: 1 });
|
|
|
|
|
|
+ setTableSelect({
|
|
|
|
+ ...tableSelect,
|
|
|
|
+ auditStartTime,
|
|
|
|
+ auditEndTime,
|
|
|
|
+ pageNum: 1,
|
|
|
|
+ });
|
|
};
|
|
};
|
|
|
|
|
|
// 点击重置
|
|
// 点击重置
|
|
@@ -129,20 +171,139 @@ function Barrage() {
|
|
// 把2个输入框和时间选择器清空
|
|
// 把2个输入框和时间选择器清空
|
|
setInputKey(Date.now());
|
|
setInputKey(Date.now());
|
|
setTableSelect({
|
|
setTableSelect({
|
|
- name: "",
|
|
|
|
- name2: "",
|
|
|
|
- name3: "",
|
|
|
|
- startTime: "",
|
|
|
|
- endTime: "",
|
|
|
|
- startTime2: "",
|
|
|
|
- endTime2: "",
|
|
|
|
- topic: -1,
|
|
|
|
|
|
+ searchKey: "",
|
|
|
|
+ barrageStartTime: "",
|
|
|
|
+ barrageEndTime: "",
|
|
|
|
+ authorName: "",
|
|
|
|
+ auditName: "",
|
|
|
|
+ status: -1,
|
|
display: -1,
|
|
display: -1,
|
|
|
|
+ auditStartTime: "",
|
|
|
|
+ auditEndTime: "",
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
});
|
|
});
|
|
}, []);
|
|
}, []);
|
|
|
|
|
|
|
|
+ // -----------表格数据
|
|
|
|
+
|
|
|
|
+ // 采纳状态的下拉框返回值
|
|
|
|
+ const tableSelectRes = useCallback((status: number) => {
|
|
|
|
+ const arr = [
|
|
|
|
+ { value: 1, label: "采纳" },
|
|
|
|
+ { value: 0, label: "不采纳" },
|
|
|
|
+ ];
|
|
|
|
+ if (status !== 2) arr.unshift({ value: -1, label: "请选择" });
|
|
|
|
+ return arr;
|
|
|
|
+ }, []);
|
|
|
|
+
|
|
|
|
+ // 采纳状态的下拉选择
|
|
|
|
+ const tableSelectFu = useCallback(
|
|
|
|
+ async (id: number, val: number) => {
|
|
|
|
+ const res = await barrageAuditAPI(id, val);
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
+ getList();
|
|
|
|
+ dispatch(barrageGetUnauditedAPI());
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ [dispatch, getList]
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ // 点击删除
|
|
|
|
+ const delTableFu = useCallback(
|
|
|
|
+ async (id: number) => {
|
|
|
|
+ const res = await barrageRemoveAPI(id);
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
+ getList();
|
|
|
|
+ dispatch(barrageGetUnauditedAPI());
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ [dispatch, getList]
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ const columns = useMemo(() => {
|
|
|
|
+ return [
|
|
|
|
+ {
|
|
|
|
+ title: "弹幕内容",
|
|
|
|
+ render: (item: BarrageTableType) =>
|
|
|
|
+ item.name.length >= 30 ? (
|
|
|
|
+ <span style={{ cursor: "pointer" }} title={item.name}>
|
|
|
|
+ {item.name.substring(0, 30) + "..."}
|
|
|
|
+ </span>
|
|
|
|
+ ) : (
|
|
|
|
+ item.name
|
|
|
|
+ ),
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "关联文物",
|
|
|
|
+ dataIndex: "goodsName",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "弹幕时间",
|
|
|
|
+ dataIndex: "createTime",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "作者称呼",
|
|
|
|
+ dataIndex: "authorName",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "审核状态",
|
|
|
|
+ render: (item: BarrageTableType) =>
|
|
|
|
+ item.status === 2 ? "已审核" : "待审核",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "采纳状态",
|
|
|
|
+ render: (item: BarrageTableType) => (
|
|
|
|
+ <Select
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ style={{ width: 90 }}
|
|
|
|
+ value={item.display}
|
|
|
|
+ onChange={(e) => tableSelectFu(item.id, e)}
|
|
|
|
+ options={tableSelectRes(item.status)}
|
|
|
|
+ />
|
|
|
|
+ ),
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "最近审核时间",
|
|
|
|
+ render: (item: BarrageTableType) =>
|
|
|
|
+ item.status === 2 ? item.updateTime : "(空)",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "审核人",
|
|
|
|
+ render: (item: BarrageTableType) =>
|
|
|
|
+ item.status === 2 ? item.auditName : "(空)",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "操作",
|
|
|
|
+ render: (item: BarrageTableType) => (
|
|
|
|
+ <Popconfirm
|
|
|
|
+ title="删除后无法恢复,是否删除?"
|
|
|
|
+ okText="删除"
|
|
|
|
+ cancelText="取消"
|
|
|
|
+ onConfirm={() => delTableFu(item.id)}
|
|
|
|
+ >
|
|
|
|
+ <Button size="small" type="text" danger>
|
|
|
|
+ 删除
|
|
|
|
+ </Button>
|
|
|
|
+ </Popconfirm>
|
|
|
|
+ ),
|
|
|
|
+ },
|
|
|
|
+ ];
|
|
|
|
+ }, [delTableFu, tableSelectFu, tableSelectRes]);
|
|
|
|
+
|
|
|
|
+ // 页码变化
|
|
|
|
+ const paginationChange = useCallback(
|
|
|
|
+ () => (pageNum: number, pageSize: number) => {
|
|
|
|
+ pageNumRef.current = pageNum;
|
|
|
|
+ pagePageRef.current = pageSize;
|
|
|
|
+ setTableSelect({ ...tableSelect, pageNum, pageSize });
|
|
|
|
+ },
|
|
|
|
+ [tableSelect]
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ // 弹幕功能设置的弹窗
|
|
|
|
+ const [barrageSet, setBarrageSet] = useState(0);
|
|
|
|
+
|
|
return (
|
|
return (
|
|
<div className={styles.Barrage}>
|
|
<div className={styles.Barrage}>
|
|
<div className="pageTitlt">弹幕管理</div>
|
|
<div className="pageTitlt">弹幕管理</div>
|
|
@@ -201,9 +362,9 @@ function Barrage() {
|
|
<Select
|
|
<Select
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
style={{ width: 90 }}
|
|
style={{ width: 90 }}
|
|
- value={tableSelect.topic}
|
|
|
|
|
|
+ value={tableSelect.status}
|
|
onChange={(e) =>
|
|
onChange={(e) =>
|
|
- setTableSelect({ ...tableSelect, topic: e, pageNum: 1 })
|
|
|
|
|
|
+ setTableSelect({ ...tableSelect, status: e, pageNum: 1 })
|
|
}
|
|
}
|
|
options={[
|
|
options={[
|
|
{ value: -1, label: "全部" },
|
|
{ value: -1, label: "全部" },
|
|
@@ -224,7 +385,7 @@ function Barrage() {
|
|
options={[
|
|
options={[
|
|
{ value: -1, label: "全部" },
|
|
{ value: -1, label: "全部" },
|
|
{ value: 1, label: "采纳" },
|
|
{ value: 1, label: "采纳" },
|
|
- { value: 2, label: "不采纳" },
|
|
|
|
|
|
+ { value: 0, label: "不采纳" },
|
|
]}
|
|
]}
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
@@ -240,10 +401,38 @@ function Barrage() {
|
|
{/* 按钮 */}
|
|
{/* 按钮 */}
|
|
<div className="searchBtn">
|
|
<div className="searchBtn">
|
|
<Button onClick={resetSelectFu}>重置</Button> 
|
|
<Button onClick={resetSelectFu}>重置</Button> 
|
|
- <Button>弹幕功能设置(当前:关闭)</Button>
|
|
|
|
|
|
+ <Button onClick={() => setBarrageSet(1)}>
|
|
|
|
+ 弹幕功能设置(当前:{barrageValue ? "开启" : "关闭"})
|
|
|
|
+ </Button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ {/* 表格主体 */}
|
|
|
|
+ <div className="tableBox">
|
|
|
|
+ <Table
|
|
|
|
+ scroll={{ y: 580 }}
|
|
|
|
+ dataSource={tableInfo.list}
|
|
|
|
+ columns={columns}
|
|
|
|
+ rowKey="id"
|
|
|
|
+ pagination={{
|
|
|
|
+ showQuickJumper: true,
|
|
|
|
+ position: ["bottomCenter"],
|
|
|
|
+ showSizeChanger: true,
|
|
|
|
+ current: tableSelect.pageNum,
|
|
|
|
+ pageSize: tableSelect.pageSize,
|
|
|
|
+ total: tableInfo.total,
|
|
|
|
+ onChange: paginationChange(),
|
|
|
|
+ }}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ {barrageSet ? (
|
|
|
|
+ <BarrageSet
|
|
|
|
+ closeMoalFu={() => setBarrageSet(0)}
|
|
|
|
+ barrageValue={barrageValue}
|
|
|
|
+ upBarrageFu={() => getBarrageSetFu()}
|
|
|
|
+ />
|
|
|
|
+ ) : null}
|
|
</div>
|
|
</div>
|
|
);
|
|
);
|
|
}
|
|
}
|