This commit is contained in:
lyp 2025-06-24 16:16:57 +08:00
parent 67a5103a2c
commit fdf06a145d
13 changed files with 969 additions and 295 deletions

View File

@ -205,8 +205,24 @@ export const updateTrademarkApplicant = (trademarkUserId:any,params:any) => aiSh
export const submitTrademarkApplicant = (trademarkId:any,params:any) => aiShopRequest.post(`/aishop/api/trademark/save3/${trademarkId}`,params) export const submitTrademarkApplicant = (trademarkId:any,params:any) => aiShopRequest.post(`/aishop/api/trademark/save3/${trademarkId}`,params)
// 第四步 // 第四步
// 获取支付订单
export const getOrder = (trademarkId:any) => aiShopRequest.get(`/aishop/api/trademark/get-pay-data/${trademarkId}`)
// 订单支付 // 订单支付
export const orderPay = (trademarkId:any) => aiShopRequest.post(`/aishop/api/trademark/save4/${trademarkId}`) export const orderPay = (trademarkId:any) => aiShopRequest.post(`/aishop/api/trademark/save4/${trademarkId}`)
// 第五步
// 生成委托书
export const generateDepute = (trademarkId:any) => aiShopRequest.get(`/aishop/api/trademark/create-xieyi/SHOP06/${trademarkId}`)
// 上传委托书
export const uploadDepute = (trademarkId:any,params:any) => aiShopRequest.post(`/aishop/api/trademark/save5/${trademarkId}`,params)
// 第六步上传
export const uploadSix = (trademarkId:any) => aiShopRequest.post(`/aishop/api/trademark/save6/${trademarkId}`)
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

View File

