1.2.5 • Published 4 years ago

vant-plus v1.2.5

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

vant-plus

针对移动端增加的公共组件库和自定义指令,有些组件是基于vant的增强功能组件

安装

npm install vant-plus -S

引入VantPlus

完整引入

import Vue from 'vue'
import VantPlus from 'vant-plus'
import 'vant-plus/lib/vant-plus.css'
Vue.use(VantPlus)

new Vue({
  el: '#app',
  render: h => h(App)
})

按需引入

  import {
        Line,//下滑线自定义指令
        FieldTip,//输入框提示上移自定义指令
        VlpButton,//防抖按钮
        VlpCalendar,//日历
        VlpSearch,//增加防抖,节流功能,通过接口自动搜索组件
        VlpList,//下拉刷新,上拉加载,通过接口自动列表组件
        VlpDetail//key:value显示方式组件
  } from 'vant-plus'
  
  Vue.use(Line)
  Vue.use(FieldTip)
  Vue.use(VlpButton)
  Vue.use(VlpCalendar)
  Vue.use(VlpSearch)
  Vue.use(VlpList)
  Vue.use(VlpDetail)

组件使用说明

搜索组件:vlp-search

1、引入指令

import {VlpSearch} from 'vant-plus'

2、局部注册

components: {
    VlpSearch
  }

3、全局注册

Vue.use(VlpSearch)

4、属性

参数说明类型是否必填默认值
value绑定数据true
alias查询数据时的参数名Stringfalsevalue
showCancelButton是否显示取消Booleanfalsetrue
placeholderplaceholderStringfalse
searchText不显示取消时的按钮labelStringfalse'搜索'
tipInterface查询接口Functionfalse
params查询接口需要的其他参数Objectfalse
displayVisible是否显示Booleanfalsefalse
historyList历史记录Arrayfalse[]
autoShowHistory是否默认显示历史记录Booleanfalsefalse
autoHidden是否自动隐藏该搜索框Booleanfalsetrue

5、事件

事件名说明参数
search查询value

6、使用示例

 <vlp-search
   class="search-class"
   v-model="searchValue"
   :tipInterface="searchListInterface"
   placeholder="搜索名称"
  :historyList="historyList"
  :autoHidden="false"
  :displayVisible = "true"
  :autoShowHistory="true"
  @search="searchFun"
  @cancel="cancel"
  @deleteHistory="deleteHistory">
   </vlp-search>
import {  VlpSearch } from 'vant-plus'
export default {
  components: {
    VlpSearch
  },
  data() {
    return {
      searchListInterface: searchList,
      searchValue: '',
      visible: false,
      historyList: ['中国', '阿斯利康大家发生的'],
    }
  },
  methods: {
   searchFun(v) {
      this.parameter = { name: v }
      console.log('searchFun', v)
    },
    cancel() {
      this.$router.go(-1)
    },
    deleteHistory() {
      this.historyList = []
    }
  }
}

列表组件:vlp-list

支持下拉刷新,上拉加载,传入接口可以自动查询,list子项中留有插槽,可以设置自定义cart显示list中的内容. 不可自动加载数据时外部参数没有内容将不查询

1、引入指令

import {VlpList} from 'vant-plus'

2、局部注册

components: {
    VlpList
  }

3、全局注册

Vue.use(VlpList)

4、属性

