@@ -0,0 +1,147 @@ | |||
//app.js | |||
const config = require("./config/config.js"); | |||
const Http = require("./utils/HttpBasics"); | |||
App({ | |||
onLaunch: function (options) { | |||
var that = this; | |||
// 展示本地存储能力 | |||
var logs = wx.getStorageSync('logs') || [] | |||
logs.unshift(Date.now()) | |||
wx.setStorageSync('logs', logs) | |||
/** | |||
* 小程序版本更新 | |||
*/ | |||
that.autoUpdate(); | |||
/** | |||
* 用户登录 | |||
*/ | |||
that.userLogin(options.scene); | |||
}, | |||
//登陆 | |||
userLogin(sceneAddress) { | |||
let that = this; | |||
// 登录 | |||
wx.login({ | |||
success: ({ | |||
code | |||
}) => { | |||
let usrdata = { | |||
appId: config.weapp.AppId, | |||
code: code, | |||
sceneAddress: sceneAddress | |||
} | |||
Http.post({ | |||
url: config.api.login, | |||
data: usrdata | |||
}) | |||
.then(res => { | |||
wx.setStorageSync('openId',res.data.openId) | |||
if (res.data && res.data.score) { | |||
if (res.data.score != 0) { | |||
that.globalData.score = res.data.score; | |||
} | |||
} | |||
Http.setToken(res.data.token); | |||
that.globalData.token = res.data.token; | |||
console.log(that.globalData.token) | |||
if (that.tokenCallback) { | |||
that.tokenCallback(res.data.token); | |||
} | |||
}) | |||
.catch(err => { | |||
console.log(err) | |||
wx.showModal({ | |||
title: '提示', | |||
showCancel: false, | |||
content: '登录失败,请重新尝试', | |||
success: function(res) { | |||
if (res.cancel) { | |||
//点击取消,默认隐藏弹框 | |||
} else { | |||
//点击确定 | |||
wx.reLaunch({ | |||
url: '/pages/index/index', | |||
}) | |||
} | |||
} | |||
}) | |||
}) | |||
} | |||
}) | |||
}, | |||
autoUpdate: function() { | |||
let that = this; | |||
if (wx.canIUse('getUpdateManager')) { | |||
const updateManager = wx.getUpdateManager() | |||
// 1. 检查小程序是否有新版本发布 | |||
updateManager.onCheckForUpdate(function(res) { | |||
// 请求完新版本信息的回调 | |||
if (res.hasUpdate) { | |||
// 检测到新版本,需要更新,给出提示 | |||
wx.showModal({ | |||
title: '更新提示', | |||
content: '检测到新版本,是否下载新版本并重启小程序?', | |||
success: function (res) { | |||
if (res.confirm) { | |||
//2. 用户确定下载更新小程序,小程序下载及更新静默进行 | |||
that.downLoadAndUpdate(updateManager) | |||
} else if (res.cancel) { | |||
//用户点击取消按钮的处理,如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了 | |||
wx.showModal({ | |||
title: '温馨提示~', | |||
content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~', | |||
showCancel: false,//隐藏取消按钮 | |||
confirmText: "确定更新",//只保留确定更新按钮 | |||
success: function (res) { | |||
if (res.confirm) { | |||
//下载新版本,并重新应用 | |||
that.downLoadAndUpdate(updateManager) | |||
} | |||
} | |||
}) | |||
} | |||
} | |||
}) | |||
} | |||
}) | |||
} else { | |||
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 | |||
wx.showModal({ | |||
title: '提示', | |||
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' | |||
}) | |||
} | |||
}, | |||
/** | |||
* 下载小程序新版本并重启应用 | |||
*/ | |||
downLoadAndUpdate: function(updateManager) { | |||
let that = this | |||
wx.showLoading(); | |||
//静默下载更新小程序新版本 | |||
updateManager.onUpdateReady(function() { | |||
wx.hideLoading() | |||
//新的版本已经下载好,调用 applyUpdate 应用新版本并重启 | |||
updateManager.applyUpdate() | |||
}) | |||
updateManager.onUpdateFailed(function() { | |||
// 新的版本下载失败 | |||
wx.showModal({ | |||
title: '已经有新版本了哟~', | |||
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~', | |||
}) | |||
}) | |||
}, | |||
globalData: { | |||
userInfo: null, | |||
score: 0, | |||
token: 0, | |||
} | |||
}) |
@@ -0,0 +1,16 @@ | |||
{ | |||
"pages": [ | |||
"pages/index/index", | |||
"pages/location/location", | |||
"pages/ces", | |||
"pages/ces/ces" | |||
], | |||
"window": { | |||
"backgroundTextStyle": "light", | |||
"navigationBarBackgroundColor": "#fff", | |||
"navigationBarTitleText": "集团版", | |||
"navigationBarTextStyle": "black" | |||
}, | |||
"style": "v2", | |||
"sitemapLocation": "sitemap.json" | |||
} |
@@ -0,0 +1,16 @@ | |||
var config = { | |||
weapp: { | |||
AppId: "wx649b3be73c1afe47", | |||
}, | |||
url: 'https://ctest.malls.iformall.com/C/api', | |||
// url: 'https://ctest.malls.iformall.com/C/api', | |||
api: { | |||
/** | |||
* 接口用途:login | |||
*/ | |||
login: "/user/login", | |||
}, | |||
}; | |||
module.exports = config; |
@@ -0,0 +1,66 @@ | |||
// pages/ces.js | |||
Page({ | |||
/** | |||
* 页面的初始数据 | |||
*/ | |||
data: { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
onLoad: function (options) { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面初次渲染完成 | |||
*/ | |||
onReady: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面显示 | |||
*/ | |||
onShow: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面隐藏 | |||
*/ | |||
onHide: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面卸载 | |||
*/ | |||
onUnload: function () { | |||
}, | |||
/** | |||
* 页面相关事件处理函数--监听用户下拉动作 | |||
*/ | |||
onPullDownRefresh: function () { | |||
}, | |||
/** | |||
* 页面上拉触底事件的处理函数 | |||
*/ | |||
onReachBottom: function () { | |||
}, | |||
/** | |||
* 用户点击右上角分享 | |||
*/ | |||
onShareAppMessage: function () { | |||
} | |||
}) |
@@ -0,0 +1,3 @@ | |||
{ | |||
"usingComponents": {} | |||
} |
@@ -0,0 +1 @@ | |||
/* pages/ces.wxss */ |
@@ -0,0 +1,66 @@ | |||
// pages/ces/ces.js | |||
Page({ | |||
/** | |||
* 页面的初始数据 | |||
*/ | |||
data: { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
onLoad: function (options) { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面初次渲染完成 | |||
*/ | |||
onReady: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面显示 | |||
*/ | |||
onShow: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面隐藏 | |||
*/ | |||
onHide: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面卸载 | |||
*/ | |||
onUnload: function () { | |||
}, | |||
/** | |||
* 页面相关事件处理函数--监听用户下拉动作 | |||
*/ | |||
onPullDownRefresh: function () { | |||
}, | |||
/** | |||
* 页面上拉触底事件的处理函数 | |||
*/ | |||
onReachBottom: function () { | |||
}, | |||
/** | |||
* 用户点击右上角分享 | |||
*/ | |||
onShareAppMessage: function () { | |||
} | |||
}) |
@@ -0,0 +1,3 @@ | |||
{ | |||
"usingComponents": {} | |||
} |
@@ -0,0 +1,2 @@ | |||
<!--pages/ces/ces.wxml--> | |||
<text>pages/ces/ces.wxml</text> |
@@ -0,0 +1 @@ | |||
/* pages/ces/ces.wxss */ |
@@ -0,0 +1,97 @@ | |||
// pages/index/index.js | |||
const Http = require("../../utils/HttpBasics"); | |||
const config = require("../../config/config.js"); | |||
Page({ | |||
/** | |||
* 跳转到其他小程序 | |||
* 接受唯一参数 appId | |||
* */ | |||
goPlaza(event) { | |||
let appid = event.currentTarget.dataset.appid | |||
wx.navigateToMiniProgram({ | |||
appId: appid, | |||
success(res) { | |||
// 打开成功 | |||
} | |||
}) | |||
}, | |||
/** | |||
* 页面的初始数据 | |||
*/ | |||
data: { | |||
plazaAppid: 'wx8e5cab05e850bc91' | |||
}, | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
onLoad: function (options) { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面初次渲染完成 | |||
*/ | |||
onReady: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面显示 | |||
*/ | |||
onShow: function () { | |||
//测试发送请求 | |||
// this.getInfo(); | |||
}, | |||
//获取用户信息 | |||
getInfo() { | |||
Http.post({ | |||
url: config.api.login, | |||
data: { | |||
} | |||
}).then(res => { | |||
console.log(res) | |||
}) | |||
}, | |||
/** | |||
* 生命周期函数--监听页面隐藏 | |||
*/ | |||
onHide: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面卸载 | |||
*/ | |||
onUnload: function () { | |||
}, | |||
/** | |||
* 页面相关事件处理函数--监听用户下拉动作 | |||
*/ | |||
onPullDownRefresh: function () { | |||
}, | |||
/** | |||
* 页面上拉触底事件的处理函数 | |||
*/ | |||
onReachBottom: function () { | |||
}, | |||
/** | |||
* 用户点击右上角分享 | |||
*/ | |||
onShareAppMessage: function () { | |||
} | |||
}) |
@@ -0,0 +1,3 @@ | |||
{ | |||
"usingComponents": {} | |||
} |
@@ -0,0 +1,33 @@ | |||
<view class="Box"> | |||
<view class=" top"> | |||
<view class='userinfo'> | |||
<view class="textBox"> | |||
<view class="nameBox"> | |||
<view class="name">用户昵称</view> | |||
<view class="grade">用户等级</view> | |||
</view> | |||
<view class="myGrow nameBox"> | |||
<view>{{'我的成长值'}}|</view> | |||
<view class="grow">{{"更多成长值"}}</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class='userPortrait'></view> | |||
</view> | |||
<swiper autoplay='true' interval='1000' circular='true'> | |||
<swiper-item class="swiperItem">123</swiper-item> | |||
<swiper-item class="swiperItem">456</swiper-item> | |||
</swiper> | |||
<view class="plazaList" bindtap="goPlaza" data-appid="{{plazaAppid}}"> | |||
<view class="EntranceBox"> | |||
<view class="plazaImg"></view> | |||
<view class="plazaMessage"> | |||
<view class="plazaName">欢乐国际购物城 </view> | |||
<view class="site">广场地址:嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻</view> | |||
<view class="area">总面积:6000M²</view> | |||
<view class="area stall"> 车位数:123</view> | |||
<vide class="area distance">距您:233M</vide> | |||
</view> | |||
</view> | |||
</view> | |||
</view> |
@@ -0,0 +1,87 @@ | |||
/* pages/index/index.wxss */ | |||
.Box { | |||
width: 90%; | |||
margin: 0 5%; | |||
} | |||
.userinfo { | |||
height: 200rpx; | |||
border: 1rpx solid saddlebrown; | |||
position: relative; | |||
margin-top: 60rpx; | |||
border-radius: 10rpx; | |||
margin-bottom: 30rpx; | |||
} | |||
.userPortrait { | |||
position: absolute; | |||
width: 120rpx; | |||
height: 120rpx; | |||
background-color: darkgoldenrod; | |||
border-radius: 50%; | |||
top: 0; | |||
left: 42%; | |||
} | |||
.textBox { | |||
margin: 65rpx 20% 0 20%; | |||
width: 60%; | |||
overflow: hidden; | |||
} | |||
.nameBox{ | |||
overflow: hidden; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.name { | |||
float: left; | |||
} | |||
.grade { | |||
margin-left: 10rpx; | |||
float: left; | |||
background-color: rgb(255, 102, 0); | |||
color: #fff; | |||
border-radius: 10rpx; | |||
border: 1rpx solid #000; | |||
padding: 0 10rpx; | |||
} | |||
.grow{ | |||
color: rgb(255, 130, 0); | |||
} | |||
.swiperItem{ | |||
background-color: red; | |||
} | |||
.plazaList{ | |||
margin-top: 30rpx; | |||
height: 320rpx; | |||
border: 1rpx solid #000; | |||
border-radius: 10rpx; | |||
} | |||
.EntranceBox{ | |||
margin: 20rpx; | |||
overflow: hidden | |||
} | |||
.plazaImg{ | |||
float: left; | |||
width: 300rpx; | |||
height: 270rpx; | |||
background-color: aqua; | |||
} | |||
.plazaMessage{ | |||
float: left; | |||
margin-left: 20rpx; | |||
} | |||
.site{ | |||
width: 300rpx; | |||
font-size: 24rpx; | |||
margin-top: 10rpx ; | |||
height: 40prx; | |||
overflow: hidden | |||
} | |||
.area{ | |||
margin-top: 10rpx ; | |||
font-size: 24rpx; | |||
} |
@@ -0,0 +1,66 @@ | |||
// pages/location/location.js | |||
Page({ | |||
/** | |||
* 页面的初始数据 | |||
*/ | |||
data: { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
onLoad: function (options) { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面初次渲染完成 | |||
*/ | |||
onReady: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面显示 | |||
*/ | |||
onShow: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面隐藏 | |||
*/ | |||
onHide: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面卸载 | |||
*/ | |||
onUnload: function () { | |||
}, | |||
/** | |||
* 页面相关事件处理函数--监听用户下拉动作 | |||
*/ | |||
onPullDownRefresh: function () { | |||
}, | |||
/** | |||
* 页面上拉触底事件的处理函数 | |||
*/ | |||
onReachBottom: function () { | |||
}, | |||
/** | |||
* 用户点击右上角分享 | |||
*/ | |||
onShareAppMessage: function () { | |||
} | |||
}) |
@@ -0,0 +1,3 @@ | |||
{ | |||
"usingComponents": {} | |||
} |
@@ -0,0 +1,21 @@ | |||
<!--pages/location/location.wxml--> | |||
<view class="Box"> | |||
<view class="presentSiteBox"> | |||
<view class="presentText">当前位置 </view> | |||
<view class="gpsBox"> | |||
<view class="city"> 北京市</view> | |||
<view class="gps">GPS定位 </view> | |||
</view> | |||
<view class="wire"> </view> | |||
</view> | |||
<view class="siteText" > 城市广场</view> | |||
<view class="siteBox"> | |||
<view class="plazaName">欢乐国际城</view> | |||
<view class="site">武汉市江夏区佩尔中心 </view> | |||
<view class="distance">1.23Km </view> | |||
</view> | |||
<view class="wire"> </view> | |||
</view> |
@@ -0,0 +1,58 @@ | |||
/* pages/location/location.wxss */ | |||
.Box{ | |||
width: 90%; | |||
margin: 0 5%; | |||
} | |||
.presentSiteBox{ | |||
overflow: hidden; | |||
margin-bottom: 70rpx; | |||
} | |||
.presentText{ | |||
font-size: 24rpx; | |||
color: rgb(153, 153, 153); | |||
overflow: hidden | |||
} | |||
.gpsBox{ | |||
margin-top: 54rpx; | |||
overflow: hidden; | |||
margin-bottom: 20rpx; | |||
} | |||
.city{ | |||
font-size: 40rpx; | |||
float: left | |||
} | |||
.gps{ | |||
float: left; | |||
font-size: 24rpx; | |||
line-height: 60rpx; | |||
color: rgb(153, 153, 153); | |||
margin-left: 40rpx; | |||
} | |||
.siteText{ | |||
font-size: 24rpx; | |||
color: rgb(153, 153, 153); | |||
margin-top: 2rpx; | |||
} | |||
.plazaName{ | |||
margin-top: 60rpx; | |||
font-size: 34rpx; | |||
} | |||
.siteBox{ | |||
margin-bottom: 30rpx; | |||
overflow: hidden | |||
} | |||
.site{ | |||
margin-top: 30rpx; | |||
font-size: 24rpx; | |||
color: rgb(153, 153, 153); | |||
float: left; | |||
} | |||
.distance{ | |||
margin-top: 30rpx; | |||
font-size: 24rpx; | |||
color: rgb(153, 153, 153); | |||
float: right | |||
} | |||
.wire{ | |||
border: 2rpx solid rgb(204, 204, 204) | |||
} |
@@ -0,0 +1,45 @@ | |||
{ | |||
"description": "项目配置文件", | |||
"packOptions": { | |||
"ignore": [] | |||
}, | |||
"setting": { | |||
"urlCheck": true, | |||
"es6": true, | |||
"postcss": true, | |||
"minified": true, | |||
"newFeature": true, | |||
"autoAudits": false, | |||
"coverView": true, | |||
"showShadowRootInWxmlPanel": true, | |||
"scopeDataCheck": false | |||
}, | |||
"compileType": "miniprogram", | |||
"libVersion": "2.12.0", | |||
"appid": "wx649b3be73c1afe47", | |||
"projectname": "C%E7%AB%AF%E9%9B%86%E5%9B%A2%E7%89%88", | |||
"debugOptions": { | |||
"hidedInDevtools": [] | |||
}, | |||
"isGameTourist": false, | |||
"simulatorType": "wechat", | |||
"simulatorPluginLibVersion": {}, | |||
"condition": { | |||
"search": { | |||
"current": -1, | |||
"list": [] | |||
}, | |||
"conversation": { | |||
"current": -1, | |||
"list": [] | |||
}, | |||
"game": { | |||
"currentL": -1, | |||
"list": [] | |||
}, | |||
"miniprogram": { | |||
"current": -1, | |||
"list": [] | |||
} | |||
} | |||
} |
@@ -0,0 +1,7 @@ | |||
{ | |||
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", | |||
"rules": [{ | |||
"action": "allow", | |||
"page": "*" | |||
}] | |||
} |
@@ -0,0 +1,117 @@ | |||
const config = require("../config/config.js"); | |||
class HttpBasics { | |||
constructor(address) { | |||
if (address) { | |||
this.address = address; | |||
} | |||
} | |||
/** | |||
* 配置 | |||
*/ | |||
config = config; | |||
/** | |||
* 请求路径前缀 | |||
*/ | |||
address = config.url; | |||
/** | |||
* 请求头 | |||
*/ | |||
headers = { | |||
"Content-Type": "application/json;charset=UTF-8", | |||
token: "" | |||
}; | |||
/** | |||
* 设置token | |||
* @param {*} token | |||
*/ | |||
setToken(token) { | |||
this.headers.token = token; | |||
} | |||
/** | |||
* 获取数据 | |||
* @param {url,data,headers} param0 | |||
*/ | |||
get({ url, data, headers }) { | |||
headers = { ...this.headers, ...headers }; | |||
url = `${this.address}${url}`; | |||
return new Promise((resolve, reject) => { | |||
wx.request({ | |||
url: url, | |||
header: headers, | |||
data: data, | |||
method: "Get", | |||
success: res => { | |||
this.responseMap(res, resolve, reject); | |||
}, | |||
fail: err => { | |||
console.log(err) | |||
if (err.errMsg == 'request:fail timeout') { | |||
err.errMsg = '请求超时,请检查您的网络设置!' | |||
} else if (err.errMsg == 'request:fail'){ | |||
err.errMsg = '未检查到您的网络,请检查您的网络设置!' | |||
} else if (err.errMsg == 'request:fail request connect error') { | |||
err.errMsg = '连接失败' | |||
} | |||
reject(err); | |||
} | |||
}); | |||
}); | |||
} | |||
/** | |||
* 提交数据 | |||
* @param {url,data,headers} param0 | |||
*/ | |||
post({ url, data, headers }) { | |||
headers = { ...this.headers, ...headers }; | |||
url = `${this.address}${url}`; | |||
return new Promise((resolve, reject) => { | |||
wx.request({ | |||
url: url, | |||
header: headers, | |||
data: data, | |||
method: "POST", | |||
success: res => { | |||
this.responseMap(res, resolve, reject); | |||
}, | |||
fail: err => { | |||
if (err.errMsg == 'request:fail timeout') { | |||
err.errMsg = '请求超时,请检查您的网络设置!' | |||
} else if (err.errMsg == 'request:fail') { | |||
err.errMsg = '未检查到您的网络,请检查您的网络设置!' | |||
} else if (err.errMsg == 'request:fail request connect error') { | |||
err.errMsg = '连接失败' | |||
} | |||
reject(err); | |||
}, | |||
complete: res => {} | |||
}); | |||
}); | |||
} | |||
/** | |||
* 过滤 请求信息 | |||
* @param {*} res | |||
* @param {*} resolve | |||
* @param {*} reject | |||
*/ | |||
responseMap = (res, resolve, reject) => { | |||
// 网络状态码200 | |||
if (res.statusCode == 200) { | |||
// 服务器code 200 成功 | |||
if (res.data.code == 200) { | |||
resolve(res.data); | |||
} else if (res.data.code == 1052) { | |||
wx.reLaunch({ | |||
url: '/pages/index/index' | |||
}) | |||
} else { | |||
reject(res.data); | |||
} | |||
} else { | |||
console.log("请求出错:", res); | |||
reject(res.data); | |||
} | |||
}; | |||
/** 日志 */ | |||
log(url, body, headers) {} | |||
} | |||
module.exports = new HttpBasics(); |
@@ -0,0 +1,206 @@ | |||
var barcode = require("./barcode"); | |||
var qrcode = require("./qrcode"); | |||
const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {} | |||
let imgProxy = extConfig.attr.imgProxy; | |||
function convertUTCTimeToLocalTime(UTCDateString) { | |||
if (!UTCDateString) { | |||
return '-'; | |||
} | |||
function formatFunc(str) { //格式化显示 | |||
return str > 9 ? str : '0' + str | |||
} | |||
var date2 = new Date(UTCDateString); //这步是关键 | |||
var year = date2.getFullYear(); | |||
var mon = formatFunc(date2.getMonth() + 1); | |||
var day = formatFunc(date2.getDate()); | |||
var hour = date2.getHours(); | |||
var noon = hour >= 12 ? 'PM' : 'AM'; | |||
hour = hour >= 24 ? hour - 24 : hour; | |||
hour = formatFunc(hour); | |||
var min = formatFunc(date2.getMinutes()); | |||
var dateStr = ' ' + hour + ':' + min ; | |||
return dateStr; | |||
} | |||
function fmtDate(date) { | |||
var dateee = new Date(date).toJSON(); | |||
return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, ''); | |||
} | |||
const formatTime = (date, fmt) => { | |||
try { | |||
if (!date) { | |||
return date; | |||
} | |||
if (typeof date === 'string' && date.length === 13) { | |||
date = Number(date); | |||
} | |||
if (typeof date == "number") { | |||
date = new Date(date); | |||
} | |||
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(fmt)) | |||
fmt = fmt.replace( | |||
RegExp.$1, | |||
(date.getFullYear() + "").substr(4 - RegExp.$1.length) | |||
); | |||
for (var k in o) | |||
if (new RegExp("(" + k + ")").test(fmt)) | |||
fmt = fmt.replace( | |||
RegExp.$1, | |||
RegExp.$1.length == 1 | |||
? o[k] | |||
: ("00" + o[k]).substr(("" + o[k]).length) | |||
); | |||
return fmt; | |||
} catch (error) { | |||
return date; | |||
} | |||
}; | |||
const formatNumber = n => { | |||
n = n.toString(); | |||
return n[1] ? n : "0" + n; | |||
}; | |||
function convert_length(length) { | |||
return Math.round((wx.getSystemInfoSync().windowWidth * length) / 750); | |||
} | |||
function barc(id, code, width, height) { | |||
barcode.code128( | |||
wx.createCanvasContext(id), | |||
code, | |||
convert_length(width), | |||
convert_length(height) | |||
); | |||
} | |||
function qrc(id, code, width, height) { | |||
qrcode.api.draw(code, { | |||
ctx: wx.createCanvasContext(id), | |||
width: convert_length(width), | |||
height: convert_length(height) | |||
}); | |||
} | |||
function fmtDate(obj) { | |||
if (typeof obj === 'string' && obj.length === 13) { | |||
obj = Number(obj); | |||
} | |||
var date = new Date(obj); | |||
var y = 1900 + date.getYear(); | |||
var m = "0" + (date.getMonth() + 1); | |||
var d = "0" + date.getDate(); | |||
return ( | |||
y + | |||
"-" + | |||
m.substring(m.length - 2, m.length) + | |||
"-" + | |||
d.substring(d.length - 2, d.length) | |||
); | |||
} | |||
//计算下单的时间与现在的时间的 | |||
function timechuo(startTime) { | |||
var s1 = new Date(startTime.replace(/-/g, "/")); | |||
var s2 = new Date(); | |||
var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000); | |||
var year = Math.floor(runTime / 86400 / 365); | |||
var runTime = runTime % (86400 * 365); | |||
var month = Math.floor(runTime / 86400 / 30); | |||
var runTime = runTime % (86400 * 30); | |||
var day = Math.floor(runTime / 86400); | |||
var runTime = runTime % 86400; | |||
var hour = Math.floor(runTime / 3600); | |||
var runTime = runTime % 3600; | |||
var minute = Math.floor(runTime / 60); | |||
var runTime = runTime % 60; | |||
var second = runTime; | |||
if (day && !year && !month){ | |||
return (day + '天' + hour + "小时" + minute + "分钟") | |||
} else if (month && !year){ | |||
return ((month*30+day) +'天' + hour + "小时" + minute + "分钟") | |||
} else if (year) { | |||
return ((year*365 + month*30+ day) + '天' + hour + "小时" + minute + "分钟") | |||
}else{ | |||
return (hour + "小时" + minute + "分钟") | |||
} | |||
} | |||
//计算时间差 | |||
function timecha(endTime,startTime) { | |||
var s1 = new Date(endTime.replace(/-/g, "/")); | |||
var s2 = new Date(startTime.replace(/-/g, "/")); | |||
var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000); | |||
var year = Math.floor(runTime / 86400 / 365); | |||
var runTime = runTime % (86400 * 365); | |||
var month = Math.floor(runTime / 86400 / 30); | |||
var runTime = runTime % (86400 * 30); | |||
var day = Math.floor(runTime / 86400); | |||
var runTime = runTime % 86400; | |||
var hour = Math.floor(runTime / 3600); | |||
var runTime = runTime % 3600; | |||
var minute = Math.floor(runTime / 60); | |||
var runTime = runTime % 60; | |||
var second = runTime; | |||
return (month+"月"+day+"天"+hour+"小时"+minute+"分钟") | |||
} | |||
function isJSON(str) { | |||
if (typeof str == 'string') { | |||
console.log("string") | |||
try { | |||
var obj = JSON.parse(str); | |||
if (typeof obj == 'object' && obj) { | |||
return true; | |||
} else { | |||
return false; | |||
} | |||
} catch (e) { | |||
console.log(e); | |||
wx.showToast({ | |||
title: '请扫描正确的二维码', | |||
icon: 'none', | |||
duration: 1300 | |||
}) | |||
} | |||
} else { | |||
wx.showToast({ | |||
title: '请扫描正确的二维码', | |||
icon: 'none', | |||
duration: 1300 | |||
}) | |||
} | |||
} | |||
function getProxyImgUrl(str) { | |||
let str1 = str; | |||
imgProxy.map(file=>{ | |||
if (str.indexOf(file.orgUrl) == 0) { | |||
str1 = str.replace(file.orgUrl, file.newUrl) | |||
return | |||
} | |||
}) | |||
return str1 | |||
} | |||
module.exports = { | |||
formatTime: formatTime, | |||
barcode: barc, | |||
qrcode: qrc, | |||
isJSON: isJSON, | |||
fmtDate: fmtDate, | |||
timechuo: timechuo, | |||
timecha: timecha, | |||
getProxyImgUrl: getProxyImgUrl, | |||
convertUTCTimeToLocalTime: convertUTCTimeToLocalTime | |||
}; |