博客地址:https://ainyi.com/81

基于 element ui 的升级版穿梭框组件发布到 npm 啦

看过我之前博客的同学或许知道我之前写过关于 element 穿梭框组件重构的博客 关于 Element 组件的穿梭框的重构,当时还有一些同学直接通过微信询问很多关于这个组件的问题

去年在上家公司就重构过的穿梭框,一直懒得封装成一个 Vue 组件发布到 npm,现在趁着目前比较闲,就这几天继续完善和优化、迭代更新 + 封装,终于发布啦~

krry-transfer

基于 Element UI 的升级版穿梭框组件

  1. 多级多选穿梭框(常用于省市区三级联动)
  2. 针对数据量庞大的分页穿梭框

Example

kr-cascader

kr-paging

Specialty

kr-cascader 多级多选穿梭框

  1. 多级多选
  2. 当勾选省级并添加,过滤备选框的当前省级,同时在已选框该省级的子级合并成一个省级
  3. 当勾选市级并添加,过滤备选框的当前市级,同时在已选框该市级的子级合并成一个市级
  4. 当从已选框中移除数据,针对移除的数据是省、市、区分别在备选框新增这些数据
  5. 当父级勾选多个数据,下级方框展示的数据为最后勾选父级的子级集合
  6. 当多个勾选的父级逐个取消勾选,下级方框展示的数据为上一次勾选父级的子级集合
  7. 支持搜索

kr-paging 数据量庞大的分页穿梭框

  1. 实现分页
  2. 搜索,在所有数据里搜索(不是在当前分页的数据里搜索),这样就不用在每个分页都搜索一次;搜索后的结果也会自动分页
  3. 全选只在当前页里的全选
  4. 穿梭框左右两个框的联动

Install & Use

npm install krry-transfer --save

依赖 Element checkbox、button 组件和样式

import Vue from 'vue'
import krryTransfer from 'krry-transfer' Vue.use(krryTransfer) /*
* or 按需引入
* import { krryCascader, krryPaging } from 'krry-transfer'
*
* Vue.use(krryCascader)
* Vue.use(krryPaging)
*/

kr-cascader

<template>
<div>
<kr-cascader
:dataObj="dataObj"
:selectedData="selectedData"
></kr-cascader>
</div>
</template> <script>
export default {
data() {
return {
dataObj: {
province: {
'101103': '广东省',
},
city: {
'101103': [
{
id: 101164181112,
label: '深圳市'
}
]
},
county: {
'101164181112': [
{
id: 106105142126,
label: '宝安区'
}
]
}
},
selectedData: [
{
id: '101101-101101101112',
label: '北京市-通州区'
}
]
}
}
}
</script>

kr-paging

<template>
<div>
<kr-paging
:dataList="dataList"
:selectedData="selectedData"
:pageSize="100"
></kr-paging>
</div>
</template> <script>
export default {
data() {
return {
dataList: [
{
id: 0,
label: '这是第0条数据'
},
{
id: 1,
label: '这是第1条数据'
}
],
selectedData: [
{
id: 0,
label: '这是第0条数据'
}
]
}
}
}
</script>

API ( kr-cascader )

Attributes

name type default description
boxTitle Array ['省份', '城市', '区县', '选中地域'] 按顺序指定每个方框的 title
boxOperation Array ['添加省份', '添加城市', '添加区县', '删除地域'] 按顺序指定每个方框底部的操作文案
dataObj Object {} kr-cascader 的数据源
selectedData Array [] 已选数据集合

Events

name params description
onChange String: value:已选数据集合 当已选数据变化时触发的事件

Methods

name params description
getSelectedData - 获取已选数据集合的钩子

注:dataObj、selectedData 的数据格式如下

dataObj(kr-cascader 的数据源):

dataObj: {
province: {
'省id': 'xx省'
},
city: {
'省id': [
{
id: '市id',
label: 'xx市'
}
]
},
county: {
'市id': [
{
id: '区id',
label: 'xx区'
}
]
}
}

selectedData(已选数据集合):

selectedData: [
{
id: '101111',
label: '内蒙古自治区'
},
{
id: '101101-101101101112',
label: '北京市-通州区'
},
{
id: '101103-101164001112-106197987125',
label: '广东省-惠州市-惠城区'
}
]

API ( kr-paging )

Attributes

name type default description
boxTitle Array ['待选区', '已选中'] 按顺序指定每个方框的 title
pageSize Number 160 分页大小
dataList Array [] kr-paging 的数据源
selectedData Array [] 已选数据集合

Events

name params description
onChange String: value:已选数据集合 当已选数据变化时触发的事件

Methods

name params description
getSelectedData - 获取已选数据集合的钩子

About

npm:krry-transfer

Blog:Krryblog

GitHub:krry-transfer

License

MIT

Issue

有个小问题纠结了很久,在做按需加载模块的时候,遇到ES6 import 解构失败的问题,网上查了一下,才知道是 babel 对 export default 的处理,例如:

export default {
host: 'localhost',
port: 80
}

变成了

module.exports.default = {
host: 'localhost',
port: 80
}

参考文章:ES6 export default 和 import语句中的解构赋值

