This commit is contained in:
lyp 2025-07-17 14:44:29 +08:00
parent 56c7e4389d
commit b0600a8d5f
4 changed files with 630 additions and 292 deletions

View File

@ -6,6 +6,9 @@ import { showImage, uploadFileUrl } from '../../request/request'
import { UploadOutlined } from '@ant-design/icons';
import { Modal } from 'antd';
import type { TableProps, } from 'antd';
import talk from '../../static/talk.png'
import nogoods from '../../static/nogoods.png'
import './trademark-edit.css'
import {
message, Spin,
Pagination,
@ -81,7 +84,7 @@ export default function TrademarkMall() {
// 自定义验证函数
const validateContentOrFile = (_rule: any, _value: any, callback: (error?: string) => void, form: any) => {
const { upCorrectionRemark, upFile } = form.getFieldsValue();
if (upCorrectionRemark || upFile ) {
if (upCorrectionRemark || upFile) {
callback();
} else {
callback('内容和附件至少需要填写或上传一项');
@ -206,315 +209,316 @@ export default function TrademarkMall() {
const { state } = useLocation()
const nav = useNavigate();
const height = window.innerHeight - 180;
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,
},
},
{
title: '类型/名称',
fixed: 'left',
dataIndex: 'trademarkName',
key: 'trademarkName',
align: 'center',
ellipsis: {
showTitle: true,
},
width: 200,
render: (_text, record) => (
<span>
{record.trademarkType == 'text' ? '文字' : record.trademarkType == 'image' ? '图形' : record.trademarkType == 'text-image' ? '图文' : ''} <span style={{
display: record.trademarkType == 'image' ? 'none' : 'unset',
}}>
<span style={{
display: record.trademarkType == '' ? 'none' : 'unset',
}}>/</span>
{record.trademarkName}</span>
{/* {record} */}
</span>
)
},
{
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>
)
})
) : '暂无'
)
},
{
title: '商标图样',
dataIndex: 'trademarkPhoto',
align: 'center',
key: 'trademarkPhoto',
width: 200,
render: (text) => (
text ? (
<Image src={showImage(text, false)}
height={100}
style={{
maxWidth: 200,
}}
>
</Image>
) : '暂无'
)
},
{
title: '状态',
dataIndex: 'trademarkStatus',
align: 'center',
key: 'trademarkStatus',
width: 110,
render: (text, record) => (
<div>
{text == '-1' ?
<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>
: text == '0' ?
<span
style={{
color: 'skyblue',
}}
></span>
: text == '1' ?
<span
style={{
color: 'green',
}}
></span>
: text == '2' ?
<span
style={{
color: 'rgb(0, 127, 255)',
}}
></span>
: text == '3' ?
<span
style={{
color: 'rgb(136, 185, 233)',
}}
></span>
: text == '4' ?
<span
style={{
color: 'red',
}}
></span>
: text == '5' ?
<span
style={{
color: 'rgb(136, 185, 233)',
}}
></span>
: text == '6' ?
<span
style={{
color: 'rgb(136, 185, 233)',
}}
></span>
: text == '7' ?
<span
style={{
color: 'rgb(136, 185, 233)',
}}
></span>
: text == '8' ?
<span
style={{
color: 'rgb(136, 185, 233)',
}}
></span>
: text == '9' ?
<span
style={{
color: 'rgb(136, 185, 233)',
}}
></span> : '未知'
}
</div>
)
},
// 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: ['trademarkUserDTO', 'name'],
// title: '服务类型',
// dataIndex: 'trademarkModeName',
// fixed: 'left',
// align: 'center',
// // 修改 key 保证唯一性
// key: 'trademarkUserDTOName',
// key: 'trademarkModeName',
// width: 150,
// render: (text) => (
// ellipsis: {
// showTitle: true,
// },
// },
// {
// title: '类型/名称',
// fixed: 'left',
// dataIndex: 'trademarkName',
// key: 'trademarkName',
// align: 'center',
// ellipsis: {
// showTitle: true,
// },
// width: 200,
// render: (_text, record) => (
// <span>
// {text || '-'}
// {record.trademarkType == 'text' ? '文字' : record.trademarkType == 'image' ? '图形' : record.trademarkType == 'text-image' ? '图文' : ''}
// <span style={{
// display: record.trademarkType == 'image' ? 'none' : 'unset',
// }}>
// <span style={{
// display: record.trademarkType == '' ? 'none' : 'unset',
// }}>/</span>
// {record.trademarkName}</span>
// {/* {record} */}
// </span>
// )
// },
// {
// 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>
// )
// })
// ) : '暂无'
// )
// },
// {
// title: '商标图样',
// dataIndex: 'trademarkPhoto',
// align: 'center',
// key: 'trademarkPhoto',
// width: 200,
// render: (text) => (
// text ? (
// <Image src={showImage(text, false)}
// height={100}
// style={{
// maxWidth: 200,
// }}
// >
// </Image>
// ) : '暂无'
// )
// },
// {
// title: '状态',
// dataIndex: 'trademarkStatus',
// align: 'center',
// key: 'trademarkStatus',
// width: 110,
// render: (text, record) => (
// <div>
// {text == '-1' ?
// <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>
// : text == '0' ?
// <span
// style={{
// color: 'skyblue',
// }}
// >待付款</span>
// : text == '1' ?
// <span
// style={{
// color: 'green',
// }}
// >已付款</span>
// : text == '2' ?
// <span
// style={{
// color: 'rgb(0, 127, 255)',
// }}
// >审核中</span>
// : text == '3' ?
// <span
// style={{
// color: 'rgb(136, 185, 233)',
// }}
// >提交至商标局</span>
// : text == '4' ?
// <span
// style={{
// color: 'red',
// }}
// >不予受理</span>
// : text == '5' ?
// <span
// style={{
// color: 'rgb(136, 185, 233)',
// }}
// >已受理</span>
// : text == '6' ?
// <span
// style={{
// color: 'rgb(136, 185, 233)',
// }}
// >已发初审公告</span>
// : text == '7' ?
// <span
// style={{
// color: 'rgb(136, 185, 233)',
// }}
// >部分驳回</span>
// : text == '8' ?
// <span
// style={{
// color: 'rgb(136, 185, 233)',
// }}
// >全部驳回</span>
// : text == '9' ?
// <span
// style={{
// color: 'rgb(136, 185, 233)',
// }}
// >已下证</span> : '未知'
// }
// </div>
// )
// },
// // {
// // title: '申请人证件号',
// // title: '申请人',
// // // 使用数组形式访问嵌套对象属性
// // dataIndex: ['trademarkUserDTO', 'name'],
// // align: 'center',
// // key: 'appOrderId',
// // // 修改 key 保证唯一性
// // key: 'trademarkUserDTOName',
// // width: 150,
// // render: (text) => (
// // <span>
// // {text ? text : '未完善'}
// // {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>
// // )
// // },
// {
// title: '联系人',
// // 使用数组形式访问嵌套对象属性
// dataIndex: ['trademarkUserDTO', 'contactName'],
// title: '操作',
// // dataIndex: 'contractManagementId',
// align: 'center',
// // 修改 key 保证唯一性
// key: 'trademarkUserDTOContactName',
// // key: 'appOrderId',
// width: 150,
// render: (text) => (
// <span>
// {text || '-'}
// </span>
// )
// },
{
title: '操作',
// dataIndex: 'contractManagementId',
align: 'center',
// key: 'appOrderId',
width: 150,
// bordeLeft: true,
fixed: 'right',
render: (record) => (
<div style={{
// // bordeLeft: true,
// fixed: 'right',
// render: (record) => (
// <div style={{
}}>
// }}>
<span style={{
cursor: 'pointer',
color: '#007FFF',
display: record.trademarkModeName === '智能申请注册' ? 'unset' : 'none',
// <span style={{
// cursor: 'pointer',
// color: '#007FFF',
// display: record.trademarkModeName === '智能申请注册' ? 'unset' : 'none',
}} onClick={() => {
nav(`/trademark-ai-edit/${record.trademarkId}`, {
// state: {
// trademarkMode: record.trademarkMode, //申请类型id
// trademarkModeName: record.trademarkModeName, //申请类型名称
// trademarkId: record.trademarkId, //商标id
// }} onClick={() => {
// nav(`/trademark-ai-edit/${record.trademarkId}`, {
// // state: {
// // trademarkMode: record.trademarkMode, //申请类型id
// // trademarkModeName: record.trademarkModeName, //申请类型名称
// // trademarkId: record.trademarkId, //商标id
// // }
// })
// // console.log(record.checkStatus);
// }}>{
// record.trademarkStatus == '2' || record.trademarkStatus == '3' || record.trademarkStatus == '4' || record.trademarkStatus == '5' || record.trademarkStatus == '6' || record.trademarkStatus == '7' || record.trademarkStatus == '8' || record.trademarkStatus == '9' ? '查看' : '编辑'
// }
})
// console.log(record.checkStatus);
// </span>
// <span style={{
// cursor: 'pointer',
// color: '#007FFF',
// position: 'relative',
// // display: record.waitCorrectionCount > 0 ? 'unset' : 'none',
// display: Number(record.trademarkStatus) >= 4 && record.trademarkModeName === '智能申请注册' ? 'unset' : 'none',
// marginLeft: 10,
// }}
// onClick={async () => {
// setTrademarkId(record.trademarkId)
// setVisible(true)
// getBuySupplementList(1, record.trademarkId)
// }}
}}>{
record.trademarkStatus == '2' || record.trademarkStatus == '3' || record.trademarkStatus == '4' || record.trademarkStatus == '5' || record.trademarkStatus == '6' || record.trademarkStatus == '7' || record.trademarkStatus == '8' || record.trademarkStatus == '9' ? '查看' : '编辑'
}
</span>
<span style={{
cursor: 'pointer',
color: '#007FFF',
position: 'relative',
// >进度沟通
// <div style={{
// 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={{
>
<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',
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>
}}>
{record.waitCorrectionCount}
</div>
</div>
</span>
</div>
// )
)
},
]
// },
// ]
const [disabled, setDisabled] = useState(false)
const getSupplementDetail = async (id: string) => {
try {
@ -649,6 +653,9 @@ export default function TrademarkMall() {
]
const [loading, setLoading] = useState(false)
const [page, setPage] = useState(1)
// useEffect(() => {
// getTrademarkList(page)
// }, [page])
const [total, setTotal] = useState(0)
const getTrademarkList = async (page: any) => {
try {
@ -694,7 +701,7 @@ export default function TrademarkMall() {
return (
<Spin tip="正在处理,请稍后..." size="small" spinning={loading}>
<div className='appElectionBox' style={{ height: `${height}px`, overflow: 'auto' }}>
<div className='appElectionBox' style={{ height: `${height}px`, overflow: 'auto', background: 'none', padding: '0' }}>
{contextHolder}
{data.length <= 0 ? (<div style={{ height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center', flexDirection: 'column' }}>
@ -707,13 +714,266 @@ export default function TrademarkMall() {
}}></div>
</div>) : (
<div className='' >
<div style={{
{/* <div style={{
height: `${height - 80}px`,
// background: "pink" ,
paddingTop: 20
}}> */}
<div className='trademarkGoodsBox' style={{
height: `${height - 80}px`,
// background: "pink" ,
// paddingTop: 20,
paddingBottom: 20,
overflowY: 'auto'
}}>
{
data.map((item: any) => {
return (
<div className='trademarksmallBox' key={item.trademarkId}>
<div className='trademarkBoxTop'>
<div className='trademarkBoxTopL' >
<span>
{item.trademarkType == 'text' ? '文字' : item.trademarkType == 'image' ? '图形' : item.trademarkType == 'text-image' ? '图文' : ''}
<span style={{
display: item.trademarkType == 'image' ? 'none' : 'unset',
}}>
<span style={{
display: item.trademarkType == '' ? 'none' : 'unset',
}}>/</span>
<span title={
item.trademarkName
}
style={{
cursor: 'pointer'
}}
>{item.trademarkName}</span>
</span>
{/* {record} */}
</span>
</div>
<div
onClick={async () => {
setTrademarkId(item.trademarkId)
setVisible(true)
getBuySupplementList(1, item.trademarkId)
}}
style={{
cursor: 'pointer',
// color: '#007FFF',
position: 'relative',
// display: record.waitCorrectionCount > 0 ? 'unset' : 'none',
display: Number(item.trademarkStatus) >= 4 ? 'unset' : 'none',
}}
>
<div style={{
display: item.waitCorrectionCount > 0 ? 'unset' : 'none',
}}>
<div style={{
<Table
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',
}}>
{item.waitCorrectionCount}
</div>
</div>
<div style={{
display: 'flex',
}}>
<div style={{
marginTop: 5,
// background:'red'
marginRight: 5
}}>
<img src={talk} alt="" height={18} />
</div>
<div
>
</div>
</div>
</div>
</div>
<div className='tradermarkBoxCen'>
<div>{item.trademarkModeName}</div>
<div style={{
cursor: 'pointer',
color: '#007FFF',
display: item.trademarkModeName === '智能申请注册' ? 'unset' : 'none',
}} onClick={() => {
nav(`/trademark-ai-edit/${item.trademarkId}`, {
// state: {
// trademarkMode: record.trademarkMode, //申请类型id
// trademarkModeName: record.trademarkModeName, //申请类型名称
// trademarkId: record.trademarkId, //商标id
// }
})
// console.log(record.checkStatus);
}}>
{
item.trademarkStatus == '2' || item.trademarkStatus == '3' || item.trademarkStatus == '4' || item.trademarkStatus == '5' || item.trademarkStatus == '6' || item.trademarkStatus == '7' || item.trademarkStatus == '8' || item.trademarkStatus == '9' ? '查看' : '编辑'
}
</div>
</div>
<div className='tradermarkBoxImg'>
<div>
<Image
className="trademark-image"
src={item.trademarkPhoto ? showImage(item.trademarkPhoto, false) : nogoods}
style={{ maxWidth: '100%' }}
height={150}
></Image>
</div>
<div style={{
marginTop: 20,
fontSize: 16,
color: '#9B833C'
}}>
{item.trademarkStatus == '-1' ?
<div style={{
color: 'red',
cursor: 'pointer',
}}
title='点击查看原因'
onClick={() => {
setCheckRemark(item.checkRemark)
setModal(true)
// console.log(record.checkRemark);
}}
>
<div title='点击查看原因' style={{
position: 'relative',
// background:'pink'
}}>
<div style={{
position: 'absolute',
top: 25,
fontSize: 12,
left: 30
}}>
()
</div>
(退)</div>
</div>
: item.trademarkStatus == '0' ?
<span
style={{
// color: 'skyblue',
}}
></span>
: item.trademarkStatus == '1' ?
<span
style={{
// color: 'green',
}}
></span>
: item.trademarkStatus == '2' && item.trademarkMode == '1' ?
<span
style={{
// color: 'rgb(0, 127, 255)',
}}
></span>
: item.trademarkStatus == '2' && item.trademarkMode != '1' ?
<span
style={{
// color: 'rgb(0, 127, 255)',
}}
>线</span>
: item.trademarkStatus == '3' && item.trademarkMode == '1' ?
<span
style={{
// color: 'rgb(136, 185, 233)',
}}
></span>
: item.trademarkStatus == '3' && item.trademarkMode != '1' ?
<span
style={{
// color: 'rgb(136, 185, 233)',
}}
></span>
: item.trademarkStatus == '4' ?
<span
style={{
// color: 'red',
}}
></span>
: item.trademarkStatus == '5' ?
<span
style={{
// color: 'rgb(136, 185, 233)',
}}
></span>
: item.trademarkStatus == '6' ?
<span
style={{
// color: 'rgb(136, 185, 233)',
}}
></span>
: item.trademarkStatus == '7' ?
<span
style={{
// color: 'rgb(136, 185, 233)',
}}
></span>
: item.trademarkStatus == '8' ?
<span
style={{
// color: 'rgb(136, 185, 233)',
}}
></span>
: item.trademarkStatus == '9' ?
<span
style={{
// color: 'rgb(136, 185, 233)',
}}
></span> : '未知'
}
</div>
</div>
<div className='tradermarkBoxBot'>
<div className='tradermarkBoxBotB'>
{
item.trademarkTypeDTOS.length > 0 ? (
item.trademarkTypeDTOS.map((item: any) => {
return (
<div key={item.id} title={item.name}>
{item.code} : {item.name}
</div>
)
})
) : '暂无'
}
</div>
</div>
</div>
)
})
}
{/* </div> */}
{/* <Table
scroll={{ y: `${height - 150}px` }}
dataSource={data}
columns={columns}
@ -725,10 +985,12 @@ export default function TrademarkMall() {
style={{ textAlign: 'center' }} // 设置表格内容居中显示
rowKey="trademarkId" // 指定数据项的唯一标识符
locale={{ emptyText: '暂无数据' }}
></Table>
></Table> */}
</div>
<div className='product-release-pagination'>
<div className='product-release-pagination' style={{
borderTop: '1px solid #d6d6d6ff'
}}>
<Pagination
showSizeChanger={false}
current={page} total={total} defaultPageSize={10} onChange={(page) => {
@ -888,7 +1150,7 @@ export default function TrademarkMall() {
// const uids = upFileArray.map((file: any) => file.response.data.fileId).join(',');
// console.log('提取的 uid 字符串:', uids);
submitData({
correctionFiles:value.upFile ? value.upFile : '',
correctionFiles: value.upFile ? value.upFile : '',
correctionRemark: value.upCorrectionRemark,
})

View File

@ -64,3 +64,79 @@
justify-content: center;
margin-top: 50px;
}
.trademarkGoodsBox {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 10px;
}
.trademarksmallBox {
/* 可以添加其他样式 */
max-height: 470px;
background-color: #ffffff;
/* border-radius: 8px; */
/* padding: 16px; */
/* cursor: pointer; */
}
.trademarkBoxTop {
height: 30px;
padding: 10px;
background-color: #F7F1DE;
display: flex;
align-items: center;
justify-content: space-between;
color: #E7AD00;
font-size: 16px;
}
.trademarkBoxTopL {
width: 65%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
/* background-color: red; */
}
.tradermarkBoxCen {
height: 20px;
padding: 10px;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 16px;
/* background-color: pink; */
}
.tradermarkBoxImg {
height: 200px;
padding: 20px;
/* background-color: skyblue; */
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.tradermarkBoxBot {
height: 100px;
padding: 20px;
background-color: #ffffff;
}
.tradermarkBoxBotB{
/* width: 100%; */
height: 100%;
background-color: #F9F9F9;
overflow-y: auto;
padding: 10px;
box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
line-height: 25px;
font-size: 16px;
}

BIN
src/static/nogoods.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/static/talk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB