gxd-uni-test

自定义uni-app组件功能,支持h5,mp-weixin平台(文档尚未完善)有一定基础才能使用

Usage no npm install needed!

<script type="module">
  import gxdUniTest from 'https://cdn.skypack.dev/gxd-uni-test';
</script>

README

gxd-uni

1、自定义uni-app组件功能,支持h5,mp-weixin平台已自测(竖屏),(文档尚未完善),
2、根据自己的项目需要持续更新。
3、提bug或者需要技术交流加:QQ:149648746  微信:15110208397
4、预览地址:http://uni.e56buy.com/

安装

npm install gxd-uni-test --save --registry  https://registry.npm.taobao.org

#在package.json文件中加入拷贝脚本

"scripts": {
    ...
        "copy:gxd-uni-test": "cp -rf node_modules/gxd-uni-test/src/components/ src/components/three && cp -rf node_modules/gxd-uni-test/src/utils/ src/utils && cp -rf node_modules/gxd-uni-test/xd.less ./ && cp -rf node_modules/gxd-uni-test/src/test-data src/test-data",
    ...
}

然后运行 npm run copy:gxd-uni-test 将插件拷贝到当前项目下

插件全局引用

import Vue from 'vue'
import gxdUniTest from 'gxd-uni-test';

//自动加载components中的插件
import components from "@/components/autoload";
Object.keys(components).map((key) => {
   Vue['component'](components[key].name, components[key]);
});


//初始化自定义插件
gxdUniTest(Vue, websetting);

websetting配置文件
/**
 * @description 网址配置文件
 * @attr websetting.mainColor 主色调
 * @attr websetting.btnColor 按钮主色调
 * @attr websetting.subBtnColor 次级按钮主色调
 * @attr websetting.home //首页路径默认为:/pages/index/index
 * @attr websetting.color tabbar文字颜色
 *
 * @attr websetting.selectedColor tabbar当前选中文字颜色
 * @attr websetting.backgroundColor tabbar背景颜色值
 * @attr websetting.showIcon tabbar图标类型 false=》图片(本地路径与base64)推荐使用base64 true=》iconfont图标(需要自己自定义)
 * @attr websetting.list tabbar列表
 * @attr websetting.list.text tabbar文案(4个汉字)
 * @attr websetting.list.iconPath tabbar图标图片路径
 * @attr websetting.list.selectedIconPath tabbar当前路径图标图片路径
 * @attr websetting.list.pagePath 链接路径
 * @attr websetting.list.icon iconfont图标
 */
export const websetting = {
  "color": "#333",//文字颜色
  "selectedColor": "#f00", //tabbar选中颜色
  "backgroundColor": "#fff", //tabbar背景颜色
  "showIcon": true, //icon 获取 图片
  "mainColor": '#f00', //主色调
  "btnColor": '#f00', //按钮主色调
  "subBtnColor": '#FF4304', //次级按钮主色调
  "home": '/pages/index/index', //首页路径默认为:/pages/index/index
  "list": [ //tabbar配置项
    {
      "pagePath": "/pages/index/index",
      "icon": "cakeiconfont cakeshouye",
      'size': 38,
      "customPath": '/pages/rightnow/index',
      "text": "首页"
    },
    {
      "pagePath": "/pages/category/index",
      "icon": 'cakeiconfont cakefenlei1',
      'size': 44,
      "text": "品牌列表"
    },
    {
      "pagePath": "/pages/card/index",
      "icon": "cakeiconfont cakegouwuche",
      'size': 44,
      "text": "购物车"
    },
    {
      "pagePath": "/pages/my/index",
      "icon": "cakeiconfont cakewode2",
      "text": "我的",
      'size': 42,
    }
  ]
};


展示地址

预览地址:http://uni.e56buy.com/

工具函数

