app电子软著
This commit is contained in:
parent
2a6d12ed78
commit
06e26bc366
@ -134,7 +134,8 @@ export const runSystemList = () => aiShopRequest.get(`/aishop/api/data/listbypar
|
||||
export const bigClassList = () => aiShopRequest.get(`/aishop/api/data/listbyparentid/8abb5b58-83d2-465c-b164-a189efee28c1`)
|
||||
// 获取小类
|
||||
export const twoClass = (id:string) => aiShopRequest.get(`/aishop/api/data/listbyparentid/${id}`)
|
||||
|
||||
// 通过类得id获取内容
|
||||
export const getContent = (id:string) => aiShopRequest.get(`/aishop/api/data/get/${id}`)
|
||||
// 下单购买APP电子软著
|
||||
export const buyAppGoods = (orderMoneyId:string) => aiShopRequest.post(`/aishop/api/apporder/pay/${orderMoneyId}`)
|
||||
// 获取我的app电子软著订单列表
|
||||
@ -149,7 +150,8 @@ export const agreementWord = (appOrderId:string,appName:string,versionName:strin
|
||||
export const sourceCodeWord = (appOrderId:string,) => aiShopRequest.get(`aishop/api/apporder/create-file/SHOP02/${appOrderId}?name=源码文档示例`)
|
||||
// 生成软件文档word文件
|
||||
export const softwareDocumentWord = (appOrderId:string,) => aiShopRequest.get(`aishop/api/apporder/create-file/SHOP03/${appOrderId}?name=软件文档示例`)
|
||||
|
||||
// 补充资料
|
||||
export const supplementAppData = (params:any) => aiShopRequest.post(`/aishop/api/correction/save-app`, params)
|
||||
// 获取文件详细信息
|
||||
export const fileDetail = (fileId:string) => aiShopRequest.get(`aishop/api/file/list?ids=${fileId}`)
|
||||
// 第一步 企业认证
|
||||
@ -158,5 +160,7 @@ export const companyAuth = (appOrderId:any,params:any) => aiShopRequest.post(`ai
|
||||
export const softwareInfo = (appOrderId:any,params:any) => aiShopRequest.post(`aishop/api/apporder/update/2/${appOrderId}`,params)
|
||||
// 第三步 上传鉴别材料
|
||||
export const uploadMaterial = (appOrderId:any,params:any) => aiShopRequest.post(`/aishop/api/apporder/update/3/${appOrderId}`,params)
|
||||
// 第四步 提交审核
|
||||
export const submitapp = (appOrderId:any) => aiShopRequest.post(`/aishop/api/apporder/update/sub-check/${appOrderId}`)
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
@ -35,12 +35,12 @@ export default function AppEdit() {
|
||||
const getRunSystemList = async () => {
|
||||
try {
|
||||
const res: any = await runSystemList();
|
||||
console.log('运行系统选项', res.map((item: any) => {
|
||||
return {
|
||||
label: item.dataName,
|
||||
value: item.dataName,
|
||||
}
|
||||
}));
|
||||
// console.log('运行系统选项', res.map((item: any) => {
|
||||
// return {
|
||||
// label: item.dataName,
|
||||
// value: item.dataName,
|
||||
// }
|
||||
// }));
|
||||
setSystemList(res.map((item: any) => {
|
||||
return {
|
||||
label: item.dataName,
|
||||
@ -123,6 +123,7 @@ export default function AppEdit() {
|
||||
companyPhoto: '', // 企业照片
|
||||
companyAuth: '',//授权书
|
||||
});
|
||||
const [checkStatus, setCheckStatus] = useState<any>('') //审核状态
|
||||
// 软件基本信息
|
||||
const [appInfo, setAppInfo] = useState<any>({
|
||||
appName: '', // 项目名称
|
||||
@ -131,7 +132,9 @@ export default function AppEdit() {
|
||||
packageName: '', // 包名APPID
|
||||
systemName: '', // 运行系统
|
||||
bigClassify: '', // 软件分类(大类)
|
||||
// bigClassifyName: '',
|
||||
subClassify: '', // 软件分类(小类)
|
||||
// subClassifyName: '',
|
||||
developWay: '', // 开发方式
|
||||
completeTime: '', // 开发完成时期
|
||||
projOwnerName: '',//著作权人姓名
|
||||
@ -139,11 +142,13 @@ export default function AppEdit() {
|
||||
projOwnerId: '',//著作权人信息ID
|
||||
getFile: '',//获取文件
|
||||
})
|
||||
|
||||
// 材料信息
|
||||
const [filesInfo, setFilesInfo] = useState<any>({
|
||||
sourceCodeDocFile: '',//源码
|
||||
softwareDocFile: '',//软件
|
||||
})
|
||||
const [checkRemark, setCheckRemark] = useState('') //未通过原因
|
||||
// 文件想想请
|
||||
// const [fileList, setFileList] = useState<any[]>([]);
|
||||
// 获取详情
|
||||
@ -152,7 +157,7 @@ export default function AppEdit() {
|
||||
setLoading(true)
|
||||
|
||||
const res: any = await appOrderDetail(appOrderId);
|
||||
console.log('详情', res);
|
||||
// console.log('详情', res);
|
||||
setCompanyInfo({
|
||||
companyName: res.companyName, // 企业名称
|
||||
companyNumber: res.companyNumber, // 企业统一社会信用代码
|
||||
@ -173,12 +178,16 @@ export default function AppEdit() {
|
||||
projOwnerIdentity: res.projOwnerIdentity,//著作权人证件号
|
||||
projOwnerId: res.projOwnerId,//著作权人信息ID
|
||||
getFile: res.getFile,//获取文件
|
||||
// bigClassifyName: res.bigClassifyName,
|
||||
// subClassifyName: res.subClassifyName,
|
||||
})
|
||||
setFilesInfo({
|
||||
sourceCodeDocFile: res.sourceCodeDocFile,//源码
|
||||
softwareDocFile: res.softwareDocFile,//软件
|
||||
})
|
||||
setEditProcess(Number(res.appOrderProgress) + 1)
|
||||
setCheckStatus(res.checkStatus)
|
||||
setCheckRemark(res.checkRemark)
|
||||
// const fileres: any = await fileDetail(res.getFile)
|
||||
// console.log('文件详情', fileres);
|
||||
|
||||
@ -393,6 +402,10 @@ export default function AppEdit() {
|
||||
}
|
||||
}></EditAppFunction> */}
|
||||
<AppInfo
|
||||
checkStatus={checkStatus}
|
||||
setCheckStatus={(value:string)=>{
|
||||
setCheckStatus(value)
|
||||
}}
|
||||
appOrderId={appOrderId}
|
||||
companyInfo={companyInfo}
|
||||
appInfo={appInfo}
|
||||
@ -401,7 +414,9 @@ export default function AppEdit() {
|
||||
(num: number) => {
|
||||
setEditProcess(num)
|
||||
}
|
||||
}></AppInfo>
|
||||
}
|
||||
checkRemark={checkRemark}
|
||||
></AppInfo>
|
||||
</div>
|
||||
{/* <div style={{
|
||||
display: editProcess == 5 ? 'block' : 'none'
|
||||
|
@ -7,9 +7,12 @@ import {
|
||||
// Spin,
|
||||
message,
|
||||
Spin,
|
||||
Table
|
||||
Table,
|
||||
Modal
|
||||
} from 'antd';
|
||||
import File from './components/File/File'
|
||||
import { appOrderList } from '../../request/api'
|
||||
import { showImage } from '../../request/request'
|
||||
import './app-election.css'
|
||||
import nothingImg from '../../static/appimgs/nothing.png'
|
||||
import { useLocation } from 'react-router-dom';
|
||||
@ -23,12 +26,17 @@ interface DataType {
|
||||
gmtCreate: string;
|
||||
bigClassifyName: string; //软件分类(大类)
|
||||
subClassifyName: string; //软件分类(子类)
|
||||
checkRemark: string; //未通过原因
|
||||
}
|
||||
export default function AppElectron() {
|
||||
const [fileModal, setFileModal] = useState(false) //补充资料弹窗
|
||||
const [appOrderId, setAppOrderId] = useState('') //订单id
|
||||
const nav = useNavigate();
|
||||
const dispath = useDispatch()
|
||||
const redxuState: any = useSelector(state => state)
|
||||
const data = redxuState.appGoodsListData;
|
||||
const [checkRemarkModal, setCheckRemarkModal] = useState(false) //未通过原因弹窗
|
||||
const [checkRemark, setCheckRemark] = useState('') //未通过原因
|
||||
const columns: TableProps<DataType>['columns'] = [
|
||||
{
|
||||
title: '序号',
|
||||
@ -68,7 +76,7 @@ export default function AppElectron() {
|
||||
},
|
||||
render: (text, record) => (
|
||||
<span>
|
||||
{text ? ` ${record.bigClassifyName} / ${record.subClassifyName}` : '未完善'}
|
||||
{text ? ` ${record.bigClassifyName} - ${record.subClassifyName}` : '未完善'}
|
||||
</span>
|
||||
)
|
||||
},
|
||||
@ -97,9 +105,35 @@ export default function AppElectron() {
|
||||
align: 'center',
|
||||
key: 'appOrderId',
|
||||
width: 100,
|
||||
render: (text) => (
|
||||
render: (text, record) => (
|
||||
<span>
|
||||
{text == '1' ? '待审核' : text == '2' ? '通过' : text == '0' ? '未通过' : '未提交'}
|
||||
{text == '1' ?
|
||||
<span style={{
|
||||
color: 'skyblue',
|
||||
}}>待审核</span>
|
||||
: text == '2' ?
|
||||
<span
|
||||
style={{
|
||||
color: 'green',
|
||||
}}
|
||||
>通过</span>
|
||||
: text == '0' ?
|
||||
<span
|
||||
style={{
|
||||
color: 'red',
|
||||
cursor: 'pointer'
|
||||
}}
|
||||
title='点击查看原因'
|
||||
onClick={() => {
|
||||
setCheckRemark(record.checkRemark)
|
||||
setCheckRemarkModal(true)
|
||||
}}
|
||||
>未通过</span>
|
||||
:
|
||||
<span style={{
|
||||
color: 'rgb(122 126 130)',
|
||||
}}> 未提交</span>
|
||||
}
|
||||
</span>
|
||||
)
|
||||
},
|
||||
@ -108,10 +142,10 @@ export default function AppElectron() {
|
||||
dataIndex: 'appOrderStatus',
|
||||
align: 'center',
|
||||
key: 'appOrderId',
|
||||
width: 100,
|
||||
width: 150,
|
||||
render: (text) => (
|
||||
<span>
|
||||
{text == '1' ? '未付款' : text == '2' ? '资料填写中' : text == '3' ? '资料审核中' : text == '4' ? '下线申请中' : text == '5' ? '已下证' : '未知'}
|
||||
{text == '1' ? '未付款' : text == '2' ? '资料填写中' : text == '3' ? '资料审核中' : text == '4' ? '线下申请中' : text == '5' ? '已下证' : '未知'}
|
||||
</span>
|
||||
)
|
||||
},
|
||||
@ -121,21 +155,79 @@ export default function AppElectron() {
|
||||
// dataIndex: 'contractManagementId',
|
||||
align: 'center',
|
||||
key: 'appOrderId',
|
||||
width: 200,
|
||||
width: 150,
|
||||
// bordeLeft: true,
|
||||
fixed: 'right',
|
||||
render: (record) => (
|
||||
<div style={{
|
||||
cursor: 'pointer',
|
||||
color: '#007FFF',
|
||||
display: 'flex', justifyContent: 'center', alignItems: 'center',
|
||||
}}>
|
||||
|
||||
<div style={{
|
||||
cursor: 'pointer',
|
||||
color: '#007FFF',
|
||||
|
||||
|
||||
}} onClick={() => {
|
||||
nav(`/app-edit/${record.appOrderId}`)
|
||||
// console.log(record);
|
||||
}} onClick={() => {
|
||||
nav(`/app-edit/${record.appOrderId}`)
|
||||
// console.log(record.checkStatus);
|
||||
|
||||
|
||||
}}>编辑</div>
|
||||
}}>{record.checkStatus == '' ? '编辑' : record.checkStatus == '0' ? '修改' : '查看'}</div>
|
||||
<div style={{
|
||||
marginLeft: 10,
|
||||
cursor: 'pointer',
|
||||
// background: 'red',
|
||||
color: '#007FFF',
|
||||
position: 'relative',
|
||||
display: record.waitCorrectionCount > 0 && record.appOrderStatus != '5' ? 'unset' : 'none',
|
||||
|
||||
}}
|
||||
onClick={() => {
|
||||
setFileModal(true)
|
||||
// console.log(record);
|
||||
setAppOrderId(record.appOrderId)
|
||||
|
||||
}}
|
||||
>
|
||||
资料补充
|
||||
<div style={{
|
||||
|
||||
position: 'absolute',
|
||||
top: '-10px',
|
||||
right: '-10px',
|
||||
// fontSize:'16px',
|
||||
background: 'red',
|
||||
color: '#fff',
|
||||
fontWeight: '700',
|
||||
width: '20px',
|
||||
height: '20px',
|
||||
borderRadius: '50%',
|
||||
display: 'flex',
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
}}>
|
||||
{record.waitCorrectionCount}
|
||||
</div>
|
||||
</div>
|
||||
<div style={{
|
||||
marginLeft: 10,
|
||||
cursor: 'pointer',
|
||||
color: '#007FFF',
|
||||
|
||||
display: record.appOrderStatus == '5' ? 'unset' : 'none',
|
||||
|
||||
}}
|
||||
onClick={() => {
|
||||
console.log(record.appOrderResultFile);
|
||||
|
||||
window.open(showImage(record.appOrderResultFile, false));
|
||||
}}
|
||||
>
|
||||
查看证书
|
||||
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
},
|
||||
@ -164,7 +256,7 @@ export default function AppElectron() {
|
||||
val: res
|
||||
})
|
||||
} catch (error: any) {
|
||||
|
||||
setLoading(false)
|
||||
if (error.response) {
|
||||
const data = error.response.data;
|
||||
messageApi.open({
|
||||
@ -242,7 +334,56 @@ export default function AppElectron() {
|
||||
|
||||
)}
|
||||
</Spin>
|
||||
<Modal title="未通过原因"
|
||||
centered
|
||||
footer={null}
|
||||
destroyOnClose
|
||||
// okText="确认提交"
|
||||
// cancelText="取消"
|
||||
open={checkRemarkModal}
|
||||
// width={1200}
|
||||
onCancel={() => {
|
||||
setCheckRemarkModal(false)
|
||||
|
||||
}}
|
||||
// onOk={
|
||||
// // setModal(false)
|
||||
// clickOk
|
||||
// }
|
||||
>
|
||||
|
||||
<div style={{
|
||||
fontSize: '16px',
|
||||
// color: 'red',
|
||||
// fontWeight: 'bold'
|
||||
}}>
|
||||
{checkRemark}
|
||||
</div>
|
||||
|
||||
</Modal>
|
||||
<Modal
|
||||
title="补充资料"
|
||||
okText="确认"
|
||||
cancelText="取消"
|
||||
destroyOnClose={true}
|
||||
footer={null}
|
||||
open={fileModal}
|
||||
// onOk={() => {
|
||||
// setOrderDetailModal(false)
|
||||
// }}
|
||||
onCancel={() => {
|
||||
setFileModal(false)
|
||||
}}
|
||||
width={1150}
|
||||
centered
|
||||
>
|
||||
<File
|
||||
upData={() => {
|
||||
getAppOrderList(page)
|
||||
}}
|
||||
user={'buy'}
|
||||
orderId={appOrderId}></File>
|
||||
</Modal>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -1,207 +1,455 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import './app-info.css'
|
||||
import { Button, message } from "antd"
|
||||
import { Button, message, Spin, Modal } from "antd"
|
||||
import { fileDetail, submitapp, getContent } from '../../../../request/api'
|
||||
import { showImage } from '../../../../request/request'
|
||||
export default function AppInfo(props: any) {
|
||||
const [messageApi, contextHolder] = message.useMessage();
|
||||
const height = window.innerHeight - 460;
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [modal, setModal] = useState(false);
|
||||
const handleSubmit = () => {
|
||||
message.success('提交成功');
|
||||
|
||||
setModal(true)
|
||||
// message.success('提交成功');
|
||||
// props.setCheckStatus('1')
|
||||
};
|
||||
const clickOk = async () => {
|
||||
try {
|
||||
setLoading(true)
|
||||
await submitapp(props.appOrderId)
|
||||
setModal(false)
|
||||
setLoading(false)
|
||||
message.success('提交成功');
|
||||
props.setCheckStatus('1')
|
||||
} catch (error: any) {
|
||||
setLoading(false)
|
||||
|
||||
if (error.response) {
|
||||
const data = error.response.data;
|
||||
messageApi.open({
|
||||
type: 'error',
|
||||
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
||||
});
|
||||
} else {
|
||||
console.error(error)
|
||||
}
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}
|
||||
const companyInfo = props.companyInfo;
|
||||
const appInfo = props.appInfo;
|
||||
const filesInfo = props.filesInfo;
|
||||
const [photofileDetail, setPhotofileDetail] = useState<any>({
|
||||
|
||||
fileId: '', //文件id
|
||||
fileName: '', //文件名称
|
||||
url: ''
|
||||
});
|
||||
const [authfileDetail, setAuthfileDetail] = useState<any>({
|
||||
fileId: '', //文件id
|
||||
fileName: '', //文件名称
|
||||
url: ''
|
||||
})
|
||||
const [file, setFile] = useState<any>({
|
||||
fileId: '', //文件id
|
||||
fileName: '', //文件名称
|
||||
url: ''
|
||||
})
|
||||
const [codefileDetail, setCodefileDetail] = useState<any>({
|
||||
fileId: '', //文件id
|
||||
fileName: '', //文件名称
|
||||
url: ''
|
||||
})
|
||||
const [softfileDetail, setSoftfileDetail] = useState<any>({
|
||||
fileId: '', //文件id
|
||||
fileName: '', //文件名称
|
||||
url: ''
|
||||
})
|
||||
const getPhotoFileDetail = async (id: string) => {
|
||||
try {
|
||||
const res: any = await fileDetail(id)
|
||||
setPhotofileDetail({
|
||||
fileId: res[0].fileId, //文件id
|
||||
fileName: res[0].fileName, //文件名称
|
||||
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 getAuthFileDetail = async (id: string) => {
|
||||
try {
|
||||
const res: any = await fileDetail(id)
|
||||
setAuthfileDetail({
|
||||
fileId: res[0].fileId, //文件id
|
||||
fileName: res[0].fileName, //文件名称
|
||||
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 getFileDetail = async (id: string) => {
|
||||
try {
|
||||
const res: any = await fileDetail(id)
|
||||
setFile({
|
||||
fileId: res[0].fileId, //文件id
|
||||
fileName: res[0].fileName, //文件名称
|
||||
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 getCodeFileDetail = async (id: string) => {
|
||||
try {
|
||||
const res: any = await fileDetail(id)
|
||||
setCodefileDetail({
|
||||
fileId: res[0].fileId, //文件id
|
||||
fileName: res[0].fileName, //文件名称
|
||||
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 getSoftFileDetail = async (id: string) => {
|
||||
try {
|
||||
const res: any = await fileDetail(id)
|
||||
setSoftfileDetail({
|
||||
fileId: res[0].fileId, //文件id
|
||||
fileName: res[0].fileName, //文件名称
|
||||
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 [bigClassName, setBigClassName] = useState('')
|
||||
const [smallClassName, setSmallClassName] = useState('')
|
||||
const getBigClassName = async (id: string) => {
|
||||
try {
|
||||
const res: any = await getContent(id)
|
||||
// console.log(res);
|
||||
|
||||
setBigClassName(res.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 getSmallClassName = async (id: string) => {
|
||||
try {
|
||||
const res: any = await getContent(id)
|
||||
// console.log(res);
|
||||
setSmallClassName(res.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)
|
||||
}
|
||||
}
|
||||
}
|
||||
useEffect(() => {
|
||||
if (companyInfo.companyPhoto) {
|
||||
getPhotoFileDetail(companyInfo.companyPhoto)
|
||||
|
||||
}
|
||||
if (companyInfo.companyAuth) {
|
||||
getAuthFileDetail(companyInfo.companyAuth)
|
||||
}
|
||||
if (appInfo.getFile) {
|
||||
getFileDetail(appInfo.getFile)
|
||||
}
|
||||
if (filesInfo.sourceCodeDocFile) {
|
||||
getCodeFileDetail(filesInfo.sourceCodeDocFile)
|
||||
}
|
||||
if (filesInfo.softwareDocFile) {
|
||||
getSoftFileDetail(filesInfo.softwareDocFile)
|
||||
}
|
||||
if (appInfo.bigClassify) {
|
||||
getBigClassName(appInfo.bigClassify)
|
||||
}
|
||||
if (appInfo.subClassify) {
|
||||
getSmallClassName(appInfo.subClassify)
|
||||
}
|
||||
|
||||
}, [companyInfo.companyPhoto, companyInfo.companyAuth, appInfo.getFile, filesInfo.sourceCodeDocFile, filesInfo.softwareDocFile, appInfo.bigClassify, appInfo.subClassify])
|
||||
return (
|
||||
<div>
|
||||
<div className='bigLine'></div>
|
||||
<div className='appInfoFormBox' style={{
|
||||
height: height,
|
||||
justifyContent: 'flex-start',
|
||||
flexDirection: 'column',
|
||||
<Spin tip="正在提交..." size="small" spinning={loading}>
|
||||
<div>
|
||||
{contextHolder}
|
||||
<div className='bigLine'></div>
|
||||
|
||||
}}>
|
||||
<div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>企业/机构信息</div>
|
||||
<div className='appInfoText'>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>企业/机构信息名称 : </div>
|
||||
<div className='appInfoTextItemText'>嘻嘻嘻嘻公司</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>所在省市 : </div>
|
||||
<div className='appInfoTextItemText'>辽宁省沈阳市</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>企业/机构地址 : </div>
|
||||
<div className='appInfoTextItemText'>xxx路xxx号</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>证件类型 : </div>
|
||||
<div className='appInfoTextItemText'>xx证</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>证件号 : </div>
|
||||
<div className='appInfoTextItemText'>111111111</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>上传证件 : </div>
|
||||
<div className='appInfoTextItemText'> xx.png</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>授权书 : </div>
|
||||
<div className='appInfoTextItemText'> xxx.jpg</div>
|
||||
</div>
|
||||
<div className='appInfoFormBox' style={{
|
||||
height: height,
|
||||
justifyContent: 'flex-start',
|
||||
flexDirection: 'column',
|
||||
|
||||
}}>
|
||||
|
||||
<div className='appInfoBox'>
|
||||
<div style={{
|
||||
marginLeft: '100px',
|
||||
width: '80%',
|
||||
fontSize: '14px',
|
||||
color: 'red',
|
||||
fontWeight: 'bold',
|
||||
display: props.checkStatus === '0' ? 'unset' : 'none'
|
||||
}}>未通过原因:{props.checkRemark}</div>
|
||||
<div className='appInfoTitle'>企业/机构信息</div>
|
||||
<div className='appInfoText'>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>企业/机构信息名称 : </div>
|
||||
<div className='appInfoTextItemText'>{companyInfo.companyName}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>统一社会信用代码 : </div>
|
||||
<div className='appInfoTextItemText'>{companyInfo.companyNumber}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>企业证件 : </div>
|
||||
<a className='appInfoTextItemText'
|
||||
style={{
|
||||
textDecoration: 'underline'
|
||||
}}
|
||||
onClick={() => {
|
||||
window.open(photofileDetail.url)
|
||||
}}
|
||||
>{photofileDetail.fileName}</a>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>授权书 : </div>
|
||||
<a className='appInfoTextItemText'
|
||||
style={{
|
||||
textDecoration: 'underline'
|
||||
}}
|
||||
onClick={() => {
|
||||
window.open(authfileDetail.url)
|
||||
}}>{authfileDetail.fileName}</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>软件基本信息</div>
|
||||
<div className='appInfoText'>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>APP软件全称 : </div>
|
||||
<div className='appInfoTextItemText'>{appInfo.appName}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>软件简称 : </div>
|
||||
<div className='appInfoTextItemText'>{appInfo.subName}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>版本号 : </div>
|
||||
<div className='appInfoTextItemText'>{appInfo.versionName}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>包名(APPID) : </div>
|
||||
<div className='appInfoTextItemText'>{appInfo.packageName}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>运行系统 : </div>
|
||||
<div className='appInfoTextItemText'>{appInfo.systemName}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>软件分类 : </div>
|
||||
<div className='appInfoTextItemText'> {bigClassName} - {smallClassName}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>开发方式 : </div>
|
||||
<div className='appInfoTextItemText'> {appInfo.developWay}</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle' style={{
|
||||
display: appInfo.getFile ? 'block' : 'none'
|
||||
}}>合作协议 : </div>
|
||||
<a style={{
|
||||
textDecoration: 'underline'
|
||||
}} className='appInfoTextItemText'
|
||||
onClick={() => {
|
||||
window.open(file.url)
|
||||
}}
|
||||
> {file.fileName}</a>
|
||||
</div>
|
||||
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>开发完成日期 : </div>
|
||||
<div className='appInfoTextItemText'> {appInfo.completeTime}</div>
|
||||
</div>
|
||||
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>产权所属者 : </div>
|
||||
<div className='appInfoTextItemText'> {appInfo.projOwnerName}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>鉴别材料</div>
|
||||
<div className='appInfoText'>
|
||||
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>源码文档 : </div>
|
||||
<a style={{
|
||||
textDecoration: 'underline'
|
||||
}}
|
||||
onClick={() => {
|
||||
window.open(codefileDetail.url)
|
||||
}}
|
||||
className='appInfoTextItemText'>{codefileDetail.fileName}</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>软件文档 : </div>
|
||||
<a style={{
|
||||
textDecoration: 'underline'
|
||||
}}
|
||||
onClick={() => {
|
||||
window.open(softfileDetail.url)
|
||||
}}
|
||||
className='appInfoTextItemText'>{softfileDetail.fileName}</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div className='bigLine'></div>
|
||||
<div className='nextBtnBxo' >
|
||||
<div style={{
|
||||
display: props.checkStatus == '' || props.checkStatus == '0' ? 'unset' : 'none',
|
||||
}}>
|
||||
<Button
|
||||
style={{
|
||||
width: '235px',
|
||||
height: '46px',
|
||||
borderRadius: '5px',
|
||||
}}
|
||||
onClick={() => {
|
||||
props.setEditProcess(3)
|
||||
}}>上一步</Button>
|
||||
<Button
|
||||
style={{
|
||||
width: '235px',
|
||||
height: '46px',
|
||||
borderRadius: '5px',
|
||||
marginLeft: '10px',
|
||||
}}
|
||||
type='primary'
|
||||
onClick={() => {
|
||||
handleSubmit()
|
||||
}}>提交审核</Button>
|
||||
</div>
|
||||
<div style={{
|
||||
display: props.checkStatus == '1' ? 'unset' : 'none',
|
||||
fontSize: '16px',
|
||||
color: 'skyblue',
|
||||
// color:'green',
|
||||
fontWeight: 'bold'
|
||||
}}>
|
||||
正在审核中...
|
||||
</div>
|
||||
<div style={{
|
||||
display: props.checkStatus == '2' ? 'unset' : 'none',
|
||||
fontSize: '16px',
|
||||
// color:'skyblue',
|
||||
color: 'green',
|
||||
fontWeight: 'bold'
|
||||
}}>
|
||||
审核通过
|
||||
</div>
|
||||
</div>
|
||||
<div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>软件基本信息</div>
|
||||
<div className='appInfoText'>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>APP软件全称 : </div>
|
||||
<div className='appInfoTextItemText'>嘻嘻嘻嘻</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>软件简称 : </div>
|
||||
<div className='appInfoTextItemText'>嘻嘻嘻嘻</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>版本号 : </div>
|
||||
<div className='appInfoTextItemText'>v.10</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>包名(APPID) : </div>
|
||||
<div className='appInfoTextItemText'>com.zhongxinhy.communitymanage</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>运行系统 : </div>
|
||||
<div className='appInfoTextItemText'>android for phone</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>APP软件分类 : </div>
|
||||
<div className='appInfoTextItemText'> 应用 - 生活实用</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>开发方式 : </div>
|
||||
<div className='appInfoTextItemText'> 独立开发</div>
|
||||
</div>
|
||||
{/* <div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>软件作品说明 : </div>
|
||||
<div className='appInfoTextItemText'> 原创</div>
|
||||
</div> */}
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>开发完成日期 : </div>
|
||||
<div className='appInfoTextItemText'> 2025-05-05</div>
|
||||
</div>
|
||||
{/* <div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>发表状态 : </div>
|
||||
<div className='appInfoTextItemText'> 未发表</div>
|
||||
</div> */}
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>产权所属者 : </div>
|
||||
<div className='appInfoTextItemText'> 嘻嘻公司</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{/* <div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>权利说明</div>
|
||||
<div className='appInfoText'>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>权力取得方式 : </div>
|
||||
<div className='appInfoTextItemText'>原始</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>权利范围 : </div>
|
||||
<div className='appInfoTextItemText'>全部权利</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>其他相关文件 : </div>
|
||||
<div className='appInfoTextItemText'>asdasjdadja.png</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div> */}
|
||||
<div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>鉴别材料</div>
|
||||
<div className='appInfoText'>
|
||||
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>源码文档 : </div>
|
||||
<div className='appInfoTextItemText'>asdkaksd.png</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>软件文档 : </div>
|
||||
<div className='appInfoTextItemText'>asdkaksd.png</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{/* <div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>功能特点</div>
|
||||
<div className='appInfoText'>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>硬件环境 : </div>
|
||||
<div className='appInfoTextItemText'>1GHz以上处理器,1GB以上内存,16GB以上存储空间、安卓智能移动设备</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>软件环境 : </div>
|
||||
<div className='appInfoTextItemText'>Android操作系统</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>编程语言 : </div>
|
||||
<div className='appInfoTextItemText'> Java</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>源程序量 : </div>
|
||||
<div className='appInfoTextItemText'> 672384行左右</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>主要功能 : </div>
|
||||
<div className='appInfoTextItemText'>隆盛社区APP软件主要功能有考勤打卡、房屋人口管理、工作轨迹、事件上报、事件处理、事件检查、学校管理、重点区域管理、重点场所、实有车辆、用户登录退出等功能。</div>
|
||||
</div>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>技术特点 : </div>
|
||||
<div className='appInfoTextItemText'>基于 Android Jetpack 组件构建,利用 ViewModel 和 LiveData 实现数据的高效管理与界面的实时更新,确保用户体验流畅。网络通信方面,运用 Retrofit 框架结合 OkHttp,实现安全快速的数据交互。</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div> */}
|
||||
{/* <div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>著作权人</div>
|
||||
<div className='appInfoText'>
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>著作权人名称 : </div>
|
||||
<div className='appInfoTextItemText'>嘻嘻嘻嘻嘻嘻嘻哈哈哈哈公司</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div> */}
|
||||
</div>
|
||||
|
||||
<div className='bigLine'></div>
|
||||
<div className='nextBtnBxo'>
|
||||
<Button
|
||||
style={{
|
||||
width: '235px',
|
||||
height: '46px',
|
||||
borderRadius: '5px',
|
||||
}}
|
||||
onClick={() => {
|
||||
props.setEditProcess(3)
|
||||
}}>上一步</Button>
|
||||
<Button
|
||||
style={{
|
||||
width: '235px',
|
||||
height: '46px',
|
||||
borderRadius: '5px',
|
||||
marginLeft: '10px',
|
||||
}}
|
||||
type='primary'
|
||||
onClick={() => {
|
||||
handleSubmit()
|
||||
}}>提交审核</Button>
|
||||
|
||||
</div>
|
||||
<Modal title="提示"
|
||||
centered
|
||||
// footer={null}
|
||||
destroyOnClose
|
||||
okText="确认提交"
|
||||
cancelText="取消"
|
||||
open={modal}
|
||||
// width={1200}
|
||||
onCancel={() => {
|
||||
setModal(false)
|
||||
|
||||
</div>
|
||||
}}
|
||||
onOk={
|
||||
// setModal(false)
|
||||
clickOk
|
||||
}
|
||||
>
|
||||
|
||||
<div style={{
|
||||
fontSize: '16px',
|
||||
color: 'red',
|
||||
fontWeight: 'bold'
|
||||
}}>
|
||||
注 : 提交后无法修改,请确认信息是否正确!
|
||||
</div>
|
||||
|
||||
</Modal>
|
||||
</Spin>
|
||||
)
|
||||
}
|
||||
|
@ -35,4 +35,7 @@
|
||||
.appInfoTextItemText{
|
||||
max-width: 60%;
|
||||
/* background-color: pink; */
|
||||
/* 下划线 */
|
||||
|
||||
|
||||
}
|
@ -68,11 +68,11 @@ export default function EditAppFiles(props: any) {
|
||||
return true;
|
||||
};
|
||||
// 处理文件点击预览
|
||||
const handlePreview = (file: any) => {
|
||||
console.log(file);
|
||||
// const handlePreview = (file: any) => {
|
||||
// console.log(file);
|
||||
|
||||
|
||||
};
|
||||
// };
|
||||
// 上传文件源码文档列表
|
||||
const [upCodeArray, setUpCodeArray] = useState<any>([])
|
||||
// const [codeDis, setCodeDis] = useState(false)
|
||||
@ -227,7 +227,7 @@ export default function EditAppFiles(props: any) {
|
||||
const getCodeFileDetail = async (id: string) => {
|
||||
try {
|
||||
const res: any = await fileDetail(id)
|
||||
console.log('文件详情', res);
|
||||
// console.log('源码文档文件详情', res);
|
||||
setUpCodeArray([
|
||||
{
|
||||
uid: res[0].fileId,
|
||||
@ -252,7 +252,6 @@ export default function EditAppFiles(props: any) {
|
||||
const getSoftFileDetail = async (id: string) => {
|
||||
try {
|
||||
const res: any = await fileDetail(id)
|
||||
console.log('文件详情', res);
|
||||
setUpSoftArray([
|
||||
{
|
||||
uid: res[0].fileId,
|
||||
@ -385,7 +384,7 @@ export default function EditAppFiles(props: any) {
|
||||
});
|
||||
}}
|
||||
beforeUpload={beforeUpload}
|
||||
onPreview={handlePreview}
|
||||
// onPreview={handlePreview}
|
||||
// onChange={handleUploadChange}
|
||||
headers={{ 'Auth': `Bearer ${token}` }}
|
||||
>
|
||||
@ -406,7 +405,7 @@ export default function EditAppFiles(props: any) {
|
||||
onClick={
|
||||
downCodeWord
|
||||
}
|
||||
>[ 下载1 ]</a>
|
||||
>[ 下载 ]</a>
|
||||
</div>
|
||||
<a style={{
|
||||
marginLeft: 58,
|
||||
@ -494,7 +493,7 @@ export default function EditAppFiles(props: any) {
|
||||
</div>
|
||||
<a style={{
|
||||
position: 'absolute',
|
||||
top: '10px',
|
||||
// top: '10px',
|
||||
left: '260px',
|
||||
textWrap: 'nowrap'
|
||||
}}
|
||||
|
@ -20,7 +20,7 @@ export default function EditAppInfo(props: any) {
|
||||
const getSmallClassList = async (id: string) => {
|
||||
try {
|
||||
const res: any = await twoClass(id)
|
||||
console.log(res);
|
||||
// console.log(res);
|
||||
setSmallClassList(res.map((item: any) => {
|
||||
return {
|
||||
label: item.dataName,
|
||||
@ -153,8 +153,8 @@ export default function EditAppInfo(props: any) {
|
||||
}
|
||||
const onFinish = async (values: any) => {
|
||||
// 处理表单提交逻辑
|
||||
console.log('表单提交成功', values);
|
||||
console.log(dayjs(values.completeTime).format('YYYY-MM-DD'));
|
||||
// console.log('表单提交成功', values);
|
||||
// console.log(dayjs(values.completeTime).format('YYYY-MM-DD'));
|
||||
// 给表单赋值 time: dayjs(res.goodsGetTime, 'YYYY-MM-DD'),
|
||||
// submitInfo(values)
|
||||
// 给表单赋值
|
||||
@ -165,10 +165,10 @@ export default function EditAppInfo(props: any) {
|
||||
projOwnerId: belongPeopleInfo.authorId,//著作权人信息ID
|
||||
}
|
||||
|
||||
console.log('表单数据', data);
|
||||
console.log('传递数据', props.appInfo);
|
||||
// console.log('表单数据', data);
|
||||
// console.log('传递数据', props.appInfo);
|
||||
// console.log(JSON.stringify(props.appInfo) == JSON.stringify(data));
|
||||
console.log(deepCompareObjects(props.appInfo, data));
|
||||
// console.log(deepCompareObjects(props.appInfo, data));
|
||||
|
||||
// console.log(props.appInf == data);
|
||||
// return
|
||||
@ -256,13 +256,13 @@ export default function EditAppInfo(props: any) {
|
||||
}
|
||||
useEffect(() => {
|
||||
if (props.appInfo.getFile) {
|
||||
console.log('嘻嘻', props.appInfo.getFile);
|
||||
// console.log('嘻嘻', props.appInfo.getFile);
|
||||
getFileDetail(props.appInfo.getFile)
|
||||
}
|
||||
}, [props.appInfo.getFile])
|
||||
|
||||
useEffect(() => {
|
||||
console.log('传过来的信息', props);
|
||||
// console.log('传过来的信息', props);
|
||||
if (props.appInfo.appName) {
|
||||
// setSmallClassList(props.smallClass)
|
||||
form.setFieldsValue({
|
||||
|
482
src/route/AppElectron/components/File/File.tsx
Normal file
482
src/route/AppElectron/components/File/File.tsx
Normal file
@ -0,0 +1,482 @@
|
||||
import { useEffect, useState } from 'react'
|
||||
import { Table, Space, Modal, Input, Form, Upload, Button } from "antd"
|
||||
import { UploadOutlined } from '@ant-design/icons';
|
||||
import { sellSupplementList, buySupplementList, supplementDetail, getFileTypeByIds, supplementAppData } from '../../../../request/api'
|
||||
import { showImage, uploadFileUrl } from '../../../../request/request'
|
||||
const { Column } = Table;
|
||||
import useMessage from "antd/es/message/useMessage";
|
||||
// import './File.css'
|
||||
const { TextArea } = Input;
|
||||
export default function File(props: any) {
|
||||
const [upFileArray, setUpFileArray] = useState<any>([]) // 上传的文件数组
|
||||
// 自定义验证函数
|
||||
const validateContentOrFile = (_rule: any, _value: any, callback: (error?: string) => void, form: any) => {
|
||||
const { upCorrectionRemark, upFile } = form.getFieldsValue();
|
||||
if (upCorrectionRemark || (upFile && Array.isArray(upFile.fileList) && upFile.fileList.length > 0)) {
|
||||
callback();
|
||||
} else {
|
||||
callback('内容和附件至少需要填写或上传一项');
|
||||
}
|
||||
};
|
||||
// 点击上传资料确定
|
||||
const submitData = async (params: any) => {
|
||||
try {
|
||||
await supplementAppData({
|
||||
correctionParentId: correctionId,
|
||||
// correctionType: CorrectionType,
|
||||
orderId: props.orderId,
|
||||
correctionFiles: params.correctionFiles,
|
||||
correctionRemark: params.correctionRemark,
|
||||
})
|
||||
if (props.user == 'sell') {
|
||||
getSellSupplementList()
|
||||
} else if (props.user == 'buy') {
|
||||
getBuySupplementList()
|
||||
}
|
||||
props.upData()
|
||||
messageApi.open({
|
||||
type: 'success',
|
||||
content: '已提交',
|
||||
})
|
||||
setIsModalVisible(false)
|
||||
// form.resetFields();
|
||||
|
||||
// console.log(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 token = sessionStorage.getItem('token')
|
||||
const [form] = Form.useForm();
|
||||
const [messageApi, messageContext] = useMessage();
|
||||
const [correctionId, setCorrectionId] = useState('') // 点击查看内容选中的id
|
||||
// const [CorrectionType, setCorrectionType] = useState('')
|
||||
// 补充资料弹窗
|
||||
const [isModalVisible, setIsModalVisible] = useState(false)
|
||||
const [page, setPage] = useState(1) // 当前页码
|
||||
const [total, setTotal] = useState(0) // 总条数
|
||||
const [data, setData] = useState([])
|
||||
const getSellSupplementList = async () => {
|
||||
try {
|
||||
const res: any = await sellSupplementList({
|
||||
orderId: props.orderId,
|
||||
page: page,
|
||||
rows: 10
|
||||
})
|
||||
setPage(res.page)
|
||||
setTotal(res.total)
|
||||
console.log(res);
|
||||
setData(res.rows)
|
||||
// let newData:any = [];
|
||||
// for (let i = 0; i < 10; i++) {
|
||||
// newData = newData.concat(res.rows);
|
||||
// }
|
||||
// setData(newData);
|
||||
|
||||
} 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 getBuySupplementList = async () => {
|
||||
try {
|
||||
const res: any = await buySupplementList({
|
||||
orderId: props.orderId,
|
||||
page: page,
|
||||
rows: 10
|
||||
})
|
||||
setPage(res.page)
|
||||
setTotal(res.total)
|
||||
// console.log(res);
|
||||
setData(res.rows)
|
||||
} 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 [fileList, setFileList] = useState<any>([]) // 上传文件列表
|
||||
// 获取文件类型
|
||||
const getFileTypeByIdsArray = async (ids: string) => {
|
||||
try {
|
||||
const res: any = await getFileTypeByIds({
|
||||
ids: ids
|
||||
})
|
||||
setFileList(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 [detailData, setDetailData] = useState<any>({})
|
||||
const getSupplementDetail = async (id: string) => {
|
||||
try {
|
||||
const res: any = await supplementDetail(id)
|
||||
// console.log(res);
|
||||
setDetailData(res)
|
||||
await getFileTypeByIdsArray(res.correctionFiles)
|
||||
|
||||
} 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(() => {
|
||||
if (props.user == 'sell') {
|
||||
getSellSupplementList()
|
||||
} else if (props.user == 'buy') {
|
||||
getBuySupplementList()
|
||||
}
|
||||
}, [page])
|
||||
return (
|
||||
<div>
|
||||
{messageContext}
|
||||
<Table
|
||||
// scroll={{ y: `${height - 190}px` }}
|
||||
dataSource={data}
|
||||
// pagination={{
|
||||
// defaultPageSize: 5, // 设置默认一页显示 5 条数据
|
||||
// }}
|
||||
scroll={{ y: 480 }}
|
||||
pagination={
|
||||
{
|
||||
pageSize: 10,
|
||||
total: total,
|
||||
onChange: (currentPage) => {
|
||||
setPage(currentPage);
|
||||
},
|
||||
showSizeChanger: false,
|
||||
current: page
|
||||
|
||||
}
|
||||
}
|
||||
// pagination={false} // 不显示分页
|
||||
style={{ textAlign: 'center' }} // 设置表格内容居中显示
|
||||
rowKey="correctionId" // 指定数据项的唯一标识符
|
||||
>
|
||||
<Column
|
||||
width={70}
|
||||
title="序号" render={(_text, _record, index: number) => (
|
||||
index + 1
|
||||
)} align="center" />
|
||||
<Column
|
||||
title="资料主题"
|
||||
dataIndex="correctionTitle"
|
||||
align="center"
|
||||
width={200}
|
||||
render={(text) => (
|
||||
<div style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }} title={text}>{text}</div>
|
||||
)}
|
||||
// render={(text) => (
|
||||
// <span style={{ color: '#1B8BD2', fontSize: '16px', fontWeight: '700' }}>{text}</span>
|
||||
// )}
|
||||
/>
|
||||
<Column
|
||||
title="资料内容"
|
||||
dataIndex="correctionRemark"
|
||||
align="center"
|
||||
width={300}
|
||||
render={(text) => (
|
||||
<div style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }} title={text}>{text}</div>
|
||||
)}
|
||||
/>
|
||||
<Column
|
||||
title="发起时间"
|
||||
width={200}
|
||||
dataIndex="createTime"
|
||||
align="center"
|
||||
// ellipsis
|
||||
/>
|
||||
<Column
|
||||
title="状态"
|
||||
dataIndex={props.user == 'sell' ? "sellId" : "buyId"}
|
||||
align="center"
|
||||
width={100}
|
||||
render={(text) => (
|
||||
<>
|
||||
<span style={{ color: '#DD0000', fontSize: '16px', fontWeight: '700', display: text == '' ? 'unset' : 'none' }}>待补充</span>
|
||||
<span style={{ color: 'green', fontSize: '16px', fontWeight: '700', display: text == '' ? 'none' : 'unset' }}>已补充</span>
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
|
||||
{/* <Column title="实名认证状态" dataIndex="address" key="key" /> */}
|
||||
<Column
|
||||
align="center"
|
||||
title="操作"
|
||||
width={100}
|
||||
render={(_text, record: any) => (
|
||||
<Space size="middle">
|
||||
<span className='transaction-order-table-btn' onClick={() => {
|
||||
// console.log(record.correctionId);
|
||||
setCorrectionId(record.correctionId)
|
||||
getSupplementDetail(record.correctionId)
|
||||
setIsModalVisible(true)
|
||||
// 清空表单
|
||||
form.resetFields();
|
||||
// setCorrectionType(record.correctionType)
|
||||
}}>查看内容</span>
|
||||
|
||||
</Space>
|
||||
)}
|
||||
/>
|
||||
</Table>
|
||||
<Modal title={'补充'}
|
||||
destroyOnClose={true}
|
||||
open={isModalVisible}
|
||||
footer={null} // 将 footer 设置为 null 来隐藏自带按钮
|
||||
width={1000}
|
||||
onCancel={() => {
|
||||
setIsModalVisible(false);
|
||||
// 清空表单
|
||||
form.resetFields();
|
||||
}}
|
||||
centered
|
||||
>
|
||||
<div>
|
||||
{/* {correctionId}
|
||||
{CorrectionType} */}
|
||||
<div className='editModal-title'>
|
||||
<div className='editModal-title-box'></div>
|
||||
<div className='editModal-title-name'>平台需要您补充的内容说明</div>
|
||||
</div>
|
||||
<div className='correctionTitleBox'>
|
||||
<div className='correctionTitle'>主题</div>
|
||||
<Input value={detailData.correctionTitle} style={{
|
||||
height: 40,
|
||||
color: 'black'
|
||||
}}
|
||||
disabled
|
||||
></Input>
|
||||
</div>
|
||||
<div className='correctionRemarkBox'>
|
||||
<div className='correctionTitle'>内容</div>
|
||||
<TextArea value={detailData.correctionRemark} style={{
|
||||
height: 100,
|
||||
color: 'black',
|
||||
resize: 'none'
|
||||
}}
|
||||
disabled
|
||||
></TextArea>
|
||||
</div>
|
||||
<div className='upFileBox'>
|
||||
<div className='correctionTitle'>附件</div>
|
||||
{fileList.length > 0 ? (
|
||||
// <div>材料列表</div>
|
||||
<div>
|
||||
{
|
||||
fileList.map((item: any) => {
|
||||
return (
|
||||
<div
|
||||
key={item.fileId}
|
||||
style={{
|
||||
// background: 'pink',
|
||||
marginBottom: 5,
|
||||
maxWidth: 800,
|
||||
overflow: 'hidden',
|
||||
textOverflow: 'ellipsis',
|
||||
whiteSpace: 'nowrap',
|
||||
cursor: 'pointer',
|
||||
color: '#1B8BD2',
|
||||
//下划线
|
||||
textDecoration: 'underline',
|
||||
}}
|
||||
title={item.fileName}
|
||||
onClick={() => {
|
||||
|
||||
window.open(showImage(item.fileId, false))
|
||||
|
||||
}}
|
||||
>
|
||||
{item.fileName}
|
||||
</div>
|
||||
)
|
||||
})
|
||||
}
|
||||
</div>
|
||||
|
||||
) : (
|
||||
<div style={{ fontSize: 18, fontWeight: 700 }}>
|
||||
无
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className='editModal-title' style={{ marginTop: 30 }}>
|
||||
<div className='editModal-title-box'></div>
|
||||
<div className='editModal-title-name'>在下面填写您补充的内容</div>
|
||||
</div>
|
||||
<Form
|
||||
name="basic"
|
||||
form={form}
|
||||
layout="vertical"
|
||||
|
||||
onFinish={(value) => {
|
||||
|
||||
// console.log(value);
|
||||
// if (value.upFile && Array.isArray(value.upFile.fileList)) {
|
||||
// const uids = value.upFile.fileList.map((file: any) => file.uid);
|
||||
// const uidString = uids.join(',');
|
||||
// console.log('提取的 uid 字符串:', uidString);
|
||||
// // 你可以在这里继续处理 uid 字符串,比如发送请求等
|
||||
|
||||
// }
|
||||
// const uids = value.upFile ? (value.upFile.fileList.map((file: any) => file.uid)).join(',') : '';
|
||||
|
||||
// console.log('提取的 uid 字符串:', uids);
|
||||
|
||||
// submitData({
|
||||
// correctionFiles: uids,
|
||||
// correctionRemark: value.upCorrectionRemark,
|
||||
// })
|
||||
// console.log(upFileArray);
|
||||
// 将upFileArray 数组周末和每项的response里的data 里的 fileId 拼接成一个字符串,用逗号隔开
|
||||
const uids = upFileArray.map((file: any) => file.response.data.fileId).join(',');
|
||||
// console.log('提取的 uid 字符串:', uids);
|
||||
submitData({
|
||||
correctionFiles: uids,
|
||||
correctionRemark: value.upCorrectionRemark,
|
||||
})
|
||||
|
||||
|
||||
}}
|
||||
onFinishFailed={() => {
|
||||
messageApi.open({
|
||||
type: 'error',
|
||||
content: '内容和附件至少需要填写或上传一项',
|
||||
})
|
||||
}}
|
||||
autoComplete="off"
|
||||
>
|
||||
<div className='correctionRemarkBox'>
|
||||
<div className='correctionTitle'>内容</div>
|
||||
<Form.Item
|
||||
|
||||
name="upCorrectionRemark"
|
||||
rules={[
|
||||
// { required: true, message: '请输入需要补充内容' },
|
||||
{
|
||||
validator: (rule, value, callback) => validateContentOrFile(rule, value, callback, form),
|
||||
},
|
||||
|
||||
]}
|
||||
>
|
||||
<TextArea style={{
|
||||
height: 100,
|
||||
resize: 'none',
|
||||
width: 900,
|
||||
|
||||
}}
|
||||
placeholder='请输入需要补充内容'
|
||||
></TextArea>
|
||||
</Form.Item>
|
||||
|
||||
</div>
|
||||
<div className='correctionRemarkBox' style={{
|
||||
marginTop: 0
|
||||
}}>
|
||||
<div className='correctionTitle'>附件</div>
|
||||
<div style={{
|
||||
maxWidth: 800,
|
||||
overflow: 'hidden',
|
||||
textOverflow: 'ellipsis',
|
||||
whiteSpace: 'nowrap',
|
||||
}}>
|
||||
<Form.Item
|
||||
|
||||
name="upFile"
|
||||
rules={[
|
||||
// { required: true, message: '请上传附件' },
|
||||
{
|
||||
validator: (rule, value, callback) => validateContentOrFile(rule, value, callback, form),
|
||||
},
|
||||
]}
|
||||
>
|
||||
|
||||
<Upload
|
||||
name="file"
|
||||
action={uploadFileUrl()}
|
||||
defaultFileList={upFileArray}
|
||||
onChange={(info) => {
|
||||
setUpFileArray(info.fileList)
|
||||
// console.log(info.fileList);
|
||||
|
||||
}}
|
||||
|
||||
headers={{ 'Auth': `Bearer ${token}` }}
|
||||
|
||||
>
|
||||
<Button icon={<UploadOutlined />}>上传附件</Button>
|
||||
</Upload>
|
||||
|
||||
|
||||
</Form.Item>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<Form.Item
|
||||
|
||||
>
|
||||
<div style={{
|
||||
display: 'flex',
|
||||
justifyContent: 'flex-end',
|
||||
gap: 10,
|
||||
// marginTop: 20
|
||||
}}>
|
||||
<Button onClick={() => {
|
||||
setIsModalVisible(false)
|
||||
form.resetFields();
|
||||
}}>取消</Button>
|
||||
<Button type="primary" htmlType="submit" >确定</Button>
|
||||
</div>
|
||||
</Form.Item>
|
||||
|
||||
|
||||
</Form>
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
}
|
@ -3314,6 +3314,7 @@ export default function Index() {
|
||||
style={{ background: 'var(--color-searchbtn)' }}
|
||||
onClick={() => {
|
||||
setAppModal(true)
|
||||
setAppGoodsId('')
|
||||
}}
|
||||
>申请电子软著</Button>
|
||||
<Search
|
||||
@ -3366,7 +3367,7 @@ export default function Index() {
|
||||
// { value: '1', label: '未付款' },
|
||||
{ value: '2', label: '资料填写中' },
|
||||
{ value: '3', label: '资料审核中' },
|
||||
{ value: '4', label: '下线申请中' },
|
||||
{ value: '4', label: '线下申请中' },
|
||||
{ value: '5', label: '已下证' },
|
||||
]}
|
||||
>
|
||||
@ -3822,7 +3823,7 @@ export default function Index() {
|
||||
footer={null}
|
||||
onCancel={() => {
|
||||
setAppModal(false)
|
||||
setAppGoodsId('')
|
||||
|
||||
}}
|
||||
okButtonProps={{ style: { background: 'red', color: 'white' } }}
|
||||
width={830}
|
||||
|
Loading…
Reference in New Issue
Block a user