Compare commits

..

6 Commits

Author SHA1 Message Date
lyp
3c8abb7362 暂存 2025-07-17 16:52:36 +08:00
lyp
bdb8b5214a 暂存 2025-07-17 14:56:47 +08:00
lyp
632479fbd3 暂存 2025-07-17 14:52:05 +08:00
lyp
b0600a8d5f 暂存 2025-07-17 14:44:29 +08:00
lyp
56c7e4389d 暂存 2025-07-16 17:14:01 +08:00
lyp
3c8d260100 暂存 2025-07-16 16:36:57 +08:00
11 changed files with 783 additions and 315 deletions

View File

@ -127,6 +127,16 @@ export default function PackageModal() {
return <div>{text / 100}</div> return <div>{text / 100}</div>
} }
}, },
{
title: '有效期至',
dataIndex: 'packageExpireTime',
key: 'packageOrderId',
// 居中显示
align: 'center',
render: (text) => {
return <div>{text?text:"——"} </div>
}
},
{ {
title: '剩余次数', title: '剩余次数',
dataIndex: 'packageTotalSurplusCount', dataIndex: 'packageTotalSurplusCount',
@ -214,14 +224,14 @@ export default function PackageModal() {
align: 'center', align: 'center',
width: 200, width: 200,
}, },
{ {
title: '使用数量', title: '使用数量',
dataIndex: 'itemUseCount', dataIndex: 'itemUseCount',
key: 'packageOrderItemId', key: 'packageOrderItemId',
align: 'center', align: 'center',
width: 100, width: 100,
}, },
{ {
title: '剩余数量', title: '剩余数量',
dataIndex: 'itemCount', dataIndex: 'itemCount',
key: 'packageOrderItemId', key: 'packageOrderItemId',

View File

@ -147,6 +147,7 @@ export default function AppEdit() {
const [filesInfo, setFilesInfo] = useState<any>({ const [filesInfo, setFilesInfo] = useState<any>({
sourceCodeDocFile: '',//源码 sourceCodeDocFile: '',//源码
softwareDocFile: '',//软件 softwareDocFile: '',//软件
thereAnyFileL:''
}) })
const [checkRemark, setCheckRemark] = useState('') //未通过原因 const [checkRemark, setCheckRemark] = useState('') //未通过原因
// 文件想想请 // 文件想想请
@ -184,6 +185,7 @@ export default function AppEdit() {
setFilesInfo({ setFilesInfo({
sourceCodeDocFile: res.sourceCodeDocFile,//源码 sourceCodeDocFile: res.sourceCodeDocFile,//源码
softwareDocFile: res.softwareDocFile,//软件 softwareDocFile: res.softwareDocFile,//软件
thereAnyFile:res.thereAnyFile //是否有材料
}) })
setEditProcess(Number(res.appOrderProgress) + 1) setEditProcess(Number(res.appOrderProgress) + 1)
setCheckStatus(res.checkStatus) setCheckStatus(res.checkStatus)

View File

@ -145,7 +145,7 @@ export default function AppElectron() {
width: 150, width: 150,
render: (text) => ( render: (text) => (
<span> <span>
{text == '1' ? '未付款' : text == '2' ? '资料填写中' : text == '3' ? '资料审核中' : text == '4' ? '线下申请中' : text == '5' ? '已下证' : '未知'} {text == '1' ? '未付款' : text == '2' ? '资料填写中' : text == '3' ? '资料审核中' : text == '4' ? '待签字盖章' : text == '5' ? '线下申请中' : text == '6' ? '平台已下证' :'未知'}
</span> </span>
) )
}, },
@ -180,7 +180,7 @@ export default function AppElectron() {
// background: 'red', // background: 'red',
color: '#007FFF', color: '#007FFF',
position: 'relative', position: 'relative',
display: record.checkStatus == '2' && record.appOrderStatus != '5'? 'unset' : 'none', display: record.checkStatus == '2' && record.appOrderStatus != '6'? 'unset' : 'none',
}} }}
onClick={() => { onClick={() => {
@ -219,7 +219,7 @@ export default function AppElectron() {
cursor: 'pointer', cursor: 'pointer',
color: '#007FFF', color: '#007FFF',
display: record.appOrderStatus == '5' ? 'unset' : 'none', display: record.appOrderStatus == '6' ? 'unset' : 'none',
}} }}
onClick={() => { onClick={() => {

View File

@ -38,8 +38,8 @@ export default function AppCompany(props: any) {
} }
return Promise.resolve(); return Promise.resolve();
}; };
// 定义 beforeUpload 函数 // 定义 beforeUpload上传证件 函数
const beforeUpload = (file: any) => { const beforeUploadcompanyPhoto = (file: any) => {
const isJpgOrPng = ['image/jpeg', 'image/png', 'image/bmp'].includes(file.type); const isJpgOrPng = ['image/jpeg', 'image/png', 'image/bmp'].includes(file.type);
if (!isJpgOrPng) { if (!isJpgOrPng) {
message.error('只能上传 JPG、JPEG、PNG、BMP 格式的文件!'); message.error('只能上传 JPG、JPEG、PNG、BMP 格式的文件!');
@ -56,6 +56,25 @@ export default function AppCompany(props: any) {
} }
return isJpgOrPng && isLt4M; return isJpgOrPng && isLt4M;
};
// 定义 beforeUpload上传授权书 函数
const beforeUploadcompanyAuth = (file: any) => {
const isJpgOrPng = ['image/jpeg', 'image/png', 'image/bmp'].includes(file.type);
if (!isJpgOrPng) {
message.error('只能上传 JPG、JPEG、PNG、BMP 格式的文件!');
form.setFieldsValue({
'companyAuth': '',
});
}
const isLt4M = file.size / 1024 / 1024 < 4;
if (!isLt4M) {
message.error('文件大小不能超过 4MB!');
form.setFieldsValue({
'companyAuth': '',
});
}
return isJpgOrPng && isLt4M;
}; };
// type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0]; // type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
@ -185,7 +204,7 @@ export default function AppCompany(props: any) {
} }
const onFinish = async (values: any) => { const onFinish = async (values: any) => {
// 处理表单提交逻辑 // 处理表单提交逻辑
// console.log('表单提交成功', values); console.log('表单提交成功', values);
// console.log('发过来的数据', props.companyInfo); // console.log('发过来的数据', props.companyInfo);
if (!deepCompareObjects(values, props.companyInfo)) { if (!deepCompareObjects(values, props.companyInfo)) {
try { try {
@ -295,7 +314,7 @@ export default function AppCompany(props: any) {
}}> }}>
<div className='appInfoFormInput'> <div className='appInfoFormInput'>
<div className='FormInputTitle' style={{ <div className='FormInputTitle' style={{
}}><span style={{ color: 'red', }}>*</span></div> }}><span style={{ color: 'red', }}>*</span></div>
<div style={{ <div style={{
// background: 'pink', // background: 'pink',
position: 'relative', position: 'relative',
@ -313,7 +332,7 @@ export default function AppCompany(props: any) {
showUploadList={false} showUploadList={false}
action={uploadImageUrl()} action={uploadImageUrl()}
// defaultFileList={upImgArray} // defaultFileList={upImgArray}
beforeUpload={beforeUpload} beforeUpload={beforeUploadcompanyPhoto}
onChange={handleChange} onChange={handleChange}
headers={{ 'Auth': `Bearer ${token}` }} headers={{ 'Auth': `Bearer ${token}` }}
@ -427,7 +446,7 @@ export default function AppCompany(props: any) {
name='image' name='image'
showUploadList={false} showUploadList={false}
action={uploadImageUrl()} action={uploadImageUrl()}
beforeUpload={beforeUpload} beforeUpload={beforeUploadcompanyAuth}
onChange={textHandleChange} onChange={textHandleChange}
headers={{ 'Auth': `Bearer ${token}` }} headers={{ 'Auth': `Bearer ${token}` }}

View File

@ -344,7 +344,9 @@ export default function AppInfo(props: any) {
</div> </div>
</div> </div>
<div className='appInfoBox'> <div className='appInfoBox' style={{
display:filesInfo.thereAnyFile == '0'?'none':'unset'
}}>
<div className='appInfoTitle'></div> <div className='appInfoTitle'></div>
<div className='appInfoText'> <div className='appInfoText'>

View File

@ -1,5 +1,5 @@
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { Button, Form, Upload, message, Modal, Spin } from "antd" import { Button, Form, Upload, message, Modal, Spin, Radio } from "antd"
import { uploadFileUrl, showImage } from '../../../../request/request' import { uploadFileUrl, showImage } from '../../../../request/request'
import { UploadOutlined } from '@ant-design/icons'; import { UploadOutlined } from '@ant-design/icons';
import { sourceCodeWord, softwareDocumentWord, uploadMaterial, fileDetail } from '../../../../request/api' import { sourceCodeWord, softwareDocumentWord, uploadMaterial, fileDetail } from '../../../../request/api'
@ -7,6 +7,8 @@ import './edit-app-files.css'
export default function EditAppFiles(props: any) { export default function EditAppFiles(props: any) {
const [messageApi, contextHolder] = message.useMessage(); const [messageApi, contextHolder] = message.useMessage();
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
//是否有材料
const [thereAnyFile, setThereAnyFile] = useState('1')
const downCodeWord = async () => { const downCodeWord = async () => {
try { try {
setLoading(true) setLoading(true)
@ -145,12 +147,60 @@ export default function EditAppFiles(props: any) {
const token = sessionStorage.getItem('token') const token = sessionStorage.getItem('token')
const height = window.innerHeight - 460; const height = window.innerHeight - 460;
const [form] = Form.useForm(); const [form] = Form.useForm();
const noFileSubmit = async () => {
try {
setLoading(true)
await uploadMaterial(props.appOrderId, {
thereAnyFile: thereAnyFile,
sourceCodeDocFile: '',//源码
softwareDocFile: '',//软件
})
props.setFilesInfo(
{
sourceCodeDocFile: '',//源码
softwareDocFile: '',//软件
thereAnyFile: thereAnyFile //是否有材料
}
)
props.setEditProcess(4);
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)
}
}
const handleSubmit = () => { const handleSubmit = () => {
// console.log(form); // console.log(form);
// props.setEditProcess(4); // props.setEditProcess(4);
// 调用表单实例的 submit 方法 // 调用表单实例的 submit 方法
form.submit(); if (thereAnyFile == '1') {
form.submit();
}
if (thereAnyFile == '0') {
// console.log(props.filesInfo.thereAnyFile);
// return
if (props.filesInfo.thereAnyFile != '0') {
noFileSubmit()
} else {
props.setEditProcess(4);
}
}
}; };
function deepCompareObjects(obj1: any, obj2: any): boolean { function deepCompareObjects(obj1: any, obj2: any): boolean {
// 若两个值严格相等,直接返回 true // 若两个值严格相等,直接返回 true
@ -189,10 +239,15 @@ export default function EditAppFiles(props: any) {
// deepCompareObjects(values, props.filesInfo) // deepCompareObjects(values, props.filesInfo)
// console.log(!deepCompareObjects(values, props.filesInfo)); // console.log(!deepCompareObjects(values, props.filesInfo));
// return // return
if (!deepCompareObjects(values, props.filesInfo)) { const newObj = {
thereAnyFile: thereAnyFile,//是否有材料
...values
}
if (!deepCompareObjects(newObj, props.filesInfo)) {
try { try {
setLoading(true) setLoading(true)
await uploadMaterial(props.appOrderId, { await uploadMaterial(props.appOrderId, {
thereAnyFile: thereAnyFile,
...values ...values
}) })
props.setFilesInfo( props.setFilesInfo(
@ -281,6 +336,9 @@ export default function EditAppFiles(props: any) {
if (props.filesInfo.softwareDocFile) { if (props.filesInfo.softwareDocFile) {
getSoftFileDetail(props.filesInfo.softwareDocFile) getSoftFileDetail(props.filesInfo.softwareDocFile)
} }
if(props.filesInfo.thereAnyFile){
setThereAnyFile(props.filesInfo.thereAnyFile)
}
form.setFieldsValue({ form.setFieldsValue({
sourceCodeDocFile: props.filesInfo.sourceCodeDocFile, sourceCodeDocFile: props.filesInfo.sourceCodeDocFile,
softwareDocFile: props.filesInfo.softwareDocFile, softwareDocFile: props.filesInfo.softwareDocFile,
@ -300,8 +358,40 @@ export default function EditAppFiles(props: any) {
marginLeft: '100px', marginLeft: '100px',
paddingBottom: '0' paddingBottom: '0'
}}> }}>
<div style={{
fontSize: 16,
paddingLeft: 58
}}>
<span style={{ color: 'red', }}>*</span>
<Radio.Group
onChange={
(e) => {
setThereAnyFile(e.target.value)
}
} value={thereAnyFile}
>
<Radio value="1" style={{
fontSize: 16
}}></Radio>
<Radio value="0" style={{
marginLeft: 20,
fontSize: 16
}}></Radio>
</Radio.Group>
</div>
<div
style={{
paddingLeft: 58,
marginTop: 5,
color: 'red'
}}
>(:若无源码文档和软件文档选择)</div>
<div style={{ <div style={{
height: '80px', height: '80px',
// background: 'pink',
marginTop: 20,
display: thereAnyFile == '1' ? 'unset' : 'none'
}}> }}>
<Form form={form} onFinish={onFinish} <Form form={form} onFinish={onFinish}
onFinishFailed={(errorInfo: any) => { onFinishFailed={(errorInfo: any) => {

View File

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

View File

@ -63,4 +63,80 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
margin-top: 50px; 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;
} }

View File

@ -1843,7 +1843,7 @@ export default function Index() {
setRrefunSearchBox(false) setRrefunSearchBox(false)
setCorrectionSearchBox(false) setCorrectionSearchBox(false)
setContractSearchBox(false) setContractSearchBox(false)
setNow('首页 / 电子软著APP') setNow('首页 / 申请电子软著')
setSellSearchBox(false) setSellSearchBox(false)
setSellOrderSearchBox(false) setSellOrderSearchBox(false)
setCopyrightSearchBox(false) setCopyrightSearchBox(false)
@ -1872,7 +1872,7 @@ export default function Index() {
setRrefunSearchBox(false) setRrefunSearchBox(false)
setCorrectionSearchBox(false) setCorrectionSearchBox(false)
setContractSearchBox(false) setContractSearchBox(false)
setNow('首页 / 商标商城') setNow('首页 / 申请商标')
setSellSearchBox(false) setSellSearchBox(false)
setSellOrderSearchBox(false) setSellOrderSearchBox(false)
setCopyrightSearchBox(false) setCopyrightSearchBox(false)
@ -2248,7 +2248,7 @@ export default function Index() {
<img src={getMenuActive() == 'APP' ? appnew : app} width={21} height={23} alt="" <img src={getMenuActive() == 'APP' ? appnew : app} width={21} height={23} alt=""
style={{ marginLeft: 20, marginRight: 9 }} style={{ marginLeft: 20, marginRight: 9 }}
/> />
<div>APP</div> <div></div>
</div> </div>
<div style={{ <div style={{
@ -2282,7 +2282,7 @@ export default function Index() {
<img src={getMenuActive() == 'TRADEMARK' ? tranew : tra} width={21} height={21} alt="" <img src={getMenuActive() == 'TRADEMARK' ? tranew : tra} width={21} height={21} alt=""
style={{ marginLeft: 20, marginRight: 9, marginTop: 3 }} style={{ marginLeft: 20, marginRight: 9, marginTop: 3 }}
/> />
<div></div> <div></div>
</div> </div>
@ -3782,8 +3782,9 @@ export default function Index() {
// { value: '1', label: '未付款' }, // { value: '1', label: '未付款' },
{ value: '2', label: '资料填写中' }, { value: '2', label: '资料填写中' },
{ value: '3', label: '资料审核中' }, { value: '3', label: '资料审核中' },
{ value: '4', label: '线下申请中' }, { value: '4', label: '待签字盖章' },
{ value: '5', label: '已下证' }, { value: '5', label: '线下申请中' },
{ value: '6', label: '平台已下证' },
]} ]}
> >
@ -3831,7 +3832,7 @@ export default function Index() {
<Select <Select
value={trademarkStatus} value={trademarkStatus}
allowClear allowClear
style={{ height: '31px', width: '150px', marginLeft: 5 }} style={{ height: '31px', width: '160px', marginLeft: 5 }}
onChange={(value: string) => { onChange={(value: string) => {
setTrademarkStatus(value) setTrademarkStatus(value)
@ -3841,7 +3842,7 @@ export default function Index() {
{ value: '-1', label: '未通过' }, { value: '-1', label: '未通过' },
{ value: '0', label: '待付款' }, { value: '0', label: '待付款' },
{ value: '1', label: '已付款' }, { value: '1', label: '已付款' },
{ value: '2', label: '审核中' }, { value: '2', label: '审核中/已线下沟通' },
{ value: '3', label: '提交至商标局' }, { value: '3', label: '提交至商标局' },
{ value: '4', label: '不予受理' }, { value: '4', label: '不予受理' },
{ value: '5', label: '已受理' }, { value: '5', label: '已受理' },
@ -4368,6 +4369,12 @@ export default function Index() {
})} })}
</div> </div>
<div style={{
marginTop:10,
fontSize:16,
fontWeight:700,
color:'red'
}}>:下证时间以提交盖章页第二个工作日算起</div>
<div className='appGoodsBtnBox'> <div className='appGoodsBtnBox'>
<div className='appGoodsBtn' onClick={async () => { <div className='appGoodsBtn' onClick={async () => {
if (appGoodsId) { if (appGoodsId) {

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