vue+element 二次组件封装:表单、列表、下拉树、弹出选择、折叠卡片等(持续更新npm依赖)

7 篇文章 0 订阅

基于vue+element开发前端时,封装的一些组件,持续更新npm依赖,不喜勿喷

安装

npm地址

npm i vue-zeary-ctrl

import vueZearyCtrl from "vue-zeary-ctrl";
//参数默认值{lang:'zh',messageDuration:3000}
Vue.use(vueZearyCtrl);

全局扩展方法

在这里插入图片描述

方法使用说明
Loadingthis.$vzcLoading(text, callback(loading))
Messagethis.$vzcMessage(message, type)类型 success/warning/info/error,默认类型 info
Alertthis.$vzcAlert(content, title, callback)
Confirmthis.$vzcConfirm(content, title, confirmCallback, cancelCallback)
排序let datas = this.$vzcOrderBy(datas, col, type)(支持对象数组,非对象数组只传第一个参数) datas:数据 col:列字段 type:类型 asc desc
分组let datas = this.$vzcGroupBy(datas, function(item) { return item.字段 })
移除对象this.$vzcRemoveObj(Array, Object);
下载文件this.$vzcDownloadFile(data, filename)data:文件流
字符串格式化“字符串{0}{1}”.$vzcFormat(参数1,参数2)
去除重复let datas = this.$vzcUnique(arr)数组去除重复的(支持对象数组)
并集let datas = this.$vzcUnion(arr1,arr2)两个集合的并集(支持对象数组)
补集let datas = this.$vzcComplement(arr1,arr2)两个集合的补集(支持对象数组)
交集let datas = this.$vzcIntersect(arr1,arr2)两个集合的交集(支持对象数组)
差集let datas = this.$vzcMinus(arr1,arr2)两个集合的差集(支持对象数组,集合arr1中的数据不在arr2中的数据)
复制let datas = this.$vzcCopyObj(obj)
日期格式化let datas = this.$vzcDateUtil.formatDate(dateTime,fmt)dateTime(Date对象,时间戳,不传当前时间) fmt 格式 "yyyy-MM-dd HH:mm:ss"
获取时间段所有日期let datas = this.$vzcDateUtil.getAllDate("2020-01-01", "2020-01-09")已知开始时间和结束时间 计算出所有日期
当前日期let datas = this.$vzcDateUtil.getNowDay("yyyy-MM-dd HH:mm:ss")
本周的开始时间let datas = this.$vzcDateUtil.getStartDayOfWeek()
本周的结束时间let datas = this.$vzcDateUtil.getEndDayOfWeek()
本月的开始时间let datas = this.$vzcDateUtil.getStartDayOfMonth()
本月的结束时间let datas = this.$vzcDateUtil.getEndDayOfMonth()
近几月开始日期let datas = this.$vzcDateUtil.getStartDayOfLastMonth(monthNum, isTheDay)monthNum 月数 isTheDay 是否包含今天
近几天开始日期let datas = this.$vzcDateUtil.getStartDayOfLastDay(day)
本月天数let datas = this.$vzcDateUtil.getMonthDays()
禁止浏览器后退this.$vzcProhibitBack()在需要禁止界面mounted里添加
关闭或刷新网页出现提示this.$vzcLeaveReminder()不同浏览器提示不一样,在app界面的mounted里添加
水印this.$vzcWatermark('水印')在app界面的mounted里添加
获取URL参数值let datas = this.$vzcUrlParams(name)
获取URL所有参数let datas = this.$vzcGetUrlAllParams(url)url [当该参数不为空的时候,则解析该url中的参数集合] 返回参数集合Object
前端解析excelthis.$vzcAnalysisExcel(file,callback)
数字金额转中文let datas = this.$vzcConvertCurrency(金额)
解析身份证let datas = $vzcCalcIdentiyInfo("身份证")出生年月、性别、年龄 {"sex":"男","birthday":"1990-12-10","age":30}
秒转化成时分秒let datas =$vzcFormatSeconds(秒)
计算对象数组中某个属性合计let total = $vzcSumObj(集合,要计算的属性名)
Guidlet guid = $vzcGuid()
对象属性替换const data = this.$vzcCopyTrans(res, [{ key: "result", value: "data" }])result属性替换data
防抖方法const func = this.$vzcDebounce(func,300) * func 函数 millisec 时间 ifNow 是否立即执行 returns {function(...[*]=)}
websocket方法this.$vzcSocket.init("ws://82.157.123.54:9010/ajaxchattest",心跳时间默认20秒)
this.$vzcSocket.send("发送消息")
this.$vzcSocket.message(e => { let msg =`\r接收消息:${e.data}`; });
this.$vzcSocket.close()
图片压缩this.$vzcCompressImg(file, quality, callback, watermark)file:文件
quality:压缩(默认0.2)
callback:回调函数
watermark:水印(默认空)
定位到界面表单错误位置this.$vzcMoveToErr()
效验工具 判读是否为外链:this.$vzcValidate.isExternal(str)
校验密码是否小于8位:this.$vzcValidate.isPassword(str)
判断是否为数字:this.$vzcValidate.isNumber(str)
判断是否是名称:this.$vzcValidate.isName(str)
判断是否为IP:this.$vzcValidate.isIP(str)
判断是否是传统网站:this.$vzcValidate.isUrl(str)
判断是否是小写字母:this.$vzcValidate.isLowerCase(str)
判断是否是大写字母:this.$vzcValidate.isUpperCase(str)
判断是否是大写字母开头:this.$vzcValidate.isAlphabets(str)
判断是否是字符串:this.$vzcValidate.isString(str)
判断是否是数组:this.$vzcValidate.isArray(str)
判断是否是端口号:this.$vzcValidate.isPort(str)
判断是否是手机号:this.$vzcValidate.isPhone(str)
判断是否是身份证号(第二代):this.$vzcValidate.isIdCard(str)
判断是否是邮箱:this.$vzcValidate.isEmail(str)
判断是否中文:this.$vzcValidate.isChina(str)
判断是否为空(包括空对象,空数组):this.$vzcValidate.isBlank(str)
判断是否为固话:this.$vzcValidate.isTel(str)
判断是否为数字且最多两位小数:this.$vzcValidate.isNum(str)
明细行数据转换为界面table数据 this.$vzcRowConvertTable(datas,groupName,colName,valueName,prefix) 参数:datas 数据集 groupName 分组字段 colName 列字段 valueName 值字段 prefix 前缀
this.$vzcRowConvertTable(convertData, "group", "col", "value")
原始数据:[{"group":1,"col":"上册","value":100},{"group":1,"col":"下册","value":233},{"group":2,"col":"上册","value":22},{"group":2,"col":"下册","value":232}]
表格数据:[{"group":"1","col_上册":100,"col_下册":233},{"group":"2","col_上册":22,"col_下册":232}]
滚动鼠标 关闭所有下拉显示框this.$vzcCloseAllDropDown(this.$refs.form.$el)
树-去除最后一层为空的children this.$vzcTreeRemoveChildren(arr, "child");
树-新增节点 this.$vzcTreeAppendNode( treeAppendNode, node => { //添加子节点 if (node.id === "1-1") { return { result: true, data: { id: "child", name: "新增子节点" } }; } return { result: false }; }, "child" );
树-删除节点this.$vzcTreeRemoveNode(tree,node => {return node.id === "1-1";}, "children");
树-修改节点 this.$vzcTreeUpdateNode( treeUpdateNode, node => { //找到返回true,反之false if (node.id === "1-1") { node.add = "新增"; node.name = "修改"; return true; } return false;},'children');
树-所有节点追加属性 this.$vzcTreeWalkProperty( treeWalkProperty, node => { node.add = "新增"; }, "child" );
树-Tree数据转成Arraylet datas = this.$vzcTreeToArray(tree,key = "children",isDeleteChild = false,newArr = [])
树-Array数据转成Treelet datas = this.$vzcArrayToTree(arr,key = "id",parentKey = "parentId",parentValue = "")
树-生成序号this.$vzcSetTreeIndex(树形数据)主要用于table树形数据验证,效果看下图
树-递归搜索const treeData = this.$vzcSearchTreeData(树形数据,(data) => { return (data.officeName.toUpperCase().indexOf(this.filterText.toUpperCase()) > -1)},"children");要求输入框搜索 '文字',希望树形结构中带有 “文字” 字的项显示,即使父节点没有,但子节点含有,父节点仍要返回。
树-通过子获取所有父级数据let arr = this.$vzcTreeParentPath(this.treeData, data=> data.key==="子ID","children")
随机账号 this.$vzcRandomAccount(前缀,长度)
随机姓名 this.$vzcRandomName();
随机手机号 this.$vzcRandomMoblie();
打印网页 this.$vzcPrintEl(document.getElementById('print-container',(方向:横向landscape纵向portrait)));
先设置树形数据的序号
$vzcSetTreeIndex(treeDatas)
再在table里面获取树形数据生成序号
<el-table-column>
                	  		prop="name"
                            label="姓名"
                            sortable
                            width="180">
                        <template v-slot="{$index, row}">
                            深度优先:{{`rows.${row.path}.name`}}
                            <el-form-item 
                            	label-width="0" 
                            	:rules="rules.name"
                                :prop="`${row.customIndex!=='tempIndex'?`rows.${row.path}.name`:''}`">
                                <el-input v-model="row.name"></el-input>
                            </el-form-item>
                        </template>
                    </el-table-column> 

在这里插入图片描述

组件

vzc-debounce 防抖组件
属性 类型默认值说明
time Number 300时间
# 列子
<vzc-debounce>
 <vzc-button label="Debounce" type="primary"  @click="btnClick('debounce')" ></vzc-button>
 <vzc-button label="Debounce" type="primary" @click="btnClick('debounce1')" ></vzc-button>
</vzc-debounce>
vzc-button 按钮控件
属性 类型默认值说明
accept String ".xls, .xlsx, .doc, .docx"上传类型
codeString-编码
labelString-名称
typeString"default"类型
styleTypeString-形状 plain/round/circle
iconString-图标 默认支持vzc-icon图标名称,其它图标通过slot实现
loadingBooleanfalse加载状态
customClassString-自定义样式
buttonModeString"default"按钮模式 default:默认 import:导入按钮
事件参数说明
click{ code, label, file }按钮点击事件
Slot说明
icon自定义图标
# 列子
<vzc-button label="列子" type="primary"  icon="car" > </vzc-button>
<vzc-button label="列子" type="primary" >
        <i slot="icon" class="el-icon-eleme"></i>
</vzc-button>
vzc-form 表单控件

在这里插入图片描述

#  Attributes(属性)
属性  |  说明  |  类型  |  默认值
labelPosition | 表单域标签的位置 right/left/top | String | "right"
labelWidth | 表单域标签的宽度 | String | "100px"
items | 项集合 | Array | []
buttons | 按钮集合 |  Array | []
buttonAlign | 按钮集合位置 right/left/center | String | "right"
loading | 加载状态 |  Boolean | false
isSearch | 是否添加查询按钮 |  Boolean | false
searchButton | 查询按钮配置 | Object | {code: "BtnSearch",label: "查询",icon: "el-icon-search",type: "success"}

#  items Attributes(属性) 以下是自定义属性,其它属性可以参考(element-ui)对应组件属性一样可以用
属性  |  说明  |  类型  |  默认值
type | 类型(radio/checkbox/input/number/select/cascader/switch/slider/time/date/datetime/rate/color/avatar/upload/selecttree/selectpopup) | String | ""
subtype| 子类型input(password/textarea)time(timerange)date(year/month/date/dates/week/datetime/datetimerange/daterange/monthrange) upload(text/picture/picture-card) |String| ""
key | 字段 | String | ""
label | 名称 | String | ""
value | 默认值 | String | ""
operator | 过滤操作符 | String | "Equal"  按照自己系统定义
min | 最小值 | Number | 1
max | 最大值 | Number | 2
precision | 数值精度 | Number | 0
step | 计数器步长 | Number | 1
multiple | 是否多选 | Boolean | false
collapseTags  | 多选时是否将选中值按文字的形式展示 | Boolean | false
checkStrictly | 多选时是否选中任意节点 | Boolean | false
valueFormat | 绑定值的格式 | String | ""
isRange | 是否区间 | String | ""
filter | 是否可搜索| Boolean | false
isGroup| 是否分组 | Boolean | false
button | 是否按钮模式(radio/checkbox) | Boolean | false
placeholder| 输入框占位文本 | String | ""
rules| 表单验证规则 | Array | []
options| 选项集合 | Array | []
props | 配置选项 | Object | {key: "key",value: "value",children: "children",disabled: false}
span | 栅格占据的列数	 | Number | 8
url | url | String | ""
accept | 文件类型 | String | ""
resultFormat | 返回结果格式化 | Function |  null  function(result,file)
fileSize | 文件大小 | Number | 2
pickerOptions|当前时间日期选择器特有的选项参考下表| Object | {}
color | 颜色 | String,Array | 类型为 rate(["#99A9BF", "#F7BA2A", "#FF9900"]) upload("default")
#  buttons Attributes(属性)
具体属性请查看lzg-button属性


# Method(方法)
方法名  |  说明  |  参数
setValue  | 设置值 | { key: "值" } key 等于Items项里面的key,多个逗号隔开
getValue  | 获取值 | 返回 Object对象
setOptions  | 设置选项集合 | 列子1:{key: "Items项里面的key",options: [],} 列子2:[{key: "Items项里面的key",options: []},{key: "Items项里面的key",options: []}]

# Events(事件)
事件名  |  说明  |  参数
click  | 按钮点击事件,用于查询表单 | { code, label, file,conds }
change | 表单里组件值改变事件 | key,value

# 列子
 <vzc-form ref="form" :items="items" label-width="100px"></vzc-form>
 items: [
        {
          type: "radio",
          key: "单选框",
          label: "单选框",
          value: 0,
          options: [
            { key: 0, value: "单" },
            { key: 1, value: "选" }
          ]
        },
        {
          type: "checkbox",
          key: "多选框",
          label: "多选框",
          value: [0],
          options: [
            { key: 0, value: "多" },
            { key: 1, value: "选" },
            { key: 2, value: "框" }
          ]
        },
        {
          type: "input",
          key: "文本框",
          label: "文本框",
          value: "",
          rules: [{ required: true, message: "请输入", trigger: "blur" }]
        },
        {
          type: "input",
          subtype: "textarea",
          key: "文本域",
          label: "文本域",
          value: "",
          placeholder: "",
          min: 0,
          max: 200,
          span: 24
        },
        {
          type: "number",
          key: "整型",
          label: "整型",
          value: 0,
          step: 2,
          min: 0,
          max: 200
        },
        {
          type: "number",
          key: "浮点型",
          label: "浮点型",
          value: 0,
          precision: 2,
          min: 0,
          max: 200
        },
        {
          type: "select",
          key: "下拉单选",
          label: "下拉单选",
          value: null,
          options: [
            { key: 0, value: "下" },
            { key: 1, value: "拉" },
            { key: 2, value: "单" },
            { key: 3, value: "选" }
          ]
        },
        {
          type: "select",
          key: "下拉多选",
          label: "下拉多选",
          value: null,
          multiple: true,
          options: [
            { key: 0, value: "下" },
            { key: 1, value: "拉" },
            { key: 2, value: "多" },
            { key: 3, value: "选" }
          ]
        },
        {
          type: "select",
          key: "下拉分组",
          label: "下拉分组",
          value: null,
          min: 0,
          max: 2,
          isGroup: true,
          props: { key: "value", value: "label" },
          options: [
            {
              label: "热门城市",
              options: [
                { value: "Shanghai", label: "上海" },
                { value: "Beijing", label: "北京" }
              ]
            },
            {
              label: "城市名",
              options: [
                { value: "Chengdu", label: "成都" },
                { value: "Shenzhen", label: "深圳" },
                { value: "Guangzhou", label: "广州" },
                { value: "Dalian", label: "大连" }
              ]
            }
          ]
        },
        {
          type: "cascader",
          key: "级联选择",
          label: "级联选择",
          value: null,
          multiple: true,
          collapseTags: true,
          options: [
            {
              key: "zhinan",
              value: "指南",
              children: [
                {
                  key: "shejiyuanze",
                  value: "设计原则",
                  children: [
                    { key: "yizhi", value: "一致" },
                    { key: "fankui", value: "反馈" },
                    { key: "xiaolv", value: "效率" },
                    { key: "kekong", value: "可控" }
                  ]
                },
                {
                  key: "daohang",
                  value: "导航",
                  children: [
                    { key: "cexiangdaohang", value: "侧向导航" },
                    { key: "dingbudaohang", value: "顶部导航" }
                  ]
                }
              ]
            }
          ]
        },
        { type: "switch", key: "switch按钮", label: "switch按钮", value: 0 },
        { type: "slider", key: "滑块", label: "滑块", value: 0, span: 16 },
        { type: "time", key: "时间", label: "时间", value: "" },
        {
          type: "time",
          subtype: "timerange",
          key: "时间段",
          label: "时间段",
          valueFormat: "HH:mm:ss",
          value: []
        },
        {
          type: "date",
          key: "日期",
          label: "日期",
          valueFormat: "yyyy-MM-dd",
          value: ""
        },
        {
          type: "date",
          subtype: "year",
          key: "年",
          label: "年",
          value: "",
          valueFormat: "yyyy"
        },
        {
          type: "date",
          subtype: "month",
          key: "月",
          label: "月",
          value: "",
          valueFormat: "yyyy-MM"
        },
        {
          type: "date",
          subtype: "dates",
          key: "多个日期",
          label: "多个日期",
          valueFormat: "yyyy-MM-dd",
          value: ""
        },
        {
          type: "date",
          subtype: "daterange",
          key: "日期段",
          label: "日期段",
          valueFormat: "yyyy-MM-dd",
          value: []
        },
        {
          type: "date",
          subtype: "datetime",
          key: "日期时间",
          label: "日期时间",
          valueFormat: "yyyy-MM-dd HH:mm:ss",
          value: ""
        },
        {
          type: "date",
          subtype: "datetimerange",
          key: "日期时间段",
          label: "日期时间段",
          valueFormat: "yyyy-MM-dd HH:mm:ss",
          value: []
        },
        { type: "rate", key: "评分", label: "评分", value: 0 },
        { type: "color", key: "颜色", label: "颜色", value: null },
        {
          type: "avatar",
          key: "头像",
          label: "头像",
          value: "",
          url: "http://localhost:8080/",
          accept: ".jpeg,.jpg,.png",
          resultFormat: (result, file) => {
            return result.data.url;
          }
        },
        {
          type: "upload",
          subtype: "text",
          key: "文件上传",
          label: "文件上传",
          color: "primary",
          value: [
            {
              name: "food.jpeg",
              url:
                "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100"
            },
            {
              name: "food2.jpeg",
              url:
                "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100"
            }
          ],
          multiple: false,
          max: 1,
          url: "http://localhost:8080/",
          accept: ".doc,.xls,.docx,.xlsx",
          resultFormat: (result, file) => {
            return file;
          }
        },
        {
          type: "selecttree",
          key: "下拉多选树",
          label: "下拉多选树",
          value: null,
          multiple: true,
          collapseTags: false,
          props: { key: "id", value: "name" },
          options: [
            {
              id: "love",
              name: "所有和你走过的风光",
              children: [
                {
                  id: 1,
                  name: "海边",
                  children: [
                    {
                      id: 5,
                      name: "蓬莱"
                    }
                  ]
                },
                {
                  id: 2,
                  name: "森林"
                },
                {
                  id: 3,
                  name: "草原"
                },
                {
                  id: 4,
                  name: "古城"
                }
              ]
            }
          ]
        },
        {
          type: "selectpopup",
          subtype: "input",
          key: "弹出选择",
          label: "弹出选择",
          value: null,
          color: "primary",
          searchItems: [
            {
              type: "input",
              key: "title",
              label: "名称",
              value: ""
            },
            {
              type: "select",
              key: "type",
              label: "类型",
              value: null,
              options: [
                { key: 0, value: "类型1" },
                { key: 1, value: "类型2" },
                { key: 2, value: "类型3" },
                { key: 3, value: "类型4" }
              ]
            },
            {
              type: "select",
              key: "status",
              label: "状态",
              value: null,
              options: [
                { key: 0, value: "状态1" },
                { key: 1, value: "状态2" },
                { key: 2, value: "状态3" },
                { key: 3, value: "状态4" }
              ]
            },
            {
              type: "date",
              subtype: "daterange",
              key: "daterange",
              label: "日期段",
              valueFormat: "yyyy-MM-dd",
              value: []
            },
            {
              type: "cascader",
              key: "cascader1,cascader2,cascader3",
              label: "级联选择",
              value: null,
              multiple: true,
              checkStrictly: true,
              options: [
                {
                  key: "zhinan",
                  value: "指南",
                  children: [
                    {
                      key: "shejiyuanze",
                      value: "设计原则",
                      children: [
                        { key: "yizhi", value: "一致" },
                        { key: "fankui", value: "反馈" },
                        { key: "xiaolv", value: "效率" },
                        { key: "kekong", value: "可控" }
                      ]
                    },
                    {
                      key: "daohang",
                      value: "导航",
                      children: [
                        { key: "cexiangdaohang", value: "侧向导航" },
                        { key: "dingbudaohang", value: "顶部导航" }
                      ]
                    }
                  ]
                }
              ]
            }
          ],
          listItems: [
            { prop: "id", label: "id" },
            { prop: "uuid", label: "uuid" },
            { prop: "title", label: "title" },
            { prop: "author", label: "author" },
            {
              prop: "switch",
              label: "switch",
              templateHtml:
                '<el-switch v-model.trim="scope.row.switch" :disabled="true"></el-switch>'
            },
            {
              prop: "status",
              label: "status"
            },
            { prop: "type", label: "type" }
          ],
          showField: "title",
          multiple: true,
          dataLoad: function(vue, params) {
            let datas = [
              {
                uuid: "5DAA86F8-F77e-FfbB-CE5D-3e76b0F6cB1d",
                id: "650000201311181657",
                title: "性。",
                status: 0,
                type: 1,
                author: "田秀兰",
                datetime: "1998-08-19 18:55:28",
                pageViews: 3448,
                switch: false,
                percent: 95
              },
              {
                uuid: "5A53Ede7-7C59-D3E4-EdE1-3Aa3EFB3cEf4",
                id: "130000200507260502",
                title: "团。",
                status: 1,
                type: 1,
                author: "傅杰",
                datetime: "1987-05-21 03:33:22",
                pageViews: 1265,
                switch: false,
                percent: 88
              }
            ];
            return new Promise((resolve, reject) => {
              resolve({ datas: datas, total: datas.length });
            });
          }
        },
        {
          type: "selecticon",
          key: "图标选择器",
          label: "图标选择器",
          value: "",
        }
      ]
vzc-list 列表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


#  Attributes(属性) 更多配置具体请看element官方文档的table属性及vzc-form属性
属性  |  说明  |  类型  |  默认值
searchItems | 查询项集合 | Array | []
searchButtonType | 查询按钮样式 | String |"default"
searchExpansion | 查询条件默认展开还是收起 | Boolean |fasle
searchButtons | 查询按钮集合  | Array | []
listItems | 列表项集合 | Array | []
listButtons | 列表按钮集合  | Array | []
pageType | 分页类型 | String | "server" no(不分页)/server(服务器分页)/local(本地分页)
isSelection | 是否多选 | Boolean | false
showRadio | 单选-是否显示单选框(只有当isSelection为false才起作用) | Boolean | false
defaultConditions | 默认查询条件 |  Array | null  [{Value:"值",Key:"字段",Operator:"操作符(Equal)"}]
disabled | 是否禁用 |  Boolean | false
btnShowEvent | 按钮显示判断 |  Function | null  function({ btn, row})
btnDisabledEvent | 按钮禁用判断 |  Function | null  function(btn)
searchItemShow | 查询条件显示判断 |  Function | null  function(item)
defaultDataLoad | 是否第一次加载数据 |  Boolean | true
dataLoad | 数据 | Function, Array, Object | null  Function(vue, params){ //如果不用params.conds查询条件格式,还可以这么获取表单查询条件 let formParams = vue.getSearchValue();} Array([])  Object({ datas, total })
rowKey | 行数据的 Key | Function, String | "id"
height | 高度 | [Number,String] | null  注意:没设置高度自动计算高度(自动高度设置:auto)
templateColExt | 模板列扩展属性或方法 | Object | {}
isNo | 是否显示序号 | Boolean | false
operFixed | 操作列位置 | String | right
operType | 操作列样式 | String | icon   (link,button,icon,dropdown)
operWidth | 操作列宽度 | Number | 0  不设置自适应
operFontWidth | 操作列每个文字的宽度 | Number | 0   自适应宽度时候,因框架样式问题可能显示不对时则需设置
showSummary | 是否在表尾显示合计行 |  Boolean | false
sumText | 合计行第一列的文本 |  String | 合计
pageSizes | 每页显示个数选择器的选项设置 |  Number[] | [10, 20, 50, 100, 200]
pageSize | 每页显示条目个数 |  Number | 20
pageIndex | 当前页数 |  Number | 1
pageTotal | 总条目数 |  Number | 0
pageLayout | 组件布局,子组件名用逗号分隔 |  String | "total, sizes, prev, pager, next, jumper"
reserveSelection | 仅对 isSelection=true 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key) |  Boolean | false
selectable | 仅对 isSelection=true 的列有效,类型为 Function,Function(row, index) 的返回值用来决定这一行的 CheckBox 是否可以勾选 |  Function | null
otherHeight| 其它高度 | Number | 0 (用于自动计算高度时,除查询条件高度后的其它高度)
isSearch | 是否显示查询按钮 |  Boolean | true
isExpansion | 是否显示展开/收起按钮 | String | close  不显示:no 展开:open 收起:close
isReset | 是否显示重置按钮 |  Boolean | true
isExpandAll | 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 | Boolean | false
isCurrentPage | 点击查询还是显示当前页 | Boolean | false 则传第一页,反正传分页选中的页码 注意:如果查询条件变了还是第一页
customQuery | 是否自定义查询 | Boolean | false  开启则在btnClick 事件里自定义查询方式,反正调用本身remote方法查询
showAllSize | 下拉页数是否添加全部条数选项 | Boolean | false  开启则下拉里有总条数选项
checkAllPage | 全选所有页数据选中,该属性是通过列表头部的全选控制(暂时只支持本地分页数据选中,服务器分页不支持) | Boolean | false
columnSetting | 是否显示列设置功能 | Boolean | false
tableFull | 是否显示全屏功能 | Boolean | false
highlightCurrentRow | 是否要高亮当前行 | Boolean | false
radioSelectable | 仅对 type=showRadio 的列有效,类型为 Function,Function 的返回值用来决定这一行的 Radio 是否可以勾选 | Boolean | false
useVirtual | 是否开启虚拟滚动 (解决大数据渲染卡顿问题),必须是page-type="no"同时设置height,要不没作用 | Boolean | false
treeProps | 树形配置 | Object | { hasChildren: "hasChildren", children: "children",  checkStrictly: true(是否严格的遵守父子节点不互相关联)}

#  searchItems Attributes(属性)
请看vzc-form的items属性

#  searchButtons和listButtons Attributes(属性)
具体属性请查看vzc-button属性

#  listItems Attributes(属性) 更多配置具体请看element官方文档的Table-column 属性
属性  |  说明  |  类型  |  默认值
isShow | 是否显示 | Boolean | true
children | 子表头 | Array | []
options | 数据集(用于列表值转文本显示) | Array || [] 格式[{key:"",value:""}]

# Method(方法)
方法名  |  说明  |  参数
reset  | 重置数据 | params | [{Value:"值",Key:"字段",Operator:"操作符(Equal)"}]
setSearchValue  | 设置查询值 | { key: "值" } key 等于searchItems项里面的key,多个逗号隔开
getSearchValue  | 获取查询值 | 返回 Object对象
setSearchOptions  | 设置选项集合 | 列子1:{key: "searchItems项里面的key",options: [],} 列子2:[{key: "searchItems项里面的key",options: []},{key: "searchItems项里面的key",options: []}]
setListOptions| 设置选项集合 | 列子1:{key: "searchItems项里面的key",options: [],} 列子2:[{key: "searchItems项里面的key",options: []},{key: "searchItems项里面的key",options: []}]
getSelectDatas | 获取选中数据,当isSelection=true才有用 | { addData, delData }
setSelectDatas | 设置选中数据,当isSelection=true才有用 | [] rowKey设置的字段值
getUpperRow | 获取上一行数据 | 当前行数据不传默认第一行  同步方法,例子:this.$refs.vzcList.getUpperRow(this.currentData).then(resp => {this.currentData = resp;});
getNextRow | 获取下一行数据 | 当前行数据不传默认第一行   同步方法,例子:this.$refs.vzcList.getNextRow(this.currentData).then(resp => {this.currentData = resp;});
searchChange | 表单里组件值改变事件 | key,value
getPageIndex | 获取当前页码
setCheckAllPage | 全选所有页数据选中,该方法是在界面上新增一个全选功能,不是用列表上的全选。(暂时只支持本地分页数据选中,服务器分页不支持)
checkRow	|当用户手动勾选数据行的 Checkbox 时触发的事件	selection,row,selectKeys
checkAll	| 当用户手动勾选全选 Checkbox 时触发的事件	selection,selectKeys
rowChange |当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性	currentRow, oldCurrentRow

# Events(事件)
事件名  |  说明  |  参数
btnClick  | 按钮点击事件 | { code, label, file,row }

# Slot
列名(prop)  | 自定义列显示内容 | slot-scope="{ scope, config(对应templateColExt属性) }"
列名(prop)-header  | 自定义列头显示内容 | slot-scope="{ scope, config(对应templateColExt属性) }"
列名(prop)-search  | 自定义搜索显示内容 | slot-scope="{ item }"

#列子
 <vzc-list
    ref="vzcList"
    :loading="loading"
    :search-items="listConfig.searchItems"
    search-button-type="primary"
    :search-buttons="listConfig.searchButtons"
    :list-items="listConfig.listItems"
    :list-buttons="listConfig.listButtons"
    :btn-show-event="listConfig.btnShowEvent"
    :template-col-ext="listConfig.templateColExt"
    :oper-type="listConfig.operType"
    :data-load="listDataLoad"
    :show-summary="true"
    :summary-method="getSummaries"
    :is-query-expansion="false"
    class="customList"
    @btnClick="btnClick"
    @cell-click="cellClick"
  >
<div slot="switchSlot" slot-scope="{ scope, config }">
      <el-switch
        v-model.trim="scope.row.status"
        :active-value="0"
        :inactive-value="1"
        @change="config.statusChange(scope.row)"
      ></el-switch>
      slot
    </div>
</vzc-list>

export default {
  name: "List",
  data: function() {
    return {
      loading: false,
      listConfig: {
        operType: "dropdown",
        searchButtons: [
          {
            code: "BtnAdd",
            label: "新增",
            icon: "<i class='el-icon-plus'></i>",
            sort: 1,
            type: "primary"
          },
          {
            code: "BtnSetValue",
            label: "设置默认值",
            icon: "<i class='el-icon-orange'></i>",
            sort: 2,
            type: "primary"
          },
          {
            code: "BtnSetOneOpt",
            label: "下拉值单个设置",
            icon: "<i class='el-icon-orange'></i>",
            sort: 3,
            type: "primary"
          },
          {
            code: "BtnSetOpt",
            label: "下拉值批量设置",
            icon: "<i class='el-icon-orange'></i>",
            sort: 4,
            type: "primary"
          },
          {
            code: "BtnDownload",
            label: "下载",
            icon: "<i class='el-icon-download'></i>",
            sort: 4,
            type: "primary"
          },
          {
            code: "BtnImport",
            label: "导入",
            icon: "<i class='el-icon-upload2'></i>",
            sort: 5,
            type: "primary",
            isUpload: true
          },
          {
            code: "BtnExport",
            label: "导出",
            icon: "<i class='el-icon-right'></i>",
            sort: 6,
            type: "primary"
          },
          {
            code: "BtnUp",
            label: "上一条数据",
            icon: "arrowup",
            sort: 7,
            type: "primary"
          },
          {
            code: "BtnDown",
            label: "下一条数据",
            icon: "arrowdown",
            sort: 8,
            type: "primary"
          }
        ],
        searchItems: [
          {
            type: "input",
            key: "title",
            label: "名称",
            value: "。"
          },
          {
            type: "select",
            key: "type",
            label: "类型",
            value: null,
            options: [
              { key: 0, value: "类型1" },
              { key: 1, value: "类型2" },
              { key: 2, value: "类型3" },
              { key: 3, value: "类型4" }
            ]
          },
          {
            type: "select",
            key: "status",
            label: "状态",
            value: null,
            options: [
              { key: 0, value: "状态1" },
              { key: 1, value: "状态2" },
              { key: 2, value: "状态3" },
              { key: 3, value: "状态4" },
              { key: 4, value: "状态5" }
            ]
          },
          {
            type: "date",
            subtype: "daterange",
            key: "daterange",
            label: "日期段",
            valueFormat: "yyyy-MM-dd",
            value: []
          },
          {
            type: "date",
            subtype: "daterange",
            key: "daterange",
            label: "日期段",
            valueFormat: "yyyy-MM-dd",
            value: []
          },
          {
            type: "cascader",
            key: "cascader",
            label: "级联选择",
            value: null,
            multiple: true,
            checkStrictly: true,
            options: [
              {
                key: "zhinan",
                value: "指南",
                children: [
                  {
                    key: "shejiyuanze",
                    value: "设计原则",
                    children: [
                      { key: "yizhi", value: "一致" },
                      { key: "fankui", value: "反馈" },
                      { key: "xiaolv", value: "效率" },
                      { key: "kekong", value: "可控" }
                    ]
                  },
                  {
                    key: "daohang",
                    value: "导航",
                    children: [
                      { key: "cexiangdaohang", value: "侧向导航" },
                      { key: "dingbudaohang", value: "顶部导航" }
                    ]
                  }
                ]
              }
            ]
          }
        ],
        listButtons: [
          {
            code: "BtnEdit",
            label: "修改",
            icon: "<i class='el-icon-edit'></i>",
            sort: 2,
            type: "primary"
          },
          {
            code: "BtnDelete",
            label: "删除",
            icon: "delete",
            sort: 3,
            type: "primary"
          }
        ],
        listItems: [
          { prop: "uuid", label: "uuid" },
          { prop: "title", label: "title" },
          { prop: "author", label: "author" },
          {
            prop: "switchSlot",
            label: "switchSlot",
            isCustomCol: true
          },
          {
            prop: "switchHtml",
            label: "switchHtml",
            isCustomCol: true,
            templateHtml:
              '<div><el-switch v-model.trim="scope.row.status" :active-value="0" :inactive-value="1" @change="config.statusChange(scope.row)"></el-switch>Html</div>'
          }
          // {
          //   prop: "switch",
          //   label: "switch",
          //   templateHtml:
          //     '<el-switch v-model.trim="scope.row.status" :active-value="0" :inactive-value="1" @change="config.statusChange(scope.row)"></el-switch>'
          // },
          // {
          //   label: "一级表头",
          //   children: [
          //     {
          //       prop: "switch",
          //       label: "switch",
          //       templateHtml:
          //         '<el-switch v-model.trim="scope.row.status" :active-value="0" :inactive-value="1" @change="config.statusChange(scope.row)"></el-switch>'
          //     },
          //     {
          //       label: "二级表头",
          //       children: [
          //         {
          //           prop: "status",
          //           label: "status"
          //         },
          //         { prop: "type", label: "type" }
          //       ]
          //     }
          //   ]
          // }
        ],
        btnShowEvent: function(param) {
          switch (param.btn.code) {
            case "BtnEdit":
              if (param.row.status === 0) {
                return false;
              }
              break;
          }
          return true;
        },
        templateColExt: {
          statusChange: this.statusChange
        }
      },
      datas: [
        {
          uuid: "5DAA86F8-F77e-FfbB-CE5D-3e76b0F6cB1d",
          id: "650000201311181657",
          title: "性。",
          status: 0,
          type: 1,
          author: "田秀兰",
          datetime: "1998-08-19 18:55:28",
          pageViews: 3448,
          switch: false,
          percent: 95
        },
        {
          uuid: "5A53Ede7-7C59-D3E4-EdE1-3Aa3EFB3cEf4",
          id: "130000200507260502",
          title: "团。",
          status: 1,
          type: 1,
          author: "傅杰",
          datetime: "1987-05-21 03:33:22",
          pageViews: 1265,
          switch: false,
          percent: 88
        },
        {
          uuid: "1C3E2192-1Ca1-D67f-d6aF-bB2653f783eE",
          id: "140000197707308854",
          title: "界。",
          status: 1,
          type: 1,
          author: "崔秀英",
          datetime: "2005-08-15 08:11:21",
          pageViews: 4126,
          switch: true,
          percent: 88
        },
        {
          uuid: "62B5f38E-DBEB-cFf6-5F86-358CA6bC32db",
          id: "820000201904084897",
          title: "且。",
          status: 1,
          type: 1,
          author: "萧勇",
          datetime: "2010-05-20 00:58:47",
          pageViews: 2506,
          switch: false,
          percent: 97
        },
        {
          uuid: "5dEF89D6-8e2C-1922-bCcA-1d0Cecc3E2B8",
          id: "620000198807284449",
          title: "集。",
          status: 1,
          type: 4,
          author: "蒋平",
          datetime: "1993-06-11 15:04:03",
          pageViews: 1137,
          switch: false,
          percent: 84
        },
        {
          uuid: "CfECBeF9-1948-46DE-4Fd7-aF2d6F2c2393",
          id: "110000198409244409",
          title: "合求。",
          status: 1,
          type: 1,
          author: "雷霞",
          datetime: "2017-07-16 00:36:19",
          pageViews: 4360,
          switch: false,
          percent: 85
        },
        {
          uuid: "DdeDcb2A-0FbF-1Ed4-6FFf-ef9B1c7328Be",
          id: "440000200508261294",
          title: "识斗。",
          status: 1,
          type: 1,
          author: "张涛",
          datetime: "1981-07-25 15:52:06",
          pageViews: 370,
          switch: false,
          percent: 93
        },
        {
          uuid: "d56CEfd6-eA3f-AF31-A5bC-f5EB3fE3c2f4",
          id: "310000200902124061",
          title: "常。",
          status: 1,
          type: 2,
          author: "曾霞",
          datetime: "1992-03-31 15:26:01",
          pageViews: 4959,
          switch: false,
          percent: 88
        },
        {
          uuid: "E62A2c0a-45d3-Eb1B-6EDb-d17195e1c25c",
          id: "340000199902186238",
          title: "合。",
          status: 1,
          type: 0,
          author: "方强",
          datetime: "2003-10-20 13:06:03",
          pageViews: 4640,
          switch: false,
          percent: 85
        },
        {
          uuid: "2B0A512C-E10A-B4ce-cC1e-58fc3e13f6d6",
          id: "64000019921113216X",
          title: "会间。",
          status: 1,
          type: 4,
          author: "易平",
          datetime: "1975-04-06 23:44:49",
          pageViews: 397,
          switch: true,
          percent: 94
        },
        {
          uuid: "AbdAe5dd-8bb6-9612-75AE-218D71b7AFAe",
          id: "360000198405258615",
          title: "委。",
          status: 1,
          type: 3,
          author: "段强",
          datetime: "1996-02-26 05:24:16",
          pageViews: 425,
          switch: true,
          percent: 91
        },
        {
          uuid: "2FA86dD8-E81F-5f9F-0Ac3-a5B9b9e2411c",
          id: "420000198703055679",
          title: "完还。",
          status: 1,
          type: 4,
          author: "文霞",
          datetime: "2018-12-01 13:01:09",
          pageViews: 3043,
          switch: false,
          percent: 97
        },
        {
          uuid: "49bDfdC4-B6D6-cd8d-b5dA-A9b3DA5822B3",
          id: "340000198603255833",
          title: "直走。",
          status: 1,
          type: 3,
          author: "常磊",
          datetime: "1992-07-13 08:59:10",
          pageViews: 2034,
          switch: false,
          percent: 97
        },
        {
          uuid: "4Bb1eFba-646C-EecD-EAd3-0be7ac50846b",
          id: "120000198006122783",
          title: "人。",
          status: 1,
          type: 3,
          author: "赖磊",
          datetime: "2015-08-30 14:17:37",
          pageViews: 4228,
          switch: true,
          percent: 94
        },
        {
          uuid: "FB9DD3cc-06DC-A4fb-CBF4-cB74C08b7F63",
          id: "510000198909140694",
          title: "更一。",
          status: 0,
          type: 3,
          author: "张强",
          datetime: "2014-07-21 02:12:21",
          pageViews: 3311,
          switch: true,
          percent: 93
        },
        {
          uuid: "2fee5ACC-e1eA-4414-18e3-9BC93f2D8A81",
          id: "640000198205032432",
          title: "通。",
          status: 1,
          type: 4,
          author: "曹刚",
          datetime: "1992-05-23 17:45:55",
          pageViews: 975,
          switch: false,
          percent: 90
        },
        {
          uuid: "7Dbb8Ee3-6fCF-dBEd-af3c-D67616EAcF29",
          id: "220000200003086733",
          title: "府。",
          status: 1,
          type: 3,
          author: "贾刚",
          datetime: "1999-05-12 01:41:38",
          pageViews: 1453,
          switch: false,
          percent: 97
        },
        {
          uuid: "2f3EC795-D029-6B2A-f27d-Bf400dDaA740",
          id: "230000198209302210",
          title: "共除。",
          status: 1,
          type: 2,
          author: "崔娜",
          datetime: "1982-06-08 17:27:36",
          pageViews: 494,
          switch: false,
          percent: 89
        },
        {
          uuid: "Dbb6F44a-0dDf-fd4d-EAee-Bd63A535dFfe",
          id: "440000197012061366",
          title: "重。",
          status: 0,
          type: 2,
          author: "廖秀兰",
          datetime: "1972-01-02 04:28:58",
          pageViews: 1873,
          switch: true,
          percent: 98
        },
        {
          uuid: "E339fE2F-FC9d-E1c5-af3D-1aA36e35AA5C",
          id: "11000020150628719X",
          title: "阶。",
          status: 1,
          type: 1,
          author: "段艳",
          datetime: "1973-12-06 21:30:59",
          pageViews: 2428,
          switch: true,
          percent: 97
        }
      ],
      currentData: null
    };
  },
  methods: {
    statusChange(row) {
      console.log("点击了按钮switch");
    },
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = "总价";
          return;
        }
        if (index === 4 || index === 5) {
          const values = data.map(item => Number(item[column.property]));
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr);
            if (!isNaN(value)) {
              return prev + curr;
            } else {
              return prev;
            }
          }, 0);
        }
      });
      return sums;
    },
    btnClick: function(param) {
      this.loading = true;
      switch (param.code) {
        case "BtnEdit":
          param.row.title = "编辑数据";
          this.$refs.vzcList.reset();
          break;
        case "BtnDelete":
          break;
        case "BtnSetValue":
          this.$refs.vzcList.setSearchValue({ title: "动态设置值" });
          console.log("设置名称默认值");
          break;
        case "BtnSetOneOpt":
          this.$refs.vzcList.setSearchOptions({
            key: "type",
            options: [
              { key: 0, value: "单个动态类型1" },
              { key: 1, value: "单个动态类型2" }
            ]
          });
          console.log("单个设置类型下拉值");
          break;
        case "BtnSetOpt":
          this.$refs.vzcList.setSearchOptions([
            {
              key: "status",
              options: [
                { key: 0, value: "批量动态状态1" },
                { key: 1, value: "批量动态状态2" }
              ]
            },
            {
              key: "type",
              options: [
                { key: 0, value: "批量动态类型1" },
                { key: 1, value: "批量动态类型2" }
              ]
            }
          ]);
          console.log("批量设置类型、状态下拉值");
          break;
        case "BtnUp":
          this.$refs.vzcList.getUpperRow(this.currentData).then(resp => {
            if (resp) {
              this.currentData = resp;
              this.$vzcMessage(JSON.stringify(this.currentData));
            } else {
              this.$vzcMessage("已到顶部");
            }
          });
          break;
        case "BtnDown":
          this.$refs.vzcList.getNextRow(this.currentData).then(resp => {
            if (resp) {
              this.currentData = resp;
              this.$vzcMessage(JSON.stringify(this.currentData));
            } else {
              this.$vzcMessage("已到低部");
            }
          });
          break;
      }
      this.$vzcNotify("点击了按钮:" + param.label);
      this.loading = false;
    },
    listDataLoad: function(vue, params) {
      //如果不用params.conds查询条件格式,还可以这么获取表单查询条件
      let formParams = vue.getSearchValue();
      switch (vue.pageType) {
        case "no":
        case "local":
          return new Promise((resolve, reject) => {
            resolve({ datas: this.datas });
          });
          break;
        case "server":
          const { conds = [], pageIndex = 1, pageSize = 20 } = params;
          let mockList = this.datas.filter(item => {
            if (conds.length > 0 && item.title.indexOf(conds[0].Value) < 0)
              return false;
            return true;
          });
          const pageList = mockList.filter(
            (item, index) =>
              index < pageSize * pageIndex &&
              index >= pageSize * (pageIndex - 1)
          );
          return new Promise((resolve, reject) => {
            resolve({ datas: pageList, total: mockList.length });
          });
          break;
      }
    },
    cellClick: function(row, column, cell, event) {
      row.title = "点击了单元格";
    }
  }
};
vzc-select-tree 下拉树控件

