...
 
Commits (10)
    https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/afd3e03e8cf25d3eec14e313e397d2b79f8988c7 优化获取菜单列表接口和权限列表接口 2023-06-06T15:39:38+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/1c66b0d80c78824248c6758edd1b400e52b23941 解决发布页二维码不显示的问题 2023-06-06T15:40:57+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/0d2de4f1cfb814d8f967b2f2f6305ee1fd2ee0ee 优化注释 2023-06-06T15:41:21+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/fe04c8cb5f59617a5cbc832102b4b55b1300c435 新增配置 邮箱验证码有效期 2023-06-06T15:41:44+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/2a261b6d8e77e84ea7121940b88e963cd20e01f1 优化注释 2023-06-06T21:21:28+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/559387398d9abf682d4a3ac23ed8f984321eb3c2 1 2023-06-07T15:31:33+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/9bf5a7979402554de25f0c387d0cc501140570c3 新增支付宝小程序api 2023-06-07T15:38:02+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/7f1702e3bb23966e02e1960cf7a671fc289eae7c 1 2023-06-07T17:39:31+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/0a0516c6e40dcdfa3f33370b498bb28ab6cdab2f 1 2023-06-07T22:21:57+08:00 VK云桌面 370725567@qq.com https://gitcode.net/vk-uni/vk-uni-cloud-router/-/commit/81b42f12e432aba184909f1efe20fd2d9ad21a34 【优化】注册接口全局防抖 2023-06-08T16:39:05+08:00 VK云桌面 370725567@qq.com
