You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
6.6 KiB
226 lines
6.6 KiB
import api from "@/api"
|
|
import MyTable from "@/components/MyTable"
|
|
import { RootState } from "@/store"
|
|
import { getTime } from "@/utils"
|
|
import { getBaseUrl } from "@/utils/axios"
|
|
import { InboxOutlined } from "@ant-design/icons"
|
|
import { Button, Drawer, Form, Input, Popconfirm, Tooltip, notification } from "antd"
|
|
import TextArea from "antd/lib/input/TextArea"
|
|
import Dragger from "antd/lib/upload/Dragger"
|
|
import { title } from "process"
|
|
import React, { useRef, useState } from "react"
|
|
import { useSelector } from "react-redux"
|
|
|
|
const BUZZUPNews = () => {
|
|
|
|
const { userInfo } = useSelector((state: RootState) => state.storeData)
|
|
|
|
const [visible, setVisible] = useState(false)
|
|
const [form] = Form.useForm()
|
|
const currentType = useRef('' as 'create' | 'update')
|
|
const currentItem = useRef({} as any)
|
|
const tableRef = useRef(null)
|
|
|
|
const columns = [
|
|
{
|
|
title: '图片',
|
|
dataIndex: 'image',
|
|
width: 300,
|
|
render: (logo) => {
|
|
return (
|
|
<Tooltip title={
|
|
<img src={logo} alt="" style={{ width: 240, height: 240, objectFit: 'contain' }} />
|
|
}>
|
|
<img src={logo} className="tp" alt="" style={{ width: 50, height: 50, objectFit: 'contain' }} />
|
|
</Tooltip>
|
|
)
|
|
}
|
|
},
|
|
{
|
|
title: '标题',
|
|
width: 300,
|
|
dataIndex: "title",
|
|
render: (title) => {
|
|
return (
|
|
<Tooltip overlay={false} title={
|
|
<div dangerouslySetInnerHTML={{ __html: title.replace(/\\n/g, '<br/>') }}></div>
|
|
}>
|
|
<div className="text-overflow tp" dangerouslySetInnerHTML={{ __html: title.replace(/\\n/g, '<br/>') }}></div>
|
|
</Tooltip>
|
|
)
|
|
}
|
|
},
|
|
{
|
|
title: '链接',
|
|
dataIndex: 'url',
|
|
width: 300
|
|
},
|
|
{
|
|
title: '创建时间',
|
|
dataIndex: 'time',
|
|
render: (time) => (
|
|
<div>{getTime(time * 1000)}</div>
|
|
)
|
|
},
|
|
{
|
|
title: 'options',
|
|
fixed: 'right',
|
|
width: 100,
|
|
render: (item) => (
|
|
<div>
|
|
<Button type="primary" style={{ marginTop: 10 }} onClick={() => {
|
|
currentItem.current = item
|
|
currentType.current = 'update'
|
|
form.setFieldsValue(item)
|
|
setVisible(true)
|
|
}}>修改</Button>
|
|
<Popconfirm title={`确认删除“${item.title}”吗?`} onConfirm={() => deleteSystemMsg(item)}>
|
|
<Button type="primary" style={{ marginTop: 10, backgroundColor: 'red', borderColor: 'red' }}>删除</Button>
|
|
</Popconfirm>
|
|
</div>
|
|
)
|
|
}
|
|
]
|
|
|
|
const deleteSystemMsg = async (item) => {
|
|
const res: any = await api.delete_new_message({
|
|
id: item.id
|
|
})
|
|
if (res.code === 0) {
|
|
tableRef.current.update()
|
|
notification.success({
|
|
message: '删除成功'
|
|
})
|
|
}
|
|
}
|
|
|
|
const onClose = () => setVisible(false)
|
|
|
|
const onFinish = async (values) => {
|
|
const parmas = {
|
|
...values
|
|
}
|
|
console.log(parmas);
|
|
|
|
if (currentType.current === 'update') {
|
|
parmas.id = currentItem.current.id
|
|
}
|
|
let res: any;
|
|
if (currentType.current === 'create') {
|
|
res = await api.add_news_message(parmas)
|
|
} else {
|
|
res = await api.updata_news_message(parmas)
|
|
}
|
|
if (res.code === 0) {
|
|
setVisible(false)
|
|
tableRef.current.update()
|
|
form.resetFields()
|
|
notification.success({
|
|
message: currentType.current === 'create' ? '添加成功' : '修改成功'
|
|
})
|
|
}
|
|
}
|
|
|
|
const uploadProps = {
|
|
name: 'img',
|
|
action: `${getBaseUrl()}/admin/uploadImg`,
|
|
headers: {
|
|
Token: userInfo.token,
|
|
},
|
|
}
|
|
|
|
const onChange = (info: any) => {
|
|
|
|
if (info.file.status === 'removed') {
|
|
form.setFieldsValue({
|
|
image: ''
|
|
})
|
|
}
|
|
|
|
if (info.file.status === 'done') {
|
|
if (info.file.response && info.file.response.code === 0) {
|
|
form.setFieldsValue({
|
|
image: info.file.response.data.url
|
|
})
|
|
notification.success({
|
|
message: `图片上传成功`
|
|
})
|
|
}
|
|
|
|
} else if (info.file.status === 'error') {
|
|
notification.error({
|
|
message: `图片上传失败`
|
|
});
|
|
}
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
<MyTable
|
|
apiFun={api.get_news_message}
|
|
ref={tableRef}
|
|
columns={columns}
|
|
header={
|
|
<div style={{ width: '100%', display: 'flex', justifyContent: 'flex-end', marginBottom: 20 }}>
|
|
<Button type="primary" onClick={() => {
|
|
currentType.current = 'create'
|
|
form.resetFields()
|
|
setVisible(true)
|
|
}}>添加BUZZUPNews</Button>
|
|
</div>
|
|
}
|
|
/>
|
|
<Drawer title="添加系统通知" onClose={onClose} visible={visible} width="40%">
|
|
<Form form={form} onFinish={onFinish}>
|
|
<Form.Item
|
|
name="url"
|
|
label="链接"
|
|
rules={[{ required: true, message: '请输入链接' }]}
|
|
>
|
|
<Input placeholder="请输入链接" />
|
|
</Form.Item>
|
|
<Form.Item
|
|
name="title"
|
|
label="标题"
|
|
rules={[{ required: true, message: '请输入标题' }]}
|
|
>
|
|
<TextArea placeholder="请输入标题" style={{ minHeight: 200 }} />
|
|
</Form.Item>
|
|
<Form.Item label="模版" shouldUpdate={(prevValues, currentValues) => prevValues.title !== currentValues.title}>
|
|
{({ getFieldValue }) => (
|
|
<div dangerouslySetInnerHTML={{ __html: (getFieldValue('title') || '').replace(/\\n/g, '<br/>') }}></div>
|
|
)}
|
|
</Form.Item>
|
|
|
|
<Form.Item
|
|
label="图片"
|
|
name="image"
|
|
rules={[{ required: true, message: 'Please Select Logo Image!' }]}
|
|
>
|
|
<Dragger
|
|
{...uploadProps}
|
|
onChange={onChange}
|
|
>
|
|
<p className="ant-upload-drag-icon" style={{ display: 'flex', justifyContent: 'center', paddingTop: 10 }}>
|
|
<InboxOutlined />
|
|
</p>
|
|
<p className="ant-upload-text" style={{ textAlign: 'center' }}>点击或拖拽文件进行上传</p>
|
|
<p className="ant-upload-hint" style={{ textAlign: 'center', paddingBottom: 10 }}>
|
|
Support for a single or bulk upload. Strictly prohibited from uploading company data or other
|
|
banned files.
|
|
</p>
|
|
</Dragger>
|
|
</Form.Item>
|
|
|
|
<Form.Item label="">
|
|
<div style={{ display: 'flex', justifyContent: 'center' }}>
|
|
<Button type="primary" htmlType="submit">提交</Button>
|
|
</div>
|
|
</Form.Item>
|
|
</Form>
|
|
</Drawer>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default BUZZUPNews
|