Showing preview only (296K chars total). Download the full file or copy to clipboard to get everything.
Repository: tommenx/wxss
Branch: master
Commit: 7c3cd9345c35
Files: 189
Total size: 243.5 KB
Directory structure:
gitextract_uivxnbgl/
├── LICENSE
├── README.md
├── checkin.sql
├── client/
│ ├── README.md
│ ├── app.js
│ ├── app.json
│ ├── app.wxss
│ ├── config.js
│ ├── dist/
│ │ ├── app.js
│ │ ├── app.json
│ │ ├── app.wxss
│ │ ├── example/
│ │ │ ├── actionsheet/
│ │ │ │ ├── actionsheet.js
│ │ │ │ ├── actionsheet.wxml
│ │ │ │ └── actionsheet.wxss
│ │ │ ├── article/
│ │ │ │ ├── article.js
│ │ │ │ ├── article.wxml
│ │ │ │ └── article.wxss
│ │ │ ├── badge/
│ │ │ │ ├── badge.js
│ │ │ │ └── badge.wxml
│ │ │ ├── button/
│ │ │ │ ├── button.js
│ │ │ │ ├── button.wxml
│ │ │ │ └── button.wxss
│ │ │ ├── dialog/
│ │ │ │ ├── dialog.js
│ │ │ │ ├── dialog.wxml
│ │ │ │ └── dialog.wxss
│ │ │ ├── flex/
│ │ │ │ ├── flex.js
│ │ │ │ ├── flex.wxml
│ │ │ │ └── flex.wxss
│ │ │ ├── footer/
│ │ │ │ ├── footer.js
│ │ │ │ ├── footer.wxml
│ │ │ │ └── footer.wxss
│ │ │ ├── gallery/
│ │ │ │ ├── gallery.js
│ │ │ │ └── gallery.wxml
│ │ │ ├── grid/
│ │ │ │ ├── grid.js
│ │ │ │ └── grid.wxml
│ │ │ ├── icons/
│ │ │ │ ├── icons.js
│ │ │ │ ├── icons.wxml
│ │ │ │ └── icons.wxss
│ │ │ ├── images/
│ │ │ │ └── base64.js
│ │ │ ├── index.js
│ │ │ ├── index.wxml
│ │ │ ├── index.wxss
│ │ │ ├── input/
│ │ │ │ ├── input.js
│ │ │ │ └── input.wxml
│ │ │ ├── list/
│ │ │ │ ├── list.js
│ │ │ │ └── list.wxml
│ │ │ ├── loadmore/
│ │ │ │ ├── loadmore.js
│ │ │ │ ├── loadmore.wxml
│ │ │ │ └── loadmore.wxss
│ │ │ ├── msg/
│ │ │ │ ├── msg.js
│ │ │ │ ├── msg.wxml
│ │ │ │ ├── msg.wxss
│ │ │ │ ├── msg_fail.js
│ │ │ │ ├── msg_fail.wxml
│ │ │ │ ├── msg_fail.wxss
│ │ │ │ ├── msg_success.js
│ │ │ │ ├── msg_success.wxml
│ │ │ │ └── msg_success.wxss
│ │ │ ├── navbar/
│ │ │ │ ├── navbar.js
│ │ │ │ ├── navbar.wxml
│ │ │ │ └── navbar.wxss
│ │ │ ├── panel/
│ │ │ │ ├── panel.js
│ │ │ │ └── panel.wxml
│ │ │ ├── picker/
│ │ │ │ ├── picker.js
│ │ │ │ ├── picker.wxml
│ │ │ │ └── picker.wxss
│ │ │ ├── preview/
│ │ │ │ ├── preview.js
│ │ │ │ ├── preview.wxml
│ │ │ │ └── preview.wxss
│ │ │ ├── progress/
│ │ │ │ ├── progress.js
│ │ │ │ ├── progress.wxml
│ │ │ │ └── progress.wxss
│ │ │ ├── searchbar/
│ │ │ │ ├── searchbar.js
│ │ │ │ ├── searchbar.wxml
│ │ │ │ └── searchbar.wxss
│ │ │ ├── slider/
│ │ │ │ ├── slider.js
│ │ │ │ ├── slider.wxml
│ │ │ │ └── slider.wxss
│ │ │ ├── tabbar/
│ │ │ │ ├── tabbar.js
│ │ │ │ └── tabbar.wxml
│ │ │ ├── toast/
│ │ │ │ ├── toast.js
│ │ │ │ ├── toast.wxml
│ │ │ │ └── toast.wxss
│ │ │ └── uploader/
│ │ │ ├── uploader.js
│ │ │ └── uploader.wxml
│ │ └── style/
│ │ ├── base/
│ │ │ ├── fn.wxss
│ │ │ ├── mixin/
│ │ │ │ ├── setArrow.wxss
│ │ │ │ ├── setOnepx.wxss
│ │ │ │ └── text.wxss
│ │ │ ├── reset.wxss
│ │ │ └── variable/
│ │ │ ├── color.wxss
│ │ │ ├── global.wxss
│ │ │ ├── weui-button.wxss
│ │ │ ├── weui-cell.wxss
│ │ │ ├── weui-dialog.wxss
│ │ │ ├── weui-grid.wxss
│ │ │ ├── weui-msg.wxss
│ │ │ └── weui-progress.wxss
│ │ ├── weui.wxss
│ │ └── widget/
│ │ ├── weui-agree/
│ │ │ └── weui-agree.wxss
│ │ ├── weui-animate/
│ │ │ └── weui-animate.wxss
│ │ ├── weui-button/
│ │ │ └── weui-button.wxss
│ │ ├── weui-cell/
│ │ │ ├── weui-access.wxss
│ │ │ ├── weui-cell.wxss
│ │ │ ├── weui-check.wxss
│ │ │ ├── weui-form/
│ │ │ │ ├── weui-form-preview.wxss
│ │ │ │ ├── weui-form_common.wxss
│ │ │ │ ├── weui-select.wxss
│ │ │ │ └── weui-vcode.wxss
│ │ │ ├── weui-form.wxss
│ │ │ ├── weui-switch.wxss
│ │ │ └── weui-uploader.wxss
│ │ ├── weui-flex/
│ │ │ └── weui-flex.wxss
│ │ ├── weui-footer/
│ │ │ └── weui-footer.wxss
│ │ ├── weui-grid/
│ │ │ └── weui-grid.wxss
│ │ ├── weui-loading/
│ │ │ └── weui-loading.wxss
│ │ ├── weui-media-box/
│ │ │ └── weui-media-box.wxss
│ │ ├── weui-page/
│ │ │ ├── weui-article.wxss
│ │ │ └── weui-msg.wxss
│ │ ├── weui-panel/
│ │ │ └── weui-panel.wxss
│ │ ├── weui-progress/
│ │ │ └── weui-progress.wxss
│ │ ├── weui-searchbar/
│ │ │ └── weui-searchbar.wxss
│ │ ├── weui-tab/
│ │ │ ├── weui-navbar.wxss
│ │ │ └── weui-tab.wxss
│ │ └── weui-tips/
│ │ ├── weui-badge.wxss
│ │ └── weui-loadmore.wxss
│ ├── libs/
│ │ ├── amap-wx.js
│ │ └── qqmap-wx-jssdk.js
│ ├── pages/
│ │ ├── addLocation/
│ │ │ ├── addLocation.js
│ │ │ ├── addLocation.json
│ │ │ ├── addLocation.wxml
│ │ │ └── addLocation.wxss
│ │ ├── checkIn/
│ │ │ ├── checkIn.js
│ │ │ ├── checkIn.json
│ │ │ ├── checkIn.wxml
│ │ │ └── checkIn.wxss
│ │ ├── detail/
│ │ │ ├── detail.js
│ │ │ ├── detail.json
│ │ │ ├── detail.wxml
│ │ │ └── detail.wxss
│ │ ├── logs/
│ │ │ ├── logs.js
│ │ │ ├── logs.json
│ │ │ ├── logs.wxml
│ │ │ └── logs.wxss
│ │ ├── manage/
│ │ │ ├── manage.js
│ │ │ ├── manage.json
│ │ │ ├── manage.wxml
│ │ │ └── manage.wxss
│ │ ├── new/
│ │ │ ├── new.js
│ │ │ ├── new.json
│ │ │ ├── new.wxml
│ │ │ └── new.wxss
│ │ ├── search/
│ │ │ ├── search.js
│ │ │ ├── search.json
│ │ │ ├── search.wxml
│ │ │ └── search.wxss
│ │ ├── searchDetail/
│ │ │ ├── searchDetail.js
│ │ │ ├── searchDetail.json
│ │ │ ├── searchDetail.wxml
│ │ │ └── searchDetail.wxss
│ │ └── user/
│ │ ├── user.js
│ │ ├── user.json
│ │ ├── user.wxml
│ │ └── user.wxss
│ ├── project.config.json
│ └── utils/
│ ├── getdistance.js
│ ├── upload.js
│ └── util.js
└── server/
└── checkin/
├── .idea/
│ ├── checkin.iml
│ ├── jsLibraryMappings.xml
│ ├── modules.xml
│ ├── runConfigurations/
│ │ └── bin_www.xml
│ └── workspace.xml
├── app.js
├── bin/
│ └── www
├── configs/
│ └── config.js
├── models/
│ ├── activity.js
│ ├── apply.js
│ ├── check.js
│ └── person.js
├── package.json
├── public/
│ └── stylesheets/
│ └── style.css
├── routes/
│ ├── activity.js
│ ├── check.js
│ ├── index.js
│ └── person.js
├── utils/
│ └── dbConnection.js
└── views/
├── error.ejs
└── index.ejs
================================================
FILE CONTENTS
================================================
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2019 zeng xiang
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# 活动考勤签到小程序
## 效果图