在这里插入图片描述

 属性  |  说明  |  类型  |  默认值 
data | 树结构数据 | Array | []
defaultProps | 配置选项 | Object | {label: "name", value: "id", children: "children"}
multiple | 是否多选 | Boolean | false
clearable | 是否可清空选择 | Boolean | true
filterable | 是否可搜索 | Boolean | false
collapseTags | 配置多选时是否将选中值按文字的形式展示 | Boolean | false
nodeKey | 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 |  String | "id"
checkStrictly | 显示复选框情况下,是否严格遵循父子不互相关联 | Boolean | false
defaultExpandAll | 是否默认展开所有节点 | Boolean | false
defaultExpandedKeys | 默认勾选的节点的 key 的数组 | Array | []

# 列子
 <vzc-select-tree
                v-model="selectTreeValue"
                :data="selectTreeOptions"
                :multiple="true"
                :default-props="selectTreeDefaultProps"
              >
              </vzc-select-tree>
 // 数据默认字段
      selectTreeDefaultProps: {
        label: "name",
        value: "id",
        children: "children",
      },
      // 数据列表
      selectTreeOptions: [
        {
          id: "love",
          name: "所有和你走过的风光",
          children: [
            {
              id: 1,
              name: "海边",
              children: [
                {
                  id: 5,
                  name: "蓬莱",
                },
              ],
            },
            {
              id: 2,
              name: "森林",
            },
            {
              id: 3,
              name: "草原",
            },
            {
              id: 4,
              name: "古城",
            },
          ],
        },
      ],