@ -206,6 +206,7 @@ export const downloadAuthBookUrl = () => {
export const uploadImageUrl = () => { export const uploadImageUrl = () => {
return `${aiShopBaseUrl}/aishop/api/file/v2/upload-image` return `${aiShopBaseUrl}/aishop/api/file/v2/upload-image`
} }
// // 下载 预览文件 买卖功能 // // 下载 预览文件 买卖功能
// export const downloadUrl = (fileId: string, isDownload?: boolean) => { // export const downloadUrl = (fileId: string, isDownload?: boolean) => {
// return `${aiShopBaseUrl}/aishop/route/file/v2/download/${isDownload == false}/${fileId}` // return `${aiShopBaseUrl}/aishop/route/file/v2/download/${isDownload == false}/${fileId}`
@ -219,9 +220,13 @@ export const uploadFileUrl = () => {
export const uploadDeputeFileUrl = (type:string) => { export const uploadDeputeFileUrl = (type:string) => {
return `${aiShopBaseUrl}/aishop/api/trademark/upload-depute-file?type=${type}` return `${aiShopBaseUrl}/aishop/api/trademark/upload-depute-file?type=${type}`
} }
// 上传图片 条件 限制大小等 name="file" // 上传图片 条件 限制大小等 name="file"
export const uploadImageAddUrl = () => { export const uploadImageAddUrl = () => {
return `${aiShopBaseUrl}/aishop/api/trademark/upload-file` return `${aiShopBaseUrl}/aishop/api/trademark/upload-file`
} }
// 上传委托书
export const uploadDeputeUrl = () => {
return `${aiShopBaseUrl}/aishop/api/trademark/upload-weituo-file `
}
export { request,aiShopRequest,phoneRequest,newRequest}; export { request,aiShopRequest,phoneRequest,newRequest};

View File

@ -10,11 +10,29 @@ import EditFour from './components/EditFour/EditFour';
import EditFive from './components/EditFive/EditFive'; import EditFive from './components/EditFive/EditFive';
import EditSix from './components/EditSix/EditSix'; import EditSix from './components/EditSix/EditSix';
import { useLocation, useParams } from 'react-router-dom'; import { useLocation, useParams } from 'react-router-dom';
import { trademarkDetail, } from '../../request/api' import { trademarkDetail, getOrder } from '../../request/api'
import { import {
message, Spin message, Spin
} from 'antd'; } from 'antd';
export default function TrademarkAiEdit() { export default function TrademarkAiEdit() {
const [orderList, setOrderList] = useState<any>([])
const getOrderList = async () => {
try {
const res = await getOrder(trademarkId)
console.log('订单详情列表', res);
setOrderList(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 pathParams = useParams(); const pathParams = useParams();
// const trademarkId = pathParams.trademarkId == 'NEW'?'':pathParams.trademarkId; // const trademarkId = pathParams.trademarkId == 'NEW'?'':pathParams.trademarkId;
const [trademarkId, setTrademarkId] = useState(pathParams.trademarkId == 'NEW' ? '' : pathParams.trademarkId) const [trademarkId, setTrademarkId] = useState(pathParams.trademarkId == 'NEW' ? '' : pathParams.trademarkId)
@ -26,6 +44,7 @@ export default function TrademarkAiEdit() {
const [trademarkMode, setTrademarkMode] = useState(state?.trademarkMode); const [trademarkMode, setTrademarkMode] = useState(state?.trademarkMode);
const [trademarkModeName, setTrademarkModeName] = useState(state?.trademarkModeName); const [trademarkModeName, setTrademarkModeName] = useState(state?.trademarkModeName);
const [trademarkModePrice, setTrademarkModePrice] = useState(0) const [trademarkModePrice, setTrademarkModePrice] = useState(0)
// const [trademarkStatus, setTrademarkStatus] = useState('')
const [editOneData, setEditOneData] = useState<any>({ const [editOneData, setEditOneData] = useState<any>({
trademarkType: '', //商标类型 text 文字 image 图形 text-image 图文 trademarkType: '', //商标类型 text 文字 image 图形 text-image 图文
trademarkName: '', //商标名称 trademarkName: '', //商标名称
@ -43,11 +62,18 @@ export default function TrademarkAiEdit() {
}) })
const [editThreeData, setEditThreeData] = useState<any>({ const [editThreeData, setEditThreeData] = useState<any>({
trademarkUserId: '', trademarkUserId: '',
name:'' name: ''
}) })
useEffect(()=>{ const [editFiveData, setEditFiveData] = useState<any>({
trademarkFileDepute: ''
})
const [trademarkStatus, setTrademarkStatus] = useState('')
useEffect(() => {
if (trademarkId) {
getOrderList()
}
}, [trademarkId])
},[])
// const [trademarkId, setTrademarkId] = useState(state.trademarkId?state.trademarkId:''); // const [trademarkId, setTrademarkId] = useState(state.trademarkId?state.trademarkId:'');
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
const getTrademarkDetail = async (trademarkId: string) => { const getTrademarkDetail = async (trademarkId: string) => {
@ -55,7 +81,12 @@ export default function TrademarkAiEdit() {
setLoading(true) setLoading(true)
const res: any = await trademarkDetail(trademarkId) const res: any = await trademarkDetail(trademarkId)
console.log('详情', res); console.log('详情', res);
setEditProcess(res.trademarkProgress + 1) if (res.trademarkProgress < 6) {
setEditProcess(res.trademarkProgress + 1)
} else {
setEditProcess(res.trademarkProgress)
}
setTrademarkMode(res.trademarkMode) setTrademarkMode(res.trademarkMode)
setTrademarkModeName(res.trademarkModeName) setTrademarkModeName(res.trademarkModeName)
setTrademarkModePrice(res.trademarkModePrice / 100) setTrademarkModePrice(res.trademarkModePrice / 100)
@ -69,6 +100,7 @@ export default function TrademarkAiEdit() {
trademarkPhotoType: res.trademarkPhotoType, //商标图样类型 1 自动生成 2 手动上传 trademarkPhotoType: res.trademarkPhotoType, //商标图样类型 1 自动生成 2 手动上传
trademarkPhoto: res.trademarkPhoto, //商标图样 trademarkPhoto: res.trademarkPhoto, //商标图样
}) })
setTrademarkStatus(res.trademarkStatus)
setEditTwoData({ setEditTwoData({
trademarkTypeDTOS: res.trademarkTypeDTOS, trademarkTypeDTOS: res.trademarkTypeDTOS,
trademarkTypeIds: res.trademarkTypeIds trademarkTypeIds: res.trademarkTypeIds
@ -77,6 +109,9 @@ export default function TrademarkAiEdit() {
trademarkUserId: res.trademarkUserDTO.trademarkUserId, trademarkUserId: res.trademarkUserDTO.trademarkUserId,
name: res.trademarkUserDTO.name name: res.trademarkUserDTO.name
}) })
setEditFiveData({
trademarkFileDepute: res.trademarkFileDepute
})
} catch (error: any) { } catch (error: any) {
setLoading(false) setLoading(false)
@ -232,6 +267,7 @@ export default function TrademarkAiEdit() {
display: editProcess == 2 ? 'block' : 'none' display: editProcess == 2 ? 'block' : 'none'
}}> }}>
<EditTwo <EditTwo
getOrderList={getOrderList}
trademarkModePrice={trademarkModePrice} trademarkModePrice={trademarkModePrice}
setEditTwoData={setEditTwoData} setEditTwoData={setEditTwoData}
editTwoData={editTwoData} editTwoData={editTwoData}
@ -257,6 +293,9 @@ export default function TrademarkAiEdit() {
}}> }}>
<EditFour <EditFour
// key={editProcess} // key={editProcess}
orderList={orderList}
trademarkStatus={trademarkStatus}
setTrademarkStatus={setTrademarkStatus}
trademarkId={trademarkId} trademarkId={trademarkId}
setEditProcess={setEditProcess}></EditFour> setEditProcess={setEditProcess}></EditFour>
</div> </div>
@ -265,13 +304,24 @@ export default function TrademarkAiEdit() {
}}> }}>
<EditFive <EditFive
// key={editProcess} // key={editProcess}
editFiveData={editFiveData}
setEditFiveData={setEditFiveData}
trademarkId={trademarkId}
setEditProcess={setEditProcess}></EditFive> setEditProcess={setEditProcess}></EditFive>
</div> </div>
<div style={{ <div style={{
display: editProcess == 6 ? 'block' : 'none' display: editProcess == 6 ? 'block' : 'none'
}}> }}>
<EditSix <EditSix
// key={editProcess} trademarkId={trademarkId}
trademarkStatus={trademarkStatus}
setTrademarkStatus={setTrademarkStatus}
key={editProcess}
editOneData={editOneData} //编辑一数据
editTwoData={editTwoData}
editThreeData={editThreeData}
editFiveData={editFiveData}
setEditProcess={setEditProcess}></EditSix> setEditProcess={setEditProcess}></EditSix>
</div> </div>
</div> </div>

View File

@ -144,7 +144,7 @@ export default function TrademarkExpertEdit() {
okText='确定' okText='确定'
cancelText='取消' cancelText='取消'
> >
{state.price} {state.price}
</Modal> </Modal>
</div> </div>
) )