## 功能
#### 创建活动
1. 可以添加活动名称、简介等信息
2. 地点选择时有搜索建议并能够在地图上标注
3. 签到方式选择包括:照片(上传活动照片)、地点(在活动地点附近500米内)、人脸(本人签到)
#### 活动搜索
1. 通过数据库的模糊搜索简单实现——每输入一个字都进行查询
2. 点击结果列表可以查看活动详情
#### 活动管理
1. 根据当前日期分成两个Tab:正在进行中、已结束
2. 点击可以进入活动详情界面
#### 活动详情
1. 查看活动的发起人、起止日期、活动地点、简介
2. 查看参与的人数
3. 活动的签到情况根据日期进行归档,点击日期可以查看当日的签到情况
#### 活动签到
1. 首先必须上传打卡照片,从相册中选择
2. 点击地点验证即可通过当前经纬度以及活动地点经纬度简单计算距离,小于500m认为在活动区域
3. 点击人脸验证,通过Face++的人脸对比接口,将上传的照片和个人信息页面的照片进行对比,置信度大于50可以认作是同一个人
4. 当所有的要求都满足后,完成活动的签到
#### 个人信息
1. 可以更改当前的照片
## 相关技术
1. 数据库采用MySQL
2. 服务器基于Nodejs的Express4.0框架搭建,简单的接收JSON数据并返回,所有的活动信息、签到结果都记录在数据库中
3. 个人信息图片、签到图片都存储在腾讯云的cos中
4. 地理位置的推荐使用腾讯的地图接口
## 项目部署
#### 客户端
1. 小程序客户端放在client文件夹,使用小程序开发工具打开
2. 填补client/checkin/config.js中的腾讯云对象存储的相关信息
3. 填补client/checkin/pages/checkIn/checkIn.js中相应的API的key等
#### 服务端
1. 安装Nodejs,执行 node app.js
2. 数据库的配置在server/checkin/congigs/config.js中
#### 数据库
执行SQL文件即可
================================================
FILE: checkin.sql
================================================
/*
Navicat Premium Data Transfer
Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 50720
Source Host : localhost:3306
Source Schema : checkin
Target Server Type : MySQL
Target Server Version : 50720
File Encoding : 65001
Date: 31/03/2018 19:27:31
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_activity
-- ----------------------------
DROP TABLE IF EXISTS `t_activity`;
CREATE TABLE `t_activity` (
`F_ID` int(11) NOT NULL AUTO_INCREMENT,
`F_CreaterId` int(11) NOT NULL,
`F_Caption` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`F_Desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`F_Location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`F_Lat` float NULL DEFAULT NULL,
`F_Lng` float NULL DEFAULT NULL,
`F_StartDate` date NULL DEFAULT NULL,
`F_EndDate` date NULL DEFAULT NULL,
`F_IfFace` int(11) NULL DEFAULT NULL,
`F_IfLocation` int(11) NULL DEFAULT NULL,
`F_IfPhoto` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`F_ID`) USING BTREE,
INDEX `F_CreaterId`(`F_CreaterId`) USING BTREE,
CONSTRAINT `t_activity_ibfk_1` FOREIGN KEY (`F_CreaterId`) REFERENCES `t_user` (`F_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_apply
-- ----------------------------
DROP TABLE IF EXISTS `t_apply`;
CREATE TABLE `t_apply` (
`F_ID` int(11) NOT NULL AUTO_INCREMENT,
`F_ApplyerId` int(11) NOT NULL,
`F_ActivityId` int(11) NOT NULL,
`F_ApplyDate` date NULL DEFAULT NULL,
PRIMARY KEY (`F_ID`) USING BTREE,
INDEX `F_ApplyerId`(`F_ApplyerId`) USING BTREE,
INDEX `F_ActivityId`(`F_ActivityId`) USING BTREE,
CONSTRAINT `t_apply_ibfk_1` FOREIGN KEY (`F_ApplyerId`) REFERENCES `t_user` (`F_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `t_apply_ibfk_2` FOREIGN KEY (`F_ActivityId`) REFERENCES `t_activity` (`F_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_check
-- ----------------------------
DROP TABLE IF EXISTS `t_check`;
CREATE TABLE `t_check` (
`F_ID` int(11) NOT NULL AUTO_INCREMENT,
`F_ActivityId` int(11) NULL DEFAULT NULL,
`F_UserID` int(11) NULL DEFAULT NULL,
`F_CheckDate` date NULL DEFAULT NULL,
`F_PhotoUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`F_ID`) USING BTREE,
INDEX `F_ActivityId`(`F_ActivityId`) USING BTREE,
INDEX `F_UserID`(`F_UserID`) USING BTREE,
CONSTRAINT `t_check_ibfk_1` FOREIGN KEY (`F_ActivityId`) REFERENCES `t_activity` (`F_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `t_check_ibfk_2` FOREIGN KEY (`F_UserID`) REFERENCES `t_user` (`F_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 30 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`F_ID` int(11) NOT NULL AUTO_INCREMENT,
`F_Name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`F_PhotoUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`F_ID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- View structure for v_activity_info
-- ----------------------------
DROP VIEW IF EXISTS `v_activity_info`;
CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `v_activity_info` AS select `t_activity`.`F_ID` AS `F_ActivityId`,`t_user`.`F_Name` AS `F_CreaterName`,`t_activity`.`F_Caption` AS `F_Caption`,`t_activity`.`F_Desc` AS `F_Desc`,`t_activity`.`F_Location` AS `F_Location`,`t_activity`.`F_Lat` AS `F_Lat`,`t_activity`.`F_Lng` AS `F_Lng`,`t_activity`.`F_StartDate` AS `F_StartDate`,`t_activity`.`F_EndDate` AS `F_EndDate`,`t_activity`.`F_IfFace` AS `F_IfFace`,`t_activity`.`F_IfLocation` AS `F_IfLocation`,`t_activity`.`F_IfPhoto` AS `F_IfPhoto` from (`t_activity` join `t_user` on((`t_activity`.`F_CreaterId` = `t_user`.`F_ID`)));
-- ----------------------------
-- View structure for v_apply_activity
-- ----------------------------
DROP VIEW IF EXISTS `v_apply_activity`;
CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `v_apply_activity` AS select `t_activity`.`F_ID` AS `F_ID`,`t_activity`.`F_CreaterId` AS `F_CreaterId`,`t_activity`.`F_Caption` AS `F_Caption`,`t_activity`.`F_Desc` AS `F_Desc`,`t_activity`.`F_Lat` AS `F_Lat`,`t_activity`.`F_Lng` AS `F_Lng`,`t_activity`.`F_StartDate` AS `F_StartDate`,`t_activity`.`F_EndDate` AS `F_EndDate`,`t_activity`.`F_IfFace` AS `F_IfFace`,`t_activity`.`F_IfLocation` AS `F_IfLocation`,`t_activity`.`F_IfPhoto` AS `F_IfPhoto`,`t_apply`.`F_ApplyDate` AS `F_ApplyDate`,`t_apply`.`F_ApplyerId` AS `F_ApplyerId`,`t_activity`.`F_Location` AS `F_Location` from (`t_apply` join `t_activity` on((`t_apply`.`F_ActivityId` = `t_activity`.`F_ID`)));
-- ----------------------------
-- View structure for v_apply_info
-- ----------------------------
DROP VIEW IF EXISTS `v_apply_info`;
CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `v_apply_info` AS select `t_activity`.`F_ID` AS `F_ID`,count(0) AS `F_ApplyNum`,`t_activity`.`F_Caption` AS `F_Caption`,`t_apply`.`F_ApplyerId` AS `F_ApplyerId` from (`t_activity` join `t_apply` on((`t_apply`.`F_ActivityId` = `t_activity`.`F_ID`))) group by `t_activity`.`F_ID`;
-- ----------------------------
-- View structure for v_check_detail
-- ----------------------------
DROP VIEW IF EXISTS `v_check_detail`;
CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `v_check_detail` AS select `t_check`.`F_ActivityId` AS `F_ActivityId`,`t_check`.`F_UserID` AS `F_UserId`,`t_check`.`F_PhotoUrl` AS `F_CheckPhotoUrl`,`t_user`.`F_Name` AS `F_UserName`,`t_check`.`F_CheckDate` AS `F_CheckDate` from (`t_user` join `t_check` on((`t_check`.`F_UserID` = `t_user`.`F_ID`)));
SET FOREIGN_KEY_CHECKS = 1;
================================================
FILE: client/README.md
================================================
# checkin
================================================
FILE: client/app.js
================================================
//app.js
var config = require('./config.js');
App({
onLaunch: function () {
// 展示本地存储能力
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
// console.log(res.userInfo);
// // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// // 所以此处加入 callback 以防止这种情况
// if (this.userInfoReadyCallback) {
// this.userInfoReadyCallback(res)
// }
// }
// })
// }
// }
// })
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
var that = this;
that.globalData.userInfo = res.userInfo;
wx.request({
url: config.url+'/person/',
data: {
'username':res.userInfo.nickName
},
method: 'POST',
success: function(user_res){
that.globalData.user_id = user_res.data.userId
that.globalData.avator_url = user_res.data.avatorUrl
console.log(user_res.data);
}
})
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
});
},
globalData: {
userInfo: null,
users:null,
user_id:null,
avator_url:null
},
data: {
haveLocation: false,
activity_lat: -1,
activity_lng: -1,
activity_location: ""
}
})
================================================
FILE: client/app.json
================================================
{
"pages": [
"pages/search/search",
"pages/detail/detail",
"pages/manage/manage",
"pages/checkIn/checkIn",
"pages/new/new",
"pages/addLocation/addLocation",
"pages/user/user",
"pages/logs/logs",
"pages/searchDetail/searchDetail"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "black"
},
"tabBar": {
"color": "#9b9b9b",
"selectedColor": "#2ba245",
"borderStyle": "white",
"position": "bottom",
"list": [
{
"pagePath": "pages/new/new",
"text": "新建",
"iconPath": "image/new_normal.png",
"selectedIconPath": "image/new_pressed.png"
},
{
"pagePath": "pages/search/search",
"text": "查找",
"iconPath": "image/search_normal.png",
"selectedIconPath": "image/search_pressed.png"
},
{
"pagePath": "pages/manage/manage",
"text": "管理",
"iconPath": "image/manage_normal.png",
"selectedIconPath": "image/manage_pressed.png"
},
{
"pagePath": "pages/user/user",
"text": "我的",
"iconPath": "image/user_normal.png",
"selectedIconPath": "image/user_pressed.png"
}
]
}
}
================================================
FILE: client/app.wxss
================================================
/**app.wxss**/
@import "dist/style/weui.wxss";
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
page{
background-color: #F8F8F8;
font-size: 16px;
font-family: -apple-system-font,Helvetica Neue,Helvetica,sans-serif;
}
.page__hd {
padding: 40px;
}
.page__bd {
padding-bottom: 40px;
}
.page__bd_spacing {
padding-left: 15px;
padding-right: 15px;
}
.page__ft{
padding-bottom: 10px;
text-align: center;
}
.page__title {
text-align: left;
font-size: 20px;
font-weight: 400;
}
.page__desc {
margin-top: 5px;
color: #888888;
text-align: left;
font-size: 14px;
}
================================================
FILE: client/config.js
================================================
//服务器地址
var url = ''
//腾讯云对象存储鉴权地址
var cosSignatureUrl = '';
//腾讯云对象存储的区域:华东地区为sh
var cosRegion = '';
//腾讯云对象存储cos的APPID
var cosAPPID = '12XXXXXXXX';
//腾讯云COSSecretId
var cosSecretId = '';
//腾讯云COSSecretKey
var cosSecretKey = '';
//bucket
var cosBucketName = '';
//dir路径
var cosDirName = '';
module.exports = {
url: url,
cosSignatureUrl: cosSignatureUrl,
cosRegion: cosRegion,
cosAPPID: cosAPPID,
cosBucketName: cosBucketName,
cosDirName: cosDirName
}
================================================
FILE: client/dist/app.js
================================================
App({
onLaunch: function () {
console.log('App Launch')
},
onShow: function () {
console.log('App Show')
},
onHide: function () {
console.log('App Hide')
},
globalData: {
hasLogin: false
}
});
================================================
FILE: client/dist/app.json
================================================
{
"pages": [
"example/index",
"example/button/button",
"example/list/list",
"example/input/input",
"example/slider/slider",
"example/uploader/uploader",
"example/article/article",
"example/badge/badge",
"example/flex/flex",
"example/footer/footer",
"example/gallery/gallery",
"example/grid/grid",
"example/icons/icons",
"example/loadmore/loadmore",
"example/panel/panel",
"example/preview/preview",
"example/progress/progress",
"example/actionsheet/actionsheet",
"example/dialog/dialog",
"example/msg/msg",
"example/msg/msg_success",
"example/msg/msg_fail",
"example/picker/picker",
"example/toast/toast",
"example/navbar/navbar",
"example/tabbar/tabbar",
"example/searchbar/searchbar"
],
"window": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "WeUI for 小程序",
"navigationBarBackgroundColor": "#f8f8f8",
"backgroundColor": "#f8f8f8"
},
"networkTimeout": {
"request": 10000,
"connectSocket": 10000,
"uploadFile": 10000,
"downloadFile": 10000
},
"debug": true
}
================================================
FILE: client/dist/app.wxss
================================================
@import 'style/weui.wxss';
page{
background-color: #F8F8F8;
font-size: 16px;
font-family: -apple-system-font,Helvetica Neue,Helvetica,sans-serif;
}
.page__hd {
padding: 40px;
}
.page__bd {
padding-bottom: 40px;
}
.page__bd_spacing {
padding-left: 15px;
padding-right: 15px;
}
.page__ft{
padding-bottom: 10px;
text-align: center;
}
.page__title {
text-align: left;
font-size: 20px;
font-weight: 400;
}
.page__desc {
margin-top: 5px;
color: #888888;
text-align: left;
font-size: 14px;
}
================================================
FILE: client/dist/example/actionsheet/actionsheet.js
================================================
Page({
open: function(){
wx.showActionSheet({
itemList: ['A', 'B', 'C'],
success: function(res) {
if (!res.cancel) {
console.log(res.tapIndex)
}
}
});
}
});
================================================
FILE: client/dist/example/actionsheet/actionsheet.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">ActionSheet</view>
<view class="page__desc">弹出式菜单,采用小程序原生的actionsheet</view>
</view>
<view class="page__bd">
<view class="weui-btn-area">
<button type="default" bindtap="open">ActionSheet</button>
</view>
</view>
</view>
================================================
FILE: client/dist/example/actionsheet/actionsheet.wxss
================================================
page{
background-color: #FFFFFF;
}
================================================
FILE: client/dist/example/article/article.js
================================================
Page({});
================================================
FILE: client/dist/example/article/article.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Article</view>
<view class="page__desc">文章</view>
</view>
<view class="page__bd">
<view class="weui-article">
<view class="weui-article__h1">大标题</view>
<view class="weui-article__section">
<view class="weui-article__title">章标题</view>
<view class="weui-article__section">
<view class="weui-article__h3">1.1 节标题</view>
<view class="weui-article__p">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</view>
<view class="weui-article__p">
<image class="weui-article__img" src="../images/pic_article.png" mode="aspectFit" style="height: 180px" />
<image class="weui-article__img" src="../images/pic_article.png" mode="aspectFit" style="height: 180px" />
</view>
</view>
<view class="weui-article__section">
<view class="weui-article__h3">1.2 节标题</view>
<view class="weui-article__p">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</view>
</view>
</view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/article/article.wxss
================================================
page{
background-color: #FFFFFF;
}
image{
margin: 4px 0;
}
================================================
FILE: client/dist/example/badge/badge.js
================================================
Page({});
================================================
FILE: client/dist/example/badge/badge.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Badge</view>
<view class="page__desc">徽章</view>
</view>
<view class="page__bd">
<view class="weui-cells__title">新消息提示跟摘要信息后,统一在列表右侧</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd">单行列表</view>
<view class="weui-cell__ft weui-cell__ft_in-access" style="font-size: 0">
<view style="display: inline-block;vertical-align:middle; font-size: 17px;">详细信息</view>
<view class="weui-badge weui-badge_dot" style="margin-left: 5px;margin-right: 5px;"></view>
</view>
</view>
</view>
<view class="weui-cells__title">未读数红点跟在主题信息后,统一在列表左侧</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__hd" style="position: relative;margin-right: 10px;">
<image src="../images/pic_160.png" style="width: 50px; height: 50px; display: block"/>
<view class="weui-badge" style="position: absolute;top: -.4em;right: -.4em;">8</view>
</view>
<view class="weui-cell__bd">
<view>联系人名称</view>
<view style="font-size: 13px;color: #888888;">摘要信息</view>
</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd">
<view style="display: inline-block; vertical-align: middle">单行列表</view>
<view class="weui-badge" style="margin-left: 5px;">8</view>
</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd">
<view style="display: inline-block; vertical-align: middle">单行列表</view>
<view class="weui-badge" style="margin-left: 5px;">8</view>
</view>
<view class="weui-cell__ft weui-cell__ft_in-access">详细信息</view>
</view>
<view class="weui-cell weui-cell_access">
<view class="weui-cell__bd">
<view style="display: inline-block; vertical-align: middle">单行列表</view>
<view class="weui-badge" style="margin-left: 5px;">New</view>
</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/button/button.js
================================================
Page({});
================================================
FILE: client/dist/example/button/button.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Button</view>
<view class="page__desc">按钮,WeUI采用小程序原生的按钮为主体,加入一些间距的样式。</view>
</view>
<view class="page__bd page__bd_spacing">
<button class="weui-btn" type="primary">页面主操作 Normal</button>
<button class="weui-btn" type="primary" disabled="true">页面主操作 Disabled</button>
<button class="weui-btn" type="default">页面次要操作 Normal</button>
<button class="weui-btn" type="default" disabled="true">页面次要操作 Disabled</button>
<button class="weui-btn" type="warn">警告类操作 Normal</button>
<button class="weui-btn" type="warn" disabled="true">警告类操作 Disabled</button>
<view class="button-sp-area">
<button class="weui-btn" type="primary" plain="true">按钮</button>
<button class="weui-btn" type="primary" disabled="true" plain="true">按钮</button>
<button class="weui-btn" type="default" plain="true">按钮</button>
<button class="weui-btn" type="default" disabled="true" plain="true">按钮</button>
<button class="weui-btn mini-btn" type="primary" size="mini">按钮</button>
<button class="weui-btn mini-btn" type="default" size="mini">按钮</button>
<button class="weui-btn mini-btn" type="warn" size="mini">按钮</button>
</view>
</view>
</view>
================================================
FILE: client/dist/example/button/button.wxss
================================================
.button-sp-area{
margin: 0 auto;
padding-top: 15px;
width: 60%;
}
.mini-btn{
margin-right: 5px;
}
================================================
FILE: client/dist/example/dialog/dialog.js
================================================
Page({
openConfirm: function () {
wx.showModal({
title: '弹窗标题',
content: '弹窗内容,告知当前状态、信息和解决方法,描述文字尽量控制在三行内',
confirmText: "主操作",
cancelText: "辅助操作",
success: function (res) {
console.log(res);
if (res.confirm) {
console.log('用户点击主操作')
}else{
console.log('用户点击辅助操作')
}
}
});
},
openAlert: function () {
wx.showModal({
content: '弹窗内容,告知当前状态、信息和解决方法,描述文字尽量控制在三行内',
showCancel: false,
success: function (res) {
if (res.confirm) {
console.log('用户点击确定')
}
}
});
}
});
================================================
FILE: client/dist/example/dialog/dialog.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Dialog</view>
<view class="page__desc">对话框,采用小程序原生的modal</view>
</view>
<view class="page__bd">
<view class="weui-btn-area">
<button class="weui-btn" type="default" bindtap="openConfirm">Confirm Dialog</button>
<button class="weui-btn" type="default" bindtap="openAlert">Alert Dialog</button>
</view>
</view>
</view>
================================================
FILE: client/dist/example/dialog/dialog.wxss
================================================
page{
background-color: #FFFFFF;
}
================================================
FILE: client/dist/example/flex/flex.js
================================================
Page({});
================================================
FILE: client/dist/example/flex/flex.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Flex</view>
<view class="page__desc">Flex布局</view>
</view>
<view class="page__bd page__bd_spacing">
<view class="weui-flex">
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
</view>
<view class="weui-flex">
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
</view>
<view class="weui-flex">
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
</view>
<view class="weui-flex">
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
</view>
<view class="weui-flex">
<view><view class="placeholder">weui</view></view>
<view class="weui-flex__item"><view class="placeholder">weui</view></view>
<view><view class="placeholder">weui</view></view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/flex/flex.wxss
================================================
.placeholder{
margin: 5px;
padding: 0 10px;
text-align: center;
background-color: #EBEBEB;
height: 2.3em;
line-height: 2.3em;
color: #cfcfcf;
}
================================================
FILE: client/dist/example/footer/footer.js
================================================
Page({});
================================================
FILE: client/dist/example/footer/footer.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Footer</view>
<view class="page__desc">页脚</view>
</view>
<view class="page__bd page__bd_spacing">
<view class="weui-footer">
<view class="weui-footer__text">Copyright © 2008-2016 weui.io</view>
</view>
<view class="weui-footer">
<view class="weui-footer__links">
<navigator url="" class="weui-footer__link">底部链接</navigator>
</view>
<view class="weui-footer__text">Copyright © 2008-2016 weui.io</view>
</view>
<view class="weui-footer">
<view class="weui-footer__links">
<navigator url="" class="weui-footer__link">底部链接</navigator>
<navigator url="" class="weui-footer__link">底部链接</navigator>
</view>
<view class="weui-footer__text">Copyright © 2008-2016 weui.io</view>
</view>
<view class="weui-footer weui-footer_fixed-bottom">
<view class="weui-footer__links">
<navigator url="" class="weui-footer__link">WeUI首页</navigator>
</view>
<view class="weui-footer__text">Copyright © 2008-2016 weui.io</view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/footer/footer.wxss
================================================
/* 作为展示用的样式 */
.weui-footer{
margin-bottom: 50px;
}
.weui-footer_fixed-bottom{
margin-bottom: 0;
}
================================================
FILE: client/dist/example/gallery/gallery.js
================================================
Page({});
================================================
FILE: client/dist/example/gallery/gallery.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Gallery</view>
<view class="page__desc">画廊,建议采用小程序原生的wx.previewImage来实现。详情请看小程序文档。</view>
</view>
</view>
================================================
FILE: client/dist/example/grid/grid.js
================================================
Page({
data: {
grids: [0, 1, 2, 3, 4, 5, 6, 7, 8]
}
});
================================================
FILE: client/dist/example/grid/grid.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Grid</view>
<view class="page__desc">九宫格</view>
</view>
<view class="page__bd">
<view class="weui-grids">
<block wx:for="{{grids}}" wx:key="*this">
<navigator url="" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="../images/icon_tabbar.png" />
<view class="weui-grid__label">Grid</view>
</navigator>
</block>
</view>
</view>
</view>
================================================
FILE: client/dist/example/icons/icons.js
================================================
Page({});
================================================
FILE: client/dist/example/icons/icons.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Icons</view>
<view class="page__desc">图标</view>
</view>
<view class="page__bd">
<view class="icon-box">
<icon type="success" size="93"></icon>
<view class="icon-box__ctn">
<view class="icon-box__title">成功</view>
<view class="icon-box__desc">用于表示操作顺利达成</view>
</view>
</view>
<view class="icon-box">
<icon type="info" size="93"></icon>
<view class="icon-box__ctn">
<view class="icon-box__title">提示</view>
<view class="icon-box__desc">用于表示信息提示;也常用于缺乏条件的操作拦截,提示用户所需信息</view>
</view>
</view>
<view class="icon-box">
<icon type="warn" size="93" color="#FFBE00"></icon>
<view class="icon-box__ctn">
<view class="icon-box__title">普通警告</view>
<view class="icon-box__desc">用于表示操作后将引起一定后果的情况</view>
</view>
</view>
<view class="icon-box">
<icon type="warn" size="93"></icon>
<view class="icon-box__ctn">
<view class="icon-box__title">强烈警告</view>
<view class="icon-box__desc">用于表示操作后将引起严重的不可挽回的后果的情况</view>
</view>
</view>
<view class="icon-box">
<icon type="waiting" size="93"></icon>
<view class="icon-box__ctn">
<view class="icon-box__title">等待</view>
<view class="icon-box__desc">用于表示等待</view>
</view>
</view>
<view class="icon_sp_area">
<icon type="success" size="23"></icon>
<icon type="success_no_circle" size="23"></icon>
<icon type="circle" size="23"></icon>
<icon type="warn" size="23" color="#F43530"></icon>
<icon type="download" size="23"></icon>
<icon type="info_circle" size="23"></icon>
<icon type="cancel" size="23"></icon>
<icon type="search" size="20"></icon>
</view>
</view>
</view>
================================================
FILE: client/dist/example/icons/icons.wxss
================================================
icon{
margin-right: 13px;
}
.page__bd {
padding-left: 40px;
padding-right: 40px;
text-align: left;
}
.icon-box{
margin-bottom: 25px;
display: flex;
align-items: center;
}
.icon-box__ctn{
flex-shrink: 100;
}
.icon-box__title{
font-size: 20px;
}
.icon-box__desc{
margin-top: 6px;
font-size: 12px;
color: #888888;
}
.icon_sp_area {
margin-top: 10px;
text-align: left;
}
================================================
FILE: client/dist/example/images/base64.js
================================================
module.exports = {
icon20: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAMAAABgZ9sFAAAAVFBMVEXx8fHMzMzr6+vn5+fv7+/t7e3d3d2+vr7W1tbHx8eysrKdnZ3p6enk5OTR0dG7u7u3t7ejo6PY2Njh4eHf39/T09PExMSvr6+goKCqqqqnp6e4uLgcLY/OAAAAnklEQVRIx+3RSRLDIAxE0QYhAbGZPNu5/z0zrXHiqiz5W72FqhqtVuuXAl3iOV7iPV/iSsAqZa9BS7YOmMXnNNX4TWGxRMn3R6SxRNgy0bzXOW8EBO8SAClsPdB3psqlvG+Lw7ONXg/pTld52BjgSSkA3PV2OOemjIDcZQWgVvONw60q7sIpR38EnHPSMDQ4MjDjLPozhAkGrVbr/z0ANjAF4AcbXmYAAAAASUVORK5CYII=",
icon60: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAeFBMVEUAwAD///+U5ZTc9twOww7G8MYwzDCH4YcfyR9x23Hw+/DY9dhm2WZG0kbT9NP0/PTL8sux7LFe115T1VM+zz7i+OIXxhes6qxr2mvA8MCe6J6M4oz6/frr+us5zjn2/fa67rqB4IF13XWn6ad83nxa1loqyirn+eccHxx4AAAC/klEQVRo3u2W2ZKiQBBF8wpCNSCyLwri7v//4bRIFVXoTBBB+DAReV5sG6lTXDITiGEYhmEYhmEYhmEYhmEY5v9i5fsZGRx9PyGDne8f6K9cfd+mKXe1yNG/0CcqYE86AkBMBh66f20deBc7wA/1WFiTwvSEpBMA2JJOBsSLxe/4QEEaJRrASP8EVF8Q74GbmevKg0saa0B8QbwBdjRyADYxIhqxAZ++IKYtciPXLQVG+imw+oo4Bu56rjEJ4GYsvPmKOAB+xlz7L5aevqUXuePWVhvWJ4eWiwUQ67mK51qPj4dFDMlRLBZTqF3SDvmr4BwtkECu5gHWPkmDfQh02WLxXuvbvC8ku8F57GsI5e0CmUwLz1kq3kD17R1In5816rGvQ5VMk5FEtIiWislTffuDpl/k/PzscdQsv8r9qWq4LRWX6tQYtTxvI3XyrwdyQxChXioOngH3dLgOFjk0all56XRi/wDFQrGQU3Os5t0wJu1GNtNKHdPqYaGYQuRDfbfDf26AGLYSyGS3ZAK4S8XuoAlxGSdYMKwqZKM9XJMtyqXi7HX/CiAZS6d8bSVUz5J36mEMFDTlAFQzxOT1dzLRljjB6+++ejFqka+mXIe6F59mw22OuOw1F4T6lg/9VjL1rLDoI9Xzl1MSYDNHnPQnt3D1EE7PrXjye/3pVpr1Z45hMUdcACc5NVQI0bOdS1WA0wuz73e7/5TNqBPhQXPEFGJNV2zNqWI7QKBd2Gn6AiBko02zuAOXeWIXjV0jNqdKegaE/kJQ6Bfs4aju04lMLkA2T5wBSYPKDGF3RKhFYEa6A1L1LG2yacmsaZ6YPOSAMKNsO+N5dNTfkc5Aqe26uxHpx7ZirvgCwJpWq/lmX1hA7LyabQ34tt5RiJKXSwQ+0KU0V5xg+hZrd4Bn1n4EID+WkQdgLfRNtvil9SPfwy+WQ7PFBWQz6dGWZBLkeJFXZGCfLUjCgGgqXo5TuSu3cugdcTv/HjqnBTEMwzAMwzAMwzAMwzAMw/zf/AFbXiOA6frlMAAAAABJRU5ErkJggg=="
};
================================================
FILE: client/dist/example/index.js
================================================
Page({
data: {
list: [
{
id: 'form',
name: '表单',
open: false,
pages: ['button', 'list', 'input', 'slider', 'uploader']
},
{
id: 'widget',
name: '基础组件',
open: false,
pages: ['article', 'badge', 'flex', 'footer', 'gallery', 'grid', 'icons', 'loadmore', 'panel', 'preview', 'progress']
},
{
id: 'feedback',
name: '操作反馈',
open: false,
pages: ['actionsheet', 'dialog', 'msg', 'picker', 'toast']
},
{
id: 'nav',
name: '导航相关',
open: false,
pages: ['navbar', 'tabbar']
},
{
id: 'search',
name: '搜索相关',
open: false,
pages: ['searchbar']
}
]
},
kindToggle: function (e) {
var id = e.currentTarget.id, list = this.data.list;
for (var i = 0, len = list.length; i < len; ++i) {
if (list[i].id == id) {
list[i].open = !list[i].open
} else {
list[i].open = false
}
}
this.setData({
list: list
});
}
});
================================================
FILE: client/dist/example/index.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">WeUI</view>
<view class="page__desc">WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。</view>
</view>
<view class="page__bd page__bd_spacing">
<view class="kind-list">
<block wx:for="{{list}}" wx:key="id">
<view class="kind-list__item">
<view id="{{item.id}}" class="weui-flex kind-list__item-hd {{item.open ? 'kind-list__item-hd_show' : ''}}" bindtap="kindToggle">
<view class="weui-flex__item">{{item.name}}</view>
<image class="kind-list__img" src="images/icon_nav_{{item.id}}.png"></image>
</view>
<view class="kind-list__item-bd {{item.open ? 'kind-list__item-bd_show' : ''}}">
<view class="weui-cells {{item.open ? 'weui-cells_show' : ''}}">
<block wx:for="{{item.pages}}" wx:for-item="page" wx:key="*this">
<navigator url="{{page}}/{{page}}" class="weui-cell weui-cell_access">
<view class="weui-cell__bd">{{page}}</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</navigator>
</block>
</view>
</view>
</view>
</block>
</view>
</view>
<view class="page__ft">
<image src="images/icon_footer.png" style="width: 84px; height: 19px;"></image>
</view>
</view>
================================================
FILE: client/dist/example/index.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-flex{-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-cells{margin-top:0;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:.3s;transition:.3s}.weui-cells:after,.weui-cells:before{display:none}.weui-cells_show{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}.weui-cell:before{right:15px}.kind-list__item{margin:10px 0;background-color:#fff;border-radius:2px;overflow:hidden}.kind-list__item:first-child{margin-top:0}.kind-list__img{width:30px;height:30px}.kind-list__item-hd{padding:20px;-webkit-transition:opacity .3s;transition:opacity .3s}.kind-list__item-hd_show{opacity:.4}.kind-list__item-bd{height:0;overflow:hidden}.kind-list__item-bd_show{height:auto}
================================================
FILE: client/dist/example/input/input.js
================================================
Page({
data: {
showTopTips: false,
radioItems: [
{name: 'cell standard', value: '0'},
{name: 'cell standard', value: '1', checked: true}
],
checkboxItems: [
{name: 'standard is dealt for u.', value: '0', checked: true},
{name: 'standard is dealicient for u.', value: '1'}
],
date: "2016-09-01",
time: "12:01",
countryCodes: ["+86", "+80", "+84", "+87"],
countryCodeIndex: 0,
countries: ["中国", "美国", "英国"],
countryIndex: 0,
accounts: ["微信号", "QQ", "Email"],
accountIndex: 0,
isAgree: false
},
showTopTips: function(){
var that = this;
this.setData({
showTopTips: true
});
setTimeout(function(){
that.setData({
showTopTips: false
});
}, 3000);
},
radioChange: function (e) {
console.log('radio发生change事件,携带value值为:', e.detail.value);
var radioItems = this.data.radioItems;
for (var i = 0, len = radioItems.length; i < len; ++i) {
radioItems[i].checked = radioItems[i].value == e.detail.value;
}
this.setData({
radioItems: radioItems
});
},
checkboxChange: function (e) {
console.log('checkbox发生change事件,携带value值为:', e.detail.value);
var checkboxItems = this.data.checkboxItems, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if(checkboxItems[i].value == values[j]){
checkboxItems[i].checked = true;
break;
}
}
}
this.setData({
checkboxItems: checkboxItems
});
},
bindDateChange: function (e) {
this.setData({
date: e.detail.value
})
},
bindTimeChange: function (e) {
this.setData({
time: e.detail.value
})
},
bindCountryCodeChange: function(e){
console.log('picker country code 发生选择改变,携带值为', e.detail.value);
this.setData({
countryCodeIndex: e.detail.value
})
},
bindCountryChange: function(e) {
console.log('picker country 发生选择改变,携带值为', e.detail.value);
this.setData({
countryIndex: e.detail.value
})
},
bindAccountChange: function(e) {
console.log('picker account 发生选择改变,携带值为', e.detail.value);
this.setData({
accountIndex: e.detail.value
})
},
bindAgreeChange: function (e) {
this.setData({
isAgree: !!e.detail.value.length
});
}
});
================================================
FILE: client/dist/example/input/input.wxml
================================================
<view class="page" xmlns:wx="http://www.w3.org/1999/xhtml">
<view class="page__hd">
<view class="page__title">Input</view>
<view class="page__desc">表单输入</view>
</view>
<view class="page__bd">
<view class="weui-toptips weui-toptips_warn" wx:if="{{showTopTips}}">错误提示</view>
<view class="weui-cells__title">单选列表项</view>
<view class="weui-cells weui-cells_after-title">
<radio-group bindchange="radioChange">
<label class="weui-cell weui-check__label" wx:for="{{radioItems}}" wx:key="value">
<radio class="weui-check" value="{{item.value}}" checked="{{item.checked}}"/>
<view class="weui-cell__bd">{{item.name}}</view>
<view class="weui-cell__ft weui-cell__ft_in-radio" wx:if="{{item.checked}}">
<icon class="weui-icon-radio" type="success_no_circle" size="16"></icon>
</view>
</label>
</radio-group>
<view class="weui-cell weui-cell_link">
<view class="weui-cell__bd">添加更多</view>
</view>
</view>
<view class="weui-cells__title">复选列表项</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group bindchange="checkboxChange">
<label class="weui-cell weui-check__label" wx:for="{{checkboxItems}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" checked="{{item.checked}}"/>
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.name}}</view>
</label>
</checkbox-group>
<view class="weui-cell weui-cell_link">
<view class="weui-cell__bd">添加更多</view>
</view>
</view>
<view class="weui-cells__title">表单</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_input">
<view class="weui-cell__hd">
<view class="weui-label">qq</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入qq"/>
</view>
</view>
<view class="weui-cell weui-cell_input weui-cell_vcode">
<view class="weui-cell__hd">
<view class="weui-label">手机号</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入手机号" />
</view>
<view class="weui-cell__ft">
<view class="weui-vcode-btn">获取验证码</view>
</view>
</view>
<view class="weui-cell weui-cell_input">
<view class="weui-cell__hd">
<view class="weui-label">日期</view>
</view>
<view class="weui-cell__bd">
<picker mode="date" value="{{date}}" start="2015-09-01" end="2017-09-01" bindchange="bindDateChange">
<view class="weui-input">{{date}}</view>
</picker>
</view>
</view>
<view class="weui-cell weui-cell_input">
<view class="weui-cell__hd">
<view class="weui-label">时间</view>
</view>
<view class="weui-cell__bd">
<picker mode="time" value="{{time}}" start="09:01" end="21:01" bindchange="bindTimeChange">
<view class="weui-input">{{time}}</view>
</picker>
</view>
</view>
<view class="weui-cell weui-cell_input weui-cell_vcode">
<view class="weui-cell__hd">
<view class="weui-label">验证码</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入验证码" />
</view>
<view class="weui-cell__ft">
<image class="weui-vcode-img" src="../images/vcode.jpg" style="width: 108px"></image>
</view>
</view>
</view>
<view class="weui-cells__tips">底部说明文字底部说明文字</view>
<view class="weui-cells__title">表单报错</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_input weui-cell_warn">
<view class="weui-cell__hd">
<view class="weui-label">卡号</view>
</view>
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入卡号"/>
</view>
<view class="weui-cell__ft">
<icon type="warn" size="23" color="#E64340"></icon>
</view>
</view>
</view>
<view class="weui-cells__title">开关</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_switch">
<view class="weui-cell__bd">标题文字</view>
<view class="weui-cell__ft">
<switch checked />
</view>
</view>
</view>
<view class="weui-cells__title">文本框</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_input">
<view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入文本" />
</view>
</view>
</view>
<view class="weui-cells__title">文本域</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd">
<textarea class="weui-textarea" placeholder="请输入文本" style="height: 3.3em" />
<view class="weui-textarea-counter">0/200</view>
</view>
</view>
</view>
<view class="weui-cells__title">选择</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_select">
<view class="weui-cell__hd" style="width: 105px">
<picker bindchange="bindCountryCodeChange" value="{{countryCodeIndex}}" range="{{countryCodes}}">
<view class="weui-select">{{countryCodes[countryCodeIndex]}}</view>
</picker>
</view>
<view class="weui-cell__bd weui-cell__bd_in-select-before">
<input class="weui-input" placeholder="请输入号码" />
</view>
</view>
</view>
<view class="weui-cells__title">选择</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell weui-cell_select">
<view class="weui-cell__bd">
<picker bindchange="bindAccountChange" value="{{accountIndex}}" range="{{accounts}}">
<view class="weui-select">{{accounts[accountIndex]}}</view>
</picker>
</view>
</view>
<view class="weui-cell weui-cell_select">
<view class="weui-cell__hd weui-cell__hd_in-select-after">
<view class="weui-label">国家/地区</view>
</view>
<view class="weui-cell__bd">
<picker bindchange="bindCountryChange" value="{{countryIndex}}" range="{{countries}}">
<view class="weui-select weui-select_in-select-after">{{countries[countryIndex]}}</view>
</picker>
</view>
</view>
</view>
<checkbox-group bindchange="bindAgreeChange">
<label class="weui-agree" for="weuiAgree">
<view class="weui-agree__text">
<checkbox class="weui-agree__checkbox" id="weuiAgree" value="agree" checked="{{isAgree}}" />
<view class="weui-agree__checkbox-icon">
<icon class="weui-agree__checkbox-icon-check" type="success_no_circle" size="9" wx:if="{{isAgree}}"></icon>
</view>
阅读并同意<navigator url="" class="weui-agree__link">《相关条款》</navigator>
</view>
</label>
</checkbox-group>
<view class="weui-btn-area">
<button class="weui-btn" type="primary" bindtap="showTopTips">确定</button>
</view>
</view>
</view>
================================================
FILE: client/dist/example/list/list.js
================================================
var base64 = require("../images/base64");
Page({
onLoad: function(){
this.setData({
icon: base64.icon20
});
}
});
================================================
FILE: client/dist/example/list/list.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">List</view>
<view class="page__desc">列表</view>
</view>
<view class="page__bd">
<view class="weui-cells__title">带说明的列表项</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__bd">标题文字</view>
<view class="weui-cell__ft">说明文字</view>
</view>
</view>
<view class="weui-cells__title">带图标、说明的列表项</view>
<view class="weui-cells weui-cells_after-title">
<view class="weui-cell">
<view class="weui-cell__hd">
<image src="{{icon}}" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<view class="weui-cell__bd">标题文字</view>
<view class="weui-cell__ft">说明文字</view>
</view>
<view class="weui-cell">
<view class="weui-cell__hd">
<image src="{{icon}}" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<view class="weui-cell__bd">标题文字</view>
<view class="weui-cell__ft">说明文字</view>
</view>
</view>
<view class="weui-cells__title">带跳转的列表项</view>
<view class="weui-cells weui-cells_after-title">
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__bd">cell standard</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</navigator>
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__bd">cell standard</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</navigator>
</view>
<view class="weui-cells__title">带说明、跳转的列表项</view>
<view class="weui-cells weui-cells_after-title">
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__bd">cell standard</view>
<view class="weui-cell__ft weui-cell__ft_in-access">说明文字</view>
</navigator>
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__bd">cell standard</view>
<view class="weui-cell__ft weui-cell__ft_in-access">说明文字</view>
</navigator>
</view>
<view class="weui-cells__title">带图标、说明、跳转的列表项</view>
<view class="weui-cells weui-cells_after-title">
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{icon}}" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<view class="weui-cell__bd">cell standard</view>
<view class="weui-cell__ft weui-cell__ft_in-access">说明文字</view>
</navigator>
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{icon}}" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<view class="weui-cell__bd">cell standard</view>
<view class="weui-cell__ft weui-cell__ft_in-access">说明文字</view>
</navigator>
</view>
</view>
</view>
================================================
FILE: client/dist/example/loadmore/loadmore.js
================================================
Page({});
================================================
FILE: client/dist/example/loadmore/loadmore.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Loadmore</view>
<view class="page__desc">加载更多</view>
</view>
<view class="page__bd">
<view class="weui-loadmore">
<view class="weui-loading"></view>
<view class="weui-loadmore__tips">正在加载</view>
</view>
<view class="weui-loadmore weui-loadmore_line">
<view class="weui-loadmore__tips weui-loadmore__tips_in-line">暂无数据</view>
</view>
<view class="weui-loadmore weui-loadmore_line weui-loadmore_dot">
<view class="weui-loadmore__tips weui-loadmore__tips_in-line weui-loadmore__tips_in-dot"></view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/loadmore/loadmore.wxss
================================================
page{
background-color: #FFFFFF;
}
================================================
FILE: client/dist/example/msg/msg.js
================================================
Page({
openSuccess: function () {
wx.navigateTo({
url: 'msg_success'
})
},
openFail: function () {
wx.navigateTo({
url: 'msg_fail'
})
}
});
================================================
FILE: client/dist/example/msg/msg.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Msg</view>
<view class="page__desc">提示页</view>
</view>
<view class="page__bd">
<view class="weui-btn-area">
<button class="weui-btn" type="default" bindtap="openSuccess">成功提示页</button>
<button class="weui-btn" type="default" bindtap="openFail">失败提示页</button>
</view>
</view>
</view>
================================================
FILE: client/dist/example/msg/msg.wxss
================================================
page{
background-color: #FFFFFF;
}
================================================
FILE: client/dist/example/msg/msg_fail.js
================================================
Page({});
================================================
FILE: client/dist/example/msg/msg_fail.wxml
================================================
<view class="page">
<view class="weui-msg">
<view class="weui-msg__icon-area">
<icon type="warn" size="93"></icon>
</view>
<view class="weui-msg__text-area">
<view class="weui-msg__title">操作失败</view>
<view class="weui-msg__desc">内容详情,可根据实际需要安排,如果换行则不超过规定长度,居中展现<navigator url="" class="weui-msg__link">文字链接</navigator></view>
</view>
<view class="weui-msg__opr-area">
<view class="weui-btn-area">
<button class="weui-btn" type="primary">推荐操作</button>
<button class="weui-btn" type="default">辅助操作</button>
</view>
</view>
<view class="weui-msg__extra-area">
<view class="weui-footer">
<view class="weui-footer__links">
<navigator url="" class="weui-footer__link">底部链接文本</navigator>
</view>
<view class="weui-footer__text">Copyright © 2008-2016 weui.io</view>
</view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/msg/msg_fail.wxss
================================================
page{
background-color: #FFFFFF;
}
================================================
FILE: client/dist/example/msg/msg_success.js
================================================
Page({});
================================================
FILE: client/dist/example/msg/msg_success.wxml
================================================
<view class="page">
<view class="weui-msg">
<view class="weui-msg__icon-area">
<icon type="success" size="93"></icon>
</view>
<view class="weui-msg__text-area">
<view class="weui-msg__title">操作成功</view>
<view class="weui-msg__desc">内容详情,可根据实际需要安排,如果换行则不超过规定长度,居中展现<navigator url="" class="weui-msg__link">文字链接</navigator></view>
</view>
<view class="weui-msg__opr-area">
<view class="weui-btn-area">
<button class="weui-btn" type="primary">推荐操作</button>
<button class="weui-btn" type="default">辅助操作</button>
</view>
</view>
<view class="weui-msg__extra-area">
<view class="weui-footer">
<view class="weui-footer__links">
<navigator url="" class="weui-footer__link">底部链接文本</navigator>
</view>
<view class="weui-footer__text">Copyright © 2008-2016 weui.io</view>
</view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/msg/msg_success.wxss
================================================
page{
background-color: #FFFFFF;
}
================================================
FILE: client/dist/example/navbar/navbar.js
================================================
var sliderWidth = 96; // 需要设置slider的宽度,用于计算中间位置
Page({
data: {
tabs: ["选项一", "选项二", "选项三"],
activeIndex: 1,
sliderOffset: 0,
sliderLeft: 0
},
onLoad: function () {
var that = this;
wx.getSystemInfo({
success: function(res) {
that.setData({
sliderLeft: (res.windowWidth / that.data.tabs.length - sliderWidth) / 2,
sliderOffset: res.windowWidth / that.data.tabs.length * that.data.activeIndex
});
}
});
},
tabClick: function (e) {
this.setData({
sliderOffset: e.currentTarget.offsetLeft,
activeIndex: e.currentTarget.id
});
}
});
================================================
FILE: client/dist/example/navbar/navbar.wxml
================================================
<view class="page">
<view class="page__bd">
<view class="weui-tab">
<view class="weui-navbar">
<block wx:for="{{tabs}}" wx:key="*this">
<view id="{{index}}" class="weui-navbar__item {{activeIndex == index ? 'weui-bar__item_on' : ''}}" bindtap="tabClick">
<view class="weui-navbar__title">{{item}}</view>
</view>
</block>
<view class="weui-navbar__slider" style="left: {{sliderLeft}}px; transform: translateX({{sliderOffset}}px); -webkit-transform: translateX({{sliderOffset}}px);"></view>
</view>
<view class="weui-tab__panel">
<view class="weui-tab__content" hidden="{{activeIndex != 0}}">选项一的内容</view>
<view class="weui-tab__content" hidden="{{activeIndex != 1}}">选项二的内容</view>
<view class="weui-tab__content" hidden="{{activeIndex != 2}}">选项三的内容</view>
</view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/navbar/navbar.wxss
================================================
page,
.page,
.page__bd{
height: 100%;
}
.page__bd{
padding-bottom: 0;
}
.weui-tab__content{
padding-top: 60px;
text-align: center;
}
================================================
FILE: client/dist/example/panel/panel.js
================================================
var base64 = require("../images/base64");
Page({
onLoad: function(){
this.setData({
icon20: base64.icon20,
icon60: base64.icon60
});
}
});
================================================
FILE: client/dist/example/panel/panel.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Panel</view>
<view class="page__desc">面板</view>
</view>
<view class="page__bd">
<view class="weui-panel weui-panel_access">
<view class="weui-panel__hd">图文组合列表</view>
<view class="weui-panel__bd">
<navigator url="" class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
<view class="weui-media-box__hd weui-media-box__hd_in-appmsg">
<image class="weui-media-box__thumb" src="{{icon60}}" />
</view>
<view class="weui-media-box__bd weui-media-box__bd_in-appmsg">
<view class="weui-media-box__title">标题一</view>
<view class="weui-media-box__desc">由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨道。</view>
</view>
</navigator>
<navigator url="" class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
<view class="weui-media-box__hd weui-media-box__hd_in-appmsg">
<image class="weui-media-box__thumb" src="{{icon60}}" />
</view>
<view class="weui-media-box__bd weui-media-box__bd_in-appmsg">
<view class="weui-media-box__title">标题二</view>
<view class="weui-media-box__desc">由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨道。</view>
</view>
</navigator>
</view>
<view class="weui-panel__ft">
<view class="weui-cell weui-cell_access weui-cell_link">
<view class="weui-cell__bd">查看更多</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</view>
</view>
</view>
<view class="weui-panel weui-panel_access">
<view class="weui-panel__hd">文字组合列表</view>
<view class="weui-panel__bd">
<view class="weui-media-box weui-media-box_text">
<view class="weui-media-box__title weui-media-box__title_in-text">标题一</view>
<view class="weui-media-box__desc">由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨道。</view>
</view>
<view class="weui-media-box weui-media-box_text">
<view class="weui-media-box__title weui-media-box__title_in-text">标题二</view>
<view class="weui-media-box__desc">由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨道。</view>
</view>
</view>
<view class="weui-panel__ft">
<view class="weui-cell weui-cell_access weui-cell_link">
<view class="weui-cell__bd">查看更多</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</view>
</view>
</view>
<view class="weui-panel">
<view class="weui-panel__hd">小图文组合列表</view>
<view class="weui-panel__bd">
<view class="weui-media-box weui-media-box_small-appmsg">
<view class="weui-cells weui-cells_in-small-appmsg">
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{icon20}}" style="width: 20px;height: 20px;margin-right: 5px" />
</view>
<view class="weui-cell__bd weui-cell_primary">
<view>文字标题</view>
</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</navigator>
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{icon20}}" style="width: 20px;height: 20px;margin-right: 5px" />
</view>
<view class="weui-cell__bd weui-cell_primary">
<view>文字标题</view>
</view>
<view class="weui-cell__ft weui-cell__ft_in-access"></view>
</navigator>
</view>
</view>
</view>
</view>
<view class="weui-panel">
<view class="weui-panel__hd">文字列表附来源</view>
<view class="weui-panel__bd">
<view class="weui-media-box weui-media-box_text">
<view class="weui-media-box__title weui-media-box__title_in-text">标题一</view>
<view class="weui-media-box__desc">由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨道。</view>
<view class="weui-media-box__info">
<view class="weui-media-box__info__meta">文字来源</view>
<view class="weui-media-box__info__meta">时间</view>
<view class="weui-media-box__info__meta weui-media-box__info__meta_extra">其它信息</view>
</view>
</view>
</view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/picker/picker.js
================================================
Page({
data: {
array: ['美国', '中国', '巴西', '日本'],
index: 0,
date: '2016-09-01',
time: '12:01'
},
bindPickerChange: function(e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.setData({
index: e.detail.value
})
},
bindDateChange: function(e) {
this.setData({
date: e.detail.value
})
},
bindTimeChange: function(e) {
this.setData({
time: e.detail.value
})
}
});
================================================
FILE: client/dist/example/picker/picker.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Picker</view>
<view class="page__desc">选择器,这里使用小程序原生的picker。</view>
</view>
<view class="page__bd">
<view class="weui-btn-area">
<picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
<button type="default">单列选择器</button>
</picker>
<picker class="weui-btn" mode="time" value="{{time}}" start="09:01" end="21:01" bindchange="bindTimeChange">
<button type="default">时间选择器</button>
</picker>
<picker class="weui-btn" mode="date" value="{{date}}" start="2015-09-01" end="2017-09-01" bindchange="bindDateChange">
<button type="default">日期选择器</button>
</picker>
</view>
</view>
</view>
================================================
FILE: client/dist/example/picker/picker.wxss
================================================
page{
background-color: #FFFFFF;
}
================================================
FILE: client/dist/example/preview/preview.js
================================================
Page({});
================================================
FILE: client/dist/example/preview/preview.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Preview</view>
<view class="page__desc">表单预览</view>
</view>
<view class="page__bd">
<view class="weui-form-preview">
<view class="weui-form-preview__hd">
<view class="weui-form-preview__item">
<view class="weui-form-preview__label">付款金额</view>
<view class="weui-form-preview__value_in-hd">¥2400.00</view>
</view>
</view>
<view class="weui-form-preview__bd">
<view class="weui-form-preview__item">
<view class="weui-form-preview__label">商品</view>
<view class="weui-form-preview__value">电动打蛋机</view>
</view>
<view class="weui-form-preview__item">
<view class="weui-form-preview__label">标题标题</view>
<view class="weui-form-preview__value">名字名字名字</view>
</view>
<view class="weui-form-preview__item">
<view class="weui-form-preview__label">标题标题</view>
<view class="weui-form-preview__value">很长很长的名字很长很长的名字很长很长的名字很长很长的名字很长很长的名字</view>
</view>
</view>
<view class="weui-form-preview__ft">
<navigator url="" class="weui-form-preview__btn weui-form-preview__btn_primary" hover-class="weui-form-preview__btn_active">操作</navigator>
</view>
</view>
<view class="weui-form-preview">
<view class="weui-form-preview__hd">
<view class="weui-form-preview__label">付款金额</view>
<view class="weui-form-preview__value_in-hd">¥2400.00</view>
</view>
<view class="weui-form-preview__bd">
<view class="weui-form-preview__item">
<view class="weui-form-preview__label">商品</view>
<view class="weui-form-preview__value">电动打蛋机</view>
</view>
<view class="weui-form-preview__item">
<view class="weui-form-preview__label">标题标题</view>
<view class="weui-form-preview__value">名字名字名字</view>
</view>
<view class="weui-form-preview__item">
<view class="weui-form-preview__label">标题标题</view>
<view class="weui-form-preview__value">很长很长的名字很长很长的名字很长很长的名字很长很长的名字很长很长的名字</view>
</view>
</view>
<view class="weui-form-preview__ft">
<navigator class="weui-form-preview__btn weui-form-preview__btn_default" hover-class="weui-form-preview__btn_active">辅助操作</navigator>
<navigator class="weui-form-preview__btn weui-form-preview__btn_primary" hover-class="weui-form-preview__btn_active">操作</navigator>
</view>
</view>
</view>
</view>
================================================
FILE: client/dist/example/preview/preview.wxss
================================================
.weui-form-preview{
margin-bottom: 25px;
}
================================================
FILE: client/dist/example/progress/progress.js
================================================
function _next(){
var that = this;
if(this.data.progress >= 100){
this.setData({
disabled: false
});
return true;
}
this.setData({
progress: ++this.data.progress
});
setTimeout(function(){
_next.call(that);
}, 20);
}
Page({
data: {
progress: 0,
disabled: false
},
upload: function(){
if(this.data.disabled) return;
this.setData({
progress: 0,
disabled: true
});
_next.call(this);
}
});
================================================
FILE: client/dist/example/progress/progress.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Progress</view>
<view class="page__desc">进度条,这里采用小程序原生的progress</view>
</view>
<view class="page__bd page__bd_spacing">
<view class="weui-progress">
<view class="weui-progress__bar">
<progress percent="0" stroke-width="3" />
</view>
<view class="weui-progress__opr">
<icon type="cancel" size="22"></icon>
</view>
</view>
<view class="weui-progress">
<view class="weui-progress__bar">
<progress percent="50" stroke-width="3" />
</view>
<view class="weui-progress__opr">
<icon type="cancel" size="22"></icon>
</view>
</view>
<view class="weui-progress">
<view class="weui-progress__bar">
<progress percent="80" stroke-width="3" />
</view>
<view class="weui-progress__opr">
<icon type="cancel" size="22"></icon>
</view>
</view>
<view class="weui-progress">
<view class="weui-progress__bar">
<progress percent="{{progress}}" stroke-width="3" />
</view>
<view class="weui-progress__opr">
<icon type="cancel" size="22"></icon>
</view>
</view>
<view class="weui-btn-area">
<button type="primary" bindtap="upload" disabled="{{disabled}}">上传</button>
</view>
</view>
</view>
================================================
FILE: client/dist/example/progress/progress.wxss
================================================
.weui-progress{
margin-bottom: 24px;
}
================================================
FILE: client/dist/example/searchbar/searchbar.js
================================================
Page({
data: {
inputShowed: false,
inputVal: ""
},
showInput: function () {
this.setData({
inputShowed: true
});
},
hideInput: function () {
this.setData({
inputVal: "",
inputShowed: false
});
},
clearInput: function () {
this.setData({
inputVal: ""
});
},
inputTyping: function (e) {
this.setData({
inputVal: e.detail.value
});
}
});
================================================
FILE: client/dist/example/searchbar/searchbar.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">SearchBar</view>
<view class="page__desc">搜索栏</view>
</view>
<view class="page__bd">
<view class="weui-search-bar">
<view class="weui-search-bar__form">
<view class="weui-search-bar__box">
<icon class="weui-icon-search_in-box" type="search" size="14"></icon>
<input type="text" class="weui-search-bar__input" placeholder="搜索" value="{{inputVal}}" focus="{{inputShowed}}" bindinput="inputTyping" />
<view class="weui-icon-clear" wx:if="{{inputVal.length > 0}}" bindtap="clearInput">
<icon type="clear" size="14"></icon>
</view>
</view>
<label class="weui-search-bar__label" hidden="{{inputShowed}}" bindtap="showInput">
<icon class="weui-icon-search" type="search" size="14"></icon>
<view class="weui-search-bar__text">搜索</view>
</label>
</view>
<view class="weui-search-bar__cancel-btn" hidden="{{!inputShowed}}" bindtap="hideInput">取消</view>
</view>
<view class="weui-cells searchbar-result" wx:if="{{inputVal.length > 0}}">
<navigator url="" class="weui-cell" hover-class="weui-cell_active">
<view class="weui-cell__bd">
<view>实时搜索文本</view>
</view>
</navigator>
<navigator url="" class="weui-cell" hover-class="weui-cell_active">
<view class="weui-cell__bd">
<view>实时搜索文本</view>
</view>
</navigator>
<navigator url="" class="weui-cell" hover-class="weui-cell_active">
<view class="weui-cell__bd">
<view>实时搜索文本</view>
</view>
</navigator>
<navigator url="" class="weui-cell" hover-class="weui-cell_active">
<view class="weui-cell__bd">
<view>实时搜索文本</view>
</view>
</navigator>
</view>
</view>
</view>
================================================
FILE: client/dist/example/searchbar/searchbar.wxss
================================================
.searchbar-result{
margin-top: 0;
font-size: 14px;
}
.searchbar-result:before{
display: none;
}
.weui-cell{
padding: 12px 15px 12px 35px;
}
================================================
FILE: client/dist/example/slider/slider.js
================================================
Page({});
================================================
FILE: client/dist/example/slider/slider.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Slider</view>
<view class="page__desc">滑块,这里采用小程序原生的slider。</view>
</view>
<view class="page__bd page__bd_spacing">
<slider/>
<slider show-value value="50"/>
</view>
</view>
================================================
FILE: client/dist/example/slider/slider.wxss
================================================
slider{
margin-bottom: 30px;
}
================================================
FILE: client/dist/example/tabbar/tabbar.js
================================================
Page({});
================================================
FILE: client/dist/example/tabbar/tabbar.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Tabbar</view>
<view class="page__desc">底部导航,建议采用小程序原生的tabbar,通过设置app.json来实现。详情请看小程序文档。</view>
</view>
</view>
================================================
FILE: client/dist/example/toast/toast.js
================================================
Page({
openToast: function () {
wx.showToast({
title: '已完成',
icon: 'success',
duration: 3000
});
},
openLoading: function () {
wx.showToast({
title: '数据加载中',
icon: 'loading',
duration: 3000
});
}
});
================================================
FILE: client/dist/example/toast/toast.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Toast</view>
<view class="page__desc">弹出式提示,采用小程序原生的toast</view>
</view>
<view class="page__bd">
<view class="weui-btn-area">
<button class="weui-btn" type="default" bindtap="openToast">成功提示</button>
<button class="weui-btn" type="default" bindtap="openLoading">加载中提示</button>
</view>
</view>
</view>
================================================
FILE: client/dist/example/toast/toast.wxss
================================================
page{
background-color: #FFFFFF;
}
================================================
FILE: client/dist/example/uploader/uploader.js
================================================
Page({
data: {
files: []
},
chooseImage: function (e) {
var that = this;
wx.chooseImage({
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
that.setData({
files: that.data.files.concat(res.tempFilePaths)
});
}
})
},
previewImage: function(e){
wx.previewImage({
current: e.currentTarget.id, // 当前显示图片的http链接
urls: this.data.files // 需要预览的图片http链接列表
})
}
});
================================================
FILE: client/dist/example/uploader/uploader.wxml
================================================
<view class="page">
<view class="page__hd">
<view class="page__title">Uploader</view>
<view class="page__desc">上传组件</view>
</view>
<view class="page__bd">
<view class="weui-cells">
<view class="weui-cell">
<view class="weui-cell__bd">
<view class="weui-uploader">
<view class="weui-uploader__hd">
<view class="weui-uploader__title">图片上传</view>
<view class="weui-uploader__info">{{files.length}}/2</view>
</view>
<view class="weui-uploader__bd">
<view class="weui-uploader__files" id="uploaderFiles">
<block wx:for="{{files}}" wx:key="*this">
<view class="weui-uploader__file" bindtap="previewImage" id="{{item}}">
<image class="weui-uploader__img" src="{{item}}" mode="aspectFill" />
</view>
</block>
<view class="weui-uploader__file">
<image class="weui-uploader__img" src="../images/pic_160.png" mode="aspectFill" />
</view>
<view class="weui-uploader__file">
<image class="weui-uploader__img" src="../images/pic_160.png" mode="aspectFill" />
</view>
<view class="weui-uploader__file">
<image class="weui-uploader__img" src="../images/pic_160.png" mode="aspectFill" />
</view>
<view class="weui-uploader__file weui-uploader__file_status">
<image class="weui-uploader__img" src="../images/pic_160.png" mode="aspectFill" />
<view class="weui-uploader__file-content">
<icon type="warn" size="23" color="#F43530"></icon>
</view>
</view>
<view class="weui-uploader__file weui-uploader__file_status">
<image class="weui-uploader__img" src="../images/pic_160.png" mode="aspectFill" />
<view class="weui-uploader__file-content">50%</view>
</view>
</view>
<view class="weui-uploader__input-box">
<view class="weui-uploader__input" bindtap="chooseImage"></view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
================================================
FILE: client/dist/style/base/fn.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/mixin/setArrow.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/mixin/setOnepx.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/mixin/text.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/reset.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
page{line-height:1.6;font-family:-apple-system-font,Helvetica Neue,sans-serif}icon{vertical-align:middle}
================================================
FILE: client/dist/style/base/variable/color.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/variable/global.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/variable/weui-button.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/variable/weui-cell.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/variable/weui-dialog.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/variable/weui-grid.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/variable/weui-msg.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/base/variable/weui-progress.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
================================================
FILE: client/dist/style/weui.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
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:#fff;line-height:1.41176471;font-size:17px}.weui-cells:before{top:0;border-top:1rpx solid #d9d9d9}.weui-cells:after,.weui-cells:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d9d9d9}.weui-cells:after{bottom:0;border-bottom:1rpx solid #d9d9d9}.weui-cells__title{margin-top:.77em;margin-bottom:.3em;padding-left:15px;padding-right:15px;color:#999;font-size:14px}.weui-cells_after-title{margin-top:0}.weui-cells__tips{margin-top:.3em;color:#999;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:#999}.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(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.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:.35em}.weui-cell__ft_in-radio{padding-left:.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:#fff;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-cell_warn,.weui-textarea-counter_warn{color:#e64340}.weui-form-preview{position:relative;background-color:#fff}.weui-form-preview:before{top:0;border-top:1rpx solid #d9d9d9}.weui-form-preview:after,.weui-form-preview:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d9d9d9}.weui-form-preview:after{bottom:0;border-bottom:1rpx solid #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:#999;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:#999;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:#eee}.weui-form-preview__btn_default{color:#999}.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(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.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__bd_in-select-before,.weui-cell__hd_in-select-after{padding-left:15px}.weui-cell_vcode{padding-right:0}.weui-vcode-btn,.weui-vcode-img{margin-left:5px;height:2.58823529em;vertical-align:middle}.weui-vcode-btn{display:inline-block;padding:0 .6em 0 .7em;border-left:1px solid #e5e5e5;line-height:2.58823529em;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,.5)}.weui-uploader__file-content{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff}.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:after,.weui-uploader__input-box:before{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:#999}.weui-uploader__input-box:active:after,.weui-uploader__input-box:active:before{background-color:#999}.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:#999}.weui-msg__opr-area{margin-bottom:25px}.weui-msg__extra-area{margin-bottom:15px;font-size:14px;color:#999}@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 .3em}.weui-agree{display:block;padding:.5em 15px;font-size:13px}.weui-agree__text{color:#999}.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:#fff;border-radius:3px;width:11px;height:11px}.weui-agree__checkbox-icon-check{position:absolute;top:1px;left:1px}.weui-footer{color:#999;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:-.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:#000;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:a 1s steps(12) infinite;animation:a 1s steps(12) 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 a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.weui-badge{display:inline-block;padding:.15em .4em;min-width:8px;border-radius:18px;background-color:#e64340;color:#fff;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:-.9em;padding:0 .55em;background-color:#fff;color:#999}.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:#fff;margin-top:10px;position:relative;overflow:hidden}.weui-panel:first-child{margin-top:0}.weui-panel:before{top:0;border-top:1rpx solid #e5e5e5}.weui-panel:after,.weui-panel:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-panel:after{bottom:0;border-bottom:1rpx solid #e5e5e5}.weui-panel__hd{padding:14px 15px 10px;color:#999;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:#999;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 #ccc}.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:#fff;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:#fff;line-height:28px}.weui-search-bar__cancel-btn{margin-left:10px;line-height:28px;color:#09bb07;white-space:nowrap}
================================================
FILE: client/dist/style/widget/weui-agree/weui-agree.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-agree{display:block;padding:.5em 15px;font-size:13px}.weui-agree__text{color:#999}.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:#fff;border-radius:3px;width:11px;height:11px}.weui-agree__checkbox-icon-check{position:absolute;top:1px;left:1px}
================================================
FILE: client/dist/style/widget/weui-animate/weui-animate.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
@-webkit-keyframes a{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes a{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.weui-animate-slide-up{-webkit-animation:a ease .3s forwards;animation:a ease .3s forwards}@-webkit-keyframes b{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes b{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.weui-animate-slide-down{-webkit-animation:b ease .3s forwards;animation:b ease .3s forwards}@-webkit-keyframes c{0%{opacity:0}to{opacity:1}}@keyframes c{0%{opacity:0}to{opacity:1}}.weui-animate-fade-in{-webkit-animation:c ease .3s forwards;animation:c ease .3s forwards}@-webkit-keyframes d{0%{opacity:1}to{opacity:0}}@keyframes d{0%{opacity:1}to{opacity:0}}.weui-animate-fade-out{-webkit-animation:d ease .3s forwards;animation:d ease .3s forwards}
================================================
FILE: client/dist/style/widget/weui-button/weui-button.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-btn{margin-top:15px}.weui-btn:first-child{margin-top:0}.weui-btn-area{margin:1.17647059em 15px .3em}
================================================
FILE: client/dist/style/widget/weui-cell/weui-access.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.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}
================================================
FILE: client/dist/style/widget/weui-cell/weui-cell.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-cells{position:relative;margin-top:1.17647059em;background-color:#fff;line-height:1.41176471;font-size:17px}.weui-cells:before{top:0;border-top:1rpx solid #d9d9d9}.weui-cells:after,.weui-cells:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d9d9d9}.weui-cells:after{bottom:0;border-bottom:1rpx solid #d9d9d9}.weui-cells__title{margin-top:.77em;margin-bottom:.3em;padding-left:15px;padding-right:15px;color:#999;font-size:14px}.weui-cells_after-title{margin-top:0}.weui-cells__tips{margin-top:.3em;color:#999;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:#999}
================================================
FILE: client/dist/style/widget/weui-cell/weui-check.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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:.35em}.weui-cell__ft_in-radio{padding-left:.35em}
================================================
FILE: client/dist/style/widget/weui-cell/weui-form/weui-form-preview.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-form-preview{position:relative;background-color:#fff}.weui-form-preview:before{top:0;border-top:1rpx solid #d9d9d9}.weui-form-preview:after,.weui-form-preview:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d9d9d9}.weui-form-preview:after{bottom:0;border-bottom:1rpx solid #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:#999;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:#999;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:#eee}.weui-form-preview__btn_default{color:#999}.weui-form-preview__btn_primary{color:#0bb20c}
================================================
FILE: client/dist/style/widget/weui-cell/weui-form/weui-form_common.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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:#fff;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-cell_warn,.weui-textarea-counter_warn{color:#e64340}
================================================
FILE: client/dist/style/widget/weui-cell/weui-form/weui-select.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.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__bd_in-select-before,.weui-cell__hd_in-select-after{padding-left:15px}
================================================
FILE: client/dist/style/widget/weui-cell/weui-form/weui-vcode.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-cell_vcode{padding-right:0}.weui-vcode-btn,.weui-vcode-img{margin-left:5px;height:2.58823529em;vertical-align:middle}.weui-vcode-btn{display:inline-block;padding:0 .6em 0 .7em;border-left:1px solid #e5e5e5;line-height:2.58823529em;font-size:17px;color:#3cc51f;white-space:nowrap}.weui-vcode-btn:active{color:#52a341}
================================================
FILE: client/dist/style/widget/weui-cell/weui-form.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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:#fff;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-cell_warn,.weui-textarea-counter_warn{color:#e64340}.weui-form-preview{position:relative;background-color:#fff}.weui-form-preview:before{top:0;border-top:1rpx solid #d9d9d9}.weui-form-preview:after,.weui-form-preview:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d9d9d9}.weui-form-preview:after{bottom:0;border-bottom:1rpx solid #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:#999;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:#999;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:#eee}.weui-form-preview__btn_default{color:#999}.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(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.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__bd_in-select-before,.weui-cell__hd_in-select-after{padding-left:15px}.weui-cell_vcode{padding-right:0}.weui-vcode-btn,.weui-vcode-img{margin-left:5px;height:2.58823529em;vertical-align:middle}.weui-vcode-btn{display:inline-block;padding:0 .6em 0 .7em;border-left:1px solid #e5e5e5;line-height:2.58823529em;font-size:17px;color:#3cc51f;white-space:nowrap}.weui-vcode-btn:active{color:#52a341}
================================================
FILE: client/dist/style/widget/weui-cell/weui-switch.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-cell_switch{padding-top:6px;padding-bottom:6px}
================================================
FILE: client/dist/style/widget/weui-cell/weui-uploader.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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,.5)}.weui-uploader__file-content{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff}.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:after,.weui-uploader__input-box:before{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:#999}.weui-uploader__input-box:active:after,.weui-uploader__input-box:active:before{background-color:#999}.weui-uploader__input{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;opacity:0}
================================================
FILE: client/dist/style/widget/weui-flex/weui-flex.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-flex{display:-webkit-box;display:-webkit-flex;display:flex}.weui-flex__item{-webkit-box-flex:1;-webkit-flex:1;flex:1}
================================================
FILE: client/dist/style/widget/weui-footer/weui-footer.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-footer{color:#999;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:-.65em;top:.36em;bottom:.36em}.weui-footer__link:first-child:before{display:none}.weui-footer__text{padding:0 .34em;font-size:12px}
================================================
FILE: client/dist/style/widget/weui-grid/weui-grid.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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:#000;font-size:14px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
================================================
FILE: client/dist/style/widget/weui-loading/weui-loading.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-loading{margin:0 5px;width:20px;height:20px;display:inline-block;vertical-align:middle;-webkit-animation:a 1s steps(12) infinite;animation:a 1s steps(12) 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 a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}
================================================
FILE: client/dist/style/widget/weui-media-box/weui-media-box.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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:#999;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}
================================================
FILE: client/dist/style/widget/weui-page/weui-article.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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}
================================================
FILE: client/dist/style/widget/weui-page/weui-msg.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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:#999}.weui-msg__opr-area{margin-bottom:25px}.weui-msg__extra-area{margin-bottom:15px;font-size:14px;color:#999}@media screen and (min-height:438px){.weui-msg__extra-area{position:fixed;left:0;bottom:0;width:100%;text-align:center}}
================================================
FILE: client/dist/style/widget/weui-panel/weui-panel.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-panel{background-color:#fff;margin-top:10px;position:relative;overflow:hidden}.weui-panel:first-child{margin-top:0}.weui-panel:before{top:0;border-top:1rpx solid #e5e5e5}.weui-panel:after,.weui-panel:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-panel:after{bottom:0;border-bottom:1rpx solid #e5e5e5}.weui-panel__hd{padding:14px 15px 10px;color:#999;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}
================================================
FILE: client/dist/style/widget/weui-progress/weui-progress.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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}
================================================
FILE: client/dist/style/widget/weui-searchbar/weui-searchbar.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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:#fff;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:#fff;line-height:28px}.weui-search-bar__cancel-btn{margin-left:10px;line-height:28px;color:#09bb07;white-space:nowrap}
================================================
FILE: client/dist/style/widget/weui-tab/weui-navbar.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-navbar{display:-webkit-box;display:-webkit-flex;display:flex;position:absolute;z-index:500;top:0;width:100%;border-bottom:1rpx solid #ccc}.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}
================================================
FILE: client/dist/style/widget/weui-tab/weui-tab.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-navbar{display:-webkit-box;display:-webkit-flex;display:flex;position:absolute;z-index:500;top:0;width:100%;border-bottom:1rpx solid #ccc}.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}
================================================
FILE: client/dist/style/widget/weui-tips/weui-badge.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.weui-badge{display:inline-block;padding:.15em .4em;min-width:8px;border-radius:18px;background-color:#e64340;color:#fff;line-height:1.2;text-align:center;font-size:12px;vertical-align:middle}.weui-badge_dot{padding:.4em;min-width:0}
================================================
FILE: client/dist/style/widget/weui-tips/weui-loadmore.wxss
================================================
/*!
* WeUI v1.1.1 (https://github.com/weui/weui-wxss)
* Copyright 2017 Tencent, Inc.
* Licensed under the MIT license
*/
.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:-.9em;padding:0 .55em;background-color:#fff;color:#999}.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}
================================================
FILE: client/libs/amap-wx.js
================================================
function AMapWX(a){this.key=a.key,this.requestConfig={key:a.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"}}AMapWX.prototype.getWxLocation=function(a,b){wx.getLocation({type:"gcj02",success:function(a){var c=a.longitude+","+a.latitude;wx.setStorage({key:"userLocation",data:c}),b(c)},fail:function(c){wx.getStorage({key:"userLocation",success:function(a){a.data&&b(a.data)}}),a.fail({errCode:"0",errMsg:c.errMsg||""})}})},AMapWX.prototype.getRegeo=function(a){function c(c){var d=b.requestConfig;wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:b.key,location:c,extensions:"all",s:d.s,platform:d.platform,appname:b.key,sdkversion:d.sdkversion,logversion:d.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){var d,e,f,g,h,i,j,k,l;b.data.status&&"1"==b.data.status?(d=b.data.regeocode,e=d.addressComponent,f=[],g="",d&&d.roads[0]&&d.roads[0].name&&(g=d.roads[0].name+"附近"),h=c.split(",")[0],i=c.split(",")[1],d.pois&&d.pois[0]&&(g=d.pois[0].name+"附近",j=d.pois[0].location,j&&(h=parseFloat(j.split(",")[0]),i=parseFloat(j.split(",")[1]))),e.provice&&f.push(e.provice),e.city&&f.push(e.city),e.district&&f.push(e.district),e.streetNumber&&e.streetNumber.street&&e.streetNumber.number?(f.push(e.streetNumber.street),f.push(e.streetNumber.number)):(k="",d&&d.roads[0]&&d.roads[0].name&&(k=d.roads[0].name),f.push(k)),f=f.join(""),l=[{iconPath:a.iconPath,width:a.iconWidth,height:a.iconHeight,name:f,desc:g,longitude:h,latitude:i,id:0,regeocodeData:d}],a.success(l)):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this;a.location?c(a.location):b.getWxLocation(a,function(a){c(a)})},AMapWX.prototype.getWeather=function(a){function d(d){var e="base";a.type&&"forecast"==a.type&&(e="all"),wx.request({url:"https://restapi.amap.com/v3/weather/weatherInfo",data:{key:b.key,city:d,extensions:e,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){function c(a){var b={city:{text:"城市",data:a.city},weather:{text:"天气",data:a.weather},temperature:{text:"温度",data:a.temperature},winddirection:{text:"风向",data:a.winddirection+"风"},windpower:{text:"风力",data:a.windpower+"级"},humidity:{text:"湿度",data:a.humidity+"%"}};return b}var d,e;b.data.status&&"1"==b.data.status?b.data.lives?(d=b.data.lives,d&&d.length>0&&(d=d[0],e=c(d),e["liveData"]=d,a.success(e))):b.data.forecasts&&b.data.forecasts[0]&&a.success({forecast:b.data.forecasts[0]}):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}function e(e){wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:b.key,location:e,extensions:"all",s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){var c,e;b.data.status&&"1"==b.data.status?(e=b.data.regeocode,e.addressComponent?c=e.addressComponent.adcode:e.aois&&e.aois.length>0&&(c=e.aois[0].adcode),d(c)):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this,c=b.requestConfig;a.city?d(a.city):b.getWxLocation(a,function(a){e(a)})},AMapWX.prototype.getPoiAround=function(a){function d(d){var e={key:b.key,location:d,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.querytypes&&(e["types"]=a.querytypes),a.querykeywords&&(e["keywords"]=a.querykeywords),wx.request({url:"https://restapi.amap.com/v3/place/around",data:e,method:"GET",header:{"content-type":"application/json"},success:function(b){var c,d,e,f;if(b.data.status&&"1"==b.data.status){if(b=b.data,b&&b.pois){for(c=[],d=0;d<b.pois.length;d++)e=0==d?a.iconPathSelected:a.iconPath,c.push({latitude:parseFloat(b.pois[d].location.split(",")[1]),longitude:parseFloat(b.pois[d].location.split(",")[0]),iconPath:e,width:22,height:32,id:d,name:b.pois[d].name,address:b.pois[d].address});f={markers:c,poisData:b.pois},a.success(f)}}else a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this,c=b.requestConfig;a.location?d(a.location):b.getWxLocation(a,function(a){d(a)})},AMapWX.prototype.getStaticmap=function(a){function f(b){c.push("location="+b),a.zoom&&c.push("zoom="+a.zoom),a.size&&c.push("size="+a.size),a.scale&&c.push("scale="+a.scale),a.markers&&c.push("markers="+a.markers),a.labels&&c.push("labels="+a.labels),a.paths&&c.push("paths="+a.paths),a.traffic&&c.push("traffic="+a.traffic);var e=d+c.join("&");a.success({url:e})}var e,b=this,c=[],d="https://restapi.amap.com/v3/staticmap?";c.push("key="+b.key),e=b.requestConfig,c.push("s="+e.s),c.push("platform="+e.platform),c.push("appname="+e.appname),c.push("sdkversion="+e.sdkversion),c.push("logversion="+e.logversion),a.location?f(a.location):b.getWxLocation(a,function(a){f(a)})},AMapWX.prototype.getInputtips=function(a){var b=this,c=b.requestConfig,d={key:b.key,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.location&&(d["location"]=a.location),a.keywords&&(d["keywords"]=a.keywords),a.type&&(d["type"]=a.type),a.city&&(d["city"]=a.city),a.citylimit&&(d["citylimit"]=a.citylimit),wx.request({url:"https://restapi.amap.com/v3/assistant/inputtips",data:d,method:"GET",header:{"content-type":"application/json"},success:function(b){b&&b.data&&b.data.tips&&a.success({tips:b.data.tips})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})},AMapWX.prototype.getDrivingRoute=function(a){var b=this,c=b.requestConfig,d={key:b.key,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.origin&&(d["origin"]=a.origin),a.destination&&(d["destination"]=a.destination),a.strategy&&(d["strategy"]=a.strategy),a.waypoints&&(d["waypoints"]=a.waypoints),a.avoidpolygons&&(d["avoidpolygons"]=a.avoidpolygons),a.avoidroad&&(d["avoidroad"]=a.avoidroad),wx.request({url:"https://restapi.amap.com/v3/direction/driving",data:d,method:"GET",header:{"content-type":"application/json"},success:function(b){b&&b.data&&b.data.route&&a.success({paths:b.data.route.paths,taxi_cost:b.data.route.taxi_cost||""})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})},AMapWX.prototype.getWalkingRoute=function(a){var b=this,c=b.requestConfig,d={key:b.key,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.origin&&(d["origin"]=a.origin),a.destination&&(d["destination"]=a.destination),wx.request({url:"https://restapi.amap.com/v3/direction/walking",data:d,method:"GET",header:{"content-type":"application/json"},success:function(b){b&&b.data&&b.data.route&&a.success({paths:b.data.route.paths})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})},AMapWX.prototype.getTransitRoute=function(a){var b=this,c=b.requestConfig,d={key:b.key,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.origin&&(d["origin"]=a.origin),a.destination&&(d["destination"]=a.destination),a.strategy&&(d["strategy"]=a.strategy),a.city&&(d["city"]=a.city),a.cityd&&(d["cityd"]=a.cityd),wx.request({url:"https://restapi.amap.com/v3/direction/transit/integrated",data:d,method:"GET",header:{"content-type":"application/json"},success:function(b){if(b&&b.data&&b.data.route){var c=b.data.route;a.success({distance:c.distance||"",taxi_cost:c.taxi_cost||"",transits:c.transits})}},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})},AMapWX.prototype.getRidingRoute=function(a){var b=this,c=b.requestConfig,d={key:b.key,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.origin&&(d["origin"]=a.origin),a.destination&&(d["destination"]=a.destination),wx.request({url:"https://restapi.amap.com/v4/direction/bicycling",data:d,method:"GET",header:{"content-type":"application/json"},success:function(b){b&&b.data&&b.data.data&&a.success({paths:b.data.data.paths})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})},module.exports.AMapWX=AMapWX;
================================================
FILE: client/libs/qqmap-wx-jssdk.js
================================================
/**
* 微信小程序JavaScriptSDK
*
* @version 1.0
* @date 2017-01-10
* @author jaysonzhou@tencent.com
*/
var ERROR_CONF = {
KEY_ERR: 311,
KEY_ERR_MSG: 'key格式错误',
PARAM_ERR: 310,
PARAM_ERR_MSG: '请求参数信息有误',
SYSTEM_ERR: 600,
SYSTEM_ERR_MSG: '系统错误',
WX_ERR_CODE: 1000,
WX_OK_CODE: 200
};
var BASE_URL = 'https://apis.map.qq.com/ws/';
var URL_SEARCH = BASE_URL + 'place/v1/search';
var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion';
var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/';
var URL_CITY_LIST = BASE_URL + 'district/v1/list';
var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren';
var URL_DISTANCE = BASE_URL + 'distance/v1/';
var Utils = {
/**
* 得到终点query字符串
* @param {Array|String} 检索数据
*/
location2query(data) {
if (typeof data == 'string') {
return data;
}
var query = '';
for (var i = 0; i < data.length; i++) {
var d = data[i];
if (!!query) {
query += ';';
}
if (d.location) {
query = query + d.location.lat + ',' + d.location.lng;
}
if (d.latitude && d.longitude) {
query = query + d.latitude + ',' + d.longitude;
}
}
return query;
},
/**
* 使用微信接口进行定位
*/
getWXLocation(success, fail, complete) {
wx.getLocation({
type: 'gcj02',
success: success,
fail: fail,
complete: complete
});
},
/**
* 获取location参数
*/
getLocationParam(location) {
if (typeof location == 'string') {
var locationArr = location.split(',');
if (locationArr.length === 2) {
location = {
latitude: location.split(',')[0],
longitude: location.split(',')[1]
};
} else {
location = {};
}
}
return location;
},
/**
* 回调函数默认处理
*/
polyfillParam(param) {
param.success = param.success || function () { };
param.fail = param.fail || function () { };
param.complete = param.complete || function () { };
},
/**
* 验证param对应的key值是否为空
*
* @param {Object} param 接口参数
* @param {String} key 对应参数的key
*/
checkParamKeyEmpty(param, key) {
if (!param[key]) {
var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误');
param.fail(errconf);
param.complete(errconf);
return true;
}
return false;
},
/**
* 验证参数中是否存在检索词keyword
*
* @param {Object} param 接口参数
*/
checkKeyword(param){
return !this.checkParamKeyEmpty(param, 'keyword');
},
/**
* 验证location值
*
* @param {Object} param 接口参数
*/
checkLocation(param) {
var location = this.getLocationParam(param.location);
if (!location || !location.latitude || !location.longitude) {
var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误')
param.fail(errconf);
param.complete(errconf);
return false;
}
return true;
},
/**
* 构造错误数据结构
* @param {Number} errCode 错误码
* @param {Number} errMsg 错误描述
*/
buildErrorConfig(errCode, errMsg) {
return {
status: errCode,
message: errMsg
};
},
/**
* 构造微信请求参数,公共属性处理
*
* @param {Object} param 接口参数
* @param {Object} param 配置项
*/
buildWxRequestConfig(param, options) {
var that = this;
options.header = { "content-type": "application/json" };
options.method = 'GET';
options.success = function (res) {
var data = res.data;
if (data.status === 0) {
param.success(data);
} else {
param.fail(data);
}
};
options.fail = function (res) {
res.statusCode = ERROR_CONF.WX_ERR_CODE;
param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, result.errMsg));
};
options.complete = function (res) {
var statusCode = +res.statusCode;
switch(statusCode) {
case ERROR_CONF.WX_ERR_CODE: {
param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
break;
}
case ERROR_CONF.WX_OK_CODE: {
var data = res.data;
if (data.status === 0) {
param.complete(data);
} else {
param.complete(that.buildErrorConfig(data.status, data.message));
}
break;
}
default:{
param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));
}
}
}
return options;
},
/**
* 处理用户参数是否传入坐标进行不同的处理
*/
locationProcess(param, locationsuccess, locationfail, locationcomplete) {
var that = this;
locationfail = locationfail || function (res) {
res.statusCode = ERROR_CONF.WX_ERR_CODE;
param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
};
locationcomplete = locationcomplete || function (res) {
if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {
param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
}
};
if (!param.location) {
that.getWXLocation(locationsuccess, locationfail, locationcomplete);
} else if (that.checkLocation(param)) {
var location = Utils.getLocationParam(param.location);
locationsuccess(location);
}
}
}
class QQMapWX {
/**
* 构造函数
*
* @param {Object} options 接口参数,key 为必选参数
*/
constructor(options) {
if (!options.key) {
throw Error('key值不能为空');
}
this.key = options.key;
}
/**
* POI周边检索
*
* @param {Object} options 接口参数对象
*
* 参数对象结构可以参考
* @see http://lbs.qq.com/webservice_v1/guide-search.html
*/
search(options) {
var that = this;
options = options || {};
Utils.polyfillParam(options);
if (!Utils.checkKeyword(options)) {
return;
}
var requestParam = {
keyword: options.keyword,
orderby: options.orderby || '_distance',
page_size: options.page_size || 10,
page_index: options.page_index || 1,
output: 'json',
key: that.key
};
if (options.address_format) {
requestParam.address_format = options.address_format;
}
if (options.filter) {
requestParam.filter = options.filter;
}
var distance = options.distance || "1000";
var auto_extend = options.auto_extend || 1;
var locationsuccess = function (result) {
requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend +")";
wx.request(Utils.buildWxRequestConfig(options, {
url: URL_SEARCH,
data: requestParam
}));
}
Utils.locationProcess(options, locationsuccess);
}
/**
* sug模糊检索
*
* @param {Object} options 接口参数对象
*
* 参数对象结构可以参考
* http://lbs.qq.com/webservice_v1/guide-suggestion.html
*/
getSuggestion(options) {
var that = this;
options = options || {};
Utils.polyfillParam(options);
if (!Utils.checkKeyword(options)) {
return;
}
var requestParam = {
keyword: options.keyword,
region: options.region || '全国',
region_fix: options.region_fix || 0,
policy: options.policy || 0,
output: 'json',
key: that.key
};
wx.request(Utils.buildWxRequestConfig(options, {
url: URL_SUGGESTION,
data: requestParam
}));
}
/**
* 逆地址解析
*
* @param {Object} options 接口参数对象
*
* 请求参数结构可以参考
* http://lbs.qq.com/webservice_v1/guide-gcoder.html
*/
reverseGeocoder(options) {
var that = this;
options = options || {};
Utils.polyfillParam(options);
var requestParam = {
coord_type: options.coord_type || 5,
get_poi: options.get_poi || 0,
output: 'json',
key: that.key
};
if (options.poi_options) {
requestParam.poi_options = options.poi_options
}
var locationsuccess = function (result) {
requestParam.location = result.latitude + ',' + result.longitude;
wx.request(Utils.buildWxRequestConfig(options, {
url: URL_GET_GEOCODER,
data: requestParam
}));
};
Utils.locationProcess(options, locationsuccess);
}
/**
* 地址解析
*
* @param {Object} options 接口参数对象
*
* 请求参数结构可以参考
* http://lbs.qq.com/webservice_v1/guide-geocoder.html
*/
geocoder(options) {
var that = this;
options = options || {};
Utils.polyfillParam(options);
if (Utils.checkParamKeyEmpty(options, 'address')) {
return;
}
var requestParam = {
address: options.address,
output: 'json',
key: that.key
};
wx.request(Utils.buildWxRequestConfig(options, {
url: URL_GET_GEOCODER,
data: requestParam
}));
}
/**
* 获取城市列表
*
* @param {Object} options 接口参数对象
*
* 请求参数结构可以参考
* http://lbs.qq.com/webservice_v1/guide-region.html
*/
getCityList(options) {
var that = this;
options = options || {};
Utils.polyfillParam(options);
var requestParam = {
output: 'json',
key: that.key
};
wx.request(Utils.buildWxRequestConfig(options, {
url: URL_CITY_LIST,
data: requestParam
}));
}
/**
* 获取对应城市ID的区县列表
*
* @param {Object} options 接口参数对象
*
* 请求参数结构可以参考
* http://lbs.qq.com/webservice_v1/guide-region.html
*/
getDistrictByCityId(options) {
var that = this;
options = options || {};
Utils.polyfillParam(options);
if (Utils.checkParamKeyEmpty(options, 'id')) {
return;
}
var requestParam = {
id: options.id || '',
output: 'json',
key: that.key
};
wx.request(Utils.buildWxRequestConfig(options, {
url: URL_AREA_LIST,
data: requestParam
}));
}
/**
* 用于单起点到多终点的路线距离(非直线距离)计算:
* 支持两种距离计算方式:步行和驾车。
* 起点到终点最大限制直线距离10公里。
*
* @param {Object} options 接口参数对象
*
* 请求参数结构可以参考
* http://lbs.qq.com/webservice_v1/guide-distance.html
*/
calculateDistance(options) {
var that = this;
options = options || {};
Utils.polyfillParam(options);
if (Utils.checkParamKeyEmpty(options, 'to')) {
return;
}
var requestParam = {
mode: options.mode || 'walking',
to: Utils.location2query(options.to),
output: 'json',
key: that.key
};
var locationsuccess = function (result) {
requestParam.from = result.latitude + ',' + result.longitude;
wx.request(Utils.buildWxRequestConfig(options, {
url: URL_DISTANCE,
data: requestParam
}));
}
if (options.from) {
options.location = options.from;
}
Utils.locationProcess(options, locationsuccess);
}
}
module.exports = QQMapWX;
================================================
FILE: client/pages/addLocation/addLocation.js
================================================
var des_lat = -1;
var des_lng = -1;
var des_title = "";
var callout_obj={};
Page({
data: {
markers: [{
iconPath: "../../image/marker.png",
id: 0,
latitude: -1,
longitude: -1,
callout:{}
}],
controls: [{
id: 1,
iconPath: '../../image/location.png',
position: {
left: 20,
top: 450 - 50,
width: 30,
height: 30
},
clickable: true
}],
inputShowed: false,
inputVal: "",
central_longitude: -1,
central_latitude: 20,
},
regionchange(e) {
console.log(e.type)
},
/**
* 点击marker的时候触发,显示callout
*/
markertap(e) {
var that = this;
callout_obj = {
content:des_title,
color:"#000",
fontSize:12,
borderRadius:5,
padding:3,
display:'ALWAYS',
textAlign:'cneter'
};
that.setData({
markers:[{
iconPath: "../../image/marker.png",
id: 0,
latitude: des_lat,
longitude: des_lng,
callout: callout_obj
}]
});
},
controltap(e) {
var that = this;
that.mapCtx.moveToLocation();
},
searchDetail: function () {
wx.redirectTo({
url: '../searchDetail/searchDetail',
})
},
/**
* 页面载入的时候获取用户地址
*/
onLoad: function (options) {
var that = this;
if (!getApp().data.haveLocation) {
wx.getLocation({
type: 'wgs84',
success: function (res) {
that.setData({
central_latitude: res.latitude,
central_longitude: res.longitude
});
}
});
getApp().data.haveLocation = true;
//页面退出的时候也要更新haveLocation!!!!!
// !!!!!!!
}
des_lat = options.lat;
des_lng = options.lng;
des_title = options.title;
that.setData({
markers: [{
iconPath: "../../image/marker.png",
id: 0,
latitude: des_lat,
longitude: des_lng
}],
central_latitude: des_lat,
central_longitude: des_lng
})
},
onReady: function (e) {
var that = this;
that.mapCtx = wx.createMapContext('myMap');
},
/**
* 确定地点并返回
*/
submit_location: function() {
getApp().data.activity_lat = des_lat;
getApp().data.activity_lng = des_lng;
getApp().data.activity_location = des_title;
wx.navigateBack({
delta:1
});
console.log(getApp().data.activity_location);
}
})
================================================
FILE: client/pages/addLocation/addLocation.json
================================================
{}
================================================
FILE: client/pages/addLocation/addLocation.wxml
================================================
<view class="page">
<view class="page__bd">
<view class="weui-search-bar">
<view class="weui-search-bar__form">
<view class="weui-search-bar__box">
<icon class="weui-icon-search_in-box" type="search" size="14"></icon>
<input type="text" class="weui-search-bar__input" placeholder="搜索" bindtap="searchDetail" />
</view>
</view>
</view>
</view>
<view class='page_bd'>
<map id="myMap" longitude="{{central_longitude}}" latitude="{{central_latitude}}" scale="14" controls="{{controls}}" bindcontroltap="controltap" markers="{{markers}}" show-location='true' bindmarkertap="markertap" bindregionchange="regionchange" show-location style="width: 100%; height: 900rpx;">
</map>
</view>
<view class='page_bd btn-submit'>
<button class="weui-btn" type="primary" bindtap="submit_location">确定</button>
</view>
</view>
================================================
FILE: client/pages/addLocation/addLocation.wxss
================================================
.searchbar-result{
margin-top: 0;
font-size: 14px;
}
.searchbar-result:before{
display: none;
}
.weui-cell{
padding: 12px 15px 12px 35px;
}
.btn-submit {
margin-top: 50rpx;
}
================================================
FILE: client/pages/checkIn/checkIn.js
================================================
// pages/checkIn/checkIn.js
var uploadFn = require('../../utils/upload.js');
var config = require('../../config.js');
var distance = require('../../utils/getdistance.js');
var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');
//腾讯地图Key
var demo = new QQMapWX({
key: ''
});
const app = getApp();
var photo_check_url = null;
var photo_check_res = false;
var location_check_res = false;
var face_check_res = false;
var activity_lat = null;
var activity_lng = null;
var activity_id = null;
Page({
/**
* 页面的初始数据
*/
data: {
activity_title: "",
photo: "../../image/avator.jpg",
location_res: "等待验证",
face_res: "等待验证",
face_disabled:false,
location_disabled:false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this;
console.log('点击打卡', photo_check_res, location_check_res)
activity_lat = options.lat;
activity_lng = options.lng;
activity_id = options.activityId;
console.log(options.activityId);
if(options.face == 0){
face_check_res = true;
}
if(options.location == 0) {
location_check_res = true;
}
console.log(options.face,options.location);
that.setData({
activity_title: options.title,
face_disabled: options.face==0?true:false,
location_disabled: options.location == 0 ? true : false
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
var that = this;
that.setData({
face_disabled: false,
location_disabled: false
})
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
/**
* 选择图片
* api_key face++的人脸对比接口key
* api_secret face++的人脸对比接口secret
* image_url2 第二张人脸的照片
*/
chooseImage: function () {
wx.chooseImage({
success: function (res) {
var tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 'https://api-cn.faceplusplus.com/facepp/v3/compare', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'image_file1',
formData: {
'api_key': '',
'api_secret': '',
'image_url2': ''
},
success: function (res) {
console.log(res.data);
//do something
}
})
}
})
},
/**
* 点击上传打卡照片时,进行图片签到
*/
photoCheck: function () {
var me = this;
wx.chooseImage({
success: function (res) {
var filePath = res.tempFilePaths[0];
// var fileName = filePath.match(/http.{7}(.*)/);
// fileName = fileName[1];
var fileName = Date.parse(new Date()) + '.jpg';
uploadFn(filePath, fileName, me, function (photo_url) {
photo_check_url = photo_url;
photo_check_res = true;
// 最后用的时候再打开,否则频繁请求说不定要钱呢!
me.setData({
photo: photo_url
});
// console.log(photo_url);
});
},
})
},
/**
* 点击地点验证,进行地点签到
*/
locationCheck: function () {
var that = this;
wx.getLocation({
success: function (res) {
var p1 = {
lat: res.latitude,
lng: res.longitude
};
var p2 = {
lat: activity_lat,
lng: activity_lng
};
// console.log(p1, p2);
demo.calculateDistance({
to: [{
latitude: p1.lat,
longitude: p1.lng
}],
from: {
latitude: p2.lat,
longitude: p2.lng
},
success: function (res) {
var dis = res.result.elements[0].distance;
if (dis <= 1000) {
location_check_res = true;
that.setData({
location_res: "验证成功"
})
} else {
location_check_res = false;
that.setData({
location_res: "验证失败"
})
}
// console.log(res.result.elements[0].distance);
console.log(res);
},
fail: function (res) {
console.log(res);
},
})
},
})
},
/**
* 点击人脸验证,进行人脸签到
* api_key face++的人脸对比接口key
* api_secret face++的人脸对比接口secret
* image_url2 第二张人脸的照片
*/
faceCheck: function () {
var that = this;
wx.chooseImage({
success: function (res) {
var avator_url = app.globalData.avator_url;
console.log('本地照片地址',avator_url);
if (avator_url == '') {
wx.showToast({
title: '请绑定照片',
duration: 1000
})
} else {
var tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 'https://api-cn.faceplusplus.com/facepp/v3/compare', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'image_file1',
formData: {
'api_key': '',
'api_secret': '',
'image_url2': avator_url
},
success: function (res) {
console.log(res.data);
var obj = JSON.parse(res.data);
// console.log(obj.confidence);
if(obj.confidence >= 50){
face_check_res = true;
that.setData({
face_res:'验证成功'
})
}else if (obj.confidence < 50) {
that.setData({
face_res:'验证失败'
})
}else{
wx.showToast({
title: 'API并发控制',
duration: 1000
})
}
}
})
}
}
})
},
submitCheck: function(){
if(photo_check_res&&location_check_res&&face_check_res){
wx.request({
url: config.url + '/check',
method:'POST',
data:{
'userId':app.globalData.user_id,
'activityId':activity_id,
'photoUrl':photo_check_url
},
success: function(check_res){
if(check_res.data.code==1){
wx.navigateBack({
});
photo_check_res = false;
face_check_res = false;
location_check_res = false;
}
}
})
}else{
wx.showToast({
title: '请完成所有验证',
duration: 1000
})
}
}
})
================================================
FILE: client/pages/checkIn/checkIn.json
================================================
{}
================================================
FILE: client/pages/checkIn/checkIn.wxml
================================================
<view class="page">
<view class="page_check_hd">
<view class="page_check_title">{{activity_title}}</view>
</view>
<view class='check_image_bd'>
<image class='check_image' src='{{photo}}'></image>
</view>
<view class="button-sp-area">
<button class="weui-btn" type="primary" plain="true" bindtap='photoCheck'>上传打卡照片</button>
</view>
<view class='check_group'>
<view class='group_item'>
<button class="weui-btn mini-btn" disabled='{{location_disabled}}' type="primary" size="mini" bindtap='locationCheck'>地点验证</button>
<view class='text_item'>{{location_res}}</view>
</view>
<view class='group_item'>
<button class="weui-btn mini-btn" type="primary" size="mini" bindtap='faceCheck' disabled='{{face_disabled}}'>人脸验证</button>
<view class='text_item'>{{face_res}}</view>
</view>
</view>
<view class="page__bd page__bd_spacing">
<view class='btn_footer'></view>
<button class="weui-btn" type="primary" bindtap='submitCheck'>完成</button>
</view>
</view>
================================================
FILE: client/pages/checkIn/checkIn.wxss
================================================
.page_check_hd {
padding: 20rpx;
}
.page_check_title{
font-size: 20px;
text-align: center;
height: 400;
}
.check_image_bd {
width: 100%;
align-content: center;
}
.check_image {
width: 600rpx;
height: 400rpx;
padding-left:75rpx;
}
.button-sp-area{
margin: 0 auto;
padding-top: 15px;
width: 60%;
}
.check_group{
margin: 0 auto;
padding-top: 30px;
width: 70%;
}
.mini-btn{
margin-right: 5px;
}
.text_item {
float: right;
display: block;
font-size: 15px;
margin-top: 2rpx;
}
.btn_footer {
margin-bottom: 50px;
}
.group_item {
margin-top: 20px;
}
================================================
FILE: client/pages/detail/detail.js
================================================
// pages/detail/detail.js
var config = require('../../config.js');
var app = getApp();
var haveApplyed = false;
var lat = null;
var lng = null;
var face = null;
var location = null;
var activity_id=null;
Page({
/**
* 页面的初始数据
*/
data: {
detail_info:{},
activity_info:{},
check_date_info:{},
detail_show:false,
show_date:true,
date_info_hidden:true,
apply_msg:"点击报名"
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var activityId = options.activity_id;
activity_id = activityId;
var that = this;
// console.log(activityId);
wx.request({
url: config.url +'/check/details',
data: {
'id':activityId
},
method:'POST',
success:function(res) {
console.log(res.data);
that.setData({
detail_info:res.data
});
}
});
wx.request({
url: config.url + '/activity/actInfo',
data:{
'id':activityId
},
method:'POST',
success: function(res) {
that.setData({
activity_info:res.data
})
console.log(res.data);
lng = res.data.infos[0].F_Lng;
lat = res.data.infos[0].F_Lat;
face = res.data.infos[0].F_IfFace;
location = res.data.infos[0].F_IfLocation;
}
})
//判断是否已经报过名
wx.request({
url: config.url + '/activity/haveApply',
data:{
'userId': app.globalData.user_id,
'activityId':activityId
},
method:'POST',
success: function(res){
console.log(res.data)
if(res.data.code){
haveApplyed = true;
that.setData({
apply_msg:'点击打卡'
})
}
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
getActivity_detail: function(){
console.log('detail clicked')
var that = this;
var temp = that.data.detail_show;
that.setData({
detail_show:!temp
})
},
getCheckDate: function(){
var that = this;
var temp = that.data.show_date;
that.setData({
show_date:!temp
})
},
/**
* 点击具体的时期时触发操作
* 2018-02-26
*/
getDetailedCheck:function(e){
var that = this;
var date = e.currentTarget.dataset.date;
// console.log(date);
var temp = that.data.date_info_hidden;
wx.request({
url: config.url + '/check/details/date',
method:'POST',
data:{
'activityId': activity_id,
'checkDate':date
},
success:function(res){
that.setData({
check_date_info:res.data.details,
date_info_hidden :!temp
})
console.log(!temp,res.data.details);
}
})
},
submitCheck:function(){
if(haveApplyed){
console.log(activity_id);
wx.redirectTo({
url: '../checkIn/checkIn?lat=' + lat + '&lng=' + lng +'&activityId=' + activity_id
+'&face='+ face +'&location='+location
})
}else{
wx.request({
url:config.url + '/activity/apply',
method:'POST',
data:{
'activityId':activity_id,
'userId':app.globalData.user_id
},
success: function(res){
wx.showToast({
title: '报名成功',
})
}
})
wx.switchTab({
url: '../manage/manage'
})
}
}
})
================================================
FILE: client/pages/detail/detail.json
================================================
{}
================================================
FILE: client/pages/detail/detail.wxml
================================================
<view class="page">
<view class="page_detail_hd">
<view class="page_detail_title">{{activity_info.infos[0].F_Caption}}</view>
</view>
<view class="weui-cell" bindtap='getActivity_detail'>
<view class="weui-cell__hd">
<image class='cell_image' src='../../image/right.png'></image>
<view class="weui-label label_head">活动详情</view>
</view>
</view>
<view class="weui-cell desc_content" hidden='{{!detail_show}}'>
<view class="weui-cell__bd">
<view>发起人: {{activity_info.infos[0].F_CreaterName}}</view>
<view>活动开始时间: {{activity_info.infos[0].F_StartDate}}</view>
<view>活动结束时间: {{activity_info.infos[0].F_EndDate}}</view>
<view>活动地点: {{activity_info.infos[0].F_Location}}</view>
<view>简介: {{activity_info.infos[0].F_Desc}}</view>
</view>
</view>
<view class="weui-cell">
<view class="weui-cell__hd">
<image class='cell_image' src='../../image/right.png'></image>
<view class="weui-label label_head">已有{{activity_info.nums}}人报名</view>
</view>
</view>
<view class="weui-cell" bindtap='getCheckDate'>
<view class="weui-cell__hd">
<image class='cell_image' src='../../image/right.png'></image>
<view class="weui-label label_head">打卡记录</view>
</view>
</view>
<block wx:for='{{detail_info.dates}}'>
<view class="weui-cell" hidden='{{show_date}}'>
<view class="weui-cell__hd" bindtap='getDetailedCheck' data-date='{{item.F_CheckDate}}'>
<image class='cell_image' src='../../image/right.png'></image>
<view class="weui-label label_head">{{item.F_CheckDate}}</view>
</view>
</view>
</block>
<view hidden='{{date_info_hidden}}'>
<block wx:for='{{check_date_info}}'>
<view class="weui-cell__bd">
<view class='label_name'>
{{item.F_UserName}}
</view>
<image class='check_image' src='{{item.F_CheckPhotoUrl}}'></image>
</view>
</block>
</view>
<view class="button-sp-area">
<button class="weui-btn" type="primary" bindtap='submitCheck'>{{apply_msg}}</button>
</view>
</view>
================================================
FILE: client/pages/detail/detail.wxss
================================================
.page_detail_hd {
padding: 20rpx;
}
.page_detail_title{
font-size: 20px;
text-align: center;
height: 400;
}
.cell_image {
width: 16px;
height: 16px;
}
.cell_image_sm{
width: 14px;
height: 14px;
}
.label_head {
display: inline
}
.label_name {
margin-left:50rpx;
}
.check_image{
padding-left:50rpx;
}
.desc_content {
width: 90%;
float: right;
}
.check_content_date {
width: 90%;
float: right;
}
.check_content_detail {
width: 80%;
float: right;
}
.check_image {
padding: 0;
margin: 0;
width: 240px;
height: 180px;
display: block
}
.button-sp-area{
margin: 0 auto;
padding-top: 15px;
width: 80%;
}
.check_item {
width: 100%;
margin: 0 auto;
display: block;
}
================================================
FILE: client/pages/logs/logs.js
================================================
//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))
})
})
}
})
================================================
FILE: client/pages/logs/logs.json
================================================
{
"navigationBarTitleText": "查看启动日志"
}
================================================
FILE: client/pages/logs/logs.wxml
================================================
<!--logs.wxml-->
<view class="container log-list">
<block wx:for="{{logs}}" wx:for-item="log">
<text class="log-item">{{index + 1}}. {{log}}</text>
</block>
</view>
================================================
FILE: client/pages/logs/logs.wxss
================================================
.log-list {
display: flex;
flex-direction: column;
padding: 40rpx;
}
.log-item {
margin: 10rpx;
}
================================================
FILE: client/pages/manage/manage.js
================================================
var sliderWidth = 96; // 需要设置slider的宽度,用于计算中间位置
var config = require('../../config.js');
var app = getApp();
Page({
data: {
tabs: ["进行中", "已结束"],
activeIndex: 1,
sliderOffset: 0,
sliderLeft: 0,
completed: [],
processing: []
},
onLoad: function () {
var that = this;
wx.getSystemInfo({
success: function (res) {
that.setData({
sliderLeft: (res.windowWidth / that.data.tabs.length - sliderWidth) / 2,
sliderOffset: res.windowWidth / that.data.tabs.length * that.data.activeIndex
});
}
});
},
onShow: function () {
var that = this;
wx.request({
url: config.url + '/activity/getall',
data:{
'userId':app.globalData.user_id
},
method: 'POST',
success: function (res) {
console.log(res.data);
that.setData({
completed: res.data.completed,
processing: res.data.processing
});
}
})
},
tabClick: function (e) {
this.setData({
sliderOffset: e.currentTarget.offsetLeft,
activeIndex: e.currentTarget.id
});
}
});
================================================
FILE: client/pages/manage/manage.json
================================================
{}
================================================
FILE: client/pages/manage/manage.wxml
================================================
<view class="page">
<view class="page__bd">
<view class="weui-tab">
<view class="weui-navbar">
<block wx:for="{{tabs}}" wx:key="*this">
<view id="{{index}}" class="weui-navbar__item {{activeIndex == index ? 'weui-bar__item_on' : ''}}" bindtap="tabClick">
<view class="weui-navbar__title">{{item}}</view>
</view>
</block>
<view class="weui-navbar__slider" style="left: {{sliderLeft}}px; transform: translateX({{sliderOffset}}px); -webkit-transform: translateX({{sliderOffset}}px);"></view>
</view>
<view class="weui-tab__panel">
<view class="weui-tab__content" hidden="{{activeIndex != 0}}">
<view class="weui-panel weui-panel_access">
<view class="weui-panel__bd">
<block wx:for="{{processing}}">
<navigator url='../detail/detail?activity_id={{item.F_ID}}' open-type='navigate'>
<view class="weui-media-box weui-media-box_text">
<view class="weui-media-box__title weui-media-box__title_in-text">{{item.F_Caption}}</view>
<view class="weui-media-box__desc">{{item.F_StartDate}}——{{item.F_EndDate}}</view>
<view class="weui-media-box__desc">{{item.F_Location}}</view>
<view class="weui-media-box__desc">今日已打卡</view>
</view>
</navigator>
</block>
</view>
</view>
</view>
<view class="weui-tab__content" hidden="{{activeIndex != 1}}">
<view class="weui-panel weui-panel_access">
<view class="weui-panel__bd">
<block wx:for="{{completed}}">
<view class="weui-media-box weui-media-box_text">
<view class="weui-media-box__title weui-media-box__title_in-text">{{item.F_Caption}}</view>
<view class="weui-media-box__desc">{{item.F_StartDate}}——{{item.F_EndDate}}</view>
<view class="weui-media-box__desc">{{item.F_Location}}</view>
<view class="weui-media-box__desc">打卡1次</view>
</view>
</block>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
================================================
FILE: client/pages/manage/manage.wxss
================================================
page,
.page,
.page__bd{
height: 100%;
}
.page__bd{
padding-bottom: 0;
}
.weui-media-box__desc {
padding-bottom: 8rpx;
}
================================================
FILE: client/pages/new/new.js
================================================
// pages/new/new.js
var location = "";
var config = require('../../config.js');
var app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
start_date: "2018-01-01",
end_date: "2018-01-02",
checkboxItems: [
{ name: '拍照打卡', value: '1', checked: true },
{ name: '地点打卡', value: '2' },
{ name: '人脸打卡', value: '3' }
],
activity_location: ""
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
var that = this;
console.log(getApp().data.activity_location);
location = getApp().data.activity_location;
if (location != "") {
that.setData({
activity_location: location
});
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
/**
* 选择日期并获取日期
*/
bindStartDateChange: function (e) {
this.setData({
start_date: e.detail.value
});
console.log()
},
bindEndDateChange: function (e) {
this.setData({
end_date: e.detail.value
})
},
checkboxChange: function (e) {
console.log('checkbox发生change事件,携带value值为:', e.detail.value);
var checkboxItems = this.data.checkboxItems, values = e.detail.value;
for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
checkboxItems[i].checked = false;
for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems[i].value == values[j]) {
checkboxItems[i].checked = true;
break;
}
}
}
this.setData({
checkboxItems: checkboxItems
});
},
getLocation: function () {
wx.navigateTo({
url: '../addLocation/addLocation',
});
},
formSubmit: function (e) {
var ifPhoto = 0;
var ifLocation = 0;
var ifFace = 0;
var value = e.detail.value
var types = value.checkin_types;
// console.log(types.l);
for (var i = 0; i < types.length; i++) {
if (types[i] == 1) {
ifPhoto = 1;
}
if (types[i] == 2) {
ifLocation = 1;
}
if (types[i] == 3) {
ifFace = 1;
}
}
wx.request({
url: config.url+'/activity/create',
data: {
'createrId': app.globalData.user_id,
'activity_name': value.activity_name,
'activity_desc': value.activity_desc,
'location': value.activity_location,
'lat': app.data.activity_lat,
'lng': app.data.activity_lng,
'startDate':value.start_date,
'endDate':value.end_date,
'ifFace':ifFace,
'ifPhoto':ifPhoto,
'ifLocation':ifLocation
},
method:'POST',
success:function(res) {
// console.log(res.data);
wx.switchTab({
url: '/pages/manage/manage'
})
}
})
}
})
================================================
FILE: client/pages/new/new.json
================================================
{}
================================================
FILE: client/pages/new/new.wxml
================================================
<form bindsubmit='formSubmit'>
<view class="weui-cell weui-cell_input">
<view class="weui-cell__hd">
<view class="weui-label">活动名称</view>
</view>
<view class="weui-cell__bd">
<input name="activity_name" class="weui-input" placeholder="请输入活动名称" />
</view>
</view>
<view class="weui-cell">
<view class="weui-cell__bd">
<textarea name = "activity_desc" class="weui-textarea" placeholder="请输入活动简介" style="height: 3.3em" />
<view class="weui-textarea-counter">0/200</view>
</view>
</view>
<view class="weui-cell weui-cell_input">
<view class="weui-cell__hd">
<view class="weui-label">起止日期</view>
</view>
<view class="weui-cell__bd">
<picker name="start_date" mode="date" value="{{start_date}}" start="2018-01-01" end="2019-09-01" bindchange="bindStartDateChange">
<view class="weui-input">{{start_date}}</view>
</picker>
</view>
<view class="weui-cell__bd">
<picker name='end_date' mode="date" value="{{end_date}}" start="2018-01-02" end="2019-09-02" bindchange="bindEndDateChange">
<view class="weui-input">{{end_date}}</view>
</picker>
</view>
</view>
<view class="weui-cell weui-cell_input weui-cell_vcode">
<view class="weui-cell__hd">
<view class="weui-label">活动地点</view>
</view>
<view class="weui-cell__bd">
<input name='activity_location' class="weui-input" placeholder="点击获取地点" value='{{activity_location}}' disabled='true' />
</view>
<view class="weui-cell__ft">
<view class="weui-vcode-btn" bindtap="getLocation">获取地点</view>
</view>
</view>
<view class="weui-cells weui-cells_after-title">
<checkbox-group name= 'checkin_types' bindchange="checkboxChange">
<label class="weui-cell weui-check__label" wx:for="{{checkboxItems}}" wx:key="value">
<checkbox class="weui-check" value="{{item.value}}" checked="{{item.checked}}" />
<view class="weui-cell__hd weui-check__hd_in-checkbox">
<icon class="weui-icon-checkbox_circle" type="circle" size="23" wx:if="{{!item.checked}}"></icon>
<icon class="weui-icon-checkbox_success" type="success" size="23" wx:if="{{item.checked}}"></icon>
</view>
<view class="weui-cell__bd">{{item.name}}</view>
</label>
</checkbox-group>
</view>
<view class="weui-btn-area">
<button class="weui-btn btn-green" form-type='submit'>确定</button>
</view>
</form>
================================================
FILE: client/pages/new/new.wxss
================================================
.weui-btn.btn-green {
background-color: "#2ba245";
}
================================================
FILE: client/pages/search/search.js
================================================
/**
* TODO:onload中加载所有正在进行的活动,在Typing中进行过滤,不用一遍一遍查询服务器
*/
var config = require('../../config.js');
Page({
data: {
inputShowed: false,
inputVal: "",
processing:[]
},
showInput: function () {
this.setData({
inputShowed: true
});
},
hideInput: function () {
this.setData({
inputVal: "",
inputShowed: false
});
},
clearInput: function () {
this.setData({
inputVal: ""
});
},
inputTyping: functio
gitextract_uivxnbgl/
├── LICENSE
├── README.md
├── checkin.sql
├── client/
│ ├── README.md
│ ├── app.js
│ ├── app.json
│ ├── app.wxss
│ ├── config.js
│ ├── dist/
│ │ ├── app.js
│ │ ├── app.json
│ │ ├── app.wxss
│ │ ├── example/
│ │ │ ├── actionsheet/
│ │ │ │ ├── actionsheet.js
│ │ │ │ ├── actionsheet.wxml
│ │ │ │ └── actionsheet.wxss
│ │ │ ├── article/
│ │ │ │ ├── article.js
│ │ │ │ ├── article.wxml
│ │ │ │ └── article.wxss
│ │ │ ├── badge/
│ │ │ │ ├── badge.js
│ │ │ │ └── badge.wxml
│ │ │ ├── button/
│ │ │ │ ├── button.js
│ │ │ │ ├── button.wxml
│ │ │ │ └── button.wxss
│ │ │ ├── dialog/
│ │ │ │ ├── dialog.js
│ │ │ │ ├── dialog.wxml
│ │ │ │ └── dialog.wxss
│ │ │ ├── flex/
│ │ │ │ ├── flex.js
│ │ │ │ ├── flex.wxml
│ │ │ │ └── flex.wxss
│ │ │ ├── footer/
│ │ │ │ ├── footer.js
│ │ │ │ ├── footer.wxml
│ │ │ │ └── footer.wxss
│ │ │ ├── gallery/
│ │ │ │ ├── gallery.js
│ │ │ │ └── gallery.wxml
│ │ │ ├── grid/
│ │ │ │ ├── grid.js
│ │ │ │ └── grid.wxml
│ │ │ ├── icons/
│ │ │ │ ├── icons.js
│ │ │ │ ├── icons.wxml
│ │ │ │ └── icons.wxss
│ │ │ ├── images/
│ │ │ │ └── base64.js
│ │ │ ├── index.js
│ │ │ ├── index.wxml
│ │ │ ├── index.wxss
│ │ │ ├── input/
│ │ │ │ ├── input.js
│ │ │ │ └── input.wxml
│ │ │ ├── list/
│ │ │ │ ├── list.js
│ │ │ │ └── list.wxml
│ │ │ ├── loadmore/
│ │ │ │ ├── loadmore.js
│ │ │ │ ├── loadmore.wxml
│ │ │ │ └── loadmore.wxss
│ │ │ ├── msg/
│ │ │ │ ├── msg.js
│ │ │ │ ├── msg.wxml
│ │ │ │ ├── msg.wxss
│ │ │ │ ├── msg_fail.js
│ │ │ │ ├── msg_fail.wxml
│ │ │ │ ├── msg_fail.wxss
│ │ │ │ ├── msg_success.js
│ │ │ │ ├── msg_success.wxml
│ │ │ │ └── msg_success.wxss
│ │ │ ├── navbar/
│ │ │ │ ├── navbar.js
│ │ │ │ ├── navbar.wxml
│ │ │ │ └── navbar.wxss
│ │ │ ├── panel/
│ │ │ │ ├── panel.js
│ │ │ │ └── panel.wxml
│ │ │ ├── picker/
│ │ │ │ ├── picker.js
│ │ │ │ ├── picker.wxml
│ │ │ │ └── picker.wxss
│ │ │ ├── preview/
│ │ │ │ ├── preview.js
│ │ │ │ ├── preview.wxml
│ │ │ │ └── preview.wxss
│ │ │ ├── progress/
│ │ │ │ ├── progress.js
│ │ │ │ ├── progress.wxml
│ │ │ │ └── progress.wxss
│ │ │ ├── searchbar/
│ │ │ │ ├── searchbar.js
│ │ │ │ ├── searchbar.wxml
│ │ │ │ └── searchbar.wxss
│ │ │ ├── slider/
│ │ │ │ ├── slider.js
│ │ │ │ ├── slider.wxml
│ │ │ │ └── slider.wxss
│ │ │ ├── tabbar/
│ │ │ │ ├── tabbar.js
│ │ │ │ └── tabbar.wxml
│ │ │ ├── toast/
│ │ │ │ ├── toast.js
│ │ │ │ ├── toast.wxml
│ │ │ │ └── toast.wxss
│ │ │ └── uploader/
│ │ │ ├── uploader.js
│ │ │ └── uploader.wxml
│ │ └── style/
│ │ ├── base/
│ │ │ ├── fn.wxss
│ │ │ ├── mixin/
│ │ │ │ ├── setArrow.wxss
│ │ │ │ ├── setOnepx.wxss
│ │ │ │ └── text.wxss
│ │ │ ├── reset.wxss
│ │ │ └── variable/
│ │ │ ├── color.wxss
│ │ │ ├── global.wxss
│ │ │ ├── weui-button.wxss
│ │ │ ├── weui-cell.wxss
│ │ │ ├── weui-dialog.wxss
│ │ │ ├── weui-grid.wxss
│ │ │ ├── weui-msg.wxss
│ │ │ └── weui-progress.wxss
│ │ ├── weui.wxss
│ │ └── widget/
│ │ ├── weui-agree/
│ │ │ └── weui-agree.wxss
│ │ ├── weui-animate/
│ │ │ └── weui-animate.wxss
│ │ ├── weui-button/
│ │ │ └── weui-button.wxss
│ │ ├── weui-cell/
│ │ │ ├── weui-access.wxss
│ │ │ ├── weui-cell.wxss
│ │ │ ├── weui-check.wxss
│ │ │ ├── weui-form/
│ │ │ │ ├── weui-form-preview.wxss
│ │ │ │ ├── weui-form_common.wxss
│ │ │ │ ├── weui-select.wxss
│ │ │ │ └── weui-vcode.wxss
│ │ │ ├── weui-form.wxss
│ │ │ ├── weui-switch.wxss
│ │ │ └── weui-uploader.wxss
│ │ ├── weui-flex/
│ │ │ └── weui-flex.wxss
│ │ ├── weui-footer/
│ │ │ └── weui-footer.wxss
│ │ ├── weui-grid/
│ │ │ └── weui-grid.wxss
│ │ ├── weui-loading/
│ │ │ └── weui-loading.wxss
│ │ ├── weui-media-box/
│ │ │ └── weui-media-box.wxss
│ │ ├── weui-page/
│ │ │ ├── weui-article.wxss
│ │ │ └── weui-msg.wxss
│ │ ├── weui-panel/
│ │ │ └── weui-panel.wxss
│ │ ├── weui-progress/
│ │ │ └── weui-progress.wxss
│ │ ├── weui-searchbar/
│ │ │ └── weui-searchbar.wxss
│ │ ├── weui-tab/
│ │ │ ├── weui-navbar.wxss
│ │ │ └── weui-tab.wxss
│ │ └── weui-tips/
│ │ ├── weui-badge.wxss
│ │ └── weui-loadmore.wxss
│ ├── libs/
│ │ ├── amap-wx.js
│ │ └── qqmap-wx-jssdk.js
│ ├── pages/
│ │ ├── addLocation/
│ │ │ ├── addLocation.js
│ │ │ ├── addLocation.json
│ │ │ ├── addLocation.wxml
│ │ │ └── addLocation.wxss
│ │ ├── checkIn/
│ │ │ ├── checkIn.js
│ │ │ ├── checkIn.json
│ │ │ ├── checkIn.wxml
│ │ │ └── checkIn.wxss
│ │ ├── detail/
│ │ │ ├── detail.js
│ │ │ ├── detail.json
│ │ │ ├── detail.wxml
│ │ │ └── detail.wxss
│ │ ├── logs/
│ │ │ ├── logs.js
│ │ │ ├── logs.json
│ │ │ ├── logs.wxml
│ │ │ └── logs.wxss
│ │ ├── manage/
│ │ │ ├── manage.js
│ │ │ ├── manage.json
│ │ │ ├── manage.wxml
│ │ │ └── manage.wxss
│ │ ├── new/
│ │ │ ├── new.js
│ │ │ ├── new.json
│ │ │ ├── new.wxml
│ │ │ └── new.wxss
│ │ ├── search/
│ │ │ ├── search.js
│ │ │ ├── search.json
│ │ │ ├── search.wxml
│ │ │ └── search.wxss
│ │ ├── searchDetail/
│ │ │ ├── searchDetail.js
│ │ │ ├── searchDetail.json
│ │ │ ├── searchDetail.wxml
│ │ │ └── searchDetail.wxss
│ │ └── user/
│ │ ├── user.js
│ │ ├── user.json
│ │ ├── user.wxml
│ │ └── user.wxss
│ ├── project.config.json
│ └── utils/
│ ├── getdistance.js
│ ├── upload.js
│ └── util.js
└── server/
└── checkin/
├── .idea/
│ ├── checkin.iml
│ ├── jsLibraryMappings.xml
│ ├── modules.xml
│ ├── runConfigurations/
│ │ └── bin_www.xml
│ └── workspace.xml
├── app.js
├── bin/
│ └── www
├── configs/
│ └── config.js
├── models/
│ ├── activity.js
│ ├── apply.js
│ ├── check.js
│ └── person.js
├── package.json
├── public/
│ └── stylesheets/
│ └── style.css
├── routes/
│ ├── activity.js
│ ├── check.js
│ ├── index.js
│ └── person.js
├── utils/
│ └── dbConnection.js
└── views/
├── error.ejs
└── index.ejs
SYMBOL INDEX (36 symbols across 7 files)
FILE: checkin.sql
type `t_activity` (line 24) | CREATE TABLE `t_activity` (
type `t_apply` (line 46) | CREATE TABLE `t_apply` (
type `t_check` (line 62) | CREATE TABLE `t_check` (
type `t_user` (line 79) | CREATE TABLE `t_user` (
FILE: client/dist/example/progress/progress.js
function _next (line 1) | function _next(){
FILE: client/libs/amap-wx.js
function AMapWX (line 1) | function AMapWX(a){this.key=a.key,this.requestConfig={key:a.key,s:"rsx",...
function c (line 1) | function c(c){var d=b.requestConfig;wx.request({url:"https://restapi.ama...
function d (line 1) | function d(d){var e="base";a.type&&"forecast"==a.type&&(e="all"),wx.requ...
function e (line 1) | function e(e){wx.request({url:"https://restapi.amap.com/v3/geocode/regeo...
function d (line 1) | function d(d){var e={key:b.key,location:d,s:c.s,platform:c.platform,appn...
function f (line 1) | function f(b){c.push("location="+b),a.zoom&&c.push("zoom="+a.zoom),a.siz...
FILE: client/libs/qqmap-wx-jssdk.js
method location2query (line 31) | location2query(data) {
method getWXLocation (line 54) | getWXLocation(success, fail, complete) {
method getLocationParam (line 66) | getLocationParam(location) {
method polyfillParam (line 84) | polyfillParam(param) {
method checkParamKeyEmpty (line 96) | checkParamKeyEmpty(param, key) {
method checkKeyword (line 111) | checkKeyword(param){
method checkLocation (line 120) | checkLocation(param) {
method buildErrorConfig (line 136) | buildErrorConfig(errCode, errMsg) {
method buildWxRequestConfig (line 149) | buildWxRequestConfig(param, options) {
method locationProcess (line 193) | locationProcess(param, locationsuccess, locationfail, locationcomplete) {
class QQMapWX (line 214) | class QQMapWX {
method constructor (line 221) | constructor(options) {
method search (line 236) | search(options) {
method getSuggestion (line 284) | getSuggestion(options) {
method reverseGeocoder (line 315) | reverseGeocoder(options) {
method geocoder (line 347) | geocoder(options) {
method getCityList (line 377) | getCityList(options) {
method getDistrictByCityId (line 400) | getDistrictByCityId(options) {
method calculateDistance (line 431) | calculateDistance(options) {
FILE: client/pages/addLocation/addLocation.js
method regionchange (line 30) | regionchange(e) {
method markertap (line 36) | markertap(e) {
method controltap (line 58) | controltap(e) {
FILE: client/utils/getdistance.js
function getRad (line 4) | function getRad(d) {
function distance (line 10) | function distance(p1,p2,callback) {
FILE: client/utils/upload.js
function upload (line 21) | function upload(filePath, fileName, me,callback) {
Condensed preview — 189 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (281K chars).
[
{
"path": "LICENSE",
"chars": 1067,
"preview": "MIT License\n\nCopyright (c) 2019 zeng xiang\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "README.md",
"chars": 921,
"preview": "# 活动考勤签到小程序\n## 效果图\n\n## 功能\n#### 创建活动\n1. 可以添加活动名称、简介等信息\n2. 地点选择时有搜索建议并能够在地图上标注\n3. 签到方式选择包括:照片(上传活动照片)、地点("
},
{
"path": "checkin.sql",
"chars": 6446,
"preview": "/*\n Navicat Premium Data Transfer\n\n Source Server : localhost_3306\n Source Server Type : MySQL\n Source Server"
},
{
"path": "client/README.md",
"chars": 10,
"preview": "# checkin\n"
},
{
"path": "client/app.js",
"chars": 2346,
"preview": "//app.js\nvar config = require('./config.js');\nApp({\n onLaunch: function () {\n // 展示本地存储能力\n var logs = w"
},
{
"path": "client/app.json",
"chars": 1586,
"preview": "{\n \"pages\": [\n \"pages/search/search\",\n \"pages/detail/detail\",\n \"pages/manage/manage\",\n \"p"
},
{
"path": "client/app.wxss",
"chars": 670,
"preview": "/**app.wxss**/\n@import \"dist/style/weui.wxss\";\n\n.container {\n height: 100%;\n display: flex;\n flex-direction: column;\n"
},
{
"path": "client/config.js",
"chars": 477,
"preview": "//服务器地址\nvar url = '' \n//腾讯云对象存储鉴权地址\nvar cosSignatureUrl = '';\n//腾讯云对象存储的区域:华东地区为sh\nvar cosRegion = '';\n//腾讯云对象存储cos的APPI"
},
{
"path": "client/dist/app.js",
"chars": 256,
"preview": "App({\n onLaunch: function () {\n console.log('App Launch')\n },\n onShow: function () {\n console.log"
},
{
"path": "client/dist/app.json",
"chars": 1135,
"preview": "{\n \"pages\": [\n \"example/index\",\n\n \"example/button/button\",\n \"example/list/list\",\n \"example/input/input\",\n "
},
{
"path": "client/dist/app.wxss",
"chars": 552,
"preview": "@import 'style/weui.wxss';\n\npage{\n background-color: #F8F8F8;\n font-size: 16px;\n font-family: -apple-system-fon"
},
{
"path": "client/dist/example/actionsheet/actionsheet.js",
"chars": 268,
"preview": "Page({\n open: function(){\n wx.showActionSheet({\n itemList: ['A', 'B', 'C'],\n success: fu"
},
{
"path": "client/dist/example/actionsheet/actionsheet.wxml",
"chars": 350,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">ActionSheet</view>\n <view class"
},
{
"path": "client/dist/example/actionsheet/actionsheet.wxss",
"chars": 38,
"preview": "page{\n background-color: #FFFFFF;\n}"
},
{
"path": "client/dist/example/article/article.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/article/article.wxml",
"chars": 1946,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Article</view>\n <view class=\"pa"
},
{
"path": "client/dist/example/article/article.wxss",
"chars": 66,
"preview": "page{\n background-color: #FFFFFF;\n}\nimage{\n margin: 4px 0;\n}"
},
{
"path": "client/dist/example/badge/badge.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/badge/badge.wxml",
"chars": 2695,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Badge</view>\n <view class=\"page"
},
{
"path": "client/dist/example/button/button.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/button/button.wxml",
"chars": 1365,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Button</view>\n <view class=\"pag"
},
{
"path": "client/dist/example/button/button.wxss",
"chars": 113,
"preview": ".button-sp-area{\n margin: 0 auto;\n padding-top: 15px;\n width: 60%;\n}\n.mini-btn{\n margin-right: 5px;\n}"
},
{
"path": "client/dist/example/dialog/dialog.js",
"chars": 785,
"preview": "Page({\n openConfirm: function () {\n wx.showModal({\n title: '弹窗标题',\n content: '弹窗内容,告知当前状"
},
{
"path": "client/dist/example/dialog/dialog.wxml",
"chars": 458,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Dialog</view>\n <view class=\"pag"
},
{
"path": "client/dist/example/dialog/dialog.wxss",
"chars": 38,
"preview": "page{\n background-color: #FFFFFF;\n}"
},
{
"path": "client/dist/example/flex/flex.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/flex/flex.wxml",
"chars": 1545,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Flex</view>\n <view class=\"page_"
},
{
"path": "client/dist/example/flex/flex.wxss",
"chars": 171,
"preview": ".placeholder{\n margin: 5px;\n padding: 0 10px;\n text-align: center;\n background-color: #EBEBEB;\n height: 2"
},
{
"path": "client/dist/example/footer/footer.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/footer/footer.wxml",
"chars": 1282,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Footer</view>\n <view class=\"pag"
},
{
"path": "client/dist/example/footer/footer.wxss",
"chars": 107,
"preview": "/* 作为展示用的样式 */\n\n.weui-footer{\n margin-bottom: 50px;\n}\n.weui-footer_fixed-bottom{\n margin-bottom: 0;\n}"
},
{
"path": "client/dist/example/gallery/gallery.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/gallery/gallery.wxml",
"chars": 199,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Gallery</view>\n <view class=\"pa"
},
{
"path": "client/dist/example/grid/grid.js",
"chars": 71,
"preview": "Page({\n data: {\n grids: [0, 1, 2, 3, 4, 5, 6, 7, 8]\n }\n});"
},
{
"path": "client/dist/example/grid/grid.wxml",
"chars": 584,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Grid</view>\n <view class=\"page_"
},
{
"path": "client/dist/example/icons/icons.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/icons/icons.wxml",
"chars": 2125,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Icons</view>\n <view class=\"page"
},
{
"path": "client/dist/example/icons/icons.wxss",
"chars": 422,
"preview": "icon{\n margin-right: 13px;\n}\n.page__bd {\n padding-left: 40px;\n padding-right: 40px;\n text-align: left;\n}\n.ic"
},
{
"path": "client/dist/example/images/base64.js",
"chars": 1788,
"preview": "module.exports = {\n icon20: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAMAAABgZ9sFAAAAVFBMVEXx8fHMzMzr6+"
},
{
"path": "client/dist/example/index.js",
"chars": 1380,
"preview": "Page({\n data: {\n list: [\n {\n id: 'form',\n name: '表单',\n "
},
{
"path": "client/dist/example/index.wxml",
"chars": 1653,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">WeUI</view>\n <view class=\"page_"
},
{
"path": "client/dist/example/index.wxss",
"chars": 877,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/example/input/input.js",
"chars": 2841,
"preview": "Page({\n data: {\n showTopTips: false,\n\n radioItems: [\n {name: 'cell standard', value: '0'},\n "
},
{
"path": "client/dist/example/input/input.wxml",
"chars": 8904,
"preview": "<view class=\"page\" xmlns:wx=\"http://www.w3.org/1999/xhtml\">\n <view class=\"page__hd\">\n <view class=\"page__title"
},
{
"path": "client/dist/example/list/list.js",
"chars": 149,
"preview": "var base64 = require(\"../images/base64\");\nPage({\n onLoad: function(){\n this.setData({\n icon: base64"
},
{
"path": "client/dist/example/list/list.wxml",
"chars": 3733,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">List</view>\n <view class=\"page_"
},
{
"path": "client/dist/example/loadmore/loadmore.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/loadmore/loadmore.wxml",
"chars": 717,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Loadmore</view>\n <view class=\"p"
},
{
"path": "client/dist/example/loadmore/loadmore.wxss",
"chars": 38,
"preview": "page{\n background-color: #FFFFFF;\n}"
},
{
"path": "client/dist/example/msg/msg.js",
"chars": 211,
"preview": "Page({\n openSuccess: function () {\n wx.navigateTo({\n url: 'msg_success'\n })\n },\n openF"
},
{
"path": "client/dist/example/msg/msg.wxml",
"chars": 424,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Msg</view>\n <view class=\"page__"
},
{
"path": "client/dist/example/msg/msg.wxss",
"chars": 38,
"preview": "page{\n background-color: #FFFFFF;\n}"
},
{
"path": "client/dist/example/msg/msg_fail.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/msg/msg_fail.wxml",
"chars": 1045,
"preview": "<view class=\"page\">\n <view class=\"weui-msg\">\n <view class=\"weui-msg__icon-area\">\n <icon type=\"warn\""
},
{
"path": "client/dist/example/msg/msg_fail.wxss",
"chars": 38,
"preview": "page{\n background-color: #FFFFFF;\n}"
},
{
"path": "client/dist/example/msg/msg_success.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/msg/msg_success.wxml",
"chars": 1048,
"preview": "<view class=\"page\">\n <view class=\"weui-msg\">\n <view class=\"weui-msg__icon-area\">\n <icon type=\"succe"
},
{
"path": "client/dist/example/msg/msg_success.wxss",
"chars": 38,
"preview": "page{\n background-color: #FFFFFF;\n}"
},
{
"path": "client/dist/example/navbar/navbar.js",
"chars": 744,
"preview": "var sliderWidth = 96; // 需要设置slider的宽度,用于计算中间位置\n\nPage({\n data: {\n tabs: [\"选项一\", \"选项二\", \"选项三\"],\n activeI"
},
{
"path": "client/dist/example/navbar/navbar.wxml",
"chars": 1019,
"preview": "<view class=\"page\">\n <view class=\"page__bd\">\n <view class=\"weui-tab\">\n <view class=\"weui-navbar\">\n "
},
{
"path": "client/dist/example/navbar/navbar.wxss",
"chars": 148,
"preview": "page,\n.page,\n.page__bd{\n height: 100%;\n}\n.page__bd{\n padding-bottom: 0;\n}\n.weui-tab__content{\n padding-top: 60p"
},
{
"path": "client/dist/example/panel/panel.js",
"chars": 187,
"preview": "var base64 = require(\"../images/base64\");\n\nPage({\n onLoad: function(){\n this.setData({\n icon20: bas"
},
{
"path": "client/dist/example/panel/panel.wxml",
"chars": 4492,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Panel</view>\n <view class=\"page__desc\">面板"
},
{
"path": "client/dist/example/picker/picker.js",
"chars": 521,
"preview": "Page({\n data: {\n array: ['美国', '中国', '巴西', '日本'],\n index: 0,\n date: '2016-09-01',\n time: "
},
{
"path": "client/dist/example/picker/picker.wxml",
"chars": 837,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Picker</view>\n <view class=\"pag"
},
{
"path": "client/dist/example/picker/picker.wxss",
"chars": 38,
"preview": "page{\n background-color: #FFFFFF;\n}"
},
{
"path": "client/dist/example/preview/preview.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/preview/preview.wxml",
"chars": 2947,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Preview</view>\n <view class=\"pa"
},
{
"path": "client/dist/example/preview/preview.wxss",
"chars": 46,
"preview": ".weui-form-preview{\n margin-bottom: 25px;\n}"
},
{
"path": "client/dist/example/progress/progress.js",
"chars": 555,
"preview": "function _next(){\n var that = this;\n if(this.data.progress >= 100){\n this.setData({\n disabled: f"
},
{
"path": "client/dist/example/progress/progress.wxml",
"chars": 1579,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Progress</view>\n <view class=\"p"
},
{
"path": "client/dist/example/progress/progress.wxss",
"chars": 42,
"preview": ".weui-progress{\n margin-bottom: 24px;\n}"
},
{
"path": "client/dist/example/searchbar/searchbar.js",
"chars": 514,
"preview": "Page({\n data: {\n inputShowed: false,\n inputVal: \"\"\n },\n showInput: function () {\n this.set"
},
{
"path": "client/dist/example/searchbar/searchbar.wxml",
"chars": 2183,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">SearchBar</view>\n <view class=\""
},
{
"path": "client/dist/example/searchbar/searchbar.wxss",
"chars": 155,
"preview": ".searchbar-result{\n margin-top: 0;\n font-size: 14px;\n}\n.searchbar-result:before{\n display: none;\n}\n.weui-cell{\n"
},
{
"path": "client/dist/example/slider/slider.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/slider/slider.wxml",
"chars": 292,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Slider</view>\n <view class=\"pag"
},
{
"path": "client/dist/example/slider/slider.wxss",
"chars": 34,
"preview": "slider{\n margin-bottom: 30px;\n}"
},
{
"path": "client/dist/example/tabbar/tabbar.js",
"chars": 9,
"preview": "Page({});"
},
{
"path": "client/dist/example/tabbar/tabbar.wxml",
"chars": 204,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Tabbar</view>\n <view class=\"pag"
},
{
"path": "client/dist/example/toast/toast.js",
"chars": 319,
"preview": "Page({\n openToast: function () {\n wx.showToast({\n title: '已完成',\n icon: 'success',\n "
},
{
"path": "client/dist/example/toast/toast.wxml",
"chars": 442,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Toast</view>\n <view class=\"page"
},
{
"path": "client/dist/example/toast/toast.wxss",
"chars": 38,
"preview": "page{\n background-color: #FFFFFF;\n}"
},
{
"path": "client/dist/example/uploader/uploader.js",
"chars": 713,
"preview": "Page({\n data: {\n files: []\n },\n chooseImage: function (e) {\n var that = this;\n wx.chooseIm"
},
{
"path": "client/dist/example/uploader/uploader.wxml",
"chars": 2981,
"preview": "<view class=\"page\">\n <view class=\"page__hd\">\n <view class=\"page__title\">Uploader</view>\n <view class=\"p"
},
{
"path": "client/dist/style/base/fn.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/mixin/setArrow.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/mixin/setOnepx.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/mixin/text.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/reset.wxss",
"chars": 230,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/variable/color.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/variable/global.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/variable/weui-button.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/variable/weui-cell.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/variable/weui-dialog.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/variable/weui-grid.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/variable/weui-msg.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/base/variable/weui-progress.wxss",
"chars": 125,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/weui.wxss",
"chars": 18872,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-agree/weui-agree.wxss",
"chars": 543,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-animate/weui-animate.wxss",
"chars": 1274,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-button/weui-button.wxss",
"chars": 231,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-access.wxss",
"chars": 676,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-cell.wxss",
"chars": 1301,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-check.wxss",
"chars": 456,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-form/weui-form-preview.wxss",
"chars": 1833,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-form/weui-form_common.wxss",
"chars": 733,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-form/weui-select.wxss",
"chars": 752,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-form/weui-vcode.wxss",
"chars": 447,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-form.wxss",
"chars": 3390,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-switch.wxss",
"chars": 178,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-cell/weui-uploader.wxss",
"chars": 1607,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-flex/weui-flex.wxss",
"chars": 248,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-footer/weui-footer.wxss",
"chars": 673,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-grid/weui-grid.wxss",
"chars": 638,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-loading/weui-loading.wxss",
"chars": 4280,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-media-box/weui-media-box.wxss",
"chars": 1564,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-page/weui-article.wxss",
"chars": 454,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-page/weui-msg.wxss",
"chars": 644,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-panel/weui-panel.wxss",
"chars": 695,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-progress/weui-progress.wxss",
"chars": 375,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-searchbar/weui-searchbar.wxss",
"chars": 1210,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-tab/weui-navbar.wxss",
"chars": 872,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-tab/weui-tab.wxss",
"chars": 1027,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-tips/weui-badge.wxss",
"chars": 358,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/dist/style/widget/weui-tips/weui-loadmore.wxss",
"chars": 719,
"preview": "/*!\n * WeUI v1.1.1 (https://github.com/weui/weui-wxss)\n * Copyright 2017 Tencent, Inc.\n * Licensed under the MIT license"
},
{
"path": "client/libs/amap-wx.js",
"chars": 8190,
"preview": "function AMapWX(a){this.key=a.key,this.requestConfig={key:a.key,s:\"rsx\",platform:\"WXJS\",appname:a.key,sdkversion:\"1.2.0\""
},
{
"path": "client/libs/qqmap-wx-jssdk.js",
"chars": 12248,
"preview": "/**\n * 微信小程序JavaScriptSDK\n * \n * @version 1.0\n * @date 2017-01-10\n * @author jaysonzhou@tencent.com\n */\n\nvar ERROR_CONF "
},
{
"path": "client/pages/addLocation/addLocation.js",
"chars": 2949,
"preview": "var des_lat = -1;\nvar des_lng = -1;\nvar des_title = \"\";\nvar callout_obj={};\nPage({\n data: {\n markers: [{\n "
},
{
"path": "client/pages/addLocation/addLocation.json",
"chars": 2,
"preview": "{}"
},
{
"path": "client/pages/addLocation/addLocation.wxml",
"chars": 967,
"preview": "<view class=\"page\">\n <view class=\"page__bd\">\n <view class=\"weui-search-bar\">\n <view class=\"weui-sea"
},
{
"path": "client/pages/addLocation/addLocation.wxss",
"chars": 194,
"preview": ".searchbar-result{\n margin-top: 0;\n font-size: 14px;\n}\n.searchbar-result:before{\n display: none;\n}\n.weui-cell{\n"
},
{
"path": "client/pages/checkIn/checkIn.js",
"chars": 8396,
"preview": "// pages/checkIn/checkIn.js\nvar uploadFn = require('../../utils/upload.js');\nvar config = require('../../config.js');\nva"
},
{
"path": "client/pages/checkIn/checkIn.json",
"chars": 2,
"preview": "{}"
},
{
"path": "client/pages/checkIn/checkIn.wxml",
"chars": 1111,
"preview": "<view class=\"page\">\n <view class=\"page_check_hd\">\n <view class=\"page_check_title\">{{activity_title}}</view>\n "
},
{
"path": "client/pages/checkIn/checkIn.wxss",
"chars": 631,
"preview": ".page_check_hd {\n padding: 20rpx;\n}\n.page_check_title{\n font-size: 20px;\n text-align: center;\n height: 400;\n"
},
{
"path": "client/pages/detail/detail.js",
"chars": 4276,
"preview": "// pages/detail/detail.js\nvar config = require('../../config.js');\nvar app = getApp();\nvar haveApplyed = false;\nvar lat "
},
{
"path": "client/pages/detail/detail.json",
"chars": 2,
"preview": "{}"
},
{
"path": "client/pages/detail/detail.wxml",
"chars": 2314,
"preview": "<view class=\"page\">\n <view class=\"page_detail_hd\">\n <view class=\"page_detail_title\">{{activity_info.infos[0].F"
},
{
"path": "client/pages/detail/detail.wxss",
"chars": 769,
"preview": ".page_detail_hd {\n padding: 20rpx;\n}\n.page_detail_title{\n font-size: 20px;\n text-align: center;\n height: 400"
},
{
"path": "client/pages/logs/logs.js",
"chars": 261,
"preview": "//logs.js\nconst util = require('../../utils/util.js')\n\nPage({\n data: {\n logs: []\n },\n onLoad: function () {\n th"
},
{
"path": "client/pages/logs/logs.json",
"chars": 40,
"preview": "{\n \"navigationBarTitleText\": \"查看启动日志\"\n}"
},
{
"path": "client/pages/logs/logs.wxml",
"chars": 173,
"preview": "<!--logs.wxml-->\n<view class=\"container log-list\">\n <block wx:for=\"{{logs}}\" wx:for-item=\"log\">\n <text class=\"log-it"
},
{
"path": "client/pages/logs/logs.wxss",
"chars": 106,
"preview": ".log-list {\n display: flex;\n flex-direction: column;\n padding: 40rpx;\n}\n.log-item {\n margin: 10rpx;\n}\n"
},
{
"path": "client/pages/manage/manage.js",
"chars": 1341,
"preview": "var sliderWidth = 96; // 需要设置slider的宽度,用于计算中间位置\nvar config = require('../../config.js');\nvar app = getApp();\n\nPage({\n "
},
{
"path": "client/pages/manage/manage.json",
"chars": 2,
"preview": "{}"
},
{
"path": "client/pages/manage/manage.wxml",
"chars": 2782,
"preview": "<view class=\"page\">\n <view class=\"page__bd\">\n <view class=\"weui-tab\">\n <view class=\"weui-navbar\">\n "
},
{
"path": "client/pages/manage/manage.wxss",
"chars": 129,
"preview": "page,\n.page,\n.page__bd{\n height: 100%;\n}\n.page__bd{\n padding-bottom: 0;\n}\n.weui-media-box__desc {\n padding-bottom"
},
{
"path": "client/pages/new/new.js",
"chars": 3717,
"preview": "// pages/new/new.js\nvar location = \"\";\nvar config = require('../../config.js');\nvar app = getApp();\n\nPage({\n\n /**\n "
},
{
"path": "client/pages/new/new.json",
"chars": 2,
"preview": "{}"
},
{
"path": "client/pages/new/new.wxml",
"chars": 2710,
"preview": "<form bindsubmit='formSubmit'>\n <view class=\"weui-cell weui-cell_input\">\n <view class=\"weui-cell__hd\">\n "
},
{
"path": "client/pages/new/new.wxss",
"chars": 56,
"preview": ".weui-btn.btn-green {\n background-color: \"#2ba245\";\n}"
},
{
"path": "client/pages/search/search.js",
"chars": 1397,
"preview": "/**\n * TODO:onload中加载所有正在进行的活动,在Typing中进行过滤,不用一遍一遍查询服务器\n */\nvar config = require('../../config.js');\nPage({\n data: {\n"
},
{
"path": "client/pages/search/search.json",
"chars": 2,
"preview": "{}"
},
{
"path": "client/pages/search/search.wxml",
"chars": 1644,
"preview": "<view class=\"page\">\n\n <view class=\"page__bd\">\n <view class=\"weui-search-bar\">\n <view class=\"weui-se"
},
{
"path": "client/pages/search/search.wxss",
"chars": 267,
"preview": ".searchbar-result{\n margin-top: 0;\n font-size: 14px;\n}\n.searchbar-result:before{\n display: none;\n}\n.weui-cell{\n"
},
{
"path": "client/pages/searchDetail/searchDetail.js",
"chars": 1186,
"preview": "var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');\n//key:腾讯地图的key\nvar demo = new QQMapWX({\n key:''\n});\nPage({\n "
},
{
"path": "client/pages/searchDetail/searchDetail.json",
"chars": 2,
"preview": "{}"
},
{
"path": "client/pages/searchDetail/searchDetail.wxml",
"chars": 1615,
"preview": "<view class=\"page\">\n <view class=\"page__bd\">\n <view class=\"weui-search-bar\">\n <view class=\"weui-sea"
},
{
"path": "client/pages/searchDetail/searchDetail.wxss",
"chars": 155,
"preview": ".searchbar-result{\n margin-top: 0;\n font-size: 14px;\n}\n.searchbar-result:before{\n display: none;\n}\n.weui-cell{\n"
},
{
"path": "client/pages/user/user.js",
"chars": 3167,
"preview": "// pages/user/user.js\nvar uploadFn = require('../../utils/upload.js');\nvar config = require('../../config.js');\nconst ap"
},
{
"path": "client/pages/user/user.json",
"chars": 2,
"preview": "{}"
},
{
"path": "client/pages/user/user.wxml",
"chars": 437,
"preview": "<view class='container'>\n <image src='{{avator_path}}' class='avator' mode='aspectFill'></image>\n</view>\n<view class='u"
},
{
"path": "client/pages/user/user.wxss",
"chars": 256,
"preview": "\n.container {\n height: 100%;\n}\n.avator {\n margin-top: 100rpx;\n}\n.user-info{\n padding-top: 50rpx;\n margin-left: 250rp"
},
{
"path": "client/project.config.json",
"chars": 440,
"preview": "{\n\t\"description\": \"项目配置文件。\",\n\t\"setting\": {\n\t\t\"urlCheck\": false,\n\t\t\"es6\": true,\n\t\t\"postcss\": true,\n\t\t\"minified\": true,\n\t\t"
},
{
"path": "client/utils/getdistance.js",
"chars": 954,
"preview": "var PI = Math.PI;\nvar EARTH_RADIUS = 6378137.0;\n\nfunction getRad(d) {\n return d * PI / 180.0;\n}\n\n// (113.529113211669"
},
{
"path": "client/utils/upload.js",
"chars": 1904,
"preview": "/**\n * 最终上传到cos的URL\n * 把以下字段配置成自己的cos相关信息,详情可看API文档 https://www.qcloud.com/document/product/436/6066\n * REGION: cos上传的地区"
},
{
"path": "client/utils/util.js",
"chars": 472,
"preview": "const formatTime = date => {\n const year = date.getFullYear()\n const month = date.getMonth() + 1\n const day = date.ge"
},
{
"path": "server/checkin/.idea/checkin.iml",
"chars": 458,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"WEB_MODULE\" version=\"4\">\n <component name=\"NewModuleRootManager\">\n"
},
{
"path": "server/checkin/.idea/jsLibraryMappings.xml",
"chars": 187,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"JavaScriptLibraryMappings\">\n <include"
},
{
"path": "server/checkin/.idea/modules.xml",
"chars": 266,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ProjectModuleManager\">\n <modules>\n "
},
{
"path": "server/checkin/.idea/runConfigurations/bin_www.xml",
"chars": 474,
"preview": "<component name=\"ProjectRunConfigurationManager\">\n <configuration default=\"false\" name=\"bin\\www\" type=\"NodeJSConfigurat"
},
{
"path": "server/checkin/.idea/workspace.xml",
"chars": 34046,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ChangeListManager\">\n <list default=\"t"
},
{
"path": "server/checkin/app.js",
"chars": 1402,
"preview": "var express = require('express');\nvar path = require('path');\nvar favicon = require('serve-favicon');\nvar logger = requi"
},
{
"path": "server/checkin/bin/www",
"chars": 1593,
"preview": "#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar app = require('../app');\nvar debug = require('debug')('checkin"
},
{
"path": "server/checkin/configs/config.js",
"chars": 250,
"preview": "var dbhost = 'localhost';\nvar dbuser = 'root';\nvar dbpassword = '123456';\nvar database = 'checkin';\nvar dbport = '3306'\n"
},
{
"path": "server/checkin/models/activity.js",
"chars": 2268,
"preview": "var db = require('../utils/dbConnection');\nmodule.exports = {\n create: function create (a,callback) {\n var sql"
},
{
"path": "server/checkin/models/apply.js",
"chars": 1202,
"preview": "var db = require('../utils/dbConnection');\nvar moment = require('moment');\n\n\n\nmodule.exports = {\n /**\n * TODO\n "
},
{
"path": "server/checkin/models/check.js",
"chars": 2344,
"preview": "var db = require('../utils/dbConnection');\nvar moment = require('moment');\nmodule.exports = {\n check: function (user_"
},
{
"path": "server/checkin/models/person.js",
"chars": 1522,
"preview": "var db = require('../utils/dbConnection');\n\n\n\nmodule.exports = {\n /**\n * 第一次使用的时候创建用户,通过检索是否在数据库中有记录\n * @para"
},
{
"path": "server/checkin/package.json",
"chars": 372,
"preview": "{\n \"name\": \"checkin\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"scripts\": {\n \"start\": \"node ./bin/www\"\n },\n \"dep"
},
{
"path": "server/checkin/public/stylesheets/style.css",
"chars": 111,
"preview": "body {\n padding: 50px;\n font: 14px \"Lucida Grande\", Helvetica, Arial, sans-serif;\n}\n\na {\n color: #00B7FF;\n}\n"
},
{
"path": "server/checkin/routes/activity.js",
"chars": 5552,
"preview": "var express = require('express');\nvar activity = require('../models/activity');\nvar apply = require('../models/apply');\n"
},
{
"path": "server/checkin/routes/check.js",
"chars": 3243,
"preview": "var express = require('express');\nvar router = express.Router();\nvar check = require('../models/check');\nvar moment = re"
},
{
"path": "server/checkin/routes/index.js",
"chars": 205,
"preview": "var express = require('express');\nvar router = express.Router();\n\n/* GET home page. */\nrouter.get('/', function(req, res"
},
{
"path": "server/checkin/routes/person.js",
"chars": 1936,
"preview": "var express = require('express');\nvar users = require('../models/person');\nvar router = express.Router();\n\n\n/* GET home "
},
{
"path": "server/checkin/utils/dbConnection.js",
"chars": 381,
"preview": "var config = require('../configs/config');\nvar mysql = require('mysql');\nvar connection = mysql.createConnection({\n h"
},
{
"path": "server/checkin/views/error.ejs",
"chars": 83,
"preview": "<h1><%= message %></h1>\n<h2><%= error.status %></h2>\n<pre><%= error.stack %></pre>\n"
},
{
"path": "server/checkin/views/index.ejs",
"chars": 222,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <title><%= title %></title>\n <link rel='stylesheet' href='/stylesheets/style.css'"
}
]
About this extraction
This page contains the full source code of the tommenx/wxss GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 189 files (243.5 KB), approximately 75.4k tokens, and a symbol index with 36 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.