订单属性增加

This commit is contained in:
xixi 2024-08-27 18:29:20 +08:00
parent 9b4786b783
commit 37b49e7a1d
10 changed files with 557 additions and 204 deletions

View File

@ -152,7 +152,7 @@ export default function CorrectionModal(props: any) {
</div>
<div className='refunModal-item'>
<div className='refunModal-title'>
<span className='refunModal-red'>*</span>
<span className='refunModal-red'>*</span>
</div>
<Form.Item
name="correctionType"

View File

@ -73,7 +73,7 @@ export default function NoticeModal() {
title: '消息类型',
dataIndex: 'title',
align: 'center',
width: 100
width: 200
},
{
title: '接收时间',

View File

@ -15,7 +15,7 @@ import { Button, Tag, Modal, Carousel } from 'antd';
import { GenerateStatus, ProjChargeType } from "../../interfaces/proj/IProj.ts";
import { useNavigate } from "react-router-dom";
import { Axios, post, downloadUrl } from "../../util/AjaxUtils.ts";
import {useEffect, useState } from "react";
import { useEffect, useState } from "react";
import useMessage from "antd/es/message/useMessage";
import setImg from '../../static/right/set.png'
import orderImg from '../../static/right/order.png'
@ -182,6 +182,9 @@ export default function CardProj(props: any) {
// console.log('额外收费加急',URGENTvalue);
// console.log('基础服务费',basicsValue);
// getTag()
// console.log('查看数据', data);
// console.log('查看状态', data.pay.payStatus);
}, [])
return (
@ -191,7 +194,19 @@ export default function CardProj(props: any) {
<div className='cpt-left'>
<div className='dottedLine'></div>
<div className='cpt-title' onClick={goEdit}>{data.projName}</div>
<div className='cp-tag' style={{ background: payCharge == '全托管' ? '#6bd2b4' : payCharge == '免费试用' ? '#ff9226' : payCharge == '写材料' ? '#5279f4' : '', color: '#fff' }}>
<div className='cp-tag'
style={{
background: payCharge == '全托管' ? '#6bd2b4' : payCharge == '免费试用' ? '#ff9226' : payCharge == '写材料' ? '#5279f4' : '', color: '#fff',
display: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? 'unset' : 'none'
}}>
{payCharge}
</div>
<div className='cp-tag'
style={{
background: '#8a8a8a', color: '#fff',
display: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? 'none' : 'unset'
}}>
{payCharge}
</div>
<div className='cp-num'>
@ -209,7 +224,7 @@ export default function CardProj(props: any) {
background: tagIdArray.includes(item.value) ? '#ff7b00' : '',
color: tagIdArray.includes(item.value) ? '#ffffff' : '#5a5a5a',
border: tagIdArray.includes(item.value) ? ' 1px solid #ff7b00' : ' 1px solid #5a5a5a',
// display: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? 'block' : 'none'
}}
onClick={() => {
@ -237,7 +252,7 @@ export default function CardProj(props: any) {
</div>
</div> */}
<div className='cpt-right'>
<div className='cpt-right' style={{ display: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? 'block' : 'none' }}>
{
data.generate.generateStatus == GenerateStatus.SUCCESS ? (
@ -252,12 +267,13 @@ export default function CardProj(props: any) {
</span>
)
}
<span className='orignLine'>|</span>
<span className="cpt-text-btn">
<span className='orignLine' style={{ display: data.projStatus == 'EXPIRED' ? 'none' : 'unset' }}>|</span>
<span className="cpt-text-btn" style={{ display: data.projStatus == 'EXPIRED' ? 'none' : 'unset' }}>
<EyeOutlined />
<span className='text-btn' onClick={() => {
window.open(`${Axios.defaults?.baseURL}/${data.previewUrl}`, '_blank')
}}></span>
<span className='text-btn'
onClick={() => {
window.open(`${Axios.defaults?.baseURL}/${data.previewUrl}`, '_blank')
}}></span>
</span>
</div>
@ -265,7 +281,7 @@ export default function CardProj(props: any) {
<div className='cp-bot'>
<div className='cpb-left'>
{/* lyp */}
<div className='cpb-left-img'>
<div className='cpb-left-img' >
<Carousel autoplay dots={false}>
<div className='cpb-left-imgX'>
@ -279,13 +295,24 @@ export default function CardProj(props: any) {
</div>
</Carousel>
<div className='payStatus' style={{background:data.pay.payStatus == 'UNPAID'?'#E85454 ':data.pay.payStatus == 'PAID'?'#40BF76':data.pay.payStatus == 'ARREARS'?'#FFA200':data.pay.payStatus == 'FULL_REFUND'?'#C9C9C9':data.pay.payStatus == 'CORRECTION1_REFUND'?'#99B5BD':data.pay.payStatus == 'CORRECTION2_REFUND'?'#99A3BD':''}}>
{data.pay.payStatus == 'UNPAID'?'未付款':data.pay.payStatus == 'PAID'?'已付款':data.pay.payStatus == 'ARREARS'?'欠费':data.pay.payStatus == 'FULL_REFUND'?'全额退款':data.pay.payStatus == 'CORRECTION1_REFUND'?'补正1次退款':data.pay.payStatus == 'CORRECTION2_REFUND'?'补正2次退款':''}
</div>
</div>
{/* <img src={downloadUrl(data.codeTypePage.previewImgs)} className='cpb-left-img' alt="" /> */}
<div className='cpbl-right'>
<div style={{ display: 'flex' }}>
<div className='cpbl-money'>
<span className='money'>() : </span>
<span className='num'>{data.pay.payment / 100}</span>
<div className='cpbl-money'
style={{ background: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? '#f7edce' : '#ebebeb' }}
>
<span className='money'
style={{ color: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? '#FF5D15' : '#8a8a8a' }}
>() : </span>
<span className='num'
style={{ color: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? '#FF5D15' : '#8a8a8a' }}
>{data.pay.payment / 100}</span>
</div>
<div className='otherMoney'>
{/* <div>基础费用:{basicsValue}</div> */}
@ -294,54 +321,60 @@ export default function CardProj(props: any) {
<Tag color="#87d068" style={{ display: videoDemoValue ? 'block' : 'none' }}>:{videoDemoValue}</Tag>
</div>
</div>
<div className='cpbl-btn'>
<div className='threeBtn' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-loginpage-show/${data.projId}`)
setLoginPageShowOpne(true);
<div style={{ display: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? 'block' : 'none' }}>
<div className='cpbl-btn'>
<div className='threeBtn' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-loginpage-show/${data.projId}`)
setLoginPageShowOpne(true);
} else {
// nav(`/proj-edit/config-loginpage/${data.projId}`)
setLoginPageOpne(true)
}
}}>
<img src={setImg} alt="" />
<div></div>
</div>
<div className='threeBtn' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-mod-list-show/${data.projId}`)
setSoftwareManagementShowOpen(true)
} else {
setSoftwareManagementOpen(true)
// nav(`/proj-edit/config-mod-list/${data.projId}`)
} else {
// nav(`/proj-edit/config-loginpage/${data.projId}`)
setLoginPageOpne(true)
}
}}>
<img src={setImg} alt="" />
<div></div>
</div>
<div className='threeBtn' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-mod-list-show/${data.projId}`)
setSoftwareManagementShowOpen(true)
} else {
setSoftwareManagementOpen(true)
// nav(`/proj-edit/config-mod-list/${data.projId}`)
}
}}>
<img src={menuImg} alt="" />
<div>({data.projModCount})</div>
</div>
<div className='threeBtn rightBit' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-menu-list-show/${data.projId}`)
setDisplayOrderShowOpen(true);
} else {
// nav(`/proj-edit/config-menu-list/${data.projId}`)
setDisplayOrderOpen(true);
}
}}>
<img src={menuImg} alt="" />
<div>({data.projModCount})</div>
</div>
<div className='threeBtn rightBit' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-menu-list-show/${data.projId}`)
setDisplayOrderShowOpen(true);
} else {
// nav(`/proj-edit/config-menu-list/${data.projId}`)
setDisplayOrderOpen(true);
}
}}>
<img src={orderImg} alt="" />
<div>({data.projModCount})</div>
}
}}>
<img src={orderImg} alt="" />
<div>({data.projModCount})</div>
</div>
</div>
</div>
</div>
</div>
<div className='cline'></div>
<div className='cpb-center'>
<div className='cpbc-top'>
<div className='cpb-center' >
<div style={{ fontSize: 16, fontWeight: 500, color: data.projStatus == 'REFUND_APPLYING' ? '' : data.projStatus == 'CLOSE' ? '#73A350 ' : data.projStatus == 'EXPIRED' ? '#FFB667 ' : '' }}>
{data.projStatus == 'REFUND_APPLYING' ? '退款申请中' : data.projStatus == 'CLOSE' ? '该项目已关闭' : data.projStatus == 'EXPIRED' ? '该项目已过期' : ''}
</div>
<div className='cpbc-top' style={{ display: data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' ? 'block' : 'none' }}>
{
data.generate.generateStatus == GenerateStatus.SUCCESS ? (
<div className="option">

View File

@ -144,9 +144,20 @@
height: 143px;
background: #F5F5F5;
border-radius: 6px;
position: relative;
}
.payStatus{
position: absolute;
background-color: red;
left: 0;
top: 113px;
height: 30px;
padding: 0px 10px;
line-height: 30px;
color: #FFFFFF;
font-size: 14px;
}
.cpb-left-imgX {
/* width: 249px; */
width: 290px;

View File

@ -1,4 +1,5 @@
import { Table, TableProps, Tooltip, Spin } from "antd";
import { Table, TableProps, Tooltip, Spin, Modal, Input } from "antd";
const { Search } = Input;
import { useEffect, useState } from "react";
import useMessage from "antd/es/message/useMessage";
import { get } from "../../util/AjaxUtils";
@ -23,20 +24,32 @@ type DataType = {
orderStatus: string;
gmtCreate: string;
}
type DataTypeDetail = {
productName: string; //商品名称
productType: string; //商品类型
quantity: number; //购买数量
unitPrice: number; //单价
productDescription: string; //商品描述
notes: string; //备注
}
export default function MyOrder() {
const [messageApi, messageContext] = useMessage();
const [isLoading, setIsLoading] = useState(false)
const [page, setPage] = useState(1);
const [total, setTotal] = useState(0);
const [dataArray, setDataArray] = useState<DataType[]>([]);
const [detailData, setDetailData] = useState<DataTypeDetail[]>([])
const [orderDetailsModal, setOrderDetailsModal] = useState(false) //详情弹窗
const [keyWords, setKewWords] = useState('')
const getData = () => {
get<IListPage<DataType>>({
messageApi,
url: '/api/order/listpage/complete/no-invoiced/self',
url: '/api/order/listpage/self',
config: {
params: {
page: page,
rows: 20
rows: 20,
keywords: keyWords,
}
},
onBefore() {
@ -54,6 +67,26 @@ export default function MyOrder() {
}
})
}
const getOrderDetails = (orderId: string) => {
get({
messageApi,
url: `/api/order-detail/list/order-id/${orderId}`,
config: {
},
onBefore() {
setIsLoading(true);
},
onSuccess(data: any) {
// console.log(data.data);
setDetailData(data.data)
},
onFinally() {
setIsLoading(false);
}
})
}
const columns: TableProps<DataType>['columns'] = [
{
title: '订单号',
@ -81,8 +114,17 @@ export default function MyOrder() {
if (value === 'COMPLETE') {
return '完成';
}
if (value === 'CHARGEBACK') {
return '已退款';
if (value === ' FULL_REFUND') {
return '全额退款';
}
if (value === 'PENDING') {
return '等待';
}
if (value === 'CORRECTION1_REFUND') {
return '补正1次退款';
}
if (value === 'CORRECTION2_REFUND') {
return '补正2次退款';
}
}
},
@ -92,70 +134,187 @@ export default function MyOrder() {
align: 'center',
width: 180
},
// {
// title: '产品类型',
// dataIndex: 'detail.productType',
// align: 'center',
// width: 100,
// render: (_value, record) => {
// if (record.detail.productType === 'PROJ') {
// return '项目创建'
// }
// if (record.detail.productType === 'AGENT') {
// return '项目代理'
// }
// return record.detail.productType
// }
// },
// {
// title: '数量',
// dataIndex: 'detail.quantity',
// align: 'center',
// width: 100,
// render: (_value, record) => {
// return record.detail.quantity
// }
// },
// {
// title: '单价',
// dataIndex: 'detail.unitPrice',
// align: 'center',
// width: 100,
// render: (_value, record) => {
// return (record.detail.unitPrice / 100).toFixed(2)
// }
// },
// {
// title: '订单备注',
// dataIndex: 'detail.notes',
// align: 'center',
// width: 120,
// render: (_value, record) => {
// return record.detail.notes
// }
// },
// {
// title: '描述',
// dataIndex: 'detail.productDescription',
// align: 'center',
// width: 200,
// ellipsis: {
// showTitle: false,
// },
// render: (_value, record) => {
// return <Tooltip placement="top" title={record.detail.productDescription}>{record.detail.productDescription}</Tooltip>
// }
// },
{
title: '产品类型',
dataIndex: 'detail.productType',
title: '订单详情',
align: 'center',
width: 100,
render: (_, record) => (
// {record.name}
<div className='refunBtn' onClick={() => {
// console.log(record.orderId); //id
// console.log(record.orderNo); //编号
// setOrderId(record.orderId)
setOrderDetailsModal(true)
getOrderDetails(record.orderId)
}}></div>
),
},
]
const detailColumns: TableProps<DataTypeDetail>['columns'] = [
{
title: '商品名称',
dataIndex: 'productName',
align: 'center',
// width: 250,
ellipsis: {
showTitle: false,
},
render: (_value, record) => {
if (record.detail.productType === 'PROJ') {
return '项目创建'
}
if (record.detail.productType === 'AGENT') {
return '项目代理'
}
return record.detail.productType
return <Tooltip placement="top" title={record.productName}>{record.productName}</Tooltip>
}
},
{
title: '数量',
dataIndex: 'detail.quantity',
title: '商品类型',
dataIndex: 'productType',
align: 'center',
render: (_value, record) => {
if (record.productType === 'PROJ') {
return '项目创建'
}
if (record.productType === 'AGENT') {
return '项目代理'
}
if (record.productType === 'FULL_REFUND') {
return '全额退款'
}
if (record.productType === 'CORRECTION1_REFUND') {
return '补正1次退款'
}
if (record.productType === 'CORRECTION2_REFUND') {
return '补正2次退款'
}
return record.productType
}
},
{
title: '购买数量',
dataIndex: 'quantity',
align: 'center',
width: 100,
render: (_value, record) => {
return record.detail.quantity
}
},
{
title: '单价',
dataIndex: 'detail.unitPrice',
dataIndex: 'unitPrice',
align: 'center',
width: 100,
render: (_value, record) => {
return (record.detail.unitPrice / 100).toFixed(2)
render: (value) => {
return (value / 100).toFixed(2)
}
},
{
title: '订单备注',
dataIndex: 'detail.notes',
align: 'center',
width: 120,
// width: 120,
render: (_value, record) => {
return record.detail.notes
return <Tooltip placement="top" title={record.notes}>{record.notes}</Tooltip>
}
},
{
title: '描述',
dataIndex: 'detail.productDescription',
title: '商品描述',
dataIndex: 'productDescription',
align: 'center',
width: 200,
ellipsis: {
showTitle: false,
},
render: (_value, record) => {
return <Tooltip placement="top" title={record.detail.productDescription}>{record.detail.productDescription}</Tooltip>
return <Tooltip placement="top" title={record.productDescription}>{record.productDescription}</Tooltip>
}
},
}
]
// useEffect(() => {
// getData();
// }, []);
const handleSearch = (value: string) => {
// console.log(value);
setKewWords(value)
}
const handleChange = (e: any) => {
// console.log(e.target.value);
if (e.target.value == '') {
setKewWords('')
}
}
useEffect(() => {
getData();
}, [page]);
}, [page, keyWords]);
return (
<div>
{messageContext}
<div style={{
marginBottom: 10,
marginTop: 10
}}>
<Search placeholder="输入订单号查询订单"
// value={nowKeyword}
onSearch={handleSearch}
onChange={handleChange}
style={{
width: '300px',
}}
/>
</div>
<Spin tip="加载中..." spinning={isLoading}>
<Table columns={columns} dataSource={dataArray}
pagination={
@ -165,11 +324,43 @@ export default function MyOrder() {
onChange: (currentPage) => {
setPage(currentPage);
},
showSizeChanger:false
showSizeChanger: false
}
}
scroll={{ y: 500 }} bordered key="dataTable" rowKey="orderId" />;
scroll={{ y: 500 }} bordered key="dataTable" rowKey="orderId" />
</Spin>
<Modal
title="订单详情"
cancelText="取消"
destroyOnClose={true}
open={orderDetailsModal}
// onOk={() => {
// setOrderDetailsModal(false)
// }}
width={1300}
onCancel={() => {
setOrderDetailsModal(false)
}}
footer={null}
>
<Spin tip="加载中..." spinning={isLoading}>
<Table columns={detailColumns}
dataSource={detailData}
// pagination={
// {
// pageSize: 20,
// total: total,
// onChange: (currentPage) => {
// setPage(currentPage);
// },
// showSizeChanger: false
// }
// }
pagination={false}
// scroll={{ y: 500 }}
bordered key="dataTable" rowKey="orderId" />
</Spin>
</Modal>
</div>
)
}

View File

@ -16,7 +16,7 @@ import { useNavigate } from "react-router-dom";
interface DataType {
projName: string;
type: string; //类型
correctionType: string; //补正
correctionType: string; //补正
correctionReason: string;
gmtCreate: string; //补正时间
gmtReview: string;//审核时间
@ -60,14 +60,14 @@ export default function Correction() {
dataIndex: 'type',
key: 'type',
align: 'center',
render: (text) => <div >{text=='CORRECTION1'?'一次补正':text=='CORRECTION2'?'二次补正':''}</div>,
render: (text) => <div >{text == 'CORRECTION1' ? '一次补正' : text == 'CORRECTION2' ? '二次补正' : ''}</div>,
},
{
title: '补正',
title: '补正类',
dataIndex: 'correctionType',
key: 'correctionType',
align: 'center',
render: (text) => <div >{text=='CODE'?'代码':text=='MANUAL'?'操作手册':''}</div>,
render: (text) => <div >{text == 'CODE' ? '代码' : text == 'MANUAL' ? '操作手册' : ''}</div>,
},
{
title: '补正原因',
@ -139,14 +139,14 @@ export default function Correction() {
dataIndex: 'type',
key: 'type',
align: 'center',
render: (text) => <div >{text=='CORRECTION1'?'一次补正':text=='CORRECTION2'?'二次补正':''}</div>,
render: (text) => <div >{text == 'CORRECTION1' ? '一次补正' : text == 'CORRECTION2' ? '二次补正' : ''}</div>,
},
{
title: '补正',
title: '补正类',
dataIndex: 'correctionType',
key: 'correctionType',
align: 'center',
render: (text) => <div >{text=='CODE'?'代码':text=='MANUAL'?'操作手册':''}</div>,
render: (text) => <div >{text == 'CODE' ? '代码' : text == 'MANUAL' ? '操作手册' : ''}</div>,
},
{
title: '补正原因',
@ -199,105 +199,215 @@ export default function Correction() {
render: (_, record) => (
// {record.name}
<div className='refunBtn' onClick={() => {
// console.log(record.projRefundApplyId);
// console.log(record);
setRevokeModal(true)
setprojCorrectionApplyId(record.projCorrectionApplyId)
}}> </div>
),
},
] :
// 已通过 和未通过 状态
[
{
title: '序号',
dataIndex: 'index',
align: 'center',
width: 80,
render: (_text, _record, index) => (page - 1) * 10 + index + 1, // 显示序号从1开始
},
{
title: '系统名称',
dataIndex: 'projName',
align: 'center',
key: 'projName',
render: (text) => <div className='ellipsis-text' title={text}>{text}</div>,
},
]
// 未通过 状态
: type == 'REJECTED' ?
[
{
title: '序号',
dataIndex: 'index',
align: 'center',
width: 80,
render: (_text, _record, index) => (page - 1) * 10 + index + 1, // 显示序号从1开始
},
{
title: '系统名称',
dataIndex: 'projName',
align: 'center',
key: 'projName',
render: (text) => <div className='ellipsis-text' title={text}>{text}</div>,
},
{
title: '类型',
dataIndex: 'type',
key: 'type',
align: 'center',
render: (text) => <div >{text=='CORRECTION1'?'一次补正':text=='CORRECTION2'?'二次补正':''}</div>,
},
{
title: '补正',
dataIndex: 'correctionType',
key: 'correctionType',
align: 'center',
render: (text) => <div >{text=='CODE'?'代码':text=='MANUAL'?'操作手册':''}</div>,
},
{
title: '补正原因',
dataIndex: 'correctionReason',
key: 'correctionReason',
align: 'center',
render: (text) => <div className='ellipsis-text' title={text}>{text}</div>,
},
{
title: '申请补正时间',
dataIndex: 'gmtCreate',
key: 'gmtCreate',
align: 'center',
width: 200,
},
{
title: '审核时间',
dataIndex: 'gmtReview',
key: 'gmtReview',
align: 'center',
width: 200,
},
{
title: '审核状态',
dataIndex: 'applyStatus',
key: 'applyStatus',
align: 'center',
width: 100,
render: (text) => <Tag
color={text == "APPROVED" ? '#87d068' : text == "REJECTED" ? '#f50' : text == "PENDING" ? '#2db7f5' : text == "CANCELED" ? '#108ee9' : ''}
>{text == "APPROVED" ? '已通过' : text == "REJECTED" ? '未通过' : text == "PENDING" ? '待审核' : text == "CANCELED" ? '已取消' : '未知'}</Tag>,
},
{
title: '审核意见',
dataIndex: 'reviewReason',
key: 'reviewReason',
align: 'center',
// width: 150,
render: (text) => <div className='ellipsis-text' title={text}>{text ? text : '—'}</div>,
},
{
title: '补正凭证',
dataIndex: 'correctionVoucherFileKVs',
key: 'correctionVoucherFileKVs',
// width: 100,
align: 'center',
render: (_, record) => (
(record.correctionVoucherFileKVs).map((item: any, index: number) => (
{
title: '类型',
dataIndex: 'type',
key: 'type',
align: 'center',
render: (text) => <div >{text == 'CORRECTION1' ? '一次补正' : text == 'CORRECTION2' ? '二次补正' : ''}</div>,
},
{
title: '补正类',
dataIndex: 'correctionType',
key: 'correctionType',
align: 'center',
render: (text) => <div >{text == 'CODE' ? '代码' : text == 'MANUAL' ? '操作手册' : ''}</div>,
},
{
title: '补正原因',
dataIndex: 'correctionReason',
key: 'correctionReason',
align: 'center',
render: (text) => <div className='ellipsis-text' title={text}>{text}</div>,
},
{
title: '申请补正时间',
dataIndex: 'gmtCreate',
key: 'gmtCreate',
align: 'center',
width: 200,
},
{
title: '审核时间',
dataIndex: 'gmtReview',
key: 'gmtReview',
align: 'center',
width: 200,
},
{
title: '审核状态',
dataIndex: 'applyStatus',
key: 'applyStatus',
align: 'center',
width: 100,
render: (text) => <Tag
color={text == "APPROVED" ? '#87d068' : text == "REJECTED" ? '#f50' : text == "PENDING" ? '#2db7f5' : text == "CANCELED" ? '#108ee9' : ''}
>{text == "APPROVED" ? '已通过' : text == "REJECTED" ? '未通过' : text == "PENDING" ? '待审核' : text == "CANCELED" ? '已取消' : '未知'}</Tag>,
},
{
title: '审核意见',
dataIndex: 'reviewReason',
key: 'reviewReason',
align: 'center',
// width: 150,
render: (text) => <div className='ellipsis-text' title={text}>{text ? text : '—'}</div>,
},
{
title: '补正凭证',
dataIndex: 'correctionVoucherFileKVs',
key: 'correctionVoucherFileKVs',
// width: 100,
align: 'center',
render: (_, record) => (
(record.correctionVoucherFileKVs).map((item: any, index: number) => (
<div style={{ cursor: 'pointer', color: 'var(--color-blue)' }}
className='ellipsis-text' title={item.value}
key={index} onClick={() => {
window.open(downloadUrl(item.key, false), '_blank')
}}>{item.value}</div>
<div style={{ cursor: 'pointer', color: 'var(--color-blue)' }}
className='ellipsis-text' title={item.value}
key={index} onClick={() => {
window.open(downloadUrl(item.key, false), '_blank')
}}>{item.value}</div>
))
))
),
},
];
),
},
]
//已通过状态
: type == 'APPROVED' ?
[
{
title: '序号',
dataIndex: 'index',
align: 'center',
width: 80,
render: (_text, _record, index) => (page - 1) * 10 + index + 1, // 显示序号从1开始
},
{
title: '系统名称',
dataIndex: 'projName',
align: 'center',
key: 'projName',
render: (text) => <div className='ellipsis-text' title={text}>{text}</div>,
},
{
title: '类型',
dataIndex: 'type',
key: 'type',
align: 'center',
render: (text) => <div >{text == 'CORRECTION1' ? '一次补正' : text == 'CORRECTION2' ? '二次补正' : ''}</div>,
},
{
title: '补正种类',
dataIndex: 'correctionType',
key: 'correctionType',
align: 'center',
render: (text) => <div >{text == 'CODE' ? '代码' : text == 'MANUAL' ? '操作手册' : ''}</div>,
},
{
title: '补正原因',
dataIndex: 'correctionReason',
key: 'correctionReason',
align: 'center',
render: (text) => <div className='ellipsis-text' title={text}>{text}</div>,
},
{
title: '申请补正时间',
dataIndex: 'gmtCreate',
key: 'gmtCreate',
align: 'center',
width: 200,
},
{
title: '审核时间',
dataIndex: 'gmtReview',
key: 'gmtReview',
align: 'center',
width: 200,
},
{
title: '审核状态',
dataIndex: 'applyStatus',
key: 'applyStatus',
align: 'center',
width: 100,
render: (text) => <Tag
color={text == "APPROVED" ? '#87d068' : text == "REJECTED" ? '#f50' : text == "PENDING" ? '#2db7f5' : text == "CANCELED" ? '#108ee9' : ''}
>{text == "APPROVED" ? '已通过' : text == "REJECTED" ? '未通过' : text == "PENDING" ? '待审核' : text == "CANCELED" ? '已取消' : '未知'}</Tag>,
},
{
title: '审核意见',
dataIndex: 'reviewReason',
key: 'reviewReason',
align: 'center',
// width: 150,
render: (text) => <div className='ellipsis-text' title={text}>{text ? text : '—'}</div>,
},
{
title: '补正凭证',
dataIndex: 'correctionVoucherFileKVs',
key: 'correctionVoucherFileKVs',
// width: 100,
align: 'center',
render: (_, record) => (
(record.correctionVoucherFileKVs).map((item: any, index: number) => (
<div style={{ cursor: 'pointer', color: 'var(--color-blue)' }}
className='ellipsis-text' title={item.value}
key={index} onClick={() => {
window.open(downloadUrl(item.key, false), '_blank')
}}>{item.value}</div>
))
),
},
{
title: '操作',
align: 'center',
width: 100,
render: (_, record) => (
// {record.name}
<div className='refunBtn' onClick={() => {
// console.log(record);
// setRevokeModal(true)
// setprojCorrectionApplyId(record.projCorrectionApplyId)
nav(`/proj-edit/${record.projId}`);
}}> </div>
),
}
] : []
const dispath = useDispatch()
const redxuState: any = useSelector(state => state)
@ -428,7 +538,7 @@ export default function Correction() {
}
scroll={{ y: height - 150 }}
rowKey="projId"
rowKey="projCorrectionApplyId"
/>
</Spin>
<div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: 15, width: '100%' }}>

View File

@ -12,7 +12,7 @@ import { getMenuActive } from '../../util/cache'
import { useNavigate } from "react-router-dom";
interface DataType {
projName: string;
projPayment: string;
projPayment: number;
refundReason: string;
gmtCreate: string;
refundVoucherFileKVs: any;
@ -61,7 +61,8 @@ export default function Refun() {
key: 'projPayment',
align: 'center',
width: 150,
render: (text) => <div style={{ color: 'red', fontWeight: 700 }}>{text / 100}</div>,
render: (text) => <div style={{ color: 'red', fontWeight: 700 }}>{(text / 100).toFixed(2)}</div>
},
{
title: '退款原因',
@ -134,7 +135,7 @@ export default function Refun() {
key: 'projPayment',
align: 'center',
width: 150,
render: (text) => <div style={{ color: 'red', fontWeight: 700 }}>{text / 100}</div>,
render: (text) => <div style={{ color: 'red', fontWeight: 700 }}>{(text / 100).toFixed(2)}</div>,
},
{
title: '退款原因',
@ -222,7 +223,7 @@ export default function Refun() {
key: 'projPayment',
align: 'center',
width: 150,
render: (text) => <div style={{ color: 'red', fontWeight: 700 }}>{text / 100}</div>,
render: (text) => <div style={{ color: 'red', fontWeight: 700 }}>{(text / 100).toFixed(2)}</div>,
},
{
title: '退款原因',
@ -410,7 +411,7 @@ export default function Refun() {
}
scroll={{ y: height - 150 }}
rowKey="projId"
rowKey="projRefundApplyId"
/>
</Spin>
<div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: 15, width: '100%' }}>

View File

@ -46,6 +46,8 @@ type ProjModType = {
}
export default function ProjEdit() {
// 项目状态
const [projStatus, setprojStatus] = useState('')
const dispath = useDispatch()
// 更新所属者表格储存至redux
const upBelongArray = () => {
@ -340,7 +342,7 @@ export default function ProjEdit() {
projMods: data.projMods
})
setprojStatus(data.projStatus)
// setAiHelperModalOpen(!data.projIntroduction || !data.projDesc)
}
@ -483,7 +485,7 @@ export default function ProjEdit() {
})
}
{
isEditStepEdited && isConfigEdited ? (
isEditStepEdited && isConfigEdited && projStatus != 'EXPIRED'? (
<CardProjJump title="预览系统"
desc="点击查看预览系统"
canBtnClick={true}

View File

@ -54,6 +54,8 @@ import ING from '../../static/status/ING.gif'
// }
// type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
export default function ProjEditAll() {
// 项目状态
const [projStatus, setprojStatus] = useState('')
// 进度提示弹窗
const [progressModal, setprogressModal] = useState(true)
// 当前进度
@ -393,7 +395,7 @@ export default function ProjEditAll() {
// projMods: data.projMods
// })
// setAiHelperModalOpen(!data.projIntroduction || !data.projDesc)
setprojStatus(data.projStatus)
}
})
@ -469,7 +471,7 @@ export default function ProjEditAll() {
})
}
{
isEditStepEdited && isConfigEdited ? (
isEditStepEdited && isConfigEdited && projStatus != 'EXPIRED' ? (
<CardProjJump title="预览系统"
desc="点击查看预览系统"
canBtnClick={true}
@ -1111,25 +1113,25 @@ export default function ProjEditAll() {
alignItems: 'center',
justifyContent: 'center',
height: `${height}px`,
}}
footer={null}
footer={null}
onCancel={() => {
setprogressModal(false);
}}>
<div style={{
width: 600,
// marginTop: 20
fontSize:18,
height:500,
display:'flex',
alignItems:'center',
justifyContent:'center',
flexDirection:'column'
fontSize: 18,
height: 500,
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
flexDirection: 'column'
}}>
<img src={progress=='PRODUCTION'?PRODUCTION:progress=='SUBMIT_FOR_REVIEW'? SUBMIT:progress=='DONE'? DONE:ING} alt="" width={300}/>
<div style={{marginTop:10}}>{progress=='PRODUCTION'?'您申请的软著正在制作中,预计一日内完成':progress=='SUBMIT_FOR_REVIEW'? '您申请的软著已提交国家版权中心,预计60个工作日内下证':progress=='DONE'? '您申请的软著已完成,请在页面证书下载处下载':'您申请的软著等待制作中,预计两日内完成'}</div>
<img src={progress == 'PRODUCTION' ? PRODUCTION : progress == 'SUBMIT_FOR_REVIEW' ? SUBMIT : progress == 'DONE' ? DONE : ING} alt="" width={300} />
<div style={{ marginTop: 10 }}>{progress == 'PRODUCTION' ? '您申请的软著正在制作中,预计一日内完成' : progress == 'SUBMIT_FOR_REVIEW' ? '您申请的软著已提交国家版权中心,预计60个工作日内下证' : progress == 'DONE' ? '您申请的软著已完成,请在页面证书下载处下载' : '您申请的软著等待制作中,预计两日内完成'}</div>
</div>
</Modal>
</div>

View File

@ -40,6 +40,8 @@ type ProjModType = {
}
export default function ProjEdit() {
// 项目状态
const [projStatus, setprojStatus] = useState('')
const dispath = useDispatch()
// 更新所属者表格储存至redux
const upBelongArray = () => {
@ -163,7 +165,7 @@ export default function ProjEdit() {
// console.log('模块信息', data);
const allSuccess = data.every(item => item.aiFieldStatus === 'SUCCESS');
// console.log('检测项目',allSuccess);
if (data.length > 0 && allSuccess) {
setAiHelperModalOpen(false);
} else {
@ -393,7 +395,7 @@ export default function ProjEdit() {
onSuccess({ data }) {
// const isEdited = data.editSteps[0].editStatus == EditStepEnum.EDITED
// && data.editSteps[5].editStatus == EditStepEnum.EDITED;
// console.log('嘻嘻', data.projModCount);
// console.log('查看项目', data);
// if(data.projModCount >= 3){
// setCanGenerate(true)
// }
@ -416,6 +418,7 @@ export default function ProjEdit() {
projMods: data.projMods
})
// getListMods()
setprojStatus(data.projStatus)
}
})
}
@ -499,7 +502,7 @@ export default function ProjEdit() {
})
}
{
isEditStepEdited && isConfigEdited ? (
isEditStepEdited && isConfigEdited && projStatus != 'EXPIRED' ? (
<CardProjJump title="预览系统"
desc="点击查看预览系统"
canBtnClick={true}