/**
* @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