1.4.7 • Published 3 years ago

mixi-wxcore v1.4.7

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

米夕共享库

框架

框架仅适用于米夕平台,其多租户模式,以及接口都是按米夕平台设计,涉及到用户登录及验证均由米夕平台接口提供。

MyApp

提供小程序配置环境初始化,扩展原生 App 对象,添加一些自定义属性和方法。使用:

const Mx = require("mixi-wxcore");
Mx.setContext(wx);
Mx.App(App, {});

其中,配置参数有:

  • env
    • 环境变量,可选:prod, test, dev
  • homepage
    • 默认为/pages/index/index

自定义方法,如:

  • isDev(): boolean
    • 是否是开发环境
  • isTest(): boolean
    • 是否是测试环境(一般用于体验版)
  • isProduction(): boolean
    • 是否是线上环境
  • $get(api, params, callback): Promise|null
    • 发起一个GET异步请求
  • $post(api, params, callback): Promise|null
    • 发起一个POST异步请求
  • $upload(api, params, callback): Promise|null
    • 发起一个上传异步请求
  • $showMessage(message, title, callback): void
    • 消息弹框提示
  • $confirm(message, title): Promise
    • 一个确认对话框
  • $tooltip(message, callback): void
    • 一个简单的提示信息
  • $loading(message): ({remove()})
    • 显示加载视图
  • trigger(name, data): void
    • 自定义全局事件派发
  • on(name, handler): void
    • 自定义全局事件绑定
  • off(name, handler): void
    • 自定义全局事件解绑
  • getWxOpenId(): Promise
    • 试图获取用户wxOpenId
  • checkLogin(): Promise
    • 验证用户是否登录(或过期)
  • tryLogin(): Promise
    • 尝试自动登录

MyComponent

自定义组件基类,主要是方便获取租户的主色themeColor。使用:

const Mx = require("mixi-wxcore");
Mx.Component(Component, {});

加入了组件自定义属性:

  • myComponentId 自动生成
    • 自定义组件的唯一编号,每个组件一个编号,通过this.data.myComponentId获取。
  • themeColor 自动生成
    • 当前租户的主题色,通过this.data.themeColor获取。

自定义方法,如:

  • toPage(page, data, callback): void
    • 调用当前页面(MyPage)的toPage()方法
  • goBack(data): void
    • 调用当前页面(MyPage)的goBack()方法
  • tryRedirect(params, defaultUrl): void
    • 调用当前页面(MyPage)的tryRedirect()方法
  • emit(event, params): boolean
    • 自定义事件派发,监听方法可以使用bindHandler(e){e.detail.preventDefault()}方式阻止事件默认行为。使用上述方式emit()将返回true代表阻止事件默认行为(具体阻止行为需要在业务代码里实现,如:if (!this.emit(.., ..)) {...})。

MyPage

自定义页面基类,使用:

const Mx = require("mixi-wxcore");
Mx.Page(Page, {});

加入了页面自定义属性,如:

  • myPageId 自动生成
    • 自定义页面的唯一编号,每个页面一个编号,通过this.data.pageId获取
  • themeColor 自动生成
    • 当前租户的主题色,通过this.data.themeColor获取
  • pageTitle
    • 页面标题,默认取app.cfgs.appTitle
  • background
    • 页面背景色,如:#f00,为theme时自动取app.cfgs.themeColor
  • pageLoaded 自动生成
    • 当页面生命周期onLoad()完成之后该值设为true
  • needLogin
    • 该页面是否需要登录查看,如果未登录则自动跳转到登录页面,默认为true
  • needUser
    • 该页面是否需要用户信息,会试图自动登录获取用户信息,默认为true

实现了用户登录判断逻辑,如果未登录将自动跳转到登录页面。设置needUserfalse时不检查用户信息,也就是不会试图自动登录,needLoginfalse时不会跳转到登录页面。