......@@ -15,6 +15,7 @@ router.param.json
.vscode
.hbuilderx
package-lock.json
.hbuilderx
# python
......
......@@ -29,10 +29,10 @@
// #endif
},
onShow: function() {
if(config.debug) console.log('App Show')
if(config.debug) console.log('App Show');
},
onHide: function() {
if(config.debug) console.log('App Hide')
if(config.debug) console.log('App Hide');
}
}
</script>
......
* 1、【优化】`user/kh/addUploadRecord` 细节
* 2、【优化】`vk.importObject` 支持 `importObjectOptions` 参数 [传送门](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#uni-vk-importobject%E7%9A%84%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95)
* 3、【优化】vuex模块化支持多级目录
* 4、【优化】微信公众号登录后不能跳回登录前页面的问题。
* 5、【调整】`vk.pubfn.test(str, 'username')` 检测的长度调整为3-32位
* 1、【新增】支付宝小程序api [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/alipay.html)
* 2、【优化】发送邮箱验证码支持设置自定义有效期
* 3、【修复】因 `2.14.2` 更新导致的支付宝小程序报错问题。
##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
\ No newline at end of file
......@@ -174,6 +174,12 @@
"path": "openapi/douyin/imgSecCheck/imgSecCheck",
"style": {}
},
{
"path": "openapi/alipay/alipay",
"style": {
"navigationBarTitleText": "支付宝开放接口"
}
},
{
"path": "uni-id/test/test",
"style": {
......
<template>
<view class="app">
<button type="default" @tap="code2Session">code2Session</button>
<button type="default" @tap="getMiniCode">生成带参数的小程序码</button>
<view style="text-align: center;" v-if="imageUrl"><image :src="imageUrl" style="width: 400rpx;height: 400rpx;"></image></view>
<view>
<text space="ensp">{{ JSON.stringify(data, null, 2) }}</text>
</view>
</view>
</template>
<script>
var vk = uni.vk;
export default {
data() {
return {
imageUrl: "",
data: {}
};
},
onLoad(options) {
vk = uni.vk;
this.options = options;
this.init(options);
},
methods: {
// 初始化
init(options) {},
code2Session() {
// #ifndef MP-ALIPAY
vk.toast("请在支付宝小程序中打开");
return;
// #endif
uni.login({
success: res => {
vk.callFunction({
url: "template/openapi/alipay/pub/code2Session",
title: "请求中...",
data: {
code: res.code
},
success: data => {
this.data = data;
}
});
}
});
},
// 生成带参数的小程序码
getMiniCode() {
vk.callFunction({
url: "template/openapi/alipay/pub/getMiniCode",
title: "请求中...",
data: {
page: "pages/index/index",
scene: "a=1&b=2"
},
success: data => {
this.data = data;
this.imageUrl = data.base64;
}
});
}
}
};
</script>
<style lang="scss" scoped>
.app {
padding: 30rpx;
}
.app button {
margin-bottom: 30rpx;
}
.tips {
font-size: 28rpx;
color: #999999;
margin-bottom: 32rpx;
}
</style>
......@@ -5,6 +5,9 @@
<view style="text-align: center;" v-if="imageUrl"><image :src="imageUrl" style="width: 400rpx;height: 400rpx;"></image></view>
<button type="default" @tap="vk.navigateTo('msgSecCheck/msgSecCheck')">文本安全检测</button>
<button type="default" @tap="vk.navigateTo('imgSecCheck/imgSecCheck')">图片安全检测</button>
<view>
<text space="ensp">{{ JSON.stringify(data, null, 2) }}</text>
</view>
</view>
</template>
......@@ -14,7 +17,7 @@ export default {
data() {
return {
imageUrl: "",
openlink: ""
data: {}
};
},
onLoad(options) {
......@@ -26,6 +29,10 @@ export default {
// 初始化
init(options) {},
code2Session() {
// #ifndef MP-TOUTIAO
vk.toast("请在抖音小程序中打开");
return;
// #endif
uni.login({
success: res => {
vk.callFunction({
......@@ -36,7 +43,7 @@ export default {
anonymousCode: res.anonymousCode
},
success: data => {
vk.alert(JSON.stringify(data));
this.data = data;
}
});
}
......@@ -44,13 +51,13 @@ export default {
},
// 生成带参数的小程序码
getMiniCode() {
let that = this;
vk.callFunction({
url: "template/openapi/douyin/pub/getMiniCode",
title: "请求中...",
data: {},
success: data => {
that.imageUrl = data.base64;
this.data = data;
this.imageUrl = data.base64;
}
});
}
......
......@@ -5,8 +5,11 @@
<view style="text-align: center;" v-if="imageUrl">
<image :src="imageUrl" style="width: 400rpx;height: 400rpx;"></image>
</view>
<button type="default" @tap="vk.navigateTo('msgSecCheck/msgSecCheck')">文本安全检测</button>
<button type="default" @tap="vk.navigateTo('imgSecCheck/imgSecCheck')">图片安全检测</button>
<button type="default" @tap="vk.navigateTo('/pages_template/openapi/qq/msgSecCheck/msgSecCheck')">文本安全检测</button>
<button type="default" @tap="vk.navigateTo('/pages_template/openapi/qq/imgSecCheck/imgSecCheck')">图片安全检测</button>
<view>
<text space="ensp">{{ JSON.stringify(data, null, 2) }}</text>
</view>
</view>
</template>
......@@ -16,6 +19,7 @@ export default {
data() {
return {
imageUrl: "",
data: {}
};
},
onLoad(options) {
......@@ -27,6 +31,10 @@ export default {
// 初始化
init(options) {},
code2Session(){
// #ifndef MP-QQ
vk.toast("请在QQ小程序中打开");
return;
// #endif
uni.login({
success: (res) => {
vk.callFunction({
......@@ -36,7 +44,7 @@ export default {
code: res.code,
},
success: (data) => {
vk.alert(JSON.stringify(data));
this.data = data;
}
});
}
......@@ -44,13 +52,13 @@ export default {
},
// 生成带参数的小程序码
getMiniCode() {
let that = this;
vk.userCenter.getQQMiniCode({
data: {
//path: "pages/index/mys"
},
success:(data) =>{
that.imageUrl = data.base64;
this.data = data;
this.imageUrl = data.base64;
}
});
},
......
<template>
<view class="content">
<button type="default" @tap="code2Session">code2Session</button>
<button type="default" @tap="getWeixinMPqrcode">生成带参数的小程序码</button>
<view style="text-align: center;" v-if="imageUrl">
<image :src="imageUrl" style="width: 400rpx;height: 400rpx;"></image>
......@@ -33,6 +34,17 @@ export default {
methods: {
// 初始化
init(options) {},
code2Session(){
// #ifndef MP-WEIXIN
vk.toast("请在微信小程序中打开");
return;
// #endif
vk.userCenter.code2SessionWeixin({
success: (data) => {
this.data = data;
},
});
},
// 生成带参数的小程序码
getWeixinMPqrcode() {
let that = this;
......
......@@ -23,13 +23,6 @@
<!-- #ifdef MP-WEIXIN || APP-PLUS -->
<button type="default" @click="pageTo('../weixin/weixin')">微信登录</button>
<!-- #endif -->
<button type="default" @click="vk.navigateTo('../../openapi/weixin/weixin')">微信小程序API</button>
<!-- #ifdef H5 -->
<button type="default" @click="pageTo('../weixin/h5-weixin')">微信公众号API</button>
<!-- #endif -->
<button type="default" @click="vk.navigateTo('../../openapi/baidu/baidu')">百度开放平台API</button>
<button type="default" @click="vk.navigateTo('../../openapi/qq/qq')">QQ小程序API</button>
<button type="default" @click="vk.navigateTo('../../openapi/douyin/douyin')">抖音小程序API</button>
<!-- #ifdef MP-ALIPAY || APP-PLUS -->
<button type="default" @click="pageTo('../alipay/alipay')">支付宝登录</button>
<!-- #endif -->
......@@ -39,11 +32,22 @@
<view style="margin-bottom: 20rpx;">小白也能轻松上手的数据库API</view>
<button type="default" @click="pageTo('../../db-test/db-test')">数据库API</button>
<button type="default" @click="pageTo('../util/util')">通用方法</button>
<view style="margin-bottom: 20rpx;">插件版本1.8.7 新增 APP手机一键登录</view>
<button type="default" @click="pageTo('../univerify/univerify')">手机一键登录</button>
<view style="margin-bottom: 20rpx;">插件版本1.4.4 新增 Vuex状态管理</view>
<button type="default" @click="pageTo('../../vk-vuex/vk-vuex')">Vuex状态管理演示示例</button>
<button type="default" @click="pageTo('../login/index/index')">登录注册找回密码页面模板</button>
<view style="margin-bottom: 20rpx;">各大小程序API扩展</view>
<button type="default" @click="vk.navigateTo('../../openapi/weixin/weixin')">微信小程序API</button>
<!-- #ifdef H5 -->
<button type="default" @click="pageTo('../weixin/h5-weixin')">微信公众号API</button>
<!-- #endif -->
<button type="default" @click="vk.navigateTo('../../openapi/qq/qq')">QQ小程序API</button>
<button type="default" @click="vk.navigateTo('../../openapi/douyin/douyin')">抖音小程序API</button>
<button type="default" @click="vk.navigateTo('../../openapi/alipay/alipay')">支付宝小程序API</button>
<button type="default" @click="vk.navigateTo('../../openapi/baidu/baidu')">百度开放平台API</button>
</view>
</template>
......
......@@ -173,7 +173,17 @@ module.exports = async function(data = {}) {
return key.indexOf('mp') !== -1 && hasValue(appInfo[key])
})
}
// 解决二维码不显示的问题
if (appInfo.icon_url && appInfo.icon_url.indexOf("http") == 0) {
let imageBuffer = await vk.request({
url: appInfo.icon_url,
method: "GET",
dataType: "default"
});
appInfo.icon_url = "data:image/png;base64," + imageBuffer.toString('base64');
}
const html = TE.render(templatePage)(Object.assign({}, appInfo, defaultOptions));
if (!(defaultOptions.hasApp || defaultOptions.hasH5 || defaultOptions.hasMP || defaultOptions
......
......@@ -18,13 +18,14 @@ module.exports = {
pageIndex: 1,
pageSize: 500,
whereJson: {
parent_id: _.in([null,""])
parent_id: _.in([null, ""]),
menu_id: _.exists(true)
},
treeProps:{
treeProps: {
level: 3
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
}
\ No newline at end of file
......@@ -17,13 +17,14 @@ module.exports = {
pageIndex: 1,
pageSize: 500,
whereJson: {
parent_id: _.in([null,""])
parent_id: _.in([null, ""]),
permission_id: _.exists(true)
},
treeProps:{
treeProps: {
level: 3
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
}
\ No newline at end of file
'use strict';
module.exports = {
/**
* code2Session
* @url template/openapi/alipay/pub/code2Session 前端调用的url参数地址
* data 请求参数
* @param {String} params1 参数1
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
let { uid } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
let {
code,
} = data;
let code2SessionRes = await vk.openapi.alipay.auth.code2Session({
code,
needKey: true
});
if (code2SessionRes.code !== 0) {
return code2SessionRes;
}
console.log('code2SessionRes: ', code2SessionRes);
res.openid = code2SessionRes.openid;
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
\ No newline at end of file
'use strict';
module.exports = {
/**
* 获取支付宝小程序码
* @url template/openapi/alipay/pub/getMiniCode 前端调用的url参数地址
* data 请求参数
* @param {String} path 小程序页面路径
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
let { uid } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
let {
page,
scene
} = data;
res = await vk.openapi.alipay.acode.getMiniCode(data);
res.base64 = res.qr_code_url_circle_white; // 兼容其他小程序的返回字段
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
\ No newline at end of file
'use strict';
module.exports = {
/**
* 获取支付宝小程序码
* @url user/kh/getAlipayMiniCode 前端调用的url参数地址
* data 请求参数
* @param {String} page 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
* @param {String} scene 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
let { uid } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
let {
page,
scene
} = data;
res = await vk.openapi.alipay.acode.getMiniCode(data);
res.base64 = res.qr_code_url_circle_blue; // 兼容其他小程序的返回字段
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
module.exports = {
/**
* 重置密码
* @url user/kh/resetPwd 前端调用的url参数地址
* @description 重置当前登录用户的密码为123456
/**
* 重置密码
* @url user/kh/resetPwd 前端调用的url参数地址
* @description 重置当前登录用户的密码为123456
* data 请求参数 说明
* @param {String} uid 用户Id,可以通过checkToken返回
* @param {String} uid 当前登录用户id(可信任,仅kh目录下的函数有此值)
* @param {String} password 重置后的密码
* res 返回参数说明
* @param {Number} code 错误码,0表示成功
* @param {String} msg 详细信息
*/
*/
main: async (event) => {
let { util, data={} } = event;
let { uniID } = util;
let res = {};
// 业务逻辑开始-----------------------------------------------------------
// 注意:虽然uid是从data中获取的,但无论前端uid传什么,最终uid都是当前登录用户的_id,因此不会出现A把B的密码改了的情况。
let { uid, password= '123456' } = data;
res = await uniID.resetPwd({ uid, password });
// 业务逻辑结束-----------------------------------------------------------
......
......@@ -12,6 +12,7 @@ module.exports = {
* data 请求参数 说明
* @param {String} email 邮箱
* @param {String} type 验证码类型
* @param {String} serviceType 邮件服务类型,默认为qq
* res 返回参数说明
* @param {Number} code 错误码,0表示成功
* @param {String} msg 详细信息
......@@ -21,7 +22,11 @@ module.exports = {
main: async (event) => {
let { data = {}, util } = event;
let { uniID, config } = util;
let { email, type } = data;
let {
email,
type,
serviceType = "qq"
} = data;
let res = { code: 0, msg: 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let code = vk.pubfn.random(6, "0123456789");
......@@ -31,19 +36,21 @@ module.exports = {
email
};
// 发送验证码开始
var emailConfig = config.vk.service.email;
let emailConfig = config.vk.service.email;
// 如果配置设置了过期时间,则使用配置的过期时间,否则默认180秒
param.expiresIn = emailConfig.codeExpiresIn || 180;
let emailService = vkmail.createTransport({
"host": emailConfig[data.serviceType].host,
"port": emailConfig[data.serviceType].port,
"secure": emailConfig[data.serviceType].secure, // use SSL
"auth": emailConfig[data.serviceType].auth
"host": emailConfig[serviceType].host,
"port": emailConfig[serviceType].port,
"secure": emailConfig[serviceType].secure, // use SSL
"auth": emailConfig[serviceType].auth
});
try {
// 发送邮件
await emailService.sendMail({
"from": emailConfig[data.serviceType].auth.user,
"from": emailConfig[serviceType].auth.user,
"to": data.email,
"cc": emailConfig[data.serviceType].auth.user, // 由于邮件可能会被当成垃圾邮件,但只要把邮件抄送给自己一份,就不会被当成垃圾邮件。
"cc": emailConfig[serviceType].auth.user, // 由于邮件可能会被当成垃圾邮件,但只要把邮件抄送给自己一份,就不会被当成垃圾邮件。
"subject": data.subject, // 邮件的标题
"text": `您的验证码是${code},打死也不要告诉别人哦!`, // 邮件的内容
});
......
......@@ -16,40 +16,40 @@
"tokenExpiresIn": 604800,
"oauth": {
"weixin": {
"appid": "app开放平台appid",
"appsecret": "app开放平台appsecret"
"appid": "",
"appsecret": ""
}
}
},
"mp-weixin": {
"oauth": {
"weixin": {
"appid": "微信小程序appid",
"appsecret": "微信小程序appsecret"
"appid": "",
"appsecret": ""
}
}
},
"h5-weixin": {
"oauth": {
"weixin": {
"appid": "微信公众号appid",
"appsecret": "微信公众号appsecret"
"appid": "",
"appsecret": ""
}
}
},
"mp-alipay": {
"oauth": {
"alipay": {
"appid": "支付宝小程序appid",
"privateKey": "支付宝小程序privateKey"
"appid": "",
"privateKey": ""
}
}
},
"mp-qq": {
"oauth": {
"qq": {
"appid": "qq小程序appid",
"appsecret": "qq小程序appsecret"
"appid": "",
"appsecret": ""
}
}
},
......@@ -57,14 +57,14 @@
"sms": {
"name": "重要",
"codeExpiresIn": 180,
"smsKey": "你的smsKey",
"smsSecret": "你的smsSecret",
"templateId": "你的短信模板ID"
"smsKey": "",
"smsSecret": "",
"templateId": ""
},
"univerify": {
"appid": "App一键登录appid",
"apiKey": "App一键登录apiKey",
"apiSecret": "App一键登录apiSecret"
"appid": "",
"apiKey": "",
"apiSecret": ""
}
}
}
......@@ -40,6 +40,7 @@ module.exports = {
"service": {
// 邮箱发送服务
"email": {
"codeExpiresIn": 180, // 邮件验证码有效期(单位秒)
// qq邮箱参数配置
"qq": {
"host": "smtp.qq.com",
......@@ -49,6 +50,16 @@ module.exports = {
"user": "你的邮箱@qq.com",
"pass": "邮箱授权码"
}
},
// 163邮箱配置
"163":{
"host": "smtp.163.com",
"port": 465,
"secure": true,
"auth": {
"user": "",
"pass": ""
}
}
},
// 日志服务
......@@ -100,6 +111,30 @@ module.exports = {
{ "appid": "", "appsecret": "" },
{ "appid": "", "appsecret": "" }
]
},
// 支付宝
"alipay": {
// 密钥列表
"list": [
{ "appid": "", "privateKey": "" },
{ "appid": "", "privateKey": "" }
]
},
// qq
"qq": {
// 密钥列表
"list": [
{ "appid": "", "appsecret": "" },
{ "appid": "", "appsecret": "" }
]
},
// 抖音
"toutiao": {
// 密钥列表
"list": [
{ "appid": "", "appsecret": "" },
{ "appid": "", "appsecret": "" }
]
}
}
}
......
{
"name": "vk-unicloud",
"version": "2.14.2",
"version": "2.14.3",
"description": "【云函数端SDK】VK云函数路由模式uniCloud开发框架,在router目录下执行 npm i vk-unicloud 进行安装和升级",
"main": "index.js",
"homepage": "https://gitee.com/vk-uni/vk-uni-cloud-router.git",
......
......@@ -7,7 +7,7 @@ let timeoutArr = [];
* @param {Boolean} isImmediate 是否立即执行 默认true
* @param {String} timeoutName 定时器ID
* @return null
vk.pubfn.debounce(function() {
vk.pubfn.debounce(() => {
}, 1000);
*/
......@@ -18,16 +18,16 @@ function debounce(fn, time = 500, isImmediate = true, timeoutName = "default") {
// 立即执行一次
if (isImmediate) {
var callNow = !timeoutArr[timeoutName];
timeoutArr[timeoutName] = setTimeout(function() {
timeoutArr[timeoutName] = setTimeout(() => {
timeoutArr[timeoutName] = null;
}, time);
if (callNow){
if(typeof fn === 'function') fn();
if(typeof fn === 'function') return fn();
}
} else {
// 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时time毫秒后执行fn回调方法
timeoutArr[timeoutName] = setTimeout(function() {
if(typeof fn === 'function') fn();
timeoutArr[timeoutName] = setTimeout(() => {
if(typeof fn === 'function') return fn();
}, time);
}
}
......
......@@ -201,27 +201,38 @@ pubfn.validator = function(type) {
/**
* 检测文本是否满足指定格式
* @param {String} str 需要检测的文本
* @param {String} type 检测类型
* @param {String} type 检测类型(忽略大小写)
* 包含
* mobile 手机号码
* tel 座机
* card 身份证
* mobileCode 6位数字验证码
* username 账号以字母开头,长度在6~18之间,只能包含字母、数字和下划线
* pwd 密码长度在6~18之间,只能包含字母、数字和下划线和@
* payPwd 支付密码 6位纯数字
* username 账号以字母开头,长度在3~32之间,只能包含字母、数字和下划线
* pwd 密码长度在6~18之间,只能包含字母、数字和下划线
* password 与pwd效果一致,密码长度在6~18之间,只能包含字母、数字和下划线
* paypwd 支付密码 6位纯数字
* postal 邮政编码
* QQ QQ号
* qq QQ号
* email 邮箱
* URL 网址
* IP IP地址
* money 金额(小数点只允许2位)
* url 网址
* ip IP地址
* date 日期 2020-08-03
* time 时间 12:12:12
* dateTime 日期+时间 2020-08-03 12:12:12
* number 数字
* english 英文
* chinese 中文
* HTML HTML标记
* number 纯数字
* english 纯英文
* chinese 纯中文
* english+number 英文+数字
* english+number+_ 英文+数字+_
* english+number+_- 英文+数字+_-
* lower 小写
* upper 大写
* version 版本号 xx.xx.xx (xx必须是数字)
* html html格式
* image 图片
* video 视频
* audio 音频
* vk.pubfn.test(str, type);
*/
pubfn.test = function(str, type = "") {
......@@ -289,7 +300,7 @@ pubfn.test = function(str, type = "") {
case 'video': //是否视频格式
newStr = str.split("?")[0];
return new RegExp(/\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8|3gp)$/).test(newStr);
case 'audio': //是否频格式
case 'audio': //是否频格式
newStr = str.split("?")[0];
return new RegExp(/\.(mp3)$/).test(newStr);
default:
......
......@@ -232,7 +232,7 @@ util.getOriginalPage = function() {
* vk.navigate.setOriginalPage(originalPage);
*/
util.setOriginalPage = function(originalPage) {
vk.navigate.originalPage = originalPage; // 兼容老版本
uni.vk.navigate.originalPage = originalPage; // 兼容老版本
return uni.vk.setVuex('$app.originalPage', originalPage); // 新版本
};
......
......@@ -6,6 +6,8 @@ import callFunctionUtil from './vk-unicloud-callFunctionUtil.js'
var { callFunction, config, saveToken, deleteToken } = callFunctionUtil;
import debounce from '../function/debounce.js'
const debounceTime = 1000; // 防抖时长
const localeObj = {
"zh-Hans": {
"loading": "请求中...",
......@@ -55,11 +57,13 @@ export default {
* @param {String} uid 用户ID
*/
register(obj = {}) {
addLoading(obj, "register");
return callFunction({
...obj,
url: 'user/pub/register'
});
return debounce(() => {
addLoading(obj, "register");
return callFunction({
...obj,
url: 'user/pub/register'
});
}, debounceTime, true, "login");
},
/**
* 用户登录(用户名+密码)
......@@ -259,11 +263,13 @@ export default {
* @param {String} tokenExpired token过期时间
*/
loginBySms(obj = {}) {
addLoading(obj, "login");
return callFunction({
url: 'user/pub/loginBySms',
...obj
});
return debounce(() => {
addLoading(obj, "login");
return callFunction({
url: 'user/pub/loginBySms',
...obj
});
}, debounceTime, true, "login");
},
/**
* 发送手机号验证码
......@@ -494,7 +500,7 @@ export default {
*/
loginByWeixin(obj = {}) {
let that = this;
debounce(function() {
debounce(() => {
addLoading(obj, "login");
let { data = {} } = obj;
that.getWeixinCode().then((code) => {
......@@ -511,7 +517,7 @@ export default {
}
});
});
}, 500);
}, debounceTime, true, "login");
},
/**
* 获取微信openid
......@@ -612,11 +618,13 @@ export default {
* @param {String} tokenExpired token过期时间
*/
loginByWeixinPhoneNumber(obj = {}) {
addLoading(obj, "login");
return callFunction({
url: 'user/pub/loginByWeixinPhoneNumber',
...obj
});
return debounce(() => {
addLoading(obj, "login");
return callFunction({
url: 'user/pub/loginByWeixinPhoneNumber',
...obj
});
}, debounceTime, true, "login");
},
/**
* 生成微信小程序码
......@@ -698,7 +706,7 @@ export default {
*/
loginByAlipay(obj = {}) {
let that = this;
debounce(function() {
debounce(() => {
addLoading(obj, "login");
let { data = {} } = obj;
that.getAlipayCode().then((code) => {
......@@ -711,7 +719,7 @@ export default {
}
});
});
}, 500);
}, debounceTime, true, "login");
},
/**
* 获取支付宝openid
......@@ -773,6 +781,21 @@ export default {
url: 'user/kh/unbindAlipay',
});
},
/**
* 生成支付宝小程序码
* @param {String} page 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
* @param {String} scene 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
* res 返回参数说明
* @param {Number} code 错误码,0表示成功
* @param {String} msg 详细信息
*/
getAlipayMiniCode(obj = {}) {
addLoading(obj, "create");
return callFunction({
...obj,
url: 'user/kh/getAlipayMiniCode',
});
},
/**
* 密码加密测试(暂不用)
*/
......@@ -965,7 +988,7 @@ export default {
*/
loginByQQ(obj = {}) {
let that = this;
debounce(function() {
debounce(() => {
addLoading(obj, "login");
let { data = {} } = obj;
that.getQQCode().then(({ code, accessToken } = {}) => {
......@@ -979,7 +1002,7 @@ export default {
}
});
});
}, 500);
}, debounceTime, true, "login");
},
/**
* 绑定QQ
......