/** * @description 列配置 */ import React from "react" import { PopModal, Table, StateManage, Input, Switch, Select, PopMessage, Utils } from "../../../../" import { sortBy } from "lodash" import { RiDragMove2Fill } from "react-icons/ri" export const ColumnsSetting = async ({ onOk, columns = [] }) => { // 新增一列 const createNewItem = () => { return { $$rowKey: Utils.uuid(), title: "字段名称", dataIndex: "field_code$" + (Math.random() * 100).toFixed(0), show: true, sorter: false, width: null, fixed: null } } // 修改一条数据的某个字段 const updateRecordAttr = ({ record, state, key, value }) => { const dataSource = StateManage.get(state, "dataSource") dataSource.forEach(item => { if (item["$$rowKey"] === record["$$rowKey"]) { item[key] = value } }) StateManage.set(state, { dataSource: sortBy(dataSource, "forceHidden") }) } const dataSource = columns.map((item: any) => { return { ...item, $$rowKey: Utils.uuid(), } }) const tableProps: any = { bordered: false, dataSource, rowKey: "$$rowKey", rowSelection: { show: true, mode: "checkbox" }, columns: [ { title: "排序", width: "56px", align: "center", dataIndex: "dataIndex", render: (text, record, index) => { return { ev.dataTransfer.setData("sort_table_columns", JSON.stringify(record)) }} onDragOver={(ev) => ev.preventDefault()} onDrop={ev => { let data = ev.dataTransfer.getData("sort_table_columns") data = JSON.parse(data) let { dataSource } = StateManage.get(state) const dragIndex = dataSource.findIndex(item => item["dataIndex"] === data["dataIndex"]) dataSource = dataSource.filter(item => item["dataIndex"] !== data["dataIndex"]) dataSource.splice(dragIndex >= index ? index + 1 : index, 0, data) StateManage.set(state, { dataSource }) }} style={{ cursor: "move", padding: "0px 8px" }} > } }, { title: * 字段名称, dataIndex: "title", render: (text, record) => { return { updateRecordAttr({ state, record, key: "title", value }) }} style={{ width: "80%" }} /> } }, { title: "字段编码", dataIndex: "dataIndex", render: (text, record) => { // return text return { updateRecordAttr({ state, record, key: "dataIndex", value }) }} style={{ width: "80%" }} /> } }, { title: "列宽", width: "150px", dataIndex: "width", render: (text, record) => { return { updateRecordAttr({ state, record, key: "width", value }) }} placeholder="单位:px" // addonAfter="px" /> } }, { title: "默认显示", dataIndex: "show", width: "120px", render: (text, record) => { return { updateRecordAttr({ state, record, key: "show", value }) }} unCheckedChildren="否" checkedChildren="是" /> } }, { title: "支持排序", width: "120px", dataIndex: "sorter", render: (text, record) => { return { updateRecordAttr({ state, record, key: "sorter", value }) }} unCheckedChildren="否" checkedChildren="是" /> } }, { title: "冻结列", width: "150px", dataIndex: "fixed", render: (text, record) => { return