#$vm.$xdUniHelper 工具类 
 - checkVarType(obj:Any) //判断变量类型 返回字符串(boolean|number|string|function|array|date|regExp|undefined|null|object)
 - cloneDeep(json:Object) //简单深拷贝
 - random(min:Number, max:Number) //随机数字值
 - romdomArray(arr:Arrar = []) //随机数组的值
 - getTime(lastDay:Number = 30) //获取最近某时间断内的时间
 - inArray(sourceArray:Array = [], findArray:Array = []) 检测查找数组是否在原数组中,返回boolean
 - repeatArray(sourceArray:Array = [], findArray:Array = []) 数组去重复
 - unionArray(sourceArray:Array = [], findArray:Array = []) 数组并集
 - intersectionArray(sourceArray:Array = [], findArray:Array = []) 数组交集
 - differenceArray(sourceArray:Array = [], findArray:Array = []) 数组差集
 - isEmpty(obj:Array|Object) 检查对象或者数组是否为空,返回boolean
 - idToSelectData(data:Array|Object, name:String = 'name', id:String = 'id', force:Boolean = true) 转化为vue element UI选择插件数据格式({value: 'value' ,label: 'label'})
 - isKeyInLists(list:Array|Object, value:Any, keyName:String='id') 检查值是否在数组中或者对象中并返回结果
 - getListKeyForValue(list:Array|Object, keyName:String = 'id') 获取数组或者对象中的某个key的value值
 - deleteParamEmptyKey(source:Object, ignoreKey:Array = []) 删除参数中[all|''|null|undefined] ignoreKey被忽略的Key
 - paramsBase64Decode(base64Str:String) //把Base64转化为对象
 - paramsBase64Encode(row:Object) //把对象转化为可传输的Url Base64安全格式
 - jsonToParams(params:String) //把对象解析成请求参数格式
 - cutStringLen(val:String, len:Number = 10) //截断字符串长短(汉字2个字符串,英文1个)
 - parseURL(url:String?) //解析链接地址 或者 获取当前url地址
 - getParmater(key:String)  //获取Url参数
 - addFloatNumber(currentNum:Number, targetNum:Number) //浮点型加法
 - cutFloatNumber(currentNum:Number, targetNum:Number) //浮点型减法
 - multiplyFloatNumber(currentNum:Number, targetNum:Number) //浮点型乘法
 - divisionFloatNumber(currentNum:Number, targetNum:Number) //浮点型除法
 - getCurrentPages() //获取当前页面对象
 - getWindowHeight(ele:Array, this) //获取指定元素元素属性信息,ele为: .xxx or #xxx,返回Promise
    例如:this.$xdUniHelper.getWindowHeight(['.seat-online__info','.seat-online__area',], this).then(res=>{}).catch()
 - tirmL(str:String, replaceStr:String?) //去掉左边指定字符
 - tirmR(str:String, replaceStr:String?) //去掉右边指定字符串
 - tirm(str:String, replaceStr:String?) //去掉两部指定字符串
 - searchHigh(str:String, keyword:String|Array, options:Object? = {}) 
 - navigateTo(obj:Object[url:String],redirect:Boolean = true) //obj与uni.navigateTo的Object参数相同,功能相同,在H5平台的时候可以跳转到外站(需要带http路径)
 - navigateBack() //返回页面处理与navigateTo成对使用
 - setTabbarBadge(this, index:Number,num:Number) //设置footerTabbar数字显示 index:为索引位 num:显示数字 最大99,大于99显示99+

插件功能

1、图标插件

  /**
    * UniIcons 图标
    * @description 用于展示 icons 图标
    * @tutorial https://hellouniapp.dcloud.net.cn/pages/extUI/icons/icons
    * @property {Number} size 图标大小
    * @property {String} type 图标图案,参考示例
    * @property {String} color 图标颜色
    * @event {Function} click 点击 Icon 触发事件
    */

##例子:

<uni-icons 
    type="search" 
    size="16" 
    color="#999"
>
</uni-icons>

2、自定义Iconfont图标插件

  /**
     * XdFontIcon 全局Ui
     * @description 兼容iconfont图标功能
     * @tutorial
     * @property {Number} size          图标大小(可选) 默认:32rpx
     * @property {Number|String} width  图标宽度(可选)
     * @property {Number|String} height 图标高度(可选)
     * @property {String} icon          图标样式名字 (必选) 默认为: xxxiconfont xxx
     * @event {Function} click          点击是事件
     */

##例子:

内置
<xd-font-icon size="32" color="#999" icon="iconduigou1"></xd-font-icon>

自定义
<xd-font-icon size="32" color="#999" icon="cakeiconfont cakedistribution"></xd-font-icon>

3、星星选中得分

