['columns'] = [
+ {
+ align: 'center',
+ title: '付费方式',
+ dataIndex: 'type',
+ key: 'type',
+ render: () => '预付费',
+ width: 100,
+ },
+ {
+ align: 'center',
+ width: 100,
+
+ title: '服务名称',
+ dataIndex: 'name',
+ key: 'name',
+ render: () => '商标申请',
+ },
+ {
+ align: 'center',
+ width: 150,
+ ellipsis: true,
+ title: '类别',
+ dataIndex: 'category',
+ key: 'category',
+ },
+ {
+ align: 'center',
+ width: 300,
+ ellipsis: true,
+ title: '指定商品或服务',
+ dataIndex: 'goods',
+ key: 'goods',
+ },
+ {
+ align: 'center',
+ width: 150,
+ title: '商标类型',
+ dataIndex: 'goodsType',
+ key: 'goodsType',
+ },
+ {
+ align: 'center',
+ width: 100,
+
+ title: '单价',
+ dataIndex: 'price',
+ key: 'price',
+ },
+ {
+ align: 'center',
+ width: 100,
+ title: '数量',
+ dataIndex: 'num',
+ key: 'num',
+ },
+
+
+ ];
+ const data: DataType[] = [
+ {
+ id: '1',
+ type: '预付费', //付费方式
+ name: '商标申请',//服务名称
+ category: '第35类 广告销售', //类别
+ goods: '共10项:喜喜喜喜喜喜,哈哈哈啊哈哈哈哈,呵呵呵呵呵,嘎嘎嘎嘎嘎嘎嘎,的爱德华八克很大空间和大开杀空间,按时间打假打私', //服务
+ goodsType: '文字和图案', //商标类型
+ price: '630.66', //单价
+ num: '1', //数量
+ },
+ {
+ id: '2',
+ type: '预付费', //付费方式
+ name: '商标申请',//服务名称
+ category: '第35类 广告销售', //类别
+ goods: '共10项:喜喜喜喜喜喜,哈哈哈啊哈哈哈哈,呵呵呵呵呵,嘎嘎嘎嘎嘎嘎嘎,的爱德华八克很大空间和大开杀空间,按时间打假打私', //服务
+ goodsType: '文字和图案', //商标类型
+ price: '10000.66', //单价
+ num: '1', //数量
+ },
+
+ ];
+ const [modal, setModal] = useState(false)
const height = window.innerHeight - 350;
const handleSubmit = () => {
// console.log(form);
- props.setEditProcess(5);
+ // props.setEditProcess(5);
+ setModal(true)
// 调用表单实例的 submit 方法
// form.submit();
@@ -12,10 +108,31 @@ export default function editFour(props: any) {
return (
-
+ // background: 'pink'
+ }}>
+
+
商标申请
+
+ 数量 : 2
+ 小计¥630.66
+
+
+
+
+
columns={columns}
+ // 取消自带分页
+ pagination={false}
+ dataSource={data}
+ rowKey='id'
+ />
+
+
{
handleSubmit()
}}
- >下一步
+ >提交订单
+ { setModal(false) }}
+ okText='确定'
+ cancelText='取消'
+ onOk={()=>{
+ setModal(false)
+ props.setEditProcess(5)
+ }}
+ >
+ 该操作会扣除999元,确定操作吗?
+
)
}
diff --git a/src/route/TrademarkMall/components/EditFour/edit-four.css b/src/route/TrademarkMall/components/EditFour/edit-four.css
new file mode 100644
index 0000000..f1fb584
--- /dev/null
+++ b/src/route/TrademarkMall/components/EditFour/edit-four.css
@@ -0,0 +1,11 @@
+.editFourTop{
+ /* background-color: pink; */
+ padding: 10px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+.editFourTopL{
+ font-size: 18px;
+}
\ No newline at end of file
diff --git a/src/route/TrademarkMall/components/EditOne/EditOne.css b/src/route/TrademarkMall/components/EditOne/EditOne.css
index ff25616..ead6f2e 100644
--- a/src/route/TrademarkMall/components/EditOne/EditOne.css
+++ b/src/route/TrademarkMall/components/EditOne/EditOne.css
@@ -9,6 +9,32 @@
box-sizing: border-box; */
}
+.editOneFomrBox {
+ /* WebKit 浏览器(Chrome、Safari 等) */
+ scrollbar-width: thin;
+ /* Firefox */
+ scrollbar-color: #888 #f1f1f1;
+ /* Firefox */
+}
+.editOneFomrBox ::-webkit-scrollbar {
+ width: 8px;
+ /* 垂直滚动条宽度 */
+}
+.editOneFomrBox ::-webkit-scrollbar-track {
+ background: #f1f1f1;
+ /* 滚动条轨道背景颜色 */
+}
+.editOneFomrBox ::-webkit-scrollbar-thumb {
+ background: #888;
+ /* 滚动条滑块颜色 */
+ border-radius: 4px;
+ /* 滚动条滑块圆角 */
+}
+.editOneFomrBox ::-webkit-scrollbar-thumb:hover {
+ background: #555;
+ /* 鼠标悬停时滚动条滑块颜色 */
+}
+
.editFormTitle {
font-size: 18px;
margin-bottom: 20px;
@@ -38,7 +64,11 @@
.redTitle {
color: red;
}
-.pointerBlue{
+
+.pointerBlue {
color: var(--color-blue);
cursor: pointer;
+}
+.upBox{
+ background: skyblue;
}
\ No newline at end of file
diff --git a/src/route/TrademarkMall/components/EditOne/EditOne.tsx b/src/route/TrademarkMall/components/EditOne/EditOne.tsx
index 7ddabd4..57f2763 100644
--- a/src/route/TrademarkMall/components/EditOne/EditOne.tsx
+++ b/src/route/TrademarkMall/components/EditOne/EditOne.tsx
@@ -1,51 +1,89 @@
-import { useState } from 'react'
+import { useState, useEffect } from 'react'
import { Button, Radio, Form, Input, Upload, message, Image, Spin } from 'antd'
import './EditOne.css'
-import { uploadFileUrl, showImage } from '../../../../request/request'
+import { uploadFileUrl, showImage, uploadImageAddUrl,downloadAuthBookUrl,uploadDeputeFileUrl } from '../../../../request/request'
+import { trademarkBaseInfo, aiGenerateImage, fileDetail } from '../../../../request/api'
import {
- DeleteOutlined
+ DeleteOutlined, LoadingOutlined
} from '@ant-design/icons';
const { TextArea } = Input;
import type { UploadProps } from 'antd';
export default function EditOne(props: any) {
const token = sessionStorage.getItem('token')
+ const [messageApi, contextHolder] = message.useMessage();
const [formA] = Form.useForm(); // 文字商标表单
const [formB] = Form.useForm(); // 图形商标表单
const [formC] = Form.useForm(); // 图形商标表单
const height = window.innerHeight - 350;
- const [goodsType, setGoodsType] = useState('a')
+ // 查看表单数据是否发生改变
+ function deepCompareObjects(obj1: any, obj2: any): boolean {
+ // 若两个值严格相等,直接返回 true
+ if (obj1 === obj2) {
+ return true;
+ }
+
+ // 若其中一个值为 null 或不是对象类型,返回 false
+ if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {
+ return false;
+ }
+
+ // 获取两个对象的键数组
+ const keys1 = Object.keys(obj1);
+ const keys2 = Object.keys(obj2);
+
+ // 若键的数量不同,返回 false
+ if (keys1.length !== keys2.length) {
+ return false;
+ }
+
+ // 遍历键,递归比较对应的值
+ for (const key of keys1) {
+ if (!keys2.includes(key) || !deepCompareObjects(obj1[key], obj2[key])) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ const [goodsType, setGoodsType] = useState('text')
// 生成方式
const [generateType, setGenerateType] = useState('1')
const handleSubmit = () => {
// console.log(form);
+ // console.log(goodsType);
// props.setEditProcess(2);
// 调用表单实例的 submit 方法
- if (goodsType === 'a') {
+ if (goodsType === 'text') {
formA.submit();
- } else if (goodsType === 'b') {
+ } else if (goodsType === 'image') {
formB.submit();
- } else if (goodsType === 'c') {
+ } else if (goodsType === 'text-image') {
formC.submit();
} else {
props.setEditProcess(2);
}
+ // props.setEditProcess(2);
+
};
+ const [disabled, setDisabled] = useState(false)
// 文字商标 若设计肖像上传得文件
const [fileList, setFileList] = useState([]);
const handleChange: UploadProps['onChange'] = (info) => {
- // console.log(info.file.status);
+ console.log(info.file.status);
if (info.file.status === 'uploading') {
// setFileList([])
+ setDisabled(true)
return;
}
if (info.file.status === 'done') {
+
// const fileId = info.file.response.data.fileId;
// // console.log(downloadUrl(fileId));
-
+ setDisabled(false)
// const url = showImage(fileId, false);
setFileList([
{
@@ -59,6 +97,7 @@ export default function EditOne(props: any) {
return;
}
if (info.file.status === 'error') {
+ setDisabled(false)
message.error(`上传失败`);
return;
}
@@ -110,6 +149,8 @@ export default function EditOne(props: any) {
return;
}
if (info.file.status === 'done') {
+ console.log(info);
+
setTextLodaing(false)
// const fileId = info.file.response.data.fileId;
// // console.log(downloadUrl(fileId));
@@ -125,7 +166,7 @@ export default function EditOne(props: any) {
url: showImage(info.file.response.data.fileId, false)
}
])
- formA.setFieldsValue({ imgUrl: info.file.response.data.fileId })
+ formA.setFieldsValue({ trademarkPhoto: info.file.response.data.fileId })
return;
}
@@ -139,34 +180,198 @@ export default function EditOne(props: any) {
// 上传图形商标图片
const [imgLodaing, setImgLodaing] = useState(false)
const [upImglist, setUpImglist] = useState([])
- const onFinishA = (values: any) => {
- console.log(values);
- console.log(fileList); // 上传的授权声明书模板
- console.log(generateImgId); // 自动生成的
- console.log(imgList[0]?.uid); // 手动上传的
- props.setEditProcess(2);
+ // 点击下一步如果需要保存的Loading
+ const [upLodaing, setUpLoading] = useState(false)
+ const onFinishA = async (values: any) => {
+
+ const dataInfo = {
+ ...values,
+ trademarkType: goodsType, // 商标类型
+ trademarkFile: fileList.length > 0 ? fileList[0].uid : '', // 授权声明书
+ trademarkPhotoType: generateType, // 1 自动生成 2 手动上传
+ // trademarkId: props.trademarkId ? props.trademarkId : '', // 商标id
+
+ }
+ console.log(dataInfo);
+ console.log(props.editOneData);
+ console.log(deepCompareObjects(dataInfo, props.editOneData));
+ if (deepCompareObjects(dataInfo, props.editOneData)) {
+ props.setEditProcess(2);
+ return;
+ }
+ // return;
+
+ try {
+ setUpLoading(true)
+ const res: any = await trademarkBaseInfo({
+ ...values,
+ trademarkFile: fileList[0]?.uid, // 授权声明书
+ trademarkId: props.trademarkId ? props.trademarkId : '', // 商标id
+ trademarkMode: props.trademarkMode, // 申请类型id
+ trademarkModeName: props.trademarkModeName, // 申请类型名称
+ trademarkPhotoType: generateType, // 1 自动生成 2 手动上传
+ trademarkType: goodsType, // 商标类型
+ })
+ setUpLoading(false)
+ props.setEditOneData({
+ trademarkType: goodsType, // 商标类型
+ trademarkName: values.trademarkName, // 商标名称
+ trademarkDescription: values.trademarkDescription, // 商标描述
+ trademarkFile: fileList.length > 0 ? fileList[0].uid : '', // 授权声明书
+ trademarkPhotoType: generateType, // 1 自动生成 2 手动上传
+ trademarkPhoto: values.trademarkPhoto, // 商标图样
+ })
+ props.setEditProcess(2);
+ if (res.data) {
+ props.setTrademarkId(res.data)
+ }
+ console.log('结果', res);
+ } catch (error: any) {
+ setUpLoading(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 {
+ setUpLoading(false)
+ }
+
+ // props.setEditProcess(2);
}
- const onFinishB = (values: any) => {
- console.log(values);
+ const onFinishB = async (values: any) => {
+ console.log(values); //trademarkDescription trademarkPhoto
console.log(upImglist); //商标图样
+ const dataInfo = {
+ ...values,
+ trademarkType: goodsType, // 商标类型
+ trademarkFile: '', // 授权声明书
+ trademarkPhotoType: '2', // 1 自动生成 2 手动上传
+ trademarkName: '',
+ }
+ console.log(dataInfo);
+ console.log(props.editOneData);
+ // 去除 trademarkName 项
+ // return;
- props.setEditProcess(2);
+
+
+ // return
+ if (deepCompareObjects(dataInfo, props.editOneData)) {
+ props.setEditProcess(2);
+ return;
+ }
+ try {
+ setUpLoading(true)
+
+ await trademarkBaseInfo({
+ ...values,
+ trademarkId: props.trademarkId ? props.trademarkId : '', // 商标id
+ trademarkMode: props.trademarkMode, // 申请类型id
+ trademarkModeName: props.trademarkModeName, // 申请类型名称
+ trademarkType: goodsType, // 商标类型
+ trademarkPhotoType: '2',
+ // trademarkName: '',
+ })
+ setUpLoading(false)
+ props.setEditOneData({
+ trademarkType: goodsType, // 商标类型
+ trademarkName: '', // 商标名称
+ trademarkDescription: values.trademarkDescription, // 商标描述
+ trademarkFile: '', // 授权声明书
+ trademarkPhotoType: '2', // 1 自动生成 2 手动上传
+ trademarkPhoto: values.trademarkPhoto, // 商标图样
+ })
+ props.setEditProcess(2);
+
+ } catch (error: any) {
+ setUpLoading(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 {
+ setUpLoading(false)
+ }
+ // props.setEditProcess(2);
}
// 上传文字与图形商标图片
const [imgLodaingC, setImgLodaingC] = useState(false)
const [upImglistC, setUpImglistC] = useState([])
- const onFinishC = (values: any) => {
+ const onFinishC = async (values: any) => {
console.log(values);
// props.setEditProcess(2);
- console.log(upImglistC); //商标图样
- console.log(fileListC); // 上传的授权声明书模板
- console.log(fileListC);
+ // console.log(upImglistC); //商标图样
+ // console.log(fileListC); // 上传的授权声明书模板
+ const dataInfo = {
+ ...values,
+ trademarkType: goodsType, // 商标类型
+ trademarkFile: fileListC.length > 0 ? fileListC[0].uid : '', // 授权声明书
+ trademarkPhotoType: '2', // 1 自动生成 2 手动上传
+ // trademarkId: props.trademarkId ? props.trademarkId : '', // 商标id
+ }
+ console.log(dataInfo);
+ console.log(props.editOneData);
+ if (deepCompareObjects(dataInfo, props.editOneData)) {
+ props.setEditProcess(2);
+ return;
+ }
+ // return
+ try {
+ setUpLoading(true)
+ await trademarkBaseInfo({
+ ...values,
+ trademarkFile: fileListC.length > 0 ? fileListC[0].uid : '',
+ trademarkId: props.trademarkId ? props.trademarkId : '', // 商标id
+ trademarkMode: props.trademarkMode, // 申请类型id
+ trademarkModeName: props.trademarkModeName, // 申请类型名称
+
+ // trademarkModeName: props.trademarkModeName, // 申请类型名称
+ trademarkType: goodsType, // 商标类型
+ trademarkPhotoType: '2',
+ })
+ // console.log('结果', res);
+ props.setEditOneData({
+ trademarkType: goodsType, // 商标类型
+ trademarkName: values.trademarkName, // 商标名称
+ trademarkDescription: values.trademarkDescription, // 商标描述
+ trademarkFile: fileListC.length > 0 ? fileListC[0].uid : '', // 授权声明书
+ trademarkPhotoType: '2', // 1 自动生成 2 手动上传
+ trademarkPhoto: values.trademarkPhoto, // 商标图样
+ })
+ setUpLoading(false)
+ props.setEditProcess(2);
+
+ } catch (error: any) {
+ setUpLoading(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 {
+ setUpLoading(false)
+ }
}
const onChange = (e: any) => {
@@ -174,1060 +379,1342 @@ export default function EditOne(props: any) {
};
const generateTypeChange = (e: any) => {
setGenerateType(e.target.value)
+
+ // console.log(e.target.value);
+ // console.log('generateImgId', generateImgId);
+ // console.log('imgUrl', imgList[0]?.uid);
+ // return
// 给FormA表单的imgUrl赋值
- // if (e.target.value === '1') {
- // formA.setFieldsValue({ imgUrl: generateImgId })
+ // if (e.target.value == '1') {
+ // formA.setFieldsValue({ imgUrl: generateImgId })
// }
- // if (e.target.value === '2') {
- // formA.setFieldsValue({ imgUrl: imgList[0]?.uid})
+ // if (e.target.value == '2') {
+ // formA.setFieldsValue({ imgUrl: imgList[0]?.uid })
// }
- formA.setFieldsValue({ imgUrl: '' })
- setGenerateImgId('')
- setImgList([])
+ // formA.setFieldsValue({ trademarkPhoto: '' })
+ // setGenerateImgId('')
+ // setImgList([])
}
+ useEffect(() => {
+ if (generateType == '1') {
+ formA.setFieldsValue({ trademarkPhoto: generateImgId ? generateImgId : '' })
+ }
+ if (generateType == '2') {
+ formA.setFieldsValue({ trademarkPhoto: imgList[0]?.uid ? imgList[0]?.uid : '' })
+ }
+ }, [generateType])
+ const getUpfileDetail = async (fileId: string) => {
+ try {
+ const res: any = await fileDetail(fileId)
+ console.log('文件详情', res);
+ setFileList([{
+ uid: res[0].fileId, // 手动上传的
+ name: res[0].fileName, // 手动上传的
+ status: 'done', // 手动上传的
+ url: showImage(res[0].fileId, false) // 手动上传的
+ }])
+ } catch (error: any) {
+ if (error.response) {
+ const data = error.response.data;
+ messageApi.open({
+ type: 'error',
+ content: data.msg ? data.msg : `${data.path}(${data.status})`,
+ });
+ } else {
+ console.error(error)
+ }
+ }
+ }
+ const getUpfileCDetail = async (fileId: string) => {
+ try {
+ const res: any = await fileDetail(fileId)
+ console.log('结果', res);
+ setFileListC([{
+ uid: res[0].fileId, // 手动上传的
+ name: res[0].fileName, // 手动上传的
+ status: 'done', // 手动上传的
+ url: showImage(res[0].fileId, false) // 手动上传的
+ }])
+ } catch (error: any) {
+ if (error.response) {
+ const data = error.response.data;
+ messageApi.open({
+ type: 'error',
+ content: data.msg ? data.msg : `${data.path}(${data.status})`,
+ });
+ } else {
+ console.error(error)
+ }
+ }
+ }
+ useEffect(() => {
+ console.log('传递one的数据', props.editOneData);
+ const { trademarkName, trademarkDescription, trademarkPhoto, trademarkPhotoType, trademarkType, trademarkFile } = props.editOneData;
+ if (trademarkType) {
+ console.log(1);
+
+ // 赋值方式
+ setGoodsType(trademarkType)
+ setGenerateType(trademarkPhotoType)
+
+ if (trademarkType == 'text') {
+ formA.setFieldsValue({
+ trademarkName: trademarkName, // 商标名称
+ trademarkDescription: trademarkDescription, // 商标描述
+ trademarkPhoto: trademarkPhoto, // 商标图样
+ })
+ if (trademarkPhotoType == '1') { // 自动生成
+ setGenerateImgId(trademarkPhoto) // 自动生成的
+ }
+ if (trademarkPhotoType == '2') { // 自动生成
+ setImgList([{
+ uid: trademarkPhoto, // 手动上传的
+ name: trademarkPhoto, // 手动上传的
+ status: 'done', // 手动上传的
+ url: showImage(trademarkPhoto, false) // 手动上传的
+ }]) // 手动上传的
+ }
+ if (trademarkFile) {
+ getUpfileDetail(trademarkFile)
+ // setFileList([{
+ // uid: trademarkFile,
+ // name: trademarkFile,
+ // status: 'done',
+ // url: showImage(trademarkFile, false)
+ // }]) // 手动上传的
+ }
+
+ }
+ if (trademarkType == 'image') {
+ formB.setFieldsValue({
+ trademarkDescription: trademarkDescription, // 商标描述
+ trademarkPhoto: trademarkPhoto, // 商标图样
+ })
+ setUpImglist([{
+ uid: trademarkPhoto, // 手动上传的
+ name: trademarkPhoto, // 手动上传的
+ status: 'done', // 手动上传的
+ url: showImage(trademarkPhoto, false) // 手动上传的
+ }]) // 手动上传的
+ }
+ if (trademarkType == 'text-image') {
+ formC.setFieldsValue({
+ trademarkName: trademarkName, // 商标名称
+ trademarkDescription: trademarkDescription, // 商标描述
+ trademarkPhoto: trademarkPhoto, // 商标图样
+ })
+ setUpImglistC([{
+ uid: trademarkPhoto, // 手动上传的
+ name: trademarkPhoto, // 手动上传的
+ status: 'done', // 手动上传的
+ url: showImage(trademarkPhoto, false) // 手动上传的
+ }])
+ if (trademarkFile) {
+ getUpfileCDetail(trademarkFile)
+ // setFileListC([{
+ // uid: trademarkFile,
+ // name: trademarkFile,
+ // status: 'done',
+ // url: showImage(trademarkFile, false)
+ // }]) // 手动上传的
+ }
+ }
+
+ }
+
+ }, [props.editOneData])
return (
-
-
-
-
-
- !
-
-
-
-
当前仅提供文字、图形或文字图形组合商标申请;暂不支持立体商标、声音商标、证明商标、集体商标的申请。
-
商标局录入的商标信息以商标图样为准,且最终使用需与商标图样一致,请您确认手动上传的商标图样是您想要注册的商标。
-
-
-
+
+ {contextHolder}
+
+
- 基本信息
-
-
-
-
-