优化项目(PC后台)

一、优化表格

基本上每个PC后台项目都有非常多的这种表格,而这种表格一般都会带有分页功能,如果每个页面都要写一遍分页所需的数据那会非常麻烦,这里我封装了一些js文件方便复用。

// 表格hook
export const useTablePagination = (onRefresh) => {
    const total = ref(0)
    const currentPage = ref(1)
    const pageSize = ref(10)
    const selected = ref([])

    function handleSizeChange(val) {
        pageSize.value = val
        onRefresh()
    }

    function handleCurrentChange(val) {
        currentPage.value = val
        onRefresh()
    }

    function handleSelectionChange(selection) {
        selected.value = selection
    }

    return {
        total,
        currentPage,
        pageSize,
        handleSizeChange,
        handleCurrentChange,
        handleSelectionChange,
        selected
    }
}
export const useLoading = () => {
    const loading = ref(false)
    const toggleLoading = (val) => {
        loading.value = val
    }
    return {
        loading,
        toggleLoading
    }
}

使用:

import { useLoading, useTablePagination } from "@/hooks/useTable";
import { useUpload, useDownload } from "@/hooks/useUpload";
const { currentPage, pageSize, total, handleSizeChange, handleCurrentChange } = useTablePagination(onRefresh)
const { loading } = useLoading()

二、弹窗

import {ref} from 'vue'
// 弹窗hook
const title = ref('')

export const useDialogVisible = () => {
    const visible = ref(false)
    const open = (row) => {
        visible.value = true
        if (row && row.roleId) {
            title.value = '编辑'
        } else {
            title.value = '新增'
        }

    }
    const close = () => {
        visible.value = false
    }
    return {
        visible,
        title,
        open,
        close
    }
}
export const useDialogLoading = () => {
    const loading = ref(false)
    const open = () => {
        loading.value = true
    }
    const close = () => {
        loading.value = false
    }
    return {
        loading,
        open,
        close
    }
}

使用:

import { useDialogVisible, useDialogLoading } from '@/hooks/useDialog'
const { visible, title, open, close } = useDialogVisible()
const { loading: dialogLoading, open: dialogLoadingOpen, close: dialogLoadingClose } = useDialogLoading()

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值