import { ref } from "vue"; import { delObjectProperty } from "@pureadmin/utils"; import Location from "@/model/location.js"; export function useLocationColumns() { const locationEditMap = ref({}); const locationDataList = ref([]); const locationColumns: TableColumnList = [ { label: "ID", prop: "id", width: 100, cellRenderer: ({ row, index }) => ( <> {locationEditMap.value[index]?.editable ? ( ) : (

{row.id}

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

{row.name}

)} ) }, { label: "中心坐标", prop: "center", cellRenderer: ({ row, index }) => ( <> {locationEditMap.value[index]?.editable ? (
经度: 纬度:
) : (

{'经度:[' + row.center.x + '],纬度:[' + row.center.y + ']'}

)} ) }, { label: "操作", fixed: "right", width: 140, slot: "operation" } ]; function onEditLocation(row, index) { locationEditMap.value[index] = Object.assign({ ...row, editable: true }); } function onSaveLocation(index) { locationEditMap.value[index].editable = false; } function onCancelLocation(index) { locationEditMap.value[index].editable = false; locationDataList.value[index] = delObjectProperty(locationEditMap.value[index], "editable"); } function onAddLocation() { const v = new Location(); v.id = locationDataList.value.length + 1; locationDataList.value.push(v); } function onDelLocation(row) { const index = locationDataList.value.indexOf(row); if (index !== -1) locationDataList.value.splice(index, 1); } return { locationEditMap, locationColumns, locationDataList, onAddLocation, onDelLocation, onEditLocation, onSaveLocation, onCancelLocation }; }