import React, { useEffect, useState } from 'react';
import { SetData } from './../../data.d';
import type { ProColumns } from '@ant-design/pro-table';
import { EditableProTable } from '@ant-design/pro-table';
import { Space } from 'antd'
import { StarOutlined } from '_@ant-design_icons@4.6.4@@ant-design/icons';
// import { Button } from 'antd';
import styles from '../CommercialInsurance/style.less'
interface Model{
specialappointmentA: SetData[],
specialClick: (value: SetData[]) => void
}
export const Appointment = (props: Model) => {
let { specialappointmentA, specialClick } = props;
console.log(specialappointmentA, 'specialappointmentAspecialappointmentA');
const [showStar, setShowStar] = useState(false) // 默认选择的时候增加星星
const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
const [dataSource, setDataSource] = useState<SetData[]>(specialappointmentA);
const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]) //
const columns: ProColumns<SetData>[] = [
{
title: '序列号',
dataIndex: 'specId',
key: 'specId',
formItemProps: (form, { rowIndex }) => { // 设置哪列能编辑
return {
rules: rowIndex > 2 ? [{ required: true, message: '此项为必填项' }] : [],
};
},
// 第二行不允许编辑
editable: (text, record, index) => {
return false // 控制哪行能编写 控制所有序列号都不能更改
},
width: '30%',
},
{
title: '特约内容',
key: 'content',
dataIndex: 'content',
},
{
title: '操作',
valueType: 'option',
width: 200,
render: (text, record, _, action) => [
record.isModify == 2? <div key='1'> // 根据数据返回 判断 哪行能编辑 增加动态操作按钮
<Space>
<a
key="editable"
onClick={() => {
console.log(text, record, 'action');
action?.startEditable?.(record.key);
}}
>
编辑
</a>
<a
key="delete"
onClick={() => {
setDataSource(dataSource.filter((item) => item.key !== record.key));
}}
>
删除
</a>
</Space>
</div> : <div key='2'></div>
],
},
]
useEffect(() => {
let key:React.Key[] = []
specialappointmentA.map(item => {
if (item.useFlag == '1') {
key.push(item.key)
}
})
setSelectedRowKeys(key) // 当页面初始化的时候 遍历传入数据的数组 判断当useFlag 为1 的时候 把 值为1的选项默认选择
}, [])
const rowSelection = {
selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: React.Key[], selectedRows: SetData[]) => {
setSelectedRowKeys(selectedRowKeys)
},
getCheckboxProps: (record: SetData) => ({
disabled: record.useFlag == '1' ,
// name: record.name,
}),
};
return (
<>
<EditableProTable<SetData>
rowSelection={{
...rowSelection,
}}
rowClassName={(record, index) => {
console.log(record, index);
if (record.useFlag == '1') {
return styles.inputStar
}
}}
// style={{minHeight: '250px'}}
headerTitle=""
// className={styles.inputStar}
columns={columns}
rowKey="key"
controlled={true}
value={dataSource}
recordCreatorProps={false} // 关闭新建
tableAlertRender={false}
onChange={setDataSource}
editable={{
type: 'multiple',
editableKeys,
onSave: async (rowKey, data, row) => {
specialappointmentA.forEach(item => {
if (item.key == rowKey) {
item = data
let message = []
message.push(item)
specialClick(message)
}
})
},
onChange: setEditableRowKeys,
}}
/>
</>
);
};
export default Appointment;