vzc-select-z-tree 下拉树集成ztree树,加载大数据

在这里插入图片描述

#  Attributes(属性)
属性  |  说明  |  类型  |  默认值
data | 树结构数据 | Array | []
treeConfig | 配置选项 | Object | {radioType: "level", chkStyle: "checkbox", name: "name", idKey: "key", pIdKey: "parentKey", children: "children", rootPId: 0}
multiple | 是否多选 | Boolean | false
clearable | 是否可清空选择 | Boolean | true
filterable | 是否可搜索 | Boolean | true
collapseTags | 配置多选时是否将选中值按文字的形式展示 | Boolean | false
checkStrictly | 显示复选框情况下,是否严格遵循父子不互相关联 | Boolean | false
disabledChild | 当multiple=true 时,是否选择了父级子集及子子集都禁用 | Boolean | false
# Events(事件)
事件名  |  说明  |  参数
change  | 当选中节点变化时触发 | 选中节点的值,旧值
visible-change  | 下拉框出现/隐藏时触发 | 出现则为 true,隐藏则为 false
remove-tag  | 在多选模式下,移除Tag时触发 | 移除的Tag对应的节点的值
clear  | 可清空的单选模式下用户点击清空按钮时触发

vzc-popup-select 弹出选择控件

在这里插入图片描述

  Attributes(属性)