扩展的方法有:

  • toPage(page, data, callback): void
    • 使用wx.switchTab()wx.navigateTo()进行页面跳转。允许传递数据,在目标页面(也必须是一个自定义页面)通过this.data..或者getPageData()获取。在目标页面执行goBack()doPageCallback()callback()回调方法会被执行,可以获取目标页面传回的数据。
  • goBack(data): void
    • 使用wx.navigateBack()返回到上一级页面。允许返回一个数据,在上一级页面发起跳转时的toPage()方法的callback回调方法中可以获得该数据,如:this.toPage(path, params, data => { /* do something */ });
  • tryRedirect(params, defaultUrl)
    • 使用wx.redirectTo()试图重定向到目标页面。优先重定向到this.options.redirect指定的页面,如果未指定则使用参数defaultUrl对应的页面。参数params是重定向时传递的参数,原理和用法通toPage()方法中的data参数。另外,this.options.redirect参数指定的方式如:wx.navigateTo('/pages/login/index?redirect=...')this.toPage('/pages/login/index', {redirect: '...'})等。
  • getPageData()
    • 当页面通过toPage()方法跳转而来时,该方法能获取到toPage()方法传入的data数据。
  • doPageCallback(data)
    • 当页面通过toPage()方法跳转而来时,该方法可以不返回页面的情况下执行toPage()对应的callback回调方法,并传回数据。
  • emit(event, data)
    • 自定义事件派发,监听方法可以使用bindHandler(e){e.detail.preventDefault()}方式阻止事件默认行为。使用上述方式emit()将返回true代表阻止事件默认行为(具体阻止行为需要在业务代码里实现,如:if (!this.emit(.., ..)) {...})。
  • updateModels(datas, keyField, format)
    • 约定,如果是列表型的页面,在页面的data属性中添加models属性,作为页面列表项模型,通过该方法可以方便简化模型的更新。
  • setModelSelected(index, beSelected, keyField)
    • 约定,针对可选择的列表型页面,配合页面的data属性中的selectedModelsisMultiSelected属性,该方法方便了列表项的选择与不选择操作。

MyListPage

自定义列表页面基类,在 MyPage 的基础上增加列表相关的属性和方法,使用:

const Mx = require("mixi-wxcore");
Mx.ListPage(Page, {});

其中属性有:

  • mode
    • 列表模式,暂时只支持select选项,如果modeselect则页面开启选择模式,相当于一个选择列表。
  • selectMode
    • 内部属性,可以在页面data中指定,如果未指定将通过参数mode生成。
  • multiple
    • 页面开启选择模式时,是否支持多选。
  • required
    • 页面开启选择模式时,是否必选,仅多选时有效。
  • requiredMessage
    • 必须提示信息
  • isEmpty
    • 内部属性,用于标记列表数据是否为空。

扩展的方法有:

  • getListView(): Node
    • 返回自定义列表组件,默认调用MyListPage.getListView()实现。
  • getDataAt(index): any
    • 返回列表中索引为index对应的数据,默认调用MyListPage.getDataAt()实现。
  • onLoadResultHandler(event): void
    • 用于绑定自定义列表组件加载完成事件,同步并格式化页面与组件的数据。默认调用MyListPage.loadResultHandler()实现。
  • onItemTapHandler(event): void
    • 用于绑定列表项点击事件,默认调用MyListPage.itemTapHandler()实现。
  • onSubmitBtnHandler(event): void
    • 用于绑定提交按钮点击事件,默认调用MyListPage.submitBtnHandler实现。
  • formatData(data): any
    • 数据格式化
  • submitAdapter(data): any
    • 选项提交前,数据格式化方法

静态方法:

  • MyListPage.getListView(): Node
    • 返回自定义列表组件,默认是组件id='listView'对应的组件。参见组件mx-list
  • MyListPage.getDataAt(index): any
    • 返回列表中索引为index对应的数据。
  • MyListPage.reachBottomHandler(): void
    • 页面滚动到底部时默认执行的方法,将通过MyListPage.doMore()加载更多数据。
  • MyListPage.loadResultHandler(e): void
    • 列表数据加载完成时,可以使用该方法初始化数据集。
  • MyListPage.itemTapHandler(e): void
    • 该方法处理列表项的点击事件,设置列表项选中或未选中状态。
  • MyListPage.submitBtnHandler(e): void
    • 获取当前列表选中项并提交,查看MyListPage.doSubmit()方法。
  • MyListPage.doSelectResult(result): void
    • 当自定义列表组件mx-list选项变更时,同步页面选择状态。
  • MyListPage.doSubmit(data): void
    • 选择模式下,用于提交当前选择项数据集。试图通过页面的tryRedirect()goBack()返回数据。
  • MyListPage.doRefresh(callback): void
    • 刷新列表
  • MyListPage.doMore(callback): void
    • 加载更多数据(翻页)