参数说明类型是否必填默认值
interfaceFun接口Functiontrue
columns对应列Arraytrue
pageSize每页条数Numberfalse10
parameter接口其他参数Objectfalse
finishedText完成提示Stringfalse
errorText失败提示Stringfalse
loadingText加载中提示Stringfalse
offset滚动条与底部距离小于 offset 时触发load事件Numberfalse5
direction滚动触发加载的方向,可选值为upStringfalse'down'
refreshDisabled禁用刷新Booleanfalsefalse
pullingText下拉过程文案Stringfalse
autoLoad自动加载Booleanfalsefalse
load触发list重新加载数据(true:重新加载,false:不重新加载)Booleanfalsefalse
  • interfaceFun接口返回的数据格式 { code:0//返回码 msg:''//返回的信息 result:{//返回的结果 pageNum:1,//当前页 total:10,//总条数 list:[],//列表数据 pages:1//共几页 } }
  • 搜索时,建议设置:autoLoad=false

5、插槽slot

参数说明
list通过接口查询返回的结果

6、使用示例

 <vlp-list
  :interface-fun="searchList"
  :columns = "columns"
  :parameter = "parameter"
  >
   <template v-slot="list">
      <Card v-for="(item,index) in list" :key="index" :card-data="item" :label-columns='columns'>
      </Card>
    </template>
  </vlp-list>
import {  VlpList } from 'vant-plus'
import LabelColumns from 'columns'
import Card from '../components/card'
export default {
  components: {
    VlpList,
    Card
  },
  data() {
    return {
      searchListInterface: searchList,
      searchValue: '',
      visible: false,
      columns:LabelColumns,
      parameter:{id:1}
    }
  },
  methods: {
    searchFun(v) {
      console.log('searchFun...', v)
    }
  }
}

7、对应字段格式

参数说明类型是否必填默认值
name对应返回数据的字段名称Stringfalse
alias生成新对象的别名Stringfalse
className样式名称Stringfalse
list存在list数据显示成详细,alias为listArrayfalse
callback回调函数Functionfalse
tip提示Arrayfalse
//columns.js
// card
const cardLabel = [
  { name: 'actiontype', alias: 'tip', className: 'tip1' },
  { name: 'name', alias: 'title' ,tip:[`<span style='color:red'>tip</span>`]},
  { name: 'type', alias: 'subtitle', className: 'subtitle1' },
  { alias: 'list',
    list: [
      { label: '单号', name: 'actiontype' },
      { label: '日期', name: 'date' }
    ]
  },
  { alias: 'buttons',
    list: [
      { label: '去预约',
        callback: function(params){
          this.$router.push({ path: '/HelloWorld', params: params})
        }
      },
      { label: '重新派单',
        callback: function(params) {
          this.$router.push({ path: '/HelloWorld', params: params})
        }
      }
    ] }
]

export default {
  cardLabel
}

export {
  cardLabel
}
//interface.js

export function ListObj(params) {
  console.log('searchListObj', params)
  return new Promise(resolve => {
    resolve({
      code: 0,
      msg: 'success',
      result: {
        pageNum: 1,
        pageSize: 10,
        pages: 1,
        total: 5,
        list: [
          {
            actiontype: '任务1',
            name: '安徽牛肉拉面',
            type: '微辣',
            danhao: 'SS2019091100001',
            date: 1572331173000

          },
          {
            actiontype: '维护2',
            name: '大盘鸡鸡蛋面',
            type: '不辣',
            danhao: 'SS2018091100001',
            date: 1572331100000

          },
          {
            actiontype: '任务3',
            name: '大盘鸡鸡蛋面3',
            type: '不辣',
            danhao: 'SS2019091100001',
            date: 1572331173000

          },
          {
            actiontype: '维护4',
            name: '大盘鸡鸡蛋面4',
            type: '微辣',
            danhao: 'SS2018091100001',
            date: 1572331100000

          },
          {
            actiontype: '任务5',
            name: '大盘鸡鸡蛋面5',
            type: '不辣',
            danhao: 'SS2019091100001',
            date: 1572331173000

          },
        ]
      }
    })
  });
}

搜索组件:vlp-detail

1、引入指令

import {VlpDetail} from 'vant-plus'

2、局部注册

components: {
    VlpDetail
  }

3、全局注册

Vue.use(VlpDetail)

4、属性

参数说明类型是否必填默认值
data显示数据Arraytrue

5、数据格式

[ {label:'姓名',name:'name',value:'',tip:'tip'}//若存在tip增加tip的html内容 ]

6、使用示例

<vlp-detail :data="data"></vlp-detail>
import {  VlpDetail } from 'vant-plus'
export default {
 name: 'VlpCard',
 components: {
   Detail
 },
 data(){
   return {
     data:[
       {label:'姓名',name:'name',value:'姓名',tip:['<span style="color:red">tip</span>']},
       {label:'性别',name:'sex',value:'性别',tip:['<span style="color:red">tip1</span>']}
     ]
   }
 }
}

处理对应字段方法handleListInfo

参数说明类型是否必填默认值
LabelArray模板数据结构Arraytrue
DTO后端返回数据Objecttrue

处理方法

  import {handleListInfo,VlpDetail} from 'vant-plus'
  import LabelColumns from 'cloumns.js'
  const cardData = {
            actiontype: '安装任务1',
            name: '北京房朝阳区一店1',
            type: '药店',
            danhao: 'SS2019091100001',
            date: 1572331173000
      }

export default { components: { VlpDetail }, data() { return { data: {} } }, beforeMount() { this.data = handleListInfo(LabelColumns, cardData) // console.log('beforeMount cardData...', this.data) }

} handleListInfo(cardLabel,DTO)

### 防抖按钮:vlp-button
 #### 1、引入指令

import {VlpButton} from 'vant-plus'

 #### 2、局部注册

components: { VlpButton }

 #### 3、全局注册

Vue.use(VlpButton)

 #### 4、属性
 | 参数 | 说明 | 类型 | 是否必填| 默认值|
|------|------------|------------|----------|----|
| type  | 类型,可选值为 primary info warning danger  | String | false | 'default' |
| size  | 尺寸,可选值为 large small mini | String| false | 'normal' |
| text  | 按钮文字  | String | false | |
| color  | 按钮颜色,支持传入linear-gradient渐变色 | String| false |  |
| icon  | 左侧图标名称或图片链接  | String | false | |
| tag  | HTML 标签 | String| false |  |
 #### 5、事件
| 参数 | 说明 | 类型 |
|------|------------|------------|----------|----|
| click  | 点击  | 
#### 6、插槽
| 参数 | 说明 | 类型 |
|------|------------|------------|----------|----|
| slot  | 按钮直接的内容 | 

#### 7、使用示例

```html
<vlp-button @click="click">查询</vlp-button>
import {  VlpButton } from 'vant-plus'
export default {
  components: {
    VlpButton
  },
  methods: {
    click() {
      console.log('click...')
    }
  }
}

日历组件:vlp-calendar

1、引入指令

import {VlpCalendar} from 'vant-plus'

2、局部注册

components: {
    VlpCalendar
  }

3、全局注册

Vue.use(VlpCalendar)

4、属性

参数说明类型是否必填默认值
agoDayHide某个日期以前的不允许点击 时间戳10位Stringfalse
isWeek是否显示周几Booleantrue
propWord可传入内容 (周、星期)String'周'
isShowBtn左上角是否显示'回今天'按钮Booleanfalsefalse
todayBack可传入按钮显示值,只有isShowBtn为true时支持Stringfalse'回今天'
isShowCalendar控制日历的显示和隐藏Booleanfalsefalse
operatorDate入口,可以自定义某个日期,只支持一个日期,格式为'2019-11-24'Stringfalse''
markDateMore如果需要某月的几天被标注,传当月的日期数组。如"2018/2/2","2018/2/6"被会标注(相同的标记)Arrayfalse
markDatearr='2018/4/1','2018/4/3' 标记4月1日和4月3日 简单标记Arrayfalse

5、事件

参数说明类型
choseDay选中某天调用的方法,返回选中的日期 YY-MM-DD
isToday切换月份的时候,如果切到当前月份,调用这个方法,返回当前月今天
changeMonth切换月份调用的方法,返回切换到某月的日期 YY-MM-DD

6、使用示例

<vlp-calendar
    ref="Calendar"
    @choseDay="clickDay"
    @isToday="clickToday"
    @changeMonth="changeDate"
    :agoDayHide="limitDate"
    :isShowBtn="isShowBtn"
    :isShowCalendar="isShowCalendar"
    :operatorDate = "operatorDate"
    :markDateMore="markDate"
    :todayBack="按钮内容"
    :isWeek="false"
    />
import {  VlpCalendar } from 'vant-plus'
export default {
  components: {
    VlpCalendar
  },
  // 时间转10位时间戳
  created() {
    this.limitDate = Math.round((new Date().getTime() - (24 * 60 * 60 * 1000)) / 1000).toString()
  },
  methods: {
    // 调接口获取有待办事项的数据   下期再加mark1
    // getQuery() {
    //   this.markDate = [{ date: '2019/11/01', className: 'mark1' }, { date: '2019/10/29', className: 'mark1' }]
    // },
    clickToday(v) {
      this.todayDate = v
    },
    clickDay(v) {
      if (v.calendarDate !== this.todayDate) {
        this.isShowBtn = true
      } else {
        this.isShowBtn = false
      }
      this.chDate = v.calendarDate
    },
    changeDate(v) {

    }
  }
}

步骤组件:vlp-steps

1、引入指令

import {VlpSteps} from 'vant-plus'

2、局部注册

components: {
    VlpSteps
  }

3、全局注册

Vue.use(VlpSteps)

4、属性

参数说明类型是否必填默认值
data显示数据Objecttrue
end是否最后一个节点Booleanfalsefalse

5、data属性说明

参数说明类型是否必填默认值
title主标题Stringtrue
status当前状态(wait,pass,warning),也可以自定义style样式来设置状态样式Stringfalsewait
icon图标名称Stringfalse'warning'默认使用vant-icon中的名字
style设置样式Objectfalse
  • style中可以设置line和icon的样式如:
  style: {
      icon: {
        color: '#F77200',
        fontSize:'18px'
      },
      line: {
        background:'#23C2B7'
      }
  }

6、使用示例

   <vlp-steps :data="item" :end="data.length===(index+1)" v-for="(item,index) in data" :key="index">
     <div class="title">{{item.title}} <span style="color:#23C2B7">{{item.title | filterTitle}}</span></div>
     <div class="detail" v-for="(d,index) in item.list" :key="index">{{d}}</div>
   </vlp-steps>
import {  VlpSteps } from 'vant-plus'
export default {
 name: 'VlpSteps',
 components: {
   VlpSteps
 },
  data() {
   return {
     data: [{
       title: '标题1',
       status: 'warning',
       style: {
         icon: {
           color: '#F77200',
           fontSize: '18px'
         },
         line: {
           background: '#23C2B7'
         }
       },
       list: [
         '告警',
         '2019-03-12 22:12'
       ]
     },
     {
       title: '标题2',
       status: 'pass',
       icon: 'checked',
       style: {
         icon: {
           color: '#23C2B7'
         }
       },
       list: [
         '审核通过',
         '2019-03-15 22:12'
       ]
     },
     {
       title: '标题3',
       checked: 'wait',
       icon: 'warning',
       list: [
         '等待审核',
         '二级审核通过',
         '2019-03-19 22:12'
       ]
     }
     ]
   }
 },
 filters: {
   filterTitle: function(v) {
     return v === '标题1' ? '副标题' : ''
   }
 }
}
}

步骤组件:vlp-touch

上下滑动触发加载

1、引入指令

import {VlpTouch} from 'vant-plus'

2、局部注册

components: {
    VlpTouch
  }

3、全局注册

Vue.use(VlpTouch)

4、属性

参数说明类型是否必填默认值
target用于判断是否触及顶部或底部的目标对象Elementtrue
loading是否加载中false:未加载,true:加载中Booleanfalsefalse
finished是否加载完成:true为加载完成,将不再触发加载Booleanfalsefalse
error是否出错Booleanfalsefalse
pullDirection滑动方向up:向上滑动,down:向下滑动Stringfalse'up'
defaultText默认提示文字Stringfalse'上拉加载更多'
loadingText加载中提示文字Stringfalse'加载中....'
finishedText加载完成提示文字Stringfalse'已加载完成'
errorText加载完成提示文字Stringfalse'加载失败,请点击重新加载'

5、事件

参数说明类型是否必填默认值
load上拉加载或点击报错时候的信息时触发function

6、使用示例

    <vlp-touch
     :target="target"
     :loading="loading"
     :finished="finished"
     :error="error"
     pullDirection="up"
     @load="load">
   <div
        id="aa"
        style="width:100%;height:500px;overflow:auto">
           <span v-for="(item,index) in data" :key = index>{{item}}<br/>></span>
        </div>
 </vlp-touch>
import {  VlpTouch } from 'vant-plus'
export default {
 components: {
   VlpTouch
 },
 data() {
   return {
     target: {},
     data: [],
     loading: false,
     count: 0,
     finished: false,
     error: false
   }
 },
 created() {
   this.data = Array(50).fill('内容')
 },
 mounted() {
   this.target = document.getElementById('aa')
 },
 methods: {
   load() {
     this.loading = true
     setTimeout(() => {
       console.log('加载。。')
       this.loading = false
       if (this.count === 3) this.error = true
       this.count++
       if (this.count === 4) this.finished = true
     }, 1000)
   }
 }
}
1.2.5

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago