Merge branch 'main' of http://113.45.157.195:3003/linfeng/staff_data
This commit is contained in:
commit
dd513444c5
|
@ -15,8 +15,8 @@ export const defaultFields = [
|
|||
label: '性别',
|
||||
type: 'radio',
|
||||
options: [
|
||||
{ label: '男', value: 'male' },
|
||||
{ label: '女', value: 'female' },
|
||||
{ label: '男', value: '男' },
|
||||
{ label: '女', value: '女' },
|
||||
],
|
||||
group: '基本信息',
|
||||
order: 7 },
|
||||
|
@ -57,11 +57,7 @@ export const defaultFields = [
|
|||
// 职务信息组
|
||||
{ name: 'rank',
|
||||
label: '衔职级别',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ label: '', value: '' },
|
||||
{ label: '', value: '' },
|
||||
],
|
||||
type: 'text',
|
||||
group: '职务信息',
|
||||
order: 13 },
|
||||
{ name: 'rankDate', label: '衔职时间', type: 'date', group: '职务信息', order: 14 },
|
||||
|
|
|
@ -4,7 +4,20 @@ import { api, useStaff } from "@nice/client";
|
|||
import 'ag-grid-community/styles/ag-grid.css';
|
||||
import 'ag-grid-community/styles/ag-theme-alpine.css';
|
||||
import { SetFilterModule } from 'ag-grid-enterprise';
|
||||
import { Button, message } from 'antd';
|
||||
import { Button, CascaderProps, message } from 'antd';
|
||||
import { areaOptions } from '@web/src/app/main/staffinfo_write/area-options';
|
||||
function getAreaName(codes: string[], level?: number): string {
|
||||
const result: string[] = [];
|
||||
let currentLevel: CascaderProps['options'] = areaOptions;
|
||||
for (const code of codes) {
|
||||
const found = currentLevel?.find(opt => opt.value === code);
|
||||
if (!found) break;
|
||||
result.push(String(found.label));
|
||||
currentLevel = found.children || [];
|
||||
if (level && result.length >= level) break; // 添加层级控制
|
||||
}
|
||||
return level ? result[level - 1] || '' : result.join(' / ') || codes.join('/');
|
||||
}
|
||||
|
||||
export default function StaffMessage() {
|
||||
const [rowData, setRowData] = useState<any[]>([]);
|
||||
|
@ -51,13 +64,18 @@ export default function StaffMessage() {
|
|||
// 新增删除处理函数
|
||||
const handleDelete = useCallback(async () => {
|
||||
if (selectedRows.length === 0) return;
|
||||
console.log('待删除的选中行数据:', selectedRows); // 新增调试语句
|
||||
try {
|
||||
await softDeleteByIds.mutateAsync({
|
||||
ids: selectedRows?.map(row => row.id)
|
||||
ids: selectedRows?.map(row => {
|
||||
console.log('当前行ID:', row.id); // 检查每个ID
|
||||
return row.id
|
||||
})
|
||||
});
|
||||
message.success('删除成功');
|
||||
} catch (error) {
|
||||
message.error('删除失败');
|
||||
console.error('详细错误信息:', error); // 输出完整错误堆栈
|
||||
}
|
||||
// 重新获取数据或本地过滤已删除项
|
||||
}, [selectedRows]);
|
||||
|
@ -84,11 +102,31 @@ export default function StaffMessage() {
|
|||
field: field.name,
|
||||
headerName: field.label || field.name,
|
||||
filter: 'agSetColumnFilter',
|
||||
cellStyle: { whiteSpace: 'pre-line' },
|
||||
autoHeight: true,
|
||||
valueGetter: params => {
|
||||
// 从 fieldValues 对象中获取值
|
||||
return params.data.fieldValues?.find(
|
||||
// 获取原始值
|
||||
const rawValue = params.data.fieldValues?.find(
|
||||
(fv: any) => fv.fieldId === field.id
|
||||
)?.value;
|
||||
|
||||
// 根据字段类型格式化
|
||||
switch(field.type) {
|
||||
case 'cascader':
|
||||
return rawValue ? getAreaName(rawValue.split('/')) : '';
|
||||
|
||||
case 'date':
|
||||
// 格式化日期(假设存储的是ISO字符串)
|
||||
return rawValue ? new Date(rawValue).toLocaleDateString() : '';
|
||||
|
||||
case 'textarea':
|
||||
// 换行处理
|
||||
|
||||
return rawValue?.replace(/,/g, '\n');
|
||||
|
||||
default:
|
||||
return rawValue;
|
||||
}
|
||||
}
|
||||
})),
|
||||
[fields.data]
|
||||
|
@ -109,12 +147,13 @@ export default function StaffMessage() {
|
|||
<>
|
||||
<Button className='mr-2' danger onClick={handleDelete} style={{ marginBottom: '10px' }}>批量删除</Button>
|
||||
<Button type="primary" onClick={handleEdit} style={{ marginBottom: '10px' }}>编辑</Button>
|
||||
<div className="ag-theme-alpine" style={{ height: 500, width: '100%', padding: '20px' }}>
|
||||
<div className="ag-theme-alpine" style={{ height: '100%', width: '100%', padding: '20px' }}>
|
||||
<h1 className="text-2xl mb-4">人员总览</h1>
|
||||
<AgGridReact
|
||||
modules={[SetFilterModule]}
|
||||
rowData={rowData}
|
||||
columnDefs={columnDefs}
|
||||
|
||||
pagination={true}
|
||||
paginationPageSize={10}
|
||||
onSelectionChanged={e => setSelectedRows(e.api.getSelectedRows())}
|
||||
|
|
|
@ -80,8 +80,8 @@ const StaffInfoWrite = () => {
|
|||
return (
|
||||
<Radio.Group
|
||||
options={[
|
||||
{ label: '是', value: true },
|
||||
{ label: '否', value: false }
|
||||
{ label: '是', value:'是' },
|
||||
{ label: '否', value:'否' }
|
||||
]}
|
||||
onChange={(e) => {
|
||||
setHasTrain(e.target.value);
|
||||
|
@ -96,8 +96,8 @@ const StaffInfoWrite = () => {
|
|||
return (
|
||||
<Radio.Group
|
||||
options={[
|
||||
{ label: '是', value: true },
|
||||
{ label: '否', value: false }
|
||||
{ label: '是', value: '是' },
|
||||
{ label: '否', value: '否' }
|
||||
]}
|
||||
onChange={(e) => {
|
||||
setHasCert(e.target.value);
|
||||
|
@ -335,7 +335,7 @@ const StaffInfoWrite = () => {
|
|||
|
||||
return (
|
||||
<div className="max-w-4xl mx-auto p-6">
|
||||
<h1 className="text-2xl font-bold mb-6">人员信息管理</h1>
|
||||
<h1 className="text-2xl font-bold mb-6">人员信息填报</h1>
|
||||
|
||||
<Form
|
||||
form={form}
|
||||
|
|
Loading…
Reference in New Issue