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
+}