import { TableColumnData } from "@arco-design/web-vue" import { ref, reactive, onUnmounted } from "vue" // 粘贴图片组件 import ImageInput from "../ImageInput/index.vue" // wordlike组件 import WordLikeTable from "../wordLikeTable/index.vue" export default function useTable() { const columns = reactive([ { title: "类型", width: 50, align: "center", dataIndex: "type", render: ({ record }) => { let item: string = "文" let color: string = "red" switch (record.type) { case "text": item = "文" color = "blue" break case "image": item = "图" color = "red" break case "table": item = "表" color = "orangered" break } return {item} } }, { title: "内容", dataIndex: "content", slotName: "content", render({ record, rowIndex }) { const { type } = record switch (type) { case "text": return case "image": return case "table": return } } }, { title: "操作", align: "center", width: 80, render: ({ rowIndex }) => { return ( deleteRow(rowIndex)}> {{ icon: () => }} ) } } ]) // 卸载时清空数据 const handleOnClose = () => { data.value = [{ ...initalRowData }] } // 数据定义 - 测试 const data = ref< { type: string content: string | string[][] fontnote: string }[] >([]) // 单行初始内容-并设置数据类型 const initalRowData = { type: "text", content: "", fontnote: "" } // 删除该行 const deleteRow = async (rowIndex: number) => { data.value.splice(rowIndex, 1) } // 拖拽 const handleChange = (_data: typeof data.value) => { data.value = _data } // 新增文 const addTextRow = () => { data.value.push({ ...initalRowData }) } // 新增图片 const addPicRow = () => { data.value.push({ type: "image", content: "", fontnote: "" }) } // 新增表格 const addTableRow = () => { data.value.push({ type: "table", content: [ ["", "", ""], ["", "", ""], ["", "", ""] ], fontnote: "" }) } return { columns, data, handleChange, addTextRow, addPicRow, addTableRow, handleOnClose } }