lin
This commit is contained in:
parent
7a13fa4e57
commit
dd76e90a26
|
@ -15,8 +15,8 @@ export const defaultFields = [
|
||||||
label: '性别',
|
label: '性别',
|
||||||
type: 'radio',
|
type: 'radio',
|
||||||
options: [
|
options: [
|
||||||
{ label: '男', value: 'male' },
|
{ label: '男', value: '男' },
|
||||||
{ label: '女', value: 'female' },
|
{ label: '女', value: '女' },
|
||||||
],
|
],
|
||||||
group: '基本信息',
|
group: '基本信息',
|
||||||
order: 7 },
|
order: 7 },
|
||||||
|
@ -57,11 +57,7 @@ export const defaultFields = [
|
||||||
// 职务信息组
|
// 职务信息组
|
||||||
{ name: 'rank',
|
{ name: 'rank',
|
||||||
label: '衔职级别',
|
label: '衔职级别',
|
||||||
type: 'select',
|
type: 'text',
|
||||||
options: [
|
|
||||||
{ label: '', value: '' },
|
|
||||||
{ label: '', value: '' },
|
|
||||||
],
|
|
||||||
group: '职务信息',
|
group: '职务信息',
|
||||||
order: 13 },
|
order: 13 },
|
||||||
{ name: 'rankDate', label: '衔职时间', type: 'date', group: '职务信息', order: 14 },
|
{ 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-grid.css';
|
||||||
import 'ag-grid-community/styles/ag-theme-alpine.css';
|
import 'ag-grid-community/styles/ag-theme-alpine.css';
|
||||||
import { SetFilterModule } from 'ag-grid-enterprise';
|
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() {
|
export default function StaffMessage() {
|
||||||
const [rowData, setRowData] = useState<any[]>([]);
|
const [rowData, setRowData] = useState<any[]>([]);
|
||||||
|
@ -51,13 +64,18 @@ export default function StaffMessage() {
|
||||||
// 新增删除处理函数
|
// 新增删除处理函数
|
||||||
const handleDelete = useCallback(async () => {
|
const handleDelete = useCallback(async () => {
|
||||||
if (selectedRows.length === 0) return;
|
if (selectedRows.length === 0) return;
|
||||||
|
console.log('待删除的选中行数据:', selectedRows); // 新增调试语句
|
||||||
try {
|
try {
|
||||||
await softDeleteByIds.mutateAsync({
|
await softDeleteByIds.mutateAsync({
|
||||||
ids: selectedRows?.map(row => row.id)
|
ids: selectedRows?.map(row => {
|
||||||
|
console.log('当前行ID:', row.id); // 检查每个ID
|
||||||
|
return row.id
|
||||||
|
})
|
||||||
});
|
});
|
||||||
message.success('删除成功');
|
message.success('删除成功');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('删除失败');
|
message.error('删除失败');
|
||||||
|
console.error('详细错误信息:', error); // 输出完整错误堆栈
|
||||||
}
|
}
|
||||||
// 重新获取数据或本地过滤已删除项
|
// 重新获取数据或本地过滤已删除项
|
||||||
}, [selectedRows]);
|
}, [selectedRows]);
|
||||||
|
@ -84,11 +102,31 @@ export default function StaffMessage() {
|
||||||
field: field.name,
|
field: field.name,
|
||||||
headerName: field.label || field.name,
|
headerName: field.label || field.name,
|
||||||
filter: 'agSetColumnFilter',
|
filter: 'agSetColumnFilter',
|
||||||
|
cellStyle: { whiteSpace: 'pre-line' },
|
||||||
|
autoHeight: true,
|
||||||
valueGetter: params => {
|
valueGetter: params => {
|
||||||
// 从 fieldValues 对象中获取值
|
// 获取原始值
|
||||||
return params.data.fieldValues?.find(
|
const rawValue = params.data.fieldValues?.find(
|
||||||
(fv: any) => fv.fieldId === field.id
|
(fv: any) => fv.fieldId === field.id
|
||||||
)?.value;
|
)?.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]
|
[fields.data]
|
||||||
|
@ -109,12 +147,13 @@ export default function StaffMessage() {
|
||||||
<>
|
<>
|
||||||
<Button className='mr-2' danger onClick={handleDelete} style={{ marginBottom: '10px' }}>批量删除</Button>
|
<Button className='mr-2' danger onClick={handleDelete} style={{ marginBottom: '10px' }}>批量删除</Button>
|
||||||
<Button type="primary" onClick={handleEdit} 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>
|
<h1 className="text-2xl mb-4">人员总览</h1>
|
||||||
<AgGridReact
|
<AgGridReact
|
||||||
modules={[SetFilterModule]}
|
modules={[SetFilterModule]}
|
||||||
rowData={rowData}
|
rowData={rowData}
|
||||||
columnDefs={columnDefs}
|
columnDefs={columnDefs}
|
||||||
|
|
||||||
pagination={true}
|
pagination={true}
|
||||||
paginationPageSize={10}
|
paginationPageSize={10}
|
||||||
onSelectionChanged={e => setSelectedRows(e.api.getSelectedRows())}
|
onSelectionChanged={e => setSelectedRows(e.api.getSelectedRows())}
|
||||||
|
|
|
@ -80,8 +80,8 @@ const StaffInfoWrite = () => {
|
||||||
return (
|
return (
|
||||||
<Radio.Group
|
<Radio.Group
|
||||||
options={[
|
options={[
|
||||||
{ label: '是', value: true },
|
{ label: '是', value:'是' },
|
||||||
{ label: '否', value: false }
|
{ label: '否', value:'否' }
|
||||||
]}
|
]}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setHasTrain(e.target.value);
|
setHasTrain(e.target.value);
|
||||||
|
@ -96,8 +96,8 @@ const StaffInfoWrite = () => {
|
||||||
return (
|
return (
|
||||||
<Radio.Group
|
<Radio.Group
|
||||||
options={[
|
options={[
|
||||||
{ label: '是', value: true },
|
{ label: '是', value: '是' },
|
||||||
{ label: '否', value: false }
|
{ label: '否', value: '否' }
|
||||||
]}
|
]}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setHasCert(e.target.value);
|
setHasCert(e.target.value);
|
||||||
|
@ -247,7 +247,7 @@ const StaffInfoWrite = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="max-w-4xl mx-auto p-6">
|
<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={form}
|
form={form}
|
||||||
|
|
Loading…
Reference in New Issue