暂存
This commit is contained in:
parent
d2c09876b0
commit
b524324414
4
.env.dev
4
.env.dev
@ -6,7 +6,7 @@ VITE_OPERATOR_PLUGIN_BASE_URL=${VITE_BASE_URL}:8099
|
||||
VITE_AI_SHOP_BASE_URL=http://192.168.0.115:8081
|
||||
VITE_WEBSOCKET_BASE_URL=ws://${VITE_HOST}:7025/copyright
|
||||
# 18634604067
|
||||
# VITE_USERID=80d3365e-0597-4988-979e-18ef1c3ec671
|
||||
VITE_USERID=e3e40f95-7a3f-4b53-a1a0-51dd4e881d74
|
||||
VITE_USERID=80d3365e-0597-4988-979e-18ef1c3ec671
|
||||
# VITE_USERID=e3e40f95-7a3f-4b53-a1a0-51dd4e881d74
|
||||
# VITE_CURRENT_THEME=fzkj
|
||||
VITE_CURRENT_THEME=mzw
|
||||
|
@ -121,3 +121,25 @@ export const updateBindPhone = (params:any) => phoneRequest.post(`/operator/api/
|
||||
export const unbind = () => phoneRequest.get(`/operator/api/user-wx-update-username/unlock-phone`)
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// APP电子软著接口----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
//获取APP电子软著可买商品展示列表
|
||||
export const appGoodsList = () => aiShopRequest.get(`/aishop/api/data/listbyparentid/71831561-108f-49f0-92c8-f9e4f0483c02`)
|
||||
// 获取运行系统选项
|
||||
export const runSystemList = () => aiShopRequest.get(`/aishop/api/data/listbyparentid/9fc8636a-b930-4e82-beb3-db7ca6151e6b`)
|
||||
// 获取大类选项
|
||||
export const bigClassList = () => aiShopRequest.get(`/aishop/api/data/listbyparentid/8abb5b58-83d2-465c-b164-a189efee28c1`)
|
||||
// 获取小类
|
||||
export const smallClassList = (id:string) => aiShopRequest.get(`/aishop/api/data/listbyparentid/8abb5b58-83d2-465c-b164-a189efee28c1/${id}`)
|
||||
|
||||
|
||||
// 下单购买APP电子软著
|
||||
export const buyAppGoods = (orderMoneyId:string) => aiShopRequest.post(`/aishop/api/apporder/pay/${orderMoneyId}`)
|
||||
// 获取我的app电子软著订单列表
|
||||
export const appOrderList = (params:any) => aiShopRequest.get(`/aishop/api/apporder/listpage-self`, { params })
|
||||
// 获取app电子软著详情
|
||||
export const appOrderDetail = (appOrderId:any) => aiShopRequest.get(`/aishop/api/apporder/get/${appOrderId}`)
|
||||
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
@ -64,7 +64,7 @@ request.interceptors.response.use(
|
||||
|
||||
|
||||
|
||||
// 买卖功能----------------------------------------------------------------------------
|
||||
// 买卖功能(交易中心/APP电子软著)----------------------------------------------------------------------------
|
||||
const aiShopRequest = axios.create({
|
||||
baseURL: aiShopBaseUrl,
|
||||
timeout: 5000,
|
||||
|
@ -8,88 +8,265 @@ import EditAppFiles from './components/EditAppFiles/EditAppFiles';
|
||||
import AppInfo from './components/AppInfo/AppInfo';
|
||||
import AppCompany from './components/AppCompany/AppCompany';
|
||||
import { useParams } from 'react-router-dom'
|
||||
import { runSystemList, bigClassList, smallClassList } from '../../request/api'
|
||||
import './app-edit.css'
|
||||
import {
|
||||
RightOutlined
|
||||
} from '@ant-design/icons';
|
||||
import {
|
||||
message,
|
||||
Spin,
|
||||
|
||||
} from 'antd';
|
||||
import { appOrderDetail } from '../../request/api'
|
||||
export default function AppEdit() {
|
||||
const [messageApi, contextHolder] = message.useMessage();
|
||||
const pathParams = useParams();
|
||||
// 进度
|
||||
const appOrderId = pathParams.appOrderId;
|
||||
const [systemList, setSystemList] = useState<any[]>([]); // 运行系统选项
|
||||
const [bigClass, setBigClass] = useState<any[]>([]); // 软件分类(大类)选项
|
||||
const [smallClass, setSmallClass] = useState<any[]>([]); // 软件分类(小类)选项
|
||||
// 获取运行系统选项
|
||||
const getRunSystemList = async () => {
|
||||
try {
|
||||
const res: any = await runSystemList();
|
||||
console.log('运行系统选项', res.map((item: any) => {
|
||||
return {
|
||||
label: item.dataName,
|
||||
value: item.dataName,
|
||||
}
|
||||
}));
|
||||
setSystemList(res.map((item: any) => {
|
||||
return {
|
||||
label: item.dataName,
|
||||
value: item.dataName,
|
||||
}
|
||||
}))
|
||||
} 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 getBigClassList = async () => {
|
||||
try {
|
||||
const res: any = await bigClassList();
|
||||
console.log('大类选项', res.map((item: any) => {
|
||||
return {
|
||||
label: item.dataName,
|
||||
value: item.dataId,
|
||||
}
|
||||
}));
|
||||
setBigClass(res.map((item: any) => {
|
||||
return {
|
||||
label: item.dataId,
|
||||
value: item.dataName,
|
||||
}
|
||||
}))
|
||||
} 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 getSmallClassList = async (id: string) => {
|
||||
try {
|
||||
const res: any = await smallClassList(id);
|
||||
console.log(res);
|
||||
setSmallClass(res.map((item: any) => {
|
||||
return {
|
||||
label: item.dataId,
|
||||
value: item.dataName,
|
||||
}
|
||||
}))
|
||||
} 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 [loading, setLoading] = useState(false);
|
||||
const [editProcess, setEditProcess] = useState(1);
|
||||
// 企业/机构认证
|
||||
const [companyInfo, setCompanyInfo] = useState<any>({
|
||||
companyName: '', // 企业名称
|
||||
companyNumber: '', // 企业统一社会信用代码
|
||||
companyPhoto: '', // 企业照片
|
||||
companyAuth: '',//授权书
|
||||
});
|
||||
// 软件基本信息
|
||||
const [appInfo, setAppInfo] = useState<any>({
|
||||
appName: '', // 项目名称
|
||||
subName: '', // 软件简称
|
||||
versionName: '', // 版本号
|
||||
packageName: '', // 包名APPID
|
||||
systemName: '', // 运行系统
|
||||
bigClassify: '', // 软件分类(大类)
|
||||
subClassify: '', // 软件分类(小类)
|
||||
developWay: '', // 开发方式
|
||||
completeTime: '', // 开发完成时期
|
||||
projOwnerName: '',//著作权人姓名
|
||||
projOwnerIdentity: '',//著作权人证件号
|
||||
projOwnerId: '',//著作权人信息ID
|
||||
})
|
||||
// 材料信息
|
||||
const [filesInfo, setFilesInfo] = useState<any>({
|
||||
sourceCodeDocFile: '',//源码
|
||||
softwareDocFile: '',//软件
|
||||
})
|
||||
// 获取详情
|
||||
const getAppOrderDetail = async () => {
|
||||
try {
|
||||
setLoading(true)
|
||||
const res: any = await appOrderDetail(appOrderId);
|
||||
console.log('详情', res);
|
||||
setCompanyInfo({
|
||||
companyName: res.companyName, // 企业名称
|
||||
companyNumber: res.companyNumber, // 企业统一社会信用代码
|
||||
companyPhoto: res.companyPhoto, // 企业照片
|
||||
companyAuth: res.companyAuth,//授权书
|
||||
})
|
||||
setAppInfo({
|
||||
appName: res.appName, // 项目名称
|
||||
subName: res.subName, // 软件简称
|
||||
versionName: res.versionName, // 版本号
|
||||
packageName: res.packageName, // 包名APPID
|
||||
systemName: res.systemName, // 运行系统
|
||||
bigClassify: res.bigClassify, // 软件分类(大类)
|
||||
subClassify: res.subClassify, // 软件分类(小类)
|
||||
developWay: res.developWay, // 开发方式
|
||||
completeTime: res.completeTime, // 开发完成时期
|
||||
projOwnerName: res.projOwnerName,//著作权人姓名
|
||||
projOwnerIdentity: res.projOwnerIdentity,//著作权人证件号
|
||||
projOwnerId: res.projOwnerId,//著作权人信息ID
|
||||
})
|
||||
setFilesInfo({
|
||||
sourceCodeDocFile: res.sourceCodeDocFile,//源码
|
||||
softwareDocFile: res.softwareDocFile,//软件
|
||||
})
|
||||
setEditProcess(Number(res.appOrderProgress) + 1)
|
||||
setLoading(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)
|
||||
}
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// 进度
|
||||
// 获取详情
|
||||
useEffect(() => {
|
||||
getAppOrderDetail()
|
||||
//获取进度
|
||||
setEditProcess(1)
|
||||
// 带来的id
|
||||
console.log('参数', pathParams);
|
||||
// 获取 信息
|
||||
|
||||
// setEditProcess(1)
|
||||
getRunSystemList()
|
||||
getBigClassList()
|
||||
|
||||
if(appInfo.bigClassify) {
|
||||
getSmallClassList(appInfo.bigClassify)
|
||||
}
|
||||
}, []);
|
||||
const height = window.innerHeight - 180;
|
||||
return (
|
||||
<div className='appEdit' style={{ height: `${height}px`, overflow: 'auto' }}>
|
||||
<div className='editProcessBox'>
|
||||
<div className='editProcess' >
|
||||
<div className='editProcessNum'
|
||||
style={{
|
||||
background: editProcess >= 1 ? '#3B60E8' : '',
|
||||
color: editProcess >= 1 ? '#fff' : '#B1B1B1',
|
||||
borderColor: editProcess >= 1 ? '' : '#B1B1B1'
|
||||
}}
|
||||
>1</div>
|
||||
<div className='editProcessTitle'
|
||||
style={{
|
||||
color: editProcess >= 1 ? '#353535' : '#878787',
|
||||
fontWeight: editProcess >= 1 ? 'bold' : 'normal'
|
||||
}}
|
||||
>企业/机构认证</div>
|
||||
</div>
|
||||
<div className='editright'><RightOutlined /></div>
|
||||
<div className='editProcess'>
|
||||
<div className='editProcessNum' style={{
|
||||
background: editProcess >= 2 ? '#3B60E8' : '',
|
||||
color: editProcess >= 2 ? '#fff' : '#B1B1B1',
|
||||
borderColor: editProcess >= 2 ? '' : '#B1B1B1'
|
||||
}}>2</div>
|
||||
<div className='editProcessTitle'
|
||||
style={{
|
||||
color: editProcess >= 2 ? '#353535' : '#878787',
|
||||
fontWeight: editProcess >= 2 ? 'bold' : 'normal'
|
||||
}}
|
||||
>软件基本信息</div>
|
||||
</div>
|
||||
<div className='editright'><RightOutlined /></div>
|
||||
<div className='editProcess'>
|
||||
<div className='editProcessNum' style={{
|
||||
background: editProcess >= 3 ? '#3B60E8' : '',
|
||||
color: editProcess >= 3 ? '#fff' : '#B1B1B1',
|
||||
borderColor: editProcess >= 3 ? '' : '#B1B1B1'
|
||||
}}>3</div>
|
||||
<div className='editProcessTitle'
|
||||
style={{
|
||||
color: editProcess >= 3 ? '#353535' : '#878787',
|
||||
fontWeight: editProcess >= 3 ? 'bold' : 'normal'
|
||||
}}
|
||||
>鉴别材料</div>
|
||||
</div>
|
||||
<div className='editright'><RightOutlined /></div>
|
||||
<div className='editProcess'>
|
||||
<div className='editProcessNum' style={{
|
||||
background: editProcess >= 4 ? '#3B60E8' : '',
|
||||
color: editProcess >= 4 ? '#fff' : '#B1B1B1',
|
||||
borderColor: editProcess >= 4 ? '' : '#B1B1B1'
|
||||
}}>4</div>
|
||||
<div className='editProcessTitle'
|
||||
style={{
|
||||
color: editProcess >= 4 ? '#353535' : '#878787',
|
||||
fontWeight: editProcess >= 4 ? 'bold' : 'normal'
|
||||
}}
|
||||
>
|
||||
{/* 功能特点 */}
|
||||
填报完成
|
||||
<Spin tip="加载中..." size="small" spinning={loading}>
|
||||
<div className='appEdit' style={{ height: `${height}px`, overflow: 'auto' }}>
|
||||
{contextHolder}
|
||||
<div className='editProcessBox'>
|
||||
<div className='editProcess' >
|
||||
<div className='editProcessNum'
|
||||
style={{
|
||||
background: editProcess >= 1 ? '#3B60E8' : '',
|
||||
color: editProcess >= 1 ? '#fff' : '#B1B1B1',
|
||||
borderColor: editProcess >= 1 ? '' : '#B1B1B1'
|
||||
}}
|
||||
>1</div>
|
||||
<div className='editProcessTitle'
|
||||
style={{
|
||||
color: editProcess >= 1 ? '#353535' : '#878787',
|
||||
fontWeight: editProcess >= 1 ? 'bold' : 'normal'
|
||||
}}
|
||||
>企业/机构认证</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* <div className='editright'><RightOutlined /></div>
|
||||
<div className='editright'><RightOutlined /></div>
|
||||
<div className='editProcess'>
|
||||
<div className='editProcessNum' style={{
|
||||
background: editProcess >= 2 ? '#3B60E8' : '',
|
||||
color: editProcess >= 2 ? '#fff' : '#B1B1B1',
|
||||
borderColor: editProcess >= 2 ? '' : '#B1B1B1'
|
||||
}}>2</div>
|
||||
<div className='editProcessTitle'
|
||||
style={{
|
||||
color: editProcess >= 2 ? '#353535' : '#878787',
|
||||
fontWeight: editProcess >= 2 ? 'bold' : 'normal'
|
||||
}}
|
||||
>软件基本信息</div>
|
||||
</div>
|
||||
<div className='editright'><RightOutlined /></div>
|
||||
<div className='editProcess'>
|
||||
<div className='editProcessNum' style={{
|
||||
background: editProcess >= 3 ? '#3B60E8' : '',
|
||||
color: editProcess >= 3 ? '#fff' : '#B1B1B1',
|
||||
borderColor: editProcess >= 3 ? '' : '#B1B1B1'
|
||||
}}>3</div>
|
||||
<div className='editProcessTitle'
|
||||
style={{
|
||||
color: editProcess >= 3 ? '#353535' : '#878787',
|
||||
fontWeight: editProcess >= 3 ? 'bold' : 'normal'
|
||||
}}
|
||||
>鉴别材料</div>
|
||||
</div>
|
||||
<div className='editright'><RightOutlined /></div>
|
||||
<div className='editProcess'>
|
||||
<div className='editProcessNum' style={{
|
||||
background: editProcess >= 4 ? '#3B60E8' : '',
|
||||
color: editProcess >= 4 ? '#fff' : '#B1B1B1',
|
||||
borderColor: editProcess >= 4 ? '' : '#B1B1B1'
|
||||
}}>4</div>
|
||||
<div className='editProcessTitle'
|
||||
style={{
|
||||
color: editProcess >= 4 ? '#353535' : '#878787',
|
||||
fontWeight: editProcess >= 4 ? 'bold' : 'normal'
|
||||
}}
|
||||
>
|
||||
{/* 功能特点 */}
|
||||
填报完成
|
||||
</div>
|
||||
</div>
|
||||
{/* <div className='editright'><RightOutlined /></div>
|
||||
<div className='editProcess'>
|
||||
<div className='editProcessNum' style={{
|
||||
background: editProcess >= 5 ? '#3B60E8' : '',
|
||||
@ -119,60 +296,73 @@ export default function AppEdit() {
|
||||
</div> */}
|
||||
|
||||
|
||||
</div>
|
||||
<div className='editFormBox'>
|
||||
<div style={{
|
||||
display: editProcess == 1 ? 'block' : 'none'
|
||||
}}>
|
||||
<AppCompany setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></AppCompany>
|
||||
{/* <EditAppInfo setEditProcess={
|
||||
</div>
|
||||
<div className='editFormBox'>
|
||||
<div style={{
|
||||
display: editProcess == 1 ? 'block' : 'none'
|
||||
}}>
|
||||
<AppCompany
|
||||
companyInfo={companyInfo}
|
||||
setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></AppCompany>
|
||||
{/* <EditAppInfo setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></EditAppInfo> */}
|
||||
</div>
|
||||
<div style={{
|
||||
display: editProcess == 2 ? 'block' : 'none'
|
||||
}}>
|
||||
<EditAppInfo setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></EditAppInfo>
|
||||
{/* <EditAppDes setEditProcess={
|
||||
</div>
|
||||
<div style={{
|
||||
display: editProcess == 2 ? 'block' : 'none'
|
||||
}}>
|
||||
<EditAppInfo
|
||||
bigClass={bigClass}
|
||||
systemList={systemList}
|
||||
smallClass={smallClass}
|
||||
appInfo={appInfo}
|
||||
setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></EditAppInfo>
|
||||
{/* <EditAppDes setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></EditAppDes> */}
|
||||
</div>
|
||||
<div style={{
|
||||
display: editProcess == 3 ? 'block' : 'none'
|
||||
}}>
|
||||
<EditAppFiles setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></EditAppFiles>
|
||||
</div>
|
||||
<div style={{
|
||||
display: editProcess == 4 ? 'block' : 'none'
|
||||
}}>
|
||||
{/* <EditAppFunction setEditProcess={
|
||||
</div>
|
||||
<div style={{
|
||||
display: editProcess == 3 ? 'block' : 'none'
|
||||
}}>
|
||||
<EditAppFiles
|
||||
filesInfo={filesInfo}
|
||||
setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></EditAppFiles>
|
||||
</div>
|
||||
<div style={{
|
||||
display: editProcess == 4 ? 'block' : 'none'
|
||||
}}>
|
||||
{/* <EditAppFunction setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></EditAppFunction> */}
|
||||
<AppInfo setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></AppInfo>
|
||||
</div>
|
||||
{/* <div style={{
|
||||
<AppInfo
|
||||
companyInfo={companyInfo}
|
||||
appInfo={appInfo}
|
||||
filesInfo={filesInfo}
|
||||
setEditProcess={
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></AppInfo>
|
||||
</div>
|
||||
{/* <div style={{
|
||||
display: editProcess == 5 ? 'block' : 'none'
|
||||
}}>
|
||||
<EditBelongPeople setEditProcess={
|
||||
@ -190,7 +380,8 @@ export default function AppEdit() {
|
||||
}
|
||||
}></AppInfo>
|
||||
</div> */}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Spin>
|
||||
)
|
||||
}
|
||||
|
@ -1,47 +1,241 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { useSelector, useDispatch } from 'react-redux'
|
||||
import {
|
||||
Pagination,
|
||||
// Table,
|
||||
// Modal,
|
||||
// Spin
|
||||
// Spin,
|
||||
message,
|
||||
Spin,
|
||||
Table
|
||||
} from 'antd';
|
||||
import { appOrderList } from '../../request/api'
|
||||
import './app-election.css'
|
||||
import nothingImg from '../../static/appimgs/nothing.png'
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import type { TableProps } from 'antd';
|
||||
import { useNavigate } from "react-router-dom";
|
||||
interface DataType {
|
||||
appName: string; //项目名称
|
||||
bigClassify: string; //软件分类(大类)
|
||||
appOrderPayMoney: number; //支付金额;
|
||||
appOrderPayTime: string; //支付时间;
|
||||
gmtCreate: string;
|
||||
}
|
||||
export default function AppElectron() {
|
||||
const height = window.innerHeight - 180;
|
||||
const [page, setPage] = useState(1);
|
||||
const [total, setTotal] = useState(0);
|
||||
const data = [
|
||||
// { name: '123' }
|
||||
]
|
||||
useEffect(() => {
|
||||
setTotal(100)
|
||||
}, [page])
|
||||
return (
|
||||
<div className='appElectionBox' style={{ height: `${height}px`, overflow: 'auto' }}>
|
||||
{data.length <= 0 ? (<div style={{ height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center', flexDirection: 'column' }}>
|
||||
const nav = useNavigate();
|
||||
const dispath = useDispatch()
|
||||
const redxuState: any = useSelector(state => state)
|
||||
const data = redxuState.appGoodsListData;
|
||||
const columns: TableProps<DataType>['columns'] = [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: 'index',
|
||||
key: 'index',
|
||||
align: 'center',
|
||||
width: 90,
|
||||
render: (_text, _record, index) => (page - 1) * 10 + index + 1, // 显示序号,从1开始
|
||||
|
||||
<img src={nothingImg} alt="" width={368} height={355} />
|
||||
},
|
||||
{
|
||||
title: '项目名称',
|
||||
dataIndex: 'appName',
|
||||
key: 'appOrderId',
|
||||
align: 'center',
|
||||
ellipsis: {
|
||||
showTitle: true,
|
||||
},
|
||||
width: 200,
|
||||
render: (text) => (
|
||||
<span>
|
||||
{text ? text : '未完善'}
|
||||
</span>
|
||||
)
|
||||
|
||||
},
|
||||
{
|
||||
title: '软件分类',
|
||||
dataIndex: 'bigClassify',
|
||||
align: 'center',
|
||||
key: 'appOrderId',
|
||||
width: 120,
|
||||
ellipsis: {
|
||||
showTitle: true,
|
||||
},
|
||||
render: (text) => (
|
||||
<span>
|
||||
{text ? text : '未完善'}
|
||||
</span>
|
||||
)
|
||||
},
|
||||
{
|
||||
title: '支付金额',
|
||||
dataIndex: 'appOrderPayMoney',
|
||||
key: 'appOrderId',
|
||||
align: 'center',
|
||||
width: 120,
|
||||
render: (text) => (
|
||||
<span>
|
||||
{text / 100}
|
||||
</span>
|
||||
)
|
||||
},
|
||||
{
|
||||
title: '支付时间',
|
||||
dataIndex: 'appOrderPayTime',
|
||||
align: 'center',
|
||||
key: 'appOrderId',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '审核状态',
|
||||
dataIndex: 'checkStatus',
|
||||
align: 'center',
|
||||
key: 'appOrderId',
|
||||
width: 100,
|
||||
render: (text) => (
|
||||
<span>
|
||||
{text == '1' ? '待审核' : text == '2' ? '通过' : text == '0' ? '未通过' : '未提交'}
|
||||
</span>
|
||||
)
|
||||
},
|
||||
{
|
||||
title: '申请状态',
|
||||
dataIndex: 'appOrderStatus',
|
||||
align: 'center',
|
||||
key: 'appOrderId',
|
||||
width: 100,
|
||||
render: (text) => (
|
||||
<span>
|
||||
{text == '1' ? '未付款' : text == '2' ? '资料填写中' : text == '3' ? '资料审核中' : text == '4' ? '下线申请中' : text == '5' ? '已下证' : '未知'}
|
||||
</span>
|
||||
)
|
||||
},
|
||||
|
||||
{
|
||||
title: '操作',
|
||||
// dataIndex: 'contractManagementId',
|
||||
align: 'center',
|
||||
key: 'appOrderId',
|
||||
width: 80,
|
||||
render: (record) => (
|
||||
<div style={{
|
||||
marginTop: 50,
|
||||
fontSize: 16,
|
||||
color: '#D0D0D0'
|
||||
}}>暂无数据</div>
|
||||
</div>) : (
|
||||
<div className='transaction-order-table'>
|
||||
<div style={{ height: `${height - 80}px` }}>
|
||||
cursor: 'pointer',
|
||||
color: '#007FFF',
|
||||
}} onClick={() => {
|
||||
nav(`/app-edit/${record.appOrderId}`)
|
||||
// console.log(record);
|
||||
|
||||
|
||||
}}>编辑</div>
|
||||
)
|
||||
|
||||
},
|
||||
]
|
||||
const [messageApi, contextHolder] = message.useMessage();
|
||||
const height = window.innerHeight - 180;
|
||||
const { state } = useLocation()
|
||||
const keywords = state ? state.appKeyWords : ''
|
||||
const checkStatus = state? state.checkStatus : ''
|
||||
const appOrderStatus = state? state.appOrderStatus : ''
|
||||
const [page, setPage] = useState(1);
|
||||
// const [total, setTotal] = useState(0);
|
||||
const [loading, setLoading] = useState(false);
|
||||
// const [data, setData] = useState<any[]>([]);
|
||||
// 获取我得订单列表
|
||||
const getAppOrderList = async (page: number) => {
|
||||
try {
|
||||
setLoading(true)
|
||||
const res: any = await appOrderList({ page, keywords, rows: 10,checkStatus,appOrderStatus })
|
||||
// console.log(res);
|
||||
// setData(res.rows)
|
||||
// setTotal(res.total)
|
||||
setLoading(false)
|
||||
dispath({
|
||||
type: 'upAppGoodsListData',
|
||||
val: 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)
|
||||
}
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
|
||||
}
|
||||
useEffect(() => {
|
||||
setPage(1)
|
||||
getAppOrderList(1)
|
||||
}, [state,checkStatus,appOrderStatus])
|
||||
return (
|
||||
|
||||
<div className='appElectionBox' style={{ height: `${height}px` }}>
|
||||
|
||||
<Spin tip="加载中..." size="small" spinning={loading}>
|
||||
|
||||
{contextHolder}
|
||||
|
||||
{data.length <= 0 ? (
|
||||
<div style={{
|
||||
height: `${height}px`,
|
||||
// background:'pink',
|
||||
display: 'flex', justifyContent: 'center', alignItems: 'center', flexDirection: 'column'
|
||||
}}>
|
||||
|
||||
|
||||
<img src={nothingImg} alt="" width={368} height={355} />
|
||||
<div style={{
|
||||
marginTop: 50,
|
||||
fontSize: 16,
|
||||
color: '#D0D0D0'
|
||||
}}>暂无数据</div>
|
||||
</div>
|
||||
) : (
|
||||
<div className='transaction-order-table' >
|
||||
<div style={{
|
||||
height: `${height - 80}px`,
|
||||
// background: "pink" ,
|
||||
paddingTop: 20
|
||||
}}>
|
||||
|
||||
<Table
|
||||
scroll={{ y: `${height - 150}px` }}
|
||||
dataSource={data.rows}
|
||||
columns={columns}
|
||||
// pagination={{
|
||||
// defaultPageSize: 10, // 设置默认一页显示 5 条数据
|
||||
// }}
|
||||
pagination={false} // 不显示分页
|
||||
style={{ textAlign: 'center' }} // 设置表格内容居中显示
|
||||
rowKey="appOrderId" // 指定数据项的唯一标识符
|
||||
locale={{ emptyText: '暂无数据' }}
|
||||
></Table>
|
||||
|
||||
</div>
|
||||
<div className='product-release-pagination'>
|
||||
<Pagination
|
||||
showSizeChanger={false}
|
||||
current={page} total={data.total} defaultPageSize={10} onChange={(page) => {
|
||||
setPage(page)
|
||||
getAppOrderList(page)
|
||||
}} />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div className='product-release-pagination'>
|
||||
<Pagination
|
||||
showSizeChanger={false}
|
||||
current={page} total={total} defaultPageSize={10} onChange={(page) => {
|
||||
setPage(page)
|
||||
}} />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
)}
|
||||
)}
|
||||
</Spin>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
)
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { useState } from 'react'
|
||||
import { useState,useEffect } from 'react'
|
||||
import './app-company.css'
|
||||
import { uploadFileUrl } from '../../../../request/request'
|
||||
import { Button, Form, Input, message,
|
||||
@ -21,38 +21,7 @@ import type { GetProp, UploadProps } from 'antd';
|
||||
// // pId: string;
|
||||
// }
|
||||
export default function AppCompany(props: any) {
|
||||
// const [messageApi, contextHolder] = message.useMessage();
|
||||
// const [areaArray, setAreaArray] = useState<Option[]>([]);
|
||||
// 加载城市列表
|
||||
// const loadCityList = async (selectedOptions: Option[]) => {
|
||||
// const targetOption = selectedOptions[selectedOptions.length - 1];
|
||||
// // console.log('targetOption', targetOption.children);
|
||||
// try {
|
||||
// const res: any = await getCityList(targetOption.value as string);
|
||||
// // console.log('城市列表', res);
|
||||
|
||||
// const cities = res.map((city: any) => ({
|
||||
// value: city.areaId,
|
||||
// label: city.areaName,
|
||||
|
||||
// }));
|
||||
// targetOption.children = cities;
|
||||
// // 更新 areaArray 状态
|
||||
// setAreaArray([...areaArray]);
|
||||
// } 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)
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
|
||||
// 定义 beforeUpload 函数
|
||||
const beforeUpload = (file: any) => {
|
||||
const isJpgOrPng = ['image/jpeg', 'image/png', 'image/bmp'].includes(file.type);
|
||||
@ -138,6 +107,13 @@ export default function AppCompany(props: any) {
|
||||
submitInfo(values)
|
||||
|
||||
};
|
||||
useEffect(() => {
|
||||
// console.log('认证数据',props.companyInfo);
|
||||
if(props.companyInfo.companyName){
|
||||
console.log('嘻嘻');
|
||||
|
||||
}
|
||||
},[props.companyInfo])
|
||||
return (
|
||||
<div className='appInfoBox'>
|
||||
{/* {contextHolder} */}
|
||||
@ -170,26 +146,7 @@ export default function AppCompany(props: any) {
|
||||
}} placeholder="请输入企业/机构名称" />
|
||||
</Form.Item>
|
||||
</div>
|
||||
{/* <div className='appInfoFormInput' style={{
|
||||
|
||||
}}>
|
||||
<div className='FormInputTitle'>所在省市:</div>
|
||||
<Form.Item name="subName" label="" rules={[{ required: true, message: '请选择省市' },
|
||||
|
||||
]}>
|
||||
<Cascader options={areaArray}
|
||||
allowClear
|
||||
style={{
|
||||
width: '300px',
|
||||
height: '42px',
|
||||
}}
|
||||
|
||||
loadData={loadCityList}
|
||||
placeholder="请选择省市"
|
||||
changeOnSelect
|
||||
/>
|
||||
</Form.Item>
|
||||
</div> */}
|
||||
|
||||
<div className='appInfoFormInput'>
|
||||
<div className='FormInputTitle' style={{
|
||||
}}>统一社会信用代码<span style={{color:'red',}}>*</span>:</div>
|
||||
@ -206,85 +163,7 @@ export default function AppCompany(props: any) {
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{/* <div style={{
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between',
|
||||
width: '900px',
|
||||
}}>
|
||||
<div className='appInfoFormInput'>
|
||||
<div className='FormInputTitle'>企业/机构地址:</div>
|
||||
<Form.Item name="vnum" label="" rules={[{ required: true, message: '请输企业/机构地址' },
|
||||
|
||||
]}>
|
||||
<Input
|
||||
allowClear
|
||||
style={{
|
||||
width: '300px',
|
||||
height: '42px',
|
||||
}} placeholder="请输入企业/机构地址" />
|
||||
</Form.Item>
|
||||
</div>
|
||||
<div className='appInfoFormInput' style={{
|
||||
}}>
|
||||
<div className='FormInputTitle'>成立日期:</div>
|
||||
<Form.Item name="appId" label="" rules={[{ required: true, message: '请选择成立日期' },
|
||||
|
||||
]}>
|
||||
<DatePicker placeholder="请选择成立日期"
|
||||
style={{
|
||||
width: '300px',
|
||||
height: '42px',
|
||||
}}
|
||||
locale={locale}
|
||||
|
||||
/>
|
||||
</Form.Item>
|
||||
</div>
|
||||
</div> */}
|
||||
{/* <div style={{
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between',
|
||||
width: '900px',
|
||||
}}>
|
||||
<div className='appInfoFormInput'>
|
||||
<div className='FormInputTitle'>证件类型:</div>
|
||||
<Form.Item name="runtype" label="" rules={[{ required: true, message: '请选择证件类型' },
|
||||
|
||||
]}>
|
||||
<Select
|
||||
allowClear
|
||||
style={{
|
||||
width: '300px',
|
||||
height: '42px',
|
||||
}}
|
||||
|
||||
options={[
|
||||
// { value: '', label: '全部项目' },
|
||||
{ value: '1', label: '类型1' },
|
||||
{ value: '2', label: '类型2' },
|
||||
{ value: '3', label: '类型3' },
|
||||
]}
|
||||
// defaultValue=""
|
||||
placeholder={'请选择证件类型'}
|
||||
/>
|
||||
</Form.Item>
|
||||
</div>
|
||||
<div className='appInfoFormInput'>
|
||||
<div className='FormInputTitle' style={{
|
||||
}}>证件号:</div>
|
||||
<Form.Item name="type" label="" rules={[{ required: true, message: '请输入证件号' },
|
||||
|
||||
]}>
|
||||
<Input
|
||||
allowClear
|
||||
style={{
|
||||
width: '300px',
|
||||
height: '42px',
|
||||
}} placeholder="请输入证件号" />
|
||||
</Form.Item>
|
||||
|
||||
</div>
|
||||
</div> */}
|
||||
|
||||
<div style={{
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between',
|
||||
|
@ -1,9 +1,13 @@
|
||||
import { useState } from 'react'
|
||||
import { Button, Form, Upload, message, } from "antd"
|
||||
import { Button, Form, Upload, message, Modal } from "antd"
|
||||
import { uploadFileUrl } from '../../../../request/request'
|
||||
import { UploadOutlined } from '@ant-design/icons';
|
||||
import './edit-app-files.css'
|
||||
export default function EditAppFiles(props: any) {
|
||||
// 源码文档弹窗
|
||||
const [codeVisible, setCodeVisible] = useState(false)
|
||||
// 软件文档弹窗
|
||||
const [softVisible, setSoftVisible] = useState(false)
|
||||
// 定义允许上传的文件格式
|
||||
const ALLOWED_FILE_TYPES = ['.pdf', '.doc', '.docx', '.jpg', '.jpeg', '.png'];
|
||||
const beforeUpload = (file: File) => {
|
||||
@ -107,6 +111,8 @@ export default function EditAppFiles(props: any) {
|
||||
<div className='appInfoFormBox' style={{
|
||||
height: height,
|
||||
justifyContent: 'flex-start',
|
||||
// alignItems: 'center',
|
||||
// background: 'pink',
|
||||
flexDirection: 'column',
|
||||
marginLeft: '100px',
|
||||
paddingBottom: '0'
|
||||
@ -180,7 +186,13 @@ export default function EditAppFiles(props: any) {
|
||||
textWrap: 'nowrap'
|
||||
}}>[ 下载 ]</a>
|
||||
</div>
|
||||
<a>源码文档说明</a>
|
||||
<a style={{
|
||||
marginLeft: 58,
|
||||
}}
|
||||
onClick={() => {
|
||||
setCodeVisible(true)
|
||||
}}
|
||||
>《应用软件源程序提交注意事项及相关规范》</a>
|
||||
</div>
|
||||
<div>
|
||||
<div className='appInfoFormInput' style={{
|
||||
@ -225,7 +237,14 @@ export default function EditAppFiles(props: any) {
|
||||
textWrap: 'nowrap'
|
||||
}}>[ 下载 ]</a>
|
||||
</div>
|
||||
<a>软件文档说明</a>
|
||||
<a style={{
|
||||
// background: 'red',
|
||||
marginLeft: 58
|
||||
}}
|
||||
onClick={() => {
|
||||
setSoftVisible(true)
|
||||
}}
|
||||
>《应用软件文档提交注意事项及相关规范》</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -272,6 +291,141 @@ export default function EditAppFiles(props: any) {
|
||||
}}>下一步</Button>
|
||||
|
||||
</div>
|
||||
<Modal title="应用软件源程序提交注意事项及相关规范"
|
||||
centered
|
||||
footer={null}
|
||||
destroyOnClose
|
||||
open={codeVisible}
|
||||
width={1000}
|
||||
onCancel={() => {
|
||||
setCodeVisible(false)
|
||||
|
||||
}}>
|
||||
|
||||
<div style={{
|
||||
lineHeight: '30px',
|
||||
fontSize: '16px'
|
||||
}}>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
源码文档需提交PDF格式的文件,软件源程序代码由前、后各连续30页组成。软件源程序多于60页的需要提交连续的前30及后30页,前30页和后30页应是各自连续的。
|
||||
</div>
|
||||
<div>
|
||||
1、源程序的第1页应当是程序或一个功能模块的开头,源程序的第60页应当是程序或一个功能模块的结尾,不满60页的需全部提供;
|
||||
</div>
|
||||
<div>
|
||||
2、源程序每页应该≥50行,并标明页码;
|
||||
</div>
|
||||
<div>
|
||||
3、编写源程序的语言应和申请表填写的语言保持一致;
|
||||
</div>
|
||||
<div>
|
||||
4、源程序应和文档中介绍的主要功能存在关联性;
|
||||
</div>
|
||||
<div>
|
||||
5、源程序编写内容中出现的署名或版权声明以及任何与权利归属有关的内容,著作权人名称应与申请的著作权人保持一致;
|
||||
</div>
|
||||
<div>
|
||||
6、源程序中出现著作权人成立之前的创建或修改时间的,申请人应该确认是否存在前期开发行为,如有,需提交《前期开发说明》;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
7、源程序中尽量不要出现软件开发完成之后的日期;(出现软件完成日期之后的创建或修改时间的,如果只是纠错性的修改、适应性的调整,不造成软件的功能或性能发生重大变化而发生软件版本升级的,是正常合理的。)
|
||||
</div>
|
||||
<div>
|
||||
8、源程序中出现他人的自由软件/开源软件的版权声明或相关许可证(License)信息的,且申请人认可源代码中含有他人的自由软件/开源软件源代码的情况,申请人需要提供相关的书面说明;
|
||||
</div>
|
||||
<div>
|
||||
9、源程序如果有页眉,页面的软件名称、版本号与申请信息及其他申请材料中的软件名称、版本号应当一致;
|
||||
</div>
|
||||
<div>
|
||||
10、源程序中的软件名称应与申请信息中的软件全称或简称一致,版本号也应该保持一致;
|
||||
</div>
|
||||
<div>
|
||||
11、源程序如果有文件名,应和申请的软件名称或权利人保持一致,文件名可不填。
|
||||
</div>
|
||||
<div>
|
||||
12、源程序中不能含有危害国家安全、低俗、情色等非法内容。
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
<Modal title="应用软件文档提交注意事项及相关规范"
|
||||
centered
|
||||
footer={null}
|
||||
destroyOnClose
|
||||
open={softVisible}
|
||||
width={1000}
|
||||
onCancel={() => {
|
||||
setSoftVisible(false)
|
||||
|
||||
}}>
|
||||
|
||||
<div style={{
|
||||
lineHeight: '30px',
|
||||
fontSize: '16px'
|
||||
}}>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
文档指软件的使用说明书或者设计说明书(选择其一提交),需提交PDF格式。一般应提交10-60页,整个文档不到60页的应提交全部,超过60页时,提交前、后各连续的30页,文档应图文并茂,语句通顺,每页应≥30行(有图除外)。
|
||||
</div>
|
||||
<div>
|
||||
1、软件使用说明书主要内容要求:从打开软件起开始截取软件的主要功能界面图,截图应带有主界面,不可截部分图,依次为主界面展示、界面的跳转,主要功能模块依次介绍,主要功能都应介绍。截图应截取完整的软件界面,且图片清晰可辨,需有详细的文字介绍,介绍其主要功能如何使用,上一个界面是通过什么操作跳转至下一个界面的;
|
||||
</div>
|
||||
<div>
|
||||
2、软件设计说明书主要内容要求:应包含软件的基本处理流程、程序系统的组织结构、功能模块划分、接口和数据结构设计等主要设计内容;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
3、文档应和源程序存在一定的关联性;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
4、文档中截图不能含有他人的商标,如使用他人商标,应提交《商标使用授权书》;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
5、截图界面需和申请表中填写的硬件环境、软件环境相匹配;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
6、文档中不能出现重复截图;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
7、文档页眉(如果有)的软件名称、版本号与申请表单及其他申请材料中的软件名称、版本号应当一致;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
8、文档内容(包括文字、截图等)中的软件名称应与申请表单中的软件全称或简称一致,版本号也应该保持一致;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
9、文档中出现的署名或版权声明以及任何与权利归属有关的内容,著作权人名称应与申请表单中一致;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
10、文档应标明页码;
|
||||
</div>
|
||||
<div>
|
||||
11、文档的文件名应和申请的软件名称或权利人保持一致,文件名可不填;
|
||||
|
||||
</div>
|
||||
<div>
|
||||
12、文档中不能含有危害国家安全、低俗、情色等非法内容。
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</Modal>
|
||||
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
|
@ -125,7 +125,8 @@ export default function CONTRACT() {
|
||||
<div style={{
|
||||
height: height - 60,
|
||||
background: 'white',
|
||||
overflow: 'auto', marginTop: 18, marginBottom: -10
|
||||
overflow: 'auto', marginTop: 18,
|
||||
marginBottom: -10
|
||||
}}>
|
||||
{/* 表格 */}
|
||||
<div style={{ display: contractArray.length > 0 ? 'block' : 'none', padding: 10 }}>
|
||||
|
10
src/route/TrademarkMall/TrademarkExpertEdit.tsx
Normal file
10
src/route/TrademarkMall/TrademarkExpertEdit.tsx
Normal file
@ -0,0 +1,10 @@
|
||||
import React from 'react'
|
||||
import './trademark-edit.css'
|
||||
export default function TrademarkExpertEdit() {
|
||||
const height = window.innerHeight - 180;
|
||||
return (
|
||||
<div className='trademarkExpertBox' style={{ height: `${height}px`, overflow: 'auto'}}>
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
8
src/route/TrademarkMall/trademark-edit.css
Normal file
8
src/route/TrademarkMall/trademark-edit.css
Normal file
@ -0,0 +1,8 @@
|
||||
.trademarkExpertBox {
|
||||
margin-top: 18px;
|
||||
background-color: rgb(255, 255, 255);
|
||||
padding: 0px 19px 0px 19px;
|
||||
box-sizing: border-box;
|
||||
padding: 30px 45px 0 45px;
|
||||
box-sizing: border-box;
|
||||
}
|
@ -1,8 +1,9 @@
|
||||
import './index.css';
|
||||
// import { MouseEvent, Reducer, useEffect, useReducer, useState, useContext } from "react";
|
||||
import { MouseEvent, Reducer, useEffect, useReducer, useState } from "react";
|
||||
import { MouseEvent, Reducer, useEffect, useReducer, useState, useContext } from "react";
|
||||
import { useSelector, useDispatch } from 'react-redux'
|
||||
import { useNavigate, useSearchParams, Outlet } from "react-router-dom";
|
||||
import { GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts";
|
||||
import {
|
||||
Modal,
|
||||
// Row,
|
||||
@ -21,7 +22,7 @@ import MenuWithBottomButtom from '../../components/menu/MenuWithBottomButton.tsx
|
||||
// import MenuTreeWithTopButton from "../../components/menu/MenuTreeWithTopButton.tsx";
|
||||
// import ListProj from "../../components/list/ListProj.tsx";
|
||||
// import ListProjAgent from "../../components/list/ListProjAgent.tsx";
|
||||
// import { getMenuActive } from '../../util/cache.ts'
|
||||
import { getMenuActive } from '../../util/cache.ts'
|
||||
|
||||
|
||||
import {
|
||||
@ -53,10 +54,14 @@ import {
|
||||
// downloadUrl,
|
||||
post, getCouponUrl
|
||||
} from '../../util/AjaxUtils.ts'
|
||||
// import { getLanguageList, getSoftTypeList } from '../../request/api'
|
||||
import { setMenuActive,
|
||||
import {
|
||||
// getLanguageList, getSoftTypeList
|
||||
appGoodsList, buyAppGoods, appOrderList
|
||||
} from '../../request/api'
|
||||
import {
|
||||
setMenuActive,
|
||||
// getMenuActive
|
||||
} from '../../util/cache.ts'
|
||||
} from '../../util/cache.ts'
|
||||
import gpsImg from '@theme/img/right/gps.png'
|
||||
import backImg from '@theme/img/right/back.png'
|
||||
// import { Link } from "react-router-dom";
|
||||
@ -80,10 +85,10 @@ interface DataType {
|
||||
}
|
||||
|
||||
|
||||
// import app from '../../static/left/app.png'
|
||||
// import appnew from '../../static/left/appnew.png'
|
||||
// import tra from '../../static/left/tra.png'
|
||||
// import tranew from '../../static/left/tranew.png'
|
||||
import app from '../../static/left/app.png'
|
||||
import appnew from '../../static/left/appnew.png'
|
||||
import tra from '../../static/left/tra.png'
|
||||
import tranew from '../../static/left/tranew.png'
|
||||
|
||||
import topblack from '../../static/appimgs/topblack.png'
|
||||
import topblue from '../../static/appimgs/topblue.png'
|
||||
@ -94,7 +99,7 @@ import firImg from '../../static/fir.png'
|
||||
import noFirImg from '../../static/noFir.png'
|
||||
|
||||
export default function Index() {
|
||||
|
||||
const globalDispatchContext = useContext(GlobalDispatchContext);
|
||||
// const height = window.innerHeight - 180;
|
||||
const columns: TableColumnsType<DataType> = [
|
||||
{
|
||||
@ -880,7 +885,7 @@ export default function Index() {
|
||||
const copyrightKeyWordshandleSearch = () => {
|
||||
setCopyrightKeywords(copyrightNewKeywords)
|
||||
}
|
||||
const [specialPrice,setSpecialPrice] = useState(false) //商品特价标识
|
||||
const [specialPrice, setSpecialPrice] = useState(false) //商品特价标识
|
||||
const copyrightInit = () => {
|
||||
setMinPrice(null)
|
||||
setMaxPrice(null)
|
||||
@ -906,11 +911,11 @@ export default function Index() {
|
||||
copyrightLanguage: copyrightLanguage,
|
||||
copyrightType: copyrightType,
|
||||
// 新增特价标识
|
||||
goodsFlag:specialPrice?'特价':''
|
||||
goodsFlag: specialPrice ? '特价' : ''
|
||||
}
|
||||
})
|
||||
}
|
||||
}, [copyrightKeywords, minPrice, maxPrice, sort, copyrightDate, copyrightLanguage, copyrightType,specialPrice])
|
||||
}, [copyrightKeywords, minPrice, maxPrice, sort, copyrightDate, copyrightLanguage, copyrightType, specialPrice])
|
||||
|
||||
// ----------------------------------------------------------------------------------------------
|
||||
|
||||
@ -971,13 +976,103 @@ export default function Index() {
|
||||
|
||||
// APP电子软著框是否显示----------------------------------------------------------------------------------------
|
||||
const [appSearchBox, setAppSearchBox] = useState(false)
|
||||
const [appKeyWords, setAppKeyWords] = useState('') // 电子软著搜索关键字
|
||||
const [showAppkeyWords, setShowAppkeyWords] = useState('') // 电子软著搜索关键字显示
|
||||
const [appModal, setAppModal] = useState(false) // 申请电子软著弹窗
|
||||
const [toEditsModal, setToEditsModal] = useState(false) // 电子软著编辑弹窗
|
||||
const [appGoodsArray, setAppGoodsArray] = useState<any>([]) // 电子软著可选商品列表
|
||||
const [buyLoading, setBuyLoading] = useState(false) // 购买loading
|
||||
const [appOrderId, setAppOrderId] = useState<any>() // 电子软著订单id
|
||||
const [appExamineStatus, setAppExamineStatus] = useState<string | null>(null) // 电子软著审核状态
|
||||
const [appApplyStatus, setAppApplyStatus] = useState<string | null>(null) // 电子软著申请状态
|
||||
const appInit = () => {
|
||||
setAppKeyWords('')
|
||||
setShowAppkeyWords('')
|
||||
setAppExamineStatus(null)
|
||||
setAppApplyStatus(null)
|
||||
}
|
||||
const getAppOrderList = async (page: number) => {
|
||||
try {
|
||||
|
||||
const res: any = await appOrderList({ page, keywords: '', rows: 10 })
|
||||
|
||||
dispath({
|
||||
type: 'upAppGoodsListData',
|
||||
val: 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)
|
||||
}
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
|
||||
}
|
||||
//电子软著点击搜索
|
||||
const handleAppSearch = (value: string) => {
|
||||
setAppKeyWords(value)
|
||||
// nav('/app-electron', {
|
||||
// state: {
|
||||
// appKeyWords: value,
|
||||
// }
|
||||
// })
|
||||
}
|
||||
// 电子软著删除关键字
|
||||
const handleAppChange = (e: any) => {
|
||||
setShowAppkeyWords(e.target.value)
|
||||
if (e.target.value == '') {
|
||||
setAppKeyWords('')
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
useEffect(() => {
|
||||
nav('/app-electron', {
|
||||
state: {
|
||||
appKeyWords: appKeyWords,
|
||||
checkStatus: appExamineStatus,
|
||||
appOrderStatus: appApplyStatus
|
||||
}
|
||||
})
|
||||
}, [appKeyWords,appExamineStatus,appApplyStatus])
|
||||
// 获取电子软著可选商品列表
|
||||
const getAppGoodsList = async () => {
|
||||
try {
|
||||
const res = await appGoodsList()
|
||||
// console.log('电子软著可选商品列表', res);
|
||||
setAppGoodsArray(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 [trademarkBox, setTrademarkBox] = useState(false) // 申请商标弹窗
|
||||
const [trademarkModal, setTrademarkModal] = useState(false) // 申请商标弹窗
|
||||
// const [toRradeMarkModal, setToRradeMarkModal] = useState(false) // 申请商标编辑弹窗
|
||||
// ----------------------------------------------------------------------------------------------------
|
||||
|
||||
const [correctionSearchBox, setCorrectionSearchBox] = useState(false)
|
||||
@ -1155,16 +1250,17 @@ export default function Index() {
|
||||
|
||||
|
||||
// app电子软著数组
|
||||
const appGoodsArray = [
|
||||
{ id: '1', title: '10个工作日下证', price: '500', back: 'black' },
|
||||
{ id: '2', title: '3个工作日下证', price: '900', back: 'blue' },
|
||||
{ id: '3', title: '1个工作日下证', price: '2599', back: 'black' },
|
||||
{ id: '4', title: '当天下证', price: '3699', back: 'black' },
|
||||
]
|
||||
// const appGoodsArray = [
|
||||
// { id: '1', title: '10个工作日下证', price: '500', back: 'black' },
|
||||
// { id: '2', title: '3个工作日下证', price: '900', back: 'blue' },
|
||||
// { id: '3', title: '1个工作日下证', price: '2599', back: 'black' },
|
||||
// { id: '4', title: '当天下证', price: '3699', back: 'black' },
|
||||
// ]
|
||||
|
||||
// 商标数组
|
||||
const trademarkArray = [
|
||||
{
|
||||
id: '1', title: '智能申请注册', nowprice: '500',
|
||||
id: '1', title: '智能申请注册', nowprice: '270',
|
||||
old: true, //是否显示原价
|
||||
oldprice: '318', //原价
|
||||
cheap: true,//特价
|
||||
@ -1611,7 +1707,7 @@ export default function Index() {
|
||||
|
||||
// getLanguageListDate()
|
||||
// getSoftTypeListDate()
|
||||
|
||||
getAppGoodsList()
|
||||
}, []);
|
||||
useEffect(() => {
|
||||
// loactionStorage里的activeMenu
|
||||
@ -1875,7 +1971,7 @@ export default function Index() {
|
||||
list={agentMenu.list}
|
||||
handleListItem={agentMenu.handleListItem}
|
||||
/> */}
|
||||
{/* {THEME == 'mzw' ? (
|
||||
{THEME == 'mzw' ? (
|
||||
<>
|
||||
<div style={{
|
||||
background: getMenuActive() == 'APP' ? 'linear-gradient(90deg, #FF9F08 0%, #FF7331 100%)' : ' var(--color-menuback)',
|
||||
@ -1948,7 +2044,7 @@ export default function Index() {
|
||||
</>
|
||||
) : (
|
||||
<></>
|
||||
)} */}
|
||||
)}
|
||||
{THEME == 'mzw' ? (
|
||||
<MenuWithBottomButtom
|
||||
button={sellMenu.button}
|
||||
@ -3094,18 +3190,18 @@ export default function Index() {
|
||||
value={copyrightType}
|
||||
/>
|
||||
<Button
|
||||
icon={<img src={specialPrice?noFirImg:firImg} style={{ width: 15, height: 18 }} />}
|
||||
icon={<img src={specialPrice ? noFirImg : firImg} style={{ width: 15, height: 18 }} />}
|
||||
style={{
|
||||
background: specialPrice?'#FF9F08':'#FFF6EF',
|
||||
color: specialPrice?'white':'#FF9F00 ',
|
||||
background: specialPrice ? '#FF9F08' : '#FFF6EF',
|
||||
color: specialPrice ? 'white' : '#FF9F00 ',
|
||||
marginLeft: 5, height: 31,
|
||||
border:'1px solid #FF9F00 ',
|
||||
border: '1px solid #FF9F00 ',
|
||||
}}
|
||||
onClick={()=>{
|
||||
onClick={() => {
|
||||
// 特价标识
|
||||
setSpecialPrice(!specialPrice)
|
||||
}}
|
||||
>
|
||||
>
|
||||
今日特价
|
||||
</Button>
|
||||
<Button
|
||||
@ -3217,6 +3313,70 @@ export default function Index() {
|
||||
setAppModal(true)
|
||||
}}
|
||||
>申请电子软著</Button>
|
||||
<Search
|
||||
allowClear
|
||||
placeholder='请输入关键字' value={showAppkeyWords}
|
||||
onSearch={handleAppSearch}
|
||||
onChange={handleAppChange}
|
||||
style={{
|
||||
// maxWidth: '200px',
|
||||
width: '170px',
|
||||
height: '31px',
|
||||
marginLeft: '5px'
|
||||
}}
|
||||
>
|
||||
|
||||
</Search>
|
||||
<Select
|
||||
allowClear
|
||||
placeholder='选择审核状态'
|
||||
style={{
|
||||
width: '130px',
|
||||
height: '31px', marginLeft: 5,
|
||||
}}
|
||||
onChange={(value) => {
|
||||
setAppExamineStatus(value)
|
||||
}}
|
||||
value={appExamineStatus}
|
||||
options={[
|
||||
{ value: '', label: '未提交' },
|
||||
{ value: '0', label: '未通过' },
|
||||
{ value: '1', label: '待审核' },
|
||||
{ value: '2', label: '通过' },
|
||||
]}
|
||||
>
|
||||
|
||||
</Select>
|
||||
<Select
|
||||
allowClear
|
||||
placeholder='选择申请状态'
|
||||
style={{
|
||||
width: '130px',
|
||||
height: '31px', marginLeft: 5,
|
||||
}}
|
||||
onChange={(value) => {
|
||||
setAppApplyStatus(value)
|
||||
}}
|
||||
value={appApplyStatus}
|
||||
options={[
|
||||
// { value: '0', label: '已取消' },
|
||||
// { value: '1', label: '未付款' },
|
||||
{ value: '2', label: '资料填写中' },
|
||||
{ value: '3', label: '资料审核中' },
|
||||
{ value: '4', label: '下线申请中' },
|
||||
{ value: '5', label: '已下证' },
|
||||
]}
|
||||
>
|
||||
|
||||
</Select>
|
||||
<Button style={{
|
||||
marginLeft: 5, height: 31
|
||||
}}
|
||||
icon={<ClearOutlined />}
|
||||
onClick={() => {
|
||||
appInit()
|
||||
|
||||
}}>清除</Button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@ -3667,73 +3827,105 @@ export default function Index() {
|
||||
centered
|
||||
|
||||
>
|
||||
<div style={{
|
||||
paddingBottom: 30,
|
||||
paddingTop: 30
|
||||
}}>
|
||||
<Spin tip="正在购买..." size="small" spinning={buyLoading}>
|
||||
<div style={{
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between',
|
||||
alignItems: 'center',
|
||||
paddingBottom: 30,
|
||||
paddingTop: 30
|
||||
}}>
|
||||
{appGoodsArray.map((item: any) => {
|
||||
return (
|
||||
<div className='appGoodsBox'
|
||||
key={item.id}
|
||||
style={{
|
||||
background: item.back == 'black' ? '#F9F9F9 ' : '#DDECFF',
|
||||
border: item.id == appGoodsId ? '1px solid #f19e31' : '',
|
||||
boxShadow: item.id == appGoodsId ? '5px 5px 10px rgb(114, 114, 114)' : '',
|
||||
marginTop: item.id == appGoodsId ? -20 : 0,
|
||||
}}
|
||||
onClick={() => {
|
||||
setAppGoodsId(item.id)
|
||||
}}
|
||||
>
|
||||
<div className='appGoodsTop'>
|
||||
<div className='appgoodsTitle'
|
||||
style={{
|
||||
color: item.back == 'black' ? '#E2B682' : '#FFFFFF',
|
||||
backgroundImage: item.back == 'black' ? `url(${topblack})` : `url(${topblue})`,
|
||||
}}
|
||||
>
|
||||
{item.title}
|
||||
</div>
|
||||
<div style={{
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between',
|
||||
alignItems: 'center',
|
||||
}}>
|
||||
{appGoodsArray.map((item: any, index: number) => {
|
||||
return (
|
||||
<div className='appGoodsBox'
|
||||
key={item.dataId}
|
||||
style={{
|
||||
background: item.back == 'black' ? '#F9F9F9 ' : '#DDECFF',
|
||||
border: item.dataId == appGoodsId ? '1px solid #f19e31' : '',
|
||||
boxShadow: item.dataId == appGoodsId ? '5px 5px 10px rgb(114, 114, 114)' : '',
|
||||
marginTop: item.dataId == appGoodsId ? -20 : 0,
|
||||
}}
|
||||
onClick={() => {
|
||||
setAppGoodsId(item.dataId)
|
||||
// console.log('item.dataId: ', item.dataId);
|
||||
|
||||
</div>
|
||||
<div className='appGoodsBot'>
|
||||
<div className='appgoodsPrice' style={{
|
||||
color: item.back == 'black' ? '#835114' : '#233E9E',
|
||||
}}>
|
||||
<span>¥</span>
|
||||
<span style={{
|
||||
fontSize: 42,
|
||||
}}>{item.price}</span>
|
||||
<span>元/件</span>
|
||||
}}
|
||||
>
|
||||
<div className='appGoodsTop'>
|
||||
<div className='appgoodsTitle'
|
||||
style={{
|
||||
color: index !== 1 ? '#E2B682' : '#FFFFFF',
|
||||
backgroundImage: index !== 1 ? `url(${topblack})` : `url(${topblue})`,
|
||||
}}
|
||||
>
|
||||
{item.dataSummary}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div className='appGoodsBot'>
|
||||
<div className='appgoodsPrice' style={{
|
||||
color: index !== 1 ? '#835114' : '#233E9E',
|
||||
}}>
|
||||
<span>¥</span>
|
||||
<span style={{
|
||||
fontSize: 42,
|
||||
}}>{item.dataName / 100}</span>
|
||||
<span>元/件</span>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
)
|
||||
|
||||
})}
|
||||
})}
|
||||
|
||||
</div>
|
||||
<div className='appGoodsBtnBox'>
|
||||
<div className='appGoodsBtn' onClick={async () => {
|
||||
if (appGoodsId) {
|
||||
// alert('开发中')
|
||||
// 创建按订单 如果成功 询问是否继续编辑
|
||||
// setAppGoodsId('')
|
||||
try {
|
||||
setBuyLoading(true)
|
||||
const res = await buyAppGoods(appGoodsId)
|
||||
setAppOrderId(res.data)
|
||||
setBuyLoading(false)
|
||||
setAppModal(false)
|
||||
getAppOrderList(1)
|
||||
setToEditsModal(true)
|
||||
appInit()
|
||||
reloadUser(messageApi, globalDispatchContext).then(() => {
|
||||
messageApi.success('扣款成功');
|
||||
});
|
||||
// 更新redux中的appGoodsListAray
|
||||
|
||||
} 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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return
|
||||
|
||||
} else {
|
||||
messageApi.error('请选择商品')
|
||||
}
|
||||
}}>下单购买</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className='appGoodsBtnBox'>
|
||||
<div className='appGoodsBtn' onClick={() => {
|
||||
if (appGoodsId) {
|
||||
// alert('开发中')
|
||||
// 创建按订单 如果成功 询问是否继续编辑
|
||||
setAppGoodsId('')
|
||||
setAppModal(false)
|
||||
setToEditsModal(true)
|
||||
} else {
|
||||
messageApi.error('请选择商品')
|
||||
}
|
||||
}}>下单购买</div>
|
||||
</div>
|
||||
</div>
|
||||
</Spin>
|
||||
</Modal>
|
||||
<Modal
|
||||
title="提示"
|
||||
@ -3746,7 +3938,7 @@ export default function Index() {
|
||||
// okButtonProps={{ style: { background: 'red', color: 'white' } }}
|
||||
onOk={() => {
|
||||
setToEditsModal(false)
|
||||
nav('/app-edit/dajsdkjakdl')
|
||||
nav(`/app-edit/${appOrderId}`)
|
||||
}}
|
||||
// 设置确定和取消得文字
|
||||
okText="编辑"
|
||||
@ -3758,6 +3950,7 @@ export default function Index() {
|
||||
>
|
||||
<div>已生成订单,是否编辑</div>
|
||||
</Modal>
|
||||
|
||||
<Modal
|
||||
title="申请商标"
|
||||
destroyOnClose={true}
|
||||
@ -3831,6 +4024,10 @@ export default function Index() {
|
||||
<div className='trademarkNowPrice'>
|
||||
<span>¥</span>
|
||||
<span style={{ fontSize: 42 }}>{item.nowprice}</span>
|
||||
<span style={{
|
||||
// 数组第一个才显示
|
||||
display: item.old ? 'unset' : 'none'
|
||||
}}>起</span>
|
||||
</div>
|
||||
<div className='trademarkOldPrice' style={{
|
||||
display: item.old ? 'unset' : 'none'
|
||||
@ -3869,9 +4066,13 @@ export default function Index() {
|
||||
}}
|
||||
onClick={() => {
|
||||
console.log(item.nowprice);
|
||||
setTrademarkModal(false)
|
||||
nav('/trademark-expert-edit')
|
||||
|
||||
console.log('简单');
|
||||
|
||||
}}
|
||||
>立即购买</div>
|
||||
>开始编辑</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style={{
|
||||
@ -3894,9 +4095,9 @@ export default function Index() {
|
||||
}}
|
||||
onClick={() => {
|
||||
console.log(item.nowprice);
|
||||
|
||||
console.log('复杂');
|
||||
}}
|
||||
>立即购买</div>
|
||||
>开始编辑</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -4,6 +4,7 @@ import ProductRelease from '../route/ProductRelease/ProductRelease.tsx'
|
||||
import AppElectron from '../route/AppElectron/AppElectron.tsx'
|
||||
import AppEdit from '../route/AppElectron/AppEdit.tsx'
|
||||
import TrademarkMall from '../route/TrademarkMall/TrademarkMall.tsx'
|
||||
import TrademarkExpertEdit from '../route/TrademarkMall/TrademarkExpertEdit.tsx'
|
||||
import TransactionOrder from '../route/TransactionOrder/TransactionOrder.tsx'
|
||||
import CopyrightGgoods from '../route/CopyrightGgoods/CopyrightGgoods.tsx'
|
||||
import TradingGoods from '../route/TradingGoods/TradingGoods.tsx'
|
||||
@ -226,13 +227,17 @@ export const router = createHashRouter(
|
||||
element: <AppElectron/>
|
||||
},
|
||||
{
|
||||
path: '/app-edit/:appId',
|
||||
path: '/app-edit/:appOrderId',
|
||||
element: <AppEdit/>
|
||||
},
|
||||
{
|
||||
path: '/trademark-mall',
|
||||
element: <TrademarkMall/>
|
||||
},
|
||||
{
|
||||
path:'/trademark-expert-edit',
|
||||
element:<TrademarkExpertEdit/>
|
||||
},
|
||||
{
|
||||
path: '/transaction-order',
|
||||
element: <TransactionOrder />
|
||||
|
@ -9,22 +9,23 @@ const baseState = {
|
||||
// val: ''
|
||||
// },
|
||||
belongArray: [],
|
||||
refunArray:[],
|
||||
correctionArray:[],
|
||||
contractArray:[],
|
||||
contractTotal:0,
|
||||
refunTotal:0,
|
||||
correctionTotal:0,
|
||||
couponModal:false,
|
||||
projName:'',
|
||||
projStatus:'',
|
||||
newRefun:false,
|
||||
newCorrection:false,
|
||||
packNum:{
|
||||
ALL:0,
|
||||
MATERIAL:0,
|
||||
refunArray: [],
|
||||
correctionArray: [],
|
||||
contractArray: [],
|
||||
contractTotal: 0,
|
||||
refunTotal: 0,
|
||||
correctionTotal: 0,
|
||||
couponModal: false,
|
||||
projName: '',
|
||||
projStatus: '',
|
||||
newRefun: false,
|
||||
newCorrection: false,
|
||||
packNum: {
|
||||
ALL: 0,
|
||||
MATERIAL: 0,
|
||||
},
|
||||
phoneModal:false,
|
||||
phoneModal: false,
|
||||
appGoodsListData: {},
|
||||
}
|
||||
|
||||
// 创建仓库
|
||||
@ -78,9 +79,12 @@ const reducer = (state = baseState, action: any) => {
|
||||
if (action.type == 'upPackNum') {
|
||||
nstate.packNum = action.val
|
||||
}
|
||||
if(action.type == 'changePhoneModal'){
|
||||
if (action.type == 'changePhoneModal') {
|
||||
nstate.phoneModal = action.val
|
||||
}
|
||||
if (action.type == 'upAppGoodsListData') {
|
||||
nstate.appGoodsListData = action.val
|
||||
}
|
||||
return nstate
|
||||
}
|
||||
const store = createStore(reducer)
|
||||
|
Loading…
Reference in New Issue
Block a user