import { computed, ref } from 'vue'; import { SceneListInfo, SortSceneItemParam, SortSceneDataParam } from '@/types/business-scene/type'; import { getSceneList, deleteSceneData, sortSceneData } from '@/api/sys-config/business-scene'; export const useTableHook = () => { const tableData = ref([]); const getTableData = async () => { tableData.value = await getSceneList(); }; const deleteTableData = async (id: number) => { await deleteSceneData(id); await getTableData(); }; const orderNums = computed(() => { const length = tableData.value.length; const firstOrderNum = length > 0 ? tableData.value[0].orderNum : null; const lastOrderNum = length > 0 ? tableData.value[length - 1].orderNum : null; return [firstOrderNum, lastOrderNum]; }); const getSwapParam = (id: number, sortType: 'increase' | 'decrease') => { const index = tableData.value.findIndex((item) => item.id === id); if (index === -1) return; let idAndOrderDTOList: SortSceneItemParam[] = []; const currentOrder = tableData.value[index].orderNum; //当前的顺序 if (sortType === 'increase') { /** * @description prevId -- 上一个的ID prevOrder -- 上一个的oderNum */ const prevData = tableData.value[index - 1]; const prevId = prevData.id; const prevOrder = prevData.orderNum; idAndOrderDTOList = [ { sceneId: prevId, orderNum: currentOrder }, { sceneId: id, orderNum: prevOrder }, ]; } else { /** * @description nextId -- 下一个的ID nextOrder -- 下一个的oderNum */ const nextData = tableData.value[index + 1]; const nextId = nextData.id; const nextOrder = nextData.orderNum; idAndOrderDTOList = [ { sceneId: nextId, orderNum: currentOrder }, { sceneId: id, orderNum: nextOrder }, ]; } const sortSceneDataParam: SortSceneDataParam = { idAndOrderDTOList, }; return sortSceneDataParam; }; const sortTableData = async (id: number, sortType: 'increase' | 'decrease') => { const idAndOrderDTOList = getSwapParam(id, sortType); await sortSceneData(idAndOrderDTOList!); await getTableData(); }; return { orderNums, tableData, getTableData, deleteTableData, sortTableData }; };