属性  |  说明  |  类型  |  默认值
type | 类型 | String | "input/dropdown/popover"
title | 标题 | String | ""
searchItems | 查询项集合 | Array | []
listItems | 列表项集合 | Array | []
isSelection | 是否多选 | Boolean | false
dataLoad | 数据 | Function, Array, Object | null  Function(查看列子) Array([])  Object({ datas, total })
width | 宽度 | String | "70%"
height | 高度 | Number | 600
keyField | 指定作为键值的字段 | String | "id"
showField | 指定显示内容的字段 | String | "name"
color | 按钮显示样式 | String | "default"

#列子
  <vzc-popup-select
                v-model="popupSelectValue"
                :search-items="popupSelectConfig.searchItems"
                :list-items="popupSelectConfig.listItems"
                show-field="title"
                :is-selection="true"
                :data-load="popupSelectDataLoad"
              >
              </vzc-popup-select>
                popupSelectConfig: {
        searchItems: [
          {
            type: "input",
            key: "title",
            label: "名称",
            value: "",
          },
          {
            type: "select",
            key: "type",
            label: "类型",
            value: null,
            options: [
              { key: 0, value: "类型1" },
              { key: 1, value: "类型2" },
              { key: 2, value: "类型3" },
              { key: 3, value: "类型4" },
            ],
          },
          {
            type: "select",
            key: "status",
            label: "状态",
            value: null,
            options: [
              { key: 0, value: "状态1" },
              { key: 1, value: "状态2" },
              { key: 2, value: "状态3" },
              { key: 3, value: "状态4" },
            ],
          },
          {
            type: "date",
            subtype: "daterange",
            key: "daterange",
            label: "日期段",
            valueFormat: "yyyy-MM-dd",
            value: [],
          },
          {
            type: "cascader",
            key: "cascader1,cascader2,cascader3",
            label: "级联选择",
            value: null,
            multiple: true,
            checkStrictly: true,
            options: [
              {
                key: "zhinan",
                value: "指南",
                children: [
                  {
                    key: "shejiyuanze",
                    value: "设计原则",
                    children: [
                      { key: "yizhi", value: "一致" },
                      { key: "fankui", value: "反馈" },
                      { key: "xiaolv", value: "效率" },
                      { key: "kekong", value: "可控" },
                    ],
                  },
                  {
                    key: "daohang",
                    value: "导航",
                    children: [
                      { key: "cexiangdaohang", value: "侧向导航" },
                      { key: "dingbudaohang", value: "顶部导航" },
                    ],
                  },
                ],
              },
            ],
          },
        ],
        listItems: [
          { prop: "id", label: "id" },
          { prop: "uuid", label: "uuid" },
          { prop: "title", label: "title" },
          { prop: "author", label: "author" },
          {
            prop: "switch",
            label: "switch",
            templateHtml:
              '<el-switch v-model.trim="scope.row.switch" :disabled="true"></el-switch>',
          },
          {
            prop: "status",
            label: "status",
          },
          { prop: "type", label: "type" },
        ],
      },
   popupSelectDataLoad: function (vue, params) {
      return new Promise((resolve, reject) => {
        this.$store.dispatch("list/getList", params).then(
          (resp) => {
            resolve({ datas: resp.datas, total: resp.total });
          },
          (resp) => {
            reject(resp);
          }
        );
      });
    },