MyFrame

用户信息、状态等信息类。一般在 app.js onLaunch() 方法中创建并初始化。

组件

Border

<mx-border top ></mx-border>
PropDescriptiontypeDefault Value
left是否显示左边框booleanfalse
right是否显示右边框booleanfalse
top是否显示上边框booleanfalse
bottom是否显示下边框booleanfalse
radius边框圆角number0

Button

<mx-button>按钮</mx-button>
PropDescriptiontypeDefault Value
label文本信息string
type按钮类型,可选:primary / danger / defaultstringdefault
icon图标,结合mx-icon组件使用string
iconUrl图标,使用本地或网络图标string
iconOpacity图标透明度number1
size大小,可选:tiny / small / normal / big / bigger / large / largerstringnormal
radius圆角number20
disabled是否禁用booleanfalse

Card

<mx-card title="标题">
  <view>内容</view>
<mx-card>
PropDescriptiontypeDefault Value
title标题string
more是否显示更多按钮boolean
moreText更多按钮文本string更多

Cell

<mx-cells>
  <mx-cell label="标签">内容</mx-cell>
<mx-cells>
PropDescriptiontypeDefault Value
label标签文本string
value内容string
arrow是否显示前头符号booleanfalse
first是否是第一个Cell,配合做样式优化booleanfalse

Cells

<mx-cells>
  <mx-cell>...</mx-cell>
  <mx-cell>...</mx-cell>
</mx-cells>
PropDescriptiontypeDefault Value
theme主题(暂无效)string
border是否显示上下边框booleanfalse

CountButton

<mx-count-button value="1"></mx-count-button>
PropDescriptiontypeDefault Value
value计数值number0
min最小值number0
max最大值number100
step步长number1
showZero是否显示0值booleanfalse

Empty

<mx-empty></mx-empty>
PropDescriptiontypeDefault Value
message文本信息string

End

<mx-end></mx-end>
PropDescriptiontypeDefault Value
text文本信息string

Icon

<mx-icon name="add"></mx-icon>
PropDescriptiontypeDefault Value
name图标名称,可选:add / arrow / back / bell / check / check2 / close / close2 / decrease / empty / increase / play / plus / search / select / settings / stop / user/ video / voicestring
suffix名称后缀(暂无效)string
url使用本地或网络图标string
opacity透明度number1
size大小,可选:tiny / small / normal / big / bigger / large / largerstringnormal

MediaBox

<mx-media-box datas="{{ medias }}"></mx-media-box>
Page({
  data: {
    medias: [
      { url: ".../aa.jpg" },
      { url: ".../bb.mp3" },
      { url: ".../cc.mp4" },
      { url: ".../dd", type: "image" }
    ]
  }
})
PropDescriptiontypeDefault Value
datas数据集array
maxSize最多显示媒体个数number4
fix是否固定高度,将根据外部容器高度自适应booleanfalse
gapBox网格间距number0
imageMode图片显示模式,同原生image组件的mode属性stringaspectFill

其中datas格式:

PropDescriptiontypeDefault Value
url媒体网络地址string
thumbnail媒体缩略图string
type媒体类型,可选:image / video / voice,默认还会根据url后缀判断stringimage

MediaSwiper

<mx-media-swiper datas="{{ medias }}"></mx-media-swiper>
Page({
  data: {
    medias: [
      { url: ".../aa.jpg" },
      { url: ".../bb.mp3" },
      { url: ".../cc.mp4" },
      { url: ".../dd", type: "image" }
    ]
  }
})
PropDescriptiontypeDefault Value
datas数据集array
current当前(默认)显示媒体的索引number0
imageMode图片显示模式,同原生image组件的mode属性stringaspectFit
autoplay是否自动滑动booleafalse
interval自动滑动时,滑动的时间间隔(毫秒)number5000

