table 上部门添加单位 ,单位添加部门

This commit is contained in:
linxd
2025-08-11 13:33:35 +08:00
parent 88ca4969b4
commit 516a4efd8d
9 changed files with 496 additions and 258 deletions

View File

@ -225,7 +225,6 @@ const SupplierEvaluateResult: React.FC = () => {
title: intl.formatMessage({ id: 'supplierEvaluateResult.column.categoryName' }),
dataIndex: 'categoryName',
key: 'categoryName',
width: 120,
ellipsis: {
showTitle: false,
},
@ -240,6 +239,20 @@ const SupplierEvaluateResult: React.FC = () => {
},
{
title: intl.formatMessage({ id: 'supplierEvaluateResult.column.deptName' }),
dataIndex: 'orgName',
key: 'orgName',
width: 180,
ellipsis: {
showTitle: false,
},
render: (text: string) => (
<Tooltip placement="topLeft" title={text}>
{text}
</Tooltip>
),
},
{
title: "发起部门",
dataIndex: 'deptName',
key: 'deptName',
width: 180,
@ -256,25 +269,21 @@ const SupplierEvaluateResult: React.FC = () => {
title: intl.formatMessage({ id: 'supplierEvaluateResult.column.startTime' }),
dataIndex: 'startTime',
key: 'startTime',
width: 120,
},
{
title: intl.formatMessage({ id: 'supplierEvaluateResult.column.endTime' }),
dataIndex: 'endTime',
key: 'endTime',
width: 120,
},
{
title: intl.formatMessage({ id: 'supplierEvaluateResult.column.statusName' }),
dataIndex: 'statusName',
key: 'statusName',
width: 100,
},
{
title: intl.formatMessage({ id: 'supplierEvaluateResult.column.approveName' }),
dataIndex: 'approveStatus',
key: 'approveStatus',
width: 100,
render: (text: string, record: any) => (
<div>{approveTypeList.find((item) => item.code === text)?.dicName || '-'}</div>
),
@ -282,7 +291,8 @@ const SupplierEvaluateResult: React.FC = () => {
{
title: intl.formatMessage({ id: 'supplierEvaluateResult.column.action' }),
key: 'action',
width: 100,
width: 150,
fixed: 'right',
align: 'center' as const,
render: (_: unknown, record: SupplierEvaluateResult.EvaluateTaskItem) => (
<Space>

View File

@ -232,6 +232,20 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
},
{
title: intl.formatMessage({ id: 'supplierEvaluateResult.column.deptName' }),
dataIndex: 'orgName',
key: 'orgName',
width: 150,
ellipsis: {
showTitle: false,
},
render: (text: string) => (
<Tooltip placement="topLeft" title={text}>
{text}
</Tooltip>
),
},
{
title: "发起部门",
dataIndex: 'deptName',
key: 'deptName',
width: 150,

View File

@ -16,13 +16,11 @@ import {
import { SearchOutlined, DeleteOutlined } from '@ant-design/icons';
import { history, useIntl } from 'umi';
import styles from './supplierEvaluateScore.less';
import {
getSupplierDimension,
getTaskPage,
} from '@/servers/api/supplierEvaluate';
import { getSupplierDimension, getTaskPage } from '@/servers/api/supplierEvaluate';
import { getDictList } from '@/servers/api/dicts';
import type { DictItem } from '@/servers/api/dicts';
import { useSupplierDetailModal } from '@/components/SupplierDetailModalContext/SupplierDetailModalContext';
import e from 'express';
const { Title } = Typography;
const { TabPane } = Tabs;
@ -36,7 +34,7 @@ const SupplierEvaluateScore: React.FC = () => {
// 新增状态
const [activeTab, setActiveTab] = useState<string>('supplier');
const [supplierTableData, setSupplierTableData] = useState<
SupplierEvaluateScore.SupplierDimensionResponse[]
SupplierEvaluateScore.SupplierDimensionResponse[]
>([]);
const [taskTableData, setTaskTableData] = useState<SupplierEvaluateScore.TaskPageResponse[]>([]);
const [supplierTableLoading, setSupplierTableLoading] = useState<boolean>(false);
@ -47,7 +45,7 @@ const SupplierEvaluateScore: React.FC = () => {
total: 0,
});
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
/*
/*
name :关键字
startTime开始时间
endTime:结束时间
@ -80,7 +78,7 @@ status状态
pageNo: pagination.current,
pageSize: pagination.pageSize,
},
selectBy:"user",
selectBy: 'user',
evaluateTheme: values.name || undefined,
status: values.status || undefined,
};
@ -109,12 +107,17 @@ status状态
total: response.data.total || 0,
});
} else {
message.error(response.message || intl.formatMessage({ id: 'supplierEvaluateScore.message.getSupplierListFailed' }));
message.error(
response.message ||
intl.formatMessage({ id: 'supplierEvaluateScore.message.getSupplierListFailed' }),
);
setSupplierTableData([]);
}
} catch (error) {
console.error('获取供应商列表失败:', error);
message.error(intl.formatMessage({ id: 'supplierEvaluateScore.message.getSupplierListFailed' }));
message.error(
intl.formatMessage({ id: 'supplierEvaluateScore.message.getSupplierListFailed' }),
);
setSupplierTableData([]);
} finally {
setSupplierTableLoading(false);
@ -135,7 +138,10 @@ status状态
total: response.data.total || 0,
});
} else {
message.error(response.message || intl.formatMessage({ id: 'supplierEvaluateScore.message.getTaskListFailed' }));
message.error(
response.message ||
intl.formatMessage({ id: 'supplierEvaluateScore.message.getTaskListFailed' }),
);
setTaskTableData([]);
}
} catch (error) {
@ -225,7 +231,7 @@ status状态
state.record.evaluateTaskId = record.id;
history.push({
pathname: '/supplierEvaluate/supplierEvaluateResultInfo',
state: {record},
state: { record },
});
return;
}
@ -282,8 +288,29 @@ status状态
},
{
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.tenantName' }),
dataIndex: 'orgName',
key: 'orgName',
ellipsis: {
showTitle: false,
},
render: (text: string) => (
<Tooltip placement="topLeft" title={text}>
{text}
</Tooltip>
),
},
{
title: '发起部门',
dataIndex: 'deptName',
key: 'deptName',
ellipsis: {
showTitle: false,
},
render: (text: string) => (
<Tooltip placement="topLeft" title={text}>
{text}
</Tooltip>
),
},
{
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.startTime' }),
@ -309,6 +336,7 @@ status状态
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.submissionTime' }),
dataIndex: 'reviewTime',
key: 'reviewTime',
width: 200,
},
{
title: intl.formatMessage({ id: 'supplierEvaluateScore.column.action' }),
@ -318,11 +346,12 @@ status状态
<Button type="link" onClick={() => goToScoring(record, 'supplier', 'view')}>
{intl.formatMessage({ id: 'supplierEvaluateScore.button.view' })}
</Button>
{record.status === '1' && record.reviewStatus !== '1' && ( // 只有待评分状态才显示打分按钮
<Button type="link" onClick={() => goToScoring(record, 'supplier', 'score')}>
{intl.formatMessage({ id: 'supplierEvaluateScore.button.score' })}
</Button>
)}
{record.status === '1' &&
record.reviewStatus !== '1' && ( // 只有待评分状态才显示打分按钮
<Button type="link" onClick={() => goToScoring(record, 'supplier', 'score')}>
{intl.formatMessage({ id: 'supplierEvaluateScore.button.score' })}
</Button>
)}
</Space>
),
},
@ -384,23 +413,42 @@ status状态
<div className="filter-action-row">
<div className="filter-form">
<Form form={filterForm} layout="inline">
<Form.Item name="name" label={intl.formatMessage({ id: 'supplierEvaluateScore.form.keyword' })}>
<Form.Item
name="name"
label={intl.formatMessage({ id: 'supplierEvaluateScore.form.keyword' })}
>
<Input
placeholder={
activeTab === 'supplier'
? intl.formatMessage({ id: 'supplierEvaluateScore.form.placeholder.supplierName' })
: intl.formatMessage({ id: 'supplierEvaluateScore.form.placeholder.evaluateTheme' })
? intl.formatMessage({
id: 'supplierEvaluateScore.form.placeholder.supplierName',
})
: intl.formatMessage({
id: 'supplierEvaluateScore.form.placeholder.evaluateTheme',
})
}
allowClear
/>
</Form.Item>
<Form.Item name="evaluationTime" label={intl.formatMessage({ id: 'supplierEvaluateScore.form.evaluationTime' })}>
<Form.Item
name="evaluationTime"
label={intl.formatMessage({ id: 'supplierEvaluateScore.form.evaluationTime' })}
>
<RangePicker />
</Form.Item>
<Form.Item name="status" label={intl.formatMessage({ id: 'supplierEvaluateScore.form.status' })}>
<Select placeholder={intl.formatMessage({ id: 'supplierEvaluateScore.form.placeholder.select' })} style={{ width: 150 }} allowClear>
<Form.Item
name="status"
label={intl.formatMessage({ id: 'supplierEvaluateScore.form.status' })}
>
<Select
placeholder={intl.formatMessage({
id: 'supplierEvaluateScore.form.placeholder.select',
})}
style={{ width: 150 }}
allowClear
>
{evaluateStatus.map((item) => (
<Option key={item.code} value={item.code}>
{item.dicName}
@ -412,10 +460,12 @@ status状态
<Form.Item className="filter-btns">
<Space>
<Button type="primary" onClick={handleSearch}>
<SearchOutlined /> {intl.formatMessage({ id: 'supplierEvaluateScore.button.search' })}
<SearchOutlined />{' '}
{intl.formatMessage({ id: 'supplierEvaluateScore.button.search' })}
</Button>
<Button onClick={handleReset} type="primary" danger>
<DeleteOutlined /> {intl.formatMessage({ id: 'supplierEvaluateScore.button.reset' })}
<DeleteOutlined />{' '}
{intl.formatMessage({ id: 'supplierEvaluateScore.button.reset' })}
</Button>
</Space>
</Form.Item>
@ -439,7 +489,10 @@ status状态
<div className="content-area">
<Tabs activeKey={activeTab} onChange={handleTabChange}>
<TabPane tab={intl.formatMessage({ id: 'supplierEvaluateScore.tab.supplier' })} key="supplier">
<TabPane
tab={intl.formatMessage({ id: 'supplierEvaluateScore.tab.supplier' })}
key="supplier"
>
<Table
columns={supplierColumns}
dataSource={supplierTableData}
@ -451,10 +504,8 @@ status状态
total: pagination.total,
showSizeChanger: true,
showQuickJumper: true,
showTotal: (total) => intl.formatMessage(
{ id: 'supplierEvaluateScore.pagination.total' },
{ total }
),
showTotal: (total) =>
intl.formatMessage({ id: 'supplierEvaluateScore.pagination.total' }, { total }),
}}
onChange={handleTableChange}
/>
@ -471,10 +522,8 @@ status状态
total: pagination.total,
showSizeChanger: true,
showQuickJumper: true,
showTotal: (total) => intl.formatMessage(
{ id: 'supplierEvaluateScore.pagination.total' },
{ total }
),
showTotal: (total) =>
intl.formatMessage({ id: 'supplierEvaluateScore.pagination.total' }, { total }),
}}
onChange={handleTableChange}
/>

View File

@ -159,7 +159,27 @@ const SupplierTaskManage: React.FC = () => {
title: intl.formatMessage({ id: 'supplierTaskManage.column.tenantName' }),
dataIndex: 'tenantName',
key: 'tenantName',
width: 150,
ellipsis: {
showTitle: false,
},
render: (text: string) => (
<Tooltip placement="topLeft" title={text}>
{text}
</Tooltip>
),
},
{
title: '发起部门',
dataIndex: 'deptName',
key: 'deptName',
ellipsis: {
showTitle: false,
},
render: (text: string) => (
<Tooltip placement="topLeft" title={text}>
{text}
</Tooltip>
),
},
{
title: intl.formatMessage({ id: 'supplierTaskManage.column.startTime' }),
@ -267,7 +287,7 @@ const SupplierTaskManage: React.FC = () => {
</div>
</div>
<div >
<div>
<Table
columns={columns}
rowKey="id"

View File

@ -31,7 +31,6 @@ const SupplierTemplateManage: React.FC = () => {
});
const [searchParams, setSearchParams] = useState({});
// 获取模板列表
const fetchTemplateList = async (current = 1, pageSize = 10, params = searchParams) => {
// 更新搜索参数状态
@ -118,59 +117,77 @@ const SupplierTemplateManage: React.FC = () => {
const handleTableChange = (newPagination: TablePaginationConfig) => {
fetchTemplateList(newPagination.current, newPagination.pageSize, searchParams);
};
// 处理启用模板
const handleEnableTemplate = (id: string) => {
Modal.confirm({
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableConfirmTitle' }),
content: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableConfirmContent' }),
okText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.confirm' }),
cancelText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.cancel' }),
onOk: async () => {
try {
setLoading(true);
const res = await enableTemplate(id);
if (res.success) {
message.success(intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableSuccess' }));
fetchTemplateList(pagination.current, pagination.pageSize, searchParams);
} else {
message.error(res.message || intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableFailed' }));
// 处理启用模板
const handleEnableTemplate = (id: string) => {
Modal.confirm({
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableConfirmTitle' }),
content: intl.formatMessage({
id: 'supplierAnnualTemplateManage.modal.enableConfirmContent',
}),
okText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.confirm' }),
cancelText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.cancel' }),
onOk: async () => {
try {
setLoading(true);
const res = await enableTemplate(id);
if (res.success) {
message.success(
intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableSuccess' }),
);
fetchTemplateList(pagination.current, pagination.pageSize, searchParams);
} else {
message.error(
res.message ||
intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableFailed' }),
);
}
} catch (error) {
console.error('启用模板失败:', error);
message.error(
intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableFailed' }),
);
} finally {
setLoading(false);
}
} catch (error) {
console.error('启用模板失败:', error);
message.error(intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableFailed' }));
} finally {
setLoading(false);
}
}
});
};
},
});
};
// 处理禁用模板
const handleDisableTemplate = (id: string) => {
Modal.confirm({
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableConfirmTitle' }),
content: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableConfirmContent' }),
okText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.confirm' }),
cancelText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.cancel' }),
onOk: async () => {
try {
setLoading(true);
const res = await disableTemplate(id);
if (res.success) {
message.success(intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableSuccess' }));
fetchTemplateList(pagination.current, pagination.pageSize, searchParams);
} else {
message.error(res.message || intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableFailed' }));
// 处理禁用模板
const handleDisableTemplate = (id: string) => {
Modal.confirm({
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableConfirmTitle' }),
content: intl.formatMessage({
id: 'supplierAnnualTemplateManage.modal.disableConfirmContent',
}),
okText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.confirm' }),
cancelText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.cancel' }),
onOk: async () => {
try {
setLoading(true);
const res = await disableTemplate(id);
if (res.success) {
message.success(
intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableSuccess' }),
);
fetchTemplateList(pagination.current, pagination.pageSize, searchParams);
} else {
message.error(
res.message ||
intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableFailed' }),
);
}
} catch (error) {
console.error('禁用模板失败:', error);
message.error(
intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableFailed' }),
);
} finally {
setLoading(false);
}
} catch (error) {
console.error('禁用模板失败:', error);
message.error(intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableFailed' }));
} finally {
setLoading(false);
}
}
});
};
},
});
};
const columns = [
{
title: intl.formatMessage({ id: 'supplierTemplateManage.column.index' }),
@ -217,6 +234,14 @@ const handleDisableTemplate = (id: string) => {
dataIndex: 'deptName',
key: 'deptName',
width: 120,
ellipsis: {
showTitle: false,
},
render: (text: string) => (
<Tooltip placement="topLeft" title={text}>
{text}
</Tooltip>
),
},
{
title: intl.formatMessage({ id: 'supplierTemplateManage.column.createTime' }),
@ -251,23 +276,22 @@ const handleDisableTemplate = (id: string) => {
{/* 禁用状态显示启用按钮 草稿状态显示启用按钮 */}
{(record.status === TemplateStatus.DISABLED ||
record.status === TemplateStatus.DRAFT) && (
<Button type="link" onClick={() => handleEnableTemplate(record.id)} size="small">
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.enable' })}
</Button>
)}
<Button type="link" onClick={() => handleEnableTemplate(record.id)} size="small">
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.enable' })}
</Button>
)}
{/* 启用状态显示禁用按钮 草稿状态显示禁用按钮 */}
{(record.status === TemplateStatus.ENABLED ||
record.status === TemplateStatus.DRAFT) && (
<Button
type="link"
danger
onClick={() => handleDisableTemplate(record.id)}
size="small"
>
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.disable' })}
</Button>
)}
{(record.status === TemplateStatus.ENABLED || record.status === TemplateStatus.DRAFT) && (
<Button
type="link"
danger
onClick={() => handleDisableTemplate(record.id)}
size="small"
>
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.disable' })}
</Button>
)}
</Space>
),
},
@ -322,7 +346,7 @@ const handleDisableTemplate = (id: string) => {
name="categoryId"
label={intl.formatMessage({ id: 'supplierTemplateManage.column.category' })}
>
<CategorySelector multiple={false} />
<CategorySelector multiple={false} />
</Form.Item>
<Form.Item className="filter-btns">
<Button type="primary" htmlType="submit" icon={<SearchOutlined />}>