znl-vue-ui-new

1.0.13 • Public • Published

vue-znl-ui

正能量vue组件库

查看完整文档查看文档

完整引入

在 main.js 中写入以下内容:

import Vue from 'vue'
import vueZnlUi from 'vue-znl-ui'
import 'vue-znl-ui/dist/theme-chalk/index.css';

Vue.use(vueZnlUi)

注意样式文件需要单独引入。

按需引入

import Vue from 'vue';
import { Button, Lists } from 'vue-znl-ui';
import App from './App.vue';

Vue.use(Button)
Vue.use(Lists)

Table of Contents

znl-gridmodule

  • 用于展示多条结构类似的数据
  • 基础的表格数据

基础表格 (demo)

<znl-gridmodule
  :on-init="onInit"
  :columns="columns"
  :item-source="itemSource"
  :on-refresh="onRefresh"
  :show-header="false"
  :on-save-setting="null"
  @cell-click="cellClick"
  :on-save-config="onSaveConfig"
  ref="znltablebase"
  gridtype="action"
  @current-row-change="currentRowChange"
  >

  <znl-button @click="changeCurrentCell">changeCurrentCell</znl-button>
</znl-gridmodule>
<script>
  export default {
    data() {
      return {
        columns: [],
        itemSource: []
      };
    },

    methods: {
      async onInit () {
        this.columns = [
          {
            binding: 'Model',
            name: 'Model',
            header: '型号',
            visible: true,
            dataType: 1,
            width: 100,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'Year',
            name: 'Year',
            header: '年份',
            visible: true,
            dataType: 1,
            width: 200,
            isReadOnly: true,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'AdoptQty ',
            name: 'AdoptQty ',
            header: '采纳数量',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            dataMap: [{ key: 1, value: '可用' }, { key: 2, value: '禁用' }],
            showDropDown: true,
            isSystem: false
          },
          {
            binding: 'ProductCategory ',
            name: 'ProductCategory ',
            header: '产品类型',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'StorageName ',
            name: 'StorageName ',
            header: '位置',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          }
        ]
        this.itemSource = [
          {
            Model: 'LM358',
            Year: '2015-05-01',
            AdoptQty: 1,
            ProductCategory: '原装',
            StorageName: '深圳北'
          },
          {
            Model: 'AST',
            Year: '2014-05-04',
            AdoptQty: 2,
            ProductCategory: '现货',
            StorageName: '北京'
          },
          {
            Model: 'LM357',
            Year: '2016-05-01',
            AdoptQty: 1,
            ProductCategory: '原装',
            StorageName: '上海'
          },
          {
            Model: 'LM356',
            Year: '2017-05-04',
            AdoptQty: 2,
            ProductCategory: '现货',
            StorageName: '广州'
          },
          {
            Model: 'LM359',
            Year: '2018-05-01',
            AdoptQty: 1,
            ProductCategory: '原装',
            StorageName: '深圳北'
          }
        ]
      }

    },

    watch: {

    }
  };
</script>

可编辑表格 (demo)

<znl-gridmodule
  gridtype="action"
  header="供应商库存"
  :table-handle="true"
  :on-init="onInit"
  :columns="columns"
  :item-source="itemSource"
  :on-refresh="onRefresh"
  :right-menus="rightMenus"
  :on-page-changed="onPageChanged"
  pagination-position="top"
  :page-index="1"
  :page-size="5"
  :total-count="30"
  :cell-line-height="30"
  :is-fields-search="true"
  :is-multi-rows-check="true"
  ref="edittable"
  :on-search="onSearch"
  @select-change="selectChange"
  :enter-cellmoves-direction="true"
  @shortcut-column-switch="shortcutColumnSwitch"
  @switch-hide-column="switchHideColumn"
  :on-save-setting="onSaveSetting"
  >

  <div slot="action-form">
    <znl-input placeholder="请输入数据" :width="100"></znl-input>
    <znl-button @click="toggleRowSelection">点击执行</znl-button>
    <znl-button style-type="main" @click="getChangedData">获取修改的数据</znl-button>
  </div>

  <div slot="heading-slot">
    <znl-input placeholder="请输入数据" :width="100"></znl-input>
    <znl-button >点击执行</znl-button>
    <znl-button @click="clickHandler1">点击搜索</znl-button>
  </div>
