2025-06-13 16:43:21 +08:00
|
|
|
|
import { useState, useEffect } from 'react'
|
2025-05-19 17:29:11 +08:00
|
|
|
|
import nothingImg from '../../static/appimgs/nothing.png'
|
2025-06-13 16:43:21 +08:00
|
|
|
|
import { useLocation, useNavigate } from 'react-router-dom';
|
2025-06-27 15:47:46 +08:00
|
|
|
|
import { trademarkList, getFileTypeByIds, supplementTrademarkData } from '../../request/api'
|
|
|
|
|
import { showImage, uploadFileUrl } from '../../request/request'
|
|
|
|
|
import { UploadOutlined } from '@ant-design/icons';
|
2025-06-25 18:00:05 +08:00
|
|
|
|
import { Modal } from 'antd';
|
2025-06-27 15:47:46 +08:00
|
|
|
|
import type { TableProps, } from 'antd';
|
2025-06-13 16:43:21 +08:00
|
|
|
|
import {
|
|
|
|
|
message, Spin,
|
|
|
|
|
Pagination,
|
2025-06-27 15:47:46 +08:00
|
|
|
|
Table, Image,
|
|
|
|
|
Input, Form, Upload, Button
|
2025-06-13 16:43:21 +08:00
|
|
|
|
} from 'antd';
|
2025-06-27 15:47:46 +08:00
|
|
|
|
const { TextArea } = Input;
|
|
|
|
|
import { buySupplementList, supplementDetail } from '../../request/api'
|
2025-05-16 17:48:03 +08:00
|
|
|
|
export default function TrademarkMall() {
|
2025-06-27 15:47:46 +08:00
|
|
|
|
// 获取上传过的文件类型
|
|
|
|
|
const getUpFileTypeByIdsArray = async (ids: string) => {
|
|
|
|
|
try {
|
|
|
|
|
const res: any = await getFileTypeByIds({
|
|
|
|
|
ids: ids
|
|
|
|
|
})
|
|
|
|
|
console.log(res);
|
|
|
|
|
const newUpFile = res.map((item: any) => {
|
|
|
|
|
return {
|
|
|
|
|
uid: item.fileId,
|
|
|
|
|
name: item.fileName,
|
|
|
|
|
status: 'done',
|
|
|
|
|
url: showImage(item.fileId, false)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// console.log(newUpFile, 'newUpFile');
|
|
|
|
|
setUpFileArray(newUpFile)
|
|
|
|
|
|
|
|
|
|
} catch (error: any) {
|
|
|
|
|
|
|
|
|
|
if (error.response) {
|
|
|
|
|
const data = error.response.data;
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error(error)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const [trademarkId, setTrademarkId] = useState('')
|
|
|
|
|
const getBuySupplementList = async (page: number, id: string) => {
|
|
|
|
|
try {
|
|
|
|
|
const res: any = await buySupplementList({
|
|
|
|
|
orderId: id,
|
|
|
|
|
page: page,
|
|
|
|
|
rows: 10
|
|
|
|
|
})
|
|
|
|
|
// setPage(res.page)
|
|
|
|
|
// setTotal(res.total)
|
|
|
|
|
// // console.log(res);
|
|
|
|
|
// setData(res.rows)
|
|
|
|
|
setCommunicationData(res.rows)
|
|
|
|
|
setCommunicationTotal(res.total)
|
|
|
|
|
setCommunicationPage(res.page)
|
|
|
|
|
} catch (error: any) {
|
|
|
|
|
|
|
|
|
|
if (error.response) {
|
|
|
|
|
const data = error.response.data;
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error(error)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const token = sessionStorage.getItem('token')
|
|
|
|
|
const [upFileArray, setUpFileArray] = useState<any>([]) // 上传的文件数组
|
|
|
|
|
const [form] = Form.useForm();
|
2025-06-25 18:00:05 +08:00
|
|
|
|
const [modal, setModal] = useState(false)
|
2025-06-27 15:47:46 +08:00
|
|
|
|
// 自定义验证函数
|
|
|
|
|
const validateContentOrFile = (_rule: any, _value: any, callback: (error?: string) => void, form: any) => {
|
|
|
|
|
const { upCorrectionRemark, upFile } = form.getFieldsValue();
|
|
|
|
|
if (upCorrectionRemark || (upFile && Array.isArray(upFile.fileList) && upFile.fileList.length > 0)) {
|
|
|
|
|
callback();
|
|
|
|
|
} else {
|
|
|
|
|
callback('内容和附件至少需要填写或上传一项');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
// 点击上传资料确定
|
|
|
|
|
|
|
|
|
|
const [correctionId, setCorrectionId] = useState('') // 点击查看内容选中的id
|
|
|
|
|
// 是否需要回复信息
|
|
|
|
|
const [correctionReply, setCorrectionReply] = useState('') //0为仅通知 , 1为需要回复
|
|
|
|
|
const [orderId, setOrderId] = useState('')
|
|
|
|
|
const submitData = async (params: any) => {
|
|
|
|
|
if (correctionReply == '0') {
|
|
|
|
|
try {
|
|
|
|
|
await supplementTrademarkData({
|
|
|
|
|
correctionParentId: correctionId,
|
|
|
|
|
// correctionType: CorrectionType,
|
|
|
|
|
orderId: orderId,
|
|
|
|
|
correctionFiles: '',
|
|
|
|
|
correctionRemark: '已读',
|
|
|
|
|
})
|
|
|
|
|
getBuySupplementList(communicationPage, trademarkId)
|
|
|
|
|
getTrademarkList(page)
|
|
|
|
|
// if (props.user == 'sell') {
|
|
|
|
|
// getSellSupplementList()
|
|
|
|
|
// } else if (props.user == 'buy') {
|
|
|
|
|
// getBuySupplementList()
|
|
|
|
|
// }
|
|
|
|
|
// props.upData()
|
|
|
|
|
// messageApi.open({
|
|
|
|
|
// type: 'success',
|
|
|
|
|
// content: '已提交',
|
|
|
|
|
// })
|
|
|
|
|
setIsModalVisible(false)
|
|
|
|
|
// form.resetFields();
|
|
|
|
|
|
|
|
|
|
// console.log(res);
|
|
|
|
|
|
|
|
|
|
} catch (error: any) {
|
|
|
|
|
if (error.response) {
|
|
|
|
|
const data = error.response.data;
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error(error)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
try {
|
|
|
|
|
await supplementTrademarkData({
|
|
|
|
|
correctionParentId: correctionId,
|
|
|
|
|
// correctionType: CorrectionType,
|
|
|
|
|
orderId: orderId,
|
|
|
|
|
correctionFiles: params.correctionFiles,
|
|
|
|
|
correctionRemark: params.correctionRemark,
|
|
|
|
|
})
|
|
|
|
|
// if (props.user == 'sell') {
|
|
|
|
|
// getSellSupplementList()
|
|
|
|
|
// } else if (props.user == 'buy') {
|
|
|
|
|
// getBuySupplementList()
|
|
|
|
|
// }
|
|
|
|
|
// props.upData()
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'success',
|
|
|
|
|
content: '已提交',
|
|
|
|
|
})
|
|
|
|
|
getTrademarkList(page)
|
|
|
|
|
|
|
|
|
|
getBuySupplementList(communicationPage, trademarkId)
|
|
|
|
|
setIsModalVisible(false)
|
|
|
|
|
// form.resetFields();
|
|
|
|
|
|
|
|
|
|
// console.log(res);
|
|
|
|
|
|
|
|
|
|
} catch (error: any) {
|
|
|
|
|
if (error.response) {
|
|
|
|
|
const data = error.response.data;
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error(error)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// 补充资料详情
|
|
|
|
|
const [detailData, setDetailData] = useState<any>({})
|
|
|
|
|
// 补充资料弹窗
|
|
|
|
|
const [isModalVisible, setIsModalVisible] = useState(false)
|
|
|
|
|
// 沟通弹窗
|
|
|
|
|
const [visible, setVisible] = useState(false);
|
|
|
|
|
const [fileList, setFileList] = useState<any>([]) // 上传文件列表
|
|
|
|
|
// 获取文件类型
|
|
|
|
|
const getFileTypeByIdsArray = async (ids: string) => {
|
|
|
|
|
try {
|
|
|
|
|
const res: any = await getFileTypeByIds({
|
|
|
|
|
ids: ids
|
|
|
|
|
})
|
|
|
|
|
setFileList(res)
|
|
|
|
|
|
|
|
|
|
} catch (error: any) {
|
|
|
|
|
|
|
|
|
|
if (error.response) {
|
|
|
|
|
const data = error.response.data;
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error(error)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// const [orderId, setOrderId] = useState('')
|
2025-06-25 18:00:05 +08:00
|
|
|
|
const [checkRemark, setCheckRemark] = useState('') //失败原因
|
2025-06-13 16:43:21 +08:00
|
|
|
|
const [messageApi, contextHolder] = message.useMessage();
|
|
|
|
|
const { state } = useLocation()
|
|
|
|
|
const nav = useNavigate();
|
2025-05-19 17:29:11 +08:00
|
|
|
|
const height = window.innerHeight - 180;
|
2025-06-13 16:43:21 +08:00
|
|
|
|
const columns: TableProps<any>['columns'] = [
|
|
|
|
|
{
|
|
|
|
|
title: '序号',
|
|
|
|
|
dataIndex: 'index',
|
|
|
|
|
key: 'index',
|
|
|
|
|
align: 'center',
|
|
|
|
|
fixed: 'left',
|
|
|
|
|
width: 90,
|
|
|
|
|
render: (_text, _record, index) => (page - 1) * 10 + index + 1, // 显示序号,从1开始
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
title: '服务类型',
|
|
|
|
|
dataIndex: 'trademarkModeName',
|
|
|
|
|
fixed: 'left',
|
|
|
|
|
align: 'center',
|
|
|
|
|
key: 'trademarkModeName',
|
|
|
|
|
width: 150,
|
|
|
|
|
ellipsis: {
|
|
|
|
|
showTitle: true,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
},
|
2025-06-25 18:00:05 +08:00
|
|
|
|
|
2025-06-13 16:43:21 +08:00
|
|
|
|
{
|
|
|
|
|
title: '类型/名称',
|
|
|
|
|
fixed: 'left',
|
|
|
|
|
dataIndex: 'trademarkName',
|
|
|
|
|
key: 'trademarkName',
|
|
|
|
|
align: 'center',
|
|
|
|
|
ellipsis: {
|
|
|
|
|
showTitle: true,
|
|
|
|
|
},
|
|
|
|
|
width: 200,
|
|
|
|
|
render: (_text, record) => (
|
|
|
|
|
<span>
|
2025-06-25 13:58:43 +08:00
|
|
|
|
{record.trademarkType == 'text' ? '文字' : record.trademarkType == 'image' ? '图形' : record.trademarkType == 'text-image' ? '图文' : ''} <span style={{
|
2025-06-18 21:03:36 +08:00
|
|
|
|
display: record.trademarkType == 'image' ? 'none' : 'unset',
|
2025-06-25 13:58:43 +08:00
|
|
|
|
}}>
|
|
|
|
|
<span style={{
|
|
|
|
|
display: record.trademarkType == '' ? 'none' : 'unset',
|
|
|
|
|
}}>/</span>
|
|
|
|
|
{record.trademarkName}</span>
|
2025-06-13 16:43:21 +08:00
|
|
|
|
{/* {record} */}
|
|
|
|
|
</span>
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
},
|
2025-06-25 18:00:05 +08:00
|
|
|
|
{
|
|
|
|
|
title: '涉及类别',
|
|
|
|
|
dataIndex: 'trademarkTypeDTOS',
|
|
|
|
|
align: 'center',
|
|
|
|
|
key: 'trademarkTypeDTOS',
|
|
|
|
|
width: 150,
|
|
|
|
|
ellipsis: {
|
|
|
|
|
showTitle: true,
|
|
|
|
|
},
|
|
|
|
|
render: (trademarkTypeDTOS) => (
|
|
|
|
|
// trademarkTypeDTOS.map(
|
|
|
|
|
// <div>
|
|
|
|
|
|
|
|
|
|
// </div>
|
|
|
|
|
// )
|
|
|
|
|
trademarkTypeDTOS.length > 0 ? (
|
|
|
|
|
trademarkTypeDTOS.map((item: any) => {
|
|
|
|
|
return (
|
|
|
|
|
<div key={item.id} title={item.name}>
|
|
|
|
|
第{item.code}类 : {item.name}
|
|
|
|
|
</div>
|
|
|
|
|
)
|
2025-06-13 16:43:21 +08:00
|
|
|
|
|
2025-06-25 18:00:05 +08:00
|
|
|
|
})
|
|
|
|
|
) : '暂无'
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
},
|
2025-06-13 16:43:21 +08:00
|
|
|
|
{
|
|
|
|
|
title: '商标图样',
|
|
|
|
|
dataIndex: 'trademarkPhoto',
|
|
|
|
|
align: 'center',
|
|
|
|
|
key: 'trademarkPhoto',
|
|
|
|
|
width: 200,
|
|
|
|
|
render: (text) => (
|
2025-06-25 13:58:43 +08:00
|
|
|
|
|
|
|
|
|
text ? (
|
|
|
|
|
<Image src={showImage(text, false)}
|
|
|
|
|
height={100}
|
|
|
|
|
style={{
|
|
|
|
|
maxWidth: 200,
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
</Image>
|
|
|
|
|
) : '暂无'
|
2025-06-13 16:43:21 +08:00
|
|
|
|
)
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '状态',
|
|
|
|
|
dataIndex: 'trademarkStatus',
|
|
|
|
|
align: 'center',
|
|
|
|
|
key: 'trademarkStatus',
|
2025-06-25 18:00:05 +08:00
|
|
|
|
width: 110,
|
|
|
|
|
render: (text, record) => (
|
|
|
|
|
<div>
|
2025-06-13 16:43:21 +08:00
|
|
|
|
{text == '-1' ?
|
2025-06-25 18:00:05 +08:00
|
|
|
|
<div style={{
|
|
|
|
|
color: 'red',
|
|
|
|
|
cursor: 'pointer',
|
|
|
|
|
}}
|
|
|
|
|
title='点击查看原因'
|
|
|
|
|
onClick={() => {
|
|
|
|
|
setCheckRemark(record.checkRemark)
|
|
|
|
|
|
|
|
|
|
setModal(true)
|
|
|
|
|
// console.log(record.checkRemark);
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<div>审核未通过</div>
|
|
|
|
|
<div>已退款</div>
|
|
|
|
|
<div style={{
|
|
|
|
|
fontSize: '12px',
|
|
|
|
|
}}>(点击查看原因)</div>
|
|
|
|
|
</div>
|
2025-06-13 16:43:21 +08:00
|
|
|
|
: text == '0' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'skyblue',
|
|
|
|
|
}}
|
|
|
|
|
>待付款</span>
|
|
|
|
|
: text == '1' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'green',
|
|
|
|
|
}}
|
|
|
|
|
>已付款</span>
|
2025-06-24 16:16:57 +08:00
|
|
|
|
: text == '2' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'rgb(0, 127, 255)',
|
|
|
|
|
}}
|
2025-06-25 13:58:43 +08:00
|
|
|
|
>审核中</span>
|
2025-06-24 16:16:57 +08:00
|
|
|
|
: text == '3' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'rgb(136, 185, 233)',
|
|
|
|
|
}}
|
2025-06-25 18:00:05 +08:00
|
|
|
|
>提交至商标局</span>
|
2025-06-24 16:16:57 +08:00
|
|
|
|
: text == '4' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
2025-06-27 15:47:46 +08:00
|
|
|
|
color: 'red',
|
2025-06-24 16:16:57 +08:00
|
|
|
|
}}
|
2025-06-25 13:58:43 +08:00
|
|
|
|
>不予受理</span>
|
2025-06-24 16:16:57 +08:00
|
|
|
|
: text == '5' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'rgb(136, 185, 233)',
|
|
|
|
|
}}
|
2025-06-25 13:58:43 +08:00
|
|
|
|
>已受理</span>
|
2025-06-24 16:16:57 +08:00
|
|
|
|
: text == '6' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'rgb(136, 185, 233)',
|
|
|
|
|
}}
|
2025-06-25 13:58:43 +08:00
|
|
|
|
>已发初审公告</span>
|
2025-06-24 16:16:57 +08:00
|
|
|
|
: text == '7' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'rgb(136, 185, 233)',
|
|
|
|
|
}}
|
2025-06-25 13:58:43 +08:00
|
|
|
|
>部分驳回</span>
|
2025-06-25 18:00:05 +08:00
|
|
|
|
: text == '8' ?
|
2025-06-25 13:58:43 +08:00
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'rgb(136, 185, 233)',
|
|
|
|
|
}}
|
2025-06-25 18:00:05 +08:00
|
|
|
|
>全部驳回</span>
|
|
|
|
|
: text == '9' ?
|
|
|
|
|
<span
|
|
|
|
|
style={{
|
|
|
|
|
color: 'rgb(136, 185, 233)',
|
|
|
|
|
}}
|
|
|
|
|
>下证</span> : '未知'
|
2025-06-13 16:43:21 +08:00
|
|
|
|
}
|
2025-06-25 18:00:05 +08:00
|
|
|
|
</div>
|
2025-06-13 16:43:21 +08:00
|
|
|
|
)
|
|
|
|
|
},
|
2025-06-25 13:58:43 +08:00
|
|
|
|
|
|
|
|
|
|
2025-06-23 15:05:13 +08:00
|
|
|
|
// {
|
|
|
|
|
// title: '申请人',
|
|
|
|
|
// // 使用数组形式访问嵌套对象属性
|
|
|
|
|
// dataIndex: ['trademarkUserDTO', 'name'],
|
|
|
|
|
// align: 'center',
|
|
|
|
|
// // 修改 key 保证唯一性
|
|
|
|
|
// key: 'trademarkUserDTOName',
|
|
|
|
|
// width: 150,
|
|
|
|
|
// render: (text) => (
|
|
|
|
|
// <span>
|
|
|
|
|
// {text || '-'}
|
|
|
|
|
// </span>
|
|
|
|
|
// )
|
|
|
|
|
// },
|
|
|
|
|
// // {
|
|
|
|
|
// // title: '申请人证件号',
|
|
|
|
|
// // dataIndex: ['trademarkUserDTO', 'name'],
|
|
|
|
|
// // align: 'center',
|
|
|
|
|
// // key: 'appOrderId',
|
|
|
|
|
// // width: 150,
|
|
|
|
|
// // render: (text) => (
|
|
|
|
|
// // <span>
|
|
|
|
|
// // {text ? text : '未完善'}
|
|
|
|
|
// // </span>
|
|
|
|
|
// // )
|
|
|
|
|
// // },
|
|
|
|
|
// {
|
|
|
|
|
// title: '联系人',
|
|
|
|
|
// // 使用数组形式访问嵌套对象属性
|
|
|
|
|
// dataIndex: ['trademarkUserDTO', 'contactName'],
|
|
|
|
|
// align: 'center',
|
|
|
|
|
// // 修改 key 保证唯一性
|
|
|
|
|
// key: 'trademarkUserDTOContactName',
|
|
|
|
|
// width: 150,
|
|
|
|
|
// render: (text) => (
|
|
|
|
|
// <span>
|
|
|
|
|
// {text || '-'}
|
|
|
|
|
// </span>
|
|
|
|
|
// )
|
|
|
|
|
// },
|
2025-06-13 16:43:21 +08:00
|
|
|
|
{
|
|
|
|
|
title: '操作',
|
|
|
|
|
// dataIndex: 'contractManagementId',
|
|
|
|
|
align: 'center',
|
|
|
|
|
// key: 'appOrderId',
|
|
|
|
|
width: 150,
|
|
|
|
|
// bordeLeft: true,
|
|
|
|
|
fixed: 'right',
|
|
|
|
|
render: (record) => (
|
2025-06-27 15:47:46 +08:00
|
|
|
|
<div style={{
|
2025-06-13 16:43:21 +08:00
|
|
|
|
|
2025-06-27 15:47:46 +08:00
|
|
|
|
}}>
|
2025-05-19 17:29:11 +08:00
|
|
|
|
|
2025-06-27 15:47:46 +08:00
|
|
|
|
<span style={{
|
|
|
|
|
cursor: 'pointer',
|
|
|
|
|
color: '#007FFF',
|
|
|
|
|
display: record.trademarkModeName === '智能申请注册' ? 'unset' : 'none',
|
2025-06-13 16:43:21 +08:00
|
|
|
|
|
2025-06-27 15:47:46 +08:00
|
|
|
|
}} onClick={() => {
|
|
|
|
|
nav(`/trademark-ai-edit/${record.trademarkId}`, {
|
|
|
|
|
// state: {
|
|
|
|
|
// trademarkMode: record.trademarkMode, //申请类型id
|
|
|
|
|
// trademarkModeName: record.trademarkModeName, //申请类型名称
|
|
|
|
|
// trademarkId: record.trademarkId, //商标id
|
2025-06-13 16:43:21 +08:00
|
|
|
|
|
2025-06-27 15:47:46 +08:00
|
|
|
|
// }
|
|
|
|
|
})
|
|
|
|
|
// console.log(record.checkStatus);
|
2025-06-25 18:00:05 +08:00
|
|
|
|
|
2025-06-13 16:43:21 +08:00
|
|
|
|
|
|
|
|
|
|
2025-06-27 15:47:46 +08:00
|
|
|
|
}}>{
|
|
|
|
|
record.trademarkStatus == '2' || record.trademarkStatus == '3' ? '查看' : '编辑'
|
|
|
|
|
}
|
|
|
|
|
</span>
|
|
|
|
|
<span style={{
|
|
|
|
|
cursor: 'pointer',
|
|
|
|
|
color: '#007FFF',
|
|
|
|
|
position: 'relative',
|
|
|
|
|
// display: record.waitCorrectionCount > 0 ? 'unset' : 'none',
|
|
|
|
|
display: Number(record.trademarkStatus) >= 4 ? 'unset' : 'none',
|
|
|
|
|
marginLeft: 10,
|
|
|
|
|
}}
|
|
|
|
|
onClick={async () => {
|
|
|
|
|
setTrademarkId(record.trademarkId)
|
|
|
|
|
setVisible(true)
|
|
|
|
|
getBuySupplementList(1, record.trademarkId)
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
>进度沟通
|
|
|
|
|
<div style={{
|
|
|
|
|
display: record.waitCorrectionCount > 0 ? 'unset' : 'none',
|
|
|
|
|
}}>
|
|
|
|
|
<div style={{
|
|
|
|
|
|
|
|
|
|
position: 'absolute',
|
|
|
|
|
top: '-10px',
|
|
|
|
|
right: '-10px',
|
|
|
|
|
// fontSize:'16px',
|
|
|
|
|
background: 'red',
|
|
|
|
|
color: '#fff',
|
|
|
|
|
fontWeight: '700',
|
|
|
|
|
width: '20px',
|
|
|
|
|
height: '20px',
|
|
|
|
|
borderRadius: '50%',
|
|
|
|
|
display: 'flex',
|
|
|
|
|
justifyContent: 'center',
|
|
|
|
|
alignItems: 'center',
|
|
|
|
|
|
|
|
|
|
}}>
|
|
|
|
|
{record.waitCorrectionCount}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
2025-06-13 16:43:21 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
]
|
2025-06-27 15:47:46 +08:00
|
|
|
|
const [disabled, setDisabled] = useState(false)
|
|
|
|
|
const getSupplementDetail = async (id: string) => {
|
|
|
|
|
try {
|
|
|
|
|
const res: any = await supplementDetail(id)
|
|
|
|
|
console.log(res);
|
|
|
|
|
setDetailData(res)
|
|
|
|
|
if (res.correctionFiles) {
|
|
|
|
|
await getFileTypeByIdsArray(res.correctionFiles)
|
|
|
|
|
}
|
|
|
|
|
if (res.buyId) {
|
|
|
|
|
setDisabled(true)
|
|
|
|
|
const newData: any = await supplementDetail(res.buyId)
|
|
|
|
|
form.setFieldsValue({
|
|
|
|
|
upCorrectionRemark: newData.correctionRemark, // 内容
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
if (newData.correctionFiles) {
|
|
|
|
|
getUpFileTypeByIdsArray(newData.correctionFiles)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
setDisabled(false)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (error: any) {
|
|
|
|
|
|
|
|
|
|
if (error.response) {
|
|
|
|
|
const data = error.response.data;
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error(error)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-06-13 16:43:21 +08:00
|
|
|
|
const [data, setData] = useState<any>([])
|
2025-06-27 15:47:46 +08:00
|
|
|
|
// 沟通数组
|
|
|
|
|
const [communicationData, setCommunicationData] = useState<any>([])
|
|
|
|
|
// 沟通分页
|
|
|
|
|
const [communicationPage, setCommunicationPage] = useState(1)
|
|
|
|
|
// 沟通分页条数
|
|
|
|
|
const [communicationTotal, setCommunicationTotal] = useState(0)
|
|
|
|
|
const communicationColums: TableProps<any>['columns'] = [
|
|
|
|
|
{
|
|
|
|
|
title: '序号',
|
|
|
|
|
dataIndex: 'index',
|
|
|
|
|
key: 'index',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: 90,
|
|
|
|
|
render: (_text, _record, index) => (communicationPage - 1) * 10 + index + 1, // 显示序号,从1开始
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '资料主题',
|
|
|
|
|
dataIndex: 'correctionTitle',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: 200,
|
|
|
|
|
render: (text) => (
|
|
|
|
|
<div style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }} title={text}>{text}</div>
|
|
|
|
|
)
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '资料内容',
|
|
|
|
|
dataIndex: 'correctionRemark',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: 300,
|
|
|
|
|
render: (text) => (
|
|
|
|
|
<div style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }} title={text}>{text}</div>
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '发起时间',
|
|
|
|
|
dataIndex: 'createTime',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: 200,
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '当前进度',
|
|
|
|
|
dataIndex: 'correctionStatus',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: 100,
|
|
|
|
|
render: (text) => (
|
|
|
|
|
<>
|
|
|
|
|
|
|
|
|
|
<span> {text == '4' ? '不予受理' : text == '5' ? '已受理' : text == '6' ? '已发初审公告' : text == '7' ? '部分驳回' : text == '8' ? '全部驳回' : text == '9' ? '商标注册完成' : "未知"}</span>
|
|
|
|
|
</>
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '状态',
|
|
|
|
|
dataIndex: 'buyId',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: 100,
|
|
|
|
|
render: (text) => (
|
|
|
|
|
<>
|
|
|
|
|
|
|
|
|
|
<span style={{ color: '#DD0000', fontSize: '16px', fontWeight: '700', display: text == '' ? 'unset' : 'none' }}>待补充</span>
|
|
|
|
|
<span style={{ color: 'green', fontSize: '16px', fontWeight: '700', display: text == '' ? 'none' : 'unset' }}>已补充</span>
|
|
|
|
|
{/* <span> {text == '4' ? '不予受理' : text == '5' ? '已受理' : text == '6' ? '已发初审公告' : text == '7' ? '部分驳回' : text == '8' ? '全部驳回' : text == '9' ? '商标注册完成' : "未知"}</span> */}
|
|
|
|
|
</>
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '操作',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: 100,
|
|
|
|
|
render: (record: any) => (
|
|
|
|
|
<span className='transaction-order-table-btn' onClick={() => {
|
|
|
|
|
console.log(record);
|
|
|
|
|
setCorrectionReply(record.correctionReply)
|
|
|
|
|
// console.log(record.correctionId);
|
|
|
|
|
setCorrectionId(record.correctionId)
|
|
|
|
|
getSupplementDetail(record.correctionId)
|
|
|
|
|
setIsModalVisible(true)
|
|
|
|
|
setOrderId(record.orderId)
|
|
|
|
|
form.resetFields();
|
|
|
|
|
}}>查看内容</span>
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
]
|
2025-06-13 16:43:21 +08:00
|
|
|
|
const [loading, setLoading] = useState(false)
|
|
|
|
|
const [page, setPage] = useState(1)
|
2025-06-18 21:03:36 +08:00
|
|
|
|
const [total, setTotal] = useState(0)
|
2025-06-13 16:43:21 +08:00
|
|
|
|
const getTrademarkList = async (page: any) => {
|
|
|
|
|
try {
|
|
|
|
|
setLoading(true)
|
2025-06-24 16:16:57 +08:00
|
|
|
|
setData([])
|
2025-06-13 16:43:21 +08:00
|
|
|
|
const res: any = await trademarkList({
|
|
|
|
|
keywords: state && state.keywords ? state.keywords : '',
|
|
|
|
|
rows: 10,
|
|
|
|
|
page: page
|
|
|
|
|
})
|
|
|
|
|
console.log('结果', res);
|
|
|
|
|
setData(res.rows)
|
2025-06-18 21:03:36 +08:00
|
|
|
|
setTotal(res.total)
|
2025-06-13 16:43:21 +08:00
|
|
|
|
setLoading(false)
|
|
|
|
|
|
|
|
|
|
} catch (error: any) {
|
|
|
|
|
setLoading(false)
|
|
|
|
|
if (error.response) {
|
|
|
|
|
const data = error.response.data;
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error(error)
|
|
|
|
|
}
|
|
|
|
|
} finally {
|
|
|
|
|
setLoading(false)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// useEffect(() => {
|
|
|
|
|
// // console.log(state.keywords);
|
|
|
|
|
// getTrademarkList(1)
|
|
|
|
|
// // console.log(1);
|
|
|
|
|
|
|
|
|
|
// }, [])
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
// console.log(state.keywords);
|
|
|
|
|
getTrademarkList(1)
|
|
|
|
|
}, [state])
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Spin tip="正在处理,请稍后..." size="small" spinning={loading}>
|
|
|
|
|
<div className='appElectionBox' style={{ height: `${height}px`, overflow: 'auto' }}>
|
|
|
|
|
{contextHolder}
|
|
|
|
|
|
|
|
|
|
{data.length <= 0 ? (<div style={{ height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center', flexDirection: 'column' }}>
|
|
|
|
|
|
|
|
|
|
<img src={nothingImg} alt="" width={368} height={355} />
|
|
|
|
|
<div style={{
|
|
|
|
|
marginTop: 50,
|
|
|
|
|
fontSize: 16,
|
|
|
|
|
color: '#D0D0D0'
|
|
|
|
|
}}>暂无数据</div>
|
|
|
|
|
</div>) : (
|
|
|
|
|
<div className='' >
|
|
|
|
|
<div style={{
|
|
|
|
|
height: `${height - 80}px`,
|
|
|
|
|
// background: "pink" ,
|
|
|
|
|
paddingTop: 20
|
|
|
|
|
}}>
|
|
|
|
|
|
|
|
|
|
<Table
|
|
|
|
|
scroll={{ y: `${height - 150}px` }}
|
|
|
|
|
dataSource={data}
|
|
|
|
|
columns={columns}
|
|
|
|
|
bordered
|
|
|
|
|
// pagination={{
|
|
|
|
|
// defaultPageSize: 10, // 设置默认一页显示 5 条数据
|
|
|
|
|
// }}
|
|
|
|
|
pagination={false} // 不显示分页
|
|
|
|
|
style={{ textAlign: 'center' }} // 设置表格内容居中显示
|
|
|
|
|
rowKey="trademarkId" // 指定数据项的唯一标识符
|
|
|
|
|
locale={{ emptyText: '暂无数据' }}
|
|
|
|
|
></Table>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div className='product-release-pagination'>
|
|
|
|
|
<Pagination
|
|
|
|
|
showSizeChanger={false}
|
2025-06-18 21:03:36 +08:00
|
|
|
|
current={page} total={total} defaultPageSize={10} onChange={(page) => {
|
2025-06-13 16:43:21 +08:00
|
|
|
|
setPage(page)
|
|
|
|
|
getTrademarkList(page)
|
|
|
|
|
}} />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
2025-06-25 18:00:05 +08:00
|
|
|
|
<Modal
|
|
|
|
|
title="失败原因"
|
|
|
|
|
centered
|
|
|
|
|
open={modal}
|
|
|
|
|
footer={null}
|
|
|
|
|
onCancel={() => { setModal(false) }}
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
失败原因:{checkRemark}
|
|
|
|
|
</Modal>
|
2025-06-27 15:47:46 +08:00
|
|
|
|
<Modal
|
|
|
|
|
title="进度沟通"
|
|
|
|
|
centered
|
|
|
|
|
open={visible}
|
|
|
|
|
footer={null}
|
|
|
|
|
onCancel={() => { setVisible(false) }}
|
|
|
|
|
width={1300}
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
<Table
|
|
|
|
|
scroll={{ y: `${height - 150}px` }}
|
|
|
|
|
dataSource={communicationData}
|
|
|
|
|
columns={communicationColums}
|
|
|
|
|
bordered
|
|
|
|
|
// pagination={{
|
|
|
|
|
// defaultPageSize: 10, // 设置默认一页显示 5 条数据
|
|
|
|
|
// }}
|
|
|
|
|
pagination={
|
|
|
|
|
{
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
total: communicationTotal,
|
|
|
|
|
onChange: (currentPage) => {
|
|
|
|
|
setCommunicationPage(currentPage);
|
|
|
|
|
getBuySupplementList(currentPage, trademarkId)
|
|
|
|
|
},
|
|
|
|
|
showSizeChanger: false,
|
|
|
|
|
current: communicationPage
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
style={{ textAlign: 'center' }} // 设置表格内容居中显示
|
|
|
|
|
rowKey="trademarkId" // 指定数据项的唯一标识符
|
|
|
|
|
locale={{ emptyText: '暂无数据' }}
|
|
|
|
|
></Table>
|
|
|
|
|
</Modal>
|
|
|
|
|
<Modal title={'进度沟通'}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
open={isModalVisible}
|
|
|
|
|
footer={null} // 将 footer 设置为 null 来隐藏自带按钮
|
|
|
|
|
width={1000}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setIsModalVisible(false);
|
|
|
|
|
// 清空表单
|
|
|
|
|
form.resetFields();
|
|
|
|
|
}}
|
|
|
|
|
centered
|
|
|
|
|
>
|
|
|
|
|
<div>
|
|
|
|
|
{/* {correctionId}
|
|
|
|
|
{CorrectionType} */}
|
|
|
|
|
<div className='editModal-title'>
|
|
|
|
|
<div className='editModal-title-box'></div>
|
|
|
|
|
<div className='editModal-title-name'>平台需要您补充的内容说明</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className='correctionTitleBox'>
|
|
|
|
|
<div className='correctionTitle'>主题</div>
|
|
|
|
|
<Input value={detailData.correctionTitle} style={{
|
|
|
|
|
height: 40,
|
|
|
|
|
color: 'black'
|
|
|
|
|
}}
|
|
|
|
|
disabled
|
|
|
|
|
></Input>
|
|
|
|
|
</div>
|
|
|
|
|
<div className='correctionRemarkBox'>
|
|
|
|
|
<div className='correctionTitle'>内容</div>
|
|
|
|
|
<TextArea value={detailData.correctionRemark} style={{
|
|
|
|
|
height: 100,
|
|
|
|
|
color: 'black',
|
|
|
|
|
resize: 'none'
|
|
|
|
|
}}
|
|
|
|
|
disabled
|
|
|
|
|
></TextArea>
|
|
|
|
|
</div>
|
|
|
|
|
<div className='upFileBox'>
|
|
|
|
|
<div className='correctionTitle'>附件</div>
|
|
|
|
|
{fileList.length > 0 ? (
|
|
|
|
|
// <div>材料列表</div>
|
|
|
|
|
<div>
|
|
|
|
|
{
|
|
|
|
|
fileList.map((item: any) => {
|
|
|
|
|
return (
|
|
|
|
|
<div
|
|
|
|
|
key={item.fileId}
|
|
|
|
|
style={{
|
|
|
|
|
// background: 'pink',
|
|
|
|
|
marginBottom: 5,
|
|
|
|
|
maxWidth: 800,
|
|
|
|
|
overflow: 'hidden',
|
|
|
|
|
textOverflow: 'ellipsis',
|
|
|
|
|
whiteSpace: 'nowrap',
|
|
|
|
|
cursor: 'pointer',
|
|
|
|
|
color: '#1B8BD2',
|
|
|
|
|
//下划线
|
|
|
|
|
textDecoration: 'underline',
|
|
|
|
|
}}
|
|
|
|
|
title={item.fileName}
|
|
|
|
|
onClick={() => {
|
|
|
|
|
|
|
|
|
|
window.open(showImage(item.fileId, false))
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item.fileName}
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
) : (
|
|
|
|
|
<div style={{ fontSize: 18, fontWeight: 700 }}>
|
|
|
|
|
无
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
<div style={{
|
|
|
|
|
display: correctionReply == '0' && disabled ? 'none' : 'unset'
|
|
|
|
|
}}>
|
|
|
|
|
<div className='editModal-title' style={{ marginTop: 30 }}>
|
|
|
|
|
<div className='editModal-title-box'></div>
|
|
|
|
|
<div className='editModal-title-name'>在下面填写您补充的内容</div>
|
|
|
|
|
</div>
|
|
|
|
|
<Form
|
|
|
|
|
name="basic"
|
|
|
|
|
form={form}
|
|
|
|
|
layout="vertical"
|
|
|
|
|
onFinish={(value) => {
|
|
|
|
|
const uids = upFileArray.map((file: any) => file.response.data.fileId).join(',');
|
|
|
|
|
// console.log('提取的 uid 字符串:', uids);
|
|
|
|
|
submitData({
|
|
|
|
|
correctionFiles: uids,
|
|
|
|
|
correctionRemark: value.upCorrectionRemark,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
onFinishFailed={() => {
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: '内容和附件至少需要填写或上传一项',
|
|
|
|
|
})
|
|
|
|
|
}}
|
|
|
|
|
autoComplete="off"
|
|
|
|
|
>
|
|
|
|
|
<div className='correctionRemarkBox'>
|
|
|
|
|
<div className='correctionTitle'>内容</div>
|
|
|
|
|
<Form.Item
|
|
|
|
|
|
|
|
|
|
name="upCorrectionRemark"
|
|
|
|
|
// rules={[
|
|
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
// validator: (rule, value, callback) => validateContentOrFile(rule, value, callback, form),
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
|
|
// ]}
|
|
|
|
|
rules={correctionReply == '0' ? [] : [
|
|
|
|
|
{
|
|
|
|
|
validator: (rule, value, callback) => validateContentOrFile(rule, value, callback, form),
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
<TextArea style={{
|
|
|
|
|
height: 100,
|
|
|
|
|
resize: 'none',
|
|
|
|
|
width: 900,
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
placeholder='请输入需要补充内容'
|
|
|
|
|
disabled={correctionReply == '0'}
|
|
|
|
|
></TextArea>
|
|
|
|
|
</Form.Item>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div className='correctionRemarkBox' style={{
|
|
|
|
|
marginTop: 0
|
|
|
|
|
}}>
|
|
|
|
|
<div className='correctionTitle'>附件</div>
|
|
|
|
|
<div style={{
|
|
|
|
|
maxWidth: 800,
|
|
|
|
|
overflow: 'hidden',
|
|
|
|
|
textOverflow: 'ellipsis',
|
|
|
|
|
whiteSpace: 'nowrap',
|
|
|
|
|
}}>
|
|
|
|
|
<Form.Item
|
|
|
|
|
|
|
|
|
|
name="upFile"
|
|
|
|
|
// rules={[
|
|
|
|
|
// // { required: true, message: '请上传附件' },
|
|
|
|
|
// {
|
|
|
|
|
// validator: (rule, value, callback) => validateContentOrFile(rule, value, callback, form),
|
|
|
|
|
// },
|
|
|
|
|
// ]}
|
|
|
|
|
rules={correctionReply === '0' ? [] : [
|
|
|
|
|
{
|
|
|
|
|
validator: (rule, value, callback) => validateContentOrFile(rule, value, callback, form),
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
<Upload
|
|
|
|
|
name="file"
|
|
|
|
|
action={uploadFileUrl()}
|
|
|
|
|
defaultFileList={upFileArray}
|
|
|
|
|
onChange={(info) => {
|
|
|
|
|
setUpFileArray(info.fileList)
|
|
|
|
|
// console.log(info.fileList);
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
headers={{ 'Auth': `Bearer ${token}` }}
|
|
|
|
|
disabled={correctionReply == '0'}
|
|
|
|
|
>
|
|
|
|
|
<Button icon={<UploadOutlined />}>上传附件</Button>
|
|
|
|
|
</Upload>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</Form.Item>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<Form.Item
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
<div style={{
|
|
|
|
|
display: 'flex',
|
|
|
|
|
justifyContent: 'flex-end',
|
|
|
|
|
gap: 10,
|
|
|
|
|
// marginTop: 20
|
|
|
|
|
}}>
|
|
|
|
|
<div style={{
|
|
|
|
|
display: disabled ? 'none' : 'flex'
|
|
|
|
|
}}>
|
|
|
|
|
<Button onClick={() => {
|
|
|
|
|
setIsModalVisible(false)
|
|
|
|
|
form.resetFields();
|
|
|
|
|
}}>取消</Button>
|
|
|
|
|
<Button type="primary" htmlType="submit" style={{
|
|
|
|
|
marginLeft: 10
|
|
|
|
|
}} >{correctionReply == '0' ? '已读' : '提交'}</Button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</Form.Item>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</Form>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
2025-06-13 16:43:21 +08:00
|
|
|
|
</Spin>
|
2025-05-16 17:48:03 +08:00
|
|
|
|
)
|
|
|
|
|
}
|