This commit is contained in:
Li1304553726 2025-03-27 10:18:39 +08:00
commit dd513444c5
3 changed files with 52 additions and 17 deletions

View File

@ -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 },

View File

@ -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())}

View File

@ -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}