</znl-gridmodule>
<script>
  export default {
    data() {
      return {
        columns: [],
        itemSource: [],
        rightMenus: [
          {
            text: '测试',
            iconName: 'icon-table_set_btn_n',
            disabled: true,
            display: true,
            click: (row) => {
              console.log(row)
            }
          }
        ]
      };
    },

    methods: {
      async onInit () {
        this.columns = [
          {
            binding: 'Model',
            name: 'Model',
            header: '型号',
            visible: true,
            dataType: 1,
            width: 100,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'Year',
            name: 'Year',
            header: '年份',
            visible: true,
            dataType: 1,
            width: 200,
            isReadOnly: true,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'AdoptQty ',
            name: 'AdoptQty ',
            header: '采纳数量',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'ProductCategory ',
            name: 'ProductCategory ',
            header: '产品类型',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'StorageName ',
            name: 'StorageName ',
            header: '位置',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          }
        ]
        this.itemSource = [
          {
            Model: 'LM358',
            Year: '2015-05-01',
            AdoptQty: 100,
            ProductCategory: '原装',
            StorageName: '深圳北'
          },
          {
            Model: 'AST',
            Year: '2014-05-04',
            AdoptQty: 200,
            ProductCategory: '现货',
            StorageName: '北京'
          },
          {
            Model: 'LM357',
            Year: '2016-05-01',
            AdoptQty: 300,
            ProductCategory: '原装',
            StorageName: '上海'
          },
          {
            Model: 'LM356',
            Year: '2017-05-04',
            AdoptQty: 400,
            ProductCategory: '现货',
            StorageName: '广州'
          },
          {
            Model: 'LM359',
            Year: '2018-05-01',
            AdoptQty: 500,
            ProductCategory: '原装',
            StorageName: '深圳北'
          }
        ]
      },
      async onRefresh () {
        console.log(123)
      },
      onPageChanged () {

      }

    },

    watch: {

    }
  };
</script>

灵活的列配置 (demo)

<znl-gridmodule
  gridtype="action"
  header="供应商库存"
  loading-type="animation"
  ref="flexGrid"
  :on-init="onInit"
  :columns="columns1"
  :item-source="itemSource1"
  :on-refresh="onRefresh"
  :is-multi-rows-check="true"
  :right-menus="rightMenus"
  :on-save-rows="onSaveRow"
  :btn-mouse-enter-menus="btnMouseEnterMenus"
  >

  <div slot="action-form">
    <znl-input placeholder="请输入数据" :width="100"></znl-input>
    <znl-button  @click="clickHandler">点击执行</znl-button>
    <znl-button style-type="main">点击搜索</znl-button>
  </div>

  <div slot="heading-slot">
    <znl-input placeholder="请输入数据" :width="100"></znl-input>
    <znl-button >点击执行</znl-button>
    <znl-button >点击搜索</znl-button>
  </div>

  <znl-dialog-mini :visible.sync="dialogMiniVisible" :options="options">
    <div>123</div>
  </znl-dialog-mini>
</znl-gridmodule>
<script>
  export default {
    data() {
      return {
        columns: [],
        itemSource: [],
        options: {},
        dialogMiniVisible: false,
        btnMouseEnterMenus: {
          List: [
            {
              name: '增加',
              click () {
                this.dialogMiniVisible = true
              }
            },
            {
              name: '设置'
            }
          ],
          Binding: 'Model'
        },
        rightMenus: [
          {
            text: '测试',
            iconName: 'icon-table_set_btn_n',
            disabled: false,
            display: true,
            click: (row) => {
              console.log(row)
            }
          }
        ]
      };
    },

    methods: {
      mouseMenuConfig (config) {
        this.options = config
      },
      async onInit () {
        this.columns1 = [
          {
            binding: 'Model',
            name: 'Model',
            header: '型号',
            visible: true,
            dataType: 1,
            width: 100,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false,
            IsUpperCase: true
          },
          {
            binding: 'Year',
            name: 'Year',
            header: '年份',
            visible: true,
            dataType: 1,
            width: 200,
            isReadOnly: true,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'AdoptQty ',
            name: 'AdoptQty ',
            header: '采纳数量',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false,
            IsUpperCase: true
          },
          {
            binding: 'ProductCategory ',
            name: 'ProductCategory ',
            header: '产品类型',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          },
          {
            binding: 'StorageName ',
            name: 'StorageName ',
            header: '位置',
            visible: true,
            dataType: 1,
            width: 150,
            isReadOnly: false,
            isFieldSearch: true,
            isSystem: false
          }
        ]
        this.itemSource1 = [
          {
            Model: 'LM358',
            Year: '2015-05-01',
            AdoptQty: 100,
            ProductCategory: '原装',
            StorageName: '深圳北'
          },
          {
            Model: 'AST',
            Year: '2014-05-04',
            AdoptQty: 200,
            ProductCategory: '现货',
            StorageName: '北京'
          },
          {
            Model: 'LM357',
            Year: '2016-05-01',
            AdoptQty: 300,
            ProductCategory: '原装',
            StorageName: '上海'
          },
          {
            Model: 'LM356',
            Year: '2017-05-04',
            AdoptQty: 400,
            ProductCategory: '现货',
            StorageName: '广州'
          },
          {
            Model: 'LM359',
            Year: '2018-05-01',
            AdoptQty: 500,
            ProductCategory: '原装',
            StorageName: '深圳北'
          }
        ]

        _.each(this.columns1, column => {
          if (column.binding === 'Model') {
            column.buttons = [
              {
                content: (row) => {return row.Model},
                className: 'button-test'
              }
            ]
          }
        })
      },
      async onRefresh () {

      }

    },

    watch: {

    }
  };
</script>
<style>
.znl-dialog-mini li{
  list-style: none;
  padding: 3px 10px;
  &:hover{
    background-color: #ee7700;
  }
}
</style>

Table Attributes (属性)

属性名 作用 默认值 类型 是否必须 参数
on-init 初始化函数 Function yes
columns 表格列配置 Array yes
item-source 表格数据 [] Array
table-row-class-name 表格行类名 Function [{row, rowIndex}]
show-header 是否显示标题行(兼容hasZnlBtns) Boolean true
on-refresh 刷新方法(存在时显示刷新按钮及右键刷新菜单) Function
on-save-setting 设置方法(用于配置表格,存在时显示设置按钮及展开列按钮) Function columns, pageSize
on-save-config 单列设置方法 Function columns, pageSize
header 标题
is-init 是否用传入的初始化函数初始化组件 true Boolean
is-fields-search 是否支持搜索 false Boolean
search-fields 搜索条件(组件会监听这个传入的参数变化,传入搜索条件改变时触发onsearch) Object
on-search 搜索方法 Function params
on-page-changed 翻页方法(存在时显示分页器) Function
page-size 每页条数 20 Number
page-index 当前页 1 Number
total-count 总条数 Number
action-btns 顶部按钮组数据[name:名称,iconName:图标,click:点击事件,tip: 提示文字] [] Array
gridtype 表格类型(action / base) base String
is-multi-rows-check 可否多选(多选情况下有第一列选择框) false Boolean
is-multi-rows-check-fixed 多选项是否冻结(默认冻结,建议弹框中使用时修改false,否则有不可预估的bug) true Boolean
show-delete-row-right-menu 是否显示右键删除按钮 true Boolean
show-save-btn 是否存在保存按钮 true Boolean
onResetSetting 重置列设置方法 Function
onResetParams 重置参数设置方法 Function
users 权限设置所有用户 Array
tooltip-content 表格的说明文字,鼠标悬浮在标题处显示 String
from-btns 表单按钮组(配置同action-btns) Array
from-save-btns 表单按钮组(配置同action-btns,增加class配置) Array
btn-mouse-enter-menus 鼠标悬浮在单元格按钮上显示的列表,必含字段{List: [{iconName,name,click}] Binding} {List: [],Binding:''} Object
is-show-rightbtns 是否显示头部右侧全部按钮 true Boolean
is-show-frombtns 是否显示form表单按钮行 true Boolean
show-summary 是否显示表格底部的合计行 false Boolean
sum-text 合计行第一列默认文字 合计 String
summary-method 自定义合计计算方法(默认累加number类型数据) Function { columns, data } = param
is-activity 是否为可活动表格(控件右上角可切换表格隐藏) false Boolean
loading loading false Boolean
element-loading-text loading说明文字 数据加载中,请稍后... String
pagination-position 分页器位置(top,bottom) bottom String
cell-draggable 是否允许单元格拖动 false Boolean
table-tip 表格提示(鼠标悬浮显示) String
action-form-height action-form插槽高度 38 Number
header-height 标题行高度 38 Number
height 表格组件高度 100% Number,String
max-height 表格组件最大高度 Number
min-height 表格组件最小高度 Number
footer-height 分页器高度(pagination-position为bottom时,即分页器位置在底部时有效) 32 Number
loading-type 加载loading的动画效果(默认原效果,新增animation选项,在刷新出体现loading动画,小视觉效果) icon String
cell-line-height 单元格行高 28px Number
shortcut-column-handler 自定义便捷操作列的方法,可在外部自定义显示/隐藏时显示的列(仍会触发图标切换和shortcut-column-switch事件) Function
enter-cellmoves-direction 回车键选中单元格向下移动

Table Events(事件)

事件名 作用 参数
page-loading 初始化请求时/请求失败时触发 初始化请求true/请求失败false
ondblclick 双击单元格时触发 row, col, cell, grid, noVisibleCols, index
config-tab-changed 表格配置切换到权限时触发
multiple-change 组件编辑有多选下拉框时,多选值被修改时抛出 val,row
shortcut-column-switch 表格切换/隐藏默认设置隐藏的列的时候触发 当前隐藏/显示的状态, cols
switch-hide-column 点击表头单独隐藏列时触发 column, columns
cell-click 点击单元格触发 row, column, cell, event

Table Methods(方法)

事件名 作用 参数 返回
search 执行搜索函数 当前条件
getSelectedRows 获取选择的数据 datas
toggleTableShow 设置表格内容显示或隐藏 true(显示)/false(隐藏)/无参数(隐藏、显示切换)
checkRow 选中单行数据 index(Number类型,不设置时默认选中第一行数据,设置index时显示设置的行数据)
reFMHeight 当formModule模块在外部切换其高度时,或 表格外部布局调整时可能需要调用此方法重新布局表格高度。
getChangedData 获取修改过的数据 datas

Table Slot(插槽)

插槽名 说明
header 标题的solt形式嵌入
action-form 顶部搜索栏(按钮组下方,存在该插槽时has-znl-actions参数必需为true)
from-module 表格中插入表单(或其他)插槽
znl-footer-slot 底部插槽
from-content 表单按钮行中间插槽,适用于存放其他按钮,下拉、输入框等
heading-slot 表头slot

Cloumn (列配置)

属性名 作用 默认值 类型 是否必须 参数
visible 是否显示 Boolen yes
className 列类名 String
align 单元格对齐方式(left,right,center) left String
name 列字段 String
isReadOnly 是否只读 true Boolen
dataType 数据类型 String-1,Number-2,Object-3, Date-4,Boolean-5,Array-6 Number yes
showDropDown 数据是否以下拉框方式显示(需配置dataMap) false Boolen
dataMap 如果数据是下拉选择数据需配置该属性 Array
binding 列绑定字段 String yes
header 列名 String
width 列宽度 Number yes
isFieldSearch 该列是否允许搜索 false Boolean
isSystem 是否系统配置(系统配置不显示,用户不可修改) false Boolean
multiple 是否为多选下拉框 false Boolean
mapping 为多选下拉框时,选项字段(包含在数据itemSource中,字段绑定数组,列binding绑定String) String
separator 数据显示分隔符 / String
IsUpperCase 该列数据编辑时是否转换为大写 false Boolean
renderCell 单元格渲染方法 Function h, cellObj{row,column, columnIndex}
headerElement 表头渲染方法 Function
buttons 自定义渲染的按钮,需返回数组[{content, icon,click()}] Function / Array row, colunm
elements 自定义html渲染,需返回数组 Function currentValue, {row, column, columnIndex}
isCheckedColumn 是否为选择列 Boolean
IsUpperCase 该列在编辑输入时是否转换为大写 false Boolean
hasRole 是否有权限查看该列,无权限时全部展开后不会显示该列 false Boolean
customFilter 自定义数据过滤方法 Function(value, column, row)
renderHeader 表头渲染方法 Function(h)

item-source中包含字段isReadOnly为true时该行只读(不可编辑)

isReadOnly 行不可编辑 DisplayEdit 正行允许编辑(当列不可编辑时设置该属性可使行可编辑) ReadOnlyBindings Arrat 当前行可编辑时,该参数决定不可编辑的列

column.buttons配置

属性名 作用 默认值 类型 是否必须
content 按钮显示文字的内容 String yes
className 类名 String
when 是否显示 true [Function, Boolean]
click 点击方法 Function

column.elements配置

属性名 作用 默认值 类型 是否必须
name 显示元素 String yes
click 单击事件 Function
mouseenter 鼠标移入事件 Function
mouseleave 鼠标移出事件 Function

rightMenus右键菜单配置选项

属性名 作用 默认值 类型 是否必须
iconName 字体图标 String
text 显示内容 String yes
display 是否显示 true Boolean
click 触发函数 Function

Readme

Keywords

Package Sidebar

Install

npm i znl-vue-ui-new

Weekly Downloads

5

Version

1.0.13

License

MIT

Unpacked Size

50.4 MB

Total Files

423

Last publish

Collaborators

  • liyang19960213