npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

one-table

v0.1.5

Published

​ 基于vue和element二次开发的业务table组件,适合用来快速开发后台管理界面。

Downloads

5

Readme

one-table

介绍

​ 基于vue和element二次开发的业务table组件,适合用来快速开发后台管理界面。

​ 感觉复杂度已经超过原生组件,如果是熟悉vue和elementui的来写应该问题不大,熟悉了就写得很快,适合用来统一代码风格。

引入方式

npm

npm install one-table -s

yarn

yarn add one-table -s

全局引入

import OneTable from 'one-table'

Vue.use(OneTable,headerConfig)

***全局注册时可选请求头参数,格式为Obeject

调用实例

<template>
  <div>
    <One-Table
      ref="oneTable"
      :table-global-config-props="tableGlobalConfigProps"
      :table-pagination-config-auto="tablePaginationConfigAuto"
      :table-config-field="tableConfigField"
      :form-global-config-props="formGlobalConfigProps"
      :requset-url="requsetUrl"
      :requset-config="requsetConfig"
      :table-column-formatter="tableColumnFormatter"
      :table-form-search-config="tableFormSearchConfig"
      :form-config-options-list="formConfigOptionsList"
      :table-form-botton-config="tableFormBottonConfig"
      :btn-table-column-option="btnTableColumnOption"
	  :header-config="headerConfig"
      @tableColumnClick="tableColumnClick"
      @btnTableClick="btnTableClick"
      @autoPage="autoPage"
    />
  </div>
</template>
<script type="text/javascript">
export default {
  data() {
    return {
      // 表格全局参数
      tableGlobalConfigProps: {
        tableType: 'table', // 表格类型  table,tree
        treeChildren: 'children', // 为树形结构时children属性名
        treeHasChildren: 'hasChildren', // 为树形结构时hasChildren属性名
        rowKey: 'id', // 行key  为tree时必传
        selectionCheck: true, // 是否有选择框
        reserveSelection: true, // 选择框分页时是否记忆
        autoRequest: true, // 创建时自动请求
        handRequestSetPage: true, // 手动处理返回数据
        requsetType: 'get', // 默认get
        needIndex: true // 需要序号
      },
	  // 请求头参数
	  headerConfig:{
		  token:''
	  },
      // 表格全局配置
      formGlobalConfigProps: {
        size: 'mini',
        inline: true
      },
      // 请求地址
      requsetUrl: '/api/v1/user/list',
      // 额外的请求参数 自定义~比如token?
      requsetConfig: {},
      // 表格分页参数自定义
      tablePaginationConfigAuto: {
        page: 'page',
        pageSize: 'page_size'
      },
      // 搜索区域定义
      tableFormSearchConfig: [
        {
          id: 'position_type',
          name: '用户身份',
          value: '',
          type: 'select',
          placeholder: '用户身份',
          rules: []
        },
        {
          id: 'name',
          name: '用户姓名',
          value: '',
          type: 'input',
          placeholder: '请输入用户姓名',
          rules: []
        }
      ],
      tableFormBottonConfig: [
        {
          type: 'add',
          text: '添加人员',
          icon: 'el-icon-plus',
          btType: 'success',
          size: 'mini',
          loading: false
        }
      ],
      formConfigOptionsList: {
        position_type: [{ name: '客户经理', id: 1 }, { name: '支撑经理', id: 2 }],
        status: [{ name: '未激活', id: 0 }, { name: '已激活', id: 1 }]
      },
      // 表格字段定义
      tableConfigField: [
        {
          id: 'name',
          name: '姓名'
        },
        {
          id: 'role_types',
          name: '角色',
          formatter: true,
          isHtml: true
        },
        {
          id: 'bank_idcard',
          name: '银行身份证',
          width: 200
        },
        {
          id: 'option',
          type: 'option',
          name: '操作',
          width: 220,
          data: [
            {
              type: 'add',
              text: '新增',
              icon: 'el-icon-plus',
              btType: 'info'
            },
          ]
        }
      ]
    }
  },
  computed: {},
  watch: {},
  created() {},
  mounted() {},
  methods: {
    // 手动处理返回数据
    autoPage(data, callback) {
      callback(data.data.list.data, data.data.list.total)
    },
    // 表格操作列点击回调
    tableColumnClick(row, btType) {
      switch (btType) {
        case 'add':
          break
        case 'edit':
          break
      }
    },
    // 按钮区域点击
    btnTableClick(type) {
      switch (type) {
        case 'add':
          this.$refs.editDialog.show()
          break
      }
    },
    // 表格操作按钮显示与否
    btnTableColumnOption(row, type) {
      switch (type) {
        case 'add':
          return true
        default:
          return true
      }
    },
    // 表格格式化 ---tableConfigField设置的formater字段为true
    tableColumnFormatter(row, column, cellValue, index) {
      switch (column.property) {
        case 'role_types':
          const role_typesList = row.role_types.map(item => {
            return item.name
          })
          return `<el-tag>${role_typesList.join(',')}</el-tag>`

        default:
          return cellValue
      }
    }
  }
}
</script>