解决方法是使用 babel-plugin-add-module-exports 插件,在 .babelrc 配置:

{
"presets": [["env", { "modules": "commonjs" }]],
"plugins": ["add-module-exports"]
}

博客地址:https://ainyi.com/81

krry-transfer ⏤ 基于 element 的升级版穿梭框组件发布到 npm 啦的更多相关文章

  1. 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm

    前言:之前在网上找的好多都是基于vue-cli 2.x的,而使用vue-cli 3的文章比较少,Vue CLI 3 中文文档,所以我在自己尝试的时候把几篇文章结合了一下,调出来了我想要的模式,也就是V ...

  2. 基于element ui的级联选择器组件实现的分类后台接口

    今天在做资产管理系统的时候遇到一个分类的级联选择器,前端是用的element的组件,需要后台提供接口支持.     这个组件需要传入的数据结构大概是这样的,详细的可参考官方案例: [{ value: ...

  3. VUE+ElementUI实现左侧为树形结构、右侧无层级结构的穿梭框

    工作中遇到一个需求,需要将一个数据选择做成穿梭框,但是要求穿梭框左侧为树形结构.右侧为无层级结构的数据展示,ElementUI自身无法在穿梭框中添加树形结构,网上搜到了大佬封装的插件但是对于右侧的无树 ...

  4. vue3系列:vue3.0自定义弹框组件V3Popup|vue3.x手机端弹框组件

    基于Vue3.0开发的轻量级手机端弹框组件V3Popup. 之前有分享一个vue2.x移动端弹框组件,今天给大家带来的是Vue3实现自定义弹框组件. V3Popup 基于vue3.x实现的移动端弹出框 ...

  5. vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询

    vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询 基于element Transfer http://element-cn.eleme.io/#/zh-CN/comp ...

  6. vue2.0 + element ui 实现表格穿梭框

    element ui 官网里介绍了穿梭框(Transfer),但在实际使用过程中,会出现一些问题: 1.穿梭框里能放置的内容太少,不能满足复杂的业务需求. 2.当选项过多时,穿梭框很难实现分页,左右两 ...

  7. Ant Design Pro中Transfer穿梭框的实际用法(与后端交互)

    Ant Design Pro中Transfer穿梭框的实际用法(与后端交互) 该控件的属性以及属性的作用在ADP的官方文档中都有介绍,但没有讲如何与后端交互,本文旨在讲解该控件与后端的交互. Ant ...

  8. 手把手教学~基于element封装tree树状下拉框

    在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用.在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍. 通过这篇文章,你可以了解学习到一个树 ...

  9. 如何在vue+element中实现选择框和穿梭框的根据拼音以及拼音首字母以及汉字的模糊搜索

    1.汉字: 直接添加对应的 filterable     2.拼音: 穿梭框和选择器的实现方式有所不同   选择器:   <1>下载pinyin-match:   npm i --save ...

随机推荐

  1. mysql数据库安全性配置——日志记录

    一:开启数据库日志记录 (1)在查看数据库是否开启日志记录,默认是OFF,即关闭状态.(可在数据库中执行该查询语句,也可在服务器端执行) show variables like 'log_bin'; ...

  2. Centeos7部署Flask+Gunicorn+nginx

    一.环境安装 pip3 install flask pip3 install gunicorn pip3 install nginx 二.模块介绍 1.Flask是一个使用 Python 编写的轻量级 ...

  3. jar包冲突了?如何确定是和哪个jar包冲突了?

    导读:工程编译的时候好好地,怎么一运行就报各种的NoSuch***Error,猜测可能是jar包冲突了,但是究竟是和哪个jar包冲突了呢. 关键词:jar包冲突,NoSuchFileldError,N ...

  4. python win32com 读取带密码的excel

    之前用到的win32com读取带密码excel的相关内容,今天刚好准备整理下,突然发现方法又不灵了. 以下为错误示范: # 已知excel密码去除 def del_password(filename, ...

  5. Python3 学习笔记之 类型/运算符

    类型/运算符: 类型: 整数 字符串 浮点数 布尔类型 类型转换: 检查类型: 算术操作符: 逻辑操作符: 优先级:

  6. Web页面解析过程(浅)

    web页面流程 域名解析DNS 域名解析:把域名指向网络空间IP,让人们通过简单的域名访问Web网站的服务. DNS:域名系统 DNS服务器:记录着域名及其对应的IP地址 解析域名: ​ 浏览器中输入 ...

  7. Window下的VScode快捷键

    转载自4ark 全局 Ctrl + Shift + P, F1 显示命令面板 Ctrl + P 快速打开Ctrl + Shift + N 打开新窗口Ctrl + Shift + W 关闭窗口 基本 C ...

  8. Linux内存描述之高端内存–Linux内存管理(五)

    服务器体系与共享存储器架构 日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDriver ...

  9. BZOJ 1965 [AHOI2005]洗牌

    题目描述 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联提议用扑克牌打 ...

  10. VMware ESXI6.0服务器安装系列:RAID设置

    本文转载至http://www.scriptjc.com/article/847 1.连接显示器 2.插上键盘.U盘.显示器 3.看显示屏上的提示,按F12关机 4.关机前输入密码,然后按回车键 更换 ...