View File

@ -99,10 +99,49 @@ export default function TrademarkMall() {
color: 'green', color: 'green',
}} }}
></span> ></span>
: : text == '2' ?
<span style={{ <span
color: 'rgb(122 126 130)',
}}></span> style={{
color: 'rgb(0, 127, 255)',
}}
></span>
: text == '3' ?
<span
style={{
color: 'rgb(136, 185, 233)',
}}
></span>
: text == '4' ?
<span
style={{
color: 'rgb(136, 185, 233)',
}}
></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>
: '未知'
} }
</span> </span>
) )
@ -161,7 +200,7 @@ export default function TrademarkMall() {
<div style={{ <div style={{
cursor: 'pointer', cursor: 'pointer',
color: '#007FFF', color: '#007FFF',
display: record.trademarkStatus != '-1' ? 'unset' : 'none',
}} onClick={() => { }} onClick={() => {
nav(`/trademark-ai-edit/${record.trademarkId}`, { nav(`/trademark-ai-edit/${record.trademarkId}`, {
@ -175,7 +214,9 @@ export default function TrademarkMall() {
// console.log(record.checkStatus); // console.log(record.checkStatus);
}}></div> }}>{
record.trademarkStatus == '2' ? '查看' : '编辑'
}</div>
) )
@ -189,6 +230,7 @@ export default function TrademarkMall() {
const getTrademarkList = async (page: any) => { const getTrademarkList = async (page: any) => {
try { try {
setLoading(true) setLoading(true)
setData([])
const res: any = await trademarkList({ const res: any = await trademarkList({
keywords: state && state.keywords ? state.keywords : '', keywords: state && state.keywords ? state.keywords : '',
rows: 10, rows: 10,

View File

@ -0,0 +1,27 @@
.editFiveUpBox {
width: 300px;
height: 150px;
border: 1px dashed #979797;
color: #979797;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
background-color: white;
}
.showImg {
width: 190px;
height: 150px;
border: 1px dashed #979797;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-left: 120px;
position: relative;
}
.tipsRed{
color: red;
}

View File

@ -1,7 +1,12 @@
import { useState } from 'react' import { useEffect, useState } from 'react'
import { Button, Form, message, Upload, Input } from 'antd' import { Button, Form, message, Upload, Input, Spin, Image } from 'antd'
import { UploadOutlined } from '@ant-design/icons'; import { showImage, uploadDeputeUrl } from '../../../../request/request'
import { uploadFileUrl, showImage } from '../../../../request/request' import { generateDepute, uploadDepute } from '../../../../request/api'
import './EditFive.css'
import {
PlusOutlined
} from '@ant-design/icons';
import file from '../../../../static/editFive/file.png'
export default function EditFive(props: any) { export default function EditFive(props: any) {
const token = sessionStorage.getItem('token') const token = sessionStorage.getItem('token')
const [form] = Form.useForm(); const [form] = Form.useForm();
@ -9,13 +14,16 @@ export default function EditFive(props: any) {
form.submit(); form.submit();
props.setEditProcess(6); // props.setEditProcess(6);
}; };
// const [imgList, setImgList] = useState<any>([]) // const [imgList, setImgList] = useState<any>([])
const [upFileLoading, setUpFileLoading] = useState<boolean>(false) //上传文件
const [createLoading, setCreateLoading] = useState<boolean>(false) //生成委托书
const [upLoading, setUpLoading] = useState<boolean>(false) //提交
const [upFileArray, setUpFileArray] = useState<any>([]) const [upFileArray, setUpFileArray] = useState<any>([])
// 定义允许上传的文件格式 // 定义允许上传的文件格式
const ALLOWED_FILE_TYPES = ['.pdf', '.jpg', '.jpeg', '.png', '.bmp']; const ALLOWED_FILE_TYPES = ['.jpg', '.jpeg',];
const beforeUpload = (file: File) => { const beforeUpload = (file: File) => {
const fileExt = file.name.slice(file.name.lastIndexOf('.')).toLowerCase(); const fileExt = file.name.slice(file.name.lastIndexOf('.')).toLowerCase();
if (!ALLOWED_FILE_TYPES.includes(fileExt)) { if (!ALLOWED_FILE_TYPES.includes(fileExt)) {
@ -24,148 +32,265 @@ export default function EditFive(props: any) {
} }
return true; return true;
}; };
// const [textLodaing, setTextLodaing] = useState(false) useEffect(() => {
// const upImgHandleChange: UploadProps['onChange'] = (info) => { if (props.editFiveData.trademarkFileDepute) {
form.setFieldValue('file', props.editFiveData.trademarkFileDepute)
setUpFileArray([
{
uid: props.editFiveData.trademarkFileDepute,
name: props.editFiveData.trademarkFileDepute,
status: 'done',
url: showImage(props.editFiveData.trademarkFileDepute, false)
}
])
}
}, [props.editFiveData])
const onFinish = async (values: any) => {
// console.log('Success:', values);
// props.setEditProcess(6);
if (values.file == props.editFiveData.trademarkFileDepute) {
props.setEditProcess(6);
return
}
try {
setUpLoading(true)
await uploadDepute(props.trademarkId, {
trademarkFileDepute: values.file
})
setUpLoading(false)
props.setEditFiveData({
trademarkFileDepute: values.file
})
props.setEditProcess(6);
}
catch (error: any) {
if (error.response) {
setUpLoading(false)
// if (info.file.status === 'uploading') { const data = error.response.data;
message.error(data.msg ? data.msg : `${data.path}(${data.status})`)
// setTextLodaing(true) } else {
// return; console.error(error)
// } }
// if (info.file.status === 'done') { }
// setTextLodaing(false) finally {
setUpLoading(false)
}
// setImgList([
// {
// uid: info.file.response.data.fileId,
// name: info.file.response.data.fileName,
// status: 'done',
// url: showImage(info.file.response.data.fileId, false)
// }
// ])
// form.setFieldsValue({ imgUrl: info.file.response.data.fileId })
// return;
// }
// if (info.file.status === 'error') {
// setTextLodaing(false)
// message.error(`上传失败`);
// return;
// }
// };
const onFinish = (values: any) => {
console.log('Success:', values);
props.setEditProcess(6);
}; };
const height = window.innerHeight - 350; const height = window.innerHeight - 350;
return ( return (
<div className='editOneTwo'> <Spin
<div className='topLine'></div> tip={createLoading ? '生成委托书中...' : upLoading ? '正在提交...' : '正在提交...'}
<div className='' style={{ size="small"
height: height, spinning={createLoading || upLoading}
// background: 'pink', >
padding: '50px 50px', <div className='editOneTwo'>
boxSizing: 'border-box',
}}> <div className='topLine'></div>
<Form form={form} onFinish={onFinish} <div className='' style={{
onFinishFailed={(errorInfo) => { height: height,
errorInfo.errorFields.forEach((field) => { // background: 'pink',
if (field.errors.length > 0) { padding: '50px 50px',
// 显示每条错误信息 boxSizing: 'border-box',
message.error(field.errors[0]); }}>
}
});
}}
>
<div style={{ <div style={{
display: 'flex', display: 'flex',
}}> }}>
<div className='FormInputTitle' style={{ <Form form={form} onFinish={onFinish}
marginTop: -5 onFinishFailed={(errorInfo) => {
}}><span style={{ errorInfo.errorFields.forEach((field) => {
color: 'red', if (field.errors.length > 0) {
}}>*</span> </div> // 显示每条错误信息
<div style={{ message.error(field.errors[0]);
// background:'pink', }
width: 200, });
position: 'relative', }}
}}> >
<Form.Item
name="file"
rules={[{ required: true, message: '请上传委托书' }]}
>
<Input style={{
width: 100,
display: 'none',
}}></Input>
</Form.Item>
<div style={{ <div style={{
position: 'absolute', display: 'flex',
top: -5,
// background: 'pink',
maxWidth: 200,
}}> }}>
<Upload <div className='FormInputTitle' style={{
name="file" marginTop: -5
action={uploadFileUrl()} }}><span style={{
fileList={upFileArray} color: 'red',
onChange={(info) => { }}>*</span> </div>
const { fileList } = info; <div style={{
setUpFileArray(fileList); // background:'pink',
if (info.file.status === 'uploading') { width: 200,
position: 'relative',
}}>
return; <Form.Item
} name="file"
if (info.file.status === 'done') { rules={[{ required: true, message: '请上传委托书' }]}
// console.log(info.file.response.data); >
setUpFileArray([ <Input style={{
{ width: 300,
uid: info.file.response.data.fileId, height: 150,
name: info.file.response.data.fileName, // display: 'none',
status: 'done', // background:'red'
url: showImage(info.file.response.data.fileId, false) }}></Input>
</Form.Item>
<div style={{
position: 'absolute',
// top: -5,
top: 0,
// background: 'pink',
// maxWidth: 200,
display: upFileArray.length > 0 && upFileArray[0].url ? 'none' : 'unset'
}}>
<Upload
maxCount={1}
name="file"
action={uploadDeputeUrl()}
// fileList={upFileArray}
showUploadList={false}
onChange={(info) => {
if (info.file.status === 'uploading') {
setUpFileLoading(true)
// const { fileList } = info;
// setUpFileArray(fileList);
return;
} }
]) if (info.file.status === 'done') {
// console.log(info.file.response.data);
setUpFileLoading(false)
setUpFileArray([
{
uid: info.file.response.data.fileId,
name: info.file.response.data.fileName,
status: 'done',
url: showImage(info.file.response.data.fileId, false)
}
])
form.setFieldsValue({ form.setFieldsValue({
file: info.file.response.data.fileId, file: info.file.response.data.fileId,
}); });
} }
if (info.file.status === 'error') { if (info.file.status === 'error') {
// 显示错误提示 setUpFileLoading(false)
message.error(`上传失败,请重新上传`); // 显示错误提示
setUpFileArray([]) // message.error(`上传失败,请重新上传`);
message.error(info.file.response.msg ? info.file.response.msg : '上传失败');
setUpFileArray([])
} }
// console.log(upCodeArray); // console.log(upCodeArray);
}} }}
onRemove={() => { onRemove={() => {
setUpFileArray([]) setUpFileArray([])
form.setFieldsValue({ form.setFieldsValue({
file: '', // 清除表单值 file: '', // 清除表单值
}); });
}} }}
beforeUpload={beforeUpload} beforeUpload={beforeUpload}
// onPreview={handlePreview} // onPreview={handlePreview}
// onChange={handleUploadChange} // onChange={handleUploadChange}
headers={{ 'Auth': `Bearer ${token}` }} headers={{ 'Auth': `Bearer ${token}` }}
> disabled={upFileLoading || upFileArray.length > 0}
<Button icon={<UploadOutlined />} style={{ >
{/* <Button icon={<UploadOutlined />} style={{
marginTop: '4px' marginTop: '4px'
}} }}
disabled={upFileArray.length > 0} disabled={upFileArray.length > 0}
></Button> ></Button> */}
</Upload> <Spin tip="正在提交,请稍后..." size="small" spinning={upFileLoading}>
</div>
<div style={{ <div className='editFiveUpBox'>
<div style={{
fontSize: 30,
}}><PlusOutlined /></div>
<div style={{
// fontSize:16
marginTop: 10
}}
></div>
</div>
</Spin>
</Upload>
</div >
<div style={{
position: 'absolute',
// top: -5,
top: 0,
// background: 'pink',
// maxWidth: 200,
display: upFileArray.length > 0 && upFileArray[0].url ? 'unset' : 'none'
}}
>
<div className='editFiveUpBox' style={{
position: 'relative',
}}>
<Image src={upFileArray.length > 0 ? upFileArray[0].url : ''} style={{
maxWidth: 300,
height: 150,
}} />
<div style={{
position: 'absolute',
top: 0,
right: 0,
background: 'rgba(168, 168, 168, 0.5)',
color: 'red',
padding: '2px 5px',
}}
onClick={() => {
setUpFileArray([])
form.setFieldsValue({
file: '', // 清除表单值
});
}}
></div>
</div>
</div>
<div style={{
textWrap: 'nowrap',
}}>
<div style={{
fontWeight: 700,
}}>
</div>
<div>
-<span className='tipsRed'></span>;
</div>
<div>
- <span className='tipsRed'></span><span className='tipsRed'></span>;
</div>
<div>
-1.5MJPG格式图片;
</div>
<div>
-()<span className='tipsRed'></span>;
</div>
<div>
-<span className='tipsRed'></span>;
</div>
<div>
-<span className='tipsRed'></span><span className='tipsRed'></span>
</div>
</div>
{/* <div style={{
position: 'absolute', position: 'absolute',
top: 0, top: 0,
left: 140, left: 140,
@ -177,47 +302,94 @@ export default function EditFive(props: any) {
onClick={() => { onClick={() => {
window.open('https://www.baidu.com') window.open('https://www.baidu.com')
}} }}
>[ ]</div> >[ ]</div> */}
</div>
</div>
</Form>
<div className='showImg'>
<Image src={file} height={120}></Image>
<div style={{
color: 'red'
}}>
</div>
<div style={{
position: 'absolute',
bottom: -40,
textWrap: 'nowrap',
color: 'var(--color-blue)',
lineHeight: '30px',
cursor: 'pointer',
}}
onClick={async () => {
// window.open(downloadDeputeUrl(props.trademarkId))
try {
setCreateLoading(true)
const res: any = await generateDepute(props.trademarkId)
// console.log(res);
window.open(showImage(res.fileId))
setCreateLoading(false)
} catch (error: any) {
if (error.response) {
setCreateLoading(false)
const data = error.response.data;
message.error(data.msg ? data.msg : `${data.path}(${data.status})`)
} else {
console.error(error)
}
} finally {
setCreateLoading(false)
}
}}
>
[ ]
</div>
</div> </div>
</div> </div>
</div >
</Form> <div className='topLine'></div>
<div style={{
marginTop: '8px',
display: 'flex',
justifyContent: 'flex-end',
}}>
<Button
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
}}
onClick={() => {
props.setEditProcess(4)
}}
></Button>
<Button
type='primary'
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
marginLeft: '10px',
}}
onClick={() => {
handleSubmit()
}}
></Button>
</div>
</div> </div >
<div className='topLine'></div> </Spin >
<div style={{
marginTop: '8px',
display: 'flex',
justifyContent: 'flex-end',
}}>
<Button
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
}}
onClick={() => {
props.setEditProcess(4)
}}
></Button>
<Button
type='primary'
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
marginLeft: '10px',
}}
onClick={() => {
handleSubmit()
}}
></Button>
</div>
</div>
) )
} }

View File

@ -1,7 +1,7 @@
import { useState, useContext } from 'react' import { useState, useContext, useEffect } from 'react'
import './edit-four.css' import './edit-four.css'
import { Button, Table, Modal, message, Spin } from 'antd' import { Button, Table, Modal, message, Spin } from 'antd'
import { orderPay } from '../../../../request/api' import { orderPay, getOrder } from '../../../../request/api'
// import { GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts"; // import { GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts";
import { GlobalDispatchContext, reloadUser } from "../../../../context/GlobalContext"; import { GlobalDispatchContext, reloadUser } from "../../../../context/GlobalContext";
import type { TableProps } from 'antd'; import type { TableProps } from 'antd';
@ -32,6 +32,8 @@ export default function EditFour(props: any) {
message.success('付款成功'); message.success('付款成功');
}); });
props.setTrademarkStatus('1')
props.setEditProcess(5)
setPayLodaing(false) setPayLodaing(false)
} catch (error: any) { } catch (error: any) {
@ -52,13 +54,15 @@ export default function EditFour(props: any) {
} }
} }
const columns: TableProps<DataType>['columns'] = [ const columns: TableProps<DataType>['columns'] = [
{ {
align: 'center', align: 'center',
title: '付费方式', title: '付费方式',
dataIndex: 'type', dataIndex: 'payType',
key: 'type', key: 'payType',
render: () => '预付费', // render: () => '预付费',
width: 100, width: 100,
}, },
{ {
@ -66,25 +70,30 @@ export default function EditFour(props: any) {
width: 100, width: 100,
title: '服务名称', title: '服务名称',
dataIndex: 'name', dataIndex: 'serverName',
key: 'name', key: 'serverName',
render: () => '商标申请', // render: () => '商标申请',
}, },
{ {
align: 'center', align: 'center',
width: 150, width: 150,
ellipsis: true, ellipsis: true,
title: '类别', title: '类别',
dataIndex: 'category', dataIndex: 'typeName',
key: 'category', key: 'typeName',
}, },
{ {
align: 'center', align: 'center',
width: 300, width: 300,
ellipsis: true, ellipsis: true,
title: '指定商品或服务', title: '指定商品或服务',
dataIndex: 'goods', dataIndex: 'subNames',
key: 'goods', key: 'subNames',
render: (text) => {
return (
<span>{text.split(',').length}</span>
)
},
}, },
{ {
align: 'center', align: 'center',
@ -98,42 +107,48 @@ export default function EditFour(props: any) {
width: 100, width: 100,
title: '单价', title: '单价',
dataIndex: 'price', dataIndex: 'money',
key: 'price', key: 'money',
render: (text) => text / 100,
}, },
{ {
align: 'center', align: 'center',
width: 100, width: 100,
title: '数量', title: '数量',
dataIndex: 'num', render: () => '1',
key: 'num',
}, },
]; ];
const data: DataType[] = [ const [data, setData] = useState<any>([])
{ useEffect(() => {
id: '1', if (props.orderList.length > 0) {
type: '预付费', //付费方式 setData(props.orderList)
name: '商标申请',//服务名称 }
category: '第35类 广告销售', //类别 }, [props.orderList])
goods: '共10项:喜喜喜喜喜喜,哈哈哈啊哈哈哈哈,呵呵呵呵呵,嘎嘎嘎嘎嘎嘎嘎,的爱德华八克很大空间和大开杀空间,按时间打假打私', //服务 // const data: DataType[] = [
goodsType: '文字和图案', //商标类型 // {
price: '630.66', //单价 // id: '1',
num: '1', //数量 // type: '预付费', //付费方式
}, // name: '商标申请',//服务名称
{ // category: '第35类 广告销售', //类别
id: '2', // goods: '共10项:喜喜喜喜喜喜,哈哈哈啊哈哈哈哈,呵呵呵呵呵,嘎嘎嘎嘎嘎嘎嘎,的爱德华八克很大空间和大开杀空间,按时间打假打私', //服务
type: '预付费', //付费方式 // goodsType: '文字和图案', //商标类型
name: '商标申请',//服务名称 // price: '630.66', //单价
category: '第35类 广告销售', //类别 // num: '1', //数量
goods: '共10项:喜喜喜喜喜喜,哈哈哈啊哈哈哈哈,呵呵呵呵呵,嘎嘎嘎嘎嘎嘎嘎,的爱德华八克很大空间和大开杀空间,按时间打假打私', //服务 // },
goodsType: '文字和图案', //商标类型 // {
price: '10000.66', //单价 // id: '2',
num: '1', //数量 // type: '预付费', //付费方式
}, // name: '商标申请',//服务名称
// category: '第35类 广告销售', //类别
// goods: '共10项:喜喜喜喜喜喜,哈哈哈啊哈哈哈哈,呵呵呵呵呵,嘎嘎嘎嘎嘎嘎嘎,的爱德华八克很大空间和大开杀空间,按时间打假打私', //服务
// goodsType: '文字和图案', //商标类型
// price: '10000.66', //单价
// num: '1', //数量
// },
]; // ];
const [modal, setModal] = useState(false) const [modal, setModal] = useState(false)
const height = window.innerHeight - 350; const height = window.innerHeight - 350;
const handleSubmit = () => { const handleSubmit = () => {
@ -176,34 +191,71 @@ export default function EditFour(props: any) {
</div> </div>
<div className='topLine'></div> <div className='topLine'></div>
<div style={{ <div style={{
marginTop: '8px', display: props.trademarkStatus != '1' ? 'unset' : 'none'
display: 'flex',
justifyContent: 'flex-end',
}}> }}>
<Button <div style={{
style={{ marginTop: '8px',
width: '100px', display: 'flex',
height: '40px', justifyContent: 'flex-end',
borderRadius: '5px', }}>
}} <Button
onClick={() => { style={{
props.setEditProcess(3) width: '100px',
}} height: '40px',
></Button> borderRadius: '5px',
<Button }}
type='primary' onClick={() => {
style={{ props.setEditProcess(3)
width: '100px', }}
height: '40px', ></Button>
borderRadius: '5px', <Button
marginLeft: '10px', type='primary'
}} style={{
onClick={() => { width: '100px',
handleSubmit() height: '40px',
}} borderRadius: '5px',
></Button> marginLeft: '10px',
}}
onClick={() => {
handleSubmit()
}}
></Button>
</div>
</div>
<div style={{
display: props.trademarkStatus == '1' ? 'unset' : 'none'
}}>
<div style={{
marginTop: '8px',
display: 'flex',
justifyContent: 'flex-end',
}}>
<div style={{
// background: 'skyblue',
// padding: '10px',
borderRadius: '5px',
fontSize: '16px',
lineHeight: '40px',
marginRight: '10px',
fontWeight: 'bold',
color: 'green',
}}>
</div>
<Button
type='primary'
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
marginLeft: '10px',
}}
onClick={() => {
props.setEditProcess(5)
}}
></Button>
</div>
</div> </div>
<Modal title="提示" <Modal title="提示"
centered centered
destroyOnClose={true} destroyOnClose={true}
@ -225,7 +277,7 @@ export default function EditFour(props: any) {
}} }}
> >
999, 999,
</Modal> </Modal>
</div> </div>
</Spin> </Spin>

View File

@ -823,7 +823,7 @@ export default function EditOne(props: any) {
onClick={() => { onClick={() => {
setUpFileAModal(true) setUpFileAModal(true)
}} }}
>A</span> ></span>
<span> <span>
({fileA.length}/3) ({fileA.length}/3)
</span> </span>
@ -1545,7 +1545,7 @@ export default function EditOne(props: any) {
</Upload> */} </Upload> */}
<span className='pointerBlue' onClick={() => { <span className='pointerBlue' onClick={() => {
setUpFileCModal(true) setUpFileCModal(true)
}}>C</span> }}></span>
<span> <span>
({fileC.length}/3) ({fileC.length}/3)
</span> </span>

View File

@ -0,0 +1,74 @@
.editSixBox {
/* WebKit 浏览器Chrome、Safari 等) */
scrollbar-width: thin;
/* Firefox */
scrollbar-color: #888 #f1f1f1;
/* Firefox */
}
/* WebKit 浏览器Chrome、Safari 等) */
.editSixBox::-webkit-scrollbar {
width: 8px;
/* 垂直滚动条宽度 */
}
.editSixBox::-webkit-scrollbar-track {
background: #f1f1f1;
/* 滚动条轨道背景颜色 */
}
.editSixBox::-webkit-scrollbar-thumb {
background: #888;
/* 滚动条滑块颜色 */
border-radius: 4px;
/* 滚动条滑块圆角 */
}
.editSixBox::-webkit-scrollbar-thumb:hover {
background: #555;
/* 鼠标悬停时滚动条滑块颜色 */
}
.editSixTop {
font-size: 20px;
/* background-color: skyblue; */
text-align: center;
margin-top: 10px;
margin-bottom: 20px;
}
.editSixContent {
display: flex;
font-size: 18px;
margin-bottom: 20px;
}
.editSixTitle {
width: 300px;
text-align: right;
margin-right: 10px;
}
.editSixText {
width: calc(100% - 400px);
}
.editSixImage {
width: 300px;
height: 150px;
border: 1px dashed #bdbdbd;
display: flex;
justify-content: center;
align-items: center;
}
.editSixGoods{
width: calc(100% - 400px);
}
.editSixGoodsBoxItem{
/* background-color: skyblue; */
margin-bottom: 10px;
}
.editSixGoodsBoxChildItem{
font-size: 14px;
}

View File

@ -1,5 +1,8 @@
import { useState } from 'react' import { useState, useEffect } from 'react'
import { Button, Modal } from 'antd' import { Button, Modal, Image, message, Spin } from 'antd'
import { showImage } from '../../../../request/request'
import { uploadSix } from '../../../../request/api'
import './EditSix.css'
export default function EditSix(props: any) { export default function EditSix(props: any) {
const height = window.innerHeight - 350; const height = window.innerHeight - 350;
const [modal, setModal] = useState(false) const [modal, setModal] = useState(false)
@ -11,57 +14,289 @@ export default function EditSix(props: any) {
setModal(true) setModal(true)
}; };
const [upLodaing, setUpLodaing] = useState(false)
const [editOneData, setEditOneData] = useState<any>({
trademarkType: '', //商标类型 text 文字 image 图形 text-image 图文
trademarkName: '', //商标名称
trademarkDescription: '', //商标描述
trademarkFile: '', //姓名授权
trademarkFile1: '', //肖像授权声明书
trademarkFile2: '', //期刊
trademarkPhotoType: '', //商标图样类型 1 自动生成 2 手动上传
trademarkPhoto: '', //商标图样
})
const [editTwoData, setEditTwoData] = useState<any>({
trademarkTypeDTOS: [],
trademarkTypeIds: []
})
const [editThreeData, setEditThreeData] = useState<any>({
trademarkUserId: '',
name: ''
})
const [editFiveData, setEditFiveData] = useState<any>({
trademarkFileDepute: '',
})
useEffect(() => {
if (props.editOneData) {
setEditOneData(props.editOneData)
}
if (props.editTwoData) {
setEditTwoData(props.editTwoData)
}
if (props.editThreeData) {
setEditThreeData(props.editThreeData)
}
if (props.editFiveData) {
setEditFiveData(props.editFiveData)
}
console.log('最终信息接收', props);
}, [props])
return ( return (
<div className='editOneTwo'> <Spin tip="正在提交,请稍后..." size="small" spinning={upLodaing}>
<div className='topLine'></div> <div className='editOneTwo'>
<div className='' style={{ <div className='topLine'></div>
height: height, <div className='editSixBox' style={{
}}> height: height,
overflowY: 'auto',
}}>
<div className='editSixTop'>
</div>
<div className='editSixContent'>
<div className='editSixTitle'> :</div>
<div className='editSixText'>{editOneData.trademarkType == 'text' ? '文字' : editOneData.trademarkType == 'image' ? '图形' : '图文'}</div>
</div>
<div style={{
display: editOneData.trademarkName ? 'unset' : 'none'
}}>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixText'>{editOneData.trademarkName}</div>
</div>
</div>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixImage'>
<Image src={showImage(editOneData.trademarkPhoto, false)} style={{
height: '150px',
maxWidth: '100%',
}}></Image>
</div>
</div>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixText'>{editOneData.trademarkDescription}</div>
</div>
<div style={{
display: editOneData.trademarkFile ? 'unset' : 'none'
}}>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixImage'>
<Image src={showImage(editOneData.trademarkFile, false)} style={{
height: '150px',
maxWidth: '100%',
}}></Image>
</div>
</div>
</div>
<div style={{
display: editOneData.trademarkFile1 ? 'unset' : 'none'
}}>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixImage'>
<Image src={showImage(editOneData.trademarkFile1, false)} style={{
height: '150px',
maxWidth: '100%',
}}></Image>
</div>
</div>
</div>
<div style={{
display: editOneData.trademarkFile2 ? 'unset' : 'none'
}}>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixImage'>
<Image src={showImage(editOneData.trademarkFile2, false)} style={{
height: '150px',
maxWidth: '100%',
}}></Image>
</div>
</div>
</div>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixGoods'>
{/* <div className='editSixText'>{editTwoData.trademarkTypeIds}</div> */}
{editTwoData.trademarkTypeDTOS.map((item: any) => {
return (
<div key={item.id} style={{
// marginBottom: 20
}}>
<div
className=' editSixGoodsBoxItem'
>
<div style={{
display: 'flex',
}}>
<div>
{item.code} {item.name}
</div>
</div>
</div>
<div className='editSixGoodsBoxChildItem'>
{item.children.map((child: any) => {
return (
<div style={{
}} key={child.id}>
<div style={{
display: 'flex',
// flexWrap: 'wrap',
textWrap: 'nowrap',
}}>
<div style={{
lineHeight: '25px',
marginRight: 10,
fontWeight: 'bold',
}}>{child.code} : </div>
<div style={{
display: 'flex',
flexWrap: 'wrap',
}}>
{child.children.map((children: any) => {
return (
<div
style={{
padding: '2px 10px',
// // background: '#E6E6E6',
// border: '1px solid #E6E6E6',
// borderRadius: '5px',
// marginRight: 10,
marginBottom: 10,
}}
key={children.id}>
{children.code}-{children.name}
</div>
)
})}
</div>
</div>
</div>
)
})}</div>
</div>
)
})}
</div>
</div>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixText'>{editThreeData.name}</div>
</div>
<div className='editSixContent' >
<div className='editSixTitle'> :</div>
<div className='editSixImage'>
<Image src={showImage(editFiveData.trademarkFileDepute, false)} style={{
height: '150px',
maxWidth: '100%',
}}></Image>
</div>
</div>
</div>
<div className='topLine'></div>
<div style={{
display: props.trademarkStatus == '2' ? 'none' : 'unset'
}}>
<div style={{
marginTop: '8px',
display: 'flex',
justifyContent: 'flex-end',
}}>
<Button
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
}}
onClick={() => {
props.setEditProcess(5)
}}
></Button>
<Button
type='primary'
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
marginLeft: '10px',
}}
onClick={() => {
handleSubmit()
}}
></Button>
</div>
</div>
<div style={{
display: props.trademarkStatus == '2' ? 'unset' : 'none',
}}>
<div style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
// backgroundColor: 'rgb(238, 159, 159)',
height: '65px',
fontSize:'18px',
color:'green',
}}>
...
</div>
</div>
<Modal
title="提示"
centered
open={modal}
onOk={async () => {
try {
setUpLodaing(true)
await uploadSix(props.trademarkId)
setUpLodaing(false)
message.success('上传成功')
props.setTrademarkStatus('2')
setModal(false)
} catch (error: any) {
setUpLodaing(false)
if (error.response) {
const data = error.response.data;
message.error(data.msg ? data.msg : `${data.path}(${data.status})`)
} else {
console.error(error)
}
} finally {
setUpLodaing(false)
}
}}
onCancel={() => { setModal(false) }}
okText="确定"
cancelText="取消"
>
<span style={{
fontSize: '16px',
color: 'red',
}}> :上传后无法撤回</span>
</Modal>
</div> </div>
<div className='topLine'></div> </Spin>
<div style={{
marginTop: '8px',
display: 'flex',
justifyContent: 'flex-end',
}}>
<Button
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
}}
onClick={() => {
props.setEditProcess(5)
}}
></Button>
<Button
type='primary'
style={{
width: '100px',
height: '40px',
borderRadius: '5px',
marginLeft: '10px',
}}
onClick={() => {
handleSubmit()
}}
></Button>
</div>
<Modal
title="提示"
centered
open={modal}
onOk={() => { setModal(false) }}
onCancel={() => { setModal(false) }}
okText="确定"
cancelText="取消"
>
<span style={{
fontSize: '16px',
color: 'red',
}}> :上传后无法撤回</span>
</Modal>
</div>
) )
} }

View File

@ -70,6 +70,7 @@ export default function EditTwo(props: any) {
props.setEditTwoArray(checkedIds) props.setEditTwoArray(checkedIds)
setLoading(false) setLoading(false)
props.setEditProcess(3); props.setEditProcess(3);
// props.getOrderList()
} catch (error: any) { } catch (error: any) {
setLoading(false) setLoading(false)

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB