diff --git a/app.js b/app.js new file mode 100644 index 0000000..547c939 --- /dev/null +++ b/app.js @@ -0,0 +1,44 @@ +//app.js +App({ + onLaunch: function () { + wx.cloud.init( + { + env:"lwcsjzz-5ggmp946d4da554c" + } + ) + // 展示本地存储能力 + var logs = wx.getStorageSync('logs') || [] + logs.unshift(Date.now()) + wx.setStorageSync('logs', logs) + + // 登录 + wx.login({ + success: res => { + // 发送 res.code 到后台换取 openId, sessionKey, unionId + } + }) + // 获取用户信息 + wx.getSetting({ + success: res => { + if (res.authSetting['scope.userInfo']) { + // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 + wx.getUserInfo({ + success: res => { + // 可以将 res 发送给后台解码出 unionId + this.globalData.userInfo = res.userInfo + + // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 + // 所以此处加入 callback 以防止这种情况 + if (this.userInfoReadyCallback) { + this.userInfoReadyCallback(res) + } + } + }) + } + } + }) + }, + globalData: { + userInfo: null + } +}) \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..8fc2fe4 --- /dev/null +++ b/app.json @@ -0,0 +1,48 @@ +{ + "pages":[ + "pages/me/me", + "pages/map/map", + "pages/index/index", + "pages/logs/logs", + "pages/login/login", + "pages/zhuce/zhuce", + "pages/admin/admin", + "pages/home/home", + "pages/setting/setting", + "pages/mima/mima" + + + ], + + "permission":{ + "scope.userLocation":{ + "desc": "你的位置信息将用于小程序位置接口的效果展示" + } + }, + + "window":{ + "backgroundTextStyle":"light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "云大人脸门禁", + "navigationBarTextStyle":"black" + }, +"tabBar": { + "list": [ + { + "pagePath": "pages/me/me", + "text": "主页", + "iconPath": "photo/home_.png", + "selectedIconPath": "photo/home.png" + }, + { + "pagePath": "pages/map/map", + "text": "地图", + "iconPath": "photo/map_.png", + "selectedIconPath": "photo/map.png" + } +], + "color":"#0094ff" +}, + "style": "v2", + "sitemapLocation": "sitemap.json" +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..f58bfe5 --- /dev/null +++ b/app.wxss @@ -0,0 +1,11 @@ +/**app.wxss**/ +@import 'style/weui.wxss'; +.container { + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + padding: 200rpx 0; + box-sizing: border-box; +} diff --git a/config/appConfig.js b/config/appConfig.js new file mode 100644 index 0000000..8a7c95d --- /dev/null +++ b/config/appConfig.js @@ -0,0 +1,9 @@ +export const CDN_PATH = 'https://3gimg.qq.com/lightmap/xcx/demoCenter/images'; +export const PLUGIN_KEY = 'your key'; +export const MOYUAN_KEY = 'your key'; +export const BAIQIAN_KEY = 'your key'; +export const YULU_KEY = 'your key'; +export const DIFUNI_KEY = 'your key'; +export const INDOOR_KEY = 'your key'; +export const REFERER = '腾讯位置服务示例中心小程序'; +export const WEBSERVICE_APPID = 'wxc1c68623b7bdea7b'; diff --git a/pages/admin/admin.js b/pages/admin/admin.js new file mode 100644 index 0000000..d0596ae --- /dev/null +++ b/pages/admin/admin.js @@ -0,0 +1,54 @@ +// pages/admin/admin.js +const app=getApp(); +const db=wx.cloud.database(); +const _=db.command; +Page({ + //获取学号 + getName(event) { + console.log('获取输入的学号', event.detail.value) + this.setData({ + xuehao: event.detail.value + }) + }, + tijiao() { + let xuehao = this.data.xuehao + console.log("点击了提交") + console.log("xuehao", xuehao) + //校验学号 + if (xuehao.length < 11) { + wx.showToast({ + icon: 'none', + title: '学号只能11位', + }) + return + } + if (xuehao.length > 11) { + wx.showToast({ + icon: 'none', + title: '学号只能11位', + }) + return + } + + + db.collection('user').where({ + xuehao: xuehao + }).get({ + success(res) { + console.log("获取数据成功", res) + let user = res.data[0] + console.log("user", user) + db.collection('user').doc(user._id).update({ + data:{ + admin:1 + } + }) + }, + fail(res) { + console.log("获取数据失败", res) + } + }) + + } + +}) \ No newline at end of file diff --git a/pages/admin/admin.json b/pages/admin/admin.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/admin/admin.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/admin/admin.wxml b/pages/admin/admin.wxml new file mode 100644 index 0000000..6379807 --- /dev/null +++ b/pages/admin/admin.wxml @@ -0,0 +1,3 @@ +输入要赋予开门权限的学生学号 + + \ No newline at end of file diff --git a/pages/admin/admin.wxss b/pages/admin/admin.wxss new file mode 100644 index 0000000..df7f99c --- /dev/null +++ b/pages/admin/admin.wxss @@ -0,0 +1,5 @@ +/* pages/admin/admin.wxss */ +.input{ + border: 1px solid gainsboro; + margin: 15rpx; +} \ No newline at end of file diff --git a/pages/home/home.js b/pages/home/home.js new file mode 100644 index 0000000..457c27d --- /dev/null +++ b/pages/home/home.js @@ -0,0 +1,380 @@ +const config = require('../../utils/config.js'); +// pages/home/home.js +const cfg = require('../../utils/config.js'); +const moment = require('../../utils/moment.min.js'); +const app = getApp() +const db = wx.cloud.database() +const _ = db.command; +Page({ + data: { + isCamera: false, + src: '', + c: '', + a: false + }, + + // 重拍 + reTakePhoto() { + this.setData({ + isCamera: false + }); + }, + + + // 拍照 + takePhoto() { + let that = this; + const ctx = wx.createCameraContext() + let src = this.data.src + ctx.takePhoto({ + quality: 'high', + success: (res) => { + this.setData({ + src: res.tempImagePath, + isCamera: true + }) + + this.init() + }, + fail: function (res) { + wx.showToast({ + title: '拍照错误', + icon: 'none', + duration: 2000 + }); + } + }) + }, + error(e) { + wx.showToast({ + title: '请允许小程序使用摄像头', + icon: 'none', + duration: 2000 + }); + }, + + + // wx.cloud.downloadFile({ + // fileID: user.src, + // success: res => { + // // get temp file path + // that.setData({ + // tempFilePath: res.tempFilePath + // }) + // console.log('res.tempFilePath',res.tempFilePath) + // }, + // fail: err => { + // // handle error + // console.log('图片读取失败') + // wx.showToast({ + // icon: 'none', + // title: '图片读取失败', + // }) + // } + // }) + + + + + shibie() { + let that = this; + let c =this.data.c + + wx.uploadFile({ + url: cfg.BaseURL + '/v1/login', + filePath: c, + name: 'file', + success: function (res) { + console.log('res',res); + var data = JSON.parse(res.data); + if (res.statusCode == 200) { + wx.showToast({ + title: '识别成功', + icon: 'success', + duration: 2000 + }); + this.data({ + a:true + }) + console.log('a',a) + data.face_url = cfg.BaseURL + data.face_url; + } else { + wx.showToast({ + title: '识别失败', + icon: 'none', + duration: 2000 + }); + } + }, + fail: function () { + wx.showToast({ + title: '登录请求错误', + icon: 'none', + duration: 2000 + }); + }, + complete: function () { + wx.hideLoading(); + } + }) +}, + + + + + + + async init() { + + let user = wx.getStorageSync('user') + let that = this; + let src = this.data.src + let c = this.data.c + + // wx.cloud.getTempFileURL({ + + // fileList: [user.src], + // success: res => { + // // get temp file URL + // console.log('res.fileList', res.fileList) + // this.setData({ + // c:res.fileList[0].tempFileURL + // }) + // }, + // fail: err => { + // // handle error + // console.log('err', err) + // } + // }) + + wx.cloud.downloadFile({ + fileID: user.src, + success: res => { + console.log('res.tempFilePath',res.tempFilePath) + this.setData({ + c:res.tempFilePath + }); + }, + fail: err => { + console.log('err',err) + // handle error + } + }) + + + + wx.uploadFile({ + url: cfg.BaseURL + '/v1/user', + filePath: that.data.src, + name: 'file', + formData: { + 'username':parseInt(100*Math.random()), + 'password': user.password + }, + success: function (res) { + console.log('res:',res); + var data = JSON.parse(res.data); + if(res.statusCode == 200){ + wx.showToast({ + title: '人脸添加成功', + icon: 'success', + duration: 2000 + }); + // wx.switchTab({ + // url: '/pages/user/user' + // }) + }else{ + wx.showToast({ + title: '人脸添加失败', + icon: 'none', + duration: 2000 + }); + } + } + }) + + + + + + }, + openBluetooth: function () { + + let user = wx.getStorageSync('user') + + if (user) { + let src = this.data.src + let c = this.data.c + console.log('c', c) + console.log('src', src) + let a = this.data.a + if (a) { + + if (user.admin > 0) { + console.log("开始启动蓝牙"); + wx.openBluetoothAdapter({ + complete() { + console.log("蓝牙启动完成"); + wx.showToast({ + icon: 'loading', + title: '蓝牙启动完成', + }) + }, + success(res) { + console.log("蓝牙启动成功"); + wx.showToast({ + icon: 'loading', + title: '蓝牙启动成功', + }) + console.log(res); + var blueToothCount = 0; + wx.startBluetoothDevicesDiscovery({ + allowDuplicatesKey: false, + success(res) { + console.log("启动蓝牙发现服务"); + console.log(res); + wx.showToast({ + icon: 'loading', + title: '正在搜索门禁', + }) + wx.onBluetoothDeviceFound(function (res) { + var devices = res.devices; + blueToothCount += devices.length; + console.log('new device list has founded,total Count:' + blueToothCount); + console.log(devices); + devices.forEach(element => { + if (element.name.startsWith("door")) { + console.log("实验室门禁蓝牙设备已找到"); + wx.showToast({ + title: '门已打开', + }) + console.log(element); + // 找到实验室门门禁就关闭 + wx.stopBluetoothDevicesDiscovery({ + success(res) { + console.log("关闭蓝牙发现器"); + console.log(res) + } + }); + } + }); + + }); + }, + fail(res) { + console.log("启动发现服务失败"); + console.log(res); + wx.showToast({ + title: '启动发现服务失败', + }) + } + }); + }, + fail(res) { + console.log("蓝牙启动失败"); + console.log(res); + wx.showToast({ + title: '蓝牙启动失败', + }) + } + }); + + } else { + console.log('抱歉您没有权限开门') + wx.showToast({ + title: '抱歉您没有权限开门', + }) + } + }else{ + console.log('人脸不匹配') + wx.showToast({ + icon: 'none', + title: '请先识别匹配的人脸', + }) + } + + + } else { + console.log('请先登录') + wx.showToast({ + icon: 'none', + title: '请先登录', + }) + } + }, + + + + + /** + * 页面的初始数据 + */ + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + this.setData({ + isCamera: false, + userinfo: null + }); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + this.setData({ + isCamera: true + }); + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + }, + wode() { + wx.navigateTo({ + url: '/pages/index/index', + }) + }, + + +}) \ No newline at end of file diff --git a/pages/home/home.json b/pages/home/home.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/home/home.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/home/home.wxml b/pages/home/home.wxml new file mode 100644 index 0000000..b94a60a --- /dev/null +++ b/pages/home/home.wxml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/home/home.wxss b/pages/home/home.wxss new file mode 100644 index 0000000..05f58e3 --- /dev/null +++ b/pages/home/home.wxss @@ -0,0 +1,54 @@ +/* pages/home/home.wxss */ +image{ + width: 100%; +} +.home{ + width: 100vw; + overflow: hidden; + min-height: 100vh; +} + +.home .msg{ + width: 100vw; + height: 38rpx; + font-size: 24rpx; + line-height: 38rpx; + background: #FF6666; + margin-bottom: 20rpx; + color: #333333; + padding-left: 20rpx; +} + +.home .camera,.preview{ + width: 90vw; + margin: 0 auto; +} + +.home .userinfo{ + display: flex; +} + +.home .userinfo .l{ + flex: 2; + padding: 20rpx; + font-size: 28rpx; + line-height: 80rpx; + color: #666666; +} + +.home .userinfo .r{ + flex: 1; + height: 110px; + padding: 20rpx; +} + +.home .bottom{ + width: 100vw; + position: fixed; + bottom: 5vw; +} + +.home .bottom button{ + width: 90vw; + margin: 0 auto; +} \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..29bb22c --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,112 @@ +//index.js +//获取应用实例 +const app = getApp() + +Page({ + data: { + motto: '欢迎使用云大人脸门禁系统', + userInfo: {}, + hasUserInfo: false, + canIUse: wx.canIUse('button.open-type.getUserInfo'), + loginOK: false, + xuehao:'' + + }, + //事件处理函数 + bindViewTap: function() { + wx.navigateTo({ + url: '../logs/logs' + }) + }, + onLoad: function () { + if (app.globalData.userInfo) { + this.setData({ + userInfo: app.globalData.userInfo, + hasUserInfo: true + }) + } else if (this.data.canIUse){ + // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 + // 所以此处加入 callback 以防止这种情况 + app.userInfoReadyCallback = res => { + this.setData({ + userInfo: res.userInfo, + hasUserInfo: true + }) + } + } else { + // 在没有 open-type=getUserInfo 版本的兼容处理 + wx.getUserInfo({ + success: res => { + app.globalData.userInfo = res.userInfo + this.setData({ + userInfo: res.userInfo, + hasUserInfo: true + }) + } + }) + } + }, + getUserInfo: function(e) { + console.log(e) + app.globalData.userInfo = e.detail.userInfo + this.setData({ + userInfo: e.detail.userInfo, + hasUserInfo: true + }) + }, + //去登陆页 +denglu() { + wx.redirectTo({ + url: '/pages/login/login', + }) + }, + //去注册页 + zhuce() { + wx.navigateTo({ + url: '/pages/zhuce/zhuce', + }) + }, + guanli(){ + let user = wx.getStorageSync('user') + if (user.admin == 2){ + wx.redirectTo({ + url: '/pages/admin/admin', + })} + else{ + console.log('抱歉您不是管理员') + wx.showToast({ + icon: 'none', + title: '抱歉您不是管理员或未登录', + }) + } +}, + onShow() { + let user = wx.getStorageSync('user') + if (user && user.xuehao) { + this.setData({ + loginOK: true, + xuehao: user.xuehao + }) + } else { + this.setData({ + loginOK: false + }) + } + }, + + //退出登陆 + tuichu() { + wx.setStorageSync('user', null) + let user = wx.getStorageSync('user') + if (user && user.xuehao) { + this.setData({ + loginOK: true, + xuehao: user.xuehao + }) + } else { + this.setData({ + loginOK: false + }) + } + } +}) diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..cdbbeb2 --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,29 @@ + + + + + + + {{userInfo.nickName}} + + + + + + + + + 登录成功 + + + {{xuehao}} + + + + + + + {{motto}} + + + diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..d969d9b --- /dev/null +++ b/pages/index/index.wxss @@ -0,0 +1,21 @@ +/**index.wxss**/ +.userinfo { + display: flex; + flex-direction: column; + align-items: center; +} + +.userinfo-avatar { + width: 128rpx; + height: 128rpx; + margin: 20rpx; + border-radius: 50%; +} + +.userinfo-nickname { + color: #aaa; +} + +.usermotto { + margin-top: 200px; +} diff --git a/pages/login/login.js b/pages/login/login.js new file mode 100644 index 0000000..23be342 --- /dev/null +++ b/pages/login/login.js @@ -0,0 +1,76 @@ +Page({ + data: { + username: '', + password: '' + }, + //获取输入的账号 + getZhanghao(event) { + //console.log('账号', event.detail.value) + this.setData({ + username: event.detail.value + }) + + }, + //获取输入的密码 + getMima(event) { + // console.log('密码', event.detail.value) + this.setData({ + password: event.detail.value + }) + }, + //点击登陆 + login() { + let username = this.data.username + let password = this.data.password + console.log('账号', username, '密码', password) + // if (zhanghao.length < 4) { + // wx.showToast({ + // icon: 'none', + // title: '账号至少4位', + // }) + // return + // } + // if (mima.length < 4) { + // wx.showToast({ + // icon: 'none', + // title: '账号至少4位', + // }) + // return + // } + + //登陆 + wx.cloud.database().collection('user').where({ + username: username + }).get({ + success(res) { + console.log("获取数据成功", res) + let user = res.data[0] + console.log("user", user) + if (password == user.password) { + console.log('登录成功') + wx.showToast({ + title: '登录成功', + }) + // wx.navigateTo({ + // url: '../home/home?name=' + user.name, + // }) + wx.switchTab({ + url: '/pages/me/me', + }) + //保存用户登陆状态 + wx.setStorageSync('user', user) + } else { + console.log('登陆失败') + wx.showToast({ + icon: 'none', + title: '账号或密码不正确', + }) + } + }, + fail(res) { + console.log("获取数据失败", res) + } + }) + + } + }) \ No newline at end of file diff --git a/pages/login/login.json b/pages/login/login.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/login/login.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/login/login.wxml b/pages/login/login.wxml new file mode 100644 index 0000000..af8aef6 --- /dev/null +++ b/pages/login/login.wxml @@ -0,0 +1,6 @@ + +输入用户名: + +输入密码: + + \ No newline at end of file diff --git a/pages/login/login.wxss b/pages/login/login.wxss new file mode 100644 index 0000000..2c01333 --- /dev/null +++ b/pages/login/login.wxss @@ -0,0 +1,5 @@ +/* pages/login/login.wxss */ +.input{ + border: 1px solid gainsboro; + margin: 20rpx; +} \ No newline at end of file diff --git a/pages/logs/logs.js b/pages/logs/logs.js new file mode 100644 index 0000000..b2b967d --- /dev/null +++ b/pages/logs/logs.js @@ -0,0 +1,15 @@ +//logs.js +const util = require('../../utils/util.js') + +Page({ + data: { + logs: [] + }, + onLoad: function () { + this.setData({ + logs: (wx.getStorageSync('logs') || []).map(log => { + return util.formatTime(new Date(log)) + }) + }) + } +}) diff --git a/pages/logs/logs.json b/pages/logs/logs.json new file mode 100644 index 0000000..3ee76c1 --- /dev/null +++ b/pages/logs/logs.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "查看启动日志", + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/logs/logs.wxml b/pages/logs/logs.wxml new file mode 100644 index 0000000..b5a85ac --- /dev/null +++ b/pages/logs/logs.wxml @@ -0,0 +1,6 @@ + + + + {{index + 1}}. {{log}} + + diff --git a/pages/logs/logs.wxss b/pages/logs/logs.wxss new file mode 100644 index 0000000..94d4b88 --- /dev/null +++ b/pages/logs/logs.wxss @@ -0,0 +1,8 @@ +.log-list { + display: flex; + flex-direction: column; + padding: 40rpx; +} +.log-item { + margin: 10rpx; +} diff --git a/pages/map/map.js b/pages/map/map.js new file mode 100644 index 0000000..7fe6054 --- /dev/null +++ b/pages/map/map.js @@ -0,0 +1,132 @@ +import {CDN_PATH} from '../../config/appConfig'; +const RADIUS = 4; +const INIT_MARKER = { + callout: { + content: '云大信息学院', + padding: 10, + borderRadius: 2, + display: 'ALWAYS' + }, + latitude: 24.824806, + longitude: 102.850957, + iconPath: '/photo/Marker1_Activated@3x.png', + width: '34px', + height: '34px', + rotate: 0, + alpha: 1 +}; +const INIT_CALLOUT = { + content: '云大信息学院', + padding: 12, + display: 'ALWAYS', + fontSize: 14, + textAlign: 'left', + borderRadius: RADIUS, + borderWidth: 2, + bgColor: '#ffffff' +}; +const INIT_CALLOUT_MARKER = { + callout: { + ...INIT_CALLOUT + }, + latitude: 24.824806, + longitude: 102.850957, +}; +Page({ + data: { + markers: [{ + ...INIT_MARKER + }], + calloutMarkers: [{ + ...INIT_CALLOUT_MARKER + }], + longitude:0, + latitude:0 + }, + + /** + * 页面的初始数据 + */ + // data: { + // longitude:0, + // latitude:0 + // }, + bindcontroltap: function(e) { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.timer = options.timer; + wx.getLocation({ + success: (res)=> { + this.setData({ + longitude : res.longitude, + latitude : res.latitude + }) + }, + }) + wx.getSystemInfo({ + success: (res)=> { + this.setData({ + + }) + }, + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + movetoCenter: function () { + this.mapctx.moveToLocation(); + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + this.mapctx = wx.createMapContext("map"); + this.movetoCenter(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/map/map.json b/pages/map/map.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/map/map.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/map/map.wxml b/pages/map/map.wxml new file mode 100644 index 0000000..c1be1e7 --- /dev/null +++ b/pages/map/map.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/pages/map/map.wxss b/pages/map/map.wxss new file mode 100644 index 0000000..7672430 --- /dev/null +++ b/pages/map/map.wxss @@ -0,0 +1,8 @@ +.container{ + height: 100vh; + width: 100%; +} +#map{ + height: 100%; + width: 100%; +} \ No newline at end of file diff --git a/pages/me/me.js b/pages/me/me.js new file mode 100644 index 0000000..ebc70fd --- /dev/null +++ b/pages/me/me.js @@ -0,0 +1,182 @@ +Page({ + data: { + imgUrls: [ + 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3090651753,1191520533&fm=26&gp=0.jpg', + 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=259648009,747507726&fm=26&gp=0.jpg', + 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1604830692855&di=9c567bd091f085d23d321d98183fc57c&imgtype=0&src=http%3A%2F%2Ft1.focus-img.cn%2Fsh740wsh%2Fxf%2Fdt%2Ffe488523-f446-446a-a3de-83de73dfc454.JPEG' + ], + list: ['📣云大人脸门禁系统', '📣祝腾讯小程序大赛圆满举办', '敬请期待'], + indicatorDots: true, + autoplay: true, + interval: 5000, + interval2: 11000, + duration: 1000, + duration2: 2000, + windowHeight: wx.getSystemInfoSync().windowHeight, + windowWidth: wx.getSystemInfoSync().windowWidth, + btnSize: 0, + token: wx.getStorageSync('token'), + status: 2, + latitude: 0, + longitude: 0 + }, + onLoad() { + var that = this; + this.setData({ + btnSize: 0.8 * 0.32 * this.data.windowHeight, + }) + const token = wx.getStorageSync('token') + if (token == '') { + wx.navigateTo({ + url: '../index/index', + }) + } + }, + onShow() { + var that = this; + that.setData({ + token: wx.getStorageSync('token') + }) + }, + onHide: function () { + this.setData({ + status: 2 + }) + }, + + toIndex() { + wx.navigateTo({ + url: '../index/index', + }) + }, + toDenglu() { + wx.navigateTo({ + url: '../login/login', + }) + }, + toAdmin() { + let user = wx.getStorageSync('user') + if (user.admin == 2) { + wx.navigateTo({ + url: '../admin/admin', + + }) + } else { + console.log('抱歉您不是管理员') + wx.showToast({ + icon: 'none', + title: '抱歉您不是管理员或未登录', + }) + } + + }, + toSetting() { + wx.navigateTo({ + url: '../setting/setting', + }) + }, + toHome() { + // 获取当前经纬度 + const that = this; + // 获取当前经纬度 + wx.getLocation({ + type: 'wgs84', + success: (res) => { + var latitude = res.latitude + var longitude = res.longitude + this.setData({ + latitude: latitude, + longitude: longitude + }); + // let latitude = this.data.latitude + // let longitude = this.data.longitude + // 0.00003 1 + console.log(latitude) + console.log(longitude) + let user = wx.getStorageSync('user') + if (user) { + if (((latitude - 24.824806)* (latitude - 24.824806) + (longitude - 102.850957 )* (longitude - 102.850957 )) < 0.00003) { + if (user.admin > 0) { + wx.checkIsSoterEnrolledInDevice({ + checkAuthMode: 'facial', + success(res) { + wx.startSoterAuthentication({ + requestAuthModes: ['facial'], + challenge: '123456', + authContent: '请用人脸解锁', + success(res) { + wx.navigateTo({ + url: '../home/home', + }) + } + }) + }, + fail(res) { + wx.checkIsSoterEnrolledInDevice({ + checkAuthMode: 'fingerPrint', + success(res) { + wx.startSoterAuthentication({ + requestAuthModes: ['fingerPrint'], + challenge: '123456', + authContent: '请用指纹解锁', + success(res) { + wx.navigateTo({ + url: '../home/home', + }) + } + }) + }, + fail(res) { + wx.navigateTo({ + url: '../mima/mima', + }) + + } + }) + } + }) + } else { + console.log('抱歉您没有权限') + wx.showToast({ + icon: 'none', + title: '抱歉您没有权限或未登录', + }) + } + } else { + console.log('距离门禁位置太远,请点击地图,查看并移动到门禁位置附近。') + wx.showToast({ + icon: 'none', + title: '距离门禁位置太远,请点击地图,查看并移动到门禁位置附近。', + }) + } + } else { + console.log('抱歉您没有登录') + wx.showToast({ + icon: 'none', + title: '请先登录', + }) + } + } + }) + + // wx.navigateTo({ + // url: '../home/home', + // }) + } + + // test0(){ + // wx.navigateTo({ + // url: '../user/user', + // }) + // }, + // test1(){ + // wx.navigateTo({ + // url: '../guest/guest', + // }) + // }, + // test2() { + // wx.navigateTo({ + // url: '../entrance/entrance', + // }) + // } +}) \ No newline at end of file diff --git a/pages/me/me.json b/pages/me/me.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/me/me.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/me/me.wxml b/pages/me/me.wxml new file mode 100644 index 0000000..0953f23 --- /dev/null +++ b/pages/me/me.wxml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + YNU AI + 公告 + + + + + + + {{item}} + + + + + + + + + + + + + 我的 + + + + 登录 + + + + + + + 管理 + + + + + 设置 + + + + + + + + + + 开门 + + + + + + \ No newline at end of file diff --git a/pages/me/me.wxss b/pages/me/me.wxss new file mode 100644 index 0000000..89359c2 --- /dev/null +++ b/pages/me/me.wxss @@ -0,0 +1,116 @@ +page { + height: 100%; + width: 100%; +} +.buttons { + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-around; + margin: auto auto; + background-color: #FFFFFF; +} +.button-top{ + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: center; +} +.button-top-left { + width: 290rpx; + height: 290rpx; + background-color: #F2F2F2; + border-radius: 15px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.button-top-right { + width: 290rpx; + height: 290rpx; + background-color: #F2F2F2; + border-radius: 15px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.button-bottom { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: center; +} +.button-bottom-left { + width: 290rpx; + height: 290rpx; + background-color: #F2F2F2; + border-radius: 15px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.button-bottom-right { + width: 290rpx; + height: 290rpx; + background-color: #F2F2F2; + + border-radius: 15px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.button-center{ + background-color: #FFFFFF; + position: relative; + border-radius: 50%; + display: flex; + justify-content: center; + margin: 0 auto; +} +.button-center-inner { + width: 80%; + height: 80%; + background-color: #F2F2F2; + border-radius: 50%; + margin: auto auto; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.index-logo { + width: 86rpx; + height: 86rpx; +} + +/* 公告 */ +.board { + height: 9vh; + width: 100%; + background-color: white; + display: flex; + flex-direction: row; + align-items: center; + border-bottom: 4px solid lightgray; +} +.board-title { + + width: 40%; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center +} +.board text { + font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif; +} +.board-content { + font-size: 25rpx; + flex:1; + height: 100%; + line-height: 100%; +} \ No newline at end of file diff --git a/pages/mima/mima.js b/pages/mima/mima.js new file mode 100644 index 0000000..9071315 --- /dev/null +++ b/pages/mima/mima.js @@ -0,0 +1,30 @@ +// pages/mima/mima.js +Page({ + data: { + Mima: '' + }, + getMima(event) { + console.log('获取输入的密码', event.detail.value) + this.setData({ + Mima: event.detail.value + }) + }, + + tijiao() { + let Mima = this.data.Mima + console.log("Mima", Mima) + if (Mima == "010116") + { + wx.redirectTo({ + url: '../home/home', + }) + }else + { + console.log('密码错误') + wx.showToast({ + icon: 'none', + title: '密码错误', + }) + } + } +}) \ No newline at end of file diff --git a/pages/mima/mima.json b/pages/mima/mima.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/mima/mima.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/mima/mima.wxml b/pages/mima/mima.wxml new file mode 100644 index 0000000..d075f4e --- /dev/null +++ b/pages/mima/mima.wxml @@ -0,0 +1,3 @@ +检测到您的设备不支持人脸或指纹识别,请输入实验室独立密码 + + \ No newline at end of file diff --git a/pages/mima/mima.wxss b/pages/mima/mima.wxss new file mode 100644 index 0000000..1f92593 --- /dev/null +++ b/pages/mima/mima.wxss @@ -0,0 +1,5 @@ +/* pages/mima/mima.wxss */ +.input{ + border: 1px solid gainsboro; + margin: 20rpx; +} \ No newline at end of file diff --git a/pages/setting/setting.js b/pages/setting/setting.js new file mode 100644 index 0000000..15cd5c2 --- /dev/null +++ b/pages/setting/setting.js @@ -0,0 +1,66 @@ +// pages/setting/setting.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/setting/setting.json b/pages/setting/setting.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/setting/setting.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/setting/setting.wxml b/pages/setting/setting.wxml new file mode 100644 index 0000000..d9eeca7 --- /dev/null +++ b/pages/setting/setting.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/pages/setting/setting.wxss b/pages/setting/setting.wxss new file mode 100644 index 0000000..0ca1e85 --- /dev/null +++ b/pages/setting/setting.wxss @@ -0,0 +1 @@ +/* pages/setting/setting.wxss */ \ No newline at end of file diff --git a/pages/zhuce/zhuce.js b/pages/zhuce/zhuce.js new file mode 100644 index 0000000..49b911d --- /dev/null +++ b/pages/zhuce/zhuce.js @@ -0,0 +1,281 @@ +// pages/add/add.js +const cfg = require('../../utils/config.js'); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + isCamera: false, + src: [], + xuehao: '', + username: '', + password: '', + c:'' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + }, + bindInputXuehao(e) { + this.setData({ + xuehao: e.detail.value + }) + }, + + // 用户名输入 + bindInputUser(e) { + this.setData({ + username: e.detail.value + }) + }, + + // 密码输入 + bindInputPwd(e) { + this.setData({ + password: e.detail.value + }) + }, + bindInputadmin(event) { + console.log('获取输入管理员验证码', event.detail.value) + this.setData({ + admin: event.detail.value + }) + }, + + // 保存用户 + addUser(e) { + var that = this; + let username = this.data.username + let password = this.data.password + let xuehao = this.data.xuehao + let admin = this.data.admin + let src = this.data.c + console.log("点击了注册") + console.log("username", username) + console.log("password", password) + console.log("xuehao", xuehao) + console.log("admin", admin) + console.log("src", src) + if (src == '') { + wx.showToast({ + title: '请先拍照', + icon: 'none', + duration: 2000 + }); + return; + } + if (that.data.username == '') { + wx.showToast({ + title: '请输入用户名', + icon: 'none', + duration: 2000 + }); + return; + } + if (xuehao.length < 11) { + wx.showToast({ + icon: 'none', + title: '学号只能11位', + }) + return + } + if (xuehao.length > 11) { + wx.showToast({ + icon: 'none', + title: '学号只能11位', + }) + return + } + //校验管理员权限 + if (admin == "010116") { + admin = 2 + } else { + admin = 0 + } + wx.cloud.database().collection('user').add({ + data: { + username: username, + password: password, + xuehao: xuehao, + admin: admin, + src: src + }, + success(res) { + console.log('注册成功', res) + wx.showToast({ + title: '注册成功', + }); + wx.redirectTo({ + url: '../login/login', + }); + }, + fail(res) { + console.log('注册失败', res) + }, + }); + }, + + // 重拍 + reTakePhoto() { + this.setData({ + isCamera: false + }); + }, + // 上传照片 + uploadImage: function (imgs) { + console.log(imgs) + wx.showLoading({ + title: '上传图片中', + mask: true, + }) + // TODO 照片上传至云存储 + + wx.cloud.uploadFile({ + cloudPath: `photos/${Date.now()}-${Math.floor(Math.random(0,1)*1000)}.png`, + + filePath: imgs, // 文件路径 + success: res => { + + wx.showToast({ + title: '上传图片成功' + }) + console.log('res:', res) + wx.hideLoading(); + // get resource ID + console.log(res.fileID) + this.setData({ + c: res.fileID, + }) + }, + fail: err => { + // handle error + console.log('err:', err) + wx.hideLoading(); + wx.showToast({ + title: '上传图片错误', + icon: 'error' + }) + } + }) + + // const uploadTasks = imgs.map(item => { + // return wx.cloud.uploadFile({ + // cloudPath: `photos/${Date.now()}-${Math.floor(Math.random(0,1)*1000)}.png`, + // filePath: item + // }) + // }); + // Promise.all(uploadTasks).then(result => { + // this.addPhotos(result); + // }).catch(err => { + // wx.hideLoading(); + // wx.showToast({ + // title: '上传图片错误', + // icon: 'error' + // }) + // }) + }, + // 添加图片数据至数据库 + // addPhotos(photos) { + // wx.showLoading({ + // title: '添加图片中', + // mask: true + // }) + // // 构造照片数据结构体,保存到数据库 + // const albumPhotos = photos.map(src => ({ + // fileID: src.fileID, + // comments: '' + // })); + // db.collection('user').doc(app.globalData.id).update({ + // data: { + // src: _.push(albumPhotos) + // } + // }).then(result => { + // console.log(result); + // this.init(); + // }) + // }, + // 拍照 + takePhoto() { + const ctx = wx.createCameraContext() + ctx.takePhoto({ + quality: 'high', + success: (res) => { + console.log('res:', res) + this.setData({ + src: res.tempImagePath, + isCamera: true + }) + this.uploadImage(res.tempImagePath) + }, + fail: function (res) { + wx.showToast({ + title: '拍照错误', + icon: 'none', + duration: 2000 + }); + } + }) + }, + error(e) { + wx.showToast({ + title: '请允许小程序使用摄像头', + icon: 'none', + duration: 2000 + }); + } + +}) \ No newline at end of file diff --git a/pages/zhuce/zhuce.json b/pages/zhuce/zhuce.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/zhuce/zhuce.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/zhuce/zhuce.wxml b/pages/zhuce/zhuce.wxml new file mode 100644 index 0000000..e73ce8d --- /dev/null +++ b/pages/zhuce/zhuce.wxml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +请正对人脸,并保持光线充足 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/zhuce/zhuce.wxss b/pages/zhuce/zhuce.wxss new file mode 100644 index 0000000..a13a11b --- /dev/null +++ b/pages/zhuce/zhuce.wxss @@ -0,0 +1,22 @@ +/* pages/zhuce/zhuce.wxss */ +.add{ + width: 100vw; + min-height: 100vh; +} + +.add .camera,.preview,.btn{ + width: 90vw; + margin: 0 auto; + margin-top: 20rpx; +} + +.add .bottom{ + width: 100vw; + position: fixed; + bottom: 5vw; +} + +.add .bottom button{ + width: 90vw; + margin: 0 auto; +} diff --git a/photo/Marker1_Activated@3x.png b/photo/Marker1_Activated@3x.png new file mode 100644 index 0000000..6b4b554 Binary files /dev/null and b/photo/Marker1_Activated@3x.png differ diff --git a/photo/denglu.png b/photo/denglu.png new file mode 100644 index 0000000..72ff4cf Binary files /dev/null and b/photo/denglu.png differ diff --git a/photo/guanlifuwu.png b/photo/guanlifuwu.png new file mode 100644 index 0000000..9f822b5 Binary files /dev/null and b/photo/guanlifuwu.png differ diff --git a/photo/home.png b/photo/home.png new file mode 100644 index 0000000..bf17564 Binary files /dev/null and b/photo/home.png differ diff --git a/photo/home_.png b/photo/home_.png new file mode 100644 index 0000000..6a034ed Binary files /dev/null and b/photo/home_.png differ diff --git a/photo/kaimen.png b/photo/kaimen.png new file mode 100644 index 0000000..98c96b2 Binary files /dev/null and b/photo/kaimen.png differ diff --git a/photo/location.png b/photo/location.png new file mode 100644 index 0000000..3da849f Binary files /dev/null and b/photo/location.png differ diff --git a/photo/map.png b/photo/map.png new file mode 100644 index 0000000..aab95ed Binary files /dev/null and b/photo/map.png differ diff --git a/photo/map_.png b/photo/map_.png new file mode 100644 index 0000000..c5d8b6f Binary files /dev/null and b/photo/map_.png differ diff --git a/photo/me.png b/photo/me.png new file mode 100644 index 0000000..714fec1 Binary files /dev/null and b/photo/me.png differ diff --git a/photo/me_.png b/photo/me_.png new file mode 100644 index 0000000..3db61b6 Binary files /dev/null and b/photo/me_.png differ diff --git a/photo/photo.png b/photo/photo.png new file mode 100644 index 0000000..49a2b03 Binary files /dev/null and b/photo/photo.png differ diff --git a/photo/shezhi.png b/photo/shezhi.png new file mode 100644 index 0000000..4ef5def Binary files /dev/null and b/photo/shezhi.png differ diff --git a/photo/use.png b/photo/use.png new file mode 100644 index 0000000..03c2f22 Binary files /dev/null and b/photo/use.png differ diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..3f37b51 --- /dev/null +++ b/project.config.json @@ -0,0 +1,70 @@ +{ + "description": "项目配置文件", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": true, + "es6": true, + "enhance": true, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": false, + "coverView": true, + "nodeModules": true, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "useMultiFrameRuntime": false, + "useApiHook": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "useIsolateContext": true, + "useCompilerModule": true, + "userConfirmedUseCompilerModuleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true + }, + "compileType": "miniprogram", + "libVersion": "2.13.2", + "appid": "wxea7382d1e9ad46b2", + "projectname": "2", + "debugOptions": { + "hidedInDevtools": [] + }, + "scripts": {}, + "isGameTourist": false, + "simulatorType": "wechat", + "simulatorPluginLibVersion": {}, + "condition": { + "plugin": { + "list": [] + }, + "game": { + "list": [] + }, + "gamePlugin": { + "list": [] + }, + "miniprogram": { + "list": [ + { + "name": "pages/map/map", + "pathName": "pages/home/home", + "query": "", + "scene": null + } + ] + } + } +} \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..ca02add --- /dev/null +++ b/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/style/base/fn.wxss b/style/base/fn.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/mixin/setArrow.wxss b/style/base/mixin/setArrow.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/mixin/setOnepx.wxss b/style/base/mixin/setOnepx.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/mixin/text.wxss b/style/base/mixin/text.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/reset.wxss b/style/base/reset.wxss new file mode 100644 index 0000000..2b668a9 --- /dev/null +++ b/style/base/reset.wxss @@ -0,0 +1,7 @@ +page { + line-height: 1.6; + font-family: -apple-system-font, "Helvetica Neue", sans-serif; +} +icon { + vertical-align: middle; +} diff --git a/style/base/variable/color.wxss b/style/base/variable/color.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/variable/global.wxss b/style/base/variable/global.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/variable/weui-button.wxss b/style/base/variable/weui-button.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/variable/weui-cell.wxss b/style/base/variable/weui-cell.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/variable/weui-dialog.wxss b/style/base/variable/weui-dialog.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/variable/weui-grid.wxss b/style/base/variable/weui-grid.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/variable/weui-msg.wxss b/style/base/variable/weui-msg.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/base/variable/weui-progress.wxss b/style/base/variable/weui-progress.wxss new file mode 100644 index 0000000..e69de29 diff --git a/style/weui.wxss b/style/weui.wxss new file mode 100644 index 0000000..01e78ed --- /dev/null +++ b/style/weui.wxss @@ -0,0 +1,1040 @@ +page { + line-height: 1.6; + font-family: -apple-system-font, "Helvetica Neue", sans-serif; +} +icon { + vertical-align: middle; +} +.weui-cells { + position: relative; + margin-top: 1.17647059em; + background-color: #FFFFFF; + line-height: 1.41176471; + font-size: 17px; +} +.weui-cells:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-cells:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-cells__title { + margin-top: .77em; + margin-bottom: .3em; + padding-left: 15px; + padding-right: 15px; + color: #999999; + font-size: 14px; +} +.weui-cells_after-title { + margin-top: 0; +} +.weui-cells__tips { + margin-top: .3em; + color: #999999; + padding-left: 15px; + padding-right: 15px; + font-size: 14px; +} +.weui-cell { + padding: 10px 15px; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.weui-cell:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D9D9D9; + color: #D9D9D9; + left: 15px; +} +.weui-cell:first-child:before { + display: none; +} +.weui-cell_active { + background-color: #ECECEC; +} +.weui-cell_primary { + -webkit-box-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; +} +.weui-cell__bd { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; +} +.weui-cell__ft { + text-align: right; + color: #999999; +} +.weui-cell_access { + color: inherit; +} +.weui-cell__ft_in-access { + padding-right: 13px; + position: relative; +} +.weui-cell__ft_in-access:after { + content: " "; + display: inline-block; + height: 6px; + width: 6px; + border-width: 2px 2px 0 0; + border-color: #C8C8CD; + border-style: solid; + -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + position: relative; + top: -2px; + position: absolute; + top: 50%; + margin-top: -4px; + right: 2px; +} +.weui-cell_link { + color: #586C94; + font-size: 14px; +} +.weui-cell_link:active { + background-color: #ECECEC; +} +.weui-cell_link:first-child:before { + display: block; +} +.weui-icon-radio { + margin-left: 3.2px; + margin-right: 3.2px; +} +.weui-icon-checkbox_circle, +.weui-icon-checkbox_success { + margin-left: 4.6px; + margin-right: 4.6px; +} +.weui-check__label:active { + background-color: #ECECEC; +} +.weui-check { + position: absolute; + left: -9999px; +} +.weui-check__hd_in-checkbox { + padding-right: 0.35em; +} +.weui-cell__ft_in-radio { + padding-left: 0.35em; +} +.weui-cell_input { + padding-top: 0; + padding-bottom: 0; +} +.weui-label { + width: 105px; + word-wrap: break-word; + word-break: break-all; +} +.weui-input { + height: 2.58823529em; + min-height: 2.58823529em; + line-height: 2.58823529em; +} +.weui-toptips { + position: fixed; + -webkit-transform: translateZ(0); + transform: translateZ(0); + top: 0; + left: 0; + right: 0; + padding: 5px; + font-size: 14px; + text-align: center; + color: #FFFFFF; + z-index: 5000; + word-wrap: break-word; + word-break: break-all; +} +.weui-toptips_warn { + background-color: #E64340; +} +.weui-textarea { + display: block; + width: 100%; +} +.weui-textarea-counter { + color: #B2B2B2; + text-align: right; +} +.weui-textarea-counter_warn { + color: #E64340; +} +.weui-cell_warn { + color: #E64340; +} +.weui-form-preview { + position: relative; + background-color: #FFFFFF; +} +.weui-form-preview:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-form-preview:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-form-preview__value { + font-size: 14px; +} +.weui-form-preview__value_in-hd { + font-size: 26px; +} +.weui-form-preview__hd { + position: relative; + padding: 10px 15px; + text-align: right; + line-height: 2.5em; +} +.weui-form-preview__hd:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #D9D9D9; + color: #D9D9D9; + left: 15px; +} +.weui-form-preview__bd { + padding: 10px 15px; + font-size: .9em; + text-align: right; + color: #999999; + line-height: 2; +} +.weui-form-preview__ft { + position: relative; + line-height: 50px; + display: -webkit-box; + display: -webkit-flex; + display: flex; +} +.weui-form-preview__ft:after { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D5D5D6; + color: #D5D5D6; +} +.weui-form-preview__item { + overflow: hidden; +} +.weui-form-preview__label { + float: left; + margin-right: 1em; + min-width: 4em; + color: #999999; + text-align: justify; + text-align-last: justify; +} +.weui-form-preview__value { + display: block; + overflow: hidden; + word-break: normal; + word-wrap: break-word; +} +.weui-form-preview__btn { + position: relative; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + color: #3CC51F; + text-align: center; +} +.weui-form-preview__btn:after { + content: " "; + position: absolute; + left: 0; + top: 0; + width: 1px; + bottom: 0; + border-left: 1rpx solid #D5D5D6; + color: #D5D5D6; +} +.weui-form-preview__btn:first-child:after { + display: none; +} +.weui-form-preview__btn_active { + background-color: #EEEEEE; +} +.weui-form-preview__btn_default { + color: #999999; +} +.weui-form-preview__btn_primary { + color: #0BB20C; +} +.weui-cell_select { + padding: 0; +} +.weui-select { + position: relative; + padding-left: 15px; + padding-right: 30px; + height: 2.58823529em; + min-height: 2.58823529em; + line-height: 2.58823529em; + border-right: 1rpx solid #D9D9D9; +} +.weui-select:before { + content: " "; + display: inline-block; + height: 6px; + width: 6px; + border-width: 2px 2px 0 0; + border-color: #C8C8CD; + border-style: solid; + -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + position: relative; + top: -2px; + position: absolute; + top: 50%; + right: 15px; + margin-top: -4px; +} +.weui-select_in-select-after { + padding-left: 0; +} +.weui-cell__hd_in-select-after, +.weui-cell__bd_in-select-before { + padding-left: 15px; +} +.weui-cell_vcode { + padding-right: 0; +} +.weui-vcode-img { + margin-left: 5px; + height: 2.58823529em; + vertical-align: middle; +} +.weui-vcode-btn { + display: inline-block; + height: 2.58823529em; + margin-left: 5px; + padding: 0 0.6em 0 0.7em; + border-left: 1px solid #E5E5E5; + line-height: 2.58823529em; + vertical-align: middle; + font-size: 17px; + color: #3CC51F; + white-space: nowrap; +} +.weui-vcode-btn:active { + color: #52a341; +} +.weui-cell_switch { + padding-top: 6px; + padding-bottom: 6px; +} +.weui-uploader__hd { + display: -webkit-box; + display: -webkit-flex; + display: flex; + padding-bottom: 10px; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.weui-uploader__title { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; +} +.weui-uploader__info { + color: #B2B2B2; +} +.weui-uploader__bd { + margin-bottom: -4px; + margin-right: -9px; + overflow: hidden; +} +.weui-uploader__file { + float: left; + margin-right: 9px; + margin-bottom: 9px; +} +.weui-uploader__img { + display: block; + width: 79px; + height: 79px; +} +.weui-uploader__file_status { + position: relative; +} +.weui-uploader__file_status:before { + content: " "; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.5); +} +.weui-uploader__file-content { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #FFFFFF; +} +.weui-uploader__input-box { + float: left; + position: relative; + margin-right: 9px; + margin-bottom: 9px; + width: 77px; + height: 77px; + border: 1px solid #D9D9D9; +} +.weui-uploader__input-box:before, +.weui-uploader__input-box:after { + content: " "; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + background-color: #D9D9D9; +} +.weui-uploader__input-box:before { + width: 2px; + height: 39.5px; +} +.weui-uploader__input-box:after { + width: 39.5px; + height: 2px; +} +.weui-uploader__input-box:active { + border-color: #999999; +} +.weui-uploader__input-box:active:before, +.weui-uploader__input-box:active:after { + background-color: #999999; +} +.weui-uploader__input { + position: absolute; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; +} +.weui-article { + padding: 20px 15px; + font-size: 15px; +} +.weui-article__section { + margin-bottom: 1.5em; +} +.weui-article__h1 { + font-size: 18px; + font-weight: 400; + margin-bottom: .9em; +} +.weui-article__h2 { + font-size: 16px; + font-weight: 400; + margin-bottom: .34em; +} +.weui-article__h3 { + font-weight: 400; + font-size: 15px; + margin-bottom: .34em; +} +.weui-article__p { + margin: 0 0 .8em; +} +.weui-msg { + padding-top: 36px; + text-align: center; +} +.weui-msg__link { + display: inline; + color: #586C94; +} +.weui-msg__icon-area { + margin-bottom: 30px; +} +.weui-msg__text-area { + margin-bottom: 25px; + padding: 0 20px; +} +.weui-msg__title { + margin-bottom: 5px; + font-weight: 400; + font-size: 20px; +} +.weui-msg__desc { + font-size: 14px; + color: #999999; +} +.weui-msg__opr-area { + margin-bottom: 25px; +} +.weui-msg__extra-area { + margin-bottom: 15px; + font-size: 14px; + color: #999999; +} +@media screen and (min-height: 438px) { + .weui-msg__extra-area { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + text-align: center; + } +} +.weui-flex { + display: -webkit-box; + display: -webkit-flex; + display: flex; +} +.weui-flex__item { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; +} +.weui-btn { + margin-top: 15px; +} +.weui-btn:first-child { + margin-top: 0; +} +.weui-btn-area { + margin: 1.17647059em 15px 0.3em; +} +.weui-agree { + display: block; + padding: .5em 15px; + font-size: 13px; +} +.weui-agree__text { + color: #999999; +} +.weui-agree__link { + display: inline; + color: #586C94; +} +.weui-agree__checkbox { + position: absolute; + left: -9999px; +} +.weui-agree__checkbox-icon { + position: relative; + top: 2px; + display: inline-block; + border: 1px solid #D1D1D1; + background-color: #FFFFFF; + border-radius: 3px; + width: 11px; + height: 11px; +} +.weui-agree__checkbox-icon-check { + position: absolute; + top: 1px; + left: 1px; +} +.weui-footer { + color: #999999; + font-size: 14px; + text-align: center; +} +.weui-footer_fixed-bottom { + position: fixed; + bottom: .52em; + left: 0; + right: 0; +} +.weui-footer__links { + font-size: 0; +} +.weui-footer__link { + display: inline-block; + vertical-align: top; + margin: 0 .62em; + position: relative; + font-size: 14px; + color: #586C94; +} +.weui-footer__link:before { + content: " "; + position: absolute; + left: 0; + top: 0; + width: 1px; + bottom: 0; + border-left: 1rpx solid #C7C7C7; + color: #C7C7C7; + left: -0.65em; + top: .36em; + bottom: .36em; +} +.weui-footer__link:first-child:before { + display: none; +} +.weui-footer__text { + padding: 0 .34em; + font-size: 12px; +} +.weui-grids { + border-top: 1rpx solid #D9D9D9; + border-left: 1rpx solid #D9D9D9; + overflow: hidden; +} +.weui-grid { + position: relative; + float: left; + padding: 20px 10px; + width: 33.33333333%; + box-sizing: border-box; + border-right: 1rpx solid #D9D9D9; + border-bottom: 1rpx solid #D9D9D9; +} +.weui-grid_active { + background-color: #ECECEC; +} +.weui-grid__icon { + display: block; + width: 28px; + height: 28px; + margin: 0 auto; +} +.weui-grid__label { + margin-top: 5px; + display: block; + text-align: center; + color: #000000; + font-size: 14px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.weui-loading { + margin: 0 5px; + width: 20px; + height: 20px; + display: inline-block; + vertical-align: middle; + -webkit-animation: weuiLoading 1s steps(12, end) infinite; + animation: weuiLoading 1s steps(12, end) infinite; + background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat; + background-size: 100%; +} +.weui-loading.weui-loading_transparent { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E"); +} +@-webkit-keyframes weuiLoading { + 0% { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } + 100% { + -webkit-transform: rotate3d(0, 0, 1, 360deg); + transform: rotate3d(0, 0, 1, 360deg); + } +} +@keyframes weuiLoading { + 0% { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } + 100% { + -webkit-transform: rotate3d(0, 0, 1, 360deg); + transform: rotate3d(0, 0, 1, 360deg); + } +} +.weui-badge { + display: inline-block; + padding: .15em .4em; + min-width: 8px; + border-radius: 18px; + background-color: #E64340; + color: #FFFFFF; + line-height: 1.2; + text-align: center; + font-size: 12px; + vertical-align: middle; +} +.weui-badge_dot { + padding: .4em; + min-width: 0; +} +.weui-loadmore { + width: 65%; + margin: 1.5em auto; + line-height: 1.6em; + font-size: 14px; + text-align: center; +} +.weui-loadmore__tips { + display: inline-block; + vertical-align: middle; +} +.weui-loadmore_line { + border-top: 1px solid #E5E5E5; + margin-top: 2.4em; +} +.weui-loadmore__tips_in-line { + position: relative; + top: -0.9em; + padding: 0 .55em; + background-color: #FFFFFF; + color: #999999; +} +.weui-loadmore__tips_in-dot { + position: relative; + padding: 0 .16em; + width: 4px; + height: 1.6em; +} +.weui-loadmore__tips_in-dot:before { + content: " "; + position: absolute; + top: 50%; + left: 50%; + margin-top: -1px; + margin-left: -2px; + width: 4px; + height: 4px; + border-radius: 50%; + background-color: #E5E5E5; +} +.weui-panel { + background-color: #FFFFFF; + margin-top: 10px; + position: relative; + overflow: hidden; +} +.weui-panel:first-child { + margin-top: 0; +} +.weui-panel:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #E5E5E5; + color: #E5E5E5; +} +.weui-panel:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #E5E5E5; + color: #E5E5E5; +} +.weui-panel__hd { + padding: 14px 15px 10px; + color: #999999; + font-size: 13px; + position: relative; +} +.weui-panel__hd:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #E5E5E5; + color: #E5E5E5; + left: 15px; +} +.weui-media-box { + padding: 15px; + position: relative; +} +.weui-media-box:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #E5E5E5; + color: #E5E5E5; + left: 15px; +} +.weui-media-box:first-child:before { + display: none; +} +.weui-media-box__title { + font-weight: 400; + font-size: 17px; + width: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: normal; + word-wrap: break-word; + word-break: break-all; +} +.weui-media-box__desc { + color: #999999; + font-size: 13px; + line-height: 1.2; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} +.weui-media-box__info { + margin-top: 15px; + padding-bottom: 5px; + font-size: 13px; + color: #CECECE; + line-height: 1em; + list-style: none; + overflow: hidden; +} +.weui-media-box__info__meta { + float: left; + padding-right: 1em; +} +.weui-media-box__info__meta_extra { + padding-left: 1em; + border-left: 1px solid #CECECE; +} +.weui-media-box__title_in-text { + margin-bottom: 8px; +} +.weui-media-box_appmsg { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.weui-media-box__thumb { + width: 100%; + height: 100%; + vertical-align: top; +} +.weui-media-box__hd_in-appmsg { + margin-right: .8em; + width: 60px; + height: 60px; + line-height: 60px; + text-align: center; +} +.weui-media-box__bd_in-appmsg { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + min-width: 0; +} +.weui-media-box_small-appmsg { + padding: 0; +} +.weui-cells_in-small-appmsg { + margin-top: 0; +} +.weui-cells_in-small-appmsg:before { + display: none; +} +.weui-progress { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.weui-progress__bar { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; +} +.weui-progress__opr { + margin-left: 15px; + font-size: 0; +} +.weui-navbar { + display: -webkit-box; + display: -webkit-flex; + display: flex; + position: absolute; + z-index: 500; + top: 0; + width: 100%; + border-bottom: 1rpx solid #CCCCCC; +} +.weui-navbar__item { + position: relative; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + padding: 13px 0; + text-align: center; + font-size: 0; +} +.weui-navbar__item.weui-bar__item_on { + color: #1AAD19; +} +.weui-navbar__slider { + position: absolute; + content: " "; + left: 0; + bottom: 0; + width: 6em; + height: 3px; + background-color: #1AAD19; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; +} +.weui-navbar__title { + display: inline-block; + font-size: 15px; + max-width: 8em; + width: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: normal; +} +.weui-tab { + position: relative; + height: 100%; +} +.weui-tab__panel { + box-sizing: border-box; + height: 100%; + padding-top: 50px; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.weui-search-bar { + position: relative; + padding: 8px 10px; + display: -webkit-box; + display: -webkit-flex; + display: flex; + box-sizing: border-box; + background-color: #EFEFF4; + border-top: 1rpx solid #D7D6DC; + border-bottom: 1rpx solid #D7D6DC; +} +.weui-icon-search { + margin-right: 8px; + font-size: inherit; +} +.weui-icon-search_in-box { + position: absolute; + left: 10px; + top: 7px; +} +.weui-search-bar__text { + display: inline-block; + font-size: 14px; + vertical-align: middle; +} +.weui-search-bar__form { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: auto; + flex: auto; + border-radius: 5px; + background: #FFFFFF; + border: 1rpx solid #E6E6EA; +} +.weui-search-bar__box { + position: relative; + padding-left: 30px; + padding-right: 30px; + width: 100%; + box-sizing: border-box; + z-index: 1; +} +.weui-search-bar__input { + height: 28px; + line-height: 28px; + font-size: 14px; +} +.weui-icon-clear { + position: absolute; + top: 0; + right: 0; + padding: 7px 8px; + font-size: 0; +} +.weui-search-bar__label { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + border-radius: 3px; + text-align: center; + color: #9B9B9B; + background: #FFFFFF; + line-height: 28px; +} +.weui-search-bar__cancel-btn { + margin-left: 10px; + line-height: 28px; + color: #09BB07; + white-space: nowrap; +} diff --git a/style/widget/weui-agree/weui-agree.wxss b/style/widget/weui-agree/weui-agree.wxss new file mode 100644 index 0000000..ff2a6a3 --- /dev/null +++ b/style/widget/weui-agree/weui-agree.wxss @@ -0,0 +1,31 @@ +.weui-agree { + display: block; + padding: .5em 15px; + font-size: 13px; +} +.weui-agree__text { + color: #999999; +} +.weui-agree__link { + display: inline; + color: #586C94; +} +.weui-agree__checkbox { + position: absolute; + left: -9999px; +} +.weui-agree__checkbox-icon { + position: relative; + top: 2px; + display: inline-block; + border: 1px solid #D1D1D1; + background-color: #FFFFFF; + border-radius: 3px; + width: 11px; + height: 11px; +} +.weui-agree__checkbox-icon-check { + position: absolute; + top: 1px; + left: 1px; +} diff --git a/style/widget/weui-animate/weui-animate.wxss b/style/widget/weui-animate/weui-animate.wxss new file mode 100644 index 0000000..566599a --- /dev/null +++ b/style/widget/weui-animate/weui-animate.wxss @@ -0,0 +1,88 @@ +@-webkit-keyframes slideUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes slideUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.weui-animate-slide-up { + -webkit-animation: slideUp ease .3s forwards; + animation: slideUp ease .3s forwards; +} +@-webkit-keyframes slideDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +@keyframes slideDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +.weui-animate-slide-down { + -webkit-animation: slideDown ease .3s forwards; + animation: slideDown ease .3s forwards; +} +@-webkit-keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +.weui-animate-fade-in { + -webkit-animation: fadeIn ease .3s forwards; + animation: fadeIn ease .3s forwards; +} +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +@keyframes fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +.weui-animate-fade-out { + -webkit-animation: fadeOut ease .3s forwards; + animation: fadeOut ease .3s forwards; +} diff --git a/style/widget/weui-button/weui-button.wxss b/style/widget/weui-button/weui-button.wxss new file mode 100644 index 0000000..2eee2ce --- /dev/null +++ b/style/widget/weui-button/weui-button.wxss @@ -0,0 +1,9 @@ +.weui-btn { + margin-top: 15px; +} +.weui-btn:first-child { + margin-top: 0; +} +.weui-btn-area { + margin: 1.17647059em 15px 0.3em; +} diff --git a/style/widget/weui-cell/weui-access.wxss b/style/widget/weui-cell/weui-access.wxss new file mode 100644 index 0000000..d333752 --- /dev/null +++ b/style/widget/weui-cell/weui-access.wxss @@ -0,0 +1,34 @@ +.weui-cell_access { + color: inherit; +} +.weui-cell__ft_in-access { + padding-right: 13px; + position: relative; +} +.weui-cell__ft_in-access:after { + content: " "; + display: inline-block; + height: 6px; + width: 6px; + border-width: 2px 2px 0 0; + border-color: #C8C8CD; + border-style: solid; + -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + position: relative; + top: -2px; + position: absolute; + top: 50%; + margin-top: -4px; + right: 2px; +} +.weui-cell_link { + color: #586C94; + font-size: 14px; +} +.weui-cell_link:active { + background-color: #ECECEC; +} +.weui-cell_link:first-child:before { + display: block; +} diff --git a/style/widget/weui-cell/weui-cell.wxss b/style/widget/weui-cell/weui-cell.wxss new file mode 100644 index 0000000..c877e4c --- /dev/null +++ b/style/widget/weui-cell/weui-cell.wxss @@ -0,0 +1,86 @@ +.weui-cells { + position: relative; + margin-top: 1.17647059em; + background-color: #FFFFFF; + line-height: 1.41176471; + font-size: 17px; +} +.weui-cells:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-cells:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-cells__title { + margin-top: .77em; + margin-bottom: .3em; + padding-left: 15px; + padding-right: 15px; + color: #999999; + font-size: 14px; +} +.weui-cells_after-title { + margin-top: 0; +} +.weui-cells__tips { + margin-top: .3em; + color: #999999; + padding-left: 15px; + padding-right: 15px; + font-size: 14px; +} +.weui-cell { + padding: 10px 15px; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.weui-cell:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D9D9D9; + color: #D9D9D9; + left: 15px; +} +.weui-cell:first-child:before { + display: none; +} +.weui-cell_active { + background-color: #ECECEC; +} +.weui-cell_primary { + -webkit-box-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; +} +.weui-cell__bd { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; +} +.weui-cell__ft { + text-align: right; + color: #999999; +} diff --git a/style/widget/weui-cell/weui-check.wxss b/style/widget/weui-cell/weui-check.wxss new file mode 100644 index 0000000..1302acd --- /dev/null +++ b/style/widget/weui-cell/weui-check.wxss @@ -0,0 +1,22 @@ +.weui-icon-radio { + margin-left: 3.2px; + margin-right: 3.2px; +} +.weui-icon-checkbox_circle, +.weui-icon-checkbox_success { + margin-left: 4.6px; + margin-right: 4.6px; +} +.weui-check__label:active { + background-color: #ECECEC; +} +.weui-check { + position: absolute; + left: -9999px; +} +.weui-check__hd_in-checkbox { + padding-right: 0.35em; +} +.weui-cell__ft_in-radio { + padding-left: 0.35em; +} diff --git a/style/widget/weui-cell/weui-form.wxss b/style/widget/weui-cell/weui-form.wxss new file mode 100644 index 0000000..5a94dcc --- /dev/null +++ b/style/widget/weui-cell/weui-form.wxss @@ -0,0 +1,224 @@ +.weui-cell_input { + padding-top: 0; + padding-bottom: 0; +} +.weui-label { + width: 105px; + word-wrap: break-word; + word-break: break-all; +} +.weui-input { + height: 2.58823529em; + min-height: 2.58823529em; + line-height: 2.58823529em; +} +.weui-toptips { + position: fixed; + -webkit-transform: translateZ(0); + transform: translateZ(0); + top: 0; + left: 0; + right: 0; + padding: 5px; + font-size: 14px; + text-align: center; + color: #FFFFFF; + z-index: 5000; + word-wrap: break-word; + word-break: break-all; +} +.weui-toptips_warn { + background-color: #E64340; +} +.weui-textarea { + display: block; + width: 100%; +} +.weui-textarea-counter { + color: #B2B2B2; + text-align: right; +} +.weui-textarea-counter_warn { + color: #E64340; +} +.weui-cell_warn { + color: #E64340; +} +.weui-form-preview { + position: relative; + background-color: #FFFFFF; +} +.weui-form-preview:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-form-preview:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-form-preview__value { + font-size: 14px; +} +.weui-form-preview__value_in-hd { + font-size: 26px; +} +.weui-form-preview__hd { + position: relative; + padding: 10px 15px; + text-align: right; + line-height: 2.5em; +} +.weui-form-preview__hd:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #D9D9D9; + color: #D9D9D9; + left: 15px; +} +.weui-form-preview__bd { + padding: 10px 15px; + font-size: .9em; + text-align: right; + color: #999999; + line-height: 2; +} +.weui-form-preview__ft { + position: relative; + line-height: 50px; + display: -webkit-box; + display: -webkit-flex; + display: flex; +} +.weui-form-preview__ft:after { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D5D5D6; + color: #D5D5D6; +} +.weui-form-preview__item { + overflow: hidden; +} +.weui-form-preview__label { + float: left; + margin-right: 1em; + min-width: 4em; + color: #999999; + text-align: justify; + text-align-last: justify; +} +.weui-form-preview__value { + display: block; + overflow: hidden; + word-break: normal; + word-wrap: break-word; +} +.weui-form-preview__btn { + position: relative; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + color: #3CC51F; + text-align: center; +} +.weui-form-preview__btn:after { + content: " "; + position: absolute; + left: 0; + top: 0; + width: 1px; + bottom: 0; + border-left: 1rpx solid #D5D5D6; + color: #D5D5D6; +} +.weui-form-preview__btn:first-child:after { + display: none; +} +.weui-form-preview__btn_active { + background-color: #EEEEEE; +} +.weui-form-preview__btn_default { + color: #999999; +} +.weui-form-preview__btn_primary { + color: #0BB20C; +} +.weui-cell_select { + padding: 0; +} +.weui-select { + position: relative; + padding-left: 15px; + padding-right: 30px; + height: 2.58823529em; + min-height: 2.58823529em; + line-height: 2.58823529em; + border-right: 1rpx solid #D9D9D9; +} +.weui-select:before { + content: " "; + display: inline-block; + height: 6px; + width: 6px; + border-width: 2px 2px 0 0; + border-color: #C8C8CD; + border-style: solid; + -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + position: relative; + top: -2px; + position: absolute; + top: 50%; + right: 15px; + margin-top: -4px; +} +.weui-select_in-select-after { + padding-left: 0; +} +.weui-cell__hd_in-select-after, +.weui-cell__bd_in-select-before { + padding-left: 15px; +} +.weui-cell_vcode { + padding-right: 0; +} +.weui-vcode-img { + margin-left: 5px; + height: 2.58823529em; + vertical-align: middle; +} +.weui-vcode-btn { + display: inline-block; + height: 2.58823529em; + margin-left: 5px; + padding: 0 0.6em 0 0.7em; + border-left: 1px solid #E5E5E5; + line-height: 2.58823529em; + vertical-align: middle; + font-size: 17px; + color: #3CC51F; + white-space: nowrap; +} +.weui-vcode-btn:active { + color: #52a341; +} diff --git a/style/widget/weui-cell/weui-form/weui-form-preview.wxss b/style/widget/weui-cell/weui-form/weui-form-preview.wxss new file mode 100644 index 0000000..d229906 --- /dev/null +++ b/style/widget/weui-cell/weui-form/weui-form-preview.wxss @@ -0,0 +1,119 @@ +.weui-form-preview { + position: relative; + background-color: #FFFFFF; +} +.weui-form-preview:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-form-preview:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #D9D9D9; + color: #D9D9D9; +} +.weui-form-preview__value { + font-size: 14px; +} +.weui-form-preview__value_in-hd { + font-size: 26px; +} +.weui-form-preview__hd { + position: relative; + padding: 10px 15px; + text-align: right; + line-height: 2.5em; +} +.weui-form-preview__hd:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #D9D9D9; + color: #D9D9D9; + left: 15px; +} +.weui-form-preview__bd { + padding: 10px 15px; + font-size: .9em; + text-align: right; + color: #999999; + line-height: 2; +} +.weui-form-preview__ft { + position: relative; + line-height: 50px; + display: -webkit-box; + display: -webkit-flex; + display: flex; +} +.weui-form-preview__ft:after { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #D5D5D6; + color: #D5D5D6; +} +.weui-form-preview__item { + overflow: hidden; +} +.weui-form-preview__label { + float: left; + margin-right: 1em; + min-width: 4em; + color: #999999; + text-align: justify; + text-align-last: justify; +} +.weui-form-preview__value { + display: block; + overflow: hidden; + word-break: normal; + word-wrap: break-word; +} +.weui-form-preview__btn { + position: relative; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + color: #3CC51F; + text-align: center; +} +.weui-form-preview__btn:after { + content: " "; + position: absolute; + left: 0; + top: 0; + width: 1px; + bottom: 0; + border-left: 1rpx solid #D5D5D6; + color: #D5D5D6; +} +.weui-form-preview__btn:first-child:after { + display: none; +} +.weui-form-preview__btn_active { + background-color: #EEEEEE; +} +.weui-form-preview__btn_default { + color: #999999; +} +.weui-form-preview__btn_primary { + color: #0BB20C; +} diff --git a/style/widget/weui-cell/weui-form/weui-form_common.wxss b/style/widget/weui-cell/weui-form/weui-form_common.wxss new file mode 100644 index 0000000..b9195e8 --- /dev/null +++ b/style/widget/weui-cell/weui-form/weui-form_common.wxss @@ -0,0 +1,46 @@ +.weui-cell_input { + padding-top: 0; + padding-bottom: 0; +} +.weui-label { + width: 105px; + word-wrap: break-word; + word-break: break-all; +} +.weui-input { + height: 2.58823529em; + min-height: 2.58823529em; + line-height: 2.58823529em; +} +.weui-toptips { + position: fixed; + -webkit-transform: translateZ(0); + transform: translateZ(0); + top: 0; + left: 0; + right: 0; + padding: 5px; + font-size: 14px; + text-align: center; + color: #FFFFFF; + z-index: 5000; + word-wrap: break-word; + word-break: break-all; +} +.weui-toptips_warn { + background-color: #E64340; +} +.weui-textarea { + display: block; + width: 100%; +} +.weui-textarea-counter { + color: #B2B2B2; + text-align: right; +} +.weui-textarea-counter_warn { + color: #E64340; +} +.weui-cell_warn { + color: #E64340; +} diff --git a/style/widget/weui-cell/weui-form/weui-select.wxss b/style/widget/weui-cell/weui-form/weui-select.wxss new file mode 100644 index 0000000..6cb48f7 --- /dev/null +++ b/style/widget/weui-cell/weui-form/weui-select.wxss @@ -0,0 +1,36 @@ +.weui-cell_select { + padding: 0; +} +.weui-select { + position: relative; + padding-left: 15px; + padding-right: 30px; + height: 2.58823529em; + min-height: 2.58823529em; + line-height: 2.58823529em; + border-right: 1rpx solid #D9D9D9; +} +.weui-select:before { + content: " "; + display: inline-block; + height: 6px; + width: 6px; + border-width: 2px 2px 0 0; + border-color: #C8C8CD; + border-style: solid; + -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); + position: relative; + top: -2px; + position: absolute; + top: 50%; + right: 15px; + margin-top: -4px; +} +.weui-select_in-select-after { + padding-left: 0; +} +.weui-cell__hd_in-select-after, +.weui-cell__bd_in-select-before { + padding-left: 15px; +} diff --git a/style/widget/weui-cell/weui-form/weui-vcode.wxss b/style/widget/weui-cell/weui-form/weui-vcode.wxss new file mode 100644 index 0000000..430848c --- /dev/null +++ b/style/widget/weui-cell/weui-form/weui-vcode.wxss @@ -0,0 +1,23 @@ +.weui-cell_vcode { + padding-right: 0; +} +.weui-vcode-img { + margin-left: 5px; + height: 2.58823529em; + vertical-align: middle; +} +.weui-vcode-btn { + display: inline-block; + height: 2.58823529em; + margin-left: 5px; + padding: 0 0.6em 0 0.7em; + border-left: 1px solid #E5E5E5; + line-height: 2.58823529em; + vertical-align: middle; + font-size: 17px; + color: #3CC51F; + white-space: nowrap; +} +.weui-vcode-btn:active { + color: #52a341; +} diff --git a/style/widget/weui-cell/weui-switch.wxss b/style/widget/weui-cell/weui-switch.wxss new file mode 100644 index 0000000..e876948 --- /dev/null +++ b/style/widget/weui-cell/weui-switch.wxss @@ -0,0 +1,4 @@ +.weui-cell_switch { + padding-top: 6px; + padding-bottom: 6px; +} diff --git a/style/widget/weui-cell/weui-uploader.wxss b/style/widget/weui-cell/weui-uploader.wxss new file mode 100644 index 0000000..9300d34 --- /dev/null +++ b/style/widget/weui-cell/weui-uploader.wxss @@ -0,0 +1,95 @@ +.weui-uploader__hd { + display: -webkit-box; + display: -webkit-flex; + display: flex; + padding-bottom: 10px; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.weui-uploader__title { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; +} +.weui-uploader__info { + color: #B2B2B2; +} +.weui-uploader__bd { + margin-bottom: -4px; + margin-right: -9px; + overflow: hidden; +} +.weui-uploader__file { + float: left; + margin-right: 9px; + margin-bottom: 9px; +} +.weui-uploader__img { + display: block; + width: 79px; + height: 79px; +} +.weui-uploader__file_status { + position: relative; +} +.weui-uploader__file_status:before { + content: " "; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.5); +} +.weui-uploader__file-content { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #FFFFFF; +} +.weui-uploader__input-box { + float: left; + position: relative; + margin-right: 9px; + margin-bottom: 9px; + width: 77px; + height: 77px; + border: 1px solid #D9D9D9; +} +.weui-uploader__input-box:before, +.weui-uploader__input-box:after { + content: " "; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + background-color: #D9D9D9; +} +.weui-uploader__input-box:before { + width: 2px; + height: 39.5px; +} +.weui-uploader__input-box:after { + width: 39.5px; + height: 2px; +} +.weui-uploader__input-box:active { + border-color: #999999; +} +.weui-uploader__input-box:active:before, +.weui-uploader__input-box:active:after { + background-color: #999999; +} +.weui-uploader__input { + position: absolute; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; +} diff --git a/style/widget/weui-flex/weui-flex.wxss b/style/widget/weui-flex/weui-flex.wxss new file mode 100644 index 0000000..a4fc144 --- /dev/null +++ b/style/widget/weui-flex/weui-flex.wxss @@ -0,0 +1,10 @@ +.weui-flex { + display: -webkit-box; + display: -webkit-flex; + display: flex; +} +.weui-flex__item { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; +} diff --git a/style/widget/weui-footer/weui-footer.wxss b/style/widget/weui-footer/weui-footer.wxss new file mode 100644 index 0000000..271bdec --- /dev/null +++ b/style/widget/weui-footer/weui-footer.wxss @@ -0,0 +1,42 @@ +.weui-footer { + color: #999999; + font-size: 14px; + text-align: center; +} +.weui-footer_fixed-bottom { + position: fixed; + bottom: .52em; + left: 0; + right: 0; +} +.weui-footer__links { + font-size: 0; +} +.weui-footer__link { + display: inline-block; + vertical-align: top; + margin: 0 .62em; + position: relative; + font-size: 14px; + color: #586C94; +} +.weui-footer__link:before { + content: " "; + position: absolute; + left: 0; + top: 0; + width: 1px; + bottom: 0; + border-left: 1rpx solid #C7C7C7; + color: #C7C7C7; + left: -0.65em; + top: .36em; + bottom: .36em; +} +.weui-footer__link:first-child:before { + display: none; +} +.weui-footer__text { + padding: 0 .34em; + font-size: 12px; +} diff --git a/style/widget/weui-grid/weui-grid.wxss b/style/widget/weui-grid/weui-grid.wxss new file mode 100644 index 0000000..d8f7b91 --- /dev/null +++ b/style/widget/weui-grid/weui-grid.wxss @@ -0,0 +1,33 @@ +.weui-grids { + border-top: 1rpx solid #D9D9D9; + border-left: 1rpx solid #D9D9D9; + overflow: hidden; +} +.weui-grid { + position: relative; + float: left; + padding: 20px 10px; + width: 33.33333333%; + box-sizing: border-box; + border-right: 1rpx solid #D9D9D9; + border-bottom: 1rpx solid #D9D9D9; +} +.weui-grid_active { + background-color: #ECECEC; +} +.weui-grid__icon { + display: block; + width: 28px; + height: 28px; + margin: 0 auto; +} +.weui-grid__label { + margin-top: 5px; + display: block; + text-align: center; + color: #000000; + font-size: 14px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} diff --git a/style/widget/weui-loading/weui-loading.wxss b/style/widget/weui-loading/weui-loading.wxss new file mode 100644 index 0000000..3fec603 --- /dev/null +++ b/style/widget/weui-loading/weui-loading.wxss @@ -0,0 +1,34 @@ +.weui-loading { + margin: 0 5px; + width: 20px; + height: 20px; + display: inline-block; + vertical-align: middle; + -webkit-animation: weuiLoading 1s steps(12, end) infinite; + animation: weuiLoading 1s steps(12, end) infinite; + background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat; + background-size: 100%; +} +.weui-loading.weui-loading_transparent { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E"); +} +@-webkit-keyframes weuiLoading { + 0% { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } + 100% { + -webkit-transform: rotate3d(0, 0, 1, 360deg); + transform: rotate3d(0, 0, 1, 360deg); + } +} +@keyframes weuiLoading { + 0% { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } + 100% { + -webkit-transform: rotate3d(0, 0, 1, 360deg); + transform: rotate3d(0, 0, 1, 360deg); + } +} diff --git a/style/widget/weui-media-box/weui-media-box.wxss b/style/widget/weui-media-box/weui-media-box.wxss new file mode 100644 index 0000000..b214781 --- /dev/null +++ b/style/widget/weui-media-box/weui-media-box.wxss @@ -0,0 +1,94 @@ +.weui-media-box { + padding: 15px; + position: relative; +} +.weui-media-box:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #E5E5E5; + color: #E5E5E5; + left: 15px; +} +.weui-media-box:first-child:before { + display: none; +} +.weui-media-box__title { + font-weight: 400; + font-size: 17px; + width: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: normal; + word-wrap: break-word; + word-break: break-all; +} +.weui-media-box__desc { + color: #999999; + font-size: 13px; + line-height: 1.2; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} +.weui-media-box__info { + margin-top: 15px; + padding-bottom: 5px; + font-size: 13px; + color: #CECECE; + line-height: 1em; + list-style: none; + overflow: hidden; +} +.weui-media-box__info__meta { + float: left; + padding-right: 1em; +} +.weui-media-box__info__meta_extra { + padding-left: 1em; + border-left: 1px solid #CECECE; +} +.weui-media-box__title_in-text { + margin-bottom: 8px; +} +.weui-media-box_appmsg { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.weui-media-box__thumb { + width: 100%; + height: 100%; + vertical-align: top; +} +.weui-media-box__hd_in-appmsg { + margin-right: .8em; + width: 60px; + height: 60px; + line-height: 60px; + text-align: center; +} +.weui-media-box__bd_in-appmsg { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + min-width: 0; +} +.weui-media-box_small-appmsg { + padding: 0; +} +.weui-cells_in-small-appmsg { + margin-top: 0; +} +.weui-cells_in-small-appmsg:before { + display: none; +} diff --git a/style/widget/weui-page/weui-article.wxss b/style/widget/weui-page/weui-article.wxss new file mode 100644 index 0000000..2aa3640 --- /dev/null +++ b/style/widget/weui-page/weui-article.wxss @@ -0,0 +1,25 @@ +.weui-article { + padding: 20px 15px; + font-size: 15px; +} +.weui-article__section { + margin-bottom: 1.5em; +} +.weui-article__h1 { + font-size: 18px; + font-weight: 400; + margin-bottom: .9em; +} +.weui-article__h2 { + font-size: 16px; + font-weight: 400; + margin-bottom: .34em; +} +.weui-article__h3 { + font-weight: 400; + font-size: 15px; + margin-bottom: .34em; +} +.weui-article__p { + margin: 0 0 .8em; +} diff --git a/style/widget/weui-page/weui-msg.wxss b/style/widget/weui-page/weui-msg.wxss new file mode 100644 index 0000000..c5765fa --- /dev/null +++ b/style/widget/weui-page/weui-msg.wxss @@ -0,0 +1,41 @@ +.weui-msg { + padding-top: 36px; + text-align: center; +} +.weui-msg__link { + display: inline; + color: #586C94; +} +.weui-msg__icon-area { + margin-bottom: 30px; +} +.weui-msg__text-area { + margin-bottom: 25px; + padding: 0 20px; +} +.weui-msg__title { + margin-bottom: 5px; + font-weight: 400; + font-size: 20px; +} +.weui-msg__desc { + font-size: 14px; + color: #999999; +} +.weui-msg__opr-area { + margin-bottom: 25px; +} +.weui-msg__extra-area { + margin-bottom: 15px; + font-size: 14px; + color: #999999; +} +@media screen and (min-height: 438px) { + .weui-msg__extra-area { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + text-align: center; + } +} diff --git a/style/widget/weui-panel/weui-panel.wxss b/style/widget/weui-panel/weui-panel.wxss new file mode 100644 index 0000000..1429b03 --- /dev/null +++ b/style/widget/weui-panel/weui-panel.wxss @@ -0,0 +1,46 @@ +.weui-panel { + background-color: #FFFFFF; + margin-top: 10px; + position: relative; + overflow: hidden; +} +.weui-panel:first-child { + margin-top: 0; +} +.weui-panel:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1rpx solid #E5E5E5; + color: #E5E5E5; +} +.weui-panel:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #E5E5E5; + color: #E5E5E5; +} +.weui-panel__hd { + padding: 14px 15px 10px; + color: #999999; + font-size: 13px; + position: relative; +} +.weui-panel__hd:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1rpx solid #E5E5E5; + color: #E5E5E5; + left: 15px; +} diff --git a/style/widget/weui-progress/weui-progress.wxss b/style/widget/weui-progress/weui-progress.wxss new file mode 100644 index 0000000..cb47ad3 --- /dev/null +++ b/style/widget/weui-progress/weui-progress.wxss @@ -0,0 +1,17 @@ +.weui-progress { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.weui-progress__bar { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; +} +.weui-progress__opr { + margin-left: 15px; + font-size: 0; +} diff --git a/style/widget/weui-searchbar/weui-searchbar.wxss b/style/widget/weui-searchbar/weui-searchbar.wxss new file mode 100644 index 0000000..10bf43d --- /dev/null +++ b/style/widget/weui-searchbar/weui-searchbar.wxss @@ -0,0 +1,73 @@ +.weui-search-bar { + position: relative; + padding: 8px 10px; + display: -webkit-box; + display: -webkit-flex; + display: flex; + box-sizing: border-box; + background-color: #EFEFF4; + border-top: 1rpx solid #D7D6DC; + border-bottom: 1rpx solid #D7D6DC; +} +.weui-icon-search { + margin-right: 8px; + font-size: inherit; +} +.weui-icon-search_in-box { + position: absolute; + left: 10px; + top: 7px; +} +.weui-search-bar__text { + display: inline-block; + font-size: 14px; + vertical-align: middle; +} +.weui-search-bar__form { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: auto; + flex: auto; + border-radius: 5px; + background: #FFFFFF; + border: 1rpx solid #E6E6EA; +} +.weui-search-bar__box { + position: relative; + padding-left: 30px; + padding-right: 30px; + width: 100%; + box-sizing: border-box; + z-index: 1; +} +.weui-search-bar__input { + height: 28px; + line-height: 28px; + font-size: 14px; +} +.weui-icon-clear { + position: absolute; + top: 0; + right: 0; + padding: 7px 8px; + font-size: 0; +} +.weui-search-bar__label { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + border-radius: 3px; + text-align: center; + color: #9B9B9B; + background: #FFFFFF; + line-height: 28px; +} +.weui-search-bar__cancel-btn { + margin-left: 10px; + line-height: 28px; + color: #09BB07; + white-space: nowrap; +} diff --git a/style/widget/weui-tab/weui-navbar.wxss b/style/widget/weui-tab/weui-navbar.wxss new file mode 100644 index 0000000..2a98ce2 --- /dev/null +++ b/style/widget/weui-tab/weui-navbar.wxss @@ -0,0 +1,46 @@ +.weui-navbar { + display: -webkit-box; + display: -webkit-flex; + display: flex; + position: absolute; + z-index: 500; + top: 0; + width: 100%; + border-bottom: 1rpx solid #CCCCCC; +} +.weui-navbar__item { + position: relative; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + padding: 13px 0; + text-align: center; + font-size: 0; +} +.weui-navbar__item.weui-bar__item_on { + color: #1AAD19; +} +.weui-navbar__slider { + position: absolute; + content: " "; + left: 0; + bottom: 0; + width: 6em; + height: 3px; + background-color: #1AAD19; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; +} +.weui-navbar__title { + display: inline-block; + font-size: 15px; + max-width: 8em; + width: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: normal; +} diff --git a/style/widget/weui-tab/weui-tab.wxss b/style/widget/weui-tab/weui-tab.wxss new file mode 100644 index 0000000..fe44e1d --- /dev/null +++ b/style/widget/weui-tab/weui-tab.wxss @@ -0,0 +1,57 @@ +.weui-navbar { + display: -webkit-box; + display: -webkit-flex; + display: flex; + position: absolute; + z-index: 500; + top: 0; + width: 100%; + border-bottom: 1rpx solid #CCCCCC; +} +.weui-navbar__item { + position: relative; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + padding: 13px 0; + text-align: center; + font-size: 0; +} +.weui-navbar__item.weui-bar__item_on { + color: #1AAD19; +} +.weui-navbar__slider { + position: absolute; + content: " "; + left: 0; + bottom: 0; + width: 6em; + height: 3px; + background-color: #1AAD19; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; +} +.weui-navbar__title { + display: inline-block; + font-size: 15px; + max-width: 8em; + width: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: normal; +} +.weui-tab { + position: relative; + height: 100%; +} +.weui-tab__panel { + box-sizing: border-box; + height: 100%; + padding-top: 50px; + overflow: auto; + -webkit-overflow-scrolling: touch; +} diff --git a/style/widget/weui-tips/weui-badge.wxss b/style/widget/weui-tips/weui-badge.wxss new file mode 100644 index 0000000..f6c5a35 --- /dev/null +++ b/style/widget/weui-tips/weui-badge.wxss @@ -0,0 +1,16 @@ +.weui-badge { + display: inline-block; + padding: .15em .4em; + min-width: 8px; + border-radius: 18px; + background-color: #E64340; + color: #FFFFFF; + line-height: 1.2; + text-align: center; + font-size: 12px; + vertical-align: middle; +} +.weui-badge_dot { + padding: .4em; + min-width: 0; +} diff --git a/style/widget/weui-tips/weui-loadmore.wxss b/style/widget/weui-tips/weui-loadmore.wxss new file mode 100644 index 0000000..0271d3a --- /dev/null +++ b/style/widget/weui-tips/weui-loadmore.wxss @@ -0,0 +1,40 @@ +.weui-loadmore { + width: 65%; + margin: 1.5em auto; + line-height: 1.6em; + font-size: 14px; + text-align: center; +} +.weui-loadmore__tips { + display: inline-block; + vertical-align: middle; +} +.weui-loadmore_line { + border-top: 1px solid #E5E5E5; + margin-top: 2.4em; +} +.weui-loadmore__tips_in-line { + position: relative; + top: -0.9em; + padding: 0 .55em; + background-color: #FFFFFF; + color: #999999; +} +.weui-loadmore__tips_in-dot { + position: relative; + padding: 0 .16em; + width: 4px; + height: 1.6em; +} +.weui-loadmore__tips_in-dot:before { + content: " "; + position: absolute; + top: 50%; + left: 50%; + margin-top: -1px; + margin-left: -2px; + width: 4px; + height: 4px; + border-radius: 50%; + background-color: #E5E5E5; +} diff --git a/utils/config.js b/utils/config.js new file mode 100644 index 0000000..38f76d5 --- /dev/null +++ b/utils/config.js @@ -0,0 +1,3 @@ +module.exports = { + BaseURL : "http://140.143.234.132:8088" +} \ No newline at end of file diff --git a/utils/moment.min.js b/utils/moment.min.js new file mode 100644 index 0000000..b63c6bb --- /dev/null +++ b/utils/moment.min.js @@ -0,0 +1,1376 @@ +//! moment.js +//! version : 2.10.6 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +! function (a, b) { + "object" == typeof exports && "undefined" != typeof module ? module.exports = b() : "function" == typeof define && define.amd ? define(b) : a.moment = b() +}(this, function () { + "use strict"; + + function a() { + return Hc.apply(null, arguments) + } + + function b(a) { + Hc = a + } + + function c(a) { + return "[object Array]" === Object.prototype.toString.call(a) + } + + function d(a) { + return a instanceof Date || "[object Date]" === Object.prototype.toString.call(a) + } + + function e(a, b) { + var c, d = []; + for (c = 0; c < a.length; ++c) d.push(b(a[c], c)); + return d + } + + function f(a, b) { + return Object.prototype.hasOwnProperty.call(a, b) + } + + function g(a, b) { + for (var c in b) f(b, c) && (a[c] = b[c]); + return f(b, "toString") && (a.toString = b.toString), f(b, "valueOf") && (a.valueOf = b.valueOf), a + } + + function h(a, b, c, d) { + return Ca(a, b, c, d, !0).utc() + } + + function i() { + return { + empty: !1, + unusedTokens: [], + unusedInput: [], + overflow: -2, + charsLeftOver: 0, + nullInput: !1, + invalidMonth: null, + invalidFormat: !1, + userInvalidated: !1, + iso: !1 + } + } + + function j(a) { + return null == a._pf && (a._pf = i()), a._pf + } + + function k(a) { + if (null == a._isValid) { + var b = j(a); + a._isValid = !(isNaN(a._d.getTime()) || !(b.overflow < 0) || b.empty || b.invalidMonth || b.invalidWeekday || b.nullInput || b.invalidFormat || b.userInvalidated), a._strict && (a._isValid = a._isValid && 0 === b.charsLeftOver && 0 === b.unusedTokens.length && void 0 === b.bigHour) + } + return a._isValid + } + + function l(a) { + var b = h(NaN); + return null != a ? g(j(b), a) : j(b).userInvalidated = !0, b + } + + function m(a, b) { + var c, d, e; + if ("undefined" != typeof b._isAMomentObject && (a._isAMomentObject = b._isAMomentObject), "undefined" != typeof b._i && (a._i = b._i), "undefined" != typeof b._f && (a._f = b._f), "undefined" != typeof b._l && (a._l = b._l), "undefined" != typeof b._strict && (a._strict = b._strict), "undefined" != typeof b._tzm && (a._tzm = b._tzm), "undefined" != typeof b._isUTC && (a._isUTC = b._isUTC), "undefined" != typeof b._offset && (a._offset = b._offset), "undefined" != typeof b._pf && (a._pf = j(b)), "undefined" != typeof b._locale && (a._locale = b._locale), Jc.length > 0) + for (c in Jc) d = Jc[c], e = b[d], "undefined" != typeof e && (a[d] = e); + return a + } + + function n(b) { + m(this, b), this._d = new Date(null != b._d ? b._d.getTime() : NaN), Kc === !1 && (Kc = !0, a.updateOffset(this), Kc = !1) + } + + function o(a) { + return a instanceof n || null != a && null != a._isAMomentObject + } + + function p(a) { + return 0 > a ? Math.ceil(a) : Math.floor(a) + } + + function q(a) { + var b = +a, + c = 0; + return 0 !== b && isFinite(b) && (c = p(b)), c + } + + function r(a, b, c) { + var d, e = Math.min(a.length, b.length), + f = Math.abs(a.length - b.length), + g = 0; + for (d = 0; e > d; d++)(c && a[d] !== b[d] || !c && q(a[d]) !== q(b[d])) && g++; + return g + f + } + + function s() {} + + function t(a) { + return a ? a.toLowerCase().replace("_", "-") : a + } + + function u(a) { + for (var b, c, d, e, f = 0; f < a.length;) { + for (e = t(a[f]).split("-"), b = e.length, c = t(a[f + 1]), c = c ? c.split("-") : null; b > 0;) { + if (d = v(e.slice(0, b).join("-"))) return d; + if (c && c.length >= b && r(e, c, !0) >= b - 1) break; + b-- + } + f++ + } + return null + } + + function v(a) { + var b = null; + if (!Lc[a] && "undefined" != typeof module && module && module.exports) try { + b = Ic._abbr, require("./locale/" + a), w(b) + } catch (c) {} + return Lc[a] + } + + function w(a, b) { + var c; + return a && (c = "undefined" == typeof b ? y(a) : x(a, b), c && (Ic = c)), Ic._abbr + } + + function x(a, b) { + return null !== b ? (b.abbr = a, Lc[a] = Lc[a] || new s, Lc[a].set(b), w(a), Lc[a]) : (delete Lc[a], null) + } + + function y(a) { + var b; + if (a && a._locale && a._locale._abbr && (a = a._locale._abbr), !a) return Ic; + if (!c(a)) { + if (b = v(a)) return b; + a = [a] + } + return u(a) + } + + function z(a, b) { + var c = a.toLowerCase(); + Mc[c] = Mc[c + "s"] = Mc[b] = a + } + + function A(a) { + return "string" == typeof a ? Mc[a] || Mc[a.toLowerCase()] : void 0 + } + + function B(a) { + var b, c, d = {}; + for (c in a) f(a, c) && (b = A(c), b && (d[b] = a[c])); + return d + } + + function C(b, c) { + return function (d) { + return null != d ? (E(this, b, d), a.updateOffset(this, c), this) : D(this, b) + } + } + + function D(a, b) { + return a._d["get" + (a._isUTC ? "UTC" : "") + b]() + } + + function E(a, b, c) { + return a._d["set" + (a._isUTC ? "UTC" : "") + b](c) + } + + function F(a, b) { + var c; + if ("object" == typeof a) + for (c in a) this.set(c, a[c]); + else if (a = A(a), "function" == typeof this[a]) return this[a](b); + return this + } + + function G(a, b, c) { + var d = "" + Math.abs(a), + e = b - d.length, + f = a >= 0; + return (f ? c ? "+" : "" : "-") + Math.pow(10, Math.max(0, e)).toString().substr(1) + d + } + + function H(a, b, c, d) { + var e = d; + "string" == typeof d && (e = function () { + return this[d]() + }), a && (Qc[a] = e), b && (Qc[b[0]] = function () { + return G(e.apply(this, arguments), b[1], b[2]) + }), c && (Qc[c] = function () { + return this.localeData().ordinal(e.apply(this, arguments), a) + }) + } + + function I(a) { + return a.match(/\[[\s\S]/) ? a.replace(/^\[|\]$/g, "") : a.replace(/\\/g, "") + } + + function J(a) { + var b, c, d = a.match(Nc); + for (b = 0, c = d.length; c > b; b++) Qc[d[b]] ? d[b] = Qc[d[b]] : d[b] = I(d[b]); + return function (e) { + var f = ""; + for (b = 0; c > b; b++) f += d[b] instanceof Function ? d[b].call(e, a) : d[b]; + return f + } + } + + function K(a, b) { + return a.isValid() ? (b = L(b, a.localeData()), Pc[b] = Pc[b] || J(b), Pc[b](a)) : a.localeData().invalidDate() + } + + function L(a, b) { + function c(a) { + return b.longDateFormat(a) || a + } + var d = 5; + for (Oc.lastIndex = 0; d >= 0 && Oc.test(a);) a = a.replace(Oc, c), Oc.lastIndex = 0, d -= 1; + return a + } + + function M(a) { + return "function" == typeof a && "[object Function]" === Object.prototype.toString.call(a) + } + + function N(a, b, c) { + dd[a] = M(b) ? b : function (a) { + return a && c ? c : b + } + } + + function O(a, b) { + return f(dd, a) ? dd[a](b._strict, b._locale) : new RegExp(P(a)) + } + + function P(a) { + return a.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (a, b, c, d, e) { + return b || c || d || e + }).replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") + } + + function Q(a, b) { + var c, d = b; + for ("string" == typeof a && (a = [a]), "number" == typeof b && (d = function (a, c) { + c[b] = q(a) + }), c = 0; c < a.length; c++) ed[a[c]] = d + } + + function R(a, b) { + Q(a, function (a, c, d, e) { + d._w = d._w || {}, b(a, d._w, d, e) + }) + } + + function S(a, b, c) { + null != b && f(ed, a) && ed[a](b, c._a, c, a) + } + + function T(a, b) { + return new Date(Date.UTC(a, b + 1, 0)).getUTCDate() + } + + function U(a) { + return this._months[a.month()] + } + + function V(a) { + return this._monthsShort[a.month()] + } + + function W(a, b, c) { + var d, e, f; + for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), d = 0; 12 > d; d++) { + if (e = h([2e3, d]), c && !this._longMonthsParse[d] && (this._longMonthsParse[d] = new RegExp("^" + this.months(e, "").replace(".", "") + "$", "i"), this._shortMonthsParse[d] = new RegExp("^" + this.monthsShort(e, "").replace(".", "") + "$", "i")), c || this._monthsParse[d] || (f = "^" + this.months(e, "") + "|^" + this.monthsShort(e, ""), this._monthsParse[d] = new RegExp(f.replace(".", ""), "i")), c && "MMMM" === b && this._longMonthsParse[d].test(a)) return d; + if (c && "MMM" === b && this._shortMonthsParse[d].test(a)) return d; + if (!c && this._monthsParse[d].test(a)) return d + } + } + + function X(a, b) { + var c; + return "string" == typeof b && (b = a.localeData().monthsParse(b), "number" != typeof b) ? a : (c = Math.min(a.date(), T(a.year(), b)), a._d["set" + (a._isUTC ? "UTC" : "") + "Month"](b, c), a) + } + + function Y(b) { + return null != b ? (X(this, b), a.updateOffset(this, !0), this) : D(this, "Month") + } + + function Z() { + return T(this.year(), this.month()) + } + + function $(a) { + var b, c = a._a; + return c && -2 === j(a).overflow && (b = c[gd] < 0 || c[gd] > 11 ? gd : c[hd] < 1 || c[hd] > T(c[fd], c[gd]) ? hd : c[id] < 0 || c[id] > 24 || 24 === c[id] && (0 !== c[jd] || 0 !== c[kd] || 0 !== c[ld]) ? id : c[jd] < 0 || c[jd] > 59 ? jd : c[kd] < 0 || c[kd] > 59 ? kd : c[ld] < 0 || c[ld] > 999 ? ld : -1, j(a)._overflowDayOfYear && (fd > b || b > hd) && (b = hd), j(a).overflow = b), a + } + + function _(b) { + a.suppressDeprecationWarnings === !1 && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + b) + } + + function aa(a, b) { + var c = !0; + return g(function () { + return c && (_(a + "\n" + (new Error).stack), c = !1), b.apply(this, arguments) + }, b) + } + + function ba(a, b) { + od[a] || (_(b), od[a] = !0) + } + + function ca(a) { + var b, c, d = a._i, + e = pd.exec(d); + if (e) { + for (j(a).iso = !0, b = 0, c = qd.length; c > b; b++) + if (qd[b][1].exec(d)) { + a._f = qd[b][0]; + break + } for (b = 0, c = rd.length; c > b; b++) + if (rd[b][1].exec(d)) { + a._f += (e[6] || " ") + rd[b][0]; + break + } d.match(ad) && (a._f += "Z"), va(a) + } else a._isValid = !1 + } + + function da(b) { + var c = sd.exec(b._i); + return null !== c ? void(b._d = new Date(+c[1])) : (ca(b), void(b._isValid === !1 && (delete b._isValid, a.createFromInputFallback(b)))) + } + + function ea(a, b, c, d, e, f, g) { + var h = new Date(a, b, c, d, e, f, g); + return 1970 > a && h.setFullYear(a), h + } + + function fa(a) { + var b = new Date(Date.UTC.apply(null, arguments)); + return 1970 > a && b.setUTCFullYear(a), b + } + + function ga(a) { + return ha(a) ? 366 : 365 + } + + function ha(a) { + return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0 + } + + function ia() { + return ha(this.year()) + } + + function ja(a, b, c) { + var d, e = c - b, + f = c - a.day(); + return f > e && (f -= 7), e - 7 > f && (f += 7), d = Da(a).add(f, "d"), { + week: Math.ceil(d.dayOfYear() / 7), + year: d.year() + } + } + + function ka(a) { + return ja(a, this._week.dow, this._week.doy).week + } + + function la() { + return this._week.dow + } + + function ma() { + return this._week.doy + } + + function na(a) { + var b = this.localeData().week(this); + return null == a ? b : this.add(7 * (a - b), "d") + } + + function oa(a) { + var b = ja(this, 1, 4).week; + return null == a ? b : this.add(7 * (a - b), "d") + } + + function pa(a, b, c, d, e) { + var f, g = 6 + e - d, + h = fa(a, 0, 1 + g), + i = h.getUTCDay(); + return e > i && (i += 7), c = null != c ? 1 * c : e, f = 1 + g + 7 * (b - 1) - i + c, { + year: f > 0 ? a : a - 1, + dayOfYear: f > 0 ? f : ga(a - 1) + f + } + } + + function qa(a) { + var b = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; + return null == a ? b : this.add(a - b, "d") + } + + function ra(a, b, c) { + return null != a ? a : null != b ? b : c + } + + function sa(a) { + var b = new Date; + return a._useUTC ? [b.getUTCFullYear(), b.getUTCMonth(), b.getUTCDate()] : [b.getFullYear(), b.getMonth(), b.getDate()] + } + + function ta(a) { + var b, c, d, e, f = []; + if (!a._d) { + for (d = sa(a), a._w && null == a._a[hd] && null == a._a[gd] && ua(a), a._dayOfYear && (e = ra(a._a[fd], d[fd]), a._dayOfYear > ga(e) && (j(a)._overflowDayOfYear = !0), c = fa(e, 0, a._dayOfYear), a._a[gd] = c.getUTCMonth(), a._a[hd] = c.getUTCDate()), b = 0; 3 > b && null == a._a[b]; ++b) a._a[b] = f[b] = d[b]; + for (; 7 > b; b++) a._a[b] = f[b] = null == a._a[b] ? 2 === b ? 1 : 0 : a._a[b]; + 24 === a._a[id] && 0 === a._a[jd] && 0 === a._a[kd] && 0 === a._a[ld] && (a._nextDay = !0, a._a[id] = 0), a._d = (a._useUTC ? fa : ea).apply(null, f), null != a._tzm && a._d.setUTCMinutes(a._d.getUTCMinutes() - a._tzm), a._nextDay && (a._a[id] = 24) + } + } + + function ua(a) { + var b, c, d, e, f, g, h; + b = a._w, null != b.GG || null != b.W || null != b.E ? (f = 1, g = 4, c = ra(b.GG, a._a[fd], ja(Da(), 1, 4).year), d = ra(b.W, 1), e = ra(b.E, 1)) : (f = a._locale._week.dow, g = a._locale._week.doy, c = ra(b.gg, a._a[fd], ja(Da(), f, g).year), d = ra(b.w, 1), null != b.d ? (e = b.d, f > e && ++d) : e = null != b.e ? b.e + f : f), h = pa(c, d, e, g, f), a._a[fd] = h.year, a._dayOfYear = h.dayOfYear + } + + function va(b) { + if (b._f === a.ISO_8601) return void ca(b); + b._a = [], j(b).empty = !0; + var c, d, e, f, g, h = "" + b._i, + i = h.length, + k = 0; + for (e = L(b._f, b._locale).match(Nc) || [], c = 0; c < e.length; c++) f = e[c], d = (h.match(O(f, b)) || [])[0], d && (g = h.substr(0, h.indexOf(d)), g.length > 0 && j(b).unusedInput.push(g), h = h.slice(h.indexOf(d) + d.length), k += d.length), Qc[f] ? (d ? j(b).empty = !1 : j(b).unusedTokens.push(f), S(f, d, b)) : b._strict && !d && j(b).unusedTokens.push(f); + j(b).charsLeftOver = i - k, h.length > 0 && j(b).unusedInput.push(h), j(b).bigHour === !0 && b._a[id] <= 12 && b._a[id] > 0 && (j(b).bigHour = void 0), b._a[id] = wa(b._locale, b._a[id], b._meridiem), ta(b), $(b) + } + + function wa(a, b, c) { + var d; + return null == c ? b : null != a.meridiemHour ? a.meridiemHour(b, c) : null != a.isPM ? (d = a.isPM(c), d && 12 > b && (b += 12), d || 12 !== b || (b = 0), b) : b + } + + function xa(a) { + var b, c, d, e, f; + if (0 === a._f.length) return j(a).invalidFormat = !0, void(a._d = new Date(NaN)); + for (e = 0; e < a._f.length; e++) f = 0, b = m({}, a), null != a._useUTC && (b._useUTC = a._useUTC), b._f = a._f[e], va(b), k(b) && (f += j(b).charsLeftOver, f += 10 * j(b).unusedTokens.length, j(b).score = f, (null == d || d > f) && (d = f, c = b)); + g(a, c || b) + } + + function ya(a) { + if (!a._d) { + var b = B(a._i); + a._a = [b.year, b.month, b.day || b.date, b.hour, b.minute, b.second, b.millisecond], ta(a) + } + } + + function za(a) { + var b = new n($(Aa(a))); + return b._nextDay && (b.add(1, "d"), b._nextDay = void 0), b + } + + function Aa(a) { + var b = a._i, + e = a._f; + return a._locale = a._locale || y(a._l), null === b || void 0 === e && "" === b ? l({ + nullInput: !0 + }) : ("string" == typeof b && (a._i = b = a._locale.preparse(b)), o(b) ? new n($(b)) : (c(e) ? xa(a) : e ? va(a) : d(b) ? a._d = b : Ba(a), a)) + } + + function Ba(b) { + var f = b._i; + void 0 === f ? b._d = new Date : d(f) ? b._d = new Date(+f) : "string" == typeof f ? da(b) : c(f) ? (b._a = e(f.slice(0), function (a) { + return parseInt(a, 10) + }), ta(b)) : "object" == typeof f ? ya(b) : "number" == typeof f ? b._d = new Date(f) : a.createFromInputFallback(b) + } + + function Ca(a, b, c, d, e) { + var f = {}; + return "boolean" == typeof c && (d = c, c = void 0), f._isAMomentObject = !0, f._useUTC = f._isUTC = e, f._l = c, f._i = a, f._f = b, f._strict = d, za(f) + } + + function Da(a, b, c, d) { + return Ca(a, b, c, d, !1) + } + + function Ea(a, b) { + var d, e; + if (1 === b.length && c(b[0]) && (b = b[0]), !b.length) return Da(); + for (d = b[0], e = 1; e < b.length; ++e)(!b[e].isValid() || b[e][a](d)) && (d = b[e]); + return d + } + + function Fa() { + var a = [].slice.call(arguments, 0); + return Ea("isBefore", a) + } + + function Ga() { + var a = [].slice.call(arguments, 0); + return Ea("isAfter", a) + } + + function Ha(a) { + var b = B(a), + c = b.year || 0, + d = b.quarter || 0, + e = b.month || 0, + f = b.week || 0, + g = b.day || 0, + h = b.hour || 0, + i = b.minute || 0, + j = b.second || 0, + k = b.millisecond || 0; + this._milliseconds = +k + 1e3 * j + 6e4 * i + 36e5 * h, this._days = +g + 7 * f, this._months = +e + 3 * d + 12 * c, this._data = {}, this._locale = y(), this._bubble() + } + + function Ia(a) { + return a instanceof Ha + } + + function Ja(a, b) { + H(a, 0, 0, function () { + var a = this.utcOffset(), + c = "+"; + return 0 > a && (a = -a, c = "-"), c + G(~~(a / 60), 2) + b + G(~~a % 60, 2) + }) + } + + function Ka(a) { + var b = (a || "").match(ad) || [], + c = b[b.length - 1] || [], + d = (c + "").match(xd) || ["-", 0, 0], + e = +(60 * d[1]) + q(d[2]); + return "+" === d[0] ? e : -e + } + + function La(b, c) { + var e, f; + return c._isUTC ? (e = c.clone(), f = (o(b) || d(b) ? +b : +Da(b)) - +e, e._d.setTime(+e._d + f), a.updateOffset(e, !1), e) : Da(b).local() + } + + function Ma(a) { + return 15 * -Math.round(a._d.getTimezoneOffset() / 15) + } + + function Na(b, c) { + var d, e = this._offset || 0; + return null != b ? ("string" == typeof b && (b = Ka(b)), Math.abs(b) < 16 && (b = 60 * b), !this._isUTC && c && (d = Ma(this)), this._offset = b, this._isUTC = !0, null != d && this.add(d, "m"), e !== b && (!c || this._changeInProgress ? bb(this, Ya(b - e, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, a.updateOffset(this, !0), this._changeInProgress = null)), this) : this._isUTC ? e : Ma(this) + } + + function Oa(a, b) { + return null != a ? ("string" != typeof a && (a = -a), this.utcOffset(a, b), this) : -this.utcOffset() + } + + function Pa(a) { + return this.utcOffset(0, a) + } + + function Qa(a) { + return this._isUTC && (this.utcOffset(0, a), this._isUTC = !1, a && this.subtract(Ma(this), "m")), this + } + + function Ra() { + return this._tzm ? this.utcOffset(this._tzm) : "string" == typeof this._i && this.utcOffset(Ka(this._i)), this + } + + function Sa(a) { + return a = a ? Da(a).utcOffset() : 0, (this.utcOffset() - a) % 60 === 0 + } + + function Ta() { + return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() + } + + function Ua() { + if ("undefined" != typeof this._isDSTShifted) return this._isDSTShifted; + var a = {}; + if (m(a, this), a = Aa(a), a._a) { + var b = a._isUTC ? h(a._a) : Da(a._a); + this._isDSTShifted = this.isValid() && r(a._a, b.toArray()) > 0 + } else this._isDSTShifted = !1; + return this._isDSTShifted + } + + function Va() { + return !this._isUTC + } + + function Wa() { + return this._isUTC + } + + function Xa() { + return this._isUTC && 0 === this._offset + } + + function Ya(a, b) { + var c, d, e, g = a, + h = null; + return Ia(a) ? g = { + ms: a._milliseconds, + d: a._days, + M: a._months + } : "number" == typeof a ? (g = {}, b ? g[b] = a : g.milliseconds = a) : (h = yd.exec(a)) ? (c = "-" === h[1] ? -1 : 1, g = { + y: 0, + d: q(h[hd]) * c, + h: q(h[id]) * c, + m: q(h[jd]) * c, + s: q(h[kd]) * c, + ms: q(h[ld]) * c + }) : (h = zd.exec(a)) ? (c = "-" === h[1] ? -1 : 1, g = { + y: Za(h[2], c), + M: Za(h[3], c), + d: Za(h[4], c), + h: Za(h[5], c), + m: Za(h[6], c), + s: Za(h[7], c), + w: Za(h[8], c) + }) : null == g ? g = {} : "object" == typeof g && ("from" in g || "to" in g) && (e = _a(Da(g.from), Da(g.to)), g = {}, g.ms = e.milliseconds, g.M = e.months), d = new Ha(g), Ia(a) && f(a, "_locale") && (d._locale = a._locale), d + } + + function Za(a, b) { + var c = a && parseFloat(a.replace(",", ".")); + return (isNaN(c) ? 0 : c) * b + } + + function $a(a, b) { + var c = { + milliseconds: 0, + months: 0 + }; + return c.months = b.month() - a.month() + 12 * (b.year() - a.year()), a.clone().add(c.months, "M").isAfter(b) && --c.months, c.milliseconds = +b - +a.clone().add(c.months, "M"), c + } + + function _a(a, b) { + var c; + return b = La(b, a), a.isBefore(b) ? c = $a(a, b) : (c = $a(b, a), c.milliseconds = -c.milliseconds, c.months = -c.months), c + } + + function ab(a, b) { + return function (c, d) { + var e, f; + return null === d || isNaN(+d) || (ba(b, "moment()." + b + "(period, number) is deprecated. Please use moment()." + b + "(number, period)."), f = c, c = d, d = f), c = "string" == typeof c ? +c : c, e = Ya(c, d), bb(this, e, a), this + } + } + + function bb(b, c, d, e) { + var f = c._milliseconds, + g = c._days, + h = c._months; + e = null == e ? !0 : e, f && b._d.setTime(+b._d + f * d), g && E(b, "Date", D(b, "Date") + g * d), h && X(b, D(b, "Month") + h * d), e && a.updateOffset(b, g || h) + } + + function cb(a, b) { + var c = a || Da(), + d = La(c, this).startOf("day"), + e = this.diff(d, "days", !0), + f = -6 > e ? "sameElse" : -1 > e ? "lastWeek" : 0 > e ? "lastDay" : 1 > e ? "sameDay" : 2 > e ? "nextDay" : 7 > e ? "nextWeek" : "sameElse"; + return this.format(b && b[f] || this.localeData().calendar(f, this, Da(c))) + } + + function db() { + return new n(this) + } + + function eb(a, b) { + var c; + return b = A("undefined" != typeof b ? b : "millisecond"), "millisecond" === b ? (a = o(a) ? a : Da(a), +this > +a) : (c = o(a) ? +a : +Da(a), c < +this.clone().startOf(b)) + } + + function fb(a, b) { + var c; + return b = A("undefined" != typeof b ? b : "millisecond"), "millisecond" === b ? (a = o(a) ? a : Da(a), +a > +this) : (c = o(a) ? +a : +Da(a), +this.clone().endOf(b) < c) + } + + function gb(a, b, c) { + return this.isAfter(a, c) && this.isBefore(b, c) + } + + function hb(a, b) { + var c; + return b = A(b || "millisecond"), "millisecond" === b ? (a = o(a) ? a : Da(a), +this === +a) : (c = +Da(a), +this.clone().startOf(b) <= c && c <= +this.clone().endOf(b)) + } + + function ib(a, b, c) { + var d, e, f = La(a, this), + g = 6e4 * (f.utcOffset() - this.utcOffset()); + return b = A(b), "year" === b || "month" === b || "quarter" === b ? (e = jb(this, f), "quarter" === b ? e /= 3 : "year" === b && (e /= 12)) : (d = this - f, e = "second" === b ? d / 1e3 : "minute" === b ? d / 6e4 : "hour" === b ? d / 36e5 : "day" === b ? (d - g) / 864e5 : "week" === b ? (d - g) / 6048e5 : d), c ? e : p(e) + } + + function jb(a, b) { + var c, d, e = 12 * (b.year() - a.year()) + (b.month() - a.month()), + f = a.clone().add(e, "months"); + return 0 > b - f ? (c = a.clone().add(e - 1, "months"), d = (b - f) / (f - c)) : (c = a.clone().add(e + 1, "months"), d = (b - f) / (c - f)), -(e + d) + } + + function kb() { + return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") + } + + function lb() { + var a = this.clone().utc(); + return 0 < a.year() && a.year() <= 9999 ? "function" == typeof Date.prototype.toISOString ? this.toDate().toISOString() : K(a, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : K(a, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") + } + + function mb(b) { + var c = K(this, b || a.defaultFormat); + return this.localeData().postformat(c) + } + + function nb(a, b) { + return this.isValid() ? Ya({ + to: this, + from: a + }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate() + } + + function ob(a) { + return this.from(Da(), a) + } + + function pb(a, b) { + return this.isValid() ? Ya({ + from: this, + to: a + }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate() + } + + function qb(a) { + return this.to(Da(), a) + } + + function rb(a) { + var b; + return void 0 === a ? this._locale._abbr : (b = y(a), null != b && (this._locale = b), this) + } + + function sb() { + return this._locale + } + + function tb(a) { + switch (a = A(a)) { + case "year": + this.month(0); + case "quarter": + case "month": + this.date(1); + case "week": + case "isoWeek": + case "day": + this.hours(0); + case "hour": + this.minutes(0); + case "minute": + this.seconds(0); + case "second": + this.milliseconds(0) + } + return "week" === a && this.weekday(0), "isoWeek" === a && this.isoWeekday(1), "quarter" === a && this.month(3 * Math.floor(this.month() / 3)), this + } + + function ub(a) { + return a = A(a), void 0 === a || "millisecond" === a ? this : this.startOf(a).add(1, "isoWeek" === a ? "week" : a).subtract(1, "ms") + } + + function vb() { + return +this._d - 6e4 * (this._offset || 0) + } + + function wb() { + return Math.floor(+this / 1e3) + } + + function xb() { + return this._offset ? new Date(+this) : this._d + } + + function yb() { + var a = this; + return [a.year(), a.month(), a.date(), a.hour(), a.minute(), a.second(), a.millisecond()] + } + + function zb() { + var a = this; + return { + years: a.year(), + months: a.month(), + date: a.date(), + hours: a.hours(), + minutes: a.minutes(), + seconds: a.seconds(), + milliseconds: a.milliseconds() + } + } + + function Ab() { + return k(this) + } + + function Bb() { + return g({}, j(this)) + } + + function Cb() { + return j(this).overflow + } + + function Db(a, b) { + H(0, [a, a.length], 0, b) + } + + function Eb(a, b, c) { + return ja(Da([a, 11, 31 + b - c]), b, c).week + } + + function Fb(a) { + var b = ja(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return null == a ? b : this.add(a - b, "y") + } + + function Gb(a) { + var b = ja(this, 1, 4).year; + return null == a ? b : this.add(a - b, "y") + } + + function Hb() { + return Eb(this.year(), 1, 4) + } + + function Ib() { + var a = this.localeData()._week; + return Eb(this.year(), a.dow, a.doy) + } + + function Jb(a) { + return null == a ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (a - 1) + this.month() % 3) + } + + function Kb(a, b) { + return "string" != typeof a ? a : isNaN(a) ? (a = b.weekdaysParse(a), "number" == typeof a ? a : null) : parseInt(a, 10) + } + + function Lb(a) { + return this._weekdays[a.day()] + } + + function Mb(a) { + return this._weekdaysShort[a.day()] + } + + function Nb(a) { + return this._weekdaysMin[a.day()] + } + + function Ob(a) { + var b, c, d; + for (this._weekdaysParse = this._weekdaysParse || [], b = 0; 7 > b; b++) + if (this._weekdaysParse[b] || (c = Da([2e3, 1]).day(b), d = "^" + this.weekdays(c, "") + "|^" + this.weekdaysShort(c, "") + "|^" + this.weekdaysMin(c, ""), this._weekdaysParse[b] = new RegExp(d.replace(".", ""), "i")), this._weekdaysParse[b].test(a)) return b + } + + function Pb(a) { + var b = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + return null != a ? (a = Kb(a, this.localeData()), this.add(a - b, "d")) : b + } + + function Qb(a) { + var b = (this.day() + 7 - this.localeData()._week.dow) % 7; + return null == a ? b : this.add(a - b, "d") + } + + function Rb(a) { + return null == a ? this.day() || 7 : this.day(this.day() % 7 ? a : a - 7) + } + + function Sb(a, b) { + H(a, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), b) + }) + } + + function Tb(a, b) { + return b._meridiemParse + } + + function Ub(a) { + return "p" === (a + "").toLowerCase().charAt(0) + } + + function Vb(a, b, c) { + return a > 11 ? c ? "pm" : "PM" : c ? "am" : "AM" + } + + function Wb(a, b) { + b[ld] = q(1e3 * ("0." + a)) + } + + function Xb() { + return this._isUTC ? "UTC" : "" + } + + function Yb() { + return this._isUTC ? "Coordinated Universal Time" : "" + } + + function Zb(a) { + return Da(1e3 * a) + } + + function $b() { + return Da.apply(null, arguments).parseZone() + } + + function _b(a, b, c) { + var d = this._calendar[a]; + return "function" == typeof d ? d.call(b, c) : d + } + + function ac(a) { + var b = this._longDateFormat[a], + c = this._longDateFormat[a.toUpperCase()]; + return b || !c ? b : (this._longDateFormat[a] = c.replace(/MMMM|MM|DD|dddd/g, function (a) { + return a.slice(1) + }), this._longDateFormat[a]) + } + + function bc() { + return this._invalidDate + } + + function cc(a) { + return this._ordinal.replace("%d", a) + } + + function dc(a) { + return a + } + + function ec(a, b, c, d) { + var e = this._relativeTime[c]; + return "function" == typeof e ? e(a, b, c, d) : e.replace(/%d/i, a) + } + + function fc(a, b) { + var c = this._relativeTime[a > 0 ? "future" : "past"]; + return "function" == typeof c ? c(b) : c.replace(/%s/i, b) + } + + function gc(a) { + var b, c; + for (c in a) b = a[c], "function" == typeof b ? this[c] = b : this["_" + c] = b; + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + "|" + /\d{1,2}/.source) + } + + function hc(a, b, c, d) { + var e = y(), + f = h().set(d, b); + return e[c](f, a) + } + + function ic(a, b, c, d, e) { + if ("number" == typeof a && (b = a, a = void 0), a = a || "", null != b) return hc(a, b, c, e); + var f, g = []; + for (f = 0; d > f; f++) g[f] = hc(a, f, c, e); + return g + } + + function jc(a, b) { + return ic(a, b, "months", 12, "month") + } + + function kc(a, b) { + return ic(a, b, "monthsShort", 12, "month") + } + + function lc(a, b) { + return ic(a, b, "weekdays", 7, "day") + } + + function mc(a, b) { + return ic(a, b, "weekdaysShort", 7, "day") + } + + function nc(a, b) { + return ic(a, b, "weekdaysMin", 7, "day") + } + + function oc() { + var a = this._data; + return this._milliseconds = Wd(this._milliseconds), this._days = Wd(this._days), this._months = Wd(this._months), a.milliseconds = Wd(a.milliseconds), a.seconds = Wd(a.seconds), a.minutes = Wd(a.minutes), a.hours = Wd(a.hours), a.months = Wd(a.months), a.years = Wd(a.years), this + } + + function pc(a, b, c, d) { + var e = Ya(b, c); + return a._milliseconds += d * e._milliseconds, a._days += d * e._days, a._months += d * e._months, a._bubble() + } + + function qc(a, b) { + return pc(this, a, b, 1) + } + + function rc(a, b) { + return pc(this, a, b, -1) + } + + function sc(a) { + return 0 > a ? Math.floor(a) : Math.ceil(a) + } + + function tc() { + var a, b, c, d, e, f = this._milliseconds, + g = this._days, + h = this._months, + i = this._data; + return f >= 0 && g >= 0 && h >= 0 || 0 >= f && 0 >= g && 0 >= h || (f += 864e5 * sc(vc(h) + g), g = 0, h = 0), i.milliseconds = f % 1e3, a = p(f / 1e3), i.seconds = a % 60, b = p(a / 60), i.minutes = b % 60, c = p(b / 60), i.hours = c % 24, g += p(c / 24), e = p(uc(g)), h += e, g -= sc(vc(e)), d = p(h / 12), h %= 12, i.days = g, i.months = h, i.years = d, this + } + + function uc(a) { + return 4800 * a / 146097 + } + + function vc(a) { + return 146097 * a / 4800 + } + + function wc(a) { + var b, c, d = this._milliseconds; + if (a = A(a), "month" === a || "year" === a) return b = this._days + d / 864e5, c = this._months + uc(b), "month" === a ? c : c / 12; + switch (b = this._days + Math.round(vc(this._months)), a) { + case "week": + return b / 7 + d / 6048e5; + case "day": + return b + d / 864e5; + case "hour": + return 24 * b + d / 36e5; + case "minute": + return 1440 * b + d / 6e4; + case "second": + return 86400 * b + d / 1e3; + case "millisecond": + return Math.floor(864e5 * b) + d; + default: + throw new Error("Unknown unit " + a) + } + } + + function xc() { + return this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * q(this._months / 12) + } + + function yc(a) { + return function () { + return this.as(a) + } + } + + function zc(a) { + return a = A(a), this[a + "s"]() + } + + function Ac(a) { + return function () { + return this._data[a] + } + } + + function Bc() { + return p(this.days() / 7) + } + + function Cc(a, b, c, d, e) { + return e.relativeTime(b || 1, !!c, a, d) + } + + function Dc(a, b, c) { + var d = Ya(a).abs(), + e = ke(d.as("s")), + f = ke(d.as("m")), + g = ke(d.as("h")), + h = ke(d.as("d")), + i = ke(d.as("M")), + j = ke(d.as("y")), + k = e < le.s && ["s", e] || 1 === f && ["m"] || f < le.m && ["mm", f] || 1 === g && ["h"] || g < le.h && ["hh", g] || 1 === h && ["d"] || h < le.d && ["dd", h] || 1 === i && ["M"] || i < le.M && ["MM", i] || 1 === j && ["y"] || ["yy", j]; + return k[2] = b, k[3] = +a > 0, k[4] = c, Cc.apply(null, k) + } + + function Ec(a, b) { + return void 0 === le[a] ? !1 : void 0 === b ? le[a] : (le[a] = b, !0) + } + + function Fc(a) { + var b = this.localeData(), + c = Dc(this, !a, b); + return a && (c = b.pastFuture(+this, c)), b.postformat(c) + } + + function Gc() { + var a, b, c, d = me(this._milliseconds) / 1e3, + e = me(this._days), + f = me(this._months); + a = p(d / 60), b = p(a / 60), d %= 60, a %= 60, c = p(f / 12), f %= 12; + var g = c, + h = f, + i = e, + j = b, + k = a, + l = d, + m = this.asSeconds(); + return m ? (0 > m ? "-" : "") + "P" + (g ? g + "Y" : "") + (h ? h + "M" : "") + (i ? i + "D" : "") + (j || k || l ? "T" : "") + (j ? j + "H" : "") + (k ? k + "M" : "") + (l ? l + "S" : "") : "P0D" + } + var Hc, Ic, Jc = a.momentProperties = [], + Kc = !1, + Lc = {}, + Mc = {}, + Nc = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, + Oc = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + Pc = {}, + Qc = {}, + Rc = /\d/, + Sc = /\d\d/, + Tc = /\d{3}/, + Uc = /\d{4}/, + Vc = /[+-]?\d{6}/, + Wc = /\d\d?/, + Xc = /\d{1,3}/, + Yc = /\d{1,4}/, + Zc = /[+-]?\d{1,6}/, + $c = /\d+/, + _c = /[+-]?\d+/, + ad = /Z|[+-]\d\d:?\d\d/gi, + bd = /[+-]?\d+(\.\d{1,3})?/, + cd = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, + dd = {}, + ed = {}, + fd = 0, + gd = 1, + hd = 2, + id = 3, + jd = 4, + kd = 5, + ld = 6; + H("M", ["MM", 2], "Mo", function () { + return this.month() + 1 + }), H("MMM", 0, 0, function (a) { + return this.localeData().monthsShort(this, a) + }), H("MMMM", 0, 0, function (a) { + return this.localeData().months(this, a) + }), z("month", "M"), N("M", Wc), N("MM", Wc, Sc), N("MMM", cd), N("MMMM", cd), Q(["M", "MM"], function (a, b) { + b[gd] = q(a) - 1 + }), Q(["MMM", "MMMM"], function (a, b, c, d) { + var e = c._locale.monthsParse(a, d, c._strict); + null != e ? b[gd] = e : j(c).invalidMonth = a + }); + var md = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + nd = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + od = {}; + a.suppressDeprecationWarnings = !1; + var pd = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + qd = [ + ["YYYYYY-MM-DD", /[+-]\d{6}-\d{2}-\d{2}/], + ["YYYY-MM-DD", /\d{4}-\d{2}-\d{2}/], + ["GGGG-[W]WW-E", /\d{4}-W\d{2}-\d/], + ["GGGG-[W]WW", /\d{4}-W\d{2}/], + ["YYYY-DDD", /\d{4}-\d{3}/] + ], + rd = [ + ["HH:mm:ss.SSSS", /(T| )\d\d:\d\d:\d\d\.\d+/], + ["HH:mm:ss", /(T| )\d\d:\d\d:\d\d/], + ["HH:mm", /(T| )\d\d:\d\d/], + ["HH", /(T| )\d\d/] + ], + sd = /^\/?Date\((\-?\d+)/i; + a.createFromInputFallback = aa("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.", function (a) { + a._d = new Date(a._i + (a._useUTC ? " UTC" : "")) + }), H(0, ["YY", 2], 0, function () { + return this.year() % 100 + }), H(0, ["YYYY", 4], 0, "year"), H(0, ["YYYYY", 5], 0, "year"), H(0, ["YYYYYY", 6, !0], 0, "year"), z("year", "y"), N("Y", _c), N("YY", Wc, Sc), N("YYYY", Yc, Uc), N("YYYYY", Zc, Vc), N("YYYYYY", Zc, Vc), Q(["YYYYY", "YYYYYY"], fd), Q("YYYY", function (b, c) { + c[fd] = 2 === b.length ? a.parseTwoDigitYear(b) : q(b) + }), Q("YY", function (b, c) { + c[fd] = a.parseTwoDigitYear(b) + }), a.parseTwoDigitYear = function (a) { + return q(a) + (q(a) > 68 ? 1900 : 2e3) + }; + var td = C("FullYear", !1); + H("w", ["ww", 2], "wo", "week"), H("W", ["WW", 2], "Wo", "isoWeek"), z("week", "w"), z("isoWeek", "W"), N("w", Wc), N("ww", Wc, Sc), N("W", Wc), N("WW", Wc, Sc), R(["w", "ww", "W", "WW"], function (a, b, c, d) { + b[d.substr(0, 1)] = q(a) + }); + var ud = { + dow: 0, + doy: 6 + }; + H("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), z("dayOfYear", "DDD"), N("DDD", Xc), N("DDDD", Tc), Q(["DDD", "DDDD"], function (a, b, c) { + c._dayOfYear = q(a) + }), a.ISO_8601 = function () {}; + var vd = aa("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548", function () { + var a = Da.apply(null, arguments); + return this > a ? this : a + }), + wd = aa("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548", function () { + var a = Da.apply(null, arguments); + return a > this ? this : a + }); + Ja("Z", ":"), Ja("ZZ", ""), N("Z", ad), N("ZZ", ad), Q(["Z", "ZZ"], function (a, b, c) { + c._useUTC = !0, c._tzm = Ka(a) + }); + var xd = /([\+\-]|\d\d)/gi; + a.updateOffset = function () {}; + var yd = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + zd = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; + Ya.fn = Ha.prototype; + var Ad = ab(1, "add"), + Bd = ab(-1, "subtract"); + a.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ"; + var Cd = aa("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function (a) { + return void 0 === a ? this.localeData() : this.locale(a) + }); + H(0, ["gg", 2], 0, function () { + return this.weekYear() % 100 + }), H(0, ["GG", 2], 0, function () { + return this.isoWeekYear() % 100 + }), Db("gggg", "weekYear"), Db("ggggg", "weekYear"), Db("GGGG", "isoWeekYear"), Db("GGGGG", "isoWeekYear"), z("weekYear", "gg"), z("isoWeekYear", "GG"), N("G", _c), N("g", _c), N("GG", Wc, Sc), N("gg", Wc, Sc), N("GGGG", Yc, Uc), N("gggg", Yc, Uc), N("GGGGG", Zc, Vc), N("ggggg", Zc, Vc), R(["gggg", "ggggg", "GGGG", "GGGGG"], function (a, b, c, d) { + b[d.substr(0, 2)] = q(a) + }), R(["gg", "GG"], function (b, c, d, e) { + c[e] = a.parseTwoDigitYear(b) + }), H("Q", 0, 0, "quarter"), z("quarter", "Q"), N("Q", Rc), Q("Q", function (a, b) { + b[gd] = 3 * (q(a) - 1) + }), H("D", ["DD", 2], "Do", "date"), z("date", "D"), N("D", Wc), N("DD", Wc, Sc), N("Do", function (a, b) { + return a ? b._ordinalParse : b._ordinalParseLenient + }), Q(["D", "DD"], hd), Q("Do", function (a, b) { + b[hd] = q(a.match(Wc)[0], 10) + }); + var Dd = C("Date", !0); + H("d", 0, "do", "day"), H("dd", 0, 0, function (a) { + return this.localeData().weekdaysMin(this, a) + }), H("ddd", 0, 0, function (a) { + return this.localeData().weekdaysShort(this, a) + }), H("dddd", 0, 0, function (a) { + return this.localeData().weekdays(this, a) + }), H("e", 0, 0, "weekday"), H("E", 0, 0, "isoWeekday"), z("day", "d"), z("weekday", "e"), z("isoWeekday", "E"), N("d", Wc), N("e", Wc), N("E", Wc), N("dd", cd), N("ddd", cd), N("dddd", cd), R(["dd", "ddd", "dddd"], function (a, b, c) { + var d = c._locale.weekdaysParse(a); + null != d ? b.d = d : j(c).invalidWeekday = a + }), R(["d", "e", "E"], function (a, b, c, d) { + b[d] = q(a) + }); + var Ed = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + Fd = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + Gd = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"); + H("H", ["HH", 2], 0, "hour"), H("h", ["hh", 2], 0, function () { + return this.hours() % 12 || 12 + }), Sb("a", !0), Sb("A", !1), z("hour", "h"), N("a", Tb), N("A", Tb), N("H", Wc), N("h", Wc), N("HH", Wc, Sc), N("hh", Wc, Sc), Q(["H", "HH"], id), Q(["a", "A"], function (a, b, c) { + c._isPm = c._locale.isPM(a), c._meridiem = a + }), Q(["h", "hh"], function (a, b, c) { + b[id] = q(a), j(c).bigHour = !0 + }); + var Hd = /[ap]\.?m?\.?/i, + Id = C("Hours", !0); + H("m", ["mm", 2], 0, "minute"), z("minute", "m"), N("m", Wc), N("mm", Wc, Sc), Q(["m", "mm"], jd); + var Jd = C("Minutes", !1); + H("s", ["ss", 2], 0, "second"), z("second", "s"), N("s", Wc), N("ss", Wc, Sc), Q(["s", "ss"], kd); + var Kd = C("Seconds", !1); + H("S", 0, 0, function () { + return ~~(this.millisecond() / 100) + }), H(0, ["SS", 2], 0, function () { + return ~~(this.millisecond() / 10) + }), H(0, ["SSS", 3], 0, "millisecond"), H(0, ["SSSS", 4], 0, function () { + return 10 * this.millisecond() + }), H(0, ["SSSSS", 5], 0, function () { + return 100 * this.millisecond() + }), H(0, ["SSSSSS", 6], 0, function () { + return 1e3 * this.millisecond() + }), H(0, ["SSSSSSS", 7], 0, function () { + return 1e4 * this.millisecond() + }), H(0, ["SSSSSSSS", 8], 0, function () { + return 1e5 * this.millisecond() + }), H(0, ["SSSSSSSSS", 9], 0, function () { + return 1e6 * this.millisecond() + }), z("millisecond", "ms"), N("S", Xc, Rc), N("SS", Xc, Sc), N("SSS", Xc, Tc); + var Ld; + for (Ld = "SSSS"; Ld.length <= 9; Ld += "S") N(Ld, $c); + for (Ld = "S"; Ld.length <= 9; Ld += "S") Q(Ld, Wb); + var Md = C("Milliseconds", !1); + H("z", 0, 0, "zoneAbbr"), H("zz", 0, 0, "zoneName"); + var Nd = n.prototype; + Nd.add = Ad, Nd.calendar = cb, Nd.clone = db, Nd.diff = ib, Nd.endOf = ub, Nd.format = mb, Nd.from = nb, Nd.fromNow = ob, Nd.to = pb, Nd.toNow = qb, Nd.get = F, Nd.invalidAt = Cb, Nd.isAfter = eb, Nd.isBefore = fb, Nd.isBetween = gb, Nd.isSame = hb, Nd.isValid = Ab, Nd.lang = Cd, Nd.locale = rb, Nd.localeData = sb, Nd.max = wd, Nd.min = vd, Nd.parsingFlags = Bb, Nd.set = F, Nd.startOf = tb, Nd.subtract = Bd, Nd.toArray = yb, Nd.toObject = zb, Nd.toDate = xb, Nd.toISOString = lb, Nd.toJSON = lb, Nd.toString = kb, Nd.unix = wb, Nd.valueOf = vb, Nd.year = td, Nd.isLeapYear = ia, Nd.weekYear = Fb, Nd.isoWeekYear = Gb, Nd.quarter = Nd.quarters = Jb, Nd.month = Y, Nd.daysInMonth = Z, Nd.week = Nd.weeks = na, Nd.isoWeek = Nd.isoWeeks = oa, Nd.weeksInYear = Ib, Nd.isoWeeksInYear = Hb, Nd.date = Dd, Nd.day = Nd.days = Pb, Nd.weekday = Qb, Nd.isoWeekday = Rb, Nd.dayOfYear = qa, Nd.hour = Nd.hours = Id, Nd.minute = Nd.minutes = Jd, Nd.second = Nd.seconds = Kd, + Nd.millisecond = Nd.milliseconds = Md, Nd.utcOffset = Na, Nd.utc = Pa, Nd.local = Qa, Nd.parseZone = Ra, Nd.hasAlignedHourOffset = Sa, Nd.isDST = Ta, Nd.isDSTShifted = Ua, Nd.isLocal = Va, Nd.isUtcOffset = Wa, Nd.isUtc = Xa, Nd.isUTC = Xa, Nd.zoneAbbr = Xb, Nd.zoneName = Yb, Nd.dates = aa("dates accessor is deprecated. Use date instead.", Dd), Nd.months = aa("months accessor is deprecated. Use month instead", Y), Nd.years = aa("years accessor is deprecated. Use year instead", td), Nd.zone = aa("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779", Oa); + var Od = Nd, + Pd = { + sameDay: "[Today at] LT", + nextDay: "[Tomorrow at] LT", + nextWeek: "dddd [at] LT", + lastDay: "[Yesterday at] LT", + lastWeek: "[Last] dddd [at] LT", + sameElse: "L" + }, + Qd = { + LTS: "h:mm:ss A", + LT: "h:mm A", + L: "MM/DD/YYYY", + LL: "MMMM D, YYYY", + LLL: "MMMM D, YYYY h:mm A", + LLLL: "dddd, MMMM D, YYYY h:mm A" + }, + Rd = "Invalid date", + Sd = "%d", + Td = /\d{1,2}/, + Ud = { + future: "in %s", + past: "%s ago", + s: "a few seconds", + m: "a minute", + mm: "%d minutes", + h: "an hour", + hh: "%d hours", + d: "a day", + dd: "%d days", + M: "a month", + MM: "%d months", + y: "a year", + yy: "%d years" + }, + Vd = s.prototype; + Vd._calendar = Pd, Vd.calendar = _b, Vd._longDateFormat = Qd, Vd.longDateFormat = ac, Vd._invalidDate = Rd, Vd.invalidDate = bc, Vd._ordinal = Sd, Vd.ordinal = cc, Vd._ordinalParse = Td, Vd.preparse = dc, Vd.postformat = dc, Vd._relativeTime = Ud, Vd.relativeTime = ec, Vd.pastFuture = fc, Vd.set = gc, Vd.months = U, Vd._months = md, Vd.monthsShort = V, Vd._monthsShort = nd, Vd.monthsParse = W, Vd.week = ka, Vd._week = ud, Vd.firstDayOfYear = ma, Vd.firstDayOfWeek = la, Vd.weekdays = Lb, Vd._weekdays = Ed, Vd.weekdaysMin = Nb, Vd._weekdaysMin = Gd, Vd.weekdaysShort = Mb, Vd._weekdaysShort = Fd, Vd.weekdaysParse = Ob, Vd.isPM = Ub, Vd._meridiemParse = Hd, Vd.meridiem = Vb, w("en", { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal: function (a) { + var b = a % 10, + c = 1 === q(a % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th"; + return a + c + } + }), a.lang = aa("moment.lang is deprecated. Use moment.locale instead.", w), a.langData = aa("moment.langData is deprecated. Use moment.localeData instead.", y); + var Wd = Math.abs, + Xd = yc("ms"), + Yd = yc("s"), + Zd = yc("m"), + $d = yc("h"), + _d = yc("d"), + ae = yc("w"), + be = yc("M"), + ce = yc("y"), + de = Ac("milliseconds"), + ee = Ac("seconds"), + fe = Ac("minutes"), + ge = Ac("hours"), + he = Ac("days"), + ie = Ac("months"), + je = Ac("years"), + ke = Math.round, + le = { + s: 45, + m: 45, + h: 22, + d: 26, + M: 11 + }, + me = Math.abs, + ne = Ha.prototype; + ne.abs = oc, ne.add = qc, ne.subtract = rc, ne.as = wc, ne.asMilliseconds = Xd, ne.asSeconds = Yd, ne.asMinutes = Zd, ne.asHours = $d, ne.asDays = _d, ne.asWeeks = ae, ne.asMonths = be, ne.asYears = ce, ne.valueOf = xc, ne._bubble = tc, ne.get = zc, ne.milliseconds = de, ne.seconds = ee, ne.minutes = fe, ne.hours = ge, ne.days = he, ne.weeks = Bc, ne.months = ie, ne.years = je, ne.humanize = Fc, ne.toISOString = Gc, ne.toString = Gc, ne.toJSON = Gc, ne.locale = rb, ne.localeData = sb, ne.toIsoString = aa("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", Gc), ne.lang = Cd, H("X", 0, 0, "unix"), H("x", 0, 0, "valueOf"), N("x", _c), N("X", bd), Q("X", function (a, b, c) { + c._d = new Date(1e3 * parseFloat(a, 10)) + }), Q("x", function (a, b, c) { + c._d = new Date(q(a)) + }), a.version = "2.10.6", b(Da), a.fn = Od, a.min = Fa, a.max = Ga, a.utc = h, a.unix = Zb, a.months = jc, a.isDate = d, a.locale = w, a.invalid = l, a.duration = Ya, a.isMoment = o, a.weekdays = lc, a.parseZone = $b, a.localeData = y, a.isDuration = Ia, a.monthsShort = kc, a.weekdaysMin = nc, a.defineLocale = x, a.weekdaysShort = mc, a.normalizeUnits = A, a.relativeTimeThreshold = Ec; + var oe = a; + return oe +}); \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..dbadbb8 --- /dev/null +++ b/utils/util.js @@ -0,0 +1,19 @@ +const formatTime = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') +} + +const formatNumber = n => { + n = n.toString() + return n[1] ? n : '0' + n +} + +module.exports = { + formatTime: formatTime +}