一.全局参数:tableGlobalConfigProps

| 参数名 | 说明 | 默认值 | 参数类型 | 是否必须 | 可选 | | ------------------ | ----------------------------- | ----------- | -------- | -------- | ---------- | | tableType | 表格类型 | table | String | false | table,tree | | treeChildren | 为树形结构时children属性名 | children | String | false | | | treeHasChildren | 为树形结构时hasChildren属性名 | hasChildren | String | false | | | rowKey | 行key 为tree时必传 | id | String | false | | | selectionCheck | 是否有选择框 | true | Boolean | false | true,false | | autoRequest | 创建时自动请求列表 | true | Boolean | false | true,false | | requsetType | 请求方式 | get | String | true | 常规都行 | | needIndex | 列头是否需要序号 | true | Boolean | false | true,false | | autoRequestSetPage | 是否手动处理返回数据 | false | Boolean | false | true,false |

二.其他参数

| 参数名 | 说明 | 默认值 | 参数类型 | 是否必须 | 可选 | | ------------------------- | -------------------- | ------------------- | -------- | -------- | ------------- | | requsetUrl | 表格请求地址 | | String | true | | | requsetConfig | 附加请求参数 | | Object | flase | | | tablePaginationType | 表格分页方式 | backstage | String | true | web,backstage | | tablePaginationConfigAuto | 表格分页的请求参数 | {page: pageSize: '} | Object | true | | | tableConfigField | 表格数据源字段 | [] | Array | true | | | tableColumnFormatter | 表格筛选方法 | | Function | false | | | btnTableColumnOption | 表格操作按钮显示与否 | | Function | false | | | formGlobalConfigProps | 表单全局配置 | | Object | false | | | tableFormSearchConfig | 表格搜索配置 | | Array | false | | | tableFormBottonConfig | 表格下按钮区域 | | Array | false | | | headerConfig | 请求头参数 | | Object | false | |

三:table方法(额外函数)

ps:已经继承了element-ui的table的大多数常用方法,可直接调用,如clearSelection,setCurrentRow

| 函数名 | 说明 | 返回值 | | -------------------- | -------------- | -------------- | | getMultipleSelection | 获取已选中数据 | 已选中数据列表 | | setPage | 手动设置数据 | 无 |

四.回调方法(额外函数)

ps:已经继承了element-ui的table的大多数常用方法,可直接调用,如row-click,selection-change

| 函数名 | 说明 | 参数 | | ---------------- | ------------------------------------------ | ---------------------------------------- | | tableColumnClick | 表格操作列点击回调 | row,btType(当前点击行,当前点击按钮类型) | | btnTableClick | 按钮区域点击 | type(当前点击类型) | | autoPage | autoRequestSetPage为true时,每次请求时触发 | 后台返回的data |

五.部分参数详解

autoRequestSetPage

​ 手动处理返回数据。 可能每个接口返回的数据结构不一致,需要手动处理一下。当autoRequestSetPage为true时,需要监听autoPage方法。方法会返回两个参数,一个为后台请求回来的数据(未处理),一个为callback函数,手动处理完成后必须调用callback,callback(data,total)接收两个参数,data为处理后的列表数据,total为数据总长度,当分页方式为web时,total可不传。

tablePaginationConfigAuto

​ 用来设置分页信息的参数

 因为每个项目或接口的page和pagesize参数基本会不一致,所以用来自定义page和pagesize参数,此参数有默认值为 {
    page: 'currentPage',
	pageSize: 'pagesize'
 }
tableConfigField

​ 用来设置表头信息的参数列表

| 参数名 | 说明 | 类型 | 是否必须 | | --------- | -------------------------------------------------- | ------- | -------- | | id | id值,为prop使用的值 | null | true | | name | 列头显示名 | string | true | | type | 显示类型,可选option,imgage,默认为空 | string | false | | formatter | 是否需要筛选,可以通过tableColumnFormatter进行筛选 | Boolean | false | | isHtml | 是否为html片段 | Boolean | false | | data | type为option时需要,同tableFormBottonConfig参数 | Array | false | | sortable | 是否支持排序(原生属性) | Boolean | false | | width | 行宽度(原生属性) | Number | false | | fixed | 是否固定(原生属性) | Boolean | false |

tableColumnFormatter(row, column, cellValue, index)

​ 用来筛选内容的方法,每次都会调用,必须返回处理值

| 返回值 | 说明 | | --------- | ----------- | | row | 当前行 | | column | 当前列 | | cellValue | 当前cell值 | | index | 当前行index |

btnTableColumnOption(row, type)

​ 用来筛选行是否显示操作按钮,这非常常见,比如这一行的状态为未激活,那么操作按钮就不应该显示激活按钮。必须返回处理值

| 返回值 | 说明 | | ------ | -------------------------------- | | row | 当前行 | | type | 当前按钮type,为data-option-type |

formGlobalConfigProps

​ 用来设置表格搜索区域表单的参数列表....还没想到支持些啥~

| 参数 | 说明 | 类型 | 是否必须 | | ---- | ---------------- | ------ | -------- | | size | 搜索区域表单大小 | String | false |

tableFormSearchConfig

​ 表单搜索区域表单配置

| 参数 | 说明 | 类型 | 是否必须 | | ---------------- | ------------------------------------------------------------ | ------ | -------- | | id | 表单id,即搜索时使用的参数名 | String | true | | name | 表单组件名字 | String | false | | value | 组件默认值 | String | false | | type | 组件类型,支持input,select,date,daterange,rate,checkbox,inputNumber,cascader | String | true | | placeholder | 提示语 | String | false | | rules | 表单校验规则 | Array | false | | min | 为inputNumber,rate时支持 | Number | false | | max | 为inputNumber,rate时支持 | Number | false | | value-format | 为时间时支持 | String | false | | format | 为时间时支持 | String | false | | rangeSeparator | 中置文字(时间范围时支持) | String | false | | startPlaceholder | 开始时间提示(时间范围时支持) | String | false | | endPlaceholder | 结束时间提示(时间范围时支持) | String | false |

tableFormBottonConfig

搜索区域下方的按钮区域配置

| 参数 | 说明 | 类型 | 是否必须 | | ------- | ------------------------------------------------------------ | ------- | -------- | | type | 自定义类型 | String | true | | text | 按钮文字 | String | true | | icon | 按钮图标 | String | false | | btType | 按钮类型,primary / success / warning / danger / info / text | String | false | | size | 按钮大小,medium / small / mini | String | false | | loading | 按钮加载状态 | Boolean | false |

headerConfig

自定义请求头参数,两种方式添加 1.如上直接绑定到组件。 2.在Vue.use(OneTable,headerConfig)时初始化,则该项目下所有one-table请求都会带上该请求头