/** * @description 内置增删改查功能的表格组件 */ import React, { useEffect } from "react" import { IProps } from "../../../@types/SuperTable" import { Service } from "./Service" import { StateManage } from "../../../service/state" import { PropertyService } from "../../../service/property" import { Table } from "../../data-display/table" export const SuperTable = function (props: IProps, bool?: boolean): any { const { controlKey, tableProps, insertForm, insertModal, updateForm, updateModal, filterForm, filterModal, httpConfig } = props const tableControlKey = tableProps.controlKey || ("SuperTable.Table." + Service.guid()) const insertFormControlKey = insertForm?.controlKey || ("SuperTable.InsertForm." + Service.guid()) const updateFormControlKey = updateForm?.controlKey || ("SuperTable.UpdateForm." + Service.guid()) const filterSettingControlKey = filterForm?.controlKey || ("SuperTable.FilterForm." + Service.guid()) tableProps.controlKey = tableControlKey tableProps.httpConfig = { init: httpConfig?.init, onSearch: async function ({ condition }) { return Service.table_onChange({ condition, httpConfig, filterSettingControlKey }) }, delete: async function ({ checkedRows }) { return Service.deleteData({ checkedRows, httpConfig, tableControlKey, filterSettingControlKey }) as any } } if (insertForm) { insertForm.controlKey = insertFormControlKey } if (updateForm) { updateForm.controlKey = updateFormControlKey } if (httpConfig?.insert) { const createBtn = tableProps.header?.headerButton?.button?.find(item => item["btnCode"] === "CREATE_BUTTON") if (createBtn) { createBtn.onClick = function () { Service.insertForm({ insertForm, httpConfig, insertModal, filterSettingControlKey, tableControlKey }) } } } if (httpConfig?.beforeUpdate) { const updateBtn = tableProps.buttonConfig?.rowButton?.find(item => item["btnCode"] === "EDIT_BUTTON") if (updateBtn) { updateBtn.onClick = function ({ record }) { Service.updateData({ record, updateForm, httpConfig, updateModal, updateFormControlKey, tableControlKey, filterSettingControlKey }) } } } if (filterForm) { const filterSetting = tableProps.header?.filterSetting filterForm.controlKey = filterSettingControlKey if (filterSetting) { filterSetting.onClick = function () { Service.filterSetting({ filterForm, filterModal, httpConfig, filterSettingControlKey, tableControlKey }) } } } const [state, Tpl] = Table(tableProps, false) const Template = () => { useEffect(() => { if (controlKey) { const mobxState = PropertyService.getObservableObj({ refresh: function () { Service.refreshTable({ tableControlKey, filterSettingControlKey, page: 1, httpConfig }) } }) StateManage.addState(controlKey, mobxState) } }, []) return } if (bool === false) { return [state, Template] } if (bool === true) { return Template } return