|
|
@ -1,6 +1,7 @@ |
|
|
|
import React, { useEffect, useRef, useState } from 'react'; |
|
|
|
import { connect } from 'react-redux'; |
|
|
|
import { Skeleton, Button, Pagination, Form, Popconfirm, Table, Tooltip } from '@douyinfe/semi-ui'; |
|
|
|
import { IconSearch } from '@douyinfe/semi-icons'; |
|
|
|
import { SkeletonScreen, } from "$components"; |
|
|
|
import moment from "moment"; |
|
|
|
import PushModal from '../components/pushModal' |
|
|
@ -30,6 +31,7 @@ const EmPush = (props) => { |
|
|
|
const [appArr, setAppArr] = useState([]) //修改时添加应用 |
|
|
|
const [bindId, setBindId] = useState() //修改时绑定的id |
|
|
|
const [tableKey, setTableKey] = useState([]) //修改时绑定的id |
|
|
|
const [editObj, setEditObj] = useState({});//管理员弹框修改内容 |
|
|
|
const [projectStatus, setProjectStatus] = useState([]); //获取项目状态列表 |
|
|
|
const page = useRef(query.page);//哪一页 |
|
|
|
const EMPUSH = "empush"; |
|
|
@ -37,9 +39,9 @@ const EmPush = (props) => { |
|
|
|
{ |
|
|
|
title: '推送信息', |
|
|
|
list: [ |
|
|
|
{ name: "关联项目", value: "projectName" }, |
|
|
|
{ name: "策略名称", value: "name" }, |
|
|
|
{ name: "创建时间", value: "createTime" }, |
|
|
|
{ name: "关联项目", value: "projectName" }, |
|
|
|
{ name: "接收人", value: "receiverPepUser" }, |
|
|
|
{ name: "推送方式", value: "pushType" }, |
|
|
|
{ name: "监听问题模块", value: "alarmType" }, |
|
|
@ -77,7 +79,6 @@ const EmPush = (props) => { |
|
|
|
return {}; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
const [tableData, setTableData] = useState([]) //表格数据 |
|
|
|
|
|
|
|
useEffect(() => { |
|
|
@ -91,31 +92,28 @@ const EmPush = (props) => { |
|
|
|
// dispatch(install.getProjectAppList(query)).then((res) => {//获取应用列表 |
|
|
|
// setAppList(res.payload.data) |
|
|
|
// }) |
|
|
|
getProjectStatusList() |
|
|
|
localStorage.getItem(EMPUSH) == null |
|
|
|
? localStorage.setItem( |
|
|
|
EMPUSH, |
|
|
|
JSON.stringify(['name', 'createTime', 'projectName', 'receiverPepUser', 'alarmType', 'timeType', 'tactics', 'disable']) |
|
|
|
JSON.stringify(['projectName', 'name', 'createTime', 'receiverPepUser', 'alarmType', 'timeType', 'tactics', 'disable']) |
|
|
|
) |
|
|
|
: ""; |
|
|
|
attribute(); |
|
|
|
getProjectStatusList() |
|
|
|
}, []) |
|
|
|
useEffect(() => { |
|
|
|
getPushList(); |
|
|
|
}, [query]); |
|
|
|
|
|
|
|
function getPushList () { |
|
|
|
dispatch(service.getPush(query)).then((res) => {//获取已绑定项目 |
|
|
|
let val = form.current.getValues() |
|
|
|
// , ...query |
|
|
|
dispatch(service.getPush({ ...val })).then((res) => {//获取已绑定项目 |
|
|
|
if (res.success) { |
|
|
|
// let mytableData = JSON.parse(JSON.stringify(res.payload.data.rows)); |
|
|
|
// let mytableKey = [] |
|
|
|
// for (let index = 0; index < mytableData.length; index++) { |
|
|
|
// mytableData[index].key = mytableData[index].id |
|
|
|
// mytableKey.push(mytableData[index].id) |
|
|
|
// } |
|
|
|
// setTableKey(mytableKey) |
|
|
|
// setTableData(mytableData) |
|
|
|
setTableData(res.payload.data) |
|
|
|
let mytableData = JSON.parse(JSON.stringify(res.payload.data)); |
|
|
|
for (let index = 0; index < mytableData.length; index++) { |
|
|
|
mytableData[index].key = String(mytableData[index].id) |
|
|
|
} |
|
|
|
setTableData(mytableData) |
|
|
|
setLimits(res.payload.data.length) |
|
|
|
mylimits.current = res.payload.data.length |
|
|
|
} |
|
|
@ -125,13 +123,14 @@ const EmPush = (props) => { |
|
|
|
dispatch(service.getProjectStatus()).then((res) => { |
|
|
|
if (res.success) { |
|
|
|
setProjectStatus(res.payload?.data) |
|
|
|
attribute(res.payload?.data); |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
const [columns, setColumns] = useState([//表格属性 |
|
|
|
const columns = [//表格属性 |
|
|
|
{ |
|
|
|
title: "操作", |
|
|
|
width: "20%", |
|
|
|
width: "12%", |
|
|
|
dataIndex: "text", |
|
|
|
key: 'text', |
|
|
|
render: (_, row) => { |
|
|
@ -140,8 +139,9 @@ const EmPush = (props) => { |
|
|
|
<Button |
|
|
|
theme="borderless" |
|
|
|
// disabled={row.pepProjectIsDelete == 1} |
|
|
|
// onClick={() => { |
|
|
|
// setPushModal(true); |
|
|
|
onClick={() => { |
|
|
|
setEditObj(row) |
|
|
|
setPushModal(true); |
|
|
|
// setPepname(row.name) |
|
|
|
// if (!row.name) { |
|
|
|
// setPepProjectId(row.pepProjectId) |
|
|
@ -169,25 +169,51 @@ const EmPush = (props) => { |
|
|
|
// setAppArr(myapparr) |
|
|
|
// setAnxincloudArr(myanxinArr) |
|
|
|
// setBindId(row.id) |
|
|
|
// setPushEdit(true) |
|
|
|
// }} |
|
|
|
setPushEdit(true) |
|
|
|
}} |
|
|
|
> |
|
|
|
修改 |
|
|
|
</Button> |
|
|
|
<Button theme="borderless">禁用</Button> |
|
|
|
{row?.disable ? ( |
|
|
|
<Button |
|
|
|
theme="borderless" |
|
|
|
style={{ color: '#F31C1C' }} |
|
|
|
onClick={() => { |
|
|
|
dispatch(service.putPushPushId({ pushId: row?.id, del: false, disable: false, msg: '更改推送配置状态' })).then(() => { |
|
|
|
// setQuery({ limit: 10, page: page.current }) |
|
|
|
}) |
|
|
|
}} |
|
|
|
> |
|
|
|
已禁用 |
|
|
|
</Button> |
|
|
|
) : ( |
|
|
|
<Popconfirm |
|
|
|
title="禁用后,通知策略将会失效。" |
|
|
|
arrowPointAtCenter={false} |
|
|
|
showArrow={true} |
|
|
|
position="topRight" |
|
|
|
onConfirm={() => { |
|
|
|
dispatch(service.putPushPushId({ pushId: row?.id, del: false, disable: true, msg: '更改推送配置状态' })).then(() => { |
|
|
|
// setQuery({ limit: 10, page: page.current }) |
|
|
|
}) |
|
|
|
}} |
|
|
|
> |
|
|
|
<Button theme="borderless">已启用</Button> |
|
|
|
</Popconfirm> |
|
|
|
)} |
|
|
|
<Popconfirm |
|
|
|
title="删除后对应的项目全局将无法进入和显示,对应的信鸽服务也会被禁用" |
|
|
|
title="删除后通知策略将会失效。" |
|
|
|
arrowPointAtCenter={false} |
|
|
|
showArrow={true} |
|
|
|
position="topRight" |
|
|
|
onConfirm={() => { |
|
|
|
// dispatch(install.deleteProjectBind({ bindId: row?.id, msg: '删除安心云、项目管理项目绑定关系' })).then(() => { |
|
|
|
dispatch(service.putPushPushId({ pushId: row?.id, del: true, disable: false, msg: '删除推送配置' })).then(() => { |
|
|
|
// if (page.current > 0 && mylimits.current < 2) { |
|
|
|
// setQuery({ limit: 10, page: page.current - 1 }) |
|
|
|
// } else { |
|
|
|
// setQuery({ limit: 10, page: page.current }) |
|
|
|
// } |
|
|
|
// }) |
|
|
|
}) |
|
|
|
}} |
|
|
|
> |
|
|
|
<Button theme="borderless">删除</Button> |
|
|
@ -196,30 +222,29 @@ const EmPush = (props) => { |
|
|
|
); |
|
|
|
}, |
|
|
|
}, |
|
|
|
]) |
|
|
|
] |
|
|
|
function expandRowRender (record, index) { |
|
|
|
return ( |
|
|
|
<div style={{ display: 'flex' }}> |
|
|
|
结构物: |
|
|
|
{ |
|
|
|
record.structure?.map((item, index) => { |
|
|
|
return ( |
|
|
|
<div key={index} style={{ marginRight: 5, padding: '1px 17px', color: '#0F7EFB', background: 'rgba(221,237,255,0.38)' }}> |
|
|
|
{item.name} |
|
|
|
</div> |
|
|
|
) |
|
|
|
}) |
|
|
|
} |
|
|
|
</div> |
|
|
|
) |
|
|
|
} |
|
|
|
//获取表格属性设置 |
|
|
|
function attribute () { |
|
|
|
function attribute (val) { |
|
|
|
const arr = localStorage.getItem(EMPUSH) |
|
|
|
? JSON.parse(localStorage.getItem(EMPUSH)) |
|
|
|
: []; |
|
|
|
|
|
|
|
const column = [ |
|
|
|
{ |
|
|
|
title: '策略名称', |
|
|
|
dataIndex: "name", |
|
|
|
key: 'name', |
|
|
|
render: (_, row) => { |
|
|
|
return row.name |
|
|
|
} |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: "创建时间", |
|
|
|
dataIndex: "createTime", |
|
|
|
key: "createTime", |
|
|
|
render: (_, r, index) => { |
|
|
|
return moment(r.createTime).format('YYYY-MM-DD HH:mm:ss'); |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: '关联项目', |
|
|
|
dataIndex: "projectName", |
|
|
@ -250,10 +275,63 @@ const EmPush = (props) => { |
|
|
|
</Tooltip> |
|
|
|
</div> |
|
|
|
} |
|
|
|
{ |
|
|
|
row.pomsProject?.pepProject?.projectName ? ( |
|
|
|
<div style={{ |
|
|
|
height: 18, marginLeft: 4, |
|
|
|
background: 'linear-gradient(180deg, #EBF5FF 0%, #EBF5FF 0%, #D3E8FF 100%)', |
|
|
|
borderRadius: 2, display: 'flex', alignItems: 'center' |
|
|
|
}}> |
|
|
|
<div> |
|
|
|
<img src="/assets/images/install/icon_zhengque.png" alt="" style={{ height: 10, width: 10, marginLeft: 4, marginRight: 9 }} /> |
|
|
|
</div> |
|
|
|
<div style={{ color: '#0F7EFB', fontSize: 11, marginRight: 12 }}> |
|
|
|
{ |
|
|
|
val.map((ite, idx) => { |
|
|
|
return ( |
|
|
|
<div key={idx}> |
|
|
|
{ite.id == row.pomsProject?.pepProject.constructionStatusId ? ite.construction_status : ''} |
|
|
|
</div> |
|
|
|
) |
|
|
|
}) |
|
|
|
} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
) : ( |
|
|
|
<div style={{ |
|
|
|
height: 18, marginLeft: 4, |
|
|
|
background: 'linear-gradient(180deg, #99C7DD 0%, #3048FC 100%)', |
|
|
|
borderRadius: 2, display: 'flex', alignItems: 'center' |
|
|
|
}}> |
|
|
|
<div> |
|
|
|
<img src="/assets/images/install/icon_POMS.png" alt="" style={{ height: 10, width: 10, marginLeft: 4, marginRight: 9 }} /> |
|
|
|
</div> |
|
|
|
<div style={{ color: '#FFFFFF', fontSize: 11, marginRight: 12 }}> |
|
|
|
POMS |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
) |
|
|
|
} |
|
|
|
</div> |
|
|
|
) |
|
|
|
} |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: '策略名称', |
|
|
|
dataIndex: "name", |
|
|
|
key: 'name', |
|
|
|
render: (_, row) => { |
|
|
|
return row.name |
|
|
|
} |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: "创建时间", |
|
|
|
dataIndex: "createTime", |
|
|
|
key: "createTime", |
|
|
|
render: (_, r, index) => { |
|
|
|
return moment(r.createTime).format('YYYY-MM-DD HH:mm:ss'); |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: '接收人', |
|
|
|
dataIndex: "receiverPepUser", |
|
|
@ -280,7 +358,7 @@ const EmPush = (props) => { |
|
|
|
{ |
|
|
|
row.receiverPepUser.map((item, index) => { |
|
|
|
return ( |
|
|
|
<div key={index} style={{ color: '#005ABD' }}> |
|
|
|
<div key={index}> |
|
|
|
{item.name}, |
|
|
|
</div> |
|
|
|
) |
|
|
@ -314,7 +392,6 @@ const EmPush = (props) => { |
|
|
|
return ( |
|
|
|
<div style={{ display: 'flex', alignItems: 'center' }}> |
|
|
|
{ |
|
|
|
// alarmTypeObj |
|
|
|
row.alarmType.map((item, index) => { |
|
|
|
return ( |
|
|
|
<div className='myseparator' key={index} style={{ display: 'flex', alignItems: 'center' }}> |
|
|
@ -355,9 +432,81 @@ const EmPush = (props) => { |
|
|
|
title: "生效项目节点", |
|
|
|
dataIndex: "timeType", |
|
|
|
key: "timeType", |
|
|
|
render: (_, r, index) => { |
|
|
|
// projectStatus |
|
|
|
return r.timeType[0] |
|
|
|
render: (_, row, index) => { |
|
|
|
return ( |
|
|
|
<div style={{ display: 'flex', alignItems: 'center' }}> |
|
|
|
{ |
|
|
|
row.timeType.length > 0 ? ( |
|
|
|
row.timeType.map((item, index) => { |
|
|
|
return ( |
|
|
|
<div key={index} style={{ |
|
|
|
height: 18, marginLeft: 4, |
|
|
|
background: 'linear-gradient(180deg, #EBF5FF 0%, #EBF5FF 0%, #D3E8FF 100%)', |
|
|
|
borderRadius: 2, display: index > 1 ? 'none' : 'flex', alignItems: 'center' |
|
|
|
}}> |
|
|
|
<div> |
|
|
|
<img src="/assets/images/install/icon_zhengque.png" alt="" style={{ height: 10, width: 10, marginLeft: 4, marginRight: 9 }} /> |
|
|
|
</div> |
|
|
|
<div style={{ color: '#0F7EFB', fontSize: 11, marginRight: 12 }}> |
|
|
|
{ |
|
|
|
val.map((ite, idx) => { |
|
|
|
return ( |
|
|
|
<div key={idx}> |
|
|
|
{ite.id == item ? ite.construction_status : ''} |
|
|
|
</div> |
|
|
|
) |
|
|
|
}) |
|
|
|
} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
) |
|
|
|
}) |
|
|
|
) : ( |
|
|
|
<div style={{ |
|
|
|
height: 18, marginLeft: 4, |
|
|
|
background: 'linear-gradient(180deg, #99C7DD 0%, #3048FC 100%)', |
|
|
|
borderRadius: 2, display: 'flex', alignItems: 'center' |
|
|
|
}}> |
|
|
|
<div> |
|
|
|
<img src="/assets/images/install/icon_POMS.png" alt="" style={{ height: 10, width: 10, marginLeft: 4, marginRight: 9 }} /> |
|
|
|
</div> |
|
|
|
<div style={{ color: '#FFFFFF', fontSize: 11, marginRight: 12 }}> |
|
|
|
POMS |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
) |
|
|
|
} |
|
|
|
{ |
|
|
|
row.timeType.length > 2 ? ( |
|
|
|
<Tooltip content={ |
|
|
|
<div style={{ display: 'flex', flexWrap: 'wrap' }}> |
|
|
|
{ |
|
|
|
row.timeType.map((item, index) => { |
|
|
|
return ( |
|
|
|
<div key={index}> |
|
|
|
{ |
|
|
|
val.map((ite, idx) => { |
|
|
|
return ( |
|
|
|
<span key={idx}> |
|
|
|
{ite.id == item ? ite.construction_status : ''} |
|
|
|
</span> |
|
|
|
) |
|
|
|
}) |
|
|
|
}, |
|
|
|
</div> |
|
|
|
) |
|
|
|
}) |
|
|
|
} |
|
|
|
</div> |
|
|
|
} trigger="click" style={{ lineHeight: 2 }}> |
|
|
|
<div style={{ fontSize: 14, color: '#005ABD', marginLeft: 8, cursor: "pointer", }}> |
|
|
|
+{row.timeType.length - 2} |
|
|
|
</div> |
|
|
|
</Tooltip> |
|
|
|
) : ('') |
|
|
|
} |
|
|
|
</div> |
|
|
|
) |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
@ -372,9 +521,31 @@ const EmPush = (props) => { |
|
|
|
title: "启用状态", |
|
|
|
dataIndex: "disable", |
|
|
|
key: "disable", |
|
|
|
render: (_, r, index) => { |
|
|
|
// projectStatus |
|
|
|
return r.disable |
|
|
|
render: (_, row, index) => { |
|
|
|
let enableType = '' |
|
|
|
if (row.disable) { |
|
|
|
enableType = '禁用' |
|
|
|
} |
|
|
|
else { |
|
|
|
if (row.timeType.length > 0) { |
|
|
|
for (let i = 0; i < row.timeType.length; i++) { |
|
|
|
if (row.timeType[i] == row.pomsProject?.pepProject?.constructionStatusId) { |
|
|
|
enableType = '已生效' |
|
|
|
break; |
|
|
|
} else { |
|
|
|
enableType = '未生效' |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else { |
|
|
|
enableType = '已生效' |
|
|
|
} |
|
|
|
} |
|
|
|
return ( |
|
|
|
<div style={{ textAlign: 'center', padding: '1px 17px', color: enableType == '禁用' ? '#FB0F0F' : enableType == '已生效' ? '#0F7EFB' : '#646566', background: enableType == '禁用' ? 'rgba(255,221,221,0.38)' : enableType == '已生效' ? 'rgba(221,237,255,0.38)' : 'rgba(192,192,192,0.38)', }}> |
|
|
|
{enableType} |
|
|
|
</div> |
|
|
|
) |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
@ -382,7 +553,7 @@ const EmPush = (props) => { |
|
|
|
dataIndex: "pushCount", |
|
|
|
key: "pushCount", |
|
|
|
render: (_, r, index) => { |
|
|
|
return r.pushCount |
|
|
|
return r.pushCount + '次' |
|
|
|
}, |
|
|
|
}, |
|
|
|
]; |
|
|
@ -403,7 +574,7 @@ const EmPush = (props) => { |
|
|
|
<div style={{ fontFamily: "YouSheBiaoTiHei", fontSize: 24, color: '#101531', marginLeft: 8 }}>EM推送</div> |
|
|
|
<div style={{ marginLeft: 6, fontSize: 12, color: '#969799', fontFamily: "DINExp", }}>Em push</div> |
|
|
|
</div> |
|
|
|
<div style={{ marginRight: 20, display: 'flex', alignItems: 'center' }} className='empush'> |
|
|
|
<div style={{ marginRight: 20, display: 'flex', alignItems: 'center' }} className='myempush'> |
|
|
|
<Form |
|
|
|
onSubmit={(values) => console.log(values)} |
|
|
|
// onValueChange={values=>console.log(values)} |
|
|
@ -411,47 +582,53 @@ const EmPush = (props) => { |
|
|
|
layout="horizontal" |
|
|
|
style={{ position: "relative", width: "100%", flex: 1 }} |
|
|
|
> |
|
|
|
<Form.Select |
|
|
|
pure |
|
|
|
field="keywordTarget" |
|
|
|
placeholder="请选择搜索类型" |
|
|
|
style={{ width: 200 }} |
|
|
|
initValue={"pepProject"} |
|
|
|
> |
|
|
|
<Form.Select.Option value='pepProject'>项目</Form.Select.Option> |
|
|
|
<Form.Select.Option value='struc'>结构物</Form.Select.Option> |
|
|
|
<Form.Select.Option value='tactics'>策略名</Form.Select.Option> |
|
|
|
</Form.Select> |
|
|
|
<Form.Input |
|
|
|
label='搜索:' |
|
|
|
field='seacth' |
|
|
|
maxLength="16" |
|
|
|
placeholder="搜项目、结构物或推送策略名" |
|
|
|
labelPosition="left" |
|
|
|
style={{ width: 292, marginRight: 10, marginBottom: 16 }} |
|
|
|
suffix={<IconSearch />} |
|
|
|
field="keyword" |
|
|
|
pure |
|
|
|
showClear |
|
|
|
style={{ width: 260, marginLeft: 12, marginRight: 12 }} |
|
|
|
placeholder="请输入或选择关键词" |
|
|
|
/> |
|
|
|
<Form.Select |
|
|
|
label='推送类型:' |
|
|
|
labelPosition="left" |
|
|
|
field='pushType' |
|
|
|
field='alarmType' |
|
|
|
style={{ width: 116, marginRight: 10, color: "#F9F9F9", }} |
|
|
|
placeholder="全部" |
|
|
|
filter |
|
|
|
showClear |
|
|
|
> |
|
|
|
{/* {.map((item) => { |
|
|
|
return ( |
|
|
|
<Form.Select.Option key={item.value} value={item.value}> |
|
|
|
{item.name} |
|
|
|
</Form.Select.Option> |
|
|
|
); |
|
|
|
})} */} |
|
|
|
<Form.Select.Option value="data_outages">数据中断</Form.Select.Option> |
|
|
|
<Form.Select.Option value="data_exception">数据异常</Form.Select.Option> |
|
|
|
<Form.Select.Option value="strategy_hit">策略命中</Form.Select.Option> |
|
|
|
<Form.Select.Option value="video_exception">视频异常</Form.Select.Option> |
|
|
|
<Form.Select.Option value="app_exception">应用异常</Form.Select.Option> |
|
|
|
<Form.Select.Option value="device_exception">设备异常</Form.Select.Option> |
|
|
|
</Form.Select> |
|
|
|
<Form.Select |
|
|
|
label='启用状态:' |
|
|
|
labelPosition="left" |
|
|
|
field='enableType' |
|
|
|
field='state' |
|
|
|
style={{ width: 116, marginRight: 10, color: "#F9F9F9", }} |
|
|
|
placeholder="全部" |
|
|
|
filter |
|
|
|
showClear |
|
|
|
> |
|
|
|
{/* {.map((item) => { |
|
|
|
return ( |
|
|
|
<Form.Select.Option key={item.value} value={item.value}> |
|
|
|
{item.name} |
|
|
|
</Form.Select.Option> |
|
|
|
); |
|
|
|
})} */} |
|
|
|
<Form.Select.Option value='takeEffect'>已生效</Form.Select.Option> |
|
|
|
<Form.Select.Option value='notYet'>未生效</Form.Select.Option> |
|
|
|
<Form.Select.Option value='disable'>禁用</Form.Select.Option> |
|
|
|
</Form.Select> |
|
|
|
</Form> |
|
|
|
<Button |
|
|
@ -466,7 +643,9 @@ const EmPush = (props) => { |
|
|
|
color: '#005ABD', |
|
|
|
border: '1px solid #005ABD' |
|
|
|
}} |
|
|
|
// onClick={() => { }} |
|
|
|
onClick={() => { |
|
|
|
getPushList() |
|
|
|
}} |
|
|
|
> |
|
|
|
查询 |
|
|
|
</Button> |
|
|
@ -502,10 +681,13 @@ const EmPush = (props) => { |
|
|
|
placeholder={SkeletonScreen()} |
|
|
|
> |
|
|
|
<Table |
|
|
|
rowKey="name" |
|
|
|
columns={setupp.filter((s) => s)} |
|
|
|
dataSource={tableData} |
|
|
|
bordered={false} |
|
|
|
hideExpandedColumn={false} |
|
|
|
empty="暂无数据" |
|
|
|
expandedRowRender={expandRowRender} |
|
|
|
pagination={false} |
|
|
|
onRow={handleRow} |
|
|
|
/> |
|
|
@ -543,6 +725,7 @@ const EmPush = (props) => { |
|
|
|
<PushModal |
|
|
|
visible={true} |
|
|
|
pushEdit={pushEdit} |
|
|
|
editObj={editObj} |
|
|
|
cancel={() => { |
|
|
|
setPushModal(false); |
|
|
|
}} |
|
|
@ -558,7 +741,7 @@ const EmPush = (props) => { |
|
|
|
tableList={tableList} |
|
|
|
close={() => { |
|
|
|
setSetup(false); |
|
|
|
attribute(); |
|
|
|
attribute(projectStatus); |
|
|
|
}} |
|
|
|
/> |
|
|
|
) : ( |
|
|
|