vzc-fold-card 折叠卡片

在这里插入图片描述

#  Attributes(属性)
属性  |  说明  |  类型  |  默认值
header | header,也可以通过 slot#header 传入 DOM | String | ""
footer | 设置 footer,也可以通过 slot#footer 传入 DOM | String | ""
showLabel | 底部文本-显示 | String | "显示"
hideLabel | 底部文本-隐藏 | String | "隐藏"
height | 内容高度 | Number | 100

# Events(事件)
事件名  |  说明  |  参数
click  | 按钮点击事件 | isExpand(是否展开)

vzc-img-cropper 图片裁剪

在这里插入图片描述

#  Attributes(属性)
属性  |  说明  |  类型  |  默认值
autoCropWidth | 截图框宽度 | Number | 320
autoCropHeight | 截图框高度 | Number | 180
fixedBox | 固定截图框大小 | Boolean | false
showTip | 提示内容是否显示| Boolean | true
imageWidth | 裁剪后图片显示宽度 | Number | 320
imageHeight | 裁剪后图片显示高度 | Number | 180
uploadLoad | 裁剪后图片上传方法 | Function(file(原文件),cropFile(裁剪文件)) | null 返回格式return new Promise((resolve, reject) => {  resolve({url: ""});});
defaultUrl | 图片加载失败后显示的默认图片| String | ""
isCropper | 是否裁剪| Boolean | true 不裁剪就直接上传
accept | 图片格式| String | '.gif,.jpeg,.jpg,.png'
size | 文件大小| Number |  5
vzc-select-icon 图标

