Commit 41b179d2 authored by wangnf's avatar wangnf

新增任务模块及tbcc-sdk-ts

parent 3373bfd2
No preview for this file type
const app = getApp();
const { tbcc, cloudName, cloud, requestType } = app;
const { tbccTs, cloudName, cloud, requestType } = app;
const { utils: { generateAPI }, request: tbccRequest, capi } = tbcc;
const { utils: { generateAPI }, request: tbccRequest, capi, capiFn } = tbccTs;
const request = tbccRequest({
cloud,
......@@ -15,12 +15,18 @@ const apiList = {
getActivityBaseInfoById: {
handle: 'getActivityBaseInfoById',
method: 'GET',
isShowLoading: true
isShowLoading: false
},
login: 'login'
login: 'login',
getTaskList: 'getTaskList',
doCompleteTask: 'doCompleteTask',
receiveTaskRewards: 'receiveTaskRewards',
addStat: 'addStat',
doHelp: 'doHelp',
};
// 生成API
const API = generateAPI(apiList, request);
API['fn'] = capiFn(apiList, request);
export default API;
import cloud from '@tbmp/mp-cloud-sdk';
import tbcc from './tbcc-sdk';
import tbccTs from './tbcc-sdk-ts';
cloud.init({
env: 'test' // 云函数环境 test 测试环境 online 线上环境
});
App({
requestType: 'yapi', // cloud: 云函数, yapi: yapi 接口, ams: ams接口,tornadoAPI: 风驰台接口
cloudName: 'CommonToC', // 主云函数项目名
requestType: 'cloud', // cloud : 云函数, yapi: yapi 接口, ams: ams接口,tornadoAPI: 风驰台接口
cloudName: 'hlnBox', // 主云函数项目名 CommonToC
tornadoAPI: 'https://tornado.duibadev.com.cn/tbServer/api?db=xxx&proxyIp=xxx', // 新增:当requestType: 'tornadoAPI'时,找服务端提供地址
cloud,
tbcc,
onLaunch(options) {
tbccTs,
async onLaunch(options) {
this.handleQuery(options.query || {});
},
onShow(options) {
async onShow(options) {
// 从后台被 scheme 重新打开
},
/**
......@@ -23,6 +23,7 @@ App({
*/
handleQuery(query) {
const { activityId } = query;
this.activityId = activityId || '5f8550a3964f97be3647a635';
this.isOnlineActivity = true// !!activityId // 性能检测不过可使用此方法(需修改活动开始时间)
this.activityId = activityId || '601b9eef9897b41ad0f26834';
}
});
......@@ -8,6 +8,12 @@
"pages/orderGoods/orderGoods",
"pages/endPage/endPage"
],
"plugins": {
"cemMember": {
"version":"*",
"provider":"3000000026642582"
}
},
"window": {
"allowsBounceVertical": "NO",
"defaultTitle": "C端模板",
......
### 注意!
assets文件夹只做本地开发测试使用
因为淘宝打包有体积限制,最大不超过1M,所以打包提审请同步图片等资源到CDN上,然后删除assets文件夹再打包提审。
\ No newline at end of file
.common-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 20;
}
.common-modal__shade {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.75);
}
.common-modal__container {
position: absolute;
width: 500rpx;
height: 300rpx;
background: #4eafd7;
background-size: 100% 100%;
left: 50%;
top: 50%;
margin-left: -250rpx;
margin-top: -150rpx;
padding: 30rpx;
}
.common-modal__bd {
font-size: 28rpx;
text-align: center;
color: #fff;
padding: 50rpx 0;
}
.common-modal__close {
position: absolute;
right: -20rpx;
top: -80rpx;
height: 86rpx;
width: 86rpx;
background: url('../../assets/modal_close_btn.png') center center no-repeat;
background-size: 48rpx 48rpx;
z-index: 9;
}
.common-modal__confirm-btn {
margin: 0 auto;
text-align: center;
width: 341rpx;
height: 77rpx;
line-height: 77rpx;
background: #FFF;
background-size: 100% 100%;
font-size: 30rpx;
color: #0077a9;
font-weight: bold;
}
<view class="common-modal">
<view class="common-modal__shade modal-animate-fade-in" />
<view class="common-modal__container modal-animate-zoom-in">
<view class="common-modal__close" onTap="onModalClose" />
<view class="common-modal__bd">
<text>{{data.content}}</text>
</view>
<view class="common-modal__ft" a:if="{{data.btnText}}">
<view onTap="onModalConfirm" class="common-modal__confirm-btn">{{data.btnText}}</view>
</view>
</view>
</view>
Component({
methods: {
onModalClose() {
const { onModalClose } = this.props;
onModalClose && onModalClose();
},
onModalConfirm () {
const { onModalConfirm } = this.props;
onModalConfirm && onModalConfirm();
}
}
});
\ No newline at end of file
.dialog-container {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 20;
}
.dialog-modal__shade {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.75);
}
.dialog-modal__container {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.dialog-modal__container-bottom {
animation: bottom-up 1s linear forwards;
}
.dialog-modal__container-center {
transform: scale(0);
animation: modalAnimateZoomIn .3s forwards;
}
.dialog-modal__close {
position: absolute;
right: -20rpx;
top: -80rpx;
height: 48rpx;
width: 48rpx;
background: url('//yun.dui88.com/taobaomini/clientCTest/modal_close_btn.png') center center no-repeat;
background-size: 48rpx 48rpx;
}
@keyframes bottom-up {
from {
transform: translate(0,100vh);
}
to {
transform: translate(0,0);
}
}
@keyframes modalAnimateZoomIn {
to {
transform: scale(1);
}
}
\ No newline at end of file
<view class="dialog-container">
<view class="dialog-modal__shade modal-animate-fade-in" />
<view class="dialog-modal__container {{ 'dialog-modal__container-'+position}} ">
<slot />
</view>
</view>
\ No newline at end of file
......@@ -2,13 +2,7 @@ Component({
mixins: [],
data: {},
props: {
data: {
image: {
bg: '//yun.dui88.com/taobaomini/clientCTest/end_bg@2x.png',
end_icon: '//yun.dui88.com/taobaomini/clientCTest/end_icon@2x.png',
},
text: '活动未开始'
}
position: 'center', // bottom 底部 center 居中
},
didMount() {},
didUpdate() {},
......
.end-modal-container {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
min-height: 100vh;
/* background: url('//yun.dui88.com/taobaomini/clientCTest/end_bg@2x.png') no-repeat; */
background-size: 750rpx 1624rpx;
overflow: hidden;
z-index: 20;
}
.end-modal-container-content {
position: absolute;
width: 750rpx;
height: 480rpx;
top: 50%;
left: 0;
margin-top: -240rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
}
.end-modal-container-content__icon {
width: 478rpx;
height: 340rpx;
}
.end-modal-container-content__icon image {
width: 100%;
height: 100%;
}
.end-modal-container-content__desc {
font-size: 36rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ADADAD;
}
\ No newline at end of file
<view class="end-modal-container" style="{{{'background':`url(${data.image.bg}) no-repeat`}}}">
<view class="end-modal-container-content">
<view class="end-modal-container-content__icon">
<image mode="scaleToFill" src="{{data.image.end_icon}}"/>
</view>
<view class="end-modal-container-content__desc">{{data.text}}</view>
</view>
</view>
\ No newline at end of file
{
"component": true
}
\ No newline at end of file
......@@ -14,7 +14,7 @@
.goods-modal-container__title {
width: 750rpx;
height: 120rpx;
margin: 96rpx 0 11rpx;
margin: 209rpx 0 11rpx;
}
.goods-modal-container__banner {
width: 750rpx;
......
......@@ -4,7 +4,7 @@
class="goods-modal-container__title">
</view>
<view a:else class="goods-modal-container__banner" style="{{{'background':`url(${task.image.banner}) no-repeat`,'backgroundSize': '100% 100%','height':task.bannerHeight+'rpx'}}}"></view>
<view class="goods-modal-container__content" style="{{{'top':task.type == '02'?task.bannerHeight+'rpx':'209rpx'}}}">
<view class="goods-modal-container__content" style="{{{'top':task.type == '02'?task.bannerHeight+'rpx':'280rpx'}}}">
<scroll-view scroll-y="{{true}}" class="goods-modal-container__scroll">
<view class="goods-modal-container__content-list">
<view class="goods-modal-container__content-item" a:for="{{goodsList}}" a:for-item="item">
......
......@@ -2,8 +2,8 @@
* 任务类型(taskType):collectGoods、orderGoods、browseGoods、
*/
const app = getApp();
const { tbcc } = app;
const { openDetail, collectGoods, checkGoodsCollectedStatus, commonToast } = tbcc.tb;
const { tbccTs } = app;
const { openDetail, collectGoods, checkGoodsCollectedStatus, commonToast } = tbccTs.tb;
Component({
mixins: [],
......@@ -11,7 +11,7 @@ Component({
},
props: {
isBackFlag: 0,
goodsList: [1,2,3],
goodsList: [],
task: {
itemId: '617724147979,617724563528,617300295119',
taskType: 'browseGoods',
......
const app = getApp();
const { tbcc } = app;
const { commonToast } = tbcc.tb;
const { tbccTs } = app;
const { commonToast } = tbccTs.tb;
Component({
mixins: [],
......@@ -20,7 +20,6 @@ Component({
closeModal() {
this.props.onCloseModal()
},
//复制运单号
copyCode() {
let { shipNum } = this.props.prizeItem
......
<view class="member-shop-container">
<member-shop-center
expend="{{expend}}"
sellerId="{{sellerId}}"
onClose="onClose"
onAuthFail="onAuthFail"
onAuthSuccess="onAuthSuccess" />
</view>
\ No newline at end of file
import { SELLER_ID } from '../../constants';
Component({
mixins: [],
data: {
sellerId: SELLER_ID
},
props: {
dataName: '',
expend: false,
onSuccess: () => {},
onFail: () => {},
onClose: () => {}
},
didMount() {},
didUpdate() {},
didUnmount() {},
methods: {
onClose() {
const { onClose, dataName } = this.props
onClose && onClose(dataName)
},
onAuthFail() {
const { onFail, dataName } = this.props
onFail && onFail(dataName)
},
onAuthSuccess() {
const { onSuccess, dataName } = this.props
onSuccess && onSuccess(dataName)
}
},
});
{
"component": true,
"usingComponents": {
"member-shop-center": "plugin://cemMember/member-shop-center"
}
}
\ No newline at end of file
.prize-modal__container {
position: absolute;
width: 580rpx;
height: 542rpx;
background-size: 100% 100%;
left: 50%;
top: 50%;
margin-left: calc(-580rpx / 2);
margin-top: calc(-542rpx / 2);
background-color: #eee;
background-image: url("//yun.duiba.com.cn/taobaomini/hlnBox/hln_prize_dialog_bg.png");
padding-bottom: 40rpx;
display: flex;
justify-content: space-between;
align-items: center;
flex-direction: column;
}
.prize-modal__container-has {
height: 742rpx;
margin-top: -371rpx;
}
.prize-modal__title {
text-align: center;
margin-top: 43rpx;
font-size: 48rpx;
color: #fff;
}
.prize-modal__content {
flex: 1;
}
.prize-modal__has-prize, .prize-modal__no-prize {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.prize-modal__img {
width: 250rpx;
height: 250rpx;
}
.prize-modal__name {
font-size: 24rpx;
color: #FFF8F0;
text-align: center;
margin-top: 32rpx;
}
.prize-modal__no-prize {
font-size: 32rpx;
color: #fff;
}
.prize-modal__btn {
width: 343rpx;
height: 62rpx;
background-image: url('//yun.duiba.com.cn/taobaomini/hlnBox/hln_prize_continue_full.png');
background-size: cover;
margin-bottom: 20rpx;
}
.prize-modal__btn-prize {
background-image: url('//yun.duiba.com.cn/taobaomini/hlnBox/hln-prize-continue.png');
background-size: cover
}
.prize-modal__desc {
text-align: center;
color: #fff;
font-size: 20rpx;
margin-top: 20rpx;
}
\ No newline at end of file
<dialog>
<view class="prize-modal__container {{ prize.image ? 'prize-modal__container-has': ''}}">
<view class="dialog-modal__close" onTap="onModalClose" />
<view class="prize-modal__title">
<text>{{prize.image ? '恭喜中奖' : '很遗憾\n未中奖'}}</text>
</view>
<view class="prize-modal__content">
<block a:if="{{prize.image}}">
<view class="prize-modal__has-prize">
<image class="prize-modal__img" src="{{prize.image}}" />
<view class="prize-modal__name">{{prize.name}}</view>
</view>
</block>
<block a:else>
<view class="prize-modal__no-prize">不要气馁 继续加油</view>
</block>
</view>
<view class="prize-modal__btn {{ prize.image ? 'prize-modal__btn-prize': ''}}" onTap="handleConfirm"></view>
<view class="prize-modal__desc" a:if="{{prize.image}}">权益可在【我的奖品】中查看</view>
</view>
</dialog>
<member-shop
a:if="{{memberShopVisible}}"
expend="{{memberShopVisible}}"
onSuccess="onSuccess"
onFail="closeCommonModal"
onClose="closeCommonModal" />
\ No newline at end of file
/**
* receiveType 1 点击领取关闭弹窗跳转我的奖品页面 2 点击领取直接领取奖励 3 领取跳转商品支付页面
*/
import API from '../../api';
import { SELLER_ID } from '../../constants';
const app = getApp();
const { tbccTs } = app;
const { navigateTo, openDetail, commonToast } = tbccTs.tb;
const { throttleHandle, checkMember } = tbccTs.utils;
//mock数据
const configPrize = {
receiveType: 1,// receiveType 1 点击领取关闭弹窗跳转我的奖品页面 2 点击领取直接领取奖励 3 领取跳转商品支付页面
prize: {
image: 'https://img.alicdn.com/imgextra/i3/2374579403/O1CN011TUe7Y2JKcrllQt0c_!!2374579403-0-miniprogram.jpg',
name: '测试奖品',
id: '601bb55d8e6a085deb71bf65',
itemId: 617724147979,
type: 3
}
}
Component({
mixins: [],
data: {
memberShopVisible: false
},
props: {
receiveType: configPrize.receiveType,
prize: {}
},
didMount() {},
didUpdate() {},
didUnmount() {},
methods: {
onModalClose() {
const { onModalClose, dataName } = this.props
onModalClose && onModalClose(dataName)
},
handleConfirm: throttleHandle(async function() {
const { activityId } = app
const { prize: { image, id, type, itemId }, receiveType } = this.props
// 未中奖
if(!image) {
this.onModalClose()
return;
}
// 点击领取关闭弹窗跳转我的奖品页面
if(receiveType === 1) {
this.onModalClose()
navigateTo('/pages/myprize/myprize')
return;
}
// 领取跳转商品支付页面
if(receiveType === 3) {
this.onModalClose()
openDetail(String(itemId))
return;
}
// 点击领取直接领取奖励
if(receiveType === 2) {
const params = { activityId, id }
if(type == 2) {
this.receiveCreditPrize(params)
return;
}
const success = type === 1 ? (await API.fn.receiveEnamePrize(params)) :
type === 3 ? (await API.fn.receiveObjectPrize(params)) : false
if(success) {
commonToast('领取成功')
this.onModalClose()
return;
}
this.onModalClose()
}
},2000),
// 领取积分
async receiveCreditPrize() {
const { activityId } = app
const { prize: { id }, receiveType } = this.props
// const isVip = await API.fn.getVipInfo({ activityId })
const isMember = await checkMember(SELLER_ID)
if(!isMember) {
this.setData({ memberShopVisible: true })
return;
}
const success = await API.fn.receiveEnamePrize({ activityId, id })
if(success) {
commonToast('领取成功')
this.onModalClose()
return;
}
this.onModalClose()
},
// 关闭入会组件
closeCommonModal() {
this.setData({ memberShopVisible: false })
},
// 入会成功
onSuccess() {
this.receiveCreditPrize()
this.setData({ memberShopVisible: false })
}
},
});
{
"component": true,
"usingComponents": {
"dialog": "/components/dialog/dialog",
"member-shop":"/components/memberShop/memberShop"
}
}
\ No newline at end of file
.rule-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 20;
}
.rule-modal__shade {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.75);
}
.rule-modal__container {
position: absolute;
width: 500rpx;
height: 600rpx;
background: #4eafd7;
width: 592rpx;
height: 733rpx;
background: url(//yun.dui88.com/taobaomini/clientCTest/rule_bg.png);
background-size: 100% 100%;
left: 50%;
top: 50%;
margin-left: -250rpx;
margin-top: -300rpx;
margin-left: calc(-592rpx / 2);
margin-top: calc(-733rpx / 2);
}
.rule-modal__title {
text-align: center;
margin: 30rpx;
font-size: 28rpx;
color: #fff;
}
.rule-modal__bd {
position: absolute;
top: 40rpx;
top: 140rpx;
left: 40rpx;
right: 40rpx;
bottom: 40rpx;
......@@ -39,14 +26,3 @@
color: #fff;
line-height: 1.5;
}
.rule-modal__close {
position: absolute;
right: -20rpx;
top: -80rpx;
height: 86rpx;
width: 86rpx;
background: url('../../assets/modal_close_btn.png') center center no-repeat;
background-size: 48rpx 48rpx;
z-index: 9;
}
<view class="rule-modal">
<view class="rule-modal__shade modal-animate-fade-in" />
<view class="rule-modal__container modal-animate-zoom-in">
<view class="rule-modal__close" onTap="onModalClose" />
<dialog>
<view class="rule-modal__container">
<view class="dialog-modal__close" onTap="onModalClose" />
<view class="rule-modal__bd">
<slot />
</view>
</view>
</view>
</dialog>
Component({
methods: {
onModalClose() {
const { onModalClose } = this.props;
onModalClose && onModalClose();
const { onModalClose, dataName } = this.props;
onModalClose && onModalClose(dataName);
}
}
});
\ No newline at end of file
{
"component": true
}
"component": true,
"usingComponents": {
"dialog": "/components/dialog/dialog"
}
}
\ No newline at end of file
.task-modal-container {
width: 100%;
height: 700rpx;
position: absolute;
bottom: 0;
left: 0;
background-color: #ffffff;
}
.task-modal__close {
right: 20rpx;
}
.task-modal-content__title {
text-align: center;
margin: 30rpx 0;
}
.task-modal-content__list {
width: 100%;
height: 600rpx;
padding: 0 16rpx;
}
.task-modal-content__scroll {
width: 100%;
height: 100%;
}
.task-modal-content-item {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16rpx;
padding: 16rpx;
border: 1rpx solid #eee;
}
.task-modal-content-item__left {
width: 120rpx;
height: 120rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: #eee;
}
.task-modal-content-item__left image {
width: 80rpx;
}
.task-modal-content-item__left-label {
flex: 1;
flex-direction: column;
align-items: center;
margin: 0 16rpx;
}
.task-modal-content-item__left-title {
}
.task-modal-content-item__left-reward {
margin-top: 10rpx;
}
.task-modal-content__list-item__right {
display: flex;
justify-content: center;
align-items: center;
width: 150rpx;
height: 60rpx;
background-color: #eee;
border-radius: 30rpx;
}
.task-item__status-1 {
}
.task-item__status-2 {
}
.task-item__status-3 {
}
\ No newline at end of file
<dialog position="bottom">
<view class="task-modal-container">
<view class="dialog-modal__close task-modal__close" onTap="onModalClose" />
<view class="task-modal-content">
<view class="task-modal-content__title">任务模块</view>
<view class="task-modal-content__list">
<scroll-view scroll-y="{{true}}" class="task-modal-content__scroll">
<view class="task-modal-content-item" a:for="{{taskList}}">
<view class="task-modal-content-item__left">
<image src="{{taskIcon[item.taskType]}}" mode="widthFix" />
</view>
<view class="task-modal-content-item__left-label">
<view class="task-modal-content-item__left-title">{{item.title}}</view>
<view class="task-modal-content-item__left-reward">抽盒次数+{{item.rewards}}</view>
</view>
<view class="task-modal-content__list-item__right {{'task-item__status-'+item.status}}" data-item="{{item}}" onTap="handleTapItem">
{{
item.status == 1 ? doTaskTxt[item.taskType] : commonTaskTxt[taskType]
}}
</view>
</view>
</scroll-view>
</view>
</view>
</view>
</dialog>
<member-shop
a:if="{{memberShopVisible}}"
expend="{{memberShopVisible}}"
onSuccess="onSuccess"
onFail="closeCommonModal"
onClose="closeCommonModal" />
\ No newline at end of file
import API from '../../api';
import { SELLER_ID, STAT_TYPE } from '../../constants';
const app = getApp();
const { tbccTs } = app;
const { throttleHandle } = tbccTs.utils;
const { commonToast, favorShop, navigateTo, navigateToOutside, showSharePanel } = tbccTs.tb;
const taskConfig = {
taskStatus: { // 任务状态
1: '//yun.duiba.com.cn/baicaoweiFarmer/task_btn_01.png',
2: '//yun.duiba.com.cn/baicaoweiFarmer/task_btn_02.png',
3: '//yun.duiba.com.cn/baicaoweiFarmer/task_btn_03.png'
},
taskIcon: {// 任务图标
follow: '//yun.duiba.com.cn/baicaoweiFarmer/follow.png',
member: '//yun.duiba.com.cn/baicaoweiFarmer/memberStar1.png',
invites: '//yun.duiba.com.cn/baicaoweiFarmer/invites.png',
jumpLink: '//yun.duiba.com.cn/baicaoweiFarmer/browseGoodsLink.png',
browseGoods: '//yun.duiba.com.cn/baicaoweiFarmer/browseGoods.png',
orderGoods: '//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png',
collectGoods: '//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png',
sign: '//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png',
},
commonTaskTxt: {
1: '去完成',
2: '待领取',
3: '已完成'
},
doTaskTxt: {
follow: '立即关注',
invites: '去邀请',
member: '1秒入会',
sign: '立即签到',
jumpLink: '去完成',
browseGoods: '去完成',
orderGoods: '去完成',
collectGoods: '去完成',
},
browseType: 1, // 1 跳转即算完成 2 跳转浏览15s 才算完成
browseTime: 15, // 浏览时间
}
Component({
mixins: [],
data: {
taskStatus: taskConfig.taskStatus,
taskIcon: taskConfig.taskIcon,
commonTaskTxt: taskConfig.commonTaskTxt,
doTaskTxt: taskConfig.doTaskTxt,
taskList: [
{
taskType: 'follow',
title: '关注店铺',
taskRateType: 1,
times: 1,
completeTimes: 0,
status: 1,
rewards: 1
},
{
taskType: 'member',
title: '加入会员',
taskRateType: 1,
times: 1,
completeTimes: 0,
status: 1,
rewards: 1
},
{
taskType: 'invites',
title: '邀请好友入会',
taskRateType: 1,
times: 3,
completeTimes: 0,
status: 1,
rewards: 1
},
{
taskType: 'jumpLink',
title: '浏览店铺15s',
taskRateType: 2,
times: 1,
completeTimes: 0,
status: 1,
rewards: 1
},
{
taskType: 'browseGoods',
title: '浏览商品',
taskRateType: 2,
times: 1,
completeTimes: 0,
status: 1,
rewards: 1
},
{
taskType: 'orderGoods',
title: '下单任务',
taskRateType: 2,
times: 1,
completeTimes: 0,
status: 1,
rewards: 1
},
{
taskType: 'collectGoods',
title: '收藏商品',
taskRateType: 2,
times: 1,
todayCompleteTimes: 0,
status: 1,
rewards: 1
},
{
taskType: 'sign',
title: '每日签到',
taskRateType: 2,
times: 1,
todayCompleteTimes: 0,
status: 1,
rewards: 1
}
],
memberShopVisible: false,
currentTaskType: null,
preBrowseTime: null
},
props: {
taskFlag: 1,
dataName: '',
onModalClose: () => {},
onUpdate: () => {}
},
didMount() {
this.getTaskList()
},
didUpdate(preProps,preData) {
const { taskFlag } = this.props
const { isFlashTask = false } = app
const { browseTime } = taskConfig
const { preBrowseTime, currentTaskType } = this.data
if(preProps.taskFlag !== taskFlag && isFlashTask) {
// console.log((Date.now() - preBrowseTime)/1000)
if(preBrowseTime && ((Date.now() - preBrowseTime) / 1000) >= browseTime) {
this.doCompleteTask(currentTaskType,true)
}
else {
this.getTaskList(true)
}
}
},
didUnmount() {
},
methods: {
// 关闭弹窗
onModalClose() {
const { onModalClose, dataName } = this.props;
onModalClose && onModalClose(dataName);
},
// 按钮
handleTapItem: throttleHandle(async function(e) {
const { activityId } = app
const { status, taskType, url, rewards, itemIds, keepTime } = e.target.dataset.item
if(status == 3) return;
if(status == 2) {
const { success, data } = await API.receiveTaskRewards({ activityId, taskType }).catch(res => {
commonToast(res && res.message);
}) || {};
if (success && data) {
const { rewards, receiveTimes } = data
let message = taskType == 'invites' ?
`成功邀请${receiveTimes}名好友,抽盒次数+${rewards}`:`抽盒次数+${rewards}`
commonToast(message)
this.getTaskList()
this.props.onUpdate()
}
}
else {
this.goToComplete(taskType,url,itemIds,keepTime)
}
},2000),
// 做任务
async goToComplete(taskType,url,itemIds,keepTime) {
const { activityId } = app
const { browseType } = taskConfig
switch(taskType) {
case 'member':
// 去加入会员
this.setData({ memberShopVisible: true })
break;
case 'follow':
let isFollow = await favorShop(SELLER_ID)
if(isFollow) {
this.doCompleteTask(taskType)
}
break;
case 'invites':
// 邀请好友
showSharePanel();
await API.fn.addStat(activityId, STAT_TYPE.GO_TO_INVITE)
break;
case 'jumpLink':
// 跳转任务
navigateToOutside(url || 'https://www.feizhu.com')
if(browseType === 1) {
this.doCompleteTask(taskType)
}
else {
app.isFlashTask = true
this.setData({ preBrowseTime: Date.now(), currentTaskType: taskType})
}
break;
case 'browseGoods':
// 跳转浏览页面
app.isFlashTask = true
navigateTo(`/pages/browseGoods/browseGoods?itemIds=${itemIds}&keepTime=${keepTime}`)
break;
case 'orderGoods':
// 跳转下单页面
app.isFlashTask = true
navigateTo(`/pages/orderGoods/orderGoods?itemIds=${itemIds}`)
break;
case 'collectGoods':
// 跳转收藏页面
app.isFlashTask = true
navigateTo(`/pages/collectGoods/collectGoods?itemIds=${itemIds}`)
break;
case 'sign':
// 签到
this.doCompleteTask(taskType)
break;
}
},
// 完成任务
async doCompleteTask(taskType, flag) {
const { activityId } = app
let { success, data } = await API.doCompleteTask({ activityId, taskType }) || {}
if(success) {
this.getTaskList()
flag && this.setData({ preBrowseTime: null })
}
},
// 获取任务列表
async getTaskList(flag) {
const { activityId } = app
const { success, data } = await API.getTaskList({ activityId }).catch(res => {
commonToast(res && res.message);
}) || {};
if (success && data) {
const { list } = data
app.isFlashTask = flag ? false : true
// this.setData({ taskList: list })
}
},
// 关闭入会组件
closeCommonModal() {
this.setData({ memberShopVisible: false })
},
// 入会成功
onSuccess() {
this.getTaskList()
this.setData({ memberShopVisible: false })
}
},
});
{
"component": true,
"usingComponents": {
"dialog": "/components/dialog/dialog",
"member-shop":"/components/memberShop/memberShop"
}
}
\ No newline at end of file
const { tbcc } = getApp();
const { constants: tbccConstants } = tbcc;
const { tbccTs } = getApp();
const { constants: tbccConstants } = tbccTs;
// 分享配置
export const SHARE_CONFIG = {
title: '分享测试标题',
title: '哈哈哈哈哈哈',
desc: '分享测试描述',
imageUrl: '', // 分享图片URL
path: 'pages/index/index'
......@@ -18,5 +18,14 @@ export const REDIRECT_URL = {
export const DRAW_STATUS = tbccConstants.DRAW_STATUS;
export const PRIZE_TYPE = tbccConstants.PRIZE_TYPE;
// 数据埋点
export const STAT_TYPE = {
GO_TO_INVITE: 2, // 点击邀请按钮的uv
}
export const SHARE_IMG_FILE_ID = 'cloud://09C241349017A4A1F67E4FE7AF2B3520//share_new_02.png' // 分享图片fileId
export const SELLER_ID = 2374579403 // 商家sellerId
......@@ -16,8 +16,8 @@
*/
import API from '../../api';
const app = getApp();
const { tbcc } = app;
const { commonToast } = tbcc.tb;
const { tbccTs } = app;
const { commonToast } = tbccTs.tb;
const completeType = 1 // 1 浏览完成 2 点击任意商品完成
const completeTime = 10 // 浏览时间(s)
const taskConfig = {
......@@ -35,6 +35,7 @@ const taskConfig = {
}
Page({
timer: null,
isJumpLink: false,
data: {
completeType: completeType,
usePercent: 0, // 已进行的进度条
......@@ -50,7 +51,7 @@ Page({
},
onShow() {
//重新回到页面开启倒计时
if(!this.timer && completeType == 1) {
if(!this.timer && completeType == 1 && this.isJumpLink) {
this.setData({ usePercent: this.data.percent })
this.browseGoodsTimes()
}
......@@ -58,6 +59,7 @@ Page({
onHide() {
// 页面隐藏
if (this.timer) {
this.isJumpLink = true
clearInterval(this.timer)
}
},
......@@ -72,20 +74,24 @@ Page({
const { itemIds } = this.query
const { success, data } = await API.getItemListByItemIds({ activityId, itemIds }).catch(res => {
res && commonToast(res)
res && commonToast(res.message)
}) || {}
if(success) {
this.setData({ goodsList: data.list || [] })
const { list = [] } = data
this.setData({ goodsList: list })
// 开启浏览倒计时
list.length > 0 && this.browseGoodsTimes()
}
},
//任务完成
async onCompleteTask(itemId) {
const { activityId } = app
let browsResult = await API.doBrowseGoodsTask({ activityId, itemId }).catch(res => {
res && commonToast(res)
res && commonToast(res.message)
}) || {}
if(browsResult.success) {
commonToast('浏览成功')
this.isJumpLink = false
}
},
/**
......@@ -97,6 +103,7 @@ Page({
percent: this.data.usePercent,
}, () => {
clearInterval(this.timer)
this.isJumpLink = true
})
}
else {
......@@ -111,7 +118,8 @@ Page({
this.setData({
usePercent: this.data.usePercent + 1
}, () => {
if (this.data.usePercent >= completeTime) {
const keepTime = this.query.keepTime || completeTime
if (this.data.usePercent >= keepTime) {
this.onCompleteTask()
clearInterval(this.timer)
}
......
......@@ -16,8 +16,8 @@
*/
import API from '../../api';
const app = getApp();
const { tbcc } = app;
const { commonToast } = tbcc.tb;
const { tbccTs } = app;
const { commonToast } = tbccTs.tb;
const taskConfig = {
taskType: 'collectGoods',
type: '01',
......@@ -61,7 +61,7 @@ Page({
const { activityId } = app
let { success, data } = await API.doCollectGoodsTask({ activityId, itemId }).catch(res => {
res && commonToast(res)
res && commonToast(res.message)
}) || {}
if(success) {
commonToast('收藏成功')
......
.end-modal-container {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
min-height: 100vh;
/* background: url('//yun.dui88.com/taobaomini/clientCTest/end_bg@2x.png') no-repeat; */
background-size: 750rpx 1624rpx;
overflow: hidden;
}
.end-modal-container-content {
position: absolute;
width: 750rpx;
height: 480rpx;
top: 50%;
left: 0;
margin-top: -240rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
}
.end-modal-container-content__icon {
width: 478rpx;
height: 340rpx;
}
.end-modal-container-content__icon image {
width: 100%;
height: 100%;
}
.end-modal-container-content__desc {
font-size: 36rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ADADAD;
}
\ No newline at end of file
<view class="end-page-container">
<end-modal data="{{endData}}" />
<view class="end-modal-container" style="{{{'background':`url(${image.bg}) no-repeat`}}}">
<view class="end-modal-container-content">
<view class="end-modal-container-content__icon">
<image mode="scaleToFill" src="{{image.end_icon}}"/>
</view>
<view class="end-modal-container-content__desc">{{text}}</view>
</view>
</view>
\ No newline at end of file
Page({
data: {
endData: {
image: {
bg: '//yun.dui88.com/taobaomini/clientCTest/end_bg@2x.png',
end_icon: '//yun.dui88.com/taobaomini/clientCTest/end_icon@2x.png',
},
text: '活动未开始'
image: {
bg: '//yun.dui88.com/taobaomini/clientCTest/end_bg@2x.png',
end_icon: '//yun.dui88.com/taobaomini/clientCTest/end_icon@2x.png',
},
text: '活动未开始'
},
onLoad(query) {
if(query.activityStatus == 2) { // activityStatus: 1 未开始 2 已结束
this.setData({ text: '活动已结束' })
}
},
onLoad() {},
});
{
"usingComponents": {
"end-modal": "/components/endModal/endModal"
}
}
\ No newline at end of file
.index-page {
min-height: 100vh;
padding-top: 200rpx;
}
.index-rule-btn, .index-myprize-btn {
......@@ -26,24 +27,6 @@
border-radius: 48rpx 0 0 48rpx;
}
.index-page__title {
font-size: 50rpx;
text-align: center;
padding: 100rpx 0 50rpx 0;
}
.index-page__content {
text-align: center;
font-size: 30rpx;
}
.index-page__tips {
padding-top: 40rpx;
text-align: center;
font-size: 22rpx;
}
.index-start-btn {
background: #0077a9;
color: #FFF;
......@@ -52,7 +35,7 @@
line-height: 80rpx;
text-align: center;
border-radius: 10rpx;
margin: 100rpx auto 50rpx auto;
margin: 0 auto 50rpx;
font-size: 30rpx;
}
......
<view class="index-page">
<view class="index-rule-btn" onTap="showRuleModal">活动规则</view>
<view class="index-rule-btn" data-dataName="ruleModalVisible" onTap="openModalHandle">活动规则</view>
<navigator open-type="navigate" url="/pages/myprize/myprize" class="index-myprize-btn">我的奖品</navigator>
<view class="index-page__title">{{title}}</view>
<view class="index-page__content">{{content}}</view>
<view class="index-page__tips">mock接口只支持PC端预览,手机淘宝预览需要使用云函数模式</view>
<view class="index-start-btn" onTap="doStart">开始</view>
<view class="index-start-btn" data-dataName="taskModalVisible" onTap="openModalHandle">任务模块</view>
<navigator open-type="navigate" url="/pages/tbccDemo/tbccDemo" class="index-tbcc-btn">tbcc demo</navigator>
<navigator style="{{{'marginTop':'16rpx'}}}" open-type="navigate" url="/pages/goodsPage/goodsPage?itemId=617724147979,617724563528" class="index-tbcc-btn">商品集合页面</navigator>
<navigator style="{{{'marginTop':'16rpx'}}}" open-type="navigate" url="/pages/browseGoods/browseGoods?itemIds=617724147979,617724563528" class="index-tbcc-btn">商品集合页面</navigator>
</view>
<!-- 规则弹窗 -->
<rule-modal
a:if="{{ruleModalVisible}}"
dataName="ruleModalVisible"
onModalClose="closeModalHandle">
<text>{{rule}}</text>
</rule-modal>
<rule-modal a:if="{{ruleModalVisible}}" onModalClose="closeRuleModal"><text>{{rule}}</text></rule-modal>
<!-- 任务弹窗 -->
<task-modal
a:if="{{taskModalVisible}}"
dataName="taskModalVisible"
onUpdate="getGameInfo"
taskFlag="{{taskFlag}}"
onModalClose="closeModalHandle" />
<common-modal a:if="{{commonModalVisible}}" data="{{commonModalData}}" onModalClose="closeCommonModal" onModalConfirm="confirmCommonModal" />
\ No newline at end of file
<!-- 中奖弹窗 -->
<prize-modal
a:if="{{prizeModalVisible}}"
dataName="prizeModalVisible"
onModalClose="closeModalHandle" />
<!-- 入会插件 -->
<member-shop
a:if="{{memberShopVisible}}"
expend="{{memberShopVisible}}"
onSuccess="onSuccess"
onFail="closeCommonModal"
onClose="closeCommonModal" />
\ No newline at end of file
import { SHARE_CONFIG, REDIRECT_URL } from '../../constants';
import { SHARE_CONFIG, REDIRECT_URL, SHARE_IMG_FILE_ID, SELLER_ID } from '../../constants';
import API from '../../api';
const app = getApp();
const { tbcc } = app;
const { commonToast, getAuthUserInfo, navigateToOutside } = tbcc.tb;
const { tbccTs } = app;
const { commonToast, getAuthUserInfo, navigateToOutside, checkShopFavoredStatus, navigateTo } = tbccTs.tb;
const { getImgShareUrl, checkMember, validateActivityStatus } = tbccTs.utils
Page({
shareImgUrl: null,
openId: null,
isDoHelpFlag: false,
data: {
title: '',
content: '',
startTime: '',
endTime: '',
rule: '',
commonModalData: {
content: '',
btnText: ''
},
commonModalConfirm: null,
commonModalVisible: false,
ruleModalVisible: false
ruleModalVisible: false,// 规则弹窗
taskModalVisible: false,// 任务弹窗
memberShopVisible: false,// 入会弹窗
prizeModalVisible: false,// 奖品弹窗
taskFlag: 1
},
onLoad(query) {
// 页面加载
this.getAuth();
app.inviteId = query.inviteId
console.info(`Page onLoad with query: ${JSON.stringify(query)}`);
},
init() {
this.getActivityBaseInfoById();
this.getImgShareUrl()
},
onReady() {
// 页面加载完成
},
onShow() {
// 页面显示
if(app.isFlashTask) { // 任务数据更新
this.setData({ taskFlag: Math.floor(Math.random() * 1000)})
}
},
onHide() {
// 页面隐藏
......@@ -66,94 +73,120 @@ Page({
* 获取主接口
*/
async getActivityBaseInfoById() {
const { isOnlineActivity } = app
const { success, data } = await API.getActivityBaseInfoById().catch(res => {
commonToast(res && res.message);
}) || {};
if (success && data) {
const { title, content, rule } = data;
this.setData({ title, content, rule });
const { startTime, endTime, rule } = data;
this.setData({ startTime, endTime, rule });
// 性能检测使用
if(Date.now() < startTime && !isOnlineActivity) {
navigateTo(`/pages/endPage/endPage`)
}
}
},
/**
* 登录接口
*/
async login() {
const { nickName, avatar } = app;
const { success } = await API.login({
userNick: nickName, avatar, isFollow: true,entry:1
const { nickName, avatar, inviteId = undefined } = app;
const isFollow = await checkShopFavoredStatus(SELLER_ID).catch(err => {
console.log('查询关注店铺状态失败', err);
})
const { success, data } = await API.login({
userNick: nickName, avatar, isFollow: !!isFollow, inviteId
}).catch(res => {
commonToast(res && res.message);
}) || {};
console.warn(success,data)
if (success) {
const { openId } = data || {}
this.openId = openId
this.init();
}
},
/**
* 显示规则弹层
* 跳转到天猫页面
*/
showRuleModal() {
this.setData({
ruleModalVisible: true
});
goTmallPage() {
navigateToOutside(REDIRECT_URL['tmall']);
},
/**
* 通用弹出确认按钮回调
*/
confirmCommonModal() {
const { commonModalConfirm } = this.data;
commonModalConfirm && commonModalConfirm();
// 打开弹窗
async openModalHandle(e) {
const { startTime, endTime } = this.data
const key = typeof e === 'string' ? e : e.target.dataset.dataName
if(key !== 'ruleModalVisible') {
const canPass = await validateActivityStatus(startTime, endTime, true)
if(!canPass) return;
}
// 可根据key值处理相应逻辑
switch(key) {
default:
this.setData({ [key]: true })
break;
}
},
/**
* 执行开始
*/
doStart() {
this.showCommonModal({
content: '活动还未开始\n请稍后',
btnText: '我知道了',
commonModalVisible: true,
confirmCallback: () => {
this.closeCommonModal();
}
});
// 关闭弹窗
closeModalHandle(key) {
// 可根据key值处理相应逻辑
switch(key) {
default:
this.setData({ [key]: false })
break;
}
},
/**
* 显示通用弹层
* @param {object} options content: 通用弹层内容 btnText:按钮文案 confirmCallback: 按钮确认回调
*/
showCommonModal({ content, btnText, confirmCallback }) {
this.setData({
commonModalConfirm: confirmCallback || null,
commonModalVisible: true,
commonModalData: { content, btnText }
});
onShareAppMessage(from) {
// 返回自定义分享信息
return {
...SHARE_CONFIG,
imageUrl: this.shareImgUrl,
path: `/pages/index/index?inviteId=${this.openId}`
}
},
/**
* 跳转到天猫页面
*/
goTmallPage() {
navigateToOutside(REDIRECT_URL['tmall']);
// 任务模块-助力(逻辑:仅活动内入会才可助力成功),其他自行替换
async doHelpHandle() {
const { activityId, inviteId } = app
this.setData({ helpModalVisible: false })
// 判断是否邀请链接进来
if(!inviteId) return;
// 助力拦截 若已经助力不在调用
if(this.isDoHelpFlag) return;
// 判断是否是会员
// const isVip = await API.fn.getVipInfo({ activityId })
const isMember = await checkMember(SELLER_ID)
if(isMember) {
commonToast('只有新会员才可助力成功哦')
return;
}
this.setData({ memberShopVisible: true })
},
/**
* 关闭通用弹层
*/
async doHelp() {
const { activityId, inviteId } = app
let { success, data } = await API.doHelp({ activityId, inviteId }).catch(res => {
commonToast(res.message)
}) || {}
if(success) {
commonToast('助力成功')
this.isDoHelpFlag = true
}
},
// 关闭入会组件
closeCommonModal() {
this.setData({
commonModalVisible: false
});
this.setData({ memberShopVisible: false })
},
/**
* 关闭活动规则弹层
*/
closeRuleModal() {
this.setData({
ruleModalVisible: false
});
// 入会成功
onSuccess() {
this.setData({ memberShopVisible: false })
this.doHelp()
},
onShareAppMessage(res) {
console.log(res)
// 返回自定义分享信息
return SHARE_CONFIG;
// 获取分享图地址
async getImgShareUrl() {
this.shareImgUrl = await getImgShareUrl(SHARE_IMG_FILE_ID)
},
});
{
"usingComponents": {
"rule-modal": "/components/ruleModal/ruleModal",
"common-modal": "/components/commonModal/commonModal"
"task-modal":"/components/taskModal/taskModal",
"member-shop":"/components/memberShop/memberShop",
"prize-modal":"/components/prizeModal/prizeModal"
}
}
\ No newline at end of file
.my-prize-container {
width: 100vw;
height: 100vh;
opacity: 1;
position: absolute;
top: 0;
left: 0;
overflow: hidden;
/* background: url('') no-repeat center top/cover; */
box-sizing: border-box;
}
.my-prize-container .my-prize-label {
width: 208rpx;
height: 36rpx;
margin: 140rpx auto 40rpx;
margin: 209rpx auto 40rpx;
background: url('//yun.dui88.com/duiba-components-c-myprizeprize_title.png') no-repeat;
background-size: 100% 100%;
background-size: contain;
}
.my-prize-content {
......
<view class="my-prize-container" style="{{{'background':`url(${prizeConfig.bg}) no-repeat center top/cover`}}}">
<view class="my-prize-label" style="{{{'background':`url(${prizeConfig.title}) no-repeat`,'backgroundSize':'100% 100%'}}}"></view>
<view class="my-prize-label" style="{{{'background':`url(${prizeConfig.title}) no-repeat`,'backgroundSize':'contain'}}}"></view>
<view class="my-prize-content" style="{{ {'top': prizeConfig.contentTop }}}">
<scroll-view scroll-y="{{true}}" class="my-prize-content__scroll">
......@@ -36,9 +36,17 @@
</scroll-view>
</view>
</view>
<!-- 物流单号 -->
<logistics-modal
a:if="{{isLogisticModal}}"
prizeItem="{{currentPrize}}"
onCloseModal="closeLogisticModal"
task="{{logisticsImage}}" />
\ No newline at end of file
task="{{logisticsImage}}" />
<!-- 入会差插件 -->
<member-shop
a:if="{{memberShopVisible}}"
expend="{{memberShopVisible}}"
onSuccess="onSuccess"
onFail="closeCommonModal"
onClose="closeCommonModal" />
\ No newline at end of file
'use strict';
import API from "/api";
import { SELLER_ID } from '../../constants';
const app = getApp();
const { tbcc } = app;
const { commonToast, navigateToOutside, getUserAddress, setClipboard } = tbcc.tb;
const { dateFormatter, throttleHandle } = tbcc.utils;
const { PRIZE_TYPE, DRAW_STATUS } = tbcc.constants;
const { tbccTs } = app;
const { commonToast, navigateToOutside, getUserAddress, setClipboard } = tbccTs.tb;
const { dateFormatter, throttleHandle, checkMember } = tbccTs.utils;
const { PRIZE_TYPE, DRAW_STATUS } = tbccTs.constants;
// 我的奖品配置项
const prizeConfig = {
bg: '//yun.duiba.com.cn/aurora/assets/e13fab3165d3a6bb4cbe8827e8f0fd41084b0091.png', //背景图
......@@ -29,13 +30,14 @@ const prizeConfig = {
shipped: '//yun.dui88.com/duiba-components-c-myprizeprize_shipped.png', // 已发货物理弹窗
notShipped: '//yun.dui88.com/duiba-components-c-myprizenotshipped.png', // 待发货物流弹窗
},
btnStyle: {
btnStyle: {// 按钮宽度
width: '150rpx'
},
contentTop: '210rpx',
contentTop: '260rpx',// 列表距离头部高度
blankTxt: '暂无奖品',
hasLogistic: true, // 是否展示物流信息
isShowPirzeId: true // 是否显示奖品编号
isShowPirzeId: true, // 是否显示奖品编号
memberShopVisible: false, // 入会插件
}
Page({
data: {
......@@ -112,69 +114,19 @@ Page({
if(!(drawStatus == 6 || drawStatus == 1)) {
return;
}
// 领取权益
const prizeId = id || _id
if (type === PRIZE_TYPE.ENAME) return this.handleGetEquity(prizeId)
// 领取实物
if (type === PRIZE_TYPE.OBJECT) return this.handleGetEntity(prizeId)
if (type === PRIZE_TYPE.ENAME || type === PRIZE_TYPE.OBJECT) return this.handleGetPrize(type,prizeId)
// 领取积分
if (type === PRIZE_TYPE.CREDITS) return this.handleGetIntergation(prizeId)
},2000),
// 优惠券
async handleGetEquity(id) {
// 优惠券 实物
async handleGetPrize(type,id) {
const { activityId } = app;
const { success, data, message } = await API.receiveEnamePrize({ activityId, id }).catch(res => {
this.getMyPrize()
commonToast(res && res.message)
}) || {};
if (success && data) {
commonToast('领取成功')
this.getMyPrize()
}
},
// 领取实物前询问
async handleGetEntity(id) {
const { activityId } = app;
const userAddress = await getUserAddress().catch(err => {
commonToast(err && err.errorMessage);
});
if (!userAddress) return
const { name, telNumber, provinceName, cityName, cityCode, countyName, detailInfo, streetName } = userAddress || {};
const params = {
activityId,
name,
phone: telNumber,
addressDetail: detailInfo,
cityCode,
city: cityName,
province: provinceName,
area: countyName,
streetName,
id
}
my.confirm({
title: '提示',
content: '确认使用该收货地址:' + name + telNumber + userAddress.duibaAddress.address,
confirmButtonText: '确定',
cancelButtonText: '取消',
success: (result) => {
console.log(result)
const { confirm } = result;
const success = type === PRIZE_TYPE.ENAME ? (await API.fn.receiveEnamePrize({ activityId, id })) :
type === PRIZE_TYPE.OBJECT ? (await API.fn.receiveObjectPrize({ activityId, id })) : false
if (confirm) {
this.receiveObjectPrize(params);
}
},
});
},
// 领取实物
async receiveObjectPrize(params) {
const { success, data } = await API.receiveObjectPrize(params).catch(res => {
commonToast(res && res.message)
}) || {}
if (success && data) {
if (success) {
commonToast('领取成功')
}
this.getMyPrize()
......@@ -182,32 +134,22 @@ Page({
// 积分
async handleGetIntergation(id) {
// 判断是否为会员
const { isVip, url } = await this.getUserInfo() || {}
if (!isVip) {
commonToast('需加入会员才能领取成功哦', 2000,() => { navigateToOutside(url) });
// const isVip = await API.fn.getVipInfo({ activityId })
const isMember = await checkMember(SELLER_ID)
if (!isMember) {
// commonToast('需加入会员才能领取成功哦', 2000,() => { navigateToOutside(url) });
commonToast('需加入会员才能领取成功哦', 2000,() => { this.setData({ memberShopVisible: true }) });
return;
}
const { activityId } = app;
const { success, data } = await API.receiveEnamePrize({ activityId, id }).catch(res => {
commonToast(res && res.message)
}) || {};
if (success && data) {
const success = await API.fn.receiveEnamePrize({ activityId, id })
if (success) {
commonToast('领取成功')
}
this.getMyPrize()
},
//获取用户vip信息
async getUserInfo() {
const { activityId } = app;
const { success, data } = await API.getVipInfo({ activityId }).catch(res => {
commonToast(res && res.message)
}) || {};
if (success && data) {
return data
}
},
// 复制编码
async handleCopyId(e) {
const { text } = e.target.dataset || {}
......@@ -220,4 +162,13 @@ Page({
closeLogisticModal() {
this.setData({ isLogisticModal: false })
},
// 关闭入会组件
closeCommonModal() {
this.setData({ memberShopVisible: false })
},
// 入会成功
onSuccess() {
this.setData({ memberShopVisible: false })
}
});
\ No newline at end of file
{
"usingComponents": {
"logistics-modal": "/components/logisticsModal/logisticsModal"
"logistics-modal": "/components/logisticsModal/logisticsModal",
"member-shop":"/components/memberShop/memberShop"
}
}
\ No newline at end of file
......@@ -16,8 +16,8 @@
*/
import API from '../../api';
const app = getApp();
const { tbcc } = app;
const { commonToast } = tbcc.tb;
const { tbccTs } = app;
const { commonToast } = tbccTs.tb;
const taskConfig = {
taskType: 'orderGoods',
type: '01',
......@@ -49,7 +49,7 @@ Page({
const { itemIds } = this.query
const { success, data } = await API.getItemListByItemIds({ activityId, itemIds }).catch(res => {
res && commonToast(res)
res && commonToast(res.message)
}) || {}
if(success) {
this.setData({ goodsList: data.list || [] })
......
......@@ -47,5 +47,17 @@
<button onTap="receiveObjectPrize">领取实物奖励</button>
<button onTap="receiveEnamePrize">领取权益奖励</button>
<button onTap="setClipboard">复制到剪切板</button>
<button onTap="setStorage">设置缓存数据</button>
<button onTap="getStorage">获取缓存数据</button>
<button onTap="showSkuModal">显示指定商品 SKU 选择器</button>
<button onTap="confirmCustomOrder">跳转订单页</button>
<button onTap="openMessage">打开BC客服聊天</button>
</view>
import API from '../../api';
const app = getApp();
const { tbcc } = app;
const { tbccTs } = app;
const {
commonToast,
simpleAlert,
......@@ -19,10 +19,19 @@ const {
redirectTo,
uploadImage,
chattingSendCard,
textRiskIdentification
} = tbcc.tb;
textRiskIdentification,
setClipboard,
getStorage,
setStorage,
navigateToTaobaoPage,
taobaoReportClick, // 自定义分析数据的上报接口
openMessage,// 打开BC客服聊天
showSkuModal, // 显示指定商品 SKU 选择器
hideSkuModal,// 隐藏正在展示的商品 SKU 选择器
confirmCustomOrder,// 跳转订单页
} = tbccTs.tb;
const { dateFormatter, versionCompare } = tbcc.utils;
const { dateFormatter, versionCompare } = tbccTs.utils;
Page({
data: {
......@@ -243,5 +252,47 @@ Page({
if (success) {
commonToast('领取成功');
}
}
},
/**
* 复制到剪切板
*/
async setClipboard() {
await setClipboard('text')
commonToast('复制成功')
},
/**
* 获取缓存数据
*/
async getStorage() {
let text = await getStorage('test')
console.log(text)
commonToast(text)
},
/**
* 设置缓存数据
*/
async setStorage() {
await setStorage('test','test storage')
},
/**
* 跳转店铺首页 shopId
*/
async navigateToTaobaoPage() {
await navigateToTaobaoPage()
},
async showSkuModal() {
let result = await showSkuModal(String(615356100592))
console.log(result)
},
async confirmCustomOrder() {
console.log(confirmCustomOrder)
await confirmCustomOrder(615356100592, 4337070448206)
},
async openMessage() {
await openMessage()
},
});
const fns = require('./lib/index')
module.exports = fns.default
export declare const DRAW_STATUS: {
WAITAWARD: number;
PROCESSING: number;
SUCCESS: number;
FAIL: number;
EXPIRED: number;
RETRY: number;
};
export declare const PRIZE_TYPE: {
ENAME: number;
CREDITS: number;
OBJECT: number;
THANKS: number;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PRIZE_TYPE = exports.DRAW_STATUS = void 0;
// 领取奖品状态
exports.DRAW_STATUS = {
// 待领取
WAITAWARD: 1,
// 处理中
PROCESSING: 2,
// 领取成功
SUCCESS: 3,
// 领取失败
FAIL: 4,
// 已过期
EXPIRED: 5,
// 重新领取
RETRY: 6
};
// 奖品类型
exports.PRIZE_TYPE = {
ENAME: 1,
CREDITS: 2,
OBJECT: 3,
THANKS: 5
};
//# sourceMappingURL=constants.js.map
\ No newline at end of file
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,SAAS;AACI,QAAA,WAAW,GAAG;IACzB,MAAM;IACN,SAAS,EAAE,CAAC;IACZ,MAAM;IACN,UAAU,EAAE,CAAC;IACb,OAAO;IACP,OAAO,EAAE,CAAC;IACV,OAAO;IACP,IAAI,EAAE,CAAC;IACP,MAAM;IACN,OAAO,EAAE,CAAC;IACV,OAAO;IACP,KAAK,EAAE,CAAC;CACT,CAAA;AAED,OAAO;AACM,QAAA,UAAU,GAAG;IACxB,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;CACV,CAAC"}
\ No newline at end of file
import { AudioModel } from '../helpers';
/**
* 通用toast
* @param {string} content toast内容
* @param {number} duration 显示时长
* @param {function} successCb 成功回调
*/
export declare const commonToast: (content: string, duration?: number, successCb?: () => any) => void;
/**
* 简易alert
* @param {string} content toast内容
*/
export declare const simpleAlert: (content: string) => void;
/**
* 通用确认弹窗
* @param {string} title 标题
* @param {string} content 内容
* @param {function} successCb 成功回调
*/
export declare const commonConfirm: (title: string, content: string, successCb?: () => any) => Promise<void>;
/**
* 获取系统信息
*/
export declare const getSystemInfo: () => Promise<unknown>;
/**
* 执行关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
export declare const favorShop: (sellerId: number) => Promise<false | {
error?: number;
}>;
/**
* 判断是否关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
export declare const checkShopFavoredStatus: (sellerId: number) => Promise<boolean | {
isFavor?: boolean;
}>;
/**
* 跳转到外部链接
* @param {string} url 跳转链接
*/
export declare const navigateToOutside: (url: any) => boolean;
/**
* 跳转到内部链接(新开窗口)
* @param {string} url 跳转链接
*/
export declare const navigateTo: (url: any) => boolean;
/**
* 返回页面
* @param {number} delta
*/
export declare const navigateBack: (delta?: number) => void;
/**
* 跳转到内部链接(不新开窗口)
* @param {string} url
*/
export declare const redirectTo: (url: string) => boolean;
/**
* 获取服务器时间
* @returns {number} 服务器时间戳
*/
export declare const getServerTime: () => Promise<string | {
time?: string;
}>;
/**
* 收藏商品
* @param {number} 商品id
* @returns {object} 收藏结果
*/
export declare const collectGoods: (id: number) => Promise<false | {
error?: number;
}>;
/**
* 查询商品收藏状态
* @param {number} 商品id
* @returns {boolean} 商品收场状态
*/
export declare const checkGoodsCollectedStatus: (id: number) => Promise<boolean | {
isCollect?: boolean;
}>;
/**
* 跳转到淘宝商品页
* @param {string} itemId 商品ID
*/
export declare const openDetail: (itemId: string) => Promise<unknown>;
/**
* 创建音频实例
* @param {object} opts 配置对象 例 { src: '音频链接', autoplay: false }
*/
export declare const createAudio: (opts: {
src: string;
autoplay?: boolean;
}) => AudioModel;
/**
* 获取图片信息
* @param {string} src 图片地址
*/
export declare const getImageInfo: (src: string) => Promise<unknown>;
/**
* 剪切板
* @param {text: string}
*/
export declare const setClipboard: (text: string) => Promise<unknown>;
/**
* 调起分享面板
*/
export declare const showSharePanel: () => Promise<void>;
/**
* 获取缓存数据
* @param key
*/
export declare const getStorage: (key: string) => Promise<string | {
data?: string;
}>;
/**
* 设置缓存数据
* @param key
* @param value
*/
export declare const setStorage: (key: string, value: any) => Promise<unknown>;
/**
* 清除缓存数据
* @param key
*/
export declare const removeStorage: (key: string) => Promise<unknown>;
/**
* 自定义分析数据的上报接口
* @param eventType
* @param logkey
*/
export declare const taobaoReportClick: (eventType: string, logkey: string) => void;
/**
* 打开BC客服聊天
* @param sellerNick
* @param itemId
*/
export declare const openMessage: (sellerNick: string, itemId: string) => Promise<unknown>;
/**
* 显示指定商品 SKU 选择器
* @param itemId
*/
export declare const showSkuModal: (itemId: string) => Promise<unknown>;
/**
* 隐藏正在展示的商品 SKU 选择器
*/
export declare const hideSkuModal: () => Promise<unknown>;
/**
* 跳转订单页
* @param itemId
* @param skuId
* @param quantity
*/
export declare const confirmCustomOrder: (itemId: number, skuId?: number, quantity?: number) => Promise<unknown>;
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.confirmCustomOrder = exports.hideSkuModal = exports.showSkuModal = exports.openMessage = exports.taobaoReportClick = exports.removeStorage = exports.setStorage = exports.getStorage = exports.showSharePanel = exports.setClipboard = exports.getImageInfo = exports.createAudio = exports.openDetail = exports.checkGoodsCollectedStatus = exports.collectGoods = exports.getServerTime = exports.redirectTo = exports.navigateBack = exports.navigateTo = exports.navigateToOutside = exports.checkShopFavoredStatus = exports.favorShop = exports.getSystemInfo = exports.commonConfirm = exports.simpleAlert = exports.commonToast = void 0;
var helpers_1 = require("../helpers");
/**
* 通用toast
* @param {string} content toast内容
* @param {number} duration 显示时长
* @param {function} successCb 成功回调
*/
exports.commonToast = function (content, duration, successCb) {
helpers_1.promisifyApiSimple('showToast', {
content: content || '换个姿势再试一次~',
duration: duration || 3000,
success: successCb
});
};
/**
* 简易alert
* @param {string} content toast内容
*/
exports.simpleAlert = function (content) {
helpers_1.promisifyApiSimple('alert', {
content: content
});
};
/**
* 通用确认弹窗
* @param {string} title 标题
* @param {string} content 内容
* @param {function} successCb 成功回调
*/
exports.commonConfirm = function (title, content, successCb) {
if (title === void 0) { title = '提示'; }
return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
helpers_1.promisifyApiSimple('confirm', {
title: title,
content: content,
confirmButtonText: '确定',
cancelButtonText: '取消',
success: function (result) {
var confirm = result.confirm;
if (confirm) {
successCb && successCb();
}
}
});
return [2 /*return*/];
});
});
};
/**
* 获取系统信息
*/
exports.getSystemInfo = function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApi('getSystemInfo', {})];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); };
/**
* 执行关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
exports.favorShop = function (sellerId) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!sellerId) {
return [2 /*return*/, false];
}
return [4 /*yield*/, helpers_1.promisifyApiToTb('favorShop', { id: +sellerId })];
case 1:
result = _a.sent();
if ((result === null || result === void 0 ? void 0 : result.error) === 11)
return [2 /*return*/, false];
return [2 /*return*/, result];
}
});
}); };
/**
* 判断是否关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
exports.checkShopFavoredStatus = function (sellerId) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!sellerId) {
return [2 /*return*/, false];
}
return [4 /*yield*/, helpers_1.promisifyApiToTb('checkShopFavoredStatus', { id: +sellerId })];
case 1:
result = _a.sent();
if (result === null || result === void 0 ? void 0 : result.isFavor)
return [2 /*return*/, result.isFavor];
return [2 /*return*/, result];
}
});
}); };
/**
* 跳转到外部链接
* @param {string} url 跳转链接
*/
exports.navigateToOutside = function (url) {
if (!url) {
console.error('navigateToOutside: 请传入url');
return false;
}
helpers_1.promisifyApiSimple('call', {
url: url
}, 'navigateToOutside');
};
/**
* 跳转到内部链接(新开窗口)
* @param {string} url 跳转链接
*/
exports.navigateTo = function (url) {
if (!url) {
console.error('navigateTo: 请传入url');
return false;
}
helpers_1.promisifyApiSimple('navigateTo', {
url: url
});
};
/**
* 返回页面
* @param {number} delta
*/
exports.navigateBack = function (delta) {
helpers_1.promisifyApiSimple('navigateBack', {
delta: delta
});
};
/**
* 跳转到内部链接(不新开窗口)
* @param {string} url
*/
exports.redirectTo = function (url) {
if (!url) {
console.error('redirectTo: 请传入url');
return false;
}
helpers_1.promisifyApiSimple('redirectTo', {
url: url
});
};
/**
* 获取服务器时间
* @returns {number} 服务器时间戳
*/
exports.getServerTime = function () { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApi('getServerTime', {})];
case 1:
result = _a.sent();
if (result === null || result === void 0 ? void 0 : result.time)
return [2 /*return*/, result.time];
return [2 /*return*/, result];
}
});
}); };
/**
* 收藏商品
* @param {number} 商品id
* @returns {object} 收藏结果
*/
exports.collectGoods = function (id) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!id) {
console.error('collectGoods: 请传入商品id');
return [2 /*return*/, false];
}
return [4 /*yield*/, helpers_1.promisifyApiToTb('collectGoods', { id: +id })];
case 1:
result = _a.sent();
if ((result === null || result === void 0 ? void 0 : result.error) === 11)
return [2 /*return*/, false];
return [2 /*return*/, result];
}
});
}); };
/**
* 查询商品收藏状态
* @param {number} 商品id
* @returns {boolean} 商品收场状态
*/
exports.checkGoodsCollectedStatus = function (id) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!id) {
console.error('checkGoodsCollectedStatus: 请传入商品id');
return [2 /*return*/, false];
}
return [4 /*yield*/, helpers_1.promisifyApiToTb('checkGoodsCollectedStatus', { id: +id })];
case 1:
result = _a.sent();
if (result === null || result === void 0 ? void 0 : result.isCollect)
return [2 /*return*/, result.isCollect];
return [2 /*return*/, result];
}
});
}); };
/**
* 跳转到淘宝商品页
* @param {string} itemId 商品ID
*/
exports.openDetail = function (itemId) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!itemId) {
console.error('openDetail: 请传入商品id');
return [2 /*return*/, false];
}
return [4 /*yield*/, helpers_1.promisifyApiToTb('openDetail', { itemId: String(itemId) })];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); };
/**
* 创建音频实例
* @param {object} opts 配置对象 例 { src: '音频链接', autoplay: false }
*/
exports.createAudio = function (opts) {
var audioInstance = new helpers_1.AudioModel(opts);
return audioInstance;
};
/**
* 获取图片信息
* @param {string} src 图片地址
*/
exports.getImageInfo = function (src) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApi('getImageInfo', { src: src })];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); };
/**
* 剪切板
* @param {text: string}
*/
exports.setClipboard = function (text) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApi('setClipboard', { text: text })];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); };
/**
* 调起分享面板
*/
exports.showSharePanel = function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
helpers_1.promisifyApiSimple('showSharePanel', {});
return [2 /*return*/];
});
}); };
/**
* 获取缓存数据
* @param key
*/
exports.getStorage = function (key) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApi('getStorage', { key: key })];
case 1:
result = _a.sent();
if (result === null || result === void 0 ? void 0 : result.data)
return [2 /*return*/, result.data];
return [2 /*return*/, result];
}
});
}); };
/**
* 设置缓存数据
* @param key
* @param value
*/
exports.setStorage = function (key, value) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApi('setStorage', { key: key, data: value })];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); };
/**
* 清除缓存数据
* @param key
*/
exports.removeStorage = function (key) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApi('removeStorage', { key: key })];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); };
/**
* 自定义分析数据的上报接口
* @param eventType
* @param logkey
*/
exports.taobaoReportClick = function (eventType, logkey) {
// @ts-ignore
my.reportAnalytics(eventType, {
// 标志某一类事件,方便数据分析进行分组
'logkey': logkey
});
};
/**
* 打开BC客服聊天
* @param sellerNick
* @param itemId
*/
exports.openMessage = function (sellerNick, itemId) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApiToTb('openMessage', { sellerNick: sellerNick, forceH5: false, params: { itemId: itemId } })];
case 1:
result = _a.sent();
return [2 /*return*/, result];
}
});
}); };
/**
* 显示指定商品 SKU 选择器
* @param itemId
*/
exports.showSkuModal = function (itemId) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApiToTb('showSku', { itemId: itemId })];
case 1:
result = _a.sent();
return [2 /*return*/, result];
}
});
}); };
/**
* 隐藏正在展示的商品 SKU 选择器
*/
exports.hideSkuModal = function () { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApiToTb('hideSku', {})];
case 1:
result = _a.sent();
return [2 /*return*/, result];
}
});
}); };
/**
* 跳转订单页
* @param itemId
* @param skuId
* @param quantity
*/
exports.confirmCustomOrder = function (itemId, skuId, quantity) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.promisifyApiToTb('confirmCustomOrder', {
data: {
itemId: itemId,
skuId: skuId || -1,
quantity: quantity || 1,
customization: {}
}
})];
case 1:
result = _a.sent();
return [2 /*return*/, result];
}
});
}); };
//# sourceMappingURL=tb.js.map
\ No newline at end of file
{"version":3,"file":"tb.js","sourceRoot":"","sources":["../../src/core/tb.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAKmB;AACnB;;;;;GAKG;AACU,QAAA,WAAW,GAAG,UAAC,OAAe,EAAE,QAAiB,EAAE,SAAqB;IACjF,4BAAkB,CAAC,WAAW,EAAC;QAC3B,OAAO,EAAE,OAAO,IAAI,WAAW;QAC/B,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,OAAO,EAAE,SAAS;KACrB,CAAC,CAAA;AACN,CAAC,CAAC;AACF;;;GAGG;AACU,QAAA,WAAW,GAAG,UAAC,OAAe;IACvC,4BAAkB,CAAC,OAAO,EAAC;QACvB,OAAO,SAAA;KACV,CAAC,CAAA;AACN,CAAC,CAAC;AACF;;;;;GAKG;AACU,QAAA,aAAa,GAAG,UAAO,KAAY,EAAE,OAAe,EAAE,SAAqB;IAApD,sBAAA,EAAA,YAAY;;;YAC5C,4BAAkB,CAAC,SAAS,EAAC;gBACzB,KAAK,OAAA;gBACL,OAAO,SAAA;gBACP,iBAAiB,EAAE,IAAI;gBACvB,gBAAgB,EAAE,IAAI;gBACtB,OAAO,EAAE,UAAA,MAAM;oBACH,IAAA,OAAO,GAAK,MAAM,QAAX,CAAY;oBAC3B,IAAI,OAAO,EAAE;wBACX,SAAS,IAAI,SAAS,EAAE,CAAC;qBAC1B;gBACL,CAAC;aACJ,CAAC,CAAA;;;;CACL,CAAC;AACF;;GAEG;AACU,QAAA,aAAa,GAAG;;;oBAClB,qBAAM,sBAAY,CAAC,eAAe,EAAE,EAAE,CAAC,EAAA;oBAA9C,sBAAO,SAAuC,EAAA;;;KACjD,CAAC;AACF;;;;GAIG;AACU,QAAA,SAAS,GAAG,UAAO,QAAgB;;;;;gBAC5C,IAAI,CAAC,QAAQ,EAAE;oBACb,sBAAO,KAAK,EAAC;iBACd;gBACgC,qBAAM,0BAAgB,CAAC,WAAW,EAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAA;;gBAAlF,MAAM,GAAuB,SAAqD;gBACtF,IAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,MAAK,EAAE;oBAAE,sBAAO,KAAK,EAAA;gBACrC,sBAAO,MAAM,EAAA;;;KAChB,CAAC;AACF;;;;GAIG;AACU,QAAA,sBAAsB,GAAG,UAAO,QAAgB;;;;;gBACzD,IAAI,CAAC,QAAQ,EAAE;oBACb,sBAAO,KAAK,EAAC;iBACd;gBACmC,qBAAM,0BAAgB,CAAC,wBAAwB,EAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAA;;gBAAlG,MAAM,GAA0B,SAAkE;gBACtG,IAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO;oBAAE,sBAAO,MAAM,CAAC,OAAO,EAAA;gBACzC,sBAAO,MAAM,EAAA;;;KAChB,CAAC;AACF;;;GAGG;AACU,QAAA,iBAAiB,GAAG,UAAA,GAAG;IAChC,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC;KACd;IACD,4BAAkB,CAAC,MAAM,EAAC;QACtB,GAAG,KAAA;KACN,EAAE,mBAAmB,CAAC,CAAA;AAC3B,CAAC,CAAC;AACF;;;GAGG;AACU,QAAA,UAAU,GAAG,UAAA,GAAG;IACzB,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;KACd;IACD,4BAAkB,CAAC,YAAY,EAAC;QAC5B,GAAG,KAAA;KACN,CAAC,CAAA;AACN,CAAC,CAAC;AACF;;;GAGG;AACU,QAAA,YAAY,GAAG,UAAC,KAAc;IACvC,4BAAkB,CAAC,cAAc,EAAC;QAC9B,KAAK,OAAA;KACR,CAAC,CAAA;AACN,CAAC,CAAC;AACF;;;GAGG;AACU,QAAA,UAAU,GAAG,UAAC,GAAW;IAClC,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;KACd;IACD,4BAAkB,CAAC,YAAY,EAAC;QAC5B,GAAG,KAAA;KACN,CAAC,CAAA;AACN,CAAC,CAAC;AACF;;;GAGG;AACU,QAAA,aAAa,GAAG;;;;oBACS,qBAAM,sBAAY,CAAC,eAAe,EAAE,EAAE,CAAC,EAAA;;gBAAnE,MAAM,GAAsB,SAAuC;gBACzE,IAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI;oBAAE,sBAAO,MAAM,CAAC,IAAI,EAAA;gBACnC,sBAAO,MAAM,EAAA;;;KAChB,CAAC;AACF;;;;GAIG;AACU,QAAA,YAAY,GAAG,UAAO,EAAU;;;;;gBACzC,IAAI,CAAC,EAAE,EAAE;oBACP,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBACvC,sBAAO,KAAK,EAAC;iBACd;gBACgC,qBAAM,0BAAgB,CAAC,cAAc,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAA;;gBAA/E,MAAM,GAAuB,SAAkD;gBACnF,IAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,MAAK,EAAE;oBAAE,sBAAO,KAAK,EAAA;gBACrC,sBAAO,MAAM,EAAA;;;KAChB,CAAC;AACF;;;;GAIG;AACU,QAAA,yBAAyB,GAAG,UAAO,EAAU;;;;;gBACtD,IAAI,CAAC,EAAE,EAAE;oBACP,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;oBACpD,sBAAO,KAAK,EAAC;iBACd;gBACqC,qBAAM,0BAAgB,CAAC,2BAA2B,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAA;;gBAAjG,MAAM,GAA4B,SAA+D;gBACrG,IAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS;oBAAE,sBAAO,MAAM,CAAC,SAAS,EAAA;gBAC7C,sBAAO,MAAM,EAAA;;;KAChB,CAAC;AACF;;;GAGG;AACU,QAAA,UAAU,GAAG,UAAO,MAAc;;;;gBAC3C,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACrC,sBAAO,KAAK,EAAC;iBACd;gBACM,qBAAM,0BAAgB,CAAC,YAAY,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAA;oBAAtE,sBAAO,SAA+D,EAAA;;;KACzE,CAAC;AACF;;;GAGG;AACU,QAAA,WAAW,GAAG,UAAC,IAAwC;IAChE,IAAM,aAAa,GAAG,IAAI,oBAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AACF;;;GAGG;AACU,QAAA,YAAY,GAAG,UAAO,GAAW;;;oBACnC,qBAAM,sBAAY,CAAC,cAAc,EAAE,EAAE,GAAG,KAAA,EAAE,CAAC,EAAA;oBAAlD,sBAAO,SAA2C,EAAA;;;KACrD,CAAC;AACF;;;GAGG;AACU,QAAA,YAAY,GAAG,UAAO,IAAY;;;oBACvC,qBAAM,sBAAY,CAAC,cAAc,EAAE,EAAE,IAAI,MAAA,EAAE,CAAC,EAAA;oBAAnD,sBAAO,SAA4C,EAAA;;;KACnD,CAAC;AACF;;GAEG;AACU,QAAA,cAAc,GAAG;;QAC1B,4BAAkB,CAAC,gBAAgB,EAAC,EAAE,CAAC,CAAA;;;KAC1C,CAAA;AACD;;;GAGG;AACU,QAAA,UAAU,GAAG,UAAO,GAAW;;;;oBACP,qBAAM,sBAAY,CAAC,YAAY,EAAE,EAAE,GAAG,KAAA,EAAE,CAAC,EAAA;;gBAApE,MAAM,GAAqB,SAAyC;gBAC1E,IAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI;oBAAE,sBAAO,MAAM,CAAC,IAAI,EAAA;gBACnC,sBAAO,MAAM,EAAA;;;KAChB,CAAA;AACD;;;;GAIG;AACU,QAAA,UAAU,GAAG,UAAO,GAAW,EAAE,KAAU;;;oBAC7C,qBAAM,sBAAY,CAAC,YAAY,EAAE,EAAE,GAAG,KAAA,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAA;oBAA7D,sBAAO,SAAsD,EAAA;;;KAChE,CAAA;AACD;;;GAGG;AACU,QAAA,aAAa,GAAG,UAAO,GAAW;;;oBACpC,qBAAM,sBAAY,CAAC,eAAe,EAAE,EAAE,GAAG,KAAA,EAAE,CAAC,EAAA;oBAAnD,sBAAO,SAA4C,EAAA;;;KACtD,CAAA;AACD;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,UAAC,SAAiB,EAAC,MAAc;IAC9D,aAAa;IACb,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE;QAC1B,qBAAqB;QACrB,QAAQ,EAAE,MAAM;KACnB,CAAC,CAAA;AACN,CAAC,CAAC;AACF;;;;GAIG;AACU,QAAA,WAAW,GAAG,UAAO,UAAkB,EAAE,MAAc;;;;oBACnD,qBAAM,0BAAgB,CAAC,aAAa,EAAC,EAAE,UAAU,YAAA,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE,EAAE,CAAC,EAAA;;gBAAjG,MAAM,GAAG,SAAwF;gBACrG,sBAAO,MAAM,EAAA;;;KAChB,CAAA;AACD;;;GAGG;AACU,QAAA,YAAY,GAAG,UAAO,MAAc;;;;oBAChC,qBAAM,0BAAgB,CAAC,SAAS,EAAC,EAAE,MAAM,QAAA,EAAE,CAAC,EAAA;;gBAArD,MAAM,GAAG,SAA4C;gBACzD,sBAAO,MAAM,EAAA;;;KAChB,CAAA;AACD;;GAEG;AACU,QAAA,YAAY,GAAG;;;;oBACX,qBAAM,0BAAgB,CAAC,SAAS,EAAC,EAAE,CAAC,EAAA;;gBAA7C,MAAM,GAAG,SAAoC;gBACjD,sBAAO,MAAM,EAAA;;;KAChB,CAAA;AACD;;;;;GAKG;AACU,QAAA,kBAAkB,GAAG,UAAO,MAAc,EAAE,KAAc,EAAE,QAAiB;;;;oBACzE,qBAAM,0BAAgB,CAAC,oBAAoB,EAAC;oBACrD,IAAI,EAAE;wBACF,MAAM,QAAA;wBACN,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;wBAClB,QAAQ,EAAE,QAAQ,IAAI,CAAC;wBACvB,aAAa,EAAE,EAAE;qBACpB;iBACJ,CAAC,EAAA;;gBAPE,MAAM,GAAG,SAOX;gBACF,sBAAO,MAAM,EAAA;;;KAChB,CAAA"}
\ No newline at end of file
/**
* 获取淘宝用户收货地址
*/
export declare const getUserAddress: (opts?: {}) => Promise<unknown>;
/**
* 选择图片
* @param opts
*/
export declare const chooseImage: (opts?: {}) => Promise<unknown>;
/**
* 获取图片信息
* @param {*} opts chooseImage配置参数
*/
export declare const uploadImage: (opts?: {}) => Promise<any>;
/**
* 获取授权用户信息
* @returns {object} 用户登录信息
*/
export declare const getAuthUserInfo: () => Promise<unknown>;
/**
* 获取用户会员状态(Tmall使用)
*/
export declare const getUserStatus: () => Promise<unknown>;
/**
* 拉菲奖品发放(Tmall使用)
* @param params
*/
export declare const cloudTBIssue: (params: {
channel: string;
strategyCode: string;
code: string;
}) => Promise<unknown>;
/**
* 分享到群聊卡片
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
export declare const chattingSendCard: (requestInfo: IRequestInfo) => Promise<unknown>;
/**
* 文本风险校验
* @param {string} text 文本
*/
export declare const textRiskIdentification: (text: string) => Promise<unknown>;
/**
* 跳转店铺首页
* @param {string} shopId
*/
export declare const navigateToTaobaoPage: (shopId: string) => Promise<unknown>;
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.navigateToTaobaoPage = exports.textRiskIdentification = exports.chattingSendCard = exports.cloudTBIssue = exports.getUserStatus = exports.getAuthUserInfo = exports.uploadImage = exports.chooseImage = exports.getUserAddress = void 0;
var helpers_1 = require("../helpers");
/**
* 获取淘宝用户收货地址
*/
exports.getUserAddress = function (opts) {
if (opts === void 0) { opts = {}; }
return __awaiter(void 0, void 0, void 0, function () {
var defaults, _opts;
return __generator(this, function (_a) {
defaults = {
addAddress: 'show',
searchAddress: 'hide',
locateAddress: 'hide',
joinTag: '' // 分割收货地址符号(淘宝商家有特定发货需求)
};
_opts = Object.assign({}, defaults, opts);
return [2 /*return*/, new Promise(function (resolve, reject) {
// @ts-ignore
my.authorize({
scopes: 'scope.addressList',
success: function () {
var addAddress = _opts.addAddress, searchAddress = _opts.searchAddress, locateAddress = _opts.locateAddress, joinTag = _opts.joinTag;
// @ts-ignore
if (!my.tb.chooseAddress) {
reject({
noSupport: true,
errorMessage: '当前版本不支持选择收货地址,请升级到最新版本'
});
return false;
}
// @ts-ignore
my.tb.chooseAddress({
addAddress: addAddress,
searchAddress: searchAddress,
locateAddress: locateAddress
}, function (res) {
var error = res.error, provinceName = res.provinceName, countyName = res.countyName, cityName = res.cityName, streetName = res.streetName, detailInfo = res.detailInfo, name = res.name, telNumber = res.telNumber;
// 如果有error为用户取消操作不做操作
if (error) {
resolve(false);
}
else {
resolve(__assign(__assign({}, res), { duibaAddress: {
name: name,
phone: telNumber,
address: [provinceName, cityName, countyName, streetName, detailInfo].join(joinTag)
} }));
}
}, function (res) {
reject(res);
});
},
fail: function (err) {
reject(err);
}
});
})];
});
});
};
/**
* 选择图片
* @param opts
*/
exports.chooseImage = function (opts) {
if (opts === void 0) { opts = {}; }
return __awaiter(void 0, void 0, void 0, function () {
var defaults, _opts, count, sourceType, compressLevel;
return __generator(this, function (_a) {
defaults = {
count: 1,
sourceType: ['camera', 'album'],
compressLevel: 1
};
_opts = Object.assign({}, defaults, opts);
count = _opts.count, sourceType = _opts.sourceType, compressLevel = _opts.compressLevel;
return [2 /*return*/, new Promise(function (resolve, reject) {
// @ts-ignore
if (!my.chooseImage) {
reject({
noSupport: true,
errorMessage: '当前版本不支持选择图片,请升级到最新版本'
});
return false;
}
// @ts-ignore
my.chooseImage({
count: count,
sourceType: sourceType,
success: function (res) {
// @ts-ignore
my.compressImage({
apFilePaths: res.apFilePaths,
level: compressLevel,
success: function (data) {
resolve(data);
},
fail: function (err) {
resolve(err);
}
});
},
fail: function (err) {
// error code 2001 为摄像头授权取消、ios 11为用户取消操作不认作失败场景 、安卓 为1
if (err.error !== 2001 && err.error !== 11 && err.error !== 1) {
reject(err);
}
else {
resolve(false);
}
}
});
})];
});
});
};
/**
* 获取图片信息
* @param {*} opts chooseImage配置参数
*/
exports.uploadImage = function (opts) {
if (opts === void 0) { opts = {}; }
return __awaiter(void 0, void 0, void 0, function () {
var cloud, chooseImageResult, apFilePaths, filePath, imageInfo, imagePath, url;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cloud = getApp().cloud;
if (!cloud) {
console.error('chattingSendCard: 请传入app.cloud');
return [2 /*return*/, false];
}
return [4 /*yield*/, exports.chooseImage(opts).catch(function (err) {
console.error('选择图片失败');
})];
case 1:
chooseImageResult = _a.sent();
if (!chooseImageResult) return [3 /*break*/, 4];
apFilePaths = chooseImageResult.apFilePaths;
filePath = apFilePaths[0];
return [4 /*yield*/, helpers_1.promisifyApi('getImageInfo', { src: filePath })
// 找不到图片信息
];
case 2:
imageInfo = _a.sent();
// 找不到图片信息
if (!imageInfo) {
return [2 /*return*/, false];
}
imagePath = imageInfo.path;
return [4 /*yield*/, cloud.file.uploadFile({
filePath: filePath,
fileType: 'image',
fileName: imagePath.split('/').pop()
})];
case 3:
url = (_a.sent()).url;
return [2 /*return*/, url];
case 4: return [2 /*return*/, false];
}
});
});
};
/**
* 获取授权用户信息
* @returns {object} 用户登录信息
*/
exports.getAuthUserInfo = function () {
return new Promise(function (resolve, reject) {
// @ts-ignore
my.authorize({
scopes: 'scope.userInfo',
success: function () {
// @ts-ignore
my.getAuthUserInfo({
success: function (userInfo) {
resolve(userInfo);
},
fail: function (err) {
reject(err);
}
});
},
fail: function (err) {
reject(err);
}
});
});
};
/**
* 获取用户会员状态(Tmall使用)
*/
exports.getUserStatus = function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
// @ts-ignore
my.authorize({
scopes: "scope.campus.audit",
success: function () { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.getTmallMemberStatus()];
case 1:
result = _a.sent();
resolve(result.result);
return [2 /*return*/];
}
});
}); },
fail: function (err) {
console.log(err);
reject(err);
},
});
})];
});
}); };
/**
* 拉菲奖品发放(Tmall使用)
* @param params
*/
exports.cloudTBIssue = function (params) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
// @ts-ignore
my.authorize({
scopes: "scope.latourBenefit",
success: function () { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, helpers_1.strategyEname(params)];
case 1:
result = _a.sent();
console.log(result, "result");
resolve(result);
return [2 /*return*/];
}
});
}); },
fail: function (err) {
console.log(err);
reject(err);
},
});
})];
});
}); };
/**
* 分享到群聊卡片
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
exports.chattingSendCard = function (requestInfo) { return __awaiter(void 0, void 0, void 0, function () {
var cloud;
return __generator(this, function (_a) {
cloud = getApp().cloud;
if (!cloud) {
console.error('chattingSendCard: 请传入app.cloud');
return [2 /*return*/, false];
}
if (!requestInfo) {
console.error('chattingSendCard: 请传入卡片请求参数');
return [2 /*return*/, false];
}
return [2 /*return*/, new Promise(function (resolve, reject) {
// @ts-ignore
my.authorize({
scopes: 'scope.groupChat',
success: function () { return __awaiter(void 0, void 0, void 0, function () {
var result, error;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, cloud.topApi
.invoke({
api: 'taobao.chatting.platform.message.sendcard',
data: { request_info: JSON.stringify(requestInfo) }
})
.catch(function (err) {
reject(err);
})];
case 1:
result = _a.sent();
if (result) {
error = result.error;
if (error) {
resolve(false);
}
else {
resolve(result);
}
}
return [2 /*return*/];
}
});
}); },
fail: function (err) {
if (err.error === 11) {
// error code 11 为用户取消操作不认作失败场景
resolve(false);
}
reject(err);
}
});
})];
});
}); };
/**
* 文本风险校验
* @param {string} text 文本
*/
exports.textRiskIdentification = function (text) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
// @ts-ignore
if (!my.tb.textRiskIdentification) {
reject({
noSupport: true,
errorMessage: '不支持文本校验'
});
}
// @ts-ignore
my.tb.textRiskIdentification({
data: {
text: text
},
success: function (res) {
if (res.data && res.data.result) {
var suggestion = res.data.result.suggestion;
if (suggestion === 'pass') {
resolve(true);
}
}
resolve(false);
},
fail: function (err) {
reject(err);
},
});
})];
});
}); };
/**
* 跳转店铺首页
* @param {string} shopId
*/
exports.navigateToTaobaoPage = function (shopId) {
return new Promise(function (resolve, reject) {
// @ts-ignore
my.tb.navigateToTaobaoPage({
appCode: 'shop',
appParams: {
shopId: String(shopId),
weexShopTab: "shopindexbar",
weexShopSubTab: "shopindex"
},
success: function (res) {
resolve(true);
},
fail: function (res) {
reject(res.error);
}
});
});
};
//# sourceMappingURL=tbFn.js.map
\ No newline at end of file
{"version":3,"file":"tbFn.js","sourceRoot":"","sources":["../../src/core/tbFn.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
/**
* 通用toast
* @param {string} content toast内容
* @param {number} duration 显示时长
* @param {function} successCb 成功回调
*/
export declare const commonToast: (content: any, duration: number, successCb: any) => string;
/**
* 简易alert
* @param {string} content toast内容
*/
export declare const simpleAlert: (content: any) => void;
/**
* 获取授权用户信息
* @returns {object} 用户登录信息
*/
export declare const getAuthUserInfo: () => Promise<{
nickName: string;
avatar: string;
mixNick: string;
}>;
/**
* 获取系统信息
* @returns {object} 小程序系统信息
*/
export declare const getSystemInfo: () => Promise<{
version: string;
}>;
/**
* 执行关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
export declare const favorShop: (sellerId: any) => Promise<boolean>;
/**
* 判断是否关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
export declare const checkShopFavoredStatus: (sellerId: any) => Promise<boolean>;
/**
* 跳转到外部链接
* @param {string} url 跳转链接
*/
export declare const navigateToOutside: (url: any) => boolean;
/**
* 跳转到内部链接(新开窗口)
* @param {string} url 跳转链接
*/
export declare const navigateTo: (url: any) => boolean;
/**
* 跳转到内部链接(不新开窗口)
* @param {string} url 跳转链接
*/
export declare const redirectTo: (url: any) => boolean;
/**
* 获取服务器时间
* @returns {number} 服务器时间戳
*/
export declare const getServerTime: () => Promise<number>;
/**
* 收藏商品
* @param {number} 商品id
* @returns {object} 收藏结果
*/
export declare const collectGoods: (id: any) => Promise<boolean>;
/**
* 查询商品收藏状态
* @param {number} 商品id
* @returns {boolean} 商品收场状态
*/
export declare const checkGoodsCollectedStatus: (id: any) => Promise<boolean>;
/**
* 跳转到淘宝商品页
* @param {string} itemId 商品ID
*/
export declare const openDetail: (itemId: any) => Promise<boolean>;
/**
* 获取淘宝用户收货地址
*/
export declare const getUserAddress: (opts?: {}) => Promise<{
name: number;
phone: number;
address: number;
}>;
/**
* 分享到群聊卡片
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
export declare const chattingSendCard: (requestInfo: any) => Promise<boolean>;
/**
* 分享到群聊卡片
* @param {*} cloud 小程序云
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
export declare const textRiskIdentification: (text: any) => Promise<boolean>;
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.textRiskIdentification = exports.chattingSendCard = exports.getUserAddress = exports.openDetail = exports.checkGoodsCollectedStatus = exports.collectGoods = exports.getServerTime = exports.redirectTo = exports.navigateTo = exports.navigateToOutside = exports.checkShopFavoredStatus = exports.favorShop = exports.getSystemInfo = exports.getAuthUserInfo = exports.simpleAlert = exports.commonToast = void 0;
/**
* 通用toast
* @param {string} content toast内容
* @param {number} duration 显示时长
* @param {function} successCb 成功回调
*/
exports.commonToast = function (content, duration, successCb) {
if (duration === void 0) { duration = 3000; }
return '暂不支持toast';
};
/**
* 简易alert
* @param {string} content toast内容
*/
exports.simpleAlert = function (content) {
alert(content);
};
/**
* 获取授权用户信息
* @returns {object} 用户登录信息
*/
exports.getAuthUserInfo = function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, {
nickName: 'nickName',
avatar: '123',
mixNick: '1234'
}];
});
}); };
/**
* 获取系统信息
* @returns {object} 小程序系统信息
*/
exports.getSystemInfo = function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, {
version: '9.5.0'
}];
});
}); };
/**
* 执行关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
exports.favorShop = function (sellerId) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
if (!sellerId) {
console.error('favorShop: 请传入卖家Id');
return [2 /*return*/, false];
}
return [2 /*return*/, true];
});
}); };
/**
* 判断是否关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
exports.checkShopFavoredStatus = function (sellerId) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
if (!sellerId) {
console.error('checkShopFavoredStatus: 请传入卖家Id');
return [2 /*return*/, false];
}
return [2 /*return*/, true];
});
}); };
/**
* 跳转到外部链接
* @param {string} url 跳转链接
*/
exports.navigateToOutside = function (url) {
if (!url) {
console.error('navigateToOutside: 请传入url');
return false;
}
window.location = url;
};
/**
* 跳转到内部链接(新开窗口)
* @param {string} url 跳转链接
*/
exports.navigateTo = function (url) {
if (!url) {
console.error('navigateTo: 请传入url');
return false;
}
window.location = url;
};
/**
* 跳转到内部链接(不新开窗口)
* @param {string} url 跳转链接
*/
exports.redirectTo = function (url) {
if (!url) {
console.error('redirectTo: 请传入url');
return false;
}
// @ts-ignore
window.replace(url);
};
/**
* 获取服务器时间
* @returns {number} 服务器时间戳
*/
exports.getServerTime = function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, +new Date()];
});
}); };
/**
* 收藏商品
* @param {number} 商品id
* @returns {object} 收藏结果
*/
exports.collectGoods = function (id) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
if (!id) {
console.error('collectGoods: 请传入商品id');
return [2 /*return*/, false];
}
return [2 /*return*/, true];
});
}); };
/**
* 查询商品收藏状态
* @param {number} 商品id
* @returns {boolean} 商品收场状态
*/
exports.checkGoodsCollectedStatus = function (id) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
if (!id) {
console.error('checkGoodsCollectedStatus: 请传入商品id');
return [2 /*return*/, false];
}
return [2 /*return*/, true];
});
}); };
/**
* 跳转到淘宝商品页
* @param {string} itemId 商品ID
*/
exports.openDetail = function (itemId) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
if (!itemId) {
console.error('openDetail: 请传入商品id');
return [2 /*return*/, false];
}
// @ts-ignore
window.location = 'https://item.taobao.com/item.htm?id=' + itemId;
return [2 /*return*/];
});
}); };
/**
* 获取淘宝用户收货地址
*/
exports.getUserAddress = function (opts) {
if (opts === void 0) { opts = {}; }
return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, {
name: 1,
phone: 1,
address: 123
}];
});
});
};
/**
* 分享到群聊卡片
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
exports.chattingSendCard = function (requestInfo) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
alert('无法模拟');
return [2 /*return*/, false];
});
}); };
/**
* 分享到群聊卡片
* @param {*} cloud 小程序云
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
exports.textRiskIdentification = function (text) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, true];
});
}); };
//# sourceMappingURL=tbMock.js.map
\ No newline at end of file
{"version":3,"file":"tbMock.js","sourceRoot":"","sources":["../../src/core/tbMock.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
/**
* 简易API封装
* @param methodName
* @param params
* @param name
*/
export declare const promisifyApiSimple: (methodName: string, params: IParamJSAPI, name?: string) => void;
/**
* 通用API封装
* @param methodName
* @param params
*/
export declare const promisifyApi: (methodName: string, params?: {}) => Promise<unknown>;
/**
* 通用API封装
* @param methodName
* @param params
*/
export declare const promisifyApiToTb: (methodName: string, params?: {}) => Promise<unknown>;
/**
* 创建音频类
*/
export declare class AudioModel {
constructor(opts: {
src: string;
});
}
/**
* 获取天猫会员状态
*/
export declare const getTmallMemberStatus: () => Promise<any>;
/**
* 拉菲奖品发放
* @param params
*/
export declare const strategyEname: (params: {
channel: string;
strategyCode: string;
code: string;
}) => Promise<any>;
/**
* loading
* @param methodName
* @param params
* @param name
*/
export declare const isLoading: (methodName: string) => void;
/**
* 数据请求
* @param params
* @param loading
*/
export declare const myRequest: (params: any, loading: boolean) => Promise<unknown>;
/**
* 云函数接口请求
* @param _cloudName
* @param handle
* @param params
* @param loading
*/
export declare const cloudRequest: (cloud: any, _cloudName: string, handle: string, params: any, loading: boolean) => Promise<unknown>;
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.cloudRequest = exports.myRequest = exports.isLoading = exports.strategyEname = exports.getTmallMemberStatus = exports.AudioModel = exports.promisifyApiToTb = exports.promisifyApi = exports.promisifyApiSimple = void 0;
/**
* 简易API封装
* @param methodName
* @param params
* @param name
*/
exports.promisifyApiSimple = function (methodName, params, name) {
if (name) {
// @ts-ignore
my[methodName](name, params);
return;
}
// @ts-ignore
my[methodName](params);
};
/**
* 通用API封装
* @param methodName
* @param params
*/
exports.promisifyApi = function (methodName, params) {
if (params === void 0) { params = {}; }
return new Promise(function (resolve, reject) {
// @ts-ignore
my[methodName](__assign(__assign({}, params), { success: function (res) {
resolve(res);
}, fail: function (err) {
reject(err);
} }));
});
};
/**
* 通用API封装
* @param methodName
* @param params
*/
exports.promisifyApiToTb = function (methodName, params) {
if (params === void 0) { params = {}; }
return new Promise(function (resolve, reject) {
// @ts-ignore
my.tb[methodName](__assign(__assign({}, params), { success: function (res) {
resolve(res);
}, fail: function (err) {
reject(err);
} }));
});
};
/**
* 创建音频类
*/
var AudioModel = /** @class */ (function () {
function AudioModel(opts) {
var src = opts.src;
if (!src) {
console.error('请输入音频链接');
return false;
}
try {
// @ts-ignore
var innerAudioContext_1 = my.createInnerAudioContext();
Object.keys(opts).forEach(function (item) {
innerAudioContext_1[item] = opts[item];
});
return innerAudioContext_1;
}
catch (e) {
console.error('当前版本不支持音频');
}
}
return AudioModel;
}());
exports.AudioModel = AudioModel;
/**
* 获取天猫会员状态
*/
exports.getTmallMemberStatus = function () { return __awaiter(void 0, void 0, void 0, function () {
var cloud;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cloud = app.cloud;
return [4 /*yield*/, cloud.topApi.invoke({
api: "tmall.campus.industry.app.audit.query",
data: {
source: "duibajk",
},
}).catch(function (err) {
console.log(err);
})];
case 1: return [2 /*return*/, (_a.sent()) || {}];
}
});
}); };
/**
* 拉菲奖品发放
* @param params
*/
exports.strategyEname = function (params) { return __awaiter(void 0, void 0, void 0, function () {
var cloud;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cloud = app.cloud;
return [4 /*yield*/, cloud.topApi.invoke({
api: "alibaba.latour.strategy.issue",
data: {
channel: params.channel || "",
strategy_code: params.strategyCode || "",
selected_benefit_code: params.code || "",
},
}).catch(function (err) {
console.log("err", err);
})];
case 1: return [2 /*return*/, (_a.sent()) || {}];
}
});
}); };
/**
* loading
* @param methodName
* @param params
* @param name
*/
exports.isLoading = function (methodName) {
// @ts-ignore
my[methodName]();
};
/**
* 数据请求
* @param params
* @param loading
*/
exports.myRequest = function (params, loading) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
// @ts-ignore
my.request(params).then(function (_a) {
var res = _a.data;
console.log("\u8C03\u7528mock\u63A5\u53E3\u8FD4\u56DE\u7ED3\u679C", res);
loading && exports.isLoading('hideLoading');
if (res && res.success) {
resolve(res);
}
else {
reject(res);
}
}).catch(function (e) {
loading && exports.isLoading('hideLoading');
console.log(e);
reject();
});
})];
});
}); };
/**
* 云函数接口请求
* @param _cloudName
* @param handle
* @param params
* @param loading
*/
exports.cloudRequest = function (cloud, _cloudName, handle, params, loading) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
// @ts-ignore
cloud.function.invoke(_cloudName, params, handle).then(function (res) {
console.log("\u8C03\u7528" + handle + "\u63A5\u53E3\u8FD4\u56DE\u7ED3\u679C", res);
loading && exports.isLoading('hideLoading');
if (res && res.success) {
resolve(res);
}
else {
reject(res);
}
return res;
}).catch(function () {
loading && exports.isLoading('hideLoading');
reject();
});
})];
});
}); };
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
/**
* 加密
* @param data
*/
export declare const md5: (data: any) => any;
/**
* my.request请求接口
* @param params
* @param res
* @param loading
* @param tornadoAPI
*/
export declare const tornadoAPICb: (params: any, res: any, loading: boolean, tornadoAPI: string) => Promise<unknown>;
/**
* 请求风池台接口数据
* @param tornadoAPI
* @param nickName
* @param handle
* @param loading
* @param params
*/
export declare const tornadoAPIFn: (tornadoAPI: string, nickName: string, handle: string, loading: boolean, params: any) => Promise<unknown>;
/**
* 请求mock数据
* @param reqConfig
* @param initConfig
* @param params
*/
export declare const requestMock: (reqConfig: IReqConfig, initConfig: IInitConfig, params: any) => Promise<unknown>;
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.requestMock = exports.tornadoAPIFn = exports.tornadoAPICb = exports.md5 = void 0;
var tbFn_1 = require("../core/tbFn");
var tb_1 = require("../core/tb");
var index_1 = require("./index");
var Buffer = require("buffer").Buffer;
var crypto = require("crypto");
/**
* 加密
* @param data
*/
exports.md5 = function (data) {
var buf = new Buffer(data);
var str = buf.toString("binary");
return crypto.createHash("md5").update(str).digest("hex").slice(0, 30);
};
/**
* my.request请求接口
* @param params
* @param res
* @param loading
* @param tornadoAPI
*/
exports.tornadoAPICb = function (params, res, loading, tornadoAPI) { return __awaiter(void 0, void 0, void 0, function () {
var nickName, params_;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
nickName = res.nickName;
params.openId = exports.md5(nickName);
params_ = {
url: tornadoAPI,
method: 'post',
data: params,
dataType: 'json'
};
return [4 /*yield*/, index_1.myRequest(params_, loading)];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); };
/**
* 请求风池台接口数据
* @param tornadoAPI
* @param nickName
* @param handle
* @param loading
* @param params
*/
exports.tornadoAPIFn = function (tornadoAPI, nickName, handle, loading, params) { return __awaiter(void 0, void 0, void 0, function () {
var matchRes, db, proxyIp, data_, params_;
return __generator(this, function (_a) {
matchRes = tornadoAPI.match(/db=(\w*)&proxyIp=([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})/);
db = matchRes[1];
proxyIp = matchRes[2];
data_ = {
handler: handle,
data: params
};
console.log("data_", data_);
params_ = {
db: db,
proxyIp: proxyIp,
data: data_
};
if (!db || !proxyIp) {
tb_1.commonConfirm('风驰台地址错误', '请确认风驰台的地址是否正确,未查找到db和proxyIp');
return [2 /*return*/, false];
}
// nickName 转 md5 作为唯一的openId
if (!nickName) {
return [2 /*return*/, tbFn_1.getAuthUserInfo().catch(function (err) {
console.log('未授权成功', err);
}).then(function (res) {
return exports.tornadoAPICb(params_, res, loading, tornadoAPI);
})];
}
return [2 /*return*/];
});
}); };
/**
* 请求mock数据
* @param reqConfig
* @param initConfig
* @param params
*/
exports.requestMock = function (reqConfig, initConfig, params) { return __awaiter(void 0, void 0, void 0, function () {
var cloudName, handle, method, isShowLoading, requestType, tornadoAPI, nickName, mockUrlPrefix, mockUrl, requestPrefix, params_;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cloudName = reqConfig.cloudName, handle = reqConfig.handle, method = reqConfig.method, isShowLoading = reqConfig.isShowLoading;
requestType = initConfig.requestType, tornadoAPI = initConfig.tornadoAPI, nickName = initConfig.nickName, mockUrlPrefix = initConfig.mockUrlPrefix, mockUrl = initConfig.mockUrl;
if (!(requestType === 'tornadoAPI')) return [3 /*break*/, 2];
return [4 /*yield*/, exports.tornadoAPIFn(tornadoAPI, nickName, handle, isShowLoading, params)];
case 1: return [2 /*return*/, _a.sent()];
case 2:
requestPrefix = mockUrl || mockUrlPrefix[requestType];
params_ = {
url: requestPrefix + cloudName + '.' + handle,
method: 'get',
data: params,
dataType: 'json'
};
return [4 /*yield*/, index_1.myRequest(params_, isShowLoading)];
case 3: return [2 /*return*/, _a.sent()];
}
});
}); };
//# sourceMappingURL=requestFn.js.map
\ No newline at end of file
{"version":3,"file":"requestFn.js","sourceRoot":"","sources":["../../src/helpers/requestFn.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as utils from './utils';
import * as constants from './constants';
declare const _default: {
capi: {
getMyPrizeList: {
method: string;
handle: string;
isShowLoading: boolean;
};
receiveObjectPrize: {
method: string;
handle: string;
};
receiveEnamePrize: {
method: string;
handle: string;
};
getItemListByItemIds: {
method: string;
handle: string;
};
getCollectGoodsList: {
method: string;
handle: string;
};
doCollectGoodsTask: {
method: string;
handle: string;
defaultParams: {
taskType: string;
};
};
doBrowseGoodsTask: {
method: string;
handle: string;
defaultParams: {
taskType: string;
};
};
doJumpLinkTask: {
method: string;
handle: string;
defaultParams: {
taskType: string;
};
};
doExchangeCreditsTask: {
method: string;
handle: string;
defaultParams: {
taskType: string;
};
};
getVipInfo: {
method: string;
handle: string;
};
};
capiFn: (apiList: any, request: any) => {
receiveObjectPrize(params: any): Promise<boolean>;
getVipInfo(params: any): Promise<any>;
receiveEnamePrize(params: any): Promise<boolean>;
addStat(activityId: string, type: string | number): Promise<boolean>;
};
tb: {};
utils: typeof utils;
request: (header: IRequest) => false | ((handle: any, method: string, params: any, ext?: {
cloudName?: string;
isShowLoading?: boolean;
}) => Promise<unknown>);
constants: typeof constants;
};
export default _default;
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var tb = require("./core/tb");
var tbFn = require("./core/tbFn");
var tbMock = require("./core/tbMock");
var utils = require("./utils");
var constants = require("./constants");
var capi_1 = require("./request/capi");
var capiFn_1 = require("./request/capiFn");
var request_1 = require("./request");
var isH5 = 'undefined' !== typeof window;
// 如果为h5环境走mock数据
var _tb = {};
Object.entries(__assign(__assign({}, tb), tbFn)).forEach(function (_a) {
var key = _a[0], value = _a[1];
_tb[key] = isH5 ? tbMock[key] : value;
});
exports.default = {
capi: capi_1.default,
capiFn: capiFn_1.default,
tb: _tb,
utils: utils,
request: request_1.default,
constants: constants
};
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,8BAAgC;AAChC,kCAAoC;AACpC,sCAAwC;AACxC,+BAAiC;AACjC,uCAAyC;AACzC,uCAAkC;AAClC,2CAAsC;AACtC,qCAAgC;AAChC,IAAM,IAAI,GAAG,WAAW,KAAK,OAAO,MAAM,CAAC;AAE3C,iBAAiB;AACjB,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,MAAM,CAAC,OAAO,uBAAM,EAAE,GAAK,IAAI,EAAG,CAAC,OAAO,CAAC,UAAC,EAAY;QAAX,GAAG,QAAA,EAAE,KAAK,QAAA;IACrD,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,CAAC,CAAC,CAAC;AACH,kBAAe;IACb,IAAI,gBAAA;IACJ,MAAM,kBAAA;IACN,EAAE,EAAE,GAAG;IACP,KAAK,OAAA;IACL,OAAO,mBAAA;IACP,SAAS,WAAA;CACV,CAAA"}
\ No newline at end of file
declare const capi: {
getMyPrizeList: {
method: string;
handle: string;
isShowLoading: boolean;
};
receiveObjectPrize: {
method: string;
handle: string;
};
receiveEnamePrize: {
method: string;
handle: string;
};
getItemListByItemIds: {
method: string;
handle: string;
};
getCollectGoodsList: {
method: string;
handle: string;
};
doCollectGoodsTask: {
method: string;
handle: string;
defaultParams: {
taskType: string;
};
};
doBrowseGoodsTask: {
method: string;
handle: string;
defaultParams: {
taskType: string;
};
};
doJumpLinkTask: {
method: string;
handle: string;
defaultParams: {
taskType: string;
};
};
doExchangeCreditsTask: {
method: string;
handle: string;
defaultParams: {
taskType: string;
};
};
getVipInfo: {
method: string;
handle: string;
};
};
export default capi;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var capi = {
getMyPrizeList: {
method: 'GET',
handle: 'getMyPrizeList',
isShowLoading: true
},
receiveObjectPrize: { method: 'GET', handle: 'receiveObjectPrize' },
receiveEnamePrize: { method: 'GET', handle: 'receiveEnamePrize' },
getItemListByItemIds: { method: 'GET', handle: 'getItemListByItemIds' },
getCollectGoodsList: { method: 'GET', handle: 'getCollectGoodsList' },
doCollectGoodsTask: { method: 'GET', handle: 'doCompleteTask', defaultParams: { taskType: 'collectGoods' } },
doBrowseGoodsTask: { method: 'GET', handle: 'doCompleteTask', defaultParams: { taskType: 'browseGoods' } },
doJumpLinkTask: { method: 'GET', handle: 'doCompleteTask', defaultParams: { taskType: 'jumpLink' } },
doExchangeCreditsTask: { method: 'GET', handle: 'doCompleteTask', defaultParams: { taskType: 'exchangeCredits' } },
getVipInfo: { method: 'GET', handle: 'getVipInfo' }
};
exports.default = capi;
//# sourceMappingURL=capi.js.map
\ No newline at end of file
{"version":3,"file":"capi.js","sourceRoot":"","sources":["../../src/request/capi.ts"],"names":[],"mappings":";;AAAA,IAAM,IAAI,GAAG;IACT,cAAc,EAAE;QACd,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,IAAI;KACpB;IACD,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE;IACnE,iBAAiB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACjE,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE;IACvE,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE;IACrE,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAC,EAAE;IAC3G,iBAAiB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAC,EAAE;IACzG,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAC,EAAE;IACnG,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAC,EAAE;IACjH,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;CACpD,CAAC;AAEF,kBAAe,IAAI,CAAC"}
\ No newline at end of file
declare const capiFn: (apiList: any, request: any) => {
receiveObjectPrize(params: any): Promise<boolean>;
getVipInfo(params: any): Promise<any>;
receiveEnamePrize(params: any): Promise<boolean>;
addStat(activityId: string, type: number | string): Promise<boolean>;
};
export default capiFn;
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var tb_1 = require("../core/tb");
var tbFn_1 = require("../core/tbFn");
var utils_1 = require("../utils");
// 通用API封装方法
var capiFn = function (apiList, request) {
return {
receiveObjectPrize: function (params) {
return __awaiter(this, void 0, void 0, function () {
var _a, handle, method, ext, userAddress, _b, name, telNumber, provinceName, cityName, cityCode, countyName, detailInfo, streetName;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_a = utils_1.getRequestParams(apiList['receiveObjectPrize']), handle = _a.handle, method = _a.method, ext = _a.ext;
return [4 /*yield*/, tbFn_1.getUserAddress().catch(function (err) {
tb_1.commonToast(err.errorMessage);
})];
case 1:
userAddress = _c.sent();
if (!userAddress)
return [2 /*return*/, false];
_b = userAddress || {}, name = _b.name, telNumber = _b.telNumber, provinceName = _b.provinceName, cityName = _b.cityName, cityCode = _b.cityCode, countyName = _b.countyName, detailInfo = _b.detailInfo, streetName = _b.streetName;
params = __assign({ name: name, phone: telNumber, addressDetail: detailInfo, cityCode: cityCode, city: cityName, province: provinceName, area: countyName, streetName: streetName }, params);
return [4 /*yield*/, tb_1.commonConfirm('提示', '确认使用该收货地址:' + name + telNumber + userAddress.duibaAddress.address, function () {
return __awaiter(this, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, request(handle, method, params, ext).catch(function (res) {
tb_1.commonToast(res && res.message);
})];
case 1:
result = _a.sent();
if (result && result.success) {
return [2 /*return*/, true];
}
return [2 /*return*/];
}
});
});
})];
case 2:
_c.sent();
return [2 /*return*/, false];
}
});
});
},
getVipInfo: function (params) {
return __awaiter(this, void 0, void 0, function () {
var _a, handle, method, ext, result, isVip;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = utils_1.getRequestParams(apiList['getVipInfo']), handle = _a.handle, method = _a.method, ext = _a.ext;
return [4 /*yield*/, request(handle, method, params, ext).catch(function (res) {
tb_1.commonToast(res && res.message);
})];
case 1:
result = _b.sent();
if (result && result.success) {
isVip = result.data.isVip;
return [2 /*return*/, isVip];
}
return [2 /*return*/, false];
}
});
});
},
receiveEnamePrize: function (params) {
return __awaiter(this, void 0, void 0, function () {
var _a, handle, method, ext, result;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = utils_1.getRequestParams(apiList['receiveEnamePrize']), handle = _a.handle, method = _a.method, ext = _a.ext;
return [4 /*yield*/, request(handle, method, params, ext).catch(function (res) {
tb_1.commonToast(res && res.message);
})];
case 1:
result = _b.sent();
if (result && result.success) {
return [2 /*return*/, true];
}
return [2 /*return*/, false];
}
});
});
},
addStat: function (activityId, type) {
return __awaiter(this, void 0, void 0, function () {
var _a, handle, method, ext, result;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = utils_1.getRequestParams(apiList['addStat']), handle = _a.handle, method = _a.method, ext = _a.ext;
return [4 /*yield*/, request(handle, method, {
activityId: activityId,
type: type
}, ext).catch(function (res) {
tb_1.commonToast(res && res.message);
})];
case 1:
result = _b.sent();
if (result && result.success) {
return [2 /*return*/, true];
}
return [2 /*return*/, false];
}
});
});
},
};
};
exports.default = capiFn;
//# sourceMappingURL=capiFn.js.map
\ No newline at end of file
{"version":3,"file":"capiFn.js","sourceRoot":"","sources":["../../src/request/capiFn.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
/**
* 接口请求封装
* @param { cloud, cloudName, requestType, mockUrl }
*/
declare const request: (header: IRequest) => false | ((handle: any, method: string, params: any, ext?: {
cloudName?: string;
isShowLoading?: boolean;
}) => Promise<unknown>);
export default request;
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var requestFn_1 = require("../helpers/requestFn");
var helpers_1 = require("../helpers");
/**
* 接口请求封装
* @param { cloud, cloudName, requestType, mockUrl }
*/
var request = function (header) {
var cloud = header.cloud, cloudName = header.cloudName, _a = header.requestType, requestType = _a === void 0 ? 'cloud' : _a, mockUrl = header.mockUrl;
if (!cloud) {
console.error('请传入cloud');
return false;
}
if (!cloudName) {
console.error('请传入云函数名称');
return false;
}
return function (handle, method, params, ext) {
if (method === void 0) { method = 'POST'; }
return __awaiter(void 0, void 0, void 0, function () {
var _a, activityId, tornadoAPI, _b, nickName, _cloudName, _c, isShowLoading, mockUrlPrefix, reqConfig, initConfig, params_;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
_a = getApp(), activityId = _a.activityId, tornadoAPI = _a.tornadoAPI, _b = _a.nickName, nickName = _b === void 0 ? '' : _b;
_cloudName = ext.cloudName || cloudName;
_c = ext.isShowLoading, isShowLoading = _c === void 0 ? false : _c;
mockUrlPrefix = {
ams: 'https://ams.dui88.com/server/index.php?g=Web&c=Mock&o=simple&projectID=218&uri=',
yapi: 'https://docs.dui88.com/mock/140/'
};
reqConfig = { cloudName: _cloudName, handle: handle, method: method, isShowLoading: isShowLoading };
initConfig = { requestType: requestType, tornadoAPI: tornadoAPI, nickName: nickName, mockUrlPrefix: mockUrlPrefix, mockUrl: mockUrl };
params_ = __assign({ activityId: activityId }, params);
if (!['ams', 'yapi', 'tornadoAPI'].includes(requestType)) return [3 /*break*/, 2];
return [4 /*yield*/, requestFn_1.requestMock(reqConfig, initConfig, params_)];
case 1: return [2 /*return*/, _d.sent()];
case 2: return [4 /*yield*/, helpers_1.cloudRequest(cloud, _cloudName, handle, params_, isShowLoading)];
case 3: return [2 /*return*/, _d.sent()];
}
});
});
};
};
exports.default = request;
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAmD;AACnD,sCAA0C;AAC1C;;;GAGG;AACH,IAAM,OAAO,GAAG,UAAC,MAAe;IACpB,IAAA,KAAK,GAAgD,MAAM,MAAtD,EAAE,SAAS,GAAqC,MAAM,UAA3C,EAAE,KAAmC,MAAM,YAApB,EAArB,WAAW,mBAAG,OAAO,KAAA,EAAE,OAAO,GAAK,MAAM,QAAX,CAAW;IACnE,IAAI,CAAC,KAAK,EAAE;QACR,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;KAChB;IACD,IAAI,CAAC,SAAS,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,UAAO,MAAM,EAAE,MAAe,EAAE,MAAM,EAAE,GAAqD;QAA9E,uBAAA,EAAA,eAAe;;;;;;wBAE3B,KAA4C,MAAM,EAAE,EAAlD,UAAU,gBAAA,EAAE,UAAU,gBAAA,EAAE,gBAAa,EAAb,QAAQ,mBAAG,EAAE,KAAA,CAAc;wBACrD,UAAU,GAAG,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;wBACtC,KAA0B,GAAG,cAAR,EAArB,aAAa,mBAAG,KAAK,KAAA,CAAS;wBAChC,aAAa,GAAG;4BAClB,GAAG,EAAE,iFAAiF;4BACtF,IAAI,EAAE,kCAAkC;yBAC3C,CAAC;wBACI,SAAS,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;wBACpE,UAAU,GAAG,EAAE,WAAW,aAAA,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,aAAa,eAAA,EAAE,OAAO,SAAA,EAAE,CAAA;wBAC1E,OAAO,cAAK,UAAU,YAAA,IAAK,MAAM,CAAE,CAAA;6BAEtC,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAnD,wBAAmD;wBAAS,qBAAM,uBAAW,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAA;4BAAxD,sBAAO,SAAiD,EAAC;4BAE1G,qBAAM,sBAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAA;4BAA5E,sBAAO,SAAqE,EAAC;;;;KAChF,CAAA;AACL,CAAC,CAAA;AACD,kBAAe,OAAO,CAAA"}
\ No newline at end of file
/**
* 时间格式化
* @param date 接收可以被new Date()方法转换的内容
* @param format 字符串,需要的格式例如:'yyyy/MM/dd hh:mm:ss'
* @returns {String}
*/
export declare const dateFormatter: (dateTxt: string, format?: string) => string;
/**
* 版本比较
* @param {string} cur 当前版本
* @param {string} compare 比较版本
*/
export declare const versionCompare: (cur: string, compare: string) => boolean;
/**
* 获取request请求所需参数
* @param {object/string} value API项配置
*/
export declare const getRequestParams: (value: any) => {
handle: string;
method: string;
ext: {};
defaultParams?: undefined;
} | {
handle: any;
method: any;
defaultParams: any;
ext: any;
};
/**
* 生成API
* @param {array} apiList API数据数组
* @param {function} request 请求
*/
export declare const generateAPI: (apiList: any, request: any) => {};
/**
* 函数节流,普通防连点
* @param {fun} fun 函数
* @param {delay} delay 时间
*/
export declare const throttleHandle: (fun: (t: any) => any, delay?: number) => () => void;
/**
* 根据fileId获取图片地址
* @param fileId
*/
export declare const getImgShareUrl: (fileId: string | Array<string>) => Promise<any>;
/**
* 根据sellerId判断入会状态
* @param sellerId
*/
export declare const checkMember: (sellerId: number) => Promise<unknown>;
/**
* 毫秒转换成00:00:00格式
* @param ms 毫秒
*/
export declare const formatTimeStamp: (ms: number) => string;
/**
* 活动状态验证
* @param startTime
* @param endTime
* @param noCheck
*/
export declare const validateActivityStatus: (startTime: number, endTime: number, noCheck: boolean) => Promise<unknown>;
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateActivityStatus = exports.formatTimeStamp = exports.checkMember = exports.getImgShareUrl = exports.throttleHandle = exports.generateAPI = exports.getRequestParams = exports.versionCompare = exports.dateFormatter = void 0;
var tb_1 = require("../core/tb");
/**
* 时间格式化
* @param date 接收可以被new Date()方法转换的内容
* @param format 字符串,需要的格式例如:'yyyy/MM/dd hh:mm:ss'
* @returns {String}
*/
exports.dateFormatter = function (dateTxt, format) {
if (format === void 0) { format = 'yyyy/MM/dd'; }
if (!dateTxt)
return '-';
var date = new Date(typeof dateTxt === 'string' && isNaN(+dateTxt) ? dateTxt.replace(/-/g, '/') : dateTxt);
var o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
S: date.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
}
}
return format;
};
/**
* 版本比较
* @param {string} cur 当前版本
* @param {string} compare 比较版本
*/
exports.versionCompare = function (cur, compare) {
var _cur = cur.split('.');
var _compare = compare.split('.');
if (+_cur[0] < +_compare[0]) {
return false;
}
else if (+_cur[0] === +_compare[0] && +_cur[1] < +_compare[1]) {
return false;
}
else if (+_cur[0] === +_compare[0] && +_cur[1] === +_compare[1] && +_cur[2] < +_compare[2]) {
return false;
}
return true;
};
/**
* 获取request请求所需参数
* @param {object/string} value API项配置
*/
exports.getRequestParams = function (value) {
if (typeof value === 'string') {
return {
handle: value,
method: 'POST',
ext: {}
};
}
else if (typeof value === 'object') {
var handle = value.handle, _a = value.method, method = _a === void 0 ? 'POST' : _a, _b = value.defaultParams, defaultParams = _b === void 0 ? {} : _b, ext = __rest(value, ["handle", "method", "defaultParams"]);
return {
handle: handle,
method: method,
defaultParams: defaultParams,
ext: __assign({}, ext)
};
}
else {
console.error('getRequestParams: 传参有误');
}
};
/**
* 生成API
* @param {array} apiList API数据数组
* @param {function} request 请求
*/
exports.generateAPI = function (apiList, request) {
var api = {};
Object.entries(apiList).forEach(function (_a) {
var key = _a[0], value = _a[1];
var _b = exports.getRequestParams(value), handle = _b.handle, method = _b.method, ext = _b.ext, defaultParams = _b.defaultParams;
api[key] = function (params) { return request(handle, method, Object.assign({}, defaultParams, params), ext); };
});
return api;
};
/**
* 函数节流,普通防连点
* @param {fun} fun 函数
* @param {delay} delay 时间
*/
exports.throttleHandle = function (fun, delay) {
if (delay === void 0) { delay = 1000; }
var last, deferTimer;
return function () {
var now = +new Date();
if (last && now < last + delay) {
clearTimeout(deferTimer);
deferTimer = setTimeout(function () {
last = now;
}, delay);
}
else {
last = now;
fun.apply(this, arguments);
}
};
};
/**
* 根据fileId获取图片地址
* @param fileId
*/
exports.getImgShareUrl = function (fileId) { return __awaiter(void 0, void 0, void 0, function () {
var cloud, list;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cloud = getApp().cloud;
return [4 /*yield*/, cloud.file.getTempFileURL({ fileId: fileId })];
case 1:
list = _a.sent();
if (typeof fileId === 'string')
return [2 /*return*/, list && list[0].url];
return [2 /*return*/, list];
}
});
}); };
/**
* 根据sellerId判断入会状态
* @param sellerId
*/
exports.checkMember = function (sellerId) { return __awaiter(void 0, void 0, void 0, function () {
var memberPlugin;
return __generator(this, function (_a) {
memberPlugin = requirePlugin("cemMember");
return [2 /*return*/, new Promise(function (resolve, reject) {
memberPlugin.checkMember({
sellerId: sellerId,
success: function (res) {
var isMember = !!res.data.isMember && res.data.isMember === 'true';
resolve(isMember);
},
fail: function (res) {
reject(res);
}
});
})];
});
}); };
/**
* 毫秒转换成00:00:00格式
* @param ms 毫秒
*/
exports.formatTimeStamp = function (ms) {
var hours = parseInt(String(ms / (1000 * 60 * 60))), minutes = parseInt(String((ms % (1000 * 60 * 60)) / (1000 * 60))), seconds = parseInt(String((ms % (1000 * 60)) / 1000));
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
return hours + ":" + minutes + ":" + seconds;
};
/**
* 活动状态验证
* @param startTime
* @param endTime
* @param noCheck
*/
exports.validateActivityStatus = function (startTime, endTime, noCheck) { return __awaiter(void 0, void 0, void 0, function () {
var nowTime;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, tb_1.getServerTime()];
case 1:
nowTime = _a.sent();
return [2 /*return*/, new Promise(function (resolve, reject) {
if (nowTime < startTime) {
tb_1.commonToast('活动未开始');
resolve(false);
}
else if (nowTime > endTime && !noCheck) {
tb_1.commonToast('活动已结束');
resolve(false);
}
else {
resolve(true);
}
})];
}
});
}); };
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{
"name": "tbcc-sdk-ts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "tsc"
},
"config": {
"notNeedLogin": []
},
"optionalDependencies": {
"@types/lodash": "^4.14.160",
"@types/node": "^14.6.0",
"@typescript-eslint/eslint-plugin": "^3.9.1",
"@typescript-eslint/parser": "^3.9.1",
"eslint": "^7.7.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-prettier": "^3.1.4",
"prettier": "^2.0.5",
"ts-node": "^9.0.0",
"typescript": "^3.9.7"
},
"keywords": [],
"author": "",
"license": "ISC"
}
// 领取奖品状态
export const DRAW_STATUS = {
// 待领取
WAITAWARD: 1,
// 处理中
PROCESSING: 2,
// 领取成功
SUCCESS: 3,
// 领取失败
FAIL: 4,
// 已过期
EXPIRED: 5,
// 重新领取
RETRY: 6
}
// 奖品类型
export const PRIZE_TYPE = {
ENAME: 1,
CREDITS: 2,
OBJECT: 3,
THANKS: 5
};
\ No newline at end of file
import {
promisifyApiSimple,
promisifyApi,
promisifyApiToTb,
AudioModel
} from '../helpers'
/**
* 通用toast
* @param {string} content toast内容
* @param {number} duration 显示时长
* @param {function} successCb 成功回调
*/
export const commonToast = (content: string, duration?: number, successCb?: () => any) => {
promisifyApiSimple('showToast',{
content: content || '换个姿势再试一次~',
duration: duration || 3000,
success: successCb
})
};
/**
* 简易alert
* @param {string} content toast内容
*/
export const simpleAlert = (content: string) => {
promisifyApiSimple('alert',{
content
})
};
/**
* 通用确认弹窗
* @param {string} title 标题
* @param {string} content 内容
* @param {function} successCb 成功回调
*/
export const commonConfirm = async (title = '提示', content: string, successCb?: () => any) => {
promisifyApiSimple('confirm',{
title,
content,
confirmButtonText: '确定',
cancelButtonText: '取消',
success: result => {
const { confirm } = result;
if (confirm) {
successCb && successCb();
}
}
})
};
/**
* 获取系统信息
*/
export const getSystemInfo = async () => {
return await promisifyApi('getSystemInfo', {})
};
/**
* 执行关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
export const favorShop = async (sellerId: number) => {
if (!sellerId) {
return false;
}
let result: { error?: number } = await promisifyApiToTb('favorShop',{ id: +sellerId })
if(result?.error === 11) return false
return result
};
/**
* 判断是否关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
export const checkShopFavoredStatus = async (sellerId: number) => {
if (!sellerId) {
return false;
}
let result: { isFavor?: boolean } = await promisifyApiToTb('checkShopFavoredStatus',{ id: +sellerId })
if(result?.isFavor) return result.isFavor
return result
};
/**
* 跳转到外部链接
* @param {string} url 跳转链接
*/
export const navigateToOutside = url => {
if (!url) {
console.error('navigateToOutside: 请传入url');
return false;
}
promisifyApiSimple('call',{
url
}, 'navigateToOutside')
};
/**
* 跳转到内部链接(新开窗口)
* @param {string} url 跳转链接
*/
export const navigateTo = url => {
if (!url) {
console.error('navigateTo: 请传入url');
return false;
}
promisifyApiSimple('navigateTo',{
url
})
};
/**
* 返回页面
* @param {number} delta
*/
export const navigateBack = (delta?: number) => {
promisifyApiSimple('navigateBack',{
delta
})
};
/**
* 跳转到内部链接(不新开窗口)
* @param {string} url
*/
export const redirectTo = (url: string) => {
if (!url) {
console.error('redirectTo: 请传入url');
return false;
}
promisifyApiSimple('redirectTo',{
url
})
};
/**
* 获取服务器时间
* @returns {number} 服务器时间戳
*/
export const getServerTime = async () => {
const result: { time?: string } = await promisifyApi('getServerTime', {})
if(result?.time) return result.time
return result
};
/**
* 收藏商品
* @param {number} 商品id
* @returns {object} 收藏结果
*/
export const collectGoods = async (id: number) => {
if (!id) {
console.error('collectGoods: 请传入商品id');
return false;
}
let result: { error?: number } = await promisifyApiToTb('collectGoods',{ id: +id })
if(result?.error === 11) return false
return result
};
/**
* 查询商品收藏状态
* @param {number} 商品id
* @returns {boolean} 商品收场状态
*/
export const checkGoodsCollectedStatus = async (id: number) => {
if (!id) {
console.error('checkGoodsCollectedStatus: 请传入商品id');
return false;
}
let result: { isCollect?: boolean } = await promisifyApiToTb('checkGoodsCollectedStatus',{ id: +id })
if(result?.isCollect) return result.isCollect
return result
};
/**
* 跳转到淘宝商品页
* @param {string} itemId 商品ID
*/
export const openDetail = async (itemId: string) => {
if (!itemId) {
console.error('openDetail: 请传入商品id');
return false;
}
return await promisifyApiToTb('openDetail',{ itemId: String(itemId) })
};
/**
* 创建音频实例
* @param {object} opts 配置对象 例 { src: '音频链接', autoplay: false }
*/
export const createAudio = (opts: { src: string, autoplay?: boolean}) => {
const audioInstance = new AudioModel(opts);
return audioInstance;
};
/**
* 获取图片信息
* @param {string} src 图片地址
*/
export const getImageInfo = async (src: string) => {
return await promisifyApi('getImageInfo', { src })
};
/**
* 剪切板
* @param {text: string}
*/
export const setClipboard = async (text: string) => {
return await promisifyApi('setClipboard', { text })
};
/**
* 调起分享面板
*/
export const showSharePanel = async () => {
promisifyApiSimple('showSharePanel',{})
}
/**
* 获取缓存数据
* @param key
*/
export const getStorage = async (key: string) => {
const result: { data?: string} = await promisifyApi('getStorage', { key })
if(result?.data) return result.data
return result
}
/**
* 设置缓存数据
* @param key
* @param value
*/
export const setStorage = async (key: string, value: any) => {
return await promisifyApi('setStorage', { key, data: value })
}
/**
* 清除缓存数据
* @param key
*/
export const removeStorage = async (key: string) => {
return await promisifyApi('removeStorage', { key })
}
/**
* 自定义分析数据的上报接口
* @param eventType
* @param logkey
*/
export const taobaoReportClick = (eventType: string,logkey: string) => {
// @ts-ignore
my.reportAnalytics(eventType, {
// 标志某一类事件,方便数据分析进行分组
'logkey': logkey
})
};
/**
* 打开BC客服聊天
* @param sellerNick
* @param itemId
*/
export const openMessage = async (sellerNick: string, itemId: string) => {
let result = await promisifyApiToTb('openMessage',{ sellerNick, forceH5: false, params: { itemId } })
return result
}
/**
* 显示指定商品 SKU 选择器
* @param itemId
*/
export const showSkuModal = async (itemId: string) => {
let result = await promisifyApiToTb('showSku',{ itemId })
return result
}
/**
* 隐藏正在展示的商品 SKU 选择器
*/
export const hideSkuModal = async () => {
let result = await promisifyApiToTb('hideSku',{})
return result
}
/**
* 跳转订单页
* @param itemId
* @param skuId
* @param quantity
*/
export const confirmCustomOrder = async (itemId: number, skuId?: number, quantity?: number) => {
let result = await promisifyApiToTb('confirmCustomOrder',{
data: {
itemId,
skuId: skuId || -1,
quantity: quantity || 1,
customization: {}
}
})
return result
}
\ No newline at end of file
import {
promisifyApi,
getTmallMemberStatus,
strategyEname
} from '../helpers'
/**
* 获取淘宝用户收货地址
*/
export const getUserAddress = async (opts = {}) => {
let defaults = {
addAddress: 'show',
searchAddress: 'hide',
locateAddress: 'hide',
joinTag: '' // 分割收货地址符号(淘宝商家有特定发货需求)
};
let _opts = Object.assign({}, defaults, opts);
return new Promise((resolve, reject) => {
// @ts-ignore
my.authorize({
scopes: 'scope.addressList',
success: () => {
const { addAddress, searchAddress, locateAddress, joinTag } = _opts;
// @ts-ignore
if (!my.tb.chooseAddress) {
reject({
noSupport: true,
errorMessage: '当前版本不支持选择收货地址,请升级到最新版本'
});
return false;
}
// @ts-ignore
my.tb.chooseAddress(
{
addAddress,
searchAddress,
locateAddress
},
res => {
const { error, provinceName, countyName, cityName, streetName, detailInfo, name, telNumber } = res;
// 如果有error为用户取消操作不做操作
if (error) {
resolve(false);
} else {
resolve({
...res,
duibaAddress: {
name,
phone: telNumber,
address: [provinceName, cityName, countyName, streetName, detailInfo].join(joinTag)
}
});
}
},
res => {
reject(res);
}
);
},
fail: err => {
reject(err)
}
});
});
};
/**
* 选择图片
* @param opts
*/
export const chooseImage = async (opts = {}) => {
let defaults = {
count: 1,
sourceType: ['camera', 'album'],
compressLevel: 1
};
let _opts = Object.assign({}, defaults, opts);
const { count, sourceType, compressLevel } = _opts;
return new Promise((resolve, reject) => {
// @ts-ignore
if (!my.chooseImage) {
reject({
noSupport: true,
errorMessage: '当前版本不支持选择图片,请升级到最新版本'
});
return false;
}
// @ts-ignore
my.chooseImage({
count,
sourceType,
success: res => {
// @ts-ignore
my.compressImage({
apFilePaths: res.apFilePaths,
level: compressLevel,
success: data => {
resolve(data);
},
fail: err => {
resolve(err);
}
});
},
fail: err => {
// error code 2001 为摄像头授权取消、ios 11为用户取消操作不认作失败场景 、安卓 为1
if (err.error !== 2001 && err.error !== 11 && err.error !== 1) {
reject(err);
} else {
resolve(false);
}
}
});
});
};
/**
* 获取图片信息
* @param {*} opts chooseImage配置参数
*/
export const uploadImage = async (opts = {}) => {
// @ts-ignore
const { cloud } = getApp();
if (!cloud) {
console.error('chattingSendCard: 请传入app.cloud');
return false;
}
const chooseImageResult: { apFilePaths?: Array<{}>} = await chooseImage(opts).catch(err => {
console.error('选择图片失败')
});
if (chooseImageResult) {
const { apFilePaths } = chooseImageResult;
const filePath = apFilePaths[0];
const imageInfo: { path?: string } = await promisifyApi('getImageInfo', { src: filePath })
// 找不到图片信息
if (!imageInfo) {
return false;
}
const { path: imagePath } = imageInfo;
const { url } = await cloud.file.uploadFile({
filePath,
fileType: 'image',
fileName: imagePath.split('/').pop()
});
return url;
}
return false;
}
/**
* 获取授权用户信息
* @returns {object} 用户登录信息
*/
export const getAuthUserInfo = () => {
return new Promise((resolve, reject) => {
// @ts-ignore
my.authorize({
scopes: 'scope.userInfo',
success: () => {
// @ts-ignore
my.getAuthUserInfo({
success: userInfo => {
resolve(userInfo);
},
fail: err => {
reject(err);
}
});
},
fail: err => {
reject(err);
}
});
});
};
/**
* 获取用户会员状态(Tmall使用)
*/
export const getUserStatus = async () => {
return new Promise((resolve, reject) => {
// @ts-ignore
my.authorize({
scopes: "scope.campus.audit",
success: async () => {
const result = await getTmallMemberStatus()
resolve(result.result);
},
fail: (err) => {
console.log(err);
reject(err);
},
});
});
}
/**
* 拉菲奖品发放(Tmall使用)
* @param params
*/
export const cloudTBIssue = async (params: { channel: string, strategyCode: string, code: string }) => {
return new Promise((resolve, reject) => {
// @ts-ignore
my.authorize({
scopes: "scope.latourBenefit",
success: async () => {
const result = await strategyEname(params)
console.log(result, "result");
resolve(result);
},
fail: (err) => {
console.log(err);
reject(err);
},
});
});
}
/**
* 分享到群聊卡片
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
export const chattingSendCard = async (requestInfo: IRequestInfo) => {
// @ts-ignore
const { cloud } = getApp();
if (!cloud) {
console.error('chattingSendCard: 请传入app.cloud');
return false;
}
if (!requestInfo) {
console.error('chattingSendCard: 请传入卡片请求参数');
return false;
}
return new Promise((resolve, reject) => {
// @ts-ignore
my.authorize({
scopes: 'scope.groupChat',
success: async () => {
const result = await cloud.topApi
.invoke({
api: 'taobao.chatting.platform.message.sendcard',
data: { request_info: JSON.stringify(requestInfo) }
})
.catch(err => {
reject(err);
});
if (result) {
const { error } = result;
if (error) {
resolve(false);
} else {
resolve(result);
}
}
},
fail: err => {
if (err.error === 11) {
// error code 11 为用户取消操作不认作失败场景
resolve(false);
}
reject(err);
}
});
});
};
/**
* 文本风险校验
* @param {string} text 文本
*/
export const textRiskIdentification = async (text: string) => {
return new Promise((resolve, reject) => {
// @ts-ignore
if (!my.tb.textRiskIdentification) {
reject({
noSupport: true,
errorMessage: '不支持文本校验'
});
}
// @ts-ignore
my.tb.textRiskIdentification({
data:{
text
},
success: res => {
if (res.data && res.data.result) {
const { suggestion }= res.data.result;
if (suggestion === 'pass') {
resolve(true);
}
}
resolve(false);
},
fail: err => {
reject(err)
},
})
})
}
/**
* 跳转店铺首页
* @param {string} shopId
*/
export const navigateToTaobaoPage = (shopId: string) => {
return new Promise((resolve, reject) => {
// @ts-ignore
my.tb.navigateToTaobaoPage({
appCode:'shop',
appParams:{
shopId: String(shopId),
weexShopTab:"shopindexbar",
weexShopSubTab:"shopindex"
},
success: (res) => {
resolve(true)
},
fail: (res) => {
reject(res.error)
}
});
})
}
\ No newline at end of file
/**
* 通用toast
* @param {string} content toast内容
* @param {number} duration 显示时长
* @param {function} successCb 成功回调
*/
export const commonToast = (content, duration = 3000, successCb) => {
return '暂不支持toast';
};
/**
* 简易alert
* @param {string} content toast内容
*/
export const simpleAlert = content => {
alert(content);
};
/**
* 获取授权用户信息
* @returns {object} 用户登录信息
*/
export const getAuthUserInfo = async () => {
return {
nickName: 'nickName',
avatar: '123',
mixNick: '1234'
};
};
/**
* 获取系统信息
* @returns {object} 小程序系统信息
*/
export const getSystemInfo = async () => {
return {
version: '9.5.0'
};
};
/**
* 执行关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
export const favorShop = async sellerId => {
if (!sellerId) {
console.error('favorShop: 请传入卖家Id');
return false;
}
return true;
};
/**
* 判断是否关注店铺
* @param {number} sellerId 店铺归属的卖家Id
* @returns {boolean} 关注状态
*/
export const checkShopFavoredStatus = async sellerId => {
if (!sellerId) {
console.error('checkShopFavoredStatus: 请传入卖家Id');
return false;
}
return true;
};
/**
* 跳转到外部链接
* @param {string} url 跳转链接
*/
export const navigateToOutside = url => {
if (!url) {
console.error('navigateToOutside: 请传入url');
return false;
}
window.location = url;
};
/**
* 跳转到内部链接(新开窗口)
* @param {string} url 跳转链接
*/
export const navigateTo = url => {
if (!url) {
console.error('navigateTo: 请传入url');
return false;
}
window.location = url;
};
/**
* 跳转到内部链接(不新开窗口)
* @param {string} url 跳转链接
*/
export const redirectTo = url => {
if (!url) {
console.error('redirectTo: 请传入url');
return false;
}
// @ts-ignore
window.replace(url);
};
/**
* 获取服务器时间
* @returns {number} 服务器时间戳
*/
export const getServerTime = async () => {
return +new Date();
};
/**
* 收藏商品
* @param {number} 商品id
* @returns {object} 收藏结果
*/
export const collectGoods = async id => {
if (!id) {
console.error('collectGoods: 请传入商品id');
return false;
}
return true;
};
/**
* 查询商品收藏状态
* @param {number} 商品id
* @returns {boolean} 商品收场状态
*/
export const checkGoodsCollectedStatus = async id => {
if (!id) {
console.error('checkGoodsCollectedStatus: 请传入商品id');
return false;
}
return true;
};
/**
* 跳转到淘宝商品页
* @param {string} itemId 商品ID
*/
export const openDetail = async itemId => {
if (!itemId) {
console.error('openDetail: 请传入商品id');
return false;
}
// @ts-ignore
window.location = 'https://item.taobao.com/item.htm?id=' + itemId;
};
/**
* 获取淘宝用户收货地址
*/
export const getUserAddress = async (opts = {}) => {
return {
name: 1,
phone: 1,
address: 123
}
};
/**
* 分享到群聊卡片
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
export const chattingSendCard = async (requestInfo) => {
alert('无法模拟');
return false;
};
/**
* 分享到群聊卡片
* @param {*} cloud 小程序云
* @param {object} requestInfo 分享到群聊卡片所需请求参数
*/
export const textRiskIdentification = async (text) => {
return true;
}
\ No newline at end of file
/**
* 简易API封装
* @param methodName
* @param params
* @param name
*/
export const promisifyApiSimple = (methodName: string, params: IParamJSAPI, name?: string) => {
if(name) {
// @ts-ignore
my[methodName](name,params);
return;
}
// @ts-ignore
my[methodName](params);
}
/**
* 通用API封装
* @param methodName
* @param params
*/
export const promisifyApi = (methodName: string, params = {}) => {
return new Promise((resolve, reject) => {
// @ts-ignore
my[methodName]({
...params,
success: res => {
resolve(res)
},
fail: err => {
reject(err)
}
})
})
}
/**
* 通用API封装
* @param methodName
* @param params
*/
export const promisifyApiToTb = (methodName: string, params = {}) => {
return new Promise((resolve, reject) => {
// @ts-ignore
my.tb[methodName]({
...params,
success: res => {
resolve(res)
},
fail: err => {
reject(err)
}
})
})
}
/**
* 创建音频类
*/
export class AudioModel {
constructor(opts: { src: string }) {
const { src } = opts;
if (!src) {
console.error('请输入音频链接');
return false;
}
try {
// @ts-ignore
const innerAudioContext = my.createInnerAudioContext();
Object.keys(opts).forEach(item => {
innerAudioContext[item] = opts[item];
});
return innerAudioContext;
} catch (e) {
console.error('当前版本不支持音频');
}
}
}
/**
* 获取天猫会员状态
*/
export const getTmallMemberStatus = async () => {
// @ts-ignore
const { cloud } = app;
return (await cloud.topApi.invoke({
api: "tmall.campus.industry.app.audit.query",
data: {
source: "duibajk",
},
}).catch((err) => {
console.log(err);
})) || {};
}
/**
* 拉菲奖品发放
* @param params
*/
export const strategyEname = async (params: { channel: string, strategyCode: string, code: string }) => {
// @ts-ignore
const { cloud } = app;
return (await cloud.topApi.invoke({
api: "alibaba.latour.strategy.issue",
data: {
channel: params.channel || "",
strategy_code: params.strategyCode || "",
selected_benefit_code: params.code || "",
},
}).catch((err) => {
console.log("err", err);
})) || {}
}
/**
* loading
* @param methodName
* @param params
* @param name
*/
export const isLoading = (methodName: string) => {
// @ts-ignore
my[methodName]();
}
/**
* 数据请求
* @param params
* @param loading
*/
export const myRequest = async (params: any, loading: boolean) => {
return new Promise((resolve, reject) => {
// @ts-ignore
my.request(params).then(({ data: res }) => {
console.log(`调用mock接口返回结果`, res)
loading && isLoading('hideLoading')
if (res && res.success) {
resolve(res);
} else {
reject(res);
}
}).catch((e) => {
loading && isLoading('hideLoading')
console.log(e)
reject();
});
})
}
/**
* 云函数接口请求
* @param _cloudName
* @param handle
* @param params
* @param loading
*/
export const cloudRequest = async (cloud: any, _cloudName:string, handle: string, params: any, loading: boolean) => {
return new Promise((resolve, reject) => {
// @ts-ignore
cloud.function.invoke(_cloudName, params, handle).then(res => {
console.log(`调用${handle}接口返回结果`, res)
loading && isLoading('hideLoading')
if (res && res.success) {
resolve(res);
} else {
reject(res);
}
return res;
}).catch(() => {
loading && isLoading('hideLoading')
reject();
});
});
}
\ No newline at end of file
import { getAuthUserInfo } from '../core/tbFn';
import { commonConfirm } from '../core/tb'
import { myRequest } from './index'
const Buffer = require("buffer").Buffer
const crypto = require("crypto")
/**
* 加密
* @param data
*/
export const md5 = (data: any) => {
var buf = new Buffer(data);
var str = buf.toString("binary");
return crypto.createHash("md5").update(str).digest("hex").slice(0, 30);
}
/**
* my.request请求接口
* @param params
* @param res
* @param loading
* @param tornadoAPI
*/
export const tornadoAPICb = async (params: any, res: any, loading: boolean, tornadoAPI: string) => {
const { nickName } = res
params.openId = md5(nickName)
const params_ = {
url: tornadoAPI,
method: 'post',
data: params,
dataType: 'json'
}
return await myRequest(params_, loading)
}
/**
* 请求风池台接口数据
* @param tornadoAPI
* @param nickName
* @param handle
* @param loading
* @param params
*/
export const tornadoAPIFn = async (tornadoAPI: string, nickName: string, handle: string, loading: boolean, params: any) => {
// 处理涉及的三个参数
let matchRes = tornadoAPI.match(/db=(\w*)&proxyIp=([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})/)
let db = matchRes[1]
let proxyIp = matchRes[2]
let data_ = {
handler: handle,
data: params
}
console.log(`data_`, data_)
let params_ = {
db,
proxyIp,
data: data_
}
if (!db || !proxyIp) {
commonConfirm('风驰台地址错误','请确认风驰台的地址是否正确,未查找到db和proxyIp')
return false
}
// nickName 转 md5 作为唯一的openId
if (!nickName) {
return getAuthUserInfo().catch(err => {
console.log('未授权成功', err);
}).then(res=> {
return tornadoAPICb(params_, res, loading, tornadoAPI)
})
}
}
/**
* 请求mock数据
* @param reqConfig
* @param initConfig
* @param params
*/
export const requestMock = async (reqConfig: IReqConfig, initConfig: IInitConfig, params: any) => {
const { cloudName, handle, method, isShowLoading } = reqConfig
const { requestType, tornadoAPI, nickName, mockUrlPrefix, mockUrl } = initConfig
// 若请求的是风驰台的api
if (requestType === 'tornadoAPI') {
return await tornadoAPIFn(tornadoAPI, nickName, handle, isShowLoading, params)
}
const requestPrefix = mockUrl || mockUrlPrefix[requestType];
const params_ = {
url: requestPrefix + cloudName + '.' + handle,
method: 'get',
data: params,
dataType: 'json'
}
return await myRequest(params_, isShowLoading)
}
\ No newline at end of file
import * as tb from './core/tb';
import * as tbFn from './core/tbFn';
import * as tbMock from './core/tbMock';
import * as utils from './utils';
import * as constants from './constants';
import capi from './request/capi';
import capiFn from './request/capiFn';
import request from './request';
const isH5 = 'undefined' !== typeof window;
// 如果为h5环境走mock数据
let _tb = {};
Object.entries({ ...tb, ...tbFn }).forEach(([key, value]) => {
_tb[key] = isH5 ? tbMock[key] : value;
});
export default {
capi,
capiFn,
tb: _tb,
utils,
request,
constants
}
\ No newline at end of file
const capi = {
getMyPrizeList: {
method: 'GET',
handle: 'getMyPrizeList',
isShowLoading: true
},
receiveObjectPrize: { method: 'GET', handle: 'receiveObjectPrize' },
receiveEnamePrize: { method: 'GET', handle: 'receiveEnamePrize' },
getItemListByItemIds: { method: 'GET', handle: 'getItemListByItemIds' },
getCollectGoodsList: { method: 'GET', handle: 'getCollectGoodsList' },
doCollectGoodsTask: { method: 'GET', handle: 'doCompleteTask', defaultParams: { taskType: 'collectGoods'} },
doBrowseGoodsTask: { method: 'GET', handle: 'doCompleteTask', defaultParams: { taskType: 'browseGoods'} },
doJumpLinkTask: { method: 'GET', handle: 'doCompleteTask', defaultParams: { taskType: 'jumpLink'} },
doExchangeCreditsTask: { method: 'GET', handle: 'doCompleteTask', defaultParams: { taskType: 'exchangeCredits'} },
getVipInfo: { method: 'GET', handle: 'getVipInfo' }
};
export default capi;
\ No newline at end of file
import { commonToast, commonConfirm } from '../core/tb';
import { getUserAddress } from '../core/tbFn';
import { getRequestParams } from '../utils';
// 通用API封装方法
const capiFn = (apiList, request) => {
return {
async receiveObjectPrize(params) {
const { handle, method, ext } = getRequestParams(apiList['receiveObjectPrize']);
const userAddress: IAddress = await getUserAddress().catch(err => {
commonToast(err.errorMessage);
});
if(!userAddress) return false
const { name, telNumber, provinceName, cityName, cityCode, countyName, detailInfo, streetName } = userAddress || {};
params = {
name,
phone: telNumber,
addressDetail: detailInfo,
cityCode,
city: cityName,
province: provinceName,
area: countyName,
streetName,
...params
}
await commonConfirm('提示', '确认使用该收货地址:' + name + telNumber + userAddress.duibaAddress.address, async function() {
const result = await request(handle, method, params, ext).catch(res => {
commonToast(res && res.message);
});
if (result && result.success) {
return true;
}
})
return false
},
async getVipInfo(params) {
const { handle, method, ext } = getRequestParams(apiList['getVipInfo']);
const result = await request(handle, method, params, ext).catch(res => {
commonToast(res && res.message);
});
if (result && result.success) {
const { isVip } = result.data
return isVip;
}
return false;
},
async receiveEnamePrize(params) {
const { handle, method, ext } = getRequestParams(apiList['receiveEnamePrize']);
const result = await request(handle, method, params, ext).catch(res => {
commonToast(res && res.message);
});
if (result && result.success) {
return true;
}
return false;
},
async addStat(activityId: string, type: number | string) {
const { handle, method, ext } = getRequestParams(apiList['addStat']);
const result = await request(handle, method, {
activityId,
type
}, ext).catch(res => {
commonToast(res && res.message);
});
if (result && result.success) {
return true;
}
return false;
},
}
};
export default capiFn;
import { requestMock } from '../helpers/requestFn';
import { cloudRequest } from '../helpers';
/**
* 接口请求封装
* @param { cloud, cloudName, requestType, mockUrl }
*/
const request = (header:IRequest) => {
const { cloud, cloudName, requestType = 'cloud', mockUrl } = header
if (!cloud) {
console.error('请传入cloud');
return false;
}
if (!cloudName) {
console.error('请传入云函数名称');
return false;
}
return async (handle, method = 'POST', params, ext?: { cloudName?: string, isShowLoading?: boolean }) => {
// @ts-ignore
const { activityId, tornadoAPI, nickName = '' } = getApp();
const _cloudName = ext.cloudName || cloudName;
const { isShowLoading = false } = ext;
const mockUrlPrefix = {
ams: 'https://ams.dui88.com/server/index.php?g=Web&c=Mock&o=simple&projectID=218&uri=',
yapi: 'https://docs.dui88.com/mock/140/'
};
const reqConfig = { cloudName: _cloudName, handle, method, isShowLoading }
const initConfig = { requestType, tornadoAPI, nickName, mockUrlPrefix, mockUrl }
const params_ = { activityId, ...params }
if(['ams', 'yapi', 'tornadoAPI'].includes(requestType)) return await requestMock(reqConfig, initConfig, params_);
return await cloudRequest(cloud, _cloudName, handle, params_, isShowLoading);
}
}
export default request
\ No newline at end of file
/** @format */
interface IParamJSAPI {
title?: string
content?: string
duration?: number
success?: (t?: any) => any
url?: string
delta?: number
confirmButtonText?: string
cancelButtonText?: string
}
interface IAddress {
name?: string
telNumber?: string
provinceName?: string
cityName?: string
cityCode?:string
countyName?: string
detailInfo?: string
streetName?: string
duibaAddress?: ISubAddress
}
interface ISubAddress {
address: string
}
interface IRequest {
cloud: string
cloudName: string
requestType?: string
mockUrl?: string
}
interface IReqConfig {
cloudName: string
handle: string
method: string
isShowLoading: boolean
}
interface IInitConfig {
requestType: string
tornadoAPI: string
nickName: string
mockUrlPrefix: IMockUrlPrefix
mockUrl: string
}
interface IMockUrlPrefix {
ams: string
yapi: string
}
interface IRequestInfo {
group_id: string
weex_data_json: string
message_id: string
card_template_id: string
app_secret: string
biz_ext_map?: string
app_code?: string
wx_display_name?: string
wx_display_type?: string
target_open_id?: string
at_open_id?: string
target_user_nick?: string
at_user_nick?: string
}
interface ISkuInfo {
status: string
itemId: string
skuId: string
quantity: string
}
\ No newline at end of file
import { commonToast, getServerTime } from '../core/tb';
/**
* 时间格式化
* @param date 接收可以被new Date()方法转换的内容
* @param format 字符串,需要的格式例如:'yyyy/MM/dd hh:mm:ss'
* @returns {String}
*/
export const dateFormatter = (dateTxt: string, format = 'yyyy/MM/dd') => {
if (!dateTxt) return '-';
const date = new Date(
typeof dateTxt === 'string' && isNaN(+dateTxt) ? dateTxt.replace(/-/g, '/') : dateTxt
);
let o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
S: date.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(
RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length)
);
}
for (let k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(
RegExp.$1,
RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return format;
};
/**
* 版本比较
* @param {string} cur 当前版本
* @param {string} compare 比较版本
*/
export const versionCompare = (cur: string, compare: string) => {
const _cur = cur.split('.');
const _compare = compare.split('.');
if (+_cur[0] < +_compare[0]) {
return false;
} else if ( +_cur[0] === +_compare[0] && +_cur[1] < +_compare[1] ) {
return false;
} else if (+_cur[0] === +_compare[0] && +_cur[1] === +_compare[1] && +_cur[2] < +_compare[2]) {
return false;
}
return true;
};
/**
* 获取request请求所需参数
* @param {object/string} value API项配置
*/
export const getRequestParams = (value: any) => {
if (typeof value === 'string') {
return {
handle: value,
method: 'POST',
ext: {}
}
} else if (typeof value === 'object') {
const { handle, method = 'POST', defaultParams = {}, ...ext } = value;
return {
handle,
method,
defaultParams,
ext: { ...ext }
}
} else {
console.error('getRequestParams: 传参有误');
}
};
/**
* 生成API
* @param {array} apiList API数据数组
* @param {function} request 请求
*/
export const generateAPI = (apiList, request) => {
const api = {};
Object.entries(apiList).forEach(([key, value]) => {
const { handle, method, ext, defaultParams } = getRequestParams(value);
api[key] = params => request(handle, method, Object.assign({}, defaultParams, params) , ext);
});
return api;
};
/**
* 函数节流,普通防连点
* @param {fun} fun 函数
* @param {delay} delay 时间
*/
export const throttleHandle = (fun: (t: any) => any, delay: number = 1000) => {
let last: number, deferTimer: any;
return function () {
let now = +new Date();
if (last && now < last + delay) {
clearTimeout(deferTimer);
deferTimer = setTimeout(() => {
last = now;
}, delay);
} else {
last = now;
fun.apply(this, arguments);
}
};
}
/**
* 根据fileId获取图片地址
* @param fileId
*/
export const getImgShareUrl = async (fileId: string | Array<string>) => {
// @ts-ignore
const { cloud } = getApp()
let list = await cloud.file.getTempFileURL({ fileId })
if(typeof fileId === 'string') return list && list[0].url
return list
}
/**
* 根据sellerId判断入会状态
* @param sellerId
*/
export const checkMember = async (sellerId: number) => {
// @ts-ignore
const memberPlugin = requirePlugin("cemMember");
return new Promise((resolve,reject) => {
memberPlugin.checkMember({
sellerId,
success: (res) => {
let isMember = !!res.data.isMember && res.data.isMember === 'true'
resolve(isMember)
},
fail: (res) => {
reject(res)
}
})
})
}
/**
* 毫秒转换成00:00:00格式
* @param ms 毫秒
*/
export const formatTimeStamp = (ms: number) => {
let hours: number | string = parseInt(String(ms / (1000 * 60 * 60))),
minutes: number | string = parseInt(String((ms % (1000 * 60 * 60)) / (1000 * 60))),
seconds: number | string = parseInt(String((ms % (1000 * 60)) / 1000));
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
return `${hours}:${minutes}:${seconds}`
}
/**
* 活动状态验证
* @param startTime
* @param endTime
* @param noCheck
*/
export const validateActivityStatus = async (startTime: number, endTime: number, noCheck: boolean) => {
const nowTime = await getServerTime()
return new Promise((resolve,reject) => {
if(nowTime < startTime ) {
commonToast('活动未开始')
resolve(false)
}
else if(nowTime > endTime && !noCheck) {
commonToast('活动已结束')
resolve(false)
}
else {
resolve(true)
}
})
}
\ No newline at end of file
{
"compileOnSave": true,
"compilerOptions": {
"target": "es5",
"lib": [
"es6", "dom", "es7"
],
"typeRoots": ["./node_modules/@types/", "./src/typings/"],
"outDir": "./lib",
"sourceMap": true,
"module": "commonjs",
"watch": true,
"moduleResolution": "node",
"allowJs": true,
"isolatedModules": false,
"declaration": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"suppressImplicitAnyIndexErrors": true
},
"include": [
"./src/**/*"
],
"exclude": [
"./lib/**/*"
]
}
\ No newline at end of file
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@babel/code-frame@^7.0.0":
version "7.12.13"
resolved "http://npm.dui88.com:80/@babel%2fcode-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
integrity sha1-3PyCa+72XnXFDiHTg319lXmN1lg=
dependencies:
"@babel/highlight" "^7.12.13"
"@babel/helper-validator-identifier@^7.12.11":
version "7.12.11"
resolved "http://npm.dui88.com:80/@babel%2fhelper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
integrity sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=
"@babel/highlight@^7.12.13":
version "7.12.13"
resolved "http://npm.dui88.com:80/@babel%2fhighlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c"
integrity sha1-irU4OT4ANwsmJxsB+gj38n8ueVw=
dependencies:
"@babel/helper-validator-identifier" "^7.12.11"
chalk "^2.0.0"
js-tokens "^4.0.0"
"@eslint/eslintrc@^0.3.0":
version "0.3.0"
resolved "http://npm.dui88.com:80/@eslint%2feslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318"
integrity sha1-1zbWlj1wA7ZRTmMkvsnGAqw0Axg=
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
espree "^7.3.0"
globals "^12.1.0"
ignore "^4.0.6"
import-fresh "^3.2.1"
js-yaml "^3.13.1"
lodash "^4.17.20"
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
"@types/eslint-visitor-keys@^1.0.0":
version "1.0.0"
resolved "http://npm.dui88.com:80/@types%2feslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
integrity sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=
"@types/json-schema@^7.0.3":
version "7.0.7"
resolved "http://npm.dui88.com:80/@types%2fjson-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
integrity sha1-mKmTUWyFnrDVxMjwmDF6nqaNua0=
"@types/lodash@^4.14.160":
version "4.14.168"
resolved "http://npm.dui88.com:80/@types%2flodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
integrity sha1-/iRjLnm3rePxMoka//hsql5c4Ag=
"@types/node@^14.6.0":
version "14.14.25"
resolved "http://npm.dui88.com:80/@types%2fnode/-/node-14.14.25.tgz#15967a7b577ff81383f9b888aa6705d43fbbae93"
integrity sha1-FZZ6e1d/+BOD+biIqmcF1D+7rpM=
"@typescript-eslint/eslint-plugin@^3.9.1":
version "3.10.1"
resolved "http://npm.dui88.com:80/@typescript-eslint%2feslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f"
integrity sha1-fgYTOKE4P1ntwgTGBYmfk9wuLI8=
dependencies:
"@typescript-eslint/experimental-utils" "3.10.1"
debug "^4.1.1"
functional-red-black-tree "^1.0.1"
regexpp "^3.0.0"
semver "^7.3.2"
tsutils "^3.17.1"
"@typescript-eslint/experimental-utils@3.10.1":
version "3.10.1"
resolved "http://npm.dui88.com:80/@typescript-eslint%2fexperimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686"
integrity sha1-4Xn/yBqA68ri6gTgMy+LJRNFpoY=
dependencies:
"@types/json-schema" "^7.0.3"
"@typescript-eslint/types" "3.10.1"
"@typescript-eslint/typescript-estree" "3.10.1"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
"@typescript-eslint/parser@^3.9.1":
version "3.10.1"
resolved "http://npm.dui88.com:80/@typescript-eslint%2fparser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467"
integrity sha1-GIOFjoPotEJifhrG9AiSUhEVVGc=
dependencies:
"@types/eslint-visitor-keys" "^1.0.0"
"@typescript-eslint/experimental-utils" "3.10.1"
"@typescript-eslint/types" "3.10.1"
"@typescript-eslint/typescript-estree" "3.10.1"
eslint-visitor-keys "^1.1.0"
"@typescript-eslint/types@3.10.1":
version "3.10.1"
resolved "http://npm.dui88.com:80/@typescript-eslint%2ftypes/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727"
integrity sha1-HXRj+nwy2KI6tQioA8ov4m51hyc=
"@typescript-eslint/typescript-estree@3.10.1":
version "3.10.1"
resolved "http://npm.dui88.com:80/@typescript-eslint%2ftypescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853"
integrity sha1-/QBhzDit1PrUUTbWVECFafNluFM=
dependencies:
"@typescript-eslint/types" "3.10.1"
"@typescript-eslint/visitor-keys" "3.10.1"
debug "^4.1.1"
glob "^7.1.6"
is-glob "^4.0.1"
lodash "^4.17.15"
semver "^7.3.2"
tsutils "^3.17.1"
"@typescript-eslint/visitor-keys@3.10.1":
version "3.10.1"
resolved "http://npm.dui88.com:80/@typescript-eslint%2fvisitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931"
integrity sha1-zUJ0dz4+tjsuhwrGAidEh+zR6TE=
dependencies:
eslint-visitor-keys "^1.1.0"
acorn-jsx@^5.3.1:
version "5.3.1"
resolved "http://npm.dui88.com:80/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
integrity sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=
acorn@^7.4.0:
version "7.4.1"
resolved "http://npm.dui88.com:80/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=
ajv@^6.10.0, ajv@^6.12.4:
version "6.12.6"
resolved "http://npm.dui88.com:80/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^7.0.2:
version "7.0.4"
resolved "http://npm.dui88.com:80/ajv/-/ajv-7.0.4.tgz#827e5f5ae32f5e5c1637db61f253a112229b5e2f"
integrity sha1-gn5fWuMvXlwWN9th8lOhEiKbXi8=
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"
ansi-colors@^4.1.1:
version "4.1.1"
resolved "http://npm.dui88.com:80/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
integrity sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=
ansi-regex@^5.0.0:
version "5.0.0"
resolved "http://npm.dui88.com:80/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=
ansi-styles@^3.2.1:
version "3.2.1"
resolved "http://npm.dui88.com:80/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=
dependencies:
color-convert "^1.9.0"
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
resolved "http://npm.dui88.com:80/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha1-7dgDYornHATIWuegkG7a00tkiTc=
dependencies:
color-convert "^2.0.1"
arg@^4.1.0:
version "4.1.3"
resolved "http://npm.dui88.com:80/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
integrity sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk=
argparse@^1.0.7:
version "1.0.10"
resolved "http://npm.dui88.com:80/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=
dependencies:
sprintf-js "~1.0.2"
astral-regex@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
integrity sha1-SDFDxWeu7UeFdZwIZXhtx319LjE=
balanced-match@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
brace-expansion@^1.1.7:
version "1.1.11"
resolved "http://npm.dui88.com:80/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
buffer-from@^1.0.0:
version "1.1.1"
resolved "http://npm.dui88.com:80/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=
callsites@^3.0.0:
version "3.1.0"
resolved "http://npm.dui88.com:80/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=
chalk@^2.0.0:
version "2.4.2"
resolved "http://npm.dui88.com:80/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^4.0.0:
version "4.1.0"
resolved "http://npm.dui88.com:80/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
integrity sha1-ThSHCmGNni7dl92DRf2dncMVZGo=
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
color-convert@^1.9.0:
version "1.9.3"
resolved "http://npm.dui88.com:80/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=
dependencies:
color-name "1.1.3"
color-convert@^2.0.1:
version "2.0.1"
resolved "http://npm.dui88.com:80/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=
dependencies:
color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
resolved "http://npm.dui88.com:80/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
color-name@~1.1.4:
version "1.1.4"
resolved "http://npm.dui88.com:80/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
concat-map@0.0.1:
version "0.0.1"
resolved "http://npm.dui88.com:80/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
create-require@^1.1.0:
version "1.1.1"
resolved "http://npm.dui88.com:80/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
integrity sha1-wdfo8eX2z8n/ZfnNNS03NIdWwzM=
cross-spawn@^7.0.2:
version "7.0.3"
resolved "http://npm.dui88.com:80/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha1-9zqFudXUHQRVUcF34ogtSshXKKY=
dependencies:
path-key "^3.1.0"
shebang-command "^2.0.0"
which "^2.0.1"
debug@^4.0.1, debug@^4.1.1:
version "4.3.1"
resolved "http://npm.dui88.com:80/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
integrity sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=
dependencies:
ms "2.1.2"
deep-is@^0.1.3:
version "0.1.3"
resolved "http://npm.dui88.com:80/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
diff@^4.0.1:
version "4.0.2"
resolved "http://npm.dui88.com:80/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha1-YPOuy4nV+uUgwRqhnvwruYKq3n0=
doctrine@^3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
integrity sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=
dependencies:
esutils "^2.0.2"
emoji-regex@^8.0.0:
version "8.0.0"
resolved "http://npm.dui88.com:80/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=
enquirer@^2.3.5:
version "2.3.6"
resolved "http://npm.dui88.com:80/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=
dependencies:
ansi-colors "^4.1.1"
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "http://npm.dui88.com:80/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
eslint-config-prettier@^6.11.0:
version "6.15.0"
resolved "http://npm.dui88.com:80/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
integrity sha1-f5P2y31FqS8VN6cOzAY2bhrG/tk=
dependencies:
get-stdin "^6.0.0"
eslint-plugin-prettier@^3.1.4:
version "3.3.1"
resolved "http://npm.dui88.com:80/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7"
integrity sha1-cHnPoklweJBQEeb4Lo3YRT0Tcbc=
dependencies:
prettier-linter-helpers "^1.0.0"
eslint-scope@^5.0.0, eslint-scope@^5.1.1:
version "5.1.1"
resolved "http://npm.dui88.com:80/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=
dependencies:
esrecurse "^4.3.0"
estraverse "^4.1.1"
eslint-utils@^2.0.0, eslint-utils@^2.1.0:
version "2.1.0"
resolved "http://npm.dui88.com:80/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
integrity sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
version "1.3.0"
resolved "http://npm.dui88.com:80/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=
eslint-visitor-keys@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha1-If3I+82ceVzAMh8FY3AglXUVEag=
eslint@^7.7.0:
version "7.19.0"
resolved "http://npm.dui88.com:80/eslint/-/eslint-7.19.0.tgz#6719621b196b5fad72e43387981314e5d0dc3f41"
integrity sha1-ZxliGxlrX61y5DOHmBMU5dDcP0E=
dependencies:
"@babel/code-frame" "^7.0.0"
"@eslint/eslintrc" "^0.3.0"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.0.1"
doctrine "^3.0.0"
enquirer "^2.3.5"
eslint-scope "^5.1.1"
eslint-utils "^2.1.0"
eslint-visitor-keys "^2.0.0"
espree "^7.3.1"
esquery "^1.2.0"
esutils "^2.0.2"
file-entry-cache "^6.0.0"
functional-red-black-tree "^1.0.1"
glob-parent "^5.0.0"
globals "^12.1.0"
ignore "^4.0.6"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash "^4.17.20"
minimatch "^3.0.4"
natural-compare "^1.4.0"
optionator "^0.9.1"
progress "^2.0.0"
regexpp "^3.1.0"
semver "^7.2.1"
strip-ansi "^6.0.0"
strip-json-comments "^3.1.0"
table "^6.0.4"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
espree@^7.3.0, espree@^7.3.1:
version "7.3.1"
resolved "http://npm.dui88.com:80/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
integrity sha1-8t8zC3Usb1UBn4vYm3ZgA5wbu7Y=
dependencies:
acorn "^7.4.0"
acorn-jsx "^5.3.1"
eslint-visitor-keys "^1.3.0"
esprima@^4.0.0:
version "4.0.1"
resolved "http://npm.dui88.com:80/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=
esquery@^1.2.0:
version "1.4.0"
resolved "http://npm.dui88.com:80/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
integrity sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=
dependencies:
estraverse "^5.1.0"
esrecurse@^4.3.0:
version "4.3.0"
resolved "http://npm.dui88.com:80/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
integrity sha1-eteWTWeauyi+5yzsY3WLHF0smSE=
dependencies:
estraverse "^5.2.0"
estraverse@^4.1.1:
version "4.3.0"
resolved "http://npm.dui88.com:80/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=
estraverse@^5.1.0, estraverse@^5.2.0:
version "5.2.0"
resolved "http://npm.dui88.com:80/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
integrity sha1-MH30JUfmzHMk088DwVXVzbjFOIA=
esutils@^2.0.2:
version "2.0.3"
resolved "http://npm.dui88.com:80/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=
fast-deep-equal@^3.1.1:
version "3.1.3"
resolved "http://npm.dui88.com:80/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=
fast-diff@^1.1.2:
version "1.2.0"
resolved "http://npm.dui88.com:80/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "http://npm.dui88.com:80/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=
fast-levenshtein@^2.0.6:
version "2.0.6"
resolved "http://npm.dui88.com:80/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
file-entry-cache@^6.0.0:
version "6.0.0"
resolved "http://npm.dui88.com:80/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
integrity sha1-eSGonDkcbZPv7CFprGvzAMUn6go=
dependencies:
flat-cache "^3.0.4"
flat-cache@^3.0.4:
version "3.0.4"
resolved "http://npm.dui88.com:80/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
integrity sha1-YbAzgwKy/p+Vfcwy/CqH8cMEixE=
dependencies:
flatted "^3.1.0"
rimraf "^3.0.2"
flatted@^3.1.0:
version "3.1.1"
resolved "http://npm.dui88.com:80/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
integrity sha1-xLSJ6ACW2d8d/JfHmHGup8YXxGk=
fs.realpath@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "http://npm.dui88.com:80/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
get-stdin@^6.0.0:
version "6.0.0"
resolved "http://npm.dui88.com:80/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
integrity sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=
glob-parent@^5.0.0:
version "5.1.1"
resolved "http://npm.dui88.com:80/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
integrity sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=
dependencies:
is-glob "^4.0.1"
glob@^7.1.3, glob@^7.1.6:
version "7.1.6"
resolved "http://npm.dui88.com:80/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
globals@^12.1.0:
version "12.4.0"
resolved "http://npm.dui88.com:80/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
integrity sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=
dependencies:
type-fest "^0.8.1"
has-flag@^3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
has-flag@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=
ignore@^4.0.6:
version "4.0.6"
resolved "http://npm.dui88.com:80/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "http://npm.dui88.com:80/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha1-NxYsJfy566oublPVtNiM4X2eDCs=
dependencies:
parent-module "^1.0.0"
resolve-from "^4.0.0"
imurmurhash@^0.1.4:
version "0.1.4"
resolved "http://npm.dui88.com:80/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
inflight@^1.0.4:
version "1.0.6"
resolved "http://npm.dui88.com:80/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.4"
resolved "http://npm.dui88.com:80/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
is-extglob@^2.1.1:
version "2.1.1"
resolved "http://npm.dui88.com:80/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=
is-glob@^4.0.0, is-glob@^4.0.1:
version "4.0.1"
resolved "http://npm.dui88.com:80/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
integrity sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=
dependencies:
is-extglob "^2.1.1"
isexe@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
js-tokens@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk=
js-yaml@^3.13.1:
version "3.14.1"
resolved "http://npm.dui88.com:80/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
integrity sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "http://npm.dui88.com:80/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA=
json-schema-traverse@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "http://npm.dui88.com:80/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
levn@^0.4.1:
version "0.4.1"
resolved "http://npm.dui88.com:80/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
integrity sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=
dependencies:
prelude-ls "^1.2.1"
type-check "~0.4.0"
lodash@^4.17.15, lodash@^4.17.20:
version "4.17.20"
resolved "http://npm.dui88.com:80/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=
lru-cache@^6.0.0:
version "6.0.0"
resolved "http://npm.dui88.com:80/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
integrity sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=
dependencies:
yallist "^4.0.0"
make-error@^1.1.1:
version "1.3.6"
resolved "http://npm.dui88.com:80/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=
minimatch@^3.0.4:
version "3.0.4"
resolved "http://npm.dui88.com:80/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=
dependencies:
brace-expansion "^1.1.7"
ms@2.1.2:
version "2.1.2"
resolved "http://npm.dui88.com:80/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=
natural-compare@^1.4.0:
version "1.4.0"
resolved "http://npm.dui88.com:80/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
once@^1.3.0:
version "1.4.0"
resolved "http://npm.dui88.com:80/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
optionator@^0.9.1:
version "0.9.1"
resolved "http://npm.dui88.com:80/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
integrity sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=
dependencies:
deep-is "^0.1.3"
fast-levenshtein "^2.0.6"
levn "^0.4.1"
prelude-ls "^1.2.1"
type-check "^0.4.0"
word-wrap "^1.2.3"
parent-module@^1.0.0:
version "1.0.1"
resolved "http://npm.dui88.com:80/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
integrity sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=
dependencies:
callsites "^3.0.0"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "http://npm.dui88.com:80/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
path-key@^3.1.0:
version "3.1.1"
resolved "http://npm.dui88.com:80/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=
prelude-ls@^1.2.1:
version "1.2.1"
resolved "http://npm.dui88.com:80/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=
prettier-linter-helpers@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
integrity sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=
dependencies:
fast-diff "^1.1.2"
prettier@^2.0.5:
version "2.2.1"
resolved "http://npm.dui88.com:80/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
integrity sha1-eVoaeN1S8HPaDNQrIfnJE4GSP/U=
progress@^2.0.0:
version "2.0.3"
resolved "http://npm.dui88.com:80/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=
punycode@^2.1.0:
version "2.1.1"
resolved "http://npm.dui88.com:80/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew=
regexpp@^3.0.0, regexpp@^3.1.0:
version "3.1.0"
resolved "http://npm.dui88.com:80/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
integrity sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=
require-from-string@^2.0.2:
version "2.0.2"
resolved "http://npm.dui88.com:80/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=
resolve-from@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=
rimraf@^3.0.2:
version "3.0.2"
resolved "http://npm.dui88.com:80/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=
dependencies:
glob "^7.1.3"
semver@^7.2.1, semver@^7.3.2:
version "7.3.4"
resolved "http://npm.dui88.com:80/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
integrity sha1-J6qn0uTKdkUvmNOt0JOnLJQ+3Jc=
dependencies:
lru-cache "^6.0.0"
shebang-command@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
integrity sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=
dependencies:
shebang-regex "^3.0.0"
shebang-regex@^3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=
slice-ansi@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
integrity sha1-UA6N0P1VsFgVCGJVsxla3ypF/ms=
dependencies:
ansi-styles "^4.0.0"
astral-regex "^2.0.0"
is-fullwidth-code-point "^3.0.0"
source-map-support@^0.5.17:
version "0.5.19"
resolved "http://npm.dui88.com:80/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
integrity sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0:
version "0.6.1"
resolved "http://npm.dui88.com:80/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM=
sprintf-js@~1.0.2:
version "1.0.3"
resolved "http://npm.dui88.com:80/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
string-width@^4.2.0:
version "4.2.0"
resolved "http://npm.dui88.com:80/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
integrity sha1-lSGCxGzHssMT0VluYjmSvRY7crU=
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0"
strip-ansi@^6.0.0:
version "6.0.0"
resolved "http://npm.dui88.com:80/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=
dependencies:
ansi-regex "^5.0.0"
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
version "3.1.1"
resolved "http://npm.dui88.com:80/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=
supports-color@^5.3.0:
version "5.5.0"
resolved "http://npm.dui88.com:80/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=
dependencies:
has-flag "^3.0.0"
supports-color@^7.1.0:
version "7.2.0"
resolved "http://npm.dui88.com:80/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=
dependencies:
has-flag "^4.0.0"
table@^6.0.4:
version "6.0.7"
resolved "http://npm.dui88.com:80/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34"
integrity sha1-5FiX/7zBvPnoqHv0IPLJ5aelKjQ=
dependencies:
ajv "^7.0.2"
lodash "^4.17.20"
slice-ansi "^4.0.0"
string-width "^4.2.0"
text-table@^0.2.0:
version "0.2.0"
resolved "http://npm.dui88.com:80/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
ts-node@^9.0.0:
version "9.1.1"
resolved "http://npm.dui88.com:80/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
integrity sha1-UamkUKPpWUAb2l8ASnLVS5NtN20=
dependencies:
arg "^4.1.0"
create-require "^1.1.0"
diff "^4.0.1"
make-error "^1.1.1"
source-map-support "^0.5.17"
yn "3.1.1"
tslib@^1.8.1:
version "1.14.1"
resolved "http://npm.dui88.com:80/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=
tsutils@^3.17.1:
version "3.20.0"
resolved "http://npm.dui88.com:80/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698"
integrity sha1-6gPqRUYuFGtT1wzgiT3kU/8k9pg=
dependencies:
tslib "^1.8.1"
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "http://npm.dui88.com:80/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
integrity sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=
dependencies:
prelude-ls "^1.2.1"
type-fest@^0.8.1:
version "0.8.1"
resolved "http://npm.dui88.com:80/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=
typescript@^3.9.7:
version "3.9.7"
resolved "http://npm.dui88.com:80/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
integrity sha1-mNYApevcOPQMsndSLxLcgA6eJfo=
uri-js@^4.2.2:
version "4.4.1"
resolved "http://npm.dui88.com:80/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
integrity sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=
dependencies:
punycode "^2.1.0"
v8-compile-cache@^2.0.3:
version "2.2.0"
resolved "http://npm.dui88.com:80/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
integrity sha1-lHHvo++RKNL3xqfKOcTda1BVsTI=
which@^2.0.1:
version "2.0.2"
resolved "http://npm.dui88.com:80/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=
dependencies:
isexe "^2.0.0"
word-wrap@^1.2.3:
version "1.2.3"
resolved "http://npm.dui88.com:80/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=
wrappy@1:
version "1.0.2"
resolved "http://npm.dui88.com:80/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
yallist@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=
yn@3.1.1:
version "3.1.1"
resolved "http://npm.dui88.com:80/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha1-HodAGgnXZ8HV6rJqbkwYUYLS61A=
import { getUserAddress, commonToast } from './tb';
import { getUserAddress, commonToast, commonConfirm } from './tb';
import { getRequestParams } from './utils';
// 通用API封装方法
......@@ -9,25 +9,42 @@ const capiFn = (apiList, request) => {
const userAddress = await getUserAddress().catch(err => {
commonToast(err.errorMessage);
});
if (userAddress) {
const { name, phone, address } = userAddress.duibaAddress;
commonConfirm('提示', '确认使用该收货地址:' + name + phone + address, async () => {
params = {
name,
phone,
address,
...params
}
const result = await request(handle, method, params, ext).catch(res => {
commonToast(res && res.message);
});
if (result && result.success) {
return true;
}
if(!userAddress) return false
const { name, telNumber, provinceName, cityName, cityCode, countyName, detailInfo, streetName } = userAddress || {};
params = {
name,
phone: telNumber,
addressDetail: detailInfo,
cityCode,
city: cityName,
province: provinceName,
area: countyName,
streetName,
...params
}
await commonConfirm('提示', '确认使用该收货地址:' + name + telNumber + userAddress.duibaAddress.address, async function() {
const result = await request(handle, method, params, ext).catch(res => {
commonToast(res && res.message);
});
if (result && result.success) {
return true;
}
})
return false
},
async getVipInfo(params) {
const { handle, method, ext } = getRequestParams(apiList['getVipInfo']);
const result = await request(handle, method, params, ext).catch(res => {
commonToast(res && res.message);
});
if (result && result.success) {
const { isVip } = result.data
return isVip;
}
return false;
},
async receiveEnamePrize(params) {
const { handle, method, ext } = getRequestParams(apiList['receiveEnamePrize']);
const result = await request(handle, method, params, ext).catch(res => {
......@@ -37,7 +54,7 @@ const capiFn = (apiList, request) => {
return true;
}
return false;
}
},
}
};
......
......@@ -28,7 +28,7 @@ export const simpleAlert = content => {
* @param {string} content 内容
* @param {function} successCb 成功回调
*/
export const commonConfirm = (title = '提示', content, successCb) => {
export const commonConfirm = async (title = '提示', content, successCb) => {
my.confirm({
title,
content,
......@@ -159,6 +159,13 @@ export const navigateTo = url => {
my.navigateTo({ url });
};
/**
*
* @param {number} delta
*/
export const navigateBack = delta => {
my.navigateBack({ delta });
};
/**
* 跳转到内部链接(不新开窗口)
* @param {string} url 跳转链接
......@@ -245,16 +252,16 @@ export const openDetail = async itemId => {
return false;
}
return new Promise((resolve, reject) => {
my.tb.openDetail({
itemId: itemId + '',
success: res => {
resolve(res);
},
fail: res => {
reject(res);
}
});
});
my.tb.openDetail({
itemId: itemId + '',
success: res => {
resolve(res)
},
fail: err => {
reject(err)
}
})
})
};
/**
......@@ -395,17 +402,7 @@ export const chooseImage = async (opts = {}) => {
* @param {string} src 图片地址
*/
export const getImageInfo = async src => {
return new Promise((resolve, reject) => {
my.getImageInfo({
src,
success: res => {
resolve(res);
},
fail: err => {
reject(err);
}
});
});
return await promisifyMyApi('getImageInfo', { src })
};
/**
......@@ -526,6 +523,51 @@ export const setClipboard = async (params) => {
return await promisifyMyApi('setClipboard', params)
};
// 缓存
export const getStorage = async (key) => {
return new Promise((resolve, reject) => {
my.getStorage({
key,
success: res => {
resolve(res.data)
},
fail: err => {
reject(err)
}
})
})
}
export const setStorage = async (key, value) => {
return await promisifyMyApi('setStorage', { key, data: value })
}
export const removeStorage = async (key) => {
return await promisifyMyApi('removeStorage', { key })
}
/**
* 跳转店铺首页
* @param {string} shopId
*/
export const navigateToTaobaoPage = (shopId) => {
return new Promise((resolve, reject) => {
my.tb.navigateToTaobaoPage({
appCode:'shop',
appParams:{
shopId: String(shopId),
weexShopTab:"shopindexbar",
weexShopSubTab:"shopindex"
},
success: (res) => {
resolve(true)
},
fail: (res) => {
reject(res.error)
}
});
})
}
function promisifyMyApi(methodName, params = {}) {
return new Promise((resolve, reject) => {
......
......@@ -96,20 +96,28 @@ export const generateAPI = (apiList, request) => {
};
/**
* 防连点
* @param {fn} fn 函数
* @param {wait} wait 时间
* 函数节流,普通防连点
* @param {fun} fun 函数
* @param {delay} delay 时间
*/
export const throttleHandle = (fn, wait = 500) => {
let lastTime = 0
return function cb(...args) {
let nowTime = Date.now()
if(nowTime - lastTime > wait) {
fn.call(this,...args)
lastTime = nowTime
export const throttleHandle = (fun, delay = 1000) => {
let last, deferTimer;
return function () {
let now = +new Date();
if (last && now < last + delay) {
clearTimeout(deferTimer);
deferTimer = setTimeout(() => {
last = now;
}, delay);
} else {
last = now;
fun.apply(this, arguments);
}
}
};
}
// 获取分享图地址
export const getImgShareUrl = async (cloud, fileId) => {
let list = await cloud.file.getTempFileURL({ fileId })
return list && list[0].url
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment