vex-page

vue3 管理后台通用列表页面,只需简单配置快速生成列表页、表格等,减少html代码。Vue3 + Element Plus
3,087
Install
npm install vex-page
Latest Version:1.2.0
Vue:3
License:ISC
Last Updated:Aug 25, 2025
Links: npm
Maintainer: xiaochen9506

vex-page

vue3 管理后台通用列表页面。Vue3 + Element Plus

安装

npm install vex-page

使用

import VexPage from 'vex-page' //导入
// 项目按需引用element-plus, 则需要改为
// import VexPage from 'vex-page/es/index.mjs' 或 import VexPage from 'vex-page/lib/index.js'
// import 'vex-page/es/style.css' 或 import 'vex-page/lib/style.css'

// 设置配置文件
app.use(VexPage, {
  config: {
    pageSizeKey: 'pageSize',
    pageNumKey: 'pageNum',
    getList: res => res.data,
  }
})
<template>
  <v-page
    :columns="columns"
    :btns="btns"
    :filter="filters"
    :get-list="getList"
    @test="test"
  />
</template>

<script setup>
import avatar from './avatar.js'

// 获取列表
const getList = () => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve({
        data: [
          {
            id: 1,
            avatar,
            name: '张三',
            age: 18,
            gender: 0,
            select: 0,
            number: 5000,
            table: [
              {
                id: 1,
                name: '张三',
                age: 18,
                gender: 0,
                select: 0,
                number: 5000,
              }
            ]
          },
          {
            id: 2,
            avatar,
            name: '李四',
            age: 19,
            gender: 1,
            select: 0,
            number: 25000,
            table: [
              {
                id: 2,
                name: '李四',
                age: 19,
                gender: 1,
                select: 0,
                number: 25000,
              }
            ]
          },
        ],
        total: 3,
      })
    }, 1000)
  })
}

const gender = [
  { label: '男', value: 0, type: 'primary' },
  { label: '女', value: 1, type: 'success' },
]

const select = [
  { label: '0', value: 0, type: 'primary' },
  { label: '1', value: 1, type: 'success' },
]

const change = (row, value) => {
  console.log(row, value)
}

// 表格配置
const columns = [
  { label: '姓名', prop: 'name', },
  { label: '头像', prop: 'avatar', scope: 'img', width: 100 },
  { label: 'number', prop: 'number', scope: 'number-col' },
  { label: 'input', prop: 'age', scope: 'input', change },
  { label: 'select', prop: 'select', scope: 'select', options: select },
  { label: '性别', prop: 'gender', scope: 'tag', options: gender },

  // { label: '嵌套', prop: 'table', scope: 'table',
  //   options: [
  //     { label: '姓名', prop: 'name', },
  //     { label: 'number', prop: 'number', scope: 'number-col' },
  //     { label: 'input', prop: 'age', scope: 'input', change },
  //     { label: 'select', prop: 'select', scope: 'select', options: select },
  //     { label: '性别', prop: 'gender', scope: 'tag', options: gender },
  //   ]
  // },

  // 操作列
  {
    label: '操作',
    fixed: 'right',
    width: 200,
    scope: 'btn',
    options: [
      { text: 'test', event: 'test' }
    ]
  },
]

const test = (row) => {
  console.log(row)
}

const showAdd = () => {
}

const filters = [
  { label: '姓名', prop: 'name', type: 'input' },
  { label: '性别', prop: 'gender', type: 'select', options: gender },
]

// 按钮
const btns = [
  {
    text: '新增',
    click: showAdd
  },
]
</script>

效果

setConfig

设置全局配置, 主要是分页时候参数以及获取方法

参数 说明 类型 默认值
pageSizeKey 分页参数 string pageSize
pageNumKey 分页参数 string pageNum
getList 获取列表方法 Function res => res.data
getTotal 获取总数方法 Function res => res.total

组件

  • V-Page
  • V-Table
  • V-Element
  • V-Filter

table 支持scope类型

  • img 图片
  • number-col 数字
  • input 输入框
  • select 下拉框
  • tag 标签
  • table 表格
  • btn 按钮

Related Packages

@element-plus/nuxt

Element Plus module for Nuxt

830,141 176
earthsdk-ui

基于 vue3、element-plus、earthsdk3 构建的 EarthSDK UI 组件库,提供丰富的 UI 组件...

11,530
monose-component-vue

Vue3 ElementPlus 二次封装组件库

3,327
zb-ep

vue3 and element-plus components

2,744
slb_public_components

This is a Vue3 + ts + ELement-Plus pulic components.

1,804

Version History

Version Released Vue License
1.2.0 ^3.3.11 ISC
1.1.90 ^3.3.11 ISC
1.1.89 ^3.3.11 ISC
1.1.88 ^3.3.11 ISC
1.1.87 ^3.3.11 ISC