/**
 * XdStar 评分
 * @description 评分组件
 * @tutorial https://ext.dcloud.net.cn/plugin?id=33
 * @property {Boolean} 	isFill = [true|false] 		星星的类型,是否为实心类型, 默认为实心
 * @property {String} 	color 						未选中状态的星星颜色,默认为 "#ececec"
 * @property {String} 	activeColor 				选中状态的星星颜色,默认为 "#ffca3e"
 * @property {String} 	disabledColor 				禁用状态的星星颜色,默认为 "#c0c0c0"
 * @property {Number} 	size 						星星的大小
 * @property {Number} 	value/v-model 				当前评分
 * @property {Number} 	max 						最大评分评分数量,目前一分一颗星
 * @property {Number} 	margin 						星星的间距,单位 px
 * @property {Boolean} 	disabled = [true|false] 	是否为禁用状态,默认为 false
 * @property {Boolean} 	readonly = [true|false] 	是否为只读状态,默认为 false
 * @property {Boolean} 	allowHalf = [true|false] 	是否实现半星,默认为 false
 * @property {Boolean} 	touchable = [true|false] 	是否支持滑动手势,默认为 true
 * @event {Function} change 						uniRate 的 value 改变时触发事件,e={value:Number}
 */

##例子:

<xd-star
    v-model="readonlyStar"
    :active-color="$mainColor"
></xd-star>

4、自定义按钮UI

   /**
    * XdButton 按钮UI
    * @description 按钮组件
    * @tutorial
    * @property {Boolean} disabled = [true|false]    是否禁用
    * @property {String}  btnType                    按钮颜色类型(primary,default,subPrimary,danger,info,warning,success)
    * @property {String}  radius                     圆角处理
    * @property {String}  size                       按钮大小(default,mini)
    * @event {Function} click                        按钮点击事件e
    */

##例子:

<xd-button 
    btn-type="subPrimary" 
    @click="dialogVisible=true"
>开启弹出{{dialogVisible}}</xd-button>

5、支付元宝UI

/**
  * XdCoins 支付元宝
  * @description 元宝ui
  * @tutorial
  * @property {Number} size        元宝被放大倍数,值为0.1 - 1.5 之间, 默认值为0.5
  * @event {Function} click|tap    点击元宝事件
  */

##例子:
<xd-coins size="0.4"></xd-coins>

6、图片作为icon插件

/**
   * XdImageIcon 全局Ui
   * @description 图片作为icon插件
   * @tutorial
   * @property {Number} size        元宝被放大倍数,值为0.1 - 2 之间, 默认值为0.5
   * @property {String} src         图片地址(本地图片或者base64)
   * @event {Function} click|tap    点击元宝事件
   */

##例子:
<xd-image-icon size="2" src="/static/follow.png"></xd-image-icon>

7、图片自动缩放

/**
   * XdLogo 按钮UI
   * @description 图片自动缩放
   * @tutorial
   * @property {String} image                      图片地址 (必填)
   * @property {String|Number}  height             图片最大高度 (选填) 默认:100rpx
   * @property {String|Number}  width              图片最大宽度 (选填) 默认:100rpx
   * @property {String}  mode                      图片展示模式 (选填) 与uni 图片模式保持一致,默认:aspectFit
   *
   * @event {Function} click                       按钮点击事件e
   */

##例子:
<xd-logo image="/static/logo2.png" width="50" height="50"></xd-logo>

8、底部tabbar功能

/**
   * XdFooterTabbar 全局Ui
   * @description 底部tabbar功能
   * @tutorial
   * @property {Number} zIndex          层级数字 (可选)默认: 1500
   * @property {Number} height          tabbar高度(可选) 默认: 100rpx
   * @property {Object} tabbar
   *  tabbar.selectedColor  {String} tabbar当前选中文字颜色
   *  tabbar.backgroundColor  {String} tabbar背景颜色值
   *  tabbar.showIcon tabbar图标类型 false=》图片(本地路径与base64)推荐使用base64 true=》iconfont图标(需要自己自定义)
   *  tabbar.list {Array} tabbar列表
   *  tabbar.list.text  {String} tabbar文案(4个汉字)
   *  tabbar.list.iconPath  {String} tabbar图标图片路径
   *  tabbar.list.selectedIconPath  {String} tabbar当前路径图标图片路径
   *  tabbar.list.pagePath  {String} 链接路径
   *  tabbar.list.icon  {String} iconfont图标
   * @property {Function} click          点击是事件
   */