在这里插入图片描述

列子
<vzc-select-icon v-model="iconValue"></vzc-select-icon>
vzc-browse-file 文件浏览组件
支持格式
视频:mp4
图片:png, gif, jpe, jpge, ico
文档:doc,docm,docx,docxf,dot,dotm,dotx,epub,fodt,fb2,htm,html,mht,odt,oform,ott,oxps,pdf,rtf,txt,djvu,xml,xps,csv,fods,ods,ots,xls,xlsm,xlsx,xlt,xltm,xltx,fodp,odp,otp,pot,potm,potx,pps,ppsm,ppsx,ppt,pptm,pptx
#  Attributes(属性)
属性  |  说明  |  类型  |  默认值
fileName | 文件名 | String | "" 不转显示url文件名称
url | 文件地址 | String | ""
visible | 是否显示| Boolean | false
vzc-z-tree 封装ztree

在这里插入图片描述

Attributes(属性)

属性说明类型默认值
setting参考 [zTree API](http://www.treejs.cn/v3/api.php)Object{view: {showIcon: false}}
nodes数据Array[]

Events(事件)

事件名说明参数
onCreated初始化渲染完成后触发ztree 实例

Method(方法)

方法名说明参数返回值
fuzzySearch模糊查找节点search 搜索值
isHighLight 是否高亮,默认高亮,传入false禁用
isExpand 是否展开,默认合拢,传入true展开
vzc-icon 图标
#  Attributes(属性)
属性  |  说明  |  类型  |  默认值
icon | 编码 | String | ""
size | 大小 | Number | 12

可以通过let datas = this.$vzcIcons()获取所有图标名称
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#  Attributes(属性)
属性  |  说明  |  类型  |  默认值 
icon | 编码 | String | ""
size | 大小| Number| 12
  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Vue2中,对于element-ui组件二次封装,可以按照以下步骤进行: 1. 需求分析:明确需要封装element-ui组件,以及需要添加的功能和配置项。 2. 创建父组件:编写父组件的template和script代码,其中template中调用封装组件,script中定义需要传递给封装组件的props属性。 3. 创建封装组件:编写封装组件的template和script代码。在template中使用element-ui组件,并根据需要进行样式和布局的调整。在script中定义props属性,接收父组件传递的值,并监听element-ui组件的事件,触发update事件给父组件。 4. 通过临时变量传递值:由于父组件传递给封装组件的props不能直接作为封装组件的v-model属性传递给element-ui组件,所以需要在封装组件中定义一个临时变量来存储值,并将该变量与element-ui组件进行绑定。 5. 完成打通:在封装组件中监听中间件,接收到element-ui组件的update事件后,再将该事件传递给父组件。 总结来说,Vue2中对于element-ui组件二次封装,需要创建父组件封装组件,通过props属性传递值,并在封装组件中监听element-ui组件的事件并触发update事件给父组件。同时,需要使用临时变量来传递值给element-ui组件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue3+ts+element-plus 组件二次封装-- 页脚分页el-pagination的二次封装](https://blog.csdn.net/cs492934056/article/details/128096257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值