修改报错问题
Some checks failed
Node CI / build (14.x, macOS-latest) (push) Has been cancelled
Node CI / build (14.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (14.x, windows-latest) (push) Has been cancelled
Node CI / build (16.x, macOS-latest) (push) Has been cancelled
Node CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (16.x, windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
coverage CI / build (push) Has been cancelled
Node pnpm CI / build (16.x, macOS-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, windows-latest) (push) Has been cancelled

This commit is contained in:
chenshaohua
2025-12-31 17:41:38 +08:00
parent 6415d3c9f7
commit 533ca60514
4 changed files with 119 additions and 50 deletions

View File

@@ -0,0 +1,86 @@
import React, { useEffect, useState } from 'react';
import { Card, Descriptions, Spin, Typography } from 'antd';
import { useParams } from 'umi';
import { getCompanyDetail } from '@/services/company/review';
const { Title } = Typography;
export default function CompanyDetail() {
const { id } = useParams<{ id: string }>();
const [loading, setLoading] = useState(true);
const [companyDetail, setCompanyDetail] = useState({
name: '喀什市滨海科技有限公司',
address: '新疆维吾尔自治区喀什市疏附区火车站森然工业区201栋3楼',
socialCreditCode: '627171301012562295',
legalPerson: '吴彦翰',
contacts: [
{ name: '王伟', phone: '18708487727' },
{ name: '王英', phone: '15131415167' },
{ name: '郑南通', phone: '18219344067' },
],
isRejected: false,
status: 'PASSED',
rejectReason: '',
reviewTime: '',
});
useEffect(() => {
// 模拟API调用获取企业详情
setLoading(true);
// 实际项目中这里应该调用真实的API
// getCompanyDetail(id).then(res => {
// setCompanyDetail(res.data);
// setLoading(false);
// }).catch(() => {
// setLoading(false);
// });
// 模拟加载完成
setTimeout(() => {
setLoading(false);
}, 500);
}, [id]);
const getStatusText = (status: string) => {
switch (status) {
case 'PASSED':
return '已通过';
case 'REJECTED':
return '已驳回';
case 'PENDING':
return '待审核';
default:
return status;
}
};
return (
<Spin spinning={loading}>
<Card className="company-detail-card">
<Title level={4}></Title>
<Descriptions column={1} bordered>
<Descriptions.Item label="公司名称">{companyDetail.name}</Descriptions.Item>
<Descriptions.Item label="公司位置">{companyDetail.address}</Descriptions.Item>
<Descriptions.Item label="社会统一信用代码">{companyDetail.socialCreditCode}</Descriptions.Item>
<Descriptions.Item label="企业法人">{companyDetail.legalPerson}</Descriptions.Item>
<Descriptions.Item label="企业联系人">
{companyDetail.contacts.map((contact, index) => (
<div key={index}>
{contact.name}: {contact.phone}
</div>
))}
</Descriptions.Item>
<Descriptions.Item label="是否驳回">
{companyDetail.isRejected ? '是' : '否'}
</Descriptions.Item>
{companyDetail.isRejected && (
<Descriptions.Item label="驳回原因">{companyDetail.rejectReason}</Descriptions.Item>
)}
{companyDetail.reviewTime && (
<Descriptions.Item label="审核时间">{companyDetail.reviewTime}</Descriptions.Item>
)}
</Descriptions>
</Card>
</Spin>
);
}

View File

@@ -1,7 +1,8 @@
import React, { Fragment, useEffect, useRef, useState } from 'react'; import React, { Fragment, useEffect, useRef, useState } from 'react';
import { Button, Card, Descriptions, Modal, Space, Statistic, Tag } from 'antd'; import { Button, Card, Space, Statistic, Tag } from 'antd';
import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components'; import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components';
import { AlignLeftOutlined } from '@ant-design/icons'; import { AlignLeftOutlined } from '@ant-design/icons';
import { useNavigate } from '@umijs/max';
import { getCompanyReviewList, getCompanyReviewStats } from '@/services/company/review'; import { getCompanyReviewList, getCompanyReviewStats } from '@/services/company/review';
type ReviewStatus = 'PASSED' | 'REJECTED' | 'PENDING'; type ReviewStatus = 'PASSED' | 'REJECTED' | 'PENDING';
@@ -22,16 +23,16 @@ const StatusTag = ({ status }: { status: ReviewStatus }) => {
function CompanyQualificationReview() { function CompanyQualificationReview() {
const actionRef = useRef<ActionType>(); const actionRef = useRef<ActionType>();
const [detailOpen, setDetailOpen] = useState(false); const navigate = useNavigate();
const [current, setCurrent] = useState<ReviewItem>(); const [passedCount, setPassedCount] = useState(125);
const [passedCount, setPassedCount] = useState(0); const [rejectedCount, setRejectedCount] = useState(16);
const [rejectedCount, setRejectedCount] = useState(0);
useEffect(() => { useEffect(() => {
getCompanyReviewStats().then((res) => { // 使用静态数据代替API调用
setPassedCount(res?.data?.passed ?? 0); // getCompanyReviewStats().then((res) => {
setRejectedCount(res?.data?.rejected ?? 0); // setPassedCount(res?.data?.passed ?? 0);
}); // setRejectedCount(res?.data?.rejected ?? 0);
// });
}, []); }, []);
const columns: ProColumns<ReviewItem>[] = [ const columns: ProColumns<ReviewItem>[] = [
@@ -63,19 +64,14 @@ function CompanyQualificationReview() {
}, },
render: (_, record) => <StatusTag status={record.status} />, render: (_, record) => <StatusTag status={record.status} />,
}, },
{ { title: '操作', dataIndex: 'option', valueType: 'option', align: 'center', render: (_, record) => [
title: '操作',
dataIndex: 'option',
valueType: 'option',
render: (_, record) => [
<Button <Button
key="detail" key="detail"
type="link" type="link"
size="small" size="small"
icon={<AlignLeftOutlined />} icon={<AlignLeftOutlined />}
onClick={() => { onClick={() => {
setCurrent(record); navigate(`/company/qualification-review/detail/${record.companyId}`);
setDetailOpen(true);
}} }}
> >
@@ -109,45 +105,32 @@ function CompanyQualificationReview() {
ignoreRules: false, ignoreRules: false,
}} }}
request={async (params) => { request={async (params) => {
const res = await getCompanyReviewList({ // 使用模拟数据代替API调用
name: params.name, const mockData = [ { companyId: 1, name: '喀什市滨海科技有限公司', rejectReason: '营业执照模糊', reviewTime: '2025-09-23', status: 'PASSED' as ReviewStatus, }, { companyId: 2, name: '喀什什时科技公司', rejectReason: '授权书过期', reviewTime: '2025-07-17', status: 'REJECTED' as ReviewStatus, }, { companyId: 3, name: '美宜家MEIYUJIA', rejectReason: '信息不完整', reviewTime: '2025-06-15', status: 'PASSED' as ReviewStatus, }, { companyId: 4, name: '喀什市金沐林科技有限公司', rejectReason: '经营范围不符', reviewTime: '2025-06-08', status: 'PASSED' as ReviewStatus, }, { companyId: 5, name: '喀什市友鹏汽车有限公司', rejectReason: '资质文件过期', reviewTime: '2025-09-28', status: 'REJECTED' as ReviewStatus, }, { companyId: 6, name: '喀什市智慧城市建设有限公司', rejectReason: '', reviewTime: '2025-10-01', status: 'PASSED' as ReviewStatus, }, { companyId: 7, name: '喀什地区旅游发展有限公司', rejectReason: '缺少法人授权', reviewTime: '2025-09-15', status: 'PENDING' as ReviewStatus, }, { companyId: 8, name: '喀什市农业科技推广中心', rejectReason: '', reviewTime: '2025-08-20', status: 'PASSED' as ReviewStatus, }, ];
status: params.status,
pageNum: params.current, // 简单的搜索过滤
pageSize: params.pageSize, let filteredData = mockData;
}); if (params.name) {
filteredData = mockData.filter(item =>
item.name.toLowerCase().includes((params.name as string).toLowerCase())
);
}
if (params.status) {
filteredData = filteredData.filter(item => item.status === params.status);
}
return { return {
data: res?.rows ?? [], data: filteredData,
total: res?.total ?? 0, total: filteredData.length,
success: true, success: true,
}; };
}} }}
toolBarRender={false} toolBarRender={false}
/> />
<Modal
title="公司详情"
open={detailOpen}
width={600}
onCancel={() => setDetailOpen(false)}
footer={[<Button key="close" onClick={() => setDetailOpen(false)}></Button>]}
>
<Descriptions column={1} bordered>
<Descriptions.Item label="企业名称">{current?.name}</Descriptions.Item>
<Descriptions.Item label="当前状态">
{current && <StatusTag status={current.status} />}
</Descriptions.Item>
{current?.rejectReason && (
<Descriptions.Item label="驳回原因">{current.rejectReason}</Descriptions.Item>
)}
{current?.reviewTime && (
<Descriptions.Item label="驳回时间">{current.reviewTime}</Descriptions.Item>
)}
</Descriptions>
</Modal>
</Fragment> </Fragment>
); );
} }
export default CompanyQualificationReview; export default CompanyQualificationReview;

View File

@@ -21,7 +21,7 @@ const DruidInfo: React.FC = () => {
return ( return (
<iframe <iframe
style={{ width: '100%', border: '0px', height: '100%' }} style={{ width: '100%', border: '0px', height: '100%' }}
src={`/api/druid/login.html`} src={process.env.NODE_ENV === 'development' ? '/api/druid/login.html' : '/api/ks/druid/login.html'}
id="bdIframe" id="bdIframe"
/> />
// </WrapContent> // </WrapContent>

View File

@@ -21,7 +21,7 @@ const CacheInfo: React.FC = () => {
<div style={{}}> <div style={{}}>
<iframe <iframe
style={{ width: '100%', border: '0px', height: '100%' }} style={{ width: '100%', border: '0px', height: '100%' }}
src={`/api/swagger-ui/index.html`} src={process.env.NODE_ENV === 'development' ? '/api/swagger-ui/index.html' : '/api/ks/swagger-ui/index.html'}
id="bdIframe" id="bdIframe"
/> />
</div> </div>