添加供应商点击弹框

This commit is contained in:
linxd
2025-07-16 09:26:08 +08:00
parent b8f9763f4a
commit aebb615fb6
16 changed files with 277 additions and 86 deletions

View File

@ -19,11 +19,13 @@ import {
ExamineResultColor,
} from '@/dicts/supplierAnnualReviewDict';
import styles from './supplierAnnualResult.less';
import { useSupplierDetailModal } from '@/components/SupplierDetailModalContext/SupplierDetailModalContext';
const { Title } = Typography;
const SupplierAnnualResultDetail: React.FC = () => {
const intl = useIntl();
const supplierDetailModal = useSupplierDetailModal();
const [loading, setLoading] = useState<boolean>(false);
const [reviewDetail, setReviewDetail] = useState<supplierAnnualResult.ReviewDetailData | null>(null);
const [scoreResults, setScoreResults] = useState<supplierAnnualResult.TaskIndicatorVo[]>([]);
@ -133,7 +135,7 @@ const SupplierAnnualResultDetail: React.FC = () => {
<Card title={intl.formatMessage({ id: 'supplierAnnualResult.detail.basicInfo' })} bordered={false} className={styles['detail-card']}>
<Descriptions column={2} bordered>
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualResult.detail.supplierName' })}>
{supplierName || reviewDetail.name}
<Button type="link" onClick={() => supplierDetailModal?.(reviewDetail.supplierId)}>{supplierName || reviewDetail.name}</Button>
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualResult.detail.annualTheme' })}>
{annualTheme}

View File

@ -15,6 +15,7 @@ import {
import { ArrowLeftOutlined, SearchOutlined, DeleteOutlined } from '@ant-design/icons';
import { getAnnualResultSupplierList } from '@/servers/api/supplierAnnual';
import styles from './supplierAnnualResult.less';
import { useSupplierDetailModal } from '@/components/SupplierDetailModalContext/SupplierDetailModalContext';
const { Title } = Typography;
const { Option } = Select;
@ -28,6 +29,7 @@ const resultOptions = [
const SupplierAnnualResultQuery: React.FC = () => {
const intl = useIntl();
const supplierDetailModal = useSupplierDetailModal();
const [form] = Form.useForm();
const [loading, setLoading] = useState<boolean>(false);
const [data, setData] = useState<supplierAnnualResult.SupplierRecord[]>([]);
@ -162,6 +164,9 @@ const SupplierAnnualResultQuery: React.FC = () => {
title: intl.formatMessage({ id: 'supplierAnnualResult.supplier.supplierName' }),
dataIndex: 'name',
key: 'name',
render: (text: string, record: supplierAnnualResult.SupplierRecord) => (
<Button type="link" onClick={() => supplierDetailModal?.(record.supplierId)}>{text}</Button>
),
},
{
title: intl.formatMessage({ id: 'supplierAnnualResult.supplier.category' }),

View File

@ -20,6 +20,7 @@ import {
AnnualReviewStatusText,
AnnualReviewStatusColor
} from '@/dicts/supplierAnnualReviewDict';
import { useSupplierDetailModal } from '@/components/SupplierDetailModalContext/SupplierDetailModalContext';
const { Title } = Typography;
const { Option } = Select;
@ -33,6 +34,7 @@ const resultOptions = [
const SupplierAnnualResultQuery2: React.FC = () => {
const intl = useIntl();
const supplierDetailModal = useSupplierDetailModal();
const [form] = Form.useForm();
const [loading, setLoading] = useState<boolean>(false);
const [data, setData] = useState<supplierAnnualResult.ReviewRecord[]>([]);
@ -66,6 +68,7 @@ const SupplierAnnualResultQuery2: React.FC = () => {
pageNo: pagination.current,
pageSize: pagination.pageSize,
},
userId: '',
annualreviewTaskId,
...searchParams,
});
@ -182,6 +185,9 @@ const SupplierAnnualResultQuery2: React.FC = () => {
title: intl.formatMessage({ id: 'supplierAnnualResult.review.supplierName' }),
dataIndex: 'name',
key: 'name',
render: (text: string, record: supplierAnnualResult.ReviewRecord) => (
<Button type="link" onClick={() => supplierDetailModal?.(record.supplierId)}>{text}</Button>
),
},
{
title: intl.formatMessage({ id: 'supplierAnnualResult.review.category' }),

View File

@ -26,6 +26,7 @@ import {
} from '@/dicts/supplierAnnualReviewDict';
import { getDictList } from '@/servers/api/dicts';
import type { DictItem } from '@/servers/api/dicts';
import { useSupplierDetailModal } from '@/components/SupplierDetailModalContext/SupplierDetailModalContext';
const { Option } = Select;
const { RangePicker } = DatePicker;
@ -40,6 +41,7 @@ interface AnnualReviewSearchParams {
const SupplierAnnualReview: React.FC = () => {
const intl = useIntl();
const supplierDetailModal = useSupplierDetailModal();
const [loading, setLoading] = useState<boolean>(false);
const [form] = Form.useForm();
const [reviewStatus, setReviewStatus] = useState<DictItem[]>([]);
@ -181,9 +183,9 @@ const SupplierAnnualReview: React.FC = () => {
ellipsis: {
showTitle: false,
},
render: (text: string) => (
render: (text: string, record: supplierAnnualReview.ReviewRecord) => (
<Tooltip placement="topLeft" title={text}>
{text}
<Button type="link" onClick={() => supplierDetailModal?.(record.supplierId)}>{text}</Button>
</Tooltip>
),
},

View File

@ -26,6 +26,7 @@ import {
ExamineResultText,
} from '@/dicts/supplierAnnualReviewDict';
import styles from './supplierAnnualReview.less';
import { useSupplierDetailModal } from '@/components/SupplierDetailModalContext/SupplierDetailModalContext';
const { Title } = Typography;
const { TextArea } = Input;
@ -41,6 +42,7 @@ interface ScoreFormItem {
const SupplierAnnualReviewScore: React.FC = () => {
const intl = useIntl();
const supplierDetailModal = useSupplierDetailModal();
const [form] = Form.useForm();
const [loading, setLoading] = useState<boolean>(false);
const [submitting, setSubmitting] = useState<boolean>(false);
@ -186,7 +188,9 @@ const SupplierAnnualReviewScore: React.FC = () => {
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.reviewTheme' })}>
{reviewDetail.annualreviewTheme}
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.supplierName' })}>{reviewDetail.name}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.supplierName' })}>
<Button type="link" onClick={() => supplierDetailModal?.(reviewDetail.supplierId)}>{reviewDetail.name}</Button>
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.department' })}>
{reviewDetail.deptName || '-'}
</Descriptions.Item>

View File

@ -23,6 +23,7 @@ import {
ExamineResultColor,
} from '@/dicts/supplierAnnualReviewDict';
import styles from './supplierAnnualReview.less';
import { useSupplierDetailModal } from '@/components/SupplierDetailModalContext/SupplierDetailModalContext';
const { Title } = Typography;
@ -36,6 +37,7 @@ interface ScoreResult {
const SupplierAnnualReviewDetail: React.FC = () => {
const intl = useIntl();
const supplierDetailModal = useSupplierDetailModal();
const [loading, setLoading] = useState<boolean>(false);
const [reviewDetail, setReviewDetail] = useState<supplierAnnualReview.ReviewRecord | null>(null);
const [scoreResults, setScoreResults] = useState<ScoreResult[]>([]);
@ -151,7 +153,7 @@ const SupplierAnnualReviewDetail: React.FC = () => {
{reviewDetail.annualreviewTheme}
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.supplierName' })}>
{reviewDetail.name}
<Button type="link" onClick={() => supplierDetailModal?.(reviewDetail.supplierId)}>{reviewDetail.name}</Button>
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualReview.list.department' })}>
{reviewDetail.deptName || '-'}

View File

@ -2,6 +2,7 @@ import React from 'react';
import { Card, Table, Button, message } from 'antd';
import { useIntl, FormattedMessage } from 'umi';
import styles from '../../supplierAnnualTaskManageDetail.less';
import { useSupplierDetailModal } from '@/components/SupplierDetailModalContext/SupplierDetailModalContext';
interface SupplierInfoProps {
taskData: supplierAnnualTaskManage.TaskDetailData;
@ -10,7 +11,7 @@ interface SupplierInfoProps {
const SupplierInfo: React.FC<SupplierInfoProps> = ({ taskData, onViewEvaluators }) => {
const intl = useIntl();
const supplierDetailModal = useSupplierDetailModal();
// 查看供应商评价人员
const handleViewSupplierEvaluators = (record: supplierAnnualTaskManage.TaskDetailData) => {
if (record.userList && record.userList.length > 0) {
@ -35,6 +36,9 @@ const SupplierInfo: React.FC<SupplierInfoProps> = ({ taskData, onViewEvaluators
title: <FormattedMessage id="supplierAnnualTaskManage.supplierInfo.supplierName" />,
dataIndex: 'supplierName',
key: 'supplierName',
render: (text: string, record: any) => (
<Button type="link" onClick={() => supplierDetailModal?.(record.supplierId)}>{text}</Button>
),
},
{
title: <FormattedMessage id="supplierAnnualTaskManage.supplierInfo.dept" />,