其中datas格式:

PropDescriptiontypeDefault Value
url媒体网络地址string
type媒体类型,可选:image / video / voice,默认还会根据url后缀判断stringimage

MediaViewer

<mx-media-viewer url="..."></mx-media-viewer>
PropDescriptiontypeDefault Value
url媒体网络地址string
attachId米夕平台的附件编号number
type媒体类型,可选:image / video / voice,默认还会根据url后缀判断stringimage
fix是否固定高度,将根据外部容器高度自适应booleanfalse
imageMode图片显示模式,同原生image组件的mode属性stringwidthFix
videoPlayBtn是否显示视频播放按钮booleantrue
videoFullScreen是否默认全屏播放booleanfalse

Modal

<mx-modal>
  <view>...</view>
</mx-modal>
PropDescriptiontypeDefault Value
show显示或隐藏booleanfalse

PageNavigation

<mx-page-navigation title="..." scrollTop="..."></mx-page-navigation>
PropDescriptiontypeDefault Value
title标题内容string
backgroundColor背景色,如:#f00string
theme主题,可选:black / whitestringblack
showBack是否显示回退按钮booleantrue
showTitle是否总是显示标题booleanfalse
opacity用于设置导航栏的透明度number0
pageScrollTop页面的滚动条高度,用于设置导航栏透明度number0

Props

<mx-props datas="{{ properties }}"></mx-props>
Page({
  data: {
    properties: [
      { label: "", value: "" },
      { label: "", value: "" },
      { label: "", value: "" },
      { label: "", value: "" }
    ]
  }
})
PropDescriptiontypeDefault Value
datas数据集,格式:{label, value}object
showCount默认显示个数,其他隐藏,点击查看,为0时不启用number0

Space

<mx-space></mx-space>
PropDescriptiontypeDefault Value
theme主题,可选:black / white / defaultstringdefault
size大小,是10的倍数number1

VideoPlayer

<mx-video-player></mx-video-player>
PropDescriptiontypeDefault Value
src视频的网络地址string
showPlayBtn是否显示播放按钮booleantrue
fullScreen是否默认全屏播放booleanfalse

VoicePlayer

<mx-voice-player></mx-voice-player>
PropDescriptiontypeDefault Value
src音频的网络地址string

WxMobile

<mx-wxmobile
  bindok=""
  bindcancel=""
  binddeny=""
></mx-wxmobile>
PropDescriptiontypeDefault Value

WxUser

<mx-wxuser
  show
  bindok=""
  bindcancel=""
  binddeny=""
></mx-wxuser>
PropDescriptiontypeDefault Value
show显示或隐藏booleanfalse

页面

短信登录

/pages/auth/login/bymobile

  • 参数
    • useWxAuth:是否通过微信获取手机号码

密码登录

/pages/auth/login/bypwd

  • 参数
    • showDevTips:是否显示开发提示文案

修改密码

/pages/auth/repwd/index

短信重置密码

/pages/auth/repwd/sms

  • 参数

    • mobile:需要重置账号的手机号码,可选,不传时将自行输入
    • force:仅用于注册时,建议重置密码,可被跳过操作
    • temp:用于短信接口的用户临时编号
    • token: 用于短信接口的验证码
  • 说明
    temp 和 token 用于优化操作,从注册页面进入该页面时,其实注册页面已经获取过短信验证码,直接传入该页面,即无需用户再次获取验证码。

输入框页面

/pages/form/input

  • 参数
    • title:页面标题
    • value:当前内容
    • placeholder:输入提示信息,默认为“请输入”
    • type:输入类型,即输入框类型,默认为“text”
    • multi:是否多行输入
    • emptymsg|empty:内容为空时的提示信息

列表型选择页面

/pages/select/list

  • 参数:
    • api:列表接口名称
    • params:接口默认参数
    • datas:静态列表数据集,不使用api加载的情况
    • keyField:编号对应的字段名称,默认取值顺序为id -> code -> value
    • labelField:默认列表的显示字段,默认取值顺序为label -> title -> name
    • searchField:搜索字段名称,搜索时api的参数名称,默认无
    • selectedKeys:默认选中的列表项
    • multi:是否多选,默认为false
    • adapter:数据转换器(数据集格式化)
    • arrow:默认列表,显示项前头图标
    • selectOnlyOne:当只有1条数据的时候是否默认选择(不需要再点击了)
    • submitAdapter:选中提交时的数据格式转换方法

