单位与部门

This commit is contained in:
孙景学
2025-07-16 11:22:57 +08:00
parent 54f5ad64ca
commit 1e5e5d4987
17 changed files with 147 additions and 117 deletions

View File

@ -53,7 +53,7 @@ const DetailView: React.FC<DetailViewProps> = ({ visible, onClose, detailId }) =
// 把info数组两两合并成一行显示
function renderInfoTable(infoArr: InfoItem[]) {
const rows = [];
for (let i = 0; i < infoArr.length; i += 2) {
for (let i = 0; i < infoArr.length; i++) {
rows.push(
<>
<Descriptions.Item label={`变更前-${infoArr[i].fieldAnnotation}` }>{infoArr[i].oldValue}</Descriptions.Item>

View File

@ -1,33 +1,51 @@
import React, { useEffect, useState } from 'react';
import React, { useMemo } from 'react';
import { Descriptions } from 'antd';
import { coscoSupplier } from '../services'
import { useIntl } from 'umi';
// 性别转中文
const getGenderLabel = (sex: string | number | undefined) => {
if (sex === '1' || sex === 1) return '男';
if (sex === '0' || sex === 0) return '女';
return '';
};
const PersonalInfo: React.FC = () => {
const intl = useIntl();
const [registerInfo, setRegisterInfo] = useState<any>({ base: {} });
const fetchData = async () => {
const { code, data } = await coscoSupplier({});
if (code === 200) {
setRegisterInfo(data);
// 从缓存读取,推荐用 useMemo 保证只读一次
const localUser = useMemo(() => {
const cacheStr = sessionStorage.getItem('currentUser');
if (!cacheStr) return {};
try {
return JSON.parse(cacheStr);
} catch {
return {};
}
};
// 个人信息
useEffect(() => {
fetchData()
}, []);
}, []);
// 优先显示 user其次 supplierUser
const base = localUser.user || localUser.supplierUser || {};
return (
<div style={{ padding: '24px 24px 0 0' }}>
<Descriptions bordered column={2} labelStyle={{ width: '120px' }}>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.name' })}>{registerInfo.base.name}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.gender' })}>{registerInfo.base.gender}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.phone' })}>{registerInfo.base.phone}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.email' })}>{registerInfo.base.email}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.department' })}>{registerInfo.base.department}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.position' })}>{registerInfo.base.position}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.entryDate' })}>{registerInfo.base.entryDate}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.name' })}>
{base.name || '-'}
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.gender' })}>
{getGenderLabel(base.sex)}
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.phone' })}>
{base.mobile || base.phone || '-'}
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.email' })}>
{base.email || '-'}
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.department' })}>
{base.orgName || '-'}
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'page.workbench.personal.position' })}>
{base.position || '-'}
</Descriptions.Item>
{/* 如有入职日期再补 */}
</Descriptions>
</div>
);