= [
{
title: '排序',
dataIndex: 'sort',
width: 50,
render: () =>
},
{
title: '序号',
dataIndex: 'num',
width: 50,
render: (num, record, index) => `${index + 1}`
},
{
title: '选项名称',
dataIndex: 'name'
},
{
title: '状态',
dataIndex: 'enable',
render: text => (
{text ? '已启用' : '已停用'}
)
},
{
title: '操作',
dataIndex: 'opreate',
render: (_, record) => (
{
setTimeout(() => {
formRef.current?.setFieldsValue({ ...record })
}, 80)
setState({
...state,
modalType: ModalType.UPDATE,
modalVisible: true,
current: {
ID: record.ID,
name: record.name,
enable: record.enable
}
})
}}>
编辑
)
}
]
const onSortEnd = ({ oldIndex, newIndex }: SortEnd) => {
if (oldIndex !== newIndex) {
const newData = arrayMoveImmutable(dataSource.slice(), oldIndex, newIndex).filter(
(el: DataType) => !!el
)
const newMenuData = menuData.map(item => {
const newItem = { ...item }
if (item.ID === state.activeID) {
newItem.items = newData
return newItem
}
return item
})
setState({ ...state, menuData: newMenuData })
}
}
const DraggableContainer = (props: SortableContainerProps) => (
)
const DraggableBodyRow = ({ className, style, ...restProps }) => {
const index = state.menuData
.find(item => item.ID === state.activeID)
?.items.findIndex(x => x.index === restProps['data-row-key'])
return
}
return (
tryFetchList()}
/>
columns={columns}
search={false}
dataSource={state.menuData.find(item => item.ID === state.activeID)?.items || []}
rowKey="ID"
toolbar={{
actions: [
]
}}
components={{
body: {
wrapper: DraggableContainer,
row: DraggableBodyRow
}
}}
/>
{
setState({ ...state, modalVisible: visible })
setTimeout(() => {
if (!visible) formRef.current?.resetFields()
}, 80)
}}
initialValues={{ enable: true }}
onFinish={async values => {
try {
if (state.modalType === OptionModalType.ADD) {
await tryAddDataSourceItem({ ...values, dataSourceID: state.activeID })
setState({
...state,
menuDataItems: state.menuData.find(i => i.ID === state.activeID)?.items
})
} else {
const newItemData = state.menuDataItems.map(item => {
if (item.ID === state.current.ID) {
const newItem = { ...values }
return newItem
}
return item
})
setState({ ...state, items: newItemData })
await tryUpdateDataSourceItem({
ID: state.activeID,
items: newItemData
})
}
message.success(`${state.modalType === OptionModalType.ADD ? '新增' : '编辑'}成功`)
return true
} catch (error) {
message.error(error)
return false
}
}}>
)
}
export default Option