import { ref } from "vue"; import { delObjectProperty } from "@pureadmin/utils"; import Person from "@/model/person.js"; export function usePersonColumns() { const personEditMap = ref({}); const personDataList = ref([]); const personColumns: TableColumnList = [ { label: "ID", prop: "id", cellRenderer: ({ row, index }) => ( <> {personEditMap.value[index]?.editable ? ( ) : (

{row.id}

)} ) }, { label: "名称", prop: "name", cellRenderer: ({ row, index }) => ( <> {personEditMap.value[index]?.editable ? ( ) : (

{row.name}

)} ) }, { label: "职位", prop: "job", cellRenderer: ({ row, index }) => ( <> {personEditMap.value[index]?.editable ? ( ) : (

{row.job}

)} ) }, { label: "电话", prop: "phone", cellRenderer: ({ row, index }) => ( <> {personEditMap.value[index]?.editable ? ( ) : (

{row.phone}

)} ) }, { label: "所属区域", prop: "locId", cellRenderer: ({ row, index }) => ( <> {personEditMap.value[index]?.editable ? ( ) : (

{row.locId}

)} ) }, { label: "标签ID", prop: "tagId", cellRenderer: ({ row, index }) => ( <> {personEditMap.value[index]?.editable ? ( ) : (

{row.tagId}

)} ) }, { label: "操作", fixed: "right", width: 140, slot: "operation" } ]; function onEditPerson(row, index) { personEditMap.value[index] = Object.assign({ ...row, editable: true }); } function onSavePerson(index) { personEditMap.value[index].editable = false; } function onCancelPerson(index) { personEditMap.value[index].editable = false; personDataList.value[index] = delObjectProperty(personEditMap.value[index], "editable"); } function onAddPerson() { const v = new Person(); v.id = personDataList.value.length + 1; personDataList.value.push(v); } function onDelPerson(row) { const index = personDataList.value.indexOf(row); if (index !== -1) personDataList.value.splice(index, 1); } return { personEditMap, personColumns, personDataList, onAddPerson, onDelPerson, onEditPerson, onSavePerson, onCancelPerson }; }