├── pages
├── msg
│ ├── index.json
│ ├── list.json
│ ├── index.wxss
│ ├── list.wxml
│ ├── index.js
│ ├── list.js
│ ├── index.wxml
│ └── list.wxss
├── index
│ ├── index.json
│ ├── index.wxss
│ ├── index.js
│ └── index.wxml
├── notice
│ ├── index.json
│ ├── index.wxss
│ ├── index.wxml
│ └── index.js
├── toLogin
│ ├── toLogin.json
│ ├── toLogin.wxss
│ ├── toLogin.wxml
│ └── toLogin.js
├── my
│ ├── fav.json
│ ├── list.json
│ ├── mydyn.json
│ ├── appointment.json
│ ├── index.json
│ ├── info.json
│ ├── index.wxss
│ ├── info.wxss
│ ├── appointment.wxss
│ ├── index.js
│ ├── fav.wxss
│ ├── list.wxss
│ ├── fav.wxml
│ ├── list.wxml
│ ├── appointment.js
│ ├── mydyn.wxml
│ ├── appointment.wxml
│ ├── fav.js
│ ├── list.js
│ ├── index.wxml
│ ├── info.wxml
│ ├── mydyn.js
│ ├── mydyn.wxss
│ └── info.js
├── comment
│ ├── index.json
│ ├── index.wxss
│ ├── index.wxml
│ └── index.js
├── dynamic
│ ├── add.json
│ ├── index.json
│ ├── add.wxss
│ ├── add.wxml
│ ├── index.wxml
│ ├── add.js
│ ├── index.js
│ └── index.wxss
├── info
│ ├── add.json
│ ├── edit.json
│ ├── index.json
│ ├── add.wxss
│ ├── edit.wxss
│ ├── index.wxss
│ ├── edit.js
│ ├── add.js
│ ├── index.wxml
│ ├── index.js
│ ├── edit.wxml
│ └── add.wxml
└── appointment
│ ├── index.json
│ ├── index.wxss
│ ├── index.js
│ └── index.wxml
├── img
├── 1.png
├── 2.png
├── c.png
├── dy.png
├── me.png
├── to.png
├── Taxi.png
├── add.png
├── app0.png
├── app1.png
├── app2.png
├── app3.png
├── auto.png
├── back.png
├── cle.png
├── cle1.png
├── date.png
├── day.png
├── edit.png
├── fav.png
├── fav1.png
├── msg.png
├── msg1.png
├── see.png
├── tel.png
├── tel1.png
├── zan.png
├── zan1.png
├── Tourist.png
├── account.png
├── adddy.png
├── auto1.png
├── date1.png
├── driver.png
├── email.png
├── goods.png
├── msg_1.png
├── msg_2.png
├── msg_3.png
├── people.png
├── surplus.png
├── vehicle.png
├── wechat.png
├── account1.png
├── comments.png
├── comments1.png
├── favorite.png
├── favorite1.png
├── shoucang.png
├── shoucang1.png
├── appointment.png
├── Human Footprints.png
└── business-color_signature.png
├── .Archive
└── donate.md
│ ├── 2017-09-28 13-29-42.md
│ ├── 2017-09-28 13-31-02.md
│ ├── 2017-09-28 13-32-42.md
│ ├── 2017-09-28 13-33-42.md
│ ├── 2017-09-28 13-34-42.md
│ ├── 2017-09-28 13-35-52.md
│ ├── 2017-09-28 13-37-02.md
│ ├── 2017-09-28 13-38-52.md
│ ├── 2017-09-28 13-39-52.md
│ ├── 2017-09-28 13-40-52.md
│ └── 2017-09-28 13-43-12.md
├── sitemap.json
├── app.wxss
├── project.config.json
├── app.json
├── app.js
├── README.md
├── donate.md
├── libs
└── bmap-wx.min.js
├── utils
└── util.js
├── LICENSE
└── weui.wxss
/pages/msg/index.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/msg/list.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/index/index.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/notice/index.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/toLogin/toLogin.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/my/fav.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "我的收藏"
3 | }
--------------------------------------------------------------------------------
/pages/comment/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "回复"
3 | }
--------------------------------------------------------------------------------
/pages/dynamic/add.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "发表动态"
3 | }
--------------------------------------------------------------------------------
/pages/dynamic/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "动态"
3 | }
--------------------------------------------------------------------------------
/pages/my/list.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "我发布的"
3 | }
--------------------------------------------------------------------------------
/pages/my/mydyn.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "我的动态"
3 | }
--------------------------------------------------------------------------------
/pages/info/add.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "发布拼车"
3 | }
4 |
--------------------------------------------------------------------------------
/pages/info/edit.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "修改"
3 | }
4 |
--------------------------------------------------------------------------------
/pages/info/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "拼车详情"
3 | }
4 |
--------------------------------------------------------------------------------
/pages/my/appointment.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "预约列表"
3 | }
--------------------------------------------------------------------------------
/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/1.png
--------------------------------------------------------------------------------
/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/2.png
--------------------------------------------------------------------------------
/img/c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/c.png
--------------------------------------------------------------------------------
/img/dy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/dy.png
--------------------------------------------------------------------------------
/img/me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/me.png
--------------------------------------------------------------------------------
/img/to.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/to.png
--------------------------------------------------------------------------------
/pages/appointment/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "预约详情"
3 | }
--------------------------------------------------------------------------------
/img/Taxi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/Taxi.png
--------------------------------------------------------------------------------
/img/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/add.png
--------------------------------------------------------------------------------
/img/app0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/app0.png
--------------------------------------------------------------------------------
/img/app1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/app1.png
--------------------------------------------------------------------------------
/img/app2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/app2.png
--------------------------------------------------------------------------------
/img/app3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/app3.png
--------------------------------------------------------------------------------
/img/auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/auto.png
--------------------------------------------------------------------------------
/img/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/back.png
--------------------------------------------------------------------------------
/img/cle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/cle.png
--------------------------------------------------------------------------------
/img/cle1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/cle1.png
--------------------------------------------------------------------------------
/img/date.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/date.png
--------------------------------------------------------------------------------
/img/day.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/day.png
--------------------------------------------------------------------------------
/img/edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/edit.png
--------------------------------------------------------------------------------
/img/fav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/fav.png
--------------------------------------------------------------------------------
/img/fav1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/fav1.png
--------------------------------------------------------------------------------
/img/msg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/msg.png
--------------------------------------------------------------------------------
/img/msg1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/msg1.png
--------------------------------------------------------------------------------
/img/see.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/see.png
--------------------------------------------------------------------------------
/img/tel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/tel.png
--------------------------------------------------------------------------------
/img/tel1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/tel1.png
--------------------------------------------------------------------------------
/img/zan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/zan.png
--------------------------------------------------------------------------------
/img/zan1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/zan1.png
--------------------------------------------------------------------------------
/img/Tourist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/Tourist.png
--------------------------------------------------------------------------------
/img/account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/account.png
--------------------------------------------------------------------------------
/img/adddy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/adddy.png
--------------------------------------------------------------------------------
/img/auto1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/auto1.png
--------------------------------------------------------------------------------
/img/date1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/date1.png
--------------------------------------------------------------------------------
/img/driver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/driver.png
--------------------------------------------------------------------------------
/img/email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/email.png
--------------------------------------------------------------------------------
/img/goods.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/goods.png
--------------------------------------------------------------------------------
/img/msg_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/msg_1.png
--------------------------------------------------------------------------------
/img/msg_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/msg_2.png
--------------------------------------------------------------------------------
/img/msg_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/msg_3.png
--------------------------------------------------------------------------------
/img/people.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/people.png
--------------------------------------------------------------------------------
/img/surplus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/surplus.png
--------------------------------------------------------------------------------
/img/vehicle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/vehicle.png
--------------------------------------------------------------------------------
/img/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/wechat.png
--------------------------------------------------------------------------------
/img/account1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/account1.png
--------------------------------------------------------------------------------
/img/comments.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/comments.png
--------------------------------------------------------------------------------
/img/comments1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/comments1.png
--------------------------------------------------------------------------------
/img/favorite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/favorite.png
--------------------------------------------------------------------------------
/img/favorite1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/favorite1.png
--------------------------------------------------------------------------------
/img/shoucang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/shoucang.png
--------------------------------------------------------------------------------
/img/shoucang1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/shoucang1.png
--------------------------------------------------------------------------------
/pages/my/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "disableScroll":true,
3 | "navigationBarTitleText": "我的"
4 | }
--------------------------------------------------------------------------------
/img/appointment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/appointment.png
--------------------------------------------------------------------------------
/pages/msg/index.wxss:
--------------------------------------------------------------------------------
1 | .list view{font-size:12pt;}
2 | .list .weui-cell{padding: 15px !important}
--------------------------------------------------------------------------------
/pages/my/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "disableScroll":true,
3 | "navigationBarTitleText": "个人信息"
4 | }
--------------------------------------------------------------------------------
/img/Human Footprints.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/Human Footprints.png
--------------------------------------------------------------------------------
/img/business-color_signature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincenth520/pinche_xcx/HEAD/img/business-color_signature.png
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-29-42.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 为了程序的后期开发
--------------------------------------------------------------------------------
/pages/notice/index.wxss:
--------------------------------------------------------------------------------
1 | .page{margin:8px;}
2 | .title{text-align:center;font-weight: bold;font-size: 1rem;color:#000;margin-top:10px;}
3 | .content{font-size: .85rem;}
--------------------------------------------------------------------------------
/pages/notice/index.wxml:
--------------------------------------------------------------------------------
1 |
2 | {{data.title}}
3 |
4 | {{data.content}}
5 |
6 |
--------------------------------------------------------------------------------
/pages/dynamic/add.wxss:
--------------------------------------------------------------------------------
1 | .page{margin:10rpx;}
2 | .weui-btn{background: #f4de3b!important;color:#000!important;}
3 | .weui-cells::before{border-top: 0!important;}
4 | .weui-cells{margin-top:15px;}
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-31-02.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 |
--------------------------------------------------------------------------------
/pages/comment/index.wxss:
--------------------------------------------------------------------------------
1 | .page{margin:10rpx;}
2 | .weui-btn{background: #f4de3b!important;color:#000!important;}
3 | .weui-cells::before{border-top: 0!important;}
4 | .weui-cells{margin-top:15px;}
--------------------------------------------------------------------------------
/sitemap.json:
--------------------------------------------------------------------------------
1 | {
2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
3 | "rules": [{
4 | "action": "allow",
5 | "page": "*"
6 | }]
7 | }
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-32-42.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版:
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-33-42.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版(399):指导小程序全部配置至上线,
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-34-42.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版(399):指导小程序全部配置至上线,获得后续代码的升级版本
11 | - 专业版(699
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-35-52.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版(¥399):指导小程序全部配置至上线,获得后续代码的升级版本
11 | - 专业版(¥699):帮配置小程序
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-37-02.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版(¥399):指导小程序全部配置至上线,获得后续代码的升级版本,上线之后的bug修复
11 | - 专业版(¥699):帮配置小程序直至上线,获得后续代码的升级版本,
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-38-52.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版(¥399):指导小程序全部配置至上线,获得后续代码的升级版本,加入会员群获得专业指导支持
11 | - 专业版(¥699):帮配置小程序直至上线,获得后续代码的升级版本,加入会员群获得专业指导支持
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-39-52.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版(¥399):指导小程序全部配置至上线,获得后续代码的升级版本,加入会员群获得专业指导支持
11 | - 专业版(¥699):帮助配置小程序直至上线,获得后续代码的升级版本,加入会员群获得专业指导支持
12 |
13 | ##同城拼车后续计划
--------------------------------------------------------------------------------
/pages/my/index.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .head{display:flex;flex-direction: column;background: #efefef;width:100%;padding: 100rpx 0rpx; align-items: center; justify-content: space-between;background: #f4de3b}
3 | .head image{width:150rpx;height:150rpx;margin:0 auto;border-radius: 50%;}
4 | .list view{font-size:12pt;}
5 | .list .weui-cell{padding: 15px !important}
--------------------------------------------------------------------------------
/pages/notice/index.js:
--------------------------------------------------------------------------------
1 | // pages/notice/index.js
2 | var util = require('../../utils/util.js');
3 | Page({
4 | data:{},
5 | onLoad:function(options){
6 | var that = this;
7 | util.req('notice/index',{id:options.id},function(data){
8 | if(data.status == 1){
9 | that.setData({data:data.data});
10 | }
11 | })
12 | }
13 | })
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-40-52.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版(¥399):指导小程序全部配置至上线,获得后续代码的升级版本,加入会员群获得专业指导支持
11 | - 专业版(¥699):帮助配置小程序直至上线,获得后续代码的升级版本,加入会员群获得专业指导支持
12 |
13 | ## 同城拼车后续计划
14 | 免费版本除重大bug不再更新,付费版本将后续完善前端
--------------------------------------------------------------------------------
/.Archive/donate.md/2017-09-28 13-43-12.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ##级别
10 | - 标准版(¥399):指导小程序全部配置至上线,获得后续代码的升级版本,加入会员群获得专业指导支持
11 | - 专业版(¥699):帮助配置小程序直至上线,获得后续代码的升级版本,加入会员群获得专业指导支持
12 |
13 | ## 同城拼车后续计划
14 | 免费版本除重大bug不再更新,付费版本将持续完善前端版本,并后续开发后台管理平台
--------------------------------------------------------------------------------
/pages/my/info.wxss:
--------------------------------------------------------------------------------
1 | /* pages/my/info.wxss */
2 | .head{display:flex;flex-direction: column;background: #efefef;width:100%;padding: 100rpx 0rpx; align-items: center; justify-content: space-between;}
3 | .head image{width:150rpx;height:150rpx;margin:0 auto;border-radius: 50%;}
4 | .form .weui-cells{z-index: 0;}
5 | .form .weui-input{overflow: hidden;}
6 | .weui-btn{background: #f4de3b!important;color:#000!important;}
--------------------------------------------------------------------------------
/pages/my/appointment.wxss:
--------------------------------------------------------------------------------
1 | /* appointment.wxss */
2 | .page{background: #f5f5f5;}
3 | .weui-cell{position:relative}
4 | .status_icon{
5 | width:40px;
6 | height:40px;
7 | position:absolute;
8 | top:0px;
9 | right:0px;
10 | }
11 | .weui-tab__content{
12 | margin-top: 10px;
13 | background: #fff;
14 | }
15 | .weui-navbar{background: #fff;}
16 | .tel{width:30px;
17 | height:30px;
18 | position:absolute;
19 | top:20px;
20 | right:30px;
21 | }
--------------------------------------------------------------------------------
/pages/info/add.wxss:
--------------------------------------------------------------------------------
1 | /* pages/info/add.wxss */
2 | .page__bd{background: #efefef;}
3 | .weui-cells__title{padding-top:.3rem;margin-top:0;}
4 | .radio-group{padding: 10px 0px !important;}
5 | /* .StartAndStop input{width:70px;float:left}
6 | .to1{width: 30px;height:30px;position:absolute;top:6px;}
7 | .stop{margin-left:40px;}*/
8 | .weui-label{color:black}
9 | .radio text{margin:0rpx 8rpx;}
10 | .radio{margin-right: 12rpx;}
11 | .weui-btn{background: #f4de3b!important;color:#000!important;}
12 | .weui-input{overflow:hidden;}
13 |
--------------------------------------------------------------------------------
/pages/info/edit.wxss:
--------------------------------------------------------------------------------
1 | /* pages/info/add.wxss */
2 | .page__bd{background: #efefef;}
3 | .weui-cells__title{padding-top:.3rem;margin-top:0;}
4 | .radio-group{padding: 10px 0px !important;}
5 | /* .StartAndStop input{width:70px;float:left}
6 | .to1{width: 30px;height:30px;position:absolute;top:6px;}
7 | .stop{margin-left:40px;}*/
8 | .weui-label{color:black}
9 | .radio text{margin:0rpx 8rpx;}
10 | .radio{margin-right: 12rpx;}
11 | .weui-btn{background: #f4de3b!important;color:#000!important;}
12 | .weui-input{overflow:hidden;}
13 |
--------------------------------------------------------------------------------
/pages/toLogin/toLogin.wxss:
--------------------------------------------------------------------------------
1 | /* pages/toLogin/toLogin.wxss */
2 | #head{padding:100rpx 40rpx 40rpx 40rpx;}
3 | #head image{width:140rpx;height:140rpx;margin: 0 auto;display:block;border-radius:50%;}
4 | .text-align{text-align: center}
5 | .gray{color: #888}
6 | #title{margin: 5px 0px 30px 0px;}
7 | .font3{font-size: 14px;margin:5px 0px;}
8 | .font4{font-size: 15px;}
9 |
10 | .loginbutton{width: 260px;border-radius: 5px;background: #0d76dc;color: #fff;margin: 20px auto;}
11 | .icon{width: 20px;height:20px;vertical-align:middle;}
--------------------------------------------------------------------------------
/pages/appointment/index.wxss:
--------------------------------------------------------------------------------
1 | /* pages/info/add.wxss */
2 | .page{background: #efefef;height: 560px;}
3 | .weui-cells__title{padding-top:.3rem;margin-top:0;}
4 | .radio-group{padding: 10px 0px !important;}
5 | /* .StartAndStop input{width:70px;float:left}
6 | .to1{width: 30px;height:30px;position:absolute;top:6px;}
7 | .stop{margin-left:40px;}*/
8 | .weui-label{color:black}
9 | .radio text{margin:0rpx 8rpx;}
10 | .radio{margin-right: 12rpx;}
11 | .submit{background: #f4de3b!important;color:#000!important;}
12 | .weui-input{overflow:hidden;}
13 |
--------------------------------------------------------------------------------
/pages/my/index.js:
--------------------------------------------------------------------------------
1 | //index.js
2 | //获取应用实例
3 | var app = getApp();
4 | var util = require('../../utils/util.js');
5 |
6 | Page({
7 | onShow: function () {
8 | var that = this;
9 | that.setData({
10 | userInfo:app.globalData.userInfo
11 | });
12 |
13 | util.req('info/mycount',{sk:app.globalData.sk},function(data){
14 | that.setData({infoCount:data.data});
15 | })
16 |
17 | util.req('appointment/mycount', { sk: app.globalData.sk }, function (data) {
18 | that.setData({ appointmentCount: data.data });
19 | })
20 |
21 |
22 |
23 | },
24 |
25 | })
26 |
--------------------------------------------------------------------------------
/pages/toLogin/toLogin.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{appInfo.name}}
7 | 欢迎您
8 |
9 | 请微信授权登录后放心使用{{appInfo.name}}
10 | 您的信息和数据将得到保护
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app.wxss:
--------------------------------------------------------------------------------
1 | /**app.wxss**/
2 | @import 'weui.wxss';
3 | .container {
4 | height: 100%;
5 | display: flex;
6 | flex-direction: column;
7 | align-items: center;
8 | justify-content: space-between;
9 | }
10 | view{ color:Grey}
11 |
12 | /**选择城市**/
13 |
14 | .citypickers{
15 | position: fixed;
16 | height: 100%;
17 | width: 100%;
18 | min-height: 100%;
19 | background-color: red;
20 | z-index:1000000;
21 | }
22 | .citybody {
23 | position: fixed;
24 | bottom: 0px;
25 | }
26 |
27 | .cityheader {
28 | position: absolute;
29 | top:0px;
30 | width: 100%;
31 | z-index: 4;
32 | }
33 |
34 | .city-cancel {
35 | float: left;
36 | margin: 20rpx;
37 | color: #818181;
38 | }
39 |
40 | .city-true {
41 | float: right;
42 | margin: 20rpx;
43 | color: #2FB42E
44 | }
45 |
46 | .section .picker {
47 | background-color: #fff;
48 | border-bottom: 1px #d9d9d9 solid;
49 | border-top: 1px #d9d9d9 solid;
50 | padding: 20rpx;
51 | }
--------------------------------------------------------------------------------
/pages/msg/list.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | {{item.nickName}}{{item.time}}
15 |
16 | {{item.content}}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/pages/my/fav.wxss:
--------------------------------------------------------------------------------
1 | .page__bd{
2 | height: 100%;
3 | }
4 | .page__bd{
5 | padding-bottom: 0;
6 | }
7 | .weui-tab__content{
8 | padding-top: 60px;
9 | text-align: center;
10 | }
11 | .list_title,.list_desc{text-align: left!important;}
12 | .list_title{color:black;font-size: .85rem;}
13 | .list_desc{margin: 5rpx 0rpx;color: #444}
14 | .list_type_1{background: rgb(254,230,50);padding: 0rpx 5rpx;margin-right:1rem;color:lightseagreen;}
15 | .list_type_2{background: lightseagreen;padding: 0rpx 5rpx;margin-right:1rem;color:rgb(254,230,50);}
16 | .to1{width: 60rpx;height:60rpx;position:absolute;top:12px;}
17 | .list_over{margin-left:60rpx;}
18 | .list_icon{width:30rpx;height:30rpx;position:absolute}
19 | .weui-media-box__info__meta text{margin:0rpx 33rpx;}
20 | .list_tm{float: right;color: indianred;font-size: .8rem;}
21 | .weui-media-box__info__meta{padding-right: .2rem!important;}
22 | .icon-gender{width:30rpx;height: 30rpx;bottom: 16rpx;position:absolute;left:120rpx;}
23 |
24 | .editdiv{float:right}
25 | .editbtn{height:50rpx;line-height:50rpx;float:left;font-size: .7rem;margin:5rpx;}
26 | .null{line-height: 200px;text-align: center;}
--------------------------------------------------------------------------------
/pages/my/list.wxss:
--------------------------------------------------------------------------------
1 | .page__bd{
2 | height: 100%;
3 | }
4 | .page__bd{
5 | padding-bottom: 0;
6 | }
7 | .weui-tab__content{
8 | padding-top: 60px;
9 | text-align: center;
10 | }
11 | .list_title,.list_desc{text-align: left!important;}
12 | .list_title{color:black;font-size: .85rem;}
13 | .list_desc{margin: 5rpx 0rpx;color: #444}
14 | .list_type_1{background: rgb(254,230,50);padding: 0rpx 5rpx;margin-right:1rem;color:lightseagreen;}
15 | .list_type_2{background: lightseagreen;padding: 0rpx 5rpx;margin-right:1rem;color:rgb(254,230,50);}
16 | .to1{width: 60rpx;height:60rpx;position:absolute;top:12px;}
17 | .list_over{margin-left:60rpx;}
18 | .list_icon{width:30rpx;height:30rpx;position:absolute}
19 | .weui-media-box__info__meta text{margin:0rpx 33rpx;}
20 | .list_tm{float: right;color: indianred;font-size: .8rem;}
21 | .weui-media-box__info__meta{padding-right: .2rem!important;}
22 | .icon-gender{width:30rpx;height: 30rpx;bottom: 16rpx;position:absolute;left:120rpx;}
23 |
24 | .editdiv{float:right}
25 | .editbtn{height:50rpx;line-height:50rpx;float:left;font-size: .7rem;margin:5rpx;}
26 | .null{line-height: 200px;text-align: center;}
--------------------------------------------------------------------------------
/pages/msg/index.js:
--------------------------------------------------------------------------------
1 | // pages/msg/index.js
2 | var util = require('../../utils/util.js');
3 | var app = getApp();
4 | Page({
5 | data:{},
6 | msg:function(){
7 | var that = this;
8 | util.req('msg/getall', { sk: app.globalData.sk }, function (data) {
9 | var zan = 0;
10 | var comment = 0;
11 | var notice = 0;
12 | if (data.data == null) {
13 | var data = { zan: zan, comment: comment, notice: notice };
14 | that.setData({ data: data });
15 | return false;
16 | }
17 | data.data.forEach(function (item) {
18 | if (item.type == 'zan') {
19 | zan = item.count;
20 | }
21 | if (item.type == 'comment') {
22 | comment = item.count;
23 | }
24 | if (item.type == 'notice') {
25 | notice = item.count;
26 | }
27 | })
28 | var data = { zan: zan, comment: comment, notice: notice };
29 | that.setData({ data: data });
30 | })
31 | },
32 | onShow: function () {
33 | this.msg();
34 | },
35 | onPullDownRefresh: function () {
36 | this.msg();
37 | wx.stopPullDownRefresh();
38 | },
39 |
40 | })
--------------------------------------------------------------------------------
/pages/msg/list.js:
--------------------------------------------------------------------------------
1 | // pages/msg/list.js
2 | var util = require('../../utils/util.js');
3 | var app = getApp();
4 | var id = 0;
5 | var page = 1;
6 | var arr = new Array();
7 | Page({
8 | data:{},
9 | getList:function(id){
10 | var that = this;
11 | util.req('msg/get',{type:id,sk:app.globalData.sk,page:page},function(data){
12 | if(data.data == null){
13 | that.setData({ 'isnull': true,'nomore':true});
14 | return false;
15 | }
16 | if(page == 1){
17 | arr = new Array();
18 | }
19 |
20 | data.data.forEach(function(item){
21 | arr.push({
22 | time: util.getDateBiff(item.time * 1000),
23 | content: item.content,
24 | nickName: item.nickName,
25 | avatarUrl: item.avatarUrl,
26 | url:item.url
27 | })
28 | })
29 |
30 | that.setData({'msg':arr});
31 | })
32 | },
33 | onLoad:function(options){
34 | // 页面初始化 options为页面跳转所带来的参数
35 | id = options.id;
36 | this.getList(options.id);
37 | },
38 | onPullDownRefresh: function () {
39 | page = 1;
40 | this.getList(id);
41 | wx.stopPullDownRefresh();
42 | },
43 | onReachBottom: function () {
44 | if (!this.data.nomore) {
45 | page++;
46 | this.getList(id);
47 | }
48 | }
49 |
50 |
51 |
52 | })
--------------------------------------------------------------------------------
/pages/dynamic/add.wxml:
--------------------------------------------------------------------------------
1 |
2 | {{errorMsg}}
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/pages/comment/index.wxml:
--------------------------------------------------------------------------------
1 |
2 | {{errorMsg}}
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/pages/appointment/index.js:
--------------------------------------------------------------------------------
1 | // pages/info/add.js
2 | var util = require('../../utils/util.js');
3 | var app = getApp();
4 | var type = 1;
5 | var id = 0;
6 | Page({
7 | data: {
8 | },
9 | onLoad: function (options) {
10 | var that = this;
11 | id = options.id;
12 | util.req('appointment/detail', { id: options.id, sk: app.globalData.sk }, function (data) {
13 | console.log(data);
14 | data.data.time = util.formatTime(new Date(data.data.time * 1000));
15 | that.setData({ data: data.data });
16 | })
17 | },
18 | formSubmit: function (e) {
19 | var that = this;
20 | wx.showLoading({
21 | title: '',
22 | mask: true
23 | })
24 | setTimeout(function(){
25 | util.req('appointment/submit', { id: id, sk: app.globalData.sk, type: type, form_id: e.detail.formId}, function (data) {
26 | wx.hideLoading();
27 | if(data.status == 1){
28 | if(type == 1){
29 | wx.showToast({
30 | title: '拼车成功,请留意与乘客联系',
31 | icon: 'success',
32 | duration: 2000
33 | })
34 | }else{
35 | wx.showToast({
36 | title: '拒绝成功',
37 | icon: 'success',
38 | duration: 2000
39 | })
40 | }
41 | that.setData({'data.status':type});
42 | } else {
43 | util.isError(data.msg, that);
44 | }
45 | })
46 | },1000)
47 |
48 | },
49 | no: function () {
50 | type = 2;
51 | }
52 | })
--------------------------------------------------------------------------------
/project.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "description": "项目配置文件。",
3 | "setting": {
4 | "urlCheck": false,
5 | "es6": true,
6 | "enhance": false,
7 | "postcss": true,
8 | "preloadBackgroundData": false,
9 | "minified": true,
10 | "newFeature": true,
11 | "coverView": true,
12 | "nodeModules": false,
13 | "autoAudits": false,
14 | "showShadowRootInWxmlPanel": true,
15 | "scopeDataCheck": false,
16 | "uglifyFileName": false,
17 | "checkInvalidKey": true,
18 | "checkSiteMap": true,
19 | "uploadWithSourceMap": true,
20 | "compileHotReLoad": false,
21 | "useMultiFrameRuntime": false,
22 | "useApiHook": false,
23 | "useApiHostProcess": false,
24 | "babelSetting": {
25 | "ignore": [],
26 | "disablePlugins": [],
27 | "outputPath": ""
28 | },
29 | "enableEngineNative": false,
30 | "useIsolateContext": true,
31 | "useCompilerModule": true,
32 | "userConfirmedUseCompilerModuleSwitch": false,
33 | "userConfirmedBundleSwitch": false,
34 | "packNpmManually": false,
35 | "packNpmRelationList": [],
36 | "minifyWXSS": true
37 | },
38 | "compileType": "miniprogram",
39 | "libVersion": "2.17.0",
40 | "appid": "wxdb39708ea70f0e42",
41 | "projectname": "pinxhe_xcx",
42 | "isGameTourist": false,
43 | "simulatorType": "wechat",
44 | "simulatorPluginLibVersion": {},
45 | "condition": {
46 | "search": {
47 | "list": []
48 | },
49 | "conversation": {
50 | "list": []
51 | },
52 | "game": {
53 | "currentL": -1,
54 | "list": []
55 | },
56 | "miniprogram": {
57 | "list": []
58 | }
59 | }
60 | }
--------------------------------------------------------------------------------
/pages/toLogin/toLogin.js:
--------------------------------------------------------------------------------
1 | var app = getApp();
2 | var util = require('../../utils/util.js');
3 | Page({
4 | data: {
5 | canIUse: wx.canIUse('button.open-type.getUserInfo'),
6 | appInfo: {},
7 | login: false
8 | },
9 | onLoad: function (options) {
10 | var that = this;
11 | var vdata = {};
12 | // wx.getSetting({
13 | // success: function (res) {
14 | // console.log(res)
15 | // if (res.authSetting['scope.userInfo']) {
16 | // wx.switchTab({
17 | // url: '/pages/index/index',
18 | // })
19 | // }
20 | // return false;
21 | // }
22 | // })
23 |
24 | that.setData({
25 | appInfo: util.wxAppinfo
26 | });
27 |
28 | },
29 | getUserProfile: function (e) {
30 | var that = this;
31 | var userinfo = e.detail;
32 | console.log('sss')
33 | wx.getUserProfile({
34 | lang: 'en',
35 | desc: '用于完善会员资料',
36 | success: function (userinfo) {
37 | console.log(userinfo)
38 | wx.login({
39 | success: function (res) {
40 | util.req('user/login', {
41 | "code": res.code,
42 | "encryptedData": userinfo.encryptedData,
43 | "iv": userinfo.iv
44 | }, function (data) {
45 | app.setUserInfo(data.user);
46 | app.setSk(data.sk);
47 | wx.reLaunch({
48 | url: '/pages/index/index',
49 | })
50 | })
51 | }
52 | })
53 | },
54 | fail: function (res) {
55 | console.log(res)
56 | // that.loginFail();
57 | }
58 | })
59 | }
60 | })
--------------------------------------------------------------------------------
/pages/index/index.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .head{display:flex;flex-direction: row;background: #f5f5f5;width:100%;padding: 10rpx 0rpx 3rpx 0rpx; align-items: center; justify-content: space-between;}
3 | .head input,.head picker{background: #fff;width: 180rpx;margin:5rpx;height: 70rpx;border-radius: 10rpx;font-size: .8rem;text-align: center;line-height:70rpx;color:#444;}
4 | .dateImg{width: 40rpx;height:40rpx;margin:25rpx 10rpx;}
5 | .to{width: 60rpx;height:60rpx;margin:20rpx 0rpx;}
6 |
7 | .date{font-size: .8rem!important;width: 200rpx!important;}
8 |
9 | .page__bd{
10 | height: 100%;
11 | }
12 | .page__bd{
13 | padding-bottom: 0;
14 | }
15 | .weui-tab__content{
16 | padding-top: 60px;
17 | text-align: center;
18 | }
19 | .weui-navbar{background: #fff;}
20 | .weui-media-box{position: relative}
21 | .weui-navbar__slider{background: rgb(254,230,50)}
22 | .weui-tab__content{padding-top: 0!important;}
23 | .list_title,.list_desc{text-align: left!important;}
24 | .list_title{color:black;font-size: .85rem;}
25 | .list_desc{margin: 5rpx 0rpx;color: #444}
26 | .list_type_1{background: rgb(254,230,50);padding: 0rpx 5rpx;margin-right:1rem;color:lightseagreen;}
27 | .list_type_2{background: lightseagreen;padding: 0rpx 5rpx;margin-right:1rem;color:rgb(254,230,50);}
28 | .to1{width: 60rpx;height:60rpx;position:absolute;top:12px;}
29 | .list_over{margin-left:60rpx;}
30 | .list_icon{width:30rpx;height:30rpx;position:absolute}
31 | .weui-media-box__info__meta text{margin:0rpx 33rpx;}
32 | .list_tm{float: right;color: indianred;font-size: .8rem;}
33 | .weui-media-box__info__meta{padding-right: .2rem!important;}
34 | .icon-gender{width:30rpx;height: 30rpx;bottom: 16rpx;position:absolute;left:120rpx;}
35 |
36 | .add{position: fixed;bottom: 30px;right:30px;}
37 | .add image{width: 80rpx;height: 80rpx;}
--------------------------------------------------------------------------------
/pages/my/fav.wxml:
--------------------------------------------------------------------------------
1 |
2 | {{errorMsg}}
3 |
4 |
5 | 没有记录
6 |
7 |
8 |
9 |
10 | {{item.start}} {{item.over}}
11 |
12 | {{item.tm}}
13 | 出发:{{item.date}} {{item.time}}
14 |
15 | {{item.type}}
16 | {{item.surplus}}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | 正在加载
27 |
28 |
29 | 没有更多了~
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "pages": [
3 | "pages/index/index",
4 | "pages/my/index",
5 | "pages/toLogin/toLogin",
6 | "pages/my/info",
7 | "pages/my/list",
8 | "pages/my/fav",
9 | "pages/my/mydyn",
10 | "pages/info/index",
11 | "pages/info/add",
12 | "pages/info/edit",
13 | "pages/dynamic/index",
14 | "pages/dynamic/add",
15 | "pages/comment/index",
16 | "pages/notice/index",
17 | "pages/msg/index",
18 | "pages/msg/list",
19 | "pages/my/appointment",
20 | "pages/appointment/index"
21 | ],
22 | "window": {
23 | "backgroundTextStyle": "dark",
24 | "navigationBarBackgroundColor": "#f4de3b",
25 | "navigationBarTitleText": "同城拼车",
26 | "navigationBarTextStyle": "black",
27 | "enablePullDownRefresh": true
28 | },
29 | "tabBar": {
30 | "color": "#aaa",
31 | "selectedColor": "#ddc40b",
32 | "backgroundColor": "#fff",
33 | "borderStyle": "black",
34 | "list": [
35 | {
36 | "pagePath": "pages/index/index",
37 | "text": "拼车",
38 | "iconPath": "img/auto.png",
39 | "selectedIconPath": "img/auto1.png"
40 | },
41 | {
42 | "pagePath": "pages/dynamic/index",
43 | "text": "动态",
44 | "iconPath": "img/favorite.png",
45 | "selectedIconPath": "img/favorite1.png"
46 | },
47 | {
48 | "pagePath": "pages/msg/index",
49 | "text": "消息",
50 | "iconPath": "img/comments.png",
51 | "selectedIconPath": "img/comments1.png"
52 | },
53 | {
54 | "pagePath": "pages/my/index",
55 | "text": "我的",
56 | "iconPath": "img/account.png",
57 | "selectedIconPath": "img/account1.png"
58 | }
59 | ]
60 | },
61 | "networkTimeout": {
62 | "request": 10000,
63 | "downloadFile": 10000
64 | },
65 | "debug": true,
66 | "permission": {
67 | "scope.userLocation": {
68 | "desc": "你的位置信息将用于小程序位置接口的效果展示"
69 | }
70 | },
71 | "sitemapLocation": "sitemap.json"
72 | }
--------------------------------------------------------------------------------
/pages/my/list.wxml:
--------------------------------------------------------------------------------
1 |
2 | {{errorMsg}}
3 |
4 |
5 | 没有记录
6 |
7 |
8 |
9 |
10 | {{item.start}} {{item.over}}
11 |
12 | {{item.tm}}
13 | 出发:{{item.date}} {{item.time}}
14 |
15 | {{item.type}}
16 | {{item.surplus}}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | 正在加载
27 |
28 |
29 | 没有更多了~
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | //app.js
2 | var util = require('utils/util.js');
3 | App({
4 |
5 | onLaunch: function () {
6 | var that = this;
7 | //小程序初始化先判断用户是否登录
8 | wx.checkSession({
9 | success: function(){
10 | wx.getStorage({
11 | key: 'sk',
12 | success: function(res) {
13 | var sk = res.data;
14 | util.req('user/vaild_sk', { "sk": sk }, function (data) {
15 | if (data.status == 1) {
16 | that.globalData.sk = sk;
17 | } else {
18 | that.login();
19 | return;
20 | }
21 | })
22 | },
23 | fail:function() {
24 | that.login();
25 | return;
26 | }
27 | })
28 |
29 | wx.getStorage({
30 | key: 'userInfo',
31 | success: function(res) {
32 | that.globalData.userInfo = res.data;
33 | },
34 | fail:function() {
35 | that.login();
36 | }
37 | });
38 | },
39 | fail: function(){
40 | //登录态过期
41 | that.login() //重新登录
42 | }
43 | })
44 |
45 | },
46 |
47 | login:function(){
48 |
49 | wx.reLaunch({
50 | url: '/pages/toLogin/toLogin'
51 | })
52 |
53 | } ,
54 |
55 | loginFail: function () {
56 | var that = this;
57 | // wx.showModal({
58 | // content: '登录失败,请允许获取用户信息,如不显示请删除小程序重新进入',
59 | // showCancel: false
60 | // });
61 | that.login();
62 | },
63 | setUserInfo:function(data){ //将用户信息缓存保存
64 | this.globalData.userInfo = data;
65 | wx.setStorage({
66 | key:"userInfo",
67 | data:data
68 | })
69 | },
70 | setSk:function(data){ //将用户信息缓存保存
71 | this.globalData.sk = data;
72 | wx.setStorage({
73 | key:"sk",
74 | data:data
75 | })
76 | },
77 | globalData:{
78 | userInfo:null,
79 | sk:null
80 | }
81 |
82 | })
--------------------------------------------------------------------------------
/pages/dynamic/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {{item.nickName}}
12 |
13 | {{item.content}}
14 |
15 |
16 |
17 |
18 | {{item.time}}
19 |
20 |
21 |
22 |
23 |
24 | {{comment.nickName}}回复{{comment.reply}}:{{comment.content}}
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
41 |
--------------------------------------------------------------------------------
/pages/msg/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | 评论
13 | {{data.comment}}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 赞
22 | {{data.zan}}
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | 系统消息
31 | {{data.notice}}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/pages/my/appointment.js:
--------------------------------------------------------------------------------
1 | var app = getApp();
2 | var util = require('../../utils/util.js');
3 |
4 | var sliderWidth = 96; // 需要设置slider的宽度,用于计算中间位置
5 | Page({
6 | data: {
7 | tabs: ["我是车主", "我是乘客"],
8 | activeIndex: 0,
9 | sliderOffset: 0,
10 | sliderLeft: 0
11 | },
12 | onLoad: function () {
13 | var that = this;
14 | wx.getSystemInfo({
15 | success: function (res) {
16 | that.setData({
17 | sliderLeft: (res.windowWidth / that.data.tabs.length - sliderWidth) / 2,
18 | sliderOffset: res.windowWidth / that.data.tabs.length * that.data.activeIndex
19 | });
20 | }
21 | });
22 | },
23 | tabClick: function (e) {
24 | this.setData({
25 | sliderOffset: e.currentTarget.offsetLeft,
26 | activeIndex: e.currentTarget.id
27 | });
28 | },
29 | onShow:function(){
30 | this.getPassenger();
31 | this.getMy();
32 | },
33 | tel:function(e){
34 | wx.makePhoneCall({
35 | phoneNumber: e.target.dataset.phone
36 | })
37 | },
38 | getPassenger: function () {
39 | var that = this;
40 | util.req('appointment/getPassenger',{sk:app.globalData.sk},function(data){
41 | if(data.status == 1){
42 | var list = data.data;
43 | var arr = new Array();
44 | list.forEach(function (item) {
45 | var status = item.status;
46 | var phone = item.phone;
47 | if (item.status == 0 && (new Date().getTime()) > (item.time * 1000)) {
48 | var status = 3;
49 | var phone = false;
50 | }
51 | arr.push({
52 | departure: ((item.departure).split('市')[1]).replace(/([\u4e00-\u9fa5]+[县区]).+/, '$1'),
53 | destination: ((item.destination).split('市')[1]).replace(/([\u4e00-\u9fa5]+[县区]).+/, '$1'),
54 | time: util.formatTime(new Date(item.time * 1000)),
55 | status: status,
56 | id:item.id,
57 | phone: phone
58 | })
59 | })
60 | that.setData({ 'Passenger': arr});
61 | }
62 | })
63 | },
64 | getMy: function () {
65 | var that = this;
66 | util.req('appointment/my', { sk: app.globalData.sk }, function (data) {
67 | if (data.status == 1) {
68 | var list = data.data;
69 | that.setData({my:list});
70 | }
71 | })
72 | }
73 | });
--------------------------------------------------------------------------------
/pages/my/mydyn.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {{item.nickName}}
12 |
13 | {{item.content}}
14 |
15 |
16 |
17 |
18 | {{item.time}}删除
19 |
20 |
21 |
22 |
23 |
24 | {{comment.nickName}}回复{{comment.reply}}:{{comment.content}}
25 |
26 |
27 |
28 |
29 |
30 |
31 | 没有记录
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
42 |
--------------------------------------------------------------------------------
/pages/my/appointment.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{item}}
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | {{item.name}}({{item.phone}})
18 | 人数:{{item.surplus}}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | {{item.departure}} -> {{item.destination}}
30 | 出发时间:{{item.time}}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/pages/dynamic/add.js:
--------------------------------------------------------------------------------
1 | // pages/comment/index.js
2 | var app = getApp();
3 | var util = require('../../utils/util.js');
4 | Page({
5 | data: {
6 | files: [],
7 | content:'',
8 | gender:1
9 | },
10 | chooseImage: function (e) {
11 | var that = this;
12 | wx.chooseImage({
13 | sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
14 | sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
15 | success: function (res) {
16 | // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
17 | res.tempFilePaths.forEach(function(item){
18 | wx.uploadFile({
19 | url: util.baseURL + 'api/upload',
20 | filePath: item,
21 | name: 'file',
22 | formData:{
23 | 'user': app.globalData.userInfo.id
24 | },
25 | success: function(res){
26 | var data = JSON.parse(res.data);
27 | console.log(data);
28 | if(data.status == 1){
29 | that.setData({
30 | files: that.data.files.concat(data.data)
31 | });
32 | util.clearError(that);
33 | }else{
34 | console.log(data.msg);
35 | util.isError(data.msg, that);
36 | }
37 | },
38 | fail:function(){
39 | util.isError('图片上传失败', that);
40 | }
41 | })
42 | })
43 | }
44 | })
45 | },
46 | bindinput: function(e) {
47 | this.setData({content:e.detail.value});
48 | },
49 | previewImage: function(e){
50 | wx.previewImage({
51 | current: e.currentTarget.id, // 当前显示图片的http链接
52 | urls: this.data.files // 需要预览的图片http链接列表
53 | })
54 | },
55 | bindfocus:function(){
56 | util.clearError(this);
57 | },
58 | submit:function(){
59 | var that = this;
60 | var content = that.data.content;
61 | //console.log(content);return false;
62 | if(content == '' && ((that.data.files).length == 0)){
63 | util.isError('请输入内容或者至少选择一张图片', that);
64 | return false;
65 | }
66 | util.req('dynamic/add',{
67 | 'content':content,
68 | 'img':JSON.stringify(that.data.files),
69 | 'sk':app.globalData.sk
70 | },function(data){
71 | if(data.status == 1){
72 | wx.navigateBack({
73 | delta: 1
74 | })
75 | }
76 | })
77 |
78 |
79 |
80 | }
81 | })
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # pinche_xcx
2 |
3 | [](https://github.com/vincenth520/pinche_xcx/stargazers)
4 | [](https://github.com/vincenth520/pinche_xcx/network)
5 | [](https://github.com/vincenth520/pinche_xcx/issues)
6 | [](https://github.com/vincenth520/pinche_xcx/releases)
7 | [](https://raw.githubusercontent.com/vincenth520/pinche_xcx/master/LICENSE)
8 |
9 | ## 项目说明
10 |
11 | 寻车,达成,寻同路人,拼车出行,绿色环保,本项目的目的是为了方便同程出行的用户,车主乘客自主发布拼车信息,并实现自能预约通知,使拼车更加方便快捷。
12 |
13 | 如果您使用的无appid测试,项目将无法正常登陆,所以如果您希望完全正常使用请添加appid
14 |
15 | `因涉及到账号资质问题,此小程序并没有上线`
16 |
17 | 此源码仅可用作学习和交流,请勿用作商业用途及销售获利
18 |
19 |
20 | - 前端代码地址:[https://github.com/vincenth520/pinche_xcx](https://github.com/vincenth520/pinche_xcx)
21 | - 后端代码地址:[https://github.com/vincenth520/pinche_xcx_data](https://github.com/vincenth520/pinche_xcx_data)
22 |
23 |
24 |
25 | ## 项目截图
26 |
27 | [点击查看项目截图](http://cloud.video.taobao.com/play/u/1798224346/p/1/e/6/t/1/50014580198.mp4)
28 |
29 |
30 | ## 使用教程(无需后台版本)
31 | 修改utils/utils.js
32 | ```
33 | var wxAppinfo = {
34 | 'name': '同城拼车', //登录页标题
35 | 'logo': 'https://wx.qlogo.cn/mmhead/Q3auHgzwzM41GbicIwic6JOHzehVqd3OubV4GmEQA67KRXyoZ3Y6maHg/0' //登录页logo
36 | };
37 |
38 | //修改成你的appid及appsecret
39 | var AppConf = { 'appid': 'wx0aa456241abc9e8e', 'appsecret':'cb10ea69158ef5c786c9e39cf6ea478f'};
40 |
41 | ```
42 |
43 | ## 相关文档
44 |
45 | - [完整配置免费版拼车小程序](https://github.com/vincenth520/pinche_xcx/wiki/%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E5%85%8D%E8%B4%B9%E7%89%88%E6%8B%BC%E8%BD%A6%E5%B0%8F%E7%A8%8B%E5%BA%8F)
46 | - [拼车小程序无需后台的搭建示例](https://github.com/vincenth520/pinche_xcx/wiki/%E6%8B%BC%E8%BD%A6%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%97%A0%E9%9C%80%E5%90%8E%E5%8F%B0%E7%9A%84%E6%90%AD%E5%BB%BA%E7%A4%BA%E4%BE%8B)
47 | - [关于配置同城拼车微信小程序后端](https://github.com/vincenth520/pinche_xcx_data/wiki/%E5%85%B3%E4%BA%8E%E9%85%8D%E7%BD%AE%E5%90%8C%E5%9F%8E%E6%8B%BC%E8%BD%A6%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%90%8E%E7%AB%AF)
48 | - [关于登录已过期的调试找错方法](https://github.com/vincenth520/pinche_xcx_data/wiki/%E5%85%B3%E4%BA%8E%E7%99%BB%E5%BD%95%E5%B7%B2%E8%BF%87%E6%9C%9F%E7%9A%84%E8%B0%83%E8%AF%95%E6%89%BE%E9%94%99%E6%96%B9%E6%B3%95)
49 |
50 |
51 |
52 |
53 | ## 有问题
54 | 你可以用以下联系方式找到我(`不接受问问题,有问题请直接提交`[issue](https://github.com/vincenth520/pinche_xcx/issues))
55 |
56 |
57 | - email[[1091986039@qq.com](mailto:1091986039@qq.com)]
58 | - qq[1091986039]
59 | - wechat[1091986039]
60 |
61 |
62 |
--------------------------------------------------------------------------------
/pages/my/fav.js:
--------------------------------------------------------------------------------
1 | // pages/my/list.js
2 | var app = getApp();
3 | var util = require('../../utils/util.js');
4 | var page = 1;
5 | var list = new Array();
6 | Page({
7 | data:{
8 | tabs: ["全部", "车找人", "人找车"]
9 | },
10 | del:function(e){
11 | var that = this;
12 | var currentTarget = e.currentTarget.id;
13 | wx.showModal({
14 | title: '提示',
15 | content: '取消收藏?',
16 | success: function(res) {
17 | if (res.confirm) {
18 | util.req('fav/delFav',{sk:app.globalData.sk,iid:list[currentTarget].id},function(data){
19 | if(data.status == 1){
20 | list.splice(currentTarget,1);
21 | that.setData({list:list});
22 | wx.showToast({
23 | title: '取消收藏成功',
24 | icon: 'success',
25 | duration: 2000
26 | })
27 | }else{
28 | util.isError('取消收藏失败,请重试', that);
29 | return false;
30 | }
31 | })
32 | }
33 | }
34 | })
35 | return false;
36 | },
37 | onReachBottom:function(){
38 | if(!this.data.nomore){
39 | page++;
40 | this.getList();
41 | }
42 | },
43 | getList(){
44 | var that = this;
45 | util.req('fav/myFav',{sk:app.globalData.sk,page:page},function(data){
46 | if(data.data == null){
47 | if(page == 1){
48 | console.log(page) ;
49 | that.setData({'isnull':true});
50 | }
51 | that.setData({nomore:true});
52 | return false;
53 | }
54 |
55 | if(page == 1){
56 | list = new Array();
57 | }
58 |
59 | var surp = new Array('','空位','人');
60 | data.data.forEach(function(item){
61 | var obj = {
62 | start:((item.departure).split('市')[1]).replace(/([\u4e00-\u9fa5]+[县区]).+/,'$1'),
63 | over:((item.destination).split('市')[1]).replace(/([\u4e00-\u9fa5]+[县区]).+/,'$1'),
64 | type:that.data.tabs[item.type],
65 | tp:item.type,
66 | time:util.formatTime(new Date(item.time*1000)),
67 | surplus:item.surplus+surp[item.type],
68 | see:item.see,
69 | gender:item.gender,
70 | url:'/pages/info/index?id='+item.id,
71 | tm:util.getDateDiff(item.time*1000),
72 | id:item.id,
73 | fad:item.fad
74 | };
75 | list.push(obj);
76 | })
77 | that.setData({list:list});
78 | })
79 | },
80 | onPullDownRefresh: function(){
81 | page = 1;
82 | this.getList();
83 | wx.stopPullDownRefresh();
84 | },
85 | onShow:function(){
86 | page = 1;
87 | this.getList();
88 | }
89 | })
--------------------------------------------------------------------------------
/pages/dynamic/index.js:
--------------------------------------------------------------------------------
1 | var app = getApp();
2 | var util = require('../../utils/util.js');
3 | var page = 1;
4 | Page({
5 | data:{
6 | seecomment:false,
7 | reply:''
8 | },
9 | add:function(){
10 | wx.navigateTo({
11 | url: '/pages/dynamic/add'
12 | })
13 | },
14 | previeimg:function(e){
15 | var that = this;
16 | console.log(e);
17 | wx.previewImage({
18 | current: e.currentTarget.id,
19 | urls: that.data.list[e.currentTarget.dataset.name].img
20 | })
21 | },
22 | getList:function(){
23 | var that = this;
24 | util.req('dynamic/getlist',{page:page},function(data){
25 | var list = data.list;
26 | if (page == 1) {
27 | var arr = new Array();
28 | }else{
29 | var arr = that.data.list;
30 | }
31 |
32 | list.forEach(function(item){
33 | var li = {
34 | avatarUrl:item.avatarUrl,
35 | content:item.content,
36 | id:item.id,
37 | img:JSON.parse(item.img),
38 | nickName:item.nickName,
39 | time:util.getDateBiff(item.time*1000),
40 | zan:item.zan,
41 | comments: item.comment
42 | }
43 | arr.push(li);
44 | })
45 | that.setData({list:arr});
46 | })
47 | },
48 | onShow:function(options){
49 | this.getList();
50 | },
51 | onReachBottom:function(){
52 | if(!this.data.nomore){
53 | page++;
54 | this.getList();
55 | }
56 | },
57 | seecomment:function(e){
58 | console.log(e);
59 | var reply = (!e.target.dataset.name)?'':'回复'+e.target.dataset.name;
60 | this.setData({
61 | 'reply':reply,
62 | 'seecomment':true,
63 | 'nowid':e.currentTarget.id
64 | });
65 | },
66 | comment:function(e){
67 | var that = this;
68 | var content = e.detail.value;
69 | if(content == ''){
70 | return false;
71 | }
72 | util.req('comment/add',{
73 | 'iid':that.data.list[that.data.nowid].id,
74 | 'reply':(that.data.reply).replace('回复',''),
75 | 'type':'dynamic',
76 | 'content':e.detail.value,
77 | 'sk':app.globalData.sk
78 | },function(data){
79 | if(data.status == 1){
80 | var list = that.data.list;
81 | list[that.data.nowid].comments = (list[that.data.nowid].comments) ? list[that.data.nowid].comments:(new Array());
82 | list[that.data.nowid].comments.unshift({id: data.id, iid: that.data.list[that.data.nowid].id, content: e.detail.value, nickName: app.globalData.userInfo.nickName,reply:(that.data.reply).replace('回复','')})
83 | }
84 | that.setData({list:list});
85 | })
86 | },
87 | hidecomment:function(){
88 | this.setData({'seecomment':false});
89 | },
90 | onPullDownRefresh: function(){
91 | page = 1;
92 | this.getList();
93 | wx.stopPullDownRefresh();
94 | }
95 | })
--------------------------------------------------------------------------------
/pages/comment/index.js:
--------------------------------------------------------------------------------
1 | // pages/comment/index.js
2 | var app = getApp();
3 | var util = require('../../utils/util.js');
4 | Page({
5 | data: {
6 | files: [],
7 | content:'',
8 | gender:1
9 | },
10 | chooseImage: function (e) {
11 | var that = this;
12 | wx.chooseImage({
13 | sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
14 | sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
15 | success: function (res) {
16 | // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
17 | res.tempFilePaths.forEach(function(item){
18 | wx.uploadFile({
19 | url: util.baseURL + 'api/upload',
20 | filePath: item,
21 | name: 'file',
22 | formData:{
23 | 'user': app.globalData.userInfo.id
24 | },
25 | success: function(res){
26 | var data = JSON.parse(res.data);
27 | console.log(data);
28 | if(data.status == 1){
29 | that.setData({
30 | files: that.data.files.concat(data.data)
31 | });
32 | util.clearError(that);
33 | }else{
34 | console.log(data.msg);
35 | util.isError(data.msg, that);
36 | }
37 | },
38 | fail:function(){
39 | util.isError('图片上传失败', that);
40 | }
41 | })
42 | })
43 | }
44 | })
45 | },
46 | bindinput: function(e) {
47 | this.setData({content:e.detail.value});
48 | },
49 | previewImage: function(e){
50 | wx.previewImage({
51 | current: e.currentTarget.id, // 当前显示图片的http链接
52 | urls: this.data.files // 需要预览的图片http链接列表
53 | })
54 | },
55 | bindfocus:function(){
56 | util.clearError(this);
57 | },
58 | submit:function(){
59 | var that = this;
60 | var content = that.data.content;
61 | //console.log(content);return false;
62 | if(content == '' && ((that.data.files).length == 0)){
63 | util.isError('请输入内容或者至少选择一张图片', that);
64 | return false;
65 | }
66 | util.req('comment/add',{
67 | 'iid':that.data.data.id,
68 | 'reply':(that.data.data.reply == '楼主')?'':that.data.data.reply,
69 | 'type':'info',
70 | 'content':content,
71 | 'img':JSON.stringify(that.data.files),
72 | 'sk':app.globalData.sk
73 | },function(data){
74 | if(data.status == 1){
75 | wx.navigateBack({
76 | delta: 1
77 | })
78 | }
79 | })
80 |
81 |
82 |
83 | },
84 | onLoad:function(options){
85 | this.setData({
86 | 'data.id':options.id,
87 | 'data.reply':(options.reply)?options.reply:'楼主',
88 | });
89 | }
90 | })
--------------------------------------------------------------------------------
/pages/my/list.js:
--------------------------------------------------------------------------------
1 | // pages/my/list.js
2 | var app = getApp();
3 | var util = require('../../utils/util.js');
4 | var page = 1;
5 | var list = new Array();
6 | Page({
7 | data:{
8 | tabs: ["全部", "车找人", "人找车"]
9 | },
10 | del:function(e){
11 | var that = this;
12 | var currentTarget = e.currentTarget.id;
13 | wx.showModal({
14 | title: '提示',
15 | content: '确定删除?',
16 | success: function(res) {
17 | if (res.confirm) {
18 | util.req('info/del',{sk:app.globalData.sk,id:list[currentTarget].id},function(data){
19 | if(data.status == 1){
20 | list.splice(currentTarget,1);
21 | that.setData({list:list});
22 | wx.showToast({
23 | title: '删除成功',
24 | icon: 'success',
25 | duration: 2000
26 | })
27 | }else{
28 | util.isError('删除失败,请重试', that);
29 | return false;
30 | }
31 | })
32 | }
33 | }
34 | })
35 | return false;
36 | },
37 | edit:function(e){
38 | var currentTarget = e.currentTarget.id;
39 | console.log('/pages/info/add?id='+list[currentTarget].id);
40 | wx.navigateTo({
41 | url: '/pages/info/edit?id='+list[currentTarget].id,
42 | complete:function(res){
43 | console.log(res)
44 | }
45 | })
46 | },
47 | onReachBottom:function(){
48 | if(!this.data.nomore){
49 | page++;
50 | this.getList();
51 | }
52 | },
53 | getList(){
54 | var that = this;
55 | util.req('info/mylist',{sk:app.globalData.sk,page:page},function(data){
56 | if(data.data == null){
57 | if(page == 1){
58 | console.log(page) ;
59 | that.setData({'isnull':true});
60 | }
61 | that.setData({nomore:true});
62 | return false;
63 | }
64 |
65 | if(page == 1){
66 | list = new Array();
67 | }
68 |
69 | var surp = new Array('','空位','人');
70 | data.data.forEach(function(item){
71 | var obj = {
72 | start:((item.departure).split('市')[1]).replace(/([\u4e00-\u9fa5]+[县区]).+/,'$1'),
73 | over:((item.destination).split('市')[1]).replace(/([\u4e00-\u9fa5]+[县区]).+/,'$1'),
74 | type:that.data.tabs[item.type],
75 | tp:item.type,
76 | time:util.formatTime(new Date(item.time*1000)),
77 | surplus:item.surplus+surp[item.type],
78 | see:item.see,
79 | gender:item.gender,
80 | url:'/pages/info/index?id='+item.id,
81 | tm:util.getDateDiff(item.time*1000),
82 | id:item.id
83 | };
84 | list.push(obj);
85 | })
86 | that.setData({list:list});
87 | })
88 | },
89 | onPullDownRefresh: function(){
90 | page = 1;
91 | this.getList();
92 | wx.stopPullDownRefresh();
93 | },
94 | onShow:function(){
95 | page = 1;
96 | this.getList();
97 | }
98 | })
--------------------------------------------------------------------------------
/pages/my/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{userInfo.nickName}}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | 发布记录
20 | {{infoCount}}
21 |
22 |
23 |
24 |
25 |
26 | 我的预约
27 | {{appointmentCount}}
28 |
29 |
30 |
31 |
32 |
33 | 我的收藏
34 |
35 |
36 |
37 |
38 |
39 |
40 | 我的动态
41 |
42 |
43 |
44 |
45 |
46 |
47 | 个人信息
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/pages/appointment/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{errorMsg}}
4 |
5 |
60 |
61 |
--------------------------------------------------------------------------------
/donate.md:
--------------------------------------------------------------------------------
1 | # 同城拼车小程序捐赠计划
2 |
3 | ## 起因
4 | 由于太多用户都是完全没有一点编程基础的,经常进群问的都是非常基础的问题,完全没有搭建上线的能力,我也没有太多时间回答这么多基础的问题
5 |
6 | ## 目的
7 | 支持程序的后期开发,以及服务器的调试,及人工开发成本
8 |
9 | ## 版本对比
10 |
11 |
12 | | 版本类型 |
13 | 免费版本 |
14 | 付费版本 |
15 |
16 |
17 | | 授权与服务价格(人民币) |
18 | - |
19 | ¥599 |
20 |
21 |
22 | | 免费升级期限 |
23 | × |
24 | 无期限 |
25 |
26 |
27 | | 技术支持期限 |
28 | × |
29 | 一年 |
30 |
31 |
32 | | 提供商业授权 |
33 | × |
34 | √ |
35 |
36 |
37 | |
38 |
39 |
40 | | 二次开发技术咨询 |
41 | × |
42 | √ |
43 |
44 |
45 | | 系统故障排除 |
46 | × |
47 | √ |
48 |
49 |
50 | | 代安装、升级服务 |
51 | × |
52 | 付费安装 |
53 |
54 |
55 | | 运行环境优化 |
56 | × |
57 | 付费优化 |
58 |
59 |
60 | | 版本区别 |
61 |
62 |
63 | | 后端框架 |
64 | thinkphp3.2 |
65 | laravel5.5 |
66 |
67 |
68 | | 后台管理 |
69 | × |
70 | √ |
71 |
72 |
73 | | 车主认证 |
74 | × |
75 | √ |
76 |
77 |
78 | | 手机认证 |
79 | × |
80 | √ |
81 |
82 |
83 | | 广告投放 |
84 | × |
85 | √ |
86 |
87 |
88 | | ... |
89 | × |
90 | √ |
91 |
92 |
93 |
94 |
95 |
96 | ## 付款通道
97 |
98 | | PayPal | 支付宝 | 微信 |
99 | |:----------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------:|:---------------------------------------------------------------------------:|
100 | | [
Donate via PayPal ](https://paypal.me/vincenth520) |  |  |
101 |
102 | ## 付费项目地址
103 |
104 | - 前端:[https://github.com/vincenth520/pinche_xcx_vip](https://github.com/vincenth520/pinche_xcx_vip)
105 | - 后端:[https://github.com/vincenth520/pinche_xcx_data_vip](https://github.com/vincenth520/pinche_xcx_data_vip)
106 |
107 |
108 | ## 联系
109 | - email[[1091986039@qq.com](mailto:1091986039@qq.com)]
110 | - qq[1091986039]
111 | - wechat[1091986039]
--------------------------------------------------------------------------------
/pages/my/info.wxml:
--------------------------------------------------------------------------------
1 |
2 | {{errorMsg}}
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
56 |
57 |
58 |
59 |
60 |
61 |
65 |
66 | {{item}}
67 |
68 |
69 | {{item}}
70 |
71 |
72 | {{item}}
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/pages/info/index.wxss:
--------------------------------------------------------------------------------
1 | .page{background: #f5f5f5;}
2 | .header{border-bottom:1px solid #eee;height:130rpx;background: #fff;padding:5px 10px 0px 10px;}
3 | .head{width: 100rpx;height: 100rpx;border-radius: 50%;overflow: hidden;border: 1px solid #f4de3b;float: left;margin:5rpx 10rpx;}
4 | .head image{width:100%;height:100%;}
5 | .username{float:left;line-height: 110rpx;font-size:.75rem;}
6 | .icon-add{width:20rpx;height: 20rpx;}
7 | .add{float:right;}
8 | .add button{background: #000;color:#fff;width: 120rpx;font-size:.82rem;height:50rpx;padding:10rpx;line-height: 30rpx;border-radius: 10rpx;margin-top: 40rpx;}
9 |
10 | .content{clear:both;margin-top: 20rpx;background: #fff;padding:5px 10px 40px 10px;}
11 | .p{position: relative;}
12 | .icon{width:50rpx;height: 50rpx;margin:10rpx;position:absolute}
13 | .p text{margin-left:60rpx;font-size:.9rem;}
14 | .icon-tel{width:60rpx;height: 60rpx;margin-left:50rpx;}
15 | .contact text{font-size:.94rem;line-height: 80rpx;margin: 20rpx;}
16 | .tit{color:#000;}
17 | .icon-gender{width:30rpx;height: 30rpx;top: 16rpx;}
18 | .tocomment{width:100rpx;float:left}
19 |
20 | .footer{position: fixed;
21 | bottom: 0;
22 | left: 0;
23 | z-index: 1001;
24 | display: table;
25 | width: 100%;
26 | height: 60rpx;
27 | padding: 0.1375rem 0;
28 | background-color: #f5f5f5;
29 | border-top: solid #d7d7d7 0.0625rem;}
30 | .comment{display: block;
31 | margin: 0 0.25rem 0 0.5rem;
32 | padding: 0.2375rem;
33 | color: #888;
34 | font-size:.70rem;
35 | background-color: #fff;
36 | border: solid #e9e9e9 1px;
37 | border-radius: 0.125rem;width:550rpx;float: left}
38 |
39 | .footer image{width:40rpx;height: 40rpx;margin:10rpx;}
40 | .ft-icon{position: relative;}
41 | .msg{position: absolute;right:100rpx}
42 | .shoucang{position: absolute;right:10rpx;}
43 | .comnum{position: absolute;right:80rpx;margin-left:80rpx;color:darkred}
44 | .remark{margin: 20rpx; font-size: .78rem;}
45 |
46 | #comment_list{margin-top:10px;background: #fff;padding-bottom: 60px;}
47 | #comment_list .comment_list_header{font-size:.78rem;padding:5px 10px;border:1px solid #eee;}
48 | #comment_list .list .item .left{width:140rpx;height:140rpx;float:left;}
49 | #comment_list .list .item .left image{width:80rpx;height:80rpx;border-radius: 50%;margin:10px;border:1px solid #f4de3b}
50 | #comment_list .list .item{border-bottom:1px solid #eee;overflow:hidden;}
51 | #comment_list .list .item .com_main{width:600rpx;float:left;margin-top:40rpx;font-size:.8rem;padding-bottom: 10rpx;}
52 | #comment_list .list .item .com_main .text{color:#222;margin-top:10rpx;}
53 | #comment_list .list .item .com_main .info{padding: 5rpx;}
54 | #comment_list .list .item .com_main .info text{font-size: .7rem!important;float:left;}
55 | #comment_list .list .item .com_main .info image{width:16px;height:16px;position:absolute;left:-40rpx;top:6rpx;}
56 | #comment_list .list .item .com_main .info .zview{position: relative; min-width:15px;}
57 | #comment_list .list .item .com_main .info view{float: right;margin:0px 30rpx;}
58 | #comment_list .list .item .com_main image{max-width: 98%;margin-right:2%;}
59 | #comment_list .list{min-height: 300px;}
60 | #comment_list .list .nocomment{text-align: center;line-height: 200px;}
61 | #comment_list .list .reply{background: #f5f5f5;width:90%;padding:5px 2%;margin-left:3px;color:#000;}
62 |
63 | .back{position: fixed;top:70px;left:0px;background: rgba(0, 0, 0, 0.5);padding:9px 20px 5px 10px;border-bottom-right-radius:2em;border-top-right-radius:2em;}
64 | .back image{width:20px;height: 20px;}
65 | .weui-input{overflow: hidden}
--------------------------------------------------------------------------------
/pages/my/mydyn.js:
--------------------------------------------------------------------------------
1 | var app = getApp();
2 | var util = require('../../utils/util.js');
3 | var page = 1;
4 | Page({
5 | data: {
6 | seecomment: false,
7 | reply: ''
8 | },
9 | add: function () {
10 | wx.navigateTo({
11 | url: '/pages/dynamic/add'
12 | })
13 | },
14 | previeimg: function (e) {
15 | var that = this;
16 | console.log(e);
17 | wx.previewImage({
18 | current: e.currentTarget.id,
19 | urls: that.data.list[e.currentTarget.dataset.name].img
20 | })
21 | },
22 | getList: function () {
23 | var that = this;
24 | util.req('dynamic/getList', { page: page, sk: app.globalData.sk }, function (data) {
25 | var list = data.list;
26 | if (page == 1) {
27 | var arr = new Array();
28 | } else {
29 | var arr = that.data.list;
30 | }
31 |
32 | list.forEach(function (item) {
33 | var li = {
34 | avatarUrl: item.avatarUrl,
35 | content: item.content,
36 | id: item.id,
37 | img: JSON.parse(item.img),
38 | nickName: item.nickName,
39 | time: util.getDateBiff(item.time * 1000),
40 | zan: item.zan,
41 | comments: item.comment
42 | }
43 | arr.push(li);
44 | })
45 | that.setData({ list: arr });
46 | })
47 | },
48 | del: function (e) {
49 | var that = this;
50 | wx.showModal({
51 | title: '删除提示',
52 | content: '确定删除?',
53 | success: function (res) {
54 | if (res.confirm) {
55 | var list = that.data.list;
56 | var id = list[e.target.dataset.id].id;
57 | util.req('dynamic/del',{id:id,sk:app.globalData.sk},function(data){
58 | if(data.status == '1'){
59 | list.splice(e.target.dataset.id,1);
60 | console.log(list);
61 | that.setData({list:list});
62 | wx.showToast({
63 | title: '删除成功',
64 | })
65 | }else{
66 | util.isError(data.msg,that);
67 | }
68 | })
69 | }
70 | }
71 | })
72 | },
73 | onLoad: function (options) {
74 | this.getList();
75 | },
76 | onReachBottom: function () {
77 | if (!this.data.nomore) {
78 | page++;
79 | this.getList();
80 | }
81 | },
82 | seecomment: function (e) {
83 | console.log(e);
84 | var reply = (!e.target.dataset.name) ? '' : '回复' + e.target.dataset.name;
85 | this.setData({
86 | 'reply': reply,
87 | 'seecomment': true,
88 | 'nowid': e.currentTarget.id
89 | });
90 | },
91 | comment: function (e) {
92 | var that = this;
93 | var content = e.detail.value;
94 | if (content == '') {
95 | return false;
96 | }
97 | util.req('comment/add', {
98 | 'iid': that.data.list[that.data.nowid].id,
99 | 'reply': (that.data.reply).replace('回复', ''),
100 | 'type': 'dynamic',
101 | 'content': e.detail.value,
102 | 'sk': app.globalData.sk
103 | }, function (data) {
104 | if (data.status == 1) {
105 | var list = that.data.list;
106 | list[that.data.nowid].comments.unshift({ id: data.id, iid: that.data.list[that.data.nowid].id, content: e.detail.value, nickName: app.globalData.userInfo.nickName, reply: (that.data.reply).replace('回复', '') })
107 | }
108 | that.setData({ list: list });
109 | })
110 | },
111 | hidecomment: function () {
112 | this.setData({ 'seecomment': false });
113 | },
114 | onPullDownRefresh: function () {
115 | page = 1;
116 | this.getList();
117 | wx.stopPullDownRefresh();
118 | }
119 | })
--------------------------------------------------------------------------------
/pages/info/edit.js:
--------------------------------------------------------------------------------
1 | // pages/info/add.js
2 | var util = require('../../utils/util.js');
3 | var app = getApp();
4 | var today = util.formatTime(new Date()).split(' ')[0];
5 | var maxday = util.formatTime(new Date((new Date()).getTime()+(1000*60*60*24*62))).split(' ')[0];
6 | Page({
7 | data:{
8 | sex: ['请选择性别','男','女'],
9 | type:1,
10 | gender:0,
11 | date:today,
12 | start:today,
13 | end:maxday,
14 | time:'请选择时间',
15 | types:[{name: '1', value: '车找人',checked: true},{name: '2', value: '人找车'}],
16 | Surpluss:['请选择',1,2,3,4,5,6],
17 | surplus:0,
18 | isAgree: false,
19 | vehicle:'',
20 | departure:'出发地',
21 | destination:'目的地'
22 | },
23 | setSex:function(e){
24 | this.setData({'data.gender':e.detail.value})
25 | },
26 | bindDateChange:function(e){
27 | this.setData({
28 | 'data.date': e.detail.value
29 | })
30 | },
31 | bindTimeChange: function (e) {
32 | this.setData({
33 | 'data.time': e.detail.value
34 | })
35 | },
36 | setsurplus:function(e){
37 | this.setData({'data.surplus':e.detail.value})
38 | },
39 | bindAgreeChange: function (e) {
40 | this.setData({
41 | isAgree: !!e.detail.value.length
42 | });
43 | },
44 | formSubmit:function(e){
45 | var data = e.detail.value;
46 | var that = this;
47 | console.log(data);
48 |
49 | if(data.name == ''){
50 | util.isError('请输入姓名', that);
51 | return false;
52 | }
53 | if(data.gender == 0){
54 | util.isError('请选择性别', that);
55 | return false;
56 | }
57 |
58 | if(data.phone == ''){
59 | util.isError('请输入手机号码', that);
60 | return false;
61 | }
62 |
63 | if(!(/^1[34578]\d{9}$/.test(data.phone))){
64 | util.isError('手机号码错误', that);
65 | return false;
66 | }
67 | if(that.data.data.departure == '出发地'){
68 | util.isError('请选择出发地', that);
69 | return false;
70 | }
71 | if(that.data.data.destination == '目的地'){
72 | util.isError('请选择目的地', that);
73 | return false;
74 | }
75 | if(data.time == '请选择时间'){
76 | util.isError('请选择出发时间', that);
77 | return false;
78 | }
79 | if(data.surplus == '0'){
80 | var arr = new Array('','剩余空位','乘车人数');
81 | util.isError('请选择'+arr[data.type], that);
82 | return false;
83 | }
84 |
85 |
86 | if(!data.isAgree[0]){
87 | util.isError('请阅读并同意条款',that);
88 | return false;
89 | }
90 | data.sk = app.globalData.sk;
91 | data.departure = that.data.data.departure;
92 | data.destination = that.data.data.destination;
93 | data.id = that.data.data.id;
94 | util.req('info/add',data,function(data){
95 | if(data.status == 1){
96 | wx.redirectTo({
97 | url: '/pages/info/index?id='+data.info
98 | });
99 | }else{
100 | util.isError(data.msg,that);
101 | return false;
102 | }
103 | })
104 | util.clearError(that);
105 | },
106 | sexDeparture:function(){
107 | var that = this;
108 | wx.chooseLocation({
109 | success:function(res){
110 | that.setData({
111 | 'data.departure':res.address
112 | })
113 | }
114 | })
115 | },
116 | sexDestination:function(){
117 | var that = this;
118 | wx.chooseLocation({
119 | success:function(res){
120 | that.setData({
121 | 'data.destination':res.address
122 | })
123 | }
124 | })
125 | },
126 | onLoad:function(options){
127 | var that = this;
128 | util.req('info/index',{id:options.id},function(data){
129 | var time = util.formatTime(new Date(data.data.time*1000)).split(' ')[1];
130 | data.data.time = time;
131 | that.setData({data:data.data});
132 | })
133 | }
134 | })
--------------------------------------------------------------------------------
/pages/msg/list.wxss:
--------------------------------------------------------------------------------
1 | #list,#list li,.po-hd,.post {
2 | overflow: hidden
3 | }
4 |
5 | .po-cmt,.post .list-img:nth-child(1),.time {
6 | float: left
7 | }
8 |
9 | #list li,.cmt-wrap,.r,.time {
10 | clear: both
11 | }
12 |
13 | #avt,#user-name {
14 | position: absolute
15 | }
16 |
17 | #bg {
18 | width: 100%
19 | }
20 |
21 | #user-name {
22 | text-align: right;
23 | right: 114px;
24 | bottom: 15px;
25 | color: #fff;
26 | font-weight: 700;
27 | font-size: 15px;
28 | text-shadow: 0 1px .5px #000
29 | }
30 |
31 | #share a,.btn {
32 | font-size: 14px
33 | }
34 |
35 | .btn,b {
36 | font-weight: 400
37 | }
38 |
39 | #share a,#share p,.btn {
40 | text-align: center
41 | }
42 |
43 | #avt {
44 | width: 74px;
45 | height: 74px;
46 | border: 1px solid #dbdbdb;
47 | right: 15px;
48 | bottom: -22px;
49 | padding: 1px;
50 | background-color: #fff
51 | }
52 |
53 | #list li,.po-hd {
54 | position: relative
55 | }
56 |
57 |
58 | #list li {
59 | line-height: 1.5;
60 | border-bottom: 1px solid #e2e2e2;
61 | margin-top: 15px;
62 | padding-bottom: 15px
63 | }
64 |
65 | #share a:nth-child(2),.ads,.po-avt {
66 | position: absolute
67 | }
68 |
69 | .ads {
70 | color: #999;
71 | right: 5px;
72 | top: 0
73 | }
74 | .post view{color:#000}
75 |
76 | .ads img {
77 | width: 10px;
78 | padding-left: 8px
79 | }
80 |
81 | .ad-link {
82 | color: #3b5384
83 | }
84 |
85 | .post .ad-link img {
86 | width: 11px;
87 | padding: 0;
88 | display: inline-block
89 | }
90 |
91 | .po-avt-wrap {
92 | padding-left: 10px
93 | }
94 |
95 | .po-avt {
96 | width: 40px;
97 | height: 40px;
98 | top: 0;
99 | left: 10px
100 | }
101 |
102 | .r {
103 | border-bottom: 8px solid #eee;
104 | border-left: 8px solid transparent;
105 | border-right: 8px solid transparent;
106 | width: 1px;
107 | margin-top: 5px;
108 | margin-left: 10px
109 | }
110 |
111 | .po-cmt {
112 | padding-left: 60px;
113 | padding-right: 10px;
114 | width: 100%;
115 | box-sizing: border-box
116 | }
117 |
118 | .po-name {
119 | color: #576b95
120 | }
121 |
122 | .post {
123 | color: #252525;
124 | padding-bottom: 10px
125 | }
126 |
127 | .post image {
128 | padding: 10px 5px 0 0;
129 | display: block;
130 | max-height: 130px;
131 | max-width: 130px
132 | }
133 |
134 |
135 | .post .list-img {
136 | width: 30%;
137 | max-height: 80px;
138 | max-width: 80px;
139 | padding-right: 5px;
140 | float: left;
141 | object-fit: cover
142 | }
143 |
144 | .post .list-img:last-child {
145 | padding-right: 0
146 | }
147 |
148 | .time {
149 | color: #b1b1b1;
150 | font-size: .7rem;
151 | }
152 |
153 | .c-icon {
154 | width: 20px;
155 | height: 14px;
156 | float: right
157 | }
158 |
159 | .cmt-wrap {
160 | width: 100%;
161 | background-color: #eee
162 | }
163 |
164 | .like {
165 | color: #576b95;
166 | padding: 5px 5px 3px 12px
167 | }
168 |
169 | .like image {
170 | width: 12px;
171 | padding-right: 5px
172 | }
173 |
174 | .cmt-list {
175 | color: #454545
176 | }
177 |
178 | .cmt-list view {
179 | padding-top: 3px;
180 | border-bottom: 1px solid #eee;
181 | padding: 5px 12px;
182 | }
183 |
184 | .cmt-list text {
185 | color: #3b5384
186 | }
187 |
188 | .list_item{margin:10px 0px;border-bottom:1px solid #eee;overflow:hidden;padding:10px 0px;position:relative}
189 |
190 | .add{position: fixed;bottom: 30px;right:30px;}
191 | .add image{width: 80rpx;height: 80rpx;}
192 |
193 | .comment{position: fixed;bottom:0;z-index:100000;background:#f5f5f5;width:100%;}
194 | .comment input{width:90%;margin:5px 5%;background: #fff;border:1px solid #eee;padding:10rpx;}
195 | .comment_hover{background:#eee;}
--------------------------------------------------------------------------------
/pages/dynamic/index.wxss:
--------------------------------------------------------------------------------
1 | #list,#list li,.po-hd,.post {
2 | overflow: hidden
3 | }
4 |
5 | .po-cmt,.post .list-img:nth-child(1),.time {
6 | float: left
7 | }
8 |
9 | #list li,.cmt-wrap,.r,.time {
10 | clear: both
11 | }
12 |
13 | #avt,#user-name {
14 | position: absolute
15 | }
16 |
17 | #bg {
18 | width: 100%
19 | }
20 |
21 | #user-name {
22 | text-align: right;
23 | right: 114px;
24 | bottom: 15px;
25 | color: #fff;
26 | font-weight: 700;
27 | font-size: 15px;
28 | text-shadow: 0 1px .5px #000
29 | }
30 |
31 | #share a,.btn {
32 | font-size: 14px
33 | }
34 |
35 | .btn,b {
36 | font-weight: 400
37 | }
38 |
39 | #share a,#share p,.btn {
40 | text-align: center
41 | }
42 |
43 | #avt {
44 | width: 74px;
45 | height: 74px;
46 | border: 1px solid #dbdbdb;
47 | right: 15px;
48 | bottom: -22px;
49 | padding: 1px;
50 | background-color: #fff
51 | }
52 |
53 | #list li,.po-hd {
54 | position: relative
55 | }
56 |
57 |
58 | #list li {
59 | line-height: 1.5;
60 | border-bottom: 1px solid #e2e2e2;
61 | margin-top: 15px;
62 | padding-bottom: 15px
63 | }
64 |
65 | #share a:nth-child(2),.ads,.po-avt {
66 | position: absolute
67 | }
68 |
69 | .ads {
70 | color: #999;
71 | right: 5px;
72 | top: 0
73 | }
74 | .post view{color:#000}
75 |
76 | .ads img {
77 | width: 10px;
78 | padding-left: 8px
79 | }
80 |
81 | .ad-link {
82 | color: #3b5384
83 | }
84 |
85 | .post .ad-link img {
86 | width: 11px;
87 | padding: 0;
88 | display: inline-block
89 | }
90 |
91 | .po-avt-wrap {
92 | padding-left: 10px
93 | }
94 |
95 | .po-avt {
96 | width: 40px;
97 | height: 40px;
98 | top: 0;
99 | left: 10px
100 | }
101 |
102 | .r {
103 | border-bottom: 8px solid #eee;
104 | border-left: 8px solid transparent;
105 | border-right: 8px solid transparent;
106 | width: 1px;
107 | margin-top: 5px;
108 | margin-left: 10px
109 | }
110 |
111 | .po-cmt {
112 | padding-left: 60px;
113 | padding-right: 10px;
114 | width: 100%;
115 | box-sizing: border-box
116 | }
117 |
118 | .po-name {
119 | color: #576b95
120 | }
121 |
122 | .post {
123 | color: #252525;
124 | padding-bottom: 10px
125 | }
126 |
127 | .post image {
128 | padding: 10px 5px 0 0;
129 | display: block;
130 | max-height: 130px;
131 | max-width: 130px
132 | }
133 |
134 |
135 | .post .list-img {
136 | width: 30%;
137 | max-height: 80px;
138 | max-width: 80px;
139 | padding-right: 5px;
140 | float: left;
141 | object-fit: cover
142 | }
143 |
144 | .post .list-img:last-child {
145 | padding-right: 0
146 | }
147 |
148 | .time {
149 | color: #b1b1b1;
150 | font-size: .7rem;
151 | }
152 |
153 | .c-icon {
154 | width: 20px;
155 | height: 14px;
156 | float: right
157 | }
158 |
159 | .cmt-wrap {
160 | width: 100%;
161 | background-color: #eee
162 | }
163 |
164 | .like {
165 | color: #576b95;
166 | padding: 5px 5px 3px 12px
167 | }
168 |
169 | .like image {
170 | width: 12px;
171 | padding-right: 5px
172 | }
173 |
174 | .cmt-list {
175 | color: #454545
176 | }
177 |
178 | .cmt-list view {
179 | padding-top: 3px;
180 | border-bottom: 1px solid #eee;
181 | padding: 5px 12px;
182 | }
183 |
184 | .cmt-list text {
185 | color: #3b5384
186 | }
187 |
188 | .list_item{margin:10px 0px;border-bottom:1px solid #eee;overflow:hidden;padding:10px 0px;position:relative}
189 |
190 | .add{position: fixed;bottom: 30px;right:30px;}
191 | .add image{width: 80rpx;height: 80rpx;}
192 |
193 | .comment{position: fixed;bottom:0;z-index:100000;background:#f5f5f5;width:100%;}
194 | .comment input{width:90%;margin:5px 5%;background: #fff;border:1px solid #eee;padding:10rpx;}
195 | .comment_hover{background:#eee;}
--------------------------------------------------------------------------------
/pages/my/mydyn.wxss:
--------------------------------------------------------------------------------
1 | #list,#list li,.po-hd,.post {
2 | overflow: hidden
3 | }
4 |
5 | .po-cmt,.post .list-img:nth-child(1),.time {
6 | float: left
7 | }
8 |
9 | #list li,.cmt-wrap,.r,.time {
10 | clear: both
11 | }
12 |
13 | #avt,#user-name {
14 | position: absolute
15 | }
16 |
17 | #bg {
18 | width: 100%
19 | }
20 |
21 | #user-name {
22 | text-align: right;
23 | right: 114px;
24 | bottom: 15px;
25 | color: #fff;
26 | font-weight: 700;
27 | font-size: 15px;
28 | text-shadow: 0 1px .5px #000
29 | }
30 |
31 | #share a,.btn {
32 | font-size: 14px
33 | }
34 |
35 | .btn,b {
36 | font-weight: 400
37 | }
38 |
39 | #share a,#share p,.btn {
40 | text-align: center
41 | }
42 |
43 | #avt {
44 | width: 74px;
45 | height: 74px;
46 | border: 1px solid #dbdbdb;
47 | right: 15px;
48 | bottom: -22px;
49 | padding: 1px;
50 | background-color: #fff
51 | }
52 |
53 | #list li,.po-hd {
54 | position: relative
55 | }
56 |
57 |
58 | #list li {
59 | line-height: 1.5;
60 | border-bottom: 1px solid #e2e2e2;
61 | margin-top: 15px;
62 | padding-bottom: 15px
63 | }
64 |
65 | #share a:nth-child(2),.ads,.po-avt {
66 | position: absolute
67 | }
68 |
69 | .ads {
70 | color: #999;
71 | right: 5px;
72 | top: 0
73 | }
74 | .post view{color:#000}
75 |
76 | .ads img {
77 | width: 10px;
78 | padding-left: 8px
79 | }
80 |
81 | .ad-link {
82 | color: #3b5384
83 | }
84 |
85 | .post .ad-link img {
86 | width: 11px;
87 | padding: 0;
88 | display: inline-block
89 | }
90 |
91 | .po-avt-wrap {
92 | padding-left: 10px
93 | }
94 |
95 | .po-avt {
96 | width: 40px;
97 | height: 40px;
98 | top: 0;
99 | left: 10px
100 | }
101 |
102 | .r {
103 | border-bottom: 8px solid #eee;
104 | border-left: 8px solid transparent;
105 | border-right: 8px solid transparent;
106 | width: 1px;
107 | margin-top: 5px;
108 | margin-left: 10px
109 | }
110 |
111 | .po-cmt {
112 | padding-left: 60px;
113 | padding-right: 10px;
114 | width: 100%;
115 | box-sizing: border-box
116 | }
117 |
118 | .po-name {
119 | color: #576b95
120 | }
121 |
122 | .post {
123 | color: #252525;
124 | padding-bottom: 10px
125 | }
126 |
127 | .post image {
128 | padding: 10px 5px 0 0;
129 | display: block;
130 | max-height: 130px;
131 | max-width: 130px
132 | }
133 |
134 |
135 | .post .list-img {
136 | width: 30%;
137 | max-height: 80px;
138 | max-width: 80px;
139 | padding-right: 5px;
140 | float: left;
141 | object-fit: cover
142 | }
143 |
144 | .post .list-img:last-child {
145 | padding-right: 0
146 | }
147 |
148 | .time {
149 | color: #b1b1b1;
150 | font-size: .7rem;
151 | }
152 |
153 | .c-icon {
154 | width: 20px;
155 | height: 14px;
156 | float: right
157 | }
158 |
159 | .cmt-wrap {
160 | width: 100%;
161 | background-color: #eee
162 | }
163 |
164 | .like {
165 | color: #576b95;
166 | padding: 5px 5px 3px 12px
167 | }
168 |
169 | .like image {
170 | width: 12px;
171 | padding-right: 5px
172 | }
173 |
174 | .cmt-list {
175 | color: #454545
176 | }
177 |
178 | .cmt-list view {
179 | padding-top: 3px;
180 | border-bottom: 1px solid #eee;
181 | padding: 5px 12px;
182 | }
183 |
184 | .cmt-list text {
185 | color: #3b5384
186 | }
187 |
188 | .list_item{margin:10px 0px;border-bottom:1px solid #eee;overflow:hidden;padding:10px 0px;position:relative}
189 |
190 | .add{position: fixed;bottom: 30px;right:30px;}
191 | .add image{width: 80rpx;height: 80rpx;}
192 |
193 | .comment{position: fixed;bottom:0;z-index:100000;background:#f5f5f5;width:100%;}
194 | .comment input{width:90%;margin:5px 5%;background: #fff;border:1px solid #eee;padding:10rpx;}
195 | .comment_hover{background:#eee;}
196 | .null{line-height: 200px;text-align: center;}
--------------------------------------------------------------------------------
/pages/info/add.js:
--------------------------------------------------------------------------------
1 | // pages/info/add.js
2 | var util = require('../../utils/util.js');
3 | var app = getApp();
4 | var today = util.formatTime(new Date((new Date()).getTime() + (1000 * 60 * 60 * 24 * 1))).split(' ')[0];
5 | var minday = util.formatTime(new Date()).split(' ')[0];
6 | var maxday = util.formatTime(new Date((new Date()).getTime()+(1000*60*60*24*62))).split(' ')[0];
7 | Page({
8 | data:{
9 | sex: ['请选择性别','男','女'],
10 | type:1,
11 | gender:0,
12 | date:today,
13 | start: minday,
14 | end:maxday,
15 | time:'请选择时间',
16 | types:[{name: '1', value: '车找人',checked: true},{name: '2', value: '人找车'}],
17 | Surpluss:['请选择',1,2,3,4,5,6],
18 | surplus:0,
19 | isAgree: false,
20 | vehicle:'',
21 | departure:'出发地',
22 | destination:'目的地'
23 | },
24 | setSex:function(e){
25 | this.setData({gender:e.detail.value})
26 | },
27 | bindDateChange:function(e){
28 | this.setData({
29 | date: e.detail.value
30 | })
31 | },
32 | bindTimeChange: function (e) {
33 | this.setData({
34 | time: e.detail.value
35 | })
36 | },
37 | selectType:function(e){
38 | this.setData({type:e.detail.value})
39 | },
40 | setsurplus:function(e){
41 | this.setData({surplus:e.detail.value})
42 | },
43 | bindAgreeChange: function (e) {
44 | this.setData({
45 | isAgree: !!e.detail.value.length
46 | });
47 | },
48 | formSubmit:function(e){
49 | var data = e.detail.value;
50 | var that = this;
51 | console.log(data);
52 |
53 | if(data.name == ''){
54 | util.isError('请输入姓名', that);
55 | return false;
56 | }
57 | if(data.gender == 0){
58 | util.isError('请选择性别', that);
59 | return false;
60 | }
61 |
62 | if(data.phone == ''){
63 | util.isError('请输入手机号码', that);
64 | return false;
65 | }
66 |
67 | if(!(/^1[34578]\d{9}$/.test(data.phone))){
68 | util.isError('手机号码错误', that);
69 | return false;
70 | }
71 | if(that.data.departure == '出发地'){
72 | util.isError('请选择出发地', that);
73 | return false;
74 | }
75 | if(that.data.destination == '目的地'){
76 | util.isError('请选择目的地', that);
77 | return false;
78 | }
79 | if(data.time == '请选择时间'){
80 | util.isError('请选择出发时间', that);
81 | return false;
82 | }
83 | if(data.surplus == '0'){
84 | var arr = new Array('','剩余空位','乘车人数');
85 | util.isError('请选择'+arr[data.type], that);
86 | return false;
87 | }
88 |
89 |
90 | if(!data.isAgree[0]){
91 | util.isError('请阅读并同意条款',that);
92 | return false;
93 | }
94 | data.sk = app.globalData.sk;
95 | data.departure = that.data.departure;
96 | data.destination = that.data.destination;
97 | util.req('info/add',data,function(data){
98 | if(data.status == 1){
99 | wx.redirectTo({
100 | url: '/pages/info/index?id='+data.info
101 | });
102 | }else{
103 | util.isError(data.msg,that);
104 | return false;
105 | }
106 | })
107 | util.clearError(that);
108 | },
109 | sexDeparture:function(){
110 | var that = this;
111 | wx.chooseLocation({
112 | success:function(res){
113 | that.setData({
114 | departure:res.address
115 | })
116 | }
117 | })
118 | },
119 | sexDestination:function(){
120 | var that = this;
121 | wx.chooseLocation({
122 | success:function(res){
123 | that.setData({
124 | destination:res.address
125 | })
126 | }
127 | })
128 | },
129 | onLoad:function(options){
130 | this.setData({
131 | gender:app.globalData.userInfo.gender,
132 | name:(app.globalData.userInfo.name == '')?app.globalData.userInfo.nickName:app.globalData.userInfo.name,
133 | phone:app.globalData.userInfo.phone,
134 | vehicle:app.globalData.userInfo.vehicle
135 | })
136 | }
137 | })
--------------------------------------------------------------------------------
/libs/bmap-wx.min.js:
--------------------------------------------------------------------------------
1 | "use strict";function _classCallCheck(t,a){if(!(t instanceof a))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function t(t,a){for(var e=0;e=1){
101 | result="" + parseInt(monthC) + "月后";
102 | }
103 | else if(weekC>=1){
104 | result="" + parseInt(weekC) + "周后";
105 | }
106 | else if(dayC>=1){
107 | result=""+ parseInt(dayC) +"天后";
108 | }
109 | else if(hourC>=1){
110 | result=""+ parseInt(hourC) +"小时后";
111 | }
112 | else if(minC>=1){
113 | result=""+ parseInt(minC) +"分钟后";
114 | }else
115 | result="刚刚";
116 | return result;
117 | }
118 |
119 | function getDateBiff(dateTimeStamp){
120 | var minute = 1000 * 60;
121 | var hour = minute * 60;
122 | var day = hour * 24;
123 | var halfamonth = day * 15;
124 | var month = day * 30;
125 | var now = new Date().getTime();
126 | var diffValue = now - dateTimeStamp;
127 | if(diffValue < 0){return;}
128 | var monthC =diffValue/month;
129 | var weekC =diffValue/(7*day);
130 | var dayC =diffValue/day;
131 | var hourC =diffValue/hour;
132 | var minC = diffValue / minute;
133 | var result = '';
134 | if(monthC>=1){
135 | result="" + parseInt(monthC) + "月前";
136 | }
137 | else if(weekC>=1){
138 | result="" + parseInt(weekC) + "周前";
139 | }
140 | else if(dayC>=1){
141 | result=""+ parseInt(dayC) +"天前";
142 | }
143 | else if(hourC>=1){
144 | result=""+ parseInt(hourC) +"小时前";
145 | }
146 | else if(minC>=1){
147 | result=""+ parseInt(minC) +"分钟前";
148 | }else
149 | result="刚刚";
150 | return result;
151 | }
152 |
153 | function escape2Html(str) {
154 | var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'};
155 | return str.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});
156 | }
157 |
158 |
159 |
160 | module.exports = {
161 | formatTime: formatTime,
162 | req: req,
163 | trim: trim,
164 | isError: isError,
165 | clearError: clearError,
166 | getReq: getReq,
167 | getDateDiff:getDateDiff,
168 | escape2Html: escape2Html,
169 | wxAppinfo: wxAppinfo,
170 | getDateBiff:getDateBiff,
171 | baseURL:baseURL
172 | }
--------------------------------------------------------------------------------
/pages/index/index.js:
--------------------------------------------------------------------------------
1 | //index.js
2 | //获取应用实例
3 | var util = require('../../utils/util.js');
4 | var app = getApp();
5 | var today = util.formatTime(new Date((new Date()).getTime()+(1000*60*60*24*7))).split(' ')[0];
6 | var minday = util.formatTime(new Date()).split(' ')[0];
7 | var maxday = util.formatTime(new Date((new Date()).getTime()+(1000*60*60*24*62))).split(' ')[0];
8 | var sliderWidth = 96; // 需要设置slider的宽度,用于计算中间位置
9 | var page = 1;
10 | var list = new Array();
11 | var list1 = new Array();
12 | var list2 = new Array();
13 |
14 | Page({
15 | data: {
16 | all:'act',
17 | date:today,
18 | minday:today,
19 | maxday:maxday,
20 | tabs: ["全部", "车找人", "人找车"],
21 | activeIndex: 0,
22 | sliderOffset: 0,
23 | sliderLeft: 0,
24 | start:'',
25 | over:''
26 | },
27 | tabClick: function (e) {
28 | this.setData({
29 | sliderOffset: e.currentTarget.offsetLeft,
30 | activeIndex: e.currentTarget.id
31 | });
32 | },
33 | bindDateChange:function(e){
34 | this.setData({
35 | date:e.detail.value
36 | })
37 | this.getList(e.detail.value,this.data.start,this.data.over);
38 | },
39 | onShareAppMessage: function () {
40 | return {
41 | title: '同城拼车',
42 | path: 'pages/index/index'
43 | }
44 | },
45 | getList:function(date='',start='',over=''){
46 |
47 | var that = this;
48 | util.req('info/lists',
49 | {start:start,over:over,date:date,page:page},
50 | function(data){
51 | if(!data.list){
52 | that.setData({nomore:true});
53 | return false;
54 | }
55 | if(page == 1){
56 | list = new Array();
57 | list1 = new Array();
58 | list2 = new Array();
59 | }
60 | var surp = new Array('','空位','人');
61 | data.list.forEach(function(item){
62 | try{
63 | var start = ((item.departure).split('市')[1]).replace(/([\u4e00-\u9fa5]+[县区]).+/, '$1');
64 | }catch(e){
65 | var start = (item.departure).split(/[县区]/)[0];
66 | }
67 |
68 | try {
69 | var over = ((item.destination).split('市')[1]).replace(/([\u4e00-\u9fa5]+[县区]).+/, '$1');
70 | } catch (e) {
71 | var over = (item.destination).split(/[县区]/)[0];
72 | }
73 |
74 | var obj = {
75 | start:start,
76 | over:over,
77 | type:that.data.tabs[item.type],
78 | tp:item.type,
79 | time:util.formatTime(new Date(item.time*1000)),
80 | surplus:item.surplus+surp[item.type],
81 | see:item.see,
82 | gender:item.gender,
83 | avatarUrl:item.avatarUrl,
84 | url:'/pages/info/index?id='+item.id,
85 | tm:util.getDateDiff(item.time*1000)
86 | };
87 | list.push(obj);
88 | if(item.type == 1){
89 | list1.push(obj);
90 | }else{
91 | list2.push(obj);
92 | }
93 | })
94 |
95 | that.setData({list:list,list1:list1,list2:list2});
96 | })
97 |
98 | },
99 | onPullDownRefresh: function(){
100 | page = 1;
101 | this.getList(this.data.date,this.data.start,this.data.over);
102 | wx.stopPullDownRefresh();
103 | },
104 | getstart:function(e){
105 | this.setData({
106 | start:e.detail.value
107 | })
108 | page = 1;
109 | this.getList(this.data.date,e.detail.value,this.data.over);
110 | },
111 | getover:function(e){
112 | this.setData({
113 | over:e.detail.value
114 | })
115 | page = 1;
116 | this.getList(this.data.date,this.data.start,e.detail.value);
117 | },
118 | onLoad: function () {
119 | var that = this;
120 | wx.getSystemInfo({
121 | success: function(res) {
122 | that.setData({
123 | sliderLeft: (res.windowWidth / that.data.tabs.length - sliderWidth) / 2,
124 | sliderOffset: res.windowWidth / that.data.tabs.length * that.data.activeIndex,
125 | windowHeight: res.windowHeight,
126 | windowWidth: res.windowWidth
127 | });
128 | }
129 | });
130 |
131 | wx.getLocation({
132 | success: function (res) {
133 | var latitude = res.latitude
134 | var longitude = res.longitude
135 | wx.request({
136 | url: 'https://api.map.baidu.com/geocoder/v2/?ak=zIOkoO8wWrWA22ObIHPNkCgtLZpkP5lE&location=' + latitude + ',' + longitude + '&output=json&pois=0',
137 | data: {},
138 | method: 'GET',
139 | header: { 'Content-Type': 'application/json' },
140 | success: function(res){
141 | that.setData({
142 | start:res.data.result.addressComponent.city
143 | })
144 | that.getList(that.data.date,res.data.result.addressComponent.city);
145 | }
146 | })
147 | }
148 | })
149 | },
150 | onReachBottom:function(){
151 | if(!this.data.nomore){
152 | page++;
153 | this.getList(this.data.date,this.data.start,this.data.over);
154 | }
155 | }
156 | })
157 |
--------------------------------------------------------------------------------
/pages/my/info.js:
--------------------------------------------------------------------------------
1 | //index.js
2 | //获取应用实例
3 | var app = getApp();
4 |
5 | var util = require('../../utils/util.js');
6 | var tcity = require("../../utils/citys.js");
7 |
8 | Page({
9 | data: {
10 | sex:['保密','男','女'],
11 | provinces: [],
12 | province: "",
13 | citys: [],
14 | city: "",
15 | countys: [],
16 | county: '',
17 | value: [0, 0, 0],
18 | values: [0, 0, 0],
19 | condition: false
20 | },
21 | bindChange: function(e) {
22 | //console.log(e);
23 | var val = e.detail.value
24 | var t = this.data.values;
25 | var cityData = this.data.cityData;
26 |
27 | if(val[0] != t[0]){
28 | console.log('province no ');
29 | const citys = [];
30 | const countys = [];
31 |
32 | for (let i = 0 ; i < cityData[val[0]].sub.length; i++) {
33 | citys.push(cityData[val[0]].sub[i].name)
34 | }
35 | for (let i = 0 ; i < cityData[val[0]].sub[0].sub.length; i++) {
36 | countys.push(cityData[val[0]].sub[0].sub[i].name)
37 | }
38 |
39 | this.setData({
40 | province: this.data.provinces[val[0]],
41 | city: cityData[val[0]].sub[0].name,
42 | citys:citys,
43 | county: cityData[val[0]].sub[0].sub[0].name,
44 | countys:countys,
45 | values: val,
46 | value:[val[0],0,0],
47 | })
48 |
49 | return;
50 | }
51 | if(val[1] != t[1]){
52 | console.log('city no');
53 | const countys = [];
54 |
55 | for (let i = 0 ; i < cityData[val[0]].sub[val[1]].sub.length; i++) {
56 | countys.push(cityData[val[0]].sub[val[1]].sub[i].name)
57 | }
58 |
59 | this.setData({
60 | city: this.data.citys[val[1]],
61 | county: cityData[val[0]].sub[val[1]].sub[0].name,
62 | countys:countys,
63 | values: val,
64 | value:[val[0],val[1],0]
65 | })
66 | return;
67 | }
68 | if(val[2] != t[2]){
69 | console.log('county no');
70 | this.setData({
71 | county: this.data.countys[val[2]],
72 | values: val
73 | })
74 | return;
75 | }
76 |
77 | },
78 | closeErr:function(){ //关闭错误
79 | //util.clearError(this);
80 | },
81 | open:function(){
82 | this.setData({
83 | condition:!this.data.condition
84 | })
85 | },
86 | selectsex:function(e){
87 | this.setData({
88 | 'userInfo.gender':e.detail.value
89 | })
90 | },
91 | dateAvatar:function(){
92 | var that = this;
93 | wx.chooseImage({
94 | count: 1,
95 | success: function(res) {
96 | var tempFilePaths = res.tempFilePaths
97 | wx.uploadFile({
98 | url: util.baseURL + 'api/upload',
99 | filePath: tempFilePaths[0],
100 | name: 'file',
101 | formData:{
102 | 'user': app.globalData.userInfo.id
103 | },
104 | success: function(res){
105 | var data = JSON.parse(res.data);
106 | console.log(data);
107 | if(data.status == 1){
108 | that.setData({
109 | 'userInfo.avatarUrl':data.data
110 | })
111 | util.clearError(that);
112 | }else{
113 | console.log(data.msg);
114 | util.isError(data.msg, that);
115 | }
116 | },
117 | fail:function(){
118 | util.isError('上传失败', that);
119 | }
120 | })
121 | }
122 | })
123 | },
124 | formSubmit: function(e) {
125 | var that = this;
126 | if(!(/^1[34578]\d{9}$/.test(e.detail.value.phone))){
127 | util.isError('手机号码错误', that);
128 | return false;
129 | }
130 | this.setData({
131 | 'userInfo.province':this.data.province,
132 | 'userInfo.city':this.data.city,
133 | 'userInfo.county':this.data.county,
134 | 'userInfo.nickName':e.detail.value.nickName,
135 | 'userInfo.phone':e.detail.value.phone
136 | })
137 | wx.request({
138 | url: util.baseURL + 'api/user/editUser',
139 | data: {
140 | 'userInfo':that.data.userInfo,
141 | 'sk':app.globalData.sk
142 | },
143 | method: 'POST',
144 | header: {
145 | 'Content-type':'application/json'
146 | },
147 | success: function(res){
148 | console.log(res);
149 | if(res.data.status == '1'){
150 | util.clearError(that);
151 | app.setUserInfo(res.data.user);
152 | wx.navigateBack({
153 | delta: 1
154 | })
155 | }else{
156 | util.isError(res.data.msg, that);
157 | }
158 | },
159 | fail: function(res) {
160 | util.isError('修改失败', that);
161 | }
162 | })
163 | },
164 | onLoad: function () {
165 | var that = this
166 | wx.getStorage({
167 | key: 'userInfo',
168 | success: function(res){
169 | that.setData({
170 | userInfo:res.data,
171 | gender:res.data.gender,
172 | 'province':res.data.province,
173 | 'city':res.data.city,
174 | 'county':res.data.county
175 | })
176 | },
177 | fail: function(res) {
178 | app.login();
179 | }
180 | })
181 | //console.log(that.userInfo);
182 | tcity.init(that);
183 |
184 | var cityData = that.data.cityData;
185 |
186 |
187 | const provinces = [];
188 | const citys = [];
189 | const countys = [];
190 |
191 | for(let i=0;i
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {{date}}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | {{item}}
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | {{item.start}} {{item.over}}{{item.tm}}
37 | 出发:{{item.date}} {{item.time}}
38 |
39 | {{item.type}}
40 | {{item.surplus}}
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | {{item.start}} {{item.over}}{{item.tm}}
55 | 出发:{{item.date}} {{item.time}}
56 |
57 | {{item.type}}
58 | {{item.surplus}}
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | {{item.start}} {{item.over}}{{item.tm}}
72 | 出发:{{item.date}} {{item.time}}
73 |
74 | {{item.type}}
75 | {{item.surplus}}
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 | 正在加载
88 |
89 |
90 | 没有更多了~
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/pages/info/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{errorMsg}}
4 |
15 |
16 |
17 |
18 | {{data.departure}}
19 |
20 |
21 | {{data.destination}}
22 |
23 |
24 | 联系人:{{data.name}}
25 |
26 |
27 |
28 |
29 | 出发时间:{{data.tm}}
30 |
31 |
32 | 拼车价格:{{data.price}}
33 |
34 |
35 | 剩余空位:人数:{{data.surplus}}
36 |
37 |
38 | 车型:{{data.vehicle}}
39 |
40 |
41 | 备注:
42 |
43 |
46 |
47 |
48 |
49 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
101 |
102 |
103 |
104 |
138 |
139 |
--------------------------------------------------------------------------------
/pages/info/index.js:
--------------------------------------------------------------------------------
1 | // pages/info/index.js
2 | var util = require('../../utils/util.js');
3 | var app = getApp();
4 | var page = 1;
5 | var comment = new Array();
6 | Page({
7 | data:{
8 | 'data.id':0,
9 | 'back':false,
10 | 'nomore':false,
11 | 'shoucang':false,
12 | 'notme':false,
13 | 'modalFlag':false
14 | },
15 | tel:function(){
16 | var that = this;
17 | wx.makePhoneCall({
18 | phoneNumber: that.data.data.phone
19 | })
20 | },
21 | tocomment:function(){
22 | this.setData({toview:'comment_list'});
23 | },
24 | zan:function(event){
25 | var that = this;
26 | var Commentdata = this.data.comment;
27 | util.req('comment/zan',{
28 | 'cid':Commentdata[event.currentTarget.id].id,
29 | 'sk':app.globalData.sk
30 | },function(data){
31 | if(data.status == 1){
32 | Commentdata[event.currentTarget.id].zan = data.zan;
33 | Commentdata[event.currentTarget.id].iszan = true;
34 | that.setData({comment:Commentdata});
35 | }else{
36 | console.log(data.msg);
37 | wx.showModal({
38 | title: '提示',
39 | content: data.msg,
40 | showCancel: false,
41 | success: function (res) {
42 | }
43 | });
44 | }
45 | })
46 | },
47 | shoucang:function(){
48 | var that = this;
49 | util.req('fav/addfav',{iid:that.data.data.id,sk:app.globalData.sk},function(data){
50 | if(data.status == 1){
51 | that.setData({'shoucang':true});
52 | wx.showToast({
53 | title: '收藏成功',
54 | icon: 'success',
55 | duration: 2000
56 | })
57 | }
58 | })
59 | },
60 | qxshoucang:function(){
61 | var that = this;
62 | util.req('fav/delfav',{iid:that.data.data.id,sk:app.globalData.sk},function(data){
63 | if(data.status == 1){
64 | that.setData({'shoucang':false});
65 | wx.showToast({
66 | title: '取消收藏成功',
67 | icon: 'success',
68 | duration: 2000
69 | })
70 | }
71 | })
72 | },
73 | madal:function(){
74 | this.setData({modalFlag:true});
75 | },
76 | modalOk:function(){
77 | this.setData({modalFlag:false});
78 | },
79 | appointment:function(e){
80 | var fId = e.detail.formId;
81 | var that = this;
82 | console.log(e.detail.value.surplus);
83 | if(e.detail.value.name == ''){
84 | util.isError('请输入姓名',that);
85 | return false;
86 | }
87 | if(e.detail.value.phone == ''){
88 | util.isError('请输入手机号',that);
89 | return false;
90 | }
91 | if(!(/^1[34578]\d{9}$/.test(e.detail.value.phone))){
92 | util.isError('手机号码错误', that);
93 | return false;
94 | }
95 | if(e.detail.value.surplus == 0){
96 | util.isError('请选择人数',that);
97 | return false;
98 | }
99 | util.clearError(that);
100 | util.req('appointment/add',{form_id:fId,iid:this.data.data.id,name:e.detail.value.name,phone:e.detail.value.phone,surplus:e.detail.value.surplus,sk:app.globalData.sk},function(data){
101 | if(data.status == 1){
102 | that.setData({modalFlag:false});
103 | wx.showToast({
104 | title: '预约成功',
105 | icon: 'success',
106 | duration: 2000
107 | })
108 | }else{
109 | util.isError(data.msg,that);
110 | return false;
111 | }
112 | })
113 | },
114 | setsurplus:function(e){
115 | this.setData({surplus:e.detail.value})
116 | },
117 | onLoad:function(options){
118 | var that = this;
119 | wx.getSystemInfo({
120 | success: function(res) {
121 | that.setData({height:res.windowHeight});
122 | }
123 | })
124 |
125 | that.setData({
126 | 'userInfo.gender':app.globalData.userInfo.gender,
127 | 'userInfo.name':(app.globalData.userInfo.name == '')?app.globalData.userInfo.nickName:app.globalData.userInfo.name,
128 | 'userInfo.phone':app.globalData.userInfo.phone
129 | })
130 |
131 | util.req('fav/isfav',{iid:options.id,sk:app.globalData.sk},function(data){
132 | if(data.status == 1){
133 | that.setData({'shoucang':true});
134 | }
135 | })
136 |
137 | util.req('info/index',{id:options.id},function(data){
138 | that.setData({data:data.data});
139 | if(data.data.uid == app.globalData.userInfo.id){
140 | var notme = false;
141 | }else{
142 | var notme = true;
143 | }
144 | var Surpluss = new Array('请选择人数');
145 | for(var i = 1; i <= data.data.surplus; i++){
146 | Surpluss.push(i);
147 | }
148 | that.setData({
149 | 'data.tm':util.formatTime(new Date(data.data.time*1000)),
150 | 'data.price':(data.data.price == null)?'面议':data.data.price,
151 | 'data.gender':data.data.gender,
152 | 'notme':notme,
153 | 'Surpluss':Surpluss,
154 | 'surplus':0
155 | });
156 | })
157 | page = 1;
158 | this.getCount(options.id);
159 | this.getComment(options.id);
160 | if(getCurrentPages().length == 1){
161 | that.setData({'back':true});
162 | }
163 | },
164 | previmg:function(e){
165 | var that = this;
166 | wx.previewImage({
167 | current: that.data.comment[e.target.dataset.iid].img[e.target.dataset.id],
168 | urls: that.data.comment[e.target.dataset.iid].img,
169 | })
170 | },
171 | getComment:function(id){
172 | var that = this;
173 | util.req('comment/get',{id:id,type:'info',page:page},function(data){
174 | if(data.status == 1){
175 | if(page == 1){
176 | comment = new Array();
177 | }
178 | if(data.data == null){
179 | that.setData({'nomore':true});
180 | }else{
181 | data.data.forEach(function(item){
182 | comment.push({
183 | id:item.id,
184 | avatarUrl:item.avatarUrl,
185 | content:item.content,
186 | fid:item.fid,
187 | nickName:item.nickName,
188 | img:JSON.parse(item.img),
189 | zan:item.zan,
190 | reply:item.reply,
191 | time:util.getDateBiff(item.time*1000)
192 | })
193 | })
194 | }
195 | console.log(page+':'+comment);
196 | that.setData({comment:comment});
197 | }
198 | })
199 | },
200 | toIndex:function(){
201 | wx.reLaunch({
202 | url: '/pages/index/index'
203 | })
204 | },
205 | onShareAppMessage: function () {
206 | return {
207 | title: '拼车详情',
208 | path: 'pages/info/index?id='+this.data.data.id
209 | }
210 | },
211 | getCount:function(id){
212 | var that = this;
213 | util.req('comment/get_count',{id:id,type:'info'},function(data){ //获取评论总数
214 | if(data.status == 1){
215 | that.setData({comnum:data.data});
216 | }
217 | })
218 | },
219 | onShow:function(){
220 | page = 1;
221 |
222 | if(this.data.data) {
223 | this.getCount(this.data.data.id);
224 | this.getComment(this.data.data.id);
225 | }
226 | },
227 | tobottom:function(){
228 | if(!this.data.nomore){
229 | page++;
230 | this.getComment(this.data.data.id);
231 | }
232 | }
233 | })
--------------------------------------------------------------------------------
/pages/info/edit.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{errorMsg}}
4 |
5 |
146 |
147 |
--------------------------------------------------------------------------------
/pages/info/add.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{errorMsg}}
4 |
5 |
158 |
159 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright Vincent H(1091986039@qq.com)
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
--------------------------------------------------------------------------------
/weui.wxss:
--------------------------------------------------------------------------------
1 | page {
2 | line-height: 1.6;
3 | font-family: -apple-system-font, "Helvetica Neue", sans-serif;
4 | }
5 | icon {
6 | vertical-align: middle;
7 | }
8 | .weui-cells {
9 | position: relative;
10 | margin-top: 1.17647059em;
11 | background-color: #FFFFFF;
12 | line-height: 1.41176471;
13 | font-size: 17px;
14 | }
15 | .weui-cells:before {
16 | content: " ";
17 | position: absolute;
18 | left: 0;
19 | top: 0;
20 | right: 0;
21 | height: 1px;
22 | border-top: 1rpx solid #D9D9D9;
23 | color: #D9D9D9;
24 | }
25 | .weui-cells:after {
26 | content: " ";
27 | position: absolute;
28 | left: 0;
29 | bottom: 0;
30 | right: 0;
31 | height: 1px;
32 | border-bottom: 1rpx solid #D9D9D9;
33 | color: #D9D9D9;
34 | }
35 | .weui-cells__title {
36 | margin-top: .77em;
37 | margin-bottom: .3em;
38 | padding-left: 15px;
39 | padding-right: 15px;
40 | color: #999999;
41 | font-size: 14px;
42 | }
43 | .weui-cells_after-title {
44 | margin-top: 0;
45 | }
46 | .weui-cells__tips {
47 | margin-top: .3em;
48 | color: #999999;
49 | padding-left: 15px;
50 | padding-right: 15px;
51 | font-size: 14px;
52 | }
53 | .weui-cell {
54 | padding: 10px 15px;
55 | position: relative;
56 | display: -webkit-box;
57 | display: -webkit-flex;
58 | display: flex;
59 | -webkit-box-align: center;
60 | -webkit-align-items: center;
61 | align-items: center;
62 | }
63 | .weui-cell:before {
64 | content: " ";
65 | position: absolute;
66 | left: 0;
67 | top: 0;
68 | right: 0;
69 | height: 1px;
70 | border-top: 1rpx solid #D9D9D9;
71 | color: #D9D9D9;
72 | left: 15px;
73 | }
74 | .weui-cell:first-child:before {
75 | display: none;
76 | }
77 | .weui-cell_active {
78 | background-color: #ECECEC;
79 | }
80 | .weui-cell_primary {
81 | -webkit-box-align: start;
82 | -webkit-align-items: flex-start;
83 | align-items: flex-start;
84 | }
85 | .weui-cell__bd {
86 | -webkit-box-flex: 1;
87 | -webkit-flex: 1;
88 | flex: 1;
89 | }
90 | .weui-cell__ft {
91 | text-align: right;
92 | color: #999999;
93 | }
94 | .weui-cell_access {
95 | color: inherit;
96 | }
97 | .weui-cell__ft_in-access {
98 | padding-right: 13px;
99 | position: relative;
100 | }
101 | .weui-cell__ft_in-access:after {
102 | content: " ";
103 | display: inline-block;
104 | height: 6px;
105 | width: 6px;
106 | border-width: 2px 2px 0 0;
107 | border-color: #C8C8CD;
108 | border-style: solid;
109 | -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
110 | transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
111 | position: relative;
112 | top: -2px;
113 | position: absolute;
114 | top: 50%;
115 | margin-top: -4px;
116 | right: 2px;
117 | }
118 | .weui-cell_link {
119 | color: #586C94;
120 | font-size: 14px;
121 | }
122 | .weui-cell_link:active {
123 | background-color: #ECECEC;
124 | }
125 | .weui-cell_link:first-child:before {
126 | display: block;
127 | }
128 | .weui-icon-radio {
129 | margin-left: 3.2px;
130 | margin-right: 3.2px;
131 | }
132 | .weui-icon-checkbox_circle,
133 | .weui-icon-checkbox_success {
134 | margin-left: 4.6px;
135 | margin-right: 4.6px;
136 | }
137 | .weui-check__label:active {
138 | background-color: #ECECEC;
139 | }
140 | .weui-check {
141 | position: absolute;
142 | left: -9999px;
143 | }
144 | .weui-check__hd_in-checkbox {
145 | padding-right: 0.35em;
146 | }
147 | .weui-cell__ft_in-radio {
148 | padding-left: 0.35em;
149 | }
150 | .weui-cell_input {
151 | padding-top: 0;
152 | padding-bottom: 0;
153 | }
154 | .weui-label {
155 | width: 105px;
156 | word-wrap: break-word;
157 | word-break: break-all;
158 | }
159 | .weui-input {
160 | height: 2.58823529em;
161 | min-height: 2.58823529em;
162 | line-height: 2.58823529em;
163 | }
164 | .weui-toptips {
165 | position: fixed;
166 | -webkit-transform: translateZ(0);
167 | transform: translateZ(0);
168 | top: 0;
169 | left: 0;
170 | right: 0;
171 | padding: 5px;
172 | font-size: 14px;
173 | text-align: center;
174 | color: #FFFFFF;
175 | z-index: 5000;
176 | word-wrap: break-word;
177 | word-break: break-all;
178 | }
179 | .weui-toptips_warn {
180 | background-color: #E64340;
181 | }
182 | .weui-textarea {
183 | display: block;
184 | width: 100%;
185 | }
186 | .weui-textarea-counter {
187 | color: #B2B2B2;
188 | text-align: right;
189 | }
190 | .weui-textarea-counter_warn {
191 | color: #E64340;
192 | }
193 | .weui-cell_warn {
194 | color: #E64340;
195 | }
196 | .weui-form-preview {
197 | position: relative;
198 | background-color: #FFFFFF;
199 | }
200 | .weui-form-preview:before {
201 | content: " ";
202 | position: absolute;
203 | left: 0;
204 | top: 0;
205 | right: 0;
206 | height: 1px;
207 | border-top: 1rpx solid #D9D9D9;
208 | color: #D9D9D9;
209 | }
210 | .weui-form-preview:after {
211 | content: " ";
212 | position: absolute;
213 | left: 0;
214 | bottom: 0;
215 | right: 0;
216 | height: 1px;
217 | border-bottom: 1rpx solid #D9D9D9;
218 | color: #D9D9D9;
219 | }
220 | .weui-form-preview__value {
221 | font-size: 14px;
222 | }
223 | .weui-form-preview__value_in-hd {
224 | font-size: 26px;
225 | }
226 | .weui-form-preview__hd {
227 | position: relative;
228 | padding: 10px 15px;
229 | text-align: right;
230 | line-height: 2.5em;
231 | }
232 | .weui-form-preview__hd:after {
233 | content: " ";
234 | position: absolute;
235 | left: 0;
236 | bottom: 0;
237 | right: 0;
238 | height: 1px;
239 | border-bottom: 1rpx solid #D9D9D9;
240 | color: #D9D9D9;
241 | left: 15px;
242 | }
243 | .weui-form-preview__bd {
244 | padding: 10px 15px;
245 | font-size: .9em;
246 | text-align: right;
247 | color: #999999;
248 | line-height: 2;
249 | }
250 | .weui-form-preview__ft {
251 | position: relative;
252 | line-height: 50px;
253 | display: -webkit-box;
254 | display: -webkit-flex;
255 | display: flex;
256 | }
257 | .weui-form-preview__ft:after {
258 | content: " ";
259 | position: absolute;
260 | left: 0;
261 | top: 0;
262 | right: 0;
263 | height: 1px;
264 | border-top: 1rpx solid #D5D5D6;
265 | color: #D5D5D6;
266 | }
267 | .weui-form-preview__item {
268 | overflow: hidden;
269 | }
270 | .weui-form-preview__label {
271 | float: left;
272 | margin-right: 1em;
273 | min-width: 4em;
274 | color: #999999;
275 | text-align: justify;
276 | text-align-last: justify;
277 | }
278 | .weui-form-preview__value {
279 | display: block;
280 | overflow: hidden;
281 | word-break: normal;
282 | word-wrap: break-word;
283 | }
284 | .weui-form-preview__btn {
285 | position: relative;
286 | display: block;
287 | -webkit-box-flex: 1;
288 | -webkit-flex: 1;
289 | flex: 1;
290 | color: #3CC51F;
291 | text-align: center;
292 | }
293 | .weui-form-preview__btn:after {
294 | content: " ";
295 | position: absolute;
296 | left: 0;
297 | top: 0;
298 | width: 1px;
299 | bottom: 0;
300 | border-left: 1rpx solid #D5D5D6;
301 | color: #D5D5D6;
302 | }
303 | .weui-form-preview__btn:first-child:after {
304 | display: none;
305 | }
306 | .weui-form-preview__btn_active {
307 | background-color: #EEEEEE;
308 | }
309 | .weui-form-preview__btn_default {
310 | color: #999999;
311 | }
312 | .weui-form-preview__btn_primary {
313 | color: #0BB20C;
314 | }
315 | .weui-cell_select {
316 | padding: 0;
317 | }
318 | .weui-select {
319 | position: relative;
320 | padding-left: 15px;
321 | padding-right: 30px;
322 | height: 2.58823529em;
323 | min-height: 2.58823529em;
324 | line-height: 2.58823529em;
325 | border-right: 1rpx solid #D9D9D9;
326 | }
327 | .weui-select:before {
328 | content: " ";
329 | display: inline-block;
330 | height: 6px;
331 | width: 6px;
332 | border-width: 2px 2px 0 0;
333 | border-color: #C8C8CD;
334 | border-style: solid;
335 | -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
336 | transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
337 | position: relative;
338 | top: -2px;
339 | position: absolute;
340 | top: 50%;
341 | right: 15px;
342 | margin-top: -4px;
343 | }
344 | .weui-select_in-select-after {
345 | padding-left: 0;
346 | }
347 | .weui-cell__hd_in-select-after,
348 | .weui-cell__bd_in-select-before {
349 | padding-left: 15px;
350 | }
351 | .weui-cell_vcode {
352 | padding-right: 0;
353 | }
354 | .weui-vcode-img {
355 | margin-left: 5px;
356 | height: 2.58823529em;
357 | vertical-align: middle;
358 | }
359 | .weui-vcode-btn {
360 | display: inline-block;
361 | height: 2.58823529em;
362 | margin-left: 5px;
363 | padding: 0 0.6em 0 0.7em;
364 | border-left: 1px solid #E5E5E5;
365 | line-height: 2.58823529em;
366 | vertical-align: middle;
367 | font-size: 17px;
368 | color: #3CC51F;
369 | white-space: nowrap;
370 | }
371 | .weui-vcode-btn:active {
372 | color: #52a341;
373 | }
374 | .weui-cell_switch {
375 | padding-top: 6px;
376 | padding-bottom: 6px;
377 | }
378 | .weui-uploader__hd {
379 | display: -webkit-box;
380 | display: -webkit-flex;
381 | display: flex;
382 | padding-bottom: 10px;
383 | -webkit-box-align: center;
384 | -webkit-align-items: center;
385 | align-items: center;
386 | }
387 | .weui-uploader__title {
388 | -webkit-box-flex: 1;
389 | -webkit-flex: 1;
390 | flex: 1;
391 | }
392 | .weui-uploader__info {
393 | color: #B2B2B2;
394 | }
395 | .weui-uploader__bd {
396 | margin-bottom: -4px;
397 | margin-right: -9px;
398 | overflow: hidden;
399 | }
400 | .weui-uploader__file {
401 | float: left;
402 | margin-right: 9px;
403 | margin-bottom: 9px;
404 | }
405 | .weui-uploader__img {
406 | display: block;
407 | width: 79px;
408 | height: 79px;
409 | }
410 | .weui-uploader__file_status {
411 | position: relative;
412 | }
413 | .weui-uploader__file_status:before {
414 | content: " ";
415 | position: absolute;
416 | top: 0;
417 | right: 0;
418 | bottom: 0;
419 | left: 0;
420 | background-color: rgba(0, 0, 0, 0.5);
421 | }
422 | .weui-uploader__file-content {
423 | position: absolute;
424 | top: 50%;
425 | left: 50%;
426 | -webkit-transform: translate(-50%, -50%);
427 | transform: translate(-50%, -50%);
428 | color: #FFFFFF;
429 | }
430 | .weui-uploader__input-box {
431 | float: left;
432 | position: relative;
433 | margin-right: 9px;
434 | margin-bottom: 9px;
435 | width: 77px;
436 | height: 77px;
437 | border: 1px solid #D9D9D9;
438 | }
439 | .weui-uploader__input-box:before,
440 | .weui-uploader__input-box:after {
441 | content: " ";
442 | position: absolute;
443 | top: 50%;
444 | left: 50%;
445 | -webkit-transform: translate(-50%, -50%);
446 | transform: translate(-50%, -50%);
447 | background-color: #D9D9D9;
448 | }
449 | .weui-uploader__input-box:before {
450 | width: 2px;
451 | height: 39.5px;
452 | }
453 | .weui-uploader__input-box:after {
454 | width: 39.5px;
455 | height: 2px;
456 | }
457 | .weui-uploader__input-box:active {
458 | border-color: #999999;
459 | }
460 | .weui-uploader__input-box:active:before,
461 | .weui-uploader__input-box:active:after {
462 | background-color: #999999;
463 | }
464 | .weui-uploader__input {
465 | position: absolute;
466 | z-index: 1;
467 | top: 0;
468 | left: 0;
469 | width: 100%;
470 | height: 100%;
471 | opacity: 0;
472 | }
473 | .weui-article {
474 | padding: 20px 15px;
475 | font-size: 15px;
476 | }
477 | .weui-article__section {
478 | margin-bottom: 1.5em;
479 | }
480 | .weui-article__h1 {
481 | font-size: 18px;
482 | font-weight: 400;
483 | margin-bottom: .9em;
484 | }
485 | .weui-article__h2 {
486 | font-size: 16px;
487 | font-weight: 400;
488 | margin-bottom: .34em;
489 | }
490 | .weui-article__h3 {
491 | font-weight: 400;
492 | font-size: 15px;
493 | margin-bottom: .34em;
494 | }
495 | .weui-article__p {
496 | margin: 0 0 .8em;
497 | }
498 | .weui-msg {
499 | padding-top: 36px;
500 | text-align: center;
501 | }
502 | .weui-msg__link {
503 | display: inline;
504 | color: #586C94;
505 | }
506 | .weui-msg__icon-area {
507 | margin-bottom: 30px;
508 | }
509 | .weui-msg__text-area {
510 | margin-bottom: 25px;
511 | padding: 0 20px;
512 | }
513 | .weui-msg__title {
514 | margin-bottom: 5px;
515 | font-weight: 400;
516 | font-size: 20px;
517 | }
518 | .weui-msg__desc {
519 | font-size: 14px;
520 | color: #999999;
521 | }
522 | .weui-msg__opr-area {
523 | margin-bottom: 25px;
524 | }
525 | .weui-msg__extra-area {
526 | margin-bottom: 15px;
527 | font-size: 14px;
528 | color: #999999;
529 | }
530 | @media screen and (min-height: 438px) {
531 | .weui-msg__extra-area {
532 | position: fixed;
533 | left: 0;
534 | bottom: 0;
535 | width: 100%;
536 | text-align: center;
537 | }
538 | }
539 | .weui-flex {
540 | display: -webkit-box;
541 | display: -webkit-flex;
542 | display: flex;
543 | }
544 | .weui-flex__item {
545 | -webkit-box-flex: 1;
546 | -webkit-flex: 1;
547 | flex: 1;
548 | }
549 | .weui-btn {
550 | margin-top: 15px;
551 | }
552 | .weui-btn:first-child {
553 | margin-top: 0;
554 | }
555 | .weui-btn-area {
556 | margin: 1.17647059em 15px 0.3em;
557 | }
558 | .weui-agree {
559 | display: block;
560 | padding: .5em 15px;
561 | font-size: 13px;
562 | }
563 | .weui-agree__text {
564 | color: #999999;
565 | }
566 | .weui-agree__link {
567 | display: inline;
568 | color: #586C94;
569 | }
570 | .weui-agree__checkbox {
571 | position: absolute;
572 | left: -9999px;
573 | }
574 | .weui-agree__checkbox-icon {
575 | position: relative;
576 | top: 2px;
577 | display: inline-block;
578 | border: 1px solid #D1D1D1;
579 | background-color: #FFFFFF;
580 | border-radius: 3px;
581 | width: 11px;
582 | height: 11px;
583 | }
584 | .weui-agree__checkbox-icon-check {
585 | position: absolute;
586 | top: 1px;
587 | left: 1px;
588 | }
589 | .weui-footer {
590 | color: #999999;
591 | font-size: 14px;
592 | text-align: center;
593 | }
594 | .weui-footer_fixed-bottom {
595 | position: fixed;
596 | bottom: .52em;
597 | left: 0;
598 | right: 0;
599 | }
600 | .weui-footer__links {
601 | font-size: 0;
602 | }
603 | .weui-footer__link {
604 | display: inline-block;
605 | vertical-align: top;
606 | margin: 0 .62em;
607 | position: relative;
608 | font-size: 14px;
609 | color: #586C94;
610 | }
611 | .weui-footer__link:before {
612 | content: " ";
613 | position: absolute;
614 | left: 0;
615 | top: 0;
616 | width: 1px;
617 | bottom: 0;
618 | border-left: 1rpx solid #C7C7C7;
619 | color: #C7C7C7;
620 | left: -0.65em;
621 | top: .36em;
622 | bottom: .36em;
623 | }
624 | .weui-footer__link:first-child:before {
625 | display: none;
626 | }
627 | .weui-footer__text {
628 | padding: 0 .34em;
629 | font-size: 12px;
630 | }
631 | .weui-grids {
632 | border-top: 1rpx solid #D9D9D9;
633 | border-left: 1rpx solid #D9D9D9;
634 | overflow: hidden;
635 | }
636 | .weui-grid {
637 | position: relative;
638 | float: left;
639 | padding: 20px 10px;
640 | width: 33.33333333%;
641 | box-sizing: border-box;
642 | border-right: 1rpx solid #D9D9D9;
643 | border-bottom: 1rpx solid #D9D9D9;
644 | }
645 | .weui-grid_active {
646 | background-color: #ECECEC;
647 | }
648 | .weui-grid__icon {
649 | display: block;
650 | width: 28px;
651 | height: 28px;
652 | margin: 0 auto;
653 | }
654 | .weui-grid__label {
655 | margin-top: 5px;
656 | display: block;
657 | text-align: center;
658 | color: #000000;
659 | font-size: 14px;
660 | white-space: nowrap;
661 | text-overflow: ellipsis;
662 | overflow: hidden;
663 | }
664 | .weui-loading {
665 | margin: 0 5px;
666 | width: 20px;
667 | height: 20px;
668 | display: inline-block;
669 | vertical-align: middle;
670 | -webkit-animation: weuiLoading 1s steps(12, end) infinite;
671 | animation: weuiLoading 1s steps(12, end) infinite;
672 | background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
673 | background-size: 100%;
674 | }
675 | .weui-loading.weui-loading_transparent {
676 | 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");
677 | }
678 | @-webkit-keyframes weuiLoading {
679 | 0% {
680 | -webkit-transform: rotate3d(0, 0, 1, 0deg);
681 | transform: rotate3d(0, 0, 1, 0deg);
682 | }
683 | 100% {
684 | -webkit-transform: rotate3d(0, 0, 1, 360deg);
685 | transform: rotate3d(0, 0, 1, 360deg);
686 | }
687 | }
688 | @keyframes weuiLoading {
689 | 0% {
690 | -webkit-transform: rotate3d(0, 0, 1, 0deg);
691 | transform: rotate3d(0, 0, 1, 0deg);
692 | }
693 | 100% {
694 | -webkit-transform: rotate3d(0, 0, 1, 360deg);
695 | transform: rotate3d(0, 0, 1, 360deg);
696 | }
697 | }
698 | .weui-badge {
699 | display: inline-block;
700 | padding: .15em .4em;
701 | min-width: 8px;
702 | border-radius: 18px;
703 | background-color: #E64340;
704 | color: #FFFFFF;
705 | line-height: 1.2;
706 | text-align: center;
707 | font-size: 12px;
708 | vertical-align: middle;
709 | }
710 | .weui-badge_dot {
711 | padding: .4em;
712 | min-width: 0;
713 | }
714 | .weui-loadmore {
715 | width: 65%;
716 | margin: 1.5em auto;
717 | line-height: 1.6em;
718 | font-size: 14px;
719 | text-align: center;
720 | }
721 | .weui-loadmore__tips {
722 | display: inline-block;
723 | vertical-align: middle;
724 | }
725 | .weui-loadmore_line {
726 | border-top: 1px solid #E5E5E5;
727 | margin-top: 2.4em;
728 | }
729 | .weui-loadmore__tips_in-line {
730 | position: relative;
731 | top: -0.9em;
732 | padding: 0 .55em;
733 | background-color: #FFFFFF;
734 | color: #999999;
735 | }
736 | .weui-loadmore__tips_in-dot {
737 | position: relative;
738 | padding: 0 .16em;
739 | width: 4px;
740 | height: 1.6em;
741 | }
742 | .weui-loadmore__tips_in-dot:before {
743 | content: " ";
744 | position: absolute;
745 | top: 50%;
746 | left: 50%;
747 | margin-top: -1px;
748 | margin-left: -2px;
749 | width: 4px;
750 | height: 4px;
751 | border-radius: 50%;
752 | background-color: #E5E5E5;
753 | }
754 | .weui-panel {
755 | background-color: #FFFFFF;
756 | margin-top: 10px;
757 | position: relative;
758 | overflow: hidden;
759 | }
760 | .weui-panel:first-child {
761 | margin-top: 0;
762 | }
763 | .weui-panel:before {
764 | content: " ";
765 | position: absolute;
766 | left: 0;
767 | top: 0;
768 | right: 0;
769 | height: 1px;
770 | border-top: 1rpx solid #E5E5E5;
771 | color: #E5E5E5;
772 | }
773 | .weui-panel:after {
774 | content: " ";
775 | position: absolute;
776 | left: 0;
777 | bottom: 0;
778 | right: 0;
779 | height: 1px;
780 | border-bottom: 1rpx solid #E5E5E5;
781 | color: #E5E5E5;
782 | }
783 | .weui-panel__hd {
784 | padding: 14px 15px 10px;
785 | color: #999999;
786 | font-size: 13px;
787 | position: relative;
788 | }
789 | .weui-panel__hd:after {
790 | content: " ";
791 | position: absolute;
792 | left: 0;
793 | bottom: 0;
794 | right: 0;
795 | height: 1px;
796 | border-bottom: 1rpx solid #E5E5E5;
797 | color: #E5E5E5;
798 | left: 15px;
799 | }
800 | .weui-media-box {
801 | padding: 15px;
802 | position: relative;
803 | }
804 | .weui-media-box:before {
805 | content: " ";
806 | position: absolute;
807 | left: 0;
808 | top: 0;
809 | right: 0;
810 | height: 1px;
811 | border-top: 1rpx solid #E5E5E5;
812 | color: #E5E5E5;
813 | left: 15px;
814 | }
815 | .weui-media-box:first-child:before {
816 | display: none;
817 | }
818 | .weui-media-box__title {
819 | font-weight: 400;
820 | font-size: 17px;
821 | width: auto;
822 | overflow: hidden;
823 | text-overflow: ellipsis;
824 | white-space: nowrap;
825 | word-wrap: normal;
826 | word-wrap: break-word;
827 | word-break: break-all;
828 | }
829 | .weui-media-box__desc {
830 | color: #999999;
831 | font-size: 13px;
832 | line-height: 1.2;
833 | overflow: hidden;
834 | text-overflow: ellipsis;
835 | display: -webkit-box;
836 | -webkit-box-orient: vertical;
837 | -webkit-line-clamp: 2;
838 | }
839 | .weui-media-box__info {
840 | margin-top: 15px;
841 | padding-bottom: 5px;
842 | font-size: 13px;
843 | color: #CECECE;
844 | line-height: 1em;
845 | list-style: none;
846 | overflow: hidden;
847 | }
848 | .weui-media-box__info__meta {
849 | float: left;
850 | padding-right: 1em;
851 | }
852 | .weui-media-box__info__meta_extra {
853 | padding-left: 1em;
854 | border-left: 1px solid #CECECE;
855 | }
856 | .weui-media-box__title_in-text {
857 | margin-bottom: 8px;
858 | }
859 | .weui-media-box_appmsg {
860 | display: -webkit-box;
861 | display: -webkit-flex;
862 | display: flex;
863 | -webkit-box-align: center;
864 | -webkit-align-items: center;
865 | align-items: center;
866 | }
867 | .weui-media-box__thumb {
868 | width: 100%;
869 | height: 100%;
870 | vertical-align: top;
871 | }
872 | .weui-media-box__hd_in-appmsg {
873 | margin-right: .8em;
874 | width: 60px;
875 | height: 60px;
876 | line-height: 60px;
877 | text-align: center;
878 | }
879 | .weui-media-box__bd_in-appmsg {
880 | -webkit-box-flex: 1;
881 | -webkit-flex: 1;
882 | flex: 1;
883 | min-width: 0;
884 | }
885 | .weui-media-box_small-appmsg {
886 | padding: 0;
887 | }
888 | .weui-cells_in-small-appmsg {
889 | margin-top: 0;
890 | }
891 | .weui-cells_in-small-appmsg:before {
892 | display: none;
893 | }
894 | .weui-progress {
895 | display: -webkit-box;
896 | display: -webkit-flex;
897 | display: flex;
898 | -webkit-box-align: center;
899 | -webkit-align-items: center;
900 | align-items: center;
901 | }
902 | .weui-progress__bar {
903 | -webkit-box-flex: 1;
904 | -webkit-flex: 1;
905 | flex: 1;
906 | }
907 | .weui-progress__opr {
908 | margin-left: 15px;
909 | font-size: 0;
910 | }
911 | .weui-navbar {
912 | display: -webkit-box;
913 | display: -webkit-flex;
914 | display: flex;
915 | position: absolute;
916 | z-index: 500;
917 | top: 0;
918 | width: 100%;
919 | border-bottom: 1rpx solid #CCCCCC;
920 | }
921 | .weui-navbar__item {
922 | position: relative;
923 | display: block;
924 | -webkit-box-flex: 1;
925 | -webkit-flex: 1;
926 | flex: 1;
927 | padding: 13px 0;
928 | text-align: center;
929 | font-size: 0;
930 | }
931 | .weui-navbar__item.weui-bar__item_on {
932 | color: #1AAD19;
933 | }
934 | .weui-navbar__slider {
935 | position: absolute;
936 | content: " ";
937 | left: 0;
938 | bottom: 0;
939 | width: 6em;
940 | height: 3px;
941 | background-color: #1AAD19;
942 | -webkit-transition: -webkit-transform .3s;
943 | transition: -webkit-transform .3s;
944 | transition: transform .3s;
945 | transition: transform .3s, -webkit-transform .3s;
946 | }
947 | .weui-navbar__title {
948 | display: inline-block;
949 | font-size: 15px;
950 | max-width: 8em;
951 | width: auto;
952 | overflow: hidden;
953 | text-overflow: ellipsis;
954 | white-space: nowrap;
955 | word-wrap: normal;
956 | }
957 | .weui-tab {
958 | position: relative;
959 | height: 100%;
960 | }
961 | .weui-tab__panel {
962 | box-sizing: border-box;
963 | height: 100%;
964 | padding-top: 50px;
965 | overflow: auto;
966 | -webkit-overflow-scrolling: touch;
967 | }
968 | .weui-search-bar {
969 | position: relative;
970 | padding: 8px 10px;
971 | display: -webkit-box;
972 | display: -webkit-flex;
973 | display: flex;
974 | box-sizing: border-box;
975 | background-color: #EFEFF4;
976 | border-top: 1rpx solid #D7D6DC;
977 | border-bottom: 1rpx solid #D7D6DC;
978 | }
979 | .weui-icon-search {
980 | margin-right: 8px;
981 | font-size: inherit;
982 | }
983 | .weui-icon-search_in-box {
984 | position: absolute;
985 | left: 10px;
986 | top: 7px;
987 | }
988 | .weui-search-bar__text {
989 | display: inline-block;
990 | font-size: 14px;
991 | vertical-align: middle;
992 | }
993 | .weui-search-bar__form {
994 | position: relative;
995 | -webkit-box-flex: 1;
996 | -webkit-flex: auto;
997 | flex: auto;
998 | border-radius: 5px;
999 | background: #FFFFFF;
1000 | border: 1rpx solid #E6E6EA;
1001 | }
1002 | .weui-search-bar__box {
1003 | position: relative;
1004 | padding-left: 30px;
1005 | padding-right: 30px;
1006 | width: 100%;
1007 | box-sizing: border-box;
1008 | z-index: 1;
1009 | }
1010 | .weui-search-bar__input {
1011 | height: 28px;
1012 | line-height: 28px;
1013 | font-size: 14px;
1014 | }
1015 | .weui-icon-clear {
1016 | position: absolute;
1017 | top: 0;
1018 | right: 0;
1019 | padding: 7px 8px;
1020 | font-size: 0;
1021 | }
1022 | .weui-search-bar__label {
1023 | position: absolute;
1024 | top: 0;
1025 | right: 0;
1026 | bottom: 0;
1027 | left: 0;
1028 | z-index: 2;
1029 | border-radius: 3px;
1030 | text-align: center;
1031 | color: #9B9B9B;
1032 | background: #FFFFFF;
1033 | line-height: 28px;
1034 | }
1035 | .weui-search-bar__cancel-btn {
1036 | margin-left: 10px;
1037 | line-height: 28px;
1038 | color: #09BB07;
1039 | white-space: nowrap;
1040 | }
1041 |
--------------------------------------------------------------------------------