##例子:
<xd-footer-tabbar
    :tabbar="tabbar"
    :height="info.bottomTabbar"
    :z-index="info.zIndex"
></xd-footer-tabbar>

9、显示没有更多样式,支持插槽

/**
* XdMore 全局Ui
* @description 显示没有更多样式,支持插槽    默认插槽:没有更多了
* @property {String} background 背景颜色值
*/

##例子:
<xd-more></xd-more>

10、数量输入插件

/**
* XdNumber 按钮UI
* @description 数量输入插件
* @tutorial
* @property {Number} value/v-model              双向绑定值 默认:null
* @property {String} label                      label名称 (选填) 默认:购买数量 值为空不显示
* @property {Boolean} focus                     输入框是否聚焦 (选填)
* @property {Number}  min                       默认最小值 (选填) 默认:1
* @property {Number}  width                     输入框最大宽度 (选填) 默认:100rpx
* @property {String}  placeholder               提示文案
*
* @v-model {Number} value
* @event {Function} change                      点击加减按钮事件
*/

##例子:
<xd-number v-model="num"></xd-number>

11、选择是否插件(Switch)

/**
   * XdSwitch 
   * @description 选择是否插件
   * @tutorial
   * @property {Boolean} disabled = [true|false]    是否禁用     默认:false
   * @property {String}  size                       支持尺寸大小(small,mini,lag,default)   默认:default
   * @property {Boolean}  isShowText                支持显示是否文本    默认:false
   * @property {Boolean}  checked                   是否选中    默认:true
   * @property {String}  openText                   选择文本    默认:开 (isShowText=>true 生效)
   * @property {String}  closeText                  未选择文本    默认:关 (isShowText=>true 生效)
   * @property {String}  color                      按钮选择颜色   默认:主色调
   *
   * @v-model 单向绑定 是否选择通过checked进行绑定
   *
   * @event {Function} change                       状态改变事件
   */

##例子:
<xd-switch
  size="mini"
  :is-show-text="true"
  open-text="开启"
  close-text="关闭"
  color="green"
  :checked="false"
  :disabled="false"
></xd-switch>

12、自定义标签,支持插槽

/**
* XdTagsBg
* @description 自定义标签,支持插槽
*/

##例子:
<xd-tags-bg>噢耶</xd-tags-bg>

13、标签,用于展示1个或多个文字标签,可点击切换选中、不选中的状态

/**
 * XdTag 标签
 * @description 用于展示1个或多个文字标签,可点击切换选中、不选中的状态
 * @property {String} text 标签内容
 * @property {String} size = [normal|small] 大小尺寸
 * 	@value normal 正常
 * 	@value small 小尺寸
 * @property {String} type = [default|primary|success|warning|error|royal]  颜色类型
 * 	@value default 灰色
 * 	@value primary 蓝色
 * 	@value success 绿色
 * 	@value warning 黄色
 * 	@value error 红色
 * 	@value royal 紫色
 * @property {String}  radius  圆角处理 默认为30rpx
 * @property {Boolean} disabled = [true|false] 是否为禁用状态
 * @property {Boolean} inverted = [true|false] 是否无需背景颜色(空心标签)
 * @property {Boolean} circle = [true|false] 是否为圆角
 * @event {Function} click 点击 Tag 触发事件
 */

##例子:
<xd-tag type="primary">正常标签</xd-tag>
<xd-tag type="primary" radius="10rpx" inverted>正常标签</xd-tag>
<xd-tag type="primary" size="small" circle>小号标签</xd-tag>

14、单位显示插件

/**
* XdUint 
* @description 单位显示插件
* @tutorial
* @property {Number} fontSize                    支付金额文字大小 (选填) 默认:32rpx
* @property {Number|String}  price               支付金额 (必选)
* @property {String}  color                      支付金额文本颜色 (选填) 默认:主色调
* @property {String}  unit                       支付金额单位 (选填) 默认:空,选上元宝样式
* @property {Number}  iocnSize                   支付元宝样式大小  (选填) 默认:0.35  备注:unit单位为空时候生效
*/


##例子:
<xd-uint color="red" :font-size="32" price="200" unit="元"></xd-uint>
<xd-uint color="red" :font-size="32" price="200" unit="点"></xd-uint>
<xd-uint color="red" :font-size="32" price="200" :iocn-size="0.3"></xd-uint>