工具类

Chart

  • line(context, canvasId, datas, options): void;
    • 画线性图表

Payment

  • payOrderByAccount(orderId, type, params, callback): void;

    • 通过账户支付订单
  • payOrderByStoreCard(orderId, type, params, callback): void;

    • 通过储值卡支付订单
  • payOrderByWx(orderId, type, params, callback): void;

    • 通过微信支付订单

Utils

  • barcode(context, canvasId, code, width, height): void;

    • 渲染条形码
  • base64ToStr(value): string;

    • Base64转字符串,一般用于微信加密的接口
  • compareVersion(v1, v2): number;

    • 比较版本号,v1==v2是返回0,v1<v2时返回-1,v1>v2时返回1
  • countdown(count, callback): void;

    • 倒计时
  • debounce(name, handler, delay): void;

    • 防重复延迟执行
  • debounceInstance(): debounceFun;

    • 创建一个防重复延迟执行方法,同debounce但不会全局冲突
  • formatMobile(mobile): string;

    • 格式化手机号码为123 0000 0000
  • formatNumber(value, decimal, trim): string;

    • 数字格式化为字符串
  • getDataKey(data, keyField): any;

    • 获取对象的编号值,keyField为空时默认取对象的id -> code -> value属性
  • getDataLabel(data, labelField): string;

    • 获取对象的文本信息,labelField为空时默认取对象的label -> title -> name属性
  • getHideMobile(mobile): string;

    • 格式化手机号码为123 **** 0000,隐藏中间4位
  • getRect(context, selector, callback): void;

    • 获取页面上元素的宽、高、上、下、左、右信息,返回:{width, height, left, right, top, bottom}
  • getUrlParams(url): object;

    • 获取url中的参数(?search=后面部门内容)
  • isArray(value): boolean;

    • 判断是否是数组对象
  • isFunction(value): boolean;

    • 判断是否是方法
  • isMobile(mobile): boolean;

    • 判断是否是手机号码
  • isSameDay(dt1, dt2): boolean;

    • 判断dt1dt2是否是同一天
  • makePhoneCall(mobile, errmsg): void;

    • 拨打电话
  • qrcode(context, canvasId, code, size): void;

    • 渲染二维码
  • queryString(params, encode): string;

    • 将对象装换为url查询字符串,如:a=1&b=2&c=3
  • stepToNum(start, end, duration, frequency, callback): void;

    • 按一定频率将数据递增到某个值
  • toArray(value): Array;

    • 将对象转换为数组,确保返回的是一个数组
  • toDate(value): Date;

    • 转化为日期对象,value可以是日期字符串或者时间戳
  • toDateString(dt, pattern): string;

    • 日期格式化,默认patternyyyy-MM-dd
  • trimNum(value, decimal): string;

    • 去除数字后面多余的0
  • trimStr(value): string;

    • 去除字符串2端的空白字符
  • uuid(): number;

    • 获取全局唯一编号
1.4.7

3 years ago

1.4.6

3 years ago

1.4.5

3 years ago

1.4.4

3 years ago

1.4.3

4 years ago

1.4.2

4 years ago

1.4.1

4 years ago

1.4.0

4 years ago

1.3.9

4 years ago

1.3.8

4 years ago

1.3.7

4 years ago

1.3.6

4 years ago

1.3.5

4 years ago

1.3.4

4 years ago

1.3.3

4 years ago

1.3.2

4 years ago

1.3.1

4 years ago

1.3.0

4 years ago

1.2.9

4 years ago

1.2.8

4 years ago

1.2.7

4 years ago

1.2.6

4 years ago

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.2.1

4 years ago

1.2.0

4 years ago

1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.1

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.2

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.2.1

4 years ago

0.2.2

4 years ago

0.1.9

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.4

4 years ago

0.1.5

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.1

4 years ago