diff --git a/template/xcx/README.en.md b/template/xcx/README.en.md
new file mode 100644
index 000000000..9f9d94e3d
--- /dev/null
+++ b/template/xcx/README.en.md
@@ -0,0 +1,36 @@
+# cremb_xcx_v3.0
+
+#### Description
+{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Instructions
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Contribution
+
+1. Fork the repository
+2. Create Feat_xxx branch
+3. Commit your code
+4. Create Pull Request
+
+
+#### Gitee Feature
+
+1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4. The most valuable open source project [GVP](https://gitee.com/gvp)
+5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
\ No newline at end of file
diff --git a/template/xcx/README.md b/template/xcx/README.md
new file mode 100644
index 000000000..c29c57146
--- /dev/null
+++ b/template/xcx/README.md
@@ -0,0 +1,122 @@
+# CRMEB XCX v3.x
+
+#### 介绍
+ CRMEB 3.x 小程序
+
+#### 使用说明
+
+1. 配置config.js 中的 HTTP_REQUEST_URL 修改为自己的域名
+2. 配置微信开发工具中小程序的appid
+3. 前往CRMEB后台配置小程序 appid 和 AppSecret
+3. 前往微信小程序后台配置业务,下载 合法域名
+5. 删除readme/images文件夹再进行打包上传,不然会提示超包。
+
+### 小程序直播使用
+方法1,修改app.copy.json文件名称为app.json覆盖原有app.json文件
+方法2,修改根目录下的./app.json文件再第:73行加上
+```
+"plugins": {
+ "live-player-plugin": {
+ "version": "1.2.4",
+ "provider": "wx2b03c6e691cd7370"
+ }
+}
+```
+
+### 目录结构
+
+~~~
+└─view 小程序存放根目录
+ ├─api 接口统一存放目录
+ │ ├─activity.js 营销接口
+ │ ├─api.js 公共接口
+ │ ├─order.js 订单接口
+ │ ├─store.js 产品接口
+ │ └─user.js 用户接口
+ ├─components 组件目录
+ │ ├─address-window 订单页选择地址组件
+ │ ├─authorize 授权组件
+ │ ├─coupon-list-window 优惠券列表组件
+ │ ├─coupon-window 优惠券弹出框组件
+ │ ├─goodList 商品展示组件
+ │ ├─home 悬浮导航组件
+ │ ├─navbar 头部导航组件
+ │ ├─orderGoods 订单产品展示组件
+ │ ├─payment 支付弹出框组件
+ │ ├─productConSwiper Swiper产品轮播图组件
+ │ ├─product-window 为您推荐组件
+ │ ├─promotionGood 促销产品组件
+ │ ├─recommend 热门推荐组件
+ │ ├─share-red-packets 产品页分享组件
+ │ ├─swipers swipers轮播组件
+ │ └─userEvaluation 产品页评论组件
+ ├─css 全局css
+ ├─font icon字体库
+ ├─images 图片目录
+ ├─pages 小程序页面目录
+ │ ├─activity
+ │ │ ├─goods_bargain 砍价列表
+ │ │ ├─goods_bargain_details 砍价详情
+ │ │ ├─goods_combination 拼团列表
+ │ │ ├─goods_combination_details 拼团详情
+ │ │ ├─goods_combination_status 拼团状态
+ │ │ ├─goods_seckill 秒杀列表
+ │ │ ├─goods_seckill_details 秒杀详情
+ │ │ ├─poster-poster 海报页面
+ │ │ └─user_goods_bargain_list 砍价记录
+ │ ├─cash-audit 提现审核
+ │ ├─first-new-product 精品推荐,热门榜单,首发新品,促销单品
+ │ ├─goods_cate 产品分类
+ │ ├─goods_comment_con 产品评价
+ │ ├─goods_comment_list 产品评价列表
+ │ ├─goods_details 产品详情
+ │ ├─goods_list 产品列表
+ │ ├─goods_logistics 产品物流信息
+ │ ├─goods_return 申请退款
+ │ ├─goods_search 搜索
+ │ ├─index 主页
+ │ ├─news_details 新闻详情
+ │ ├─news_list 新闻列表
+ │ ├─order_addcart 购物车
+ │ ├─order_confirm 订单确认
+ │ ├─order_details 订单详情
+ │ ├─order_list 订单列表
+ │ ├─order_pay_status 订单支付状态
+ │ ├─promoter-list 推广人列表
+ │ ├─promoter-order 推广人订单
+ │ ├─promotional-items 促销单品
+ │ ├─user 我的页面
+ │ ├─user_address 添加地址
+ │ ├─user_address_list 地址列表
+ │ ├─user_bill 账单明细
+ │ ├─user_cash 提现
+ │ ├─user_coupon 我的优惠卷
+ │ ├─user_get_coupon 领取优惠卷
+ │ ├─user_goods_collection 收藏产品
+ │ ├─user_info 个人资料
+ │ ├─user_integral 积分明细
+ │ ├─user_money 我的账户
+ │ ├─user_payment 充值
+ │ ├─user_phone 手机号绑定
+ │ ├─user_pwd_edit 修改密码
+ │ ├─user_return_list 退款列表
+ │ ├─user_sgin 签到
+ │ ├─user_sgin_list 签到记录
+ │ ├─user_spread_code 分销海报
+ │ ├─user_spread_money 佣金明细
+ │ ├─user_spread_user 我的推广
+ │ └─user_vip 会员页面
+ ├─utils 工具类目录
+ │ ├─autuLogin.js 自动授权登陆
+ │ ├─request.js 请求基类
+ │ ├─Server.js Socket类
+ │ ├─util.js 工具函数
+ │ └─wxh.js 帮助类函数
+ ├─wxParse WX分析类
+ ├─app.js 入口文件
+ ├─app.json 配置文件
+ ├─app.wxss 样式
+ ├─config.js 程序配置
+ └─project.config.json 项目配置
+
+~~~
diff --git a/template/xcx/api/activity.js b/template/xcx/api/activity.js
new file mode 100644
index 000000000..eccb8fd1c
--- /dev/null
+++ b/template/xcx/api/activity.js
@@ -0,0 +1,161 @@
+import request from "./../utils/request.js";
+/**
+ *
+ * 所有活动接口 包括:拼团,砍价,秒杀
+ *
+*/
+
+/**
+ * 拼团列表
+ *
+*/
+export function getCombinationList(data) {
+ return request.get('combination/list', data,{noAuth:true});
+}
+
+/**
+ * 拼团详情
+ *
+*/
+export function getCombinationDetail(id) {
+ return request.get('combination/detail/'+id);
+}
+
+/**
+ * 拼团 开团
+ */
+export function getCombinationPink(id) {
+ return request.get("combination/pink/" + id);
+}
+
+/**
+ * 拼团 取消开团
+ */
+export function postCombinationRemove(data) {
+ return request.post("combination/remove",data);
+}
+
+/**
+ * 砍价列表
+ */
+export function getBargainList(data) {
+ return request.get("bargain/list", data,{noAuth:true});
+}
+
+/**
+ *
+ * 砍价列表(已参与)
+ * @param object data
+*/
+export function getBargainUserList(data){
+ return request.get('bargain/user/list',data);
+}
+
+
+/**
+ *
+ * 取消砍价
+ * @param int bargainId
+*/
+export function bargainUserCancel(bargainId){
+ return request.post('bargain/user/cancel', { bargainId: bargainId})
+}
+
+/**
+ * 砍价产品详情
+ */
+export function getBargainDetail(id) {
+ return request.get("bargain/detail/" + id);
+}
+
+/**
+ * 砍价 开启砍价用户信息
+ */
+export function postBargainStartUser(data) {
+ return request.post("bargain/start/user", data);
+}
+
+/**
+ * 砍价开启
+ */
+export function postBargainStart(bargainId) {
+ return request.post("bargain/start", { bargainId: bargainId});
+}
+
+/**
+ * 砍价 帮助好友砍价
+ */
+export function postBargainHelp(data) {
+ return request.post("bargain/help", data);
+}
+
+/**
+ * 砍价 砍掉金额
+ */
+export function postBargainHelpPrice(data) {
+ return request.post("bargain/help/price", data);
+}
+
+/**
+ * 砍价 砍价帮
+ */
+export function postBargainHelpList(data) {
+ return request.post("bargain/help/list", data);
+}
+
+/**
+ * 砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格
+ */
+export function postBargainHelpCount(data) {
+ return request.post("bargain/help/count", data);
+}
+
+/**
+ * 砍价 观看/分享/参与次数
+ */
+export function postBargainShare(bargainId) {
+ return request.post("bargain/share", { bargainId: bargainId});
+}
+
+/**
+ * 秒杀产品时间区间
+ *
+*/
+export function getSeckillIndexTime(){
+ return request.get('seckill/index',{},{noAuth:true});
+}
+
+/**
+ * 秒杀产品列表
+ * @param int time
+ * @param object data
+*/
+export function getSeckillList(time,data){
+ return request.get('seckill/list/'+time,data,{noAuth:true});
+}
+
+/**
+ * 秒杀产品详情
+ * @param int id
+*/
+export function getSeckillDetail(id){
+ return request.get('seckill/detail/'+id);
+}
+
+/**
+ * 砍价海报
+ * @param object data
+ *
+*/
+export function getBargainPoster(data){
+ return request.post('bargain/poster',data)
+}
+
+/**
+ * 拼团海报
+ * @param object data
+ *
+*/
+export function getCombinationPoster(data){
+ return request.post('combination/poster',data)
+}
\ No newline at end of file
diff --git a/template/xcx/api/api.js b/template/xcx/api/api.js
new file mode 100644
index 000000000..e95d1df8f
--- /dev/null
+++ b/template/xcx/api/api.js
@@ -0,0 +1,192 @@
+import request from "./../utils/request.js";
+/**
+ * 公共接口 ,优惠券接口 , 行业此讯 , 手机号码注册
+ *
+*/
+
+/**
+ * 获取主页数据 无需授权
+ *
+*/
+export function getIndexData()
+{
+ return request.get("index",{},{ noAuth : true});
+}
+
+/**
+ * 获取登录授权login
+ *
+*/
+export function getLogo()
+{
+ return request.get('wechat/get_logo', {}, { noAuth : true});
+}
+
+/**
+ * 保存form_id
+ * @param string formId
+ */
+export function setFormId(formId) {
+ return request.post("wechat/set_form_id", { formId: formId});
+}
+
+/**
+ * 领取优惠卷
+ * @param int couponId
+ *
+*/
+export function setCouponReceive(couponId){
+ return request.post('coupon/receive', { couponId: couponId});
+}
+/**
+ * 优惠券列表
+ * @param object data
+*/
+export function getCoupons(data){
+ return request.get('coupons',data,{noAuth:true})
+}
+
+/**
+ * 我的优惠券
+ * @param int types 0全部 1未使用 2已使用
+*/
+export function getUserCoupons(types){
+ return request.get('coupons/user/'+types)
+}
+
+/**
+ * 文章分类列表
+ *
+*/
+export function getArticleCategoryList(){
+ return request.get('article/category/list',{},{noAuth:true})
+}
+
+/**
+ * 文章列表
+ * @param int cid
+ *
+*/
+export function getArticleList(cid,data){
+ return request.get('article/list/' + cid, data,{noAuth:true})
+}
+
+/**
+ * 文章 热门列表
+ *
+*/
+export function getArticleHotList(){
+ return request.get('article/hot/list',{},{noAuth:true});
+}
+
+/**
+ * 文章 轮播列表
+ *
+*/
+export function getArticleBannerList(){
+ return request.get('article/banner/list',{},{noAuth:true})
+}
+
+/**
+ * 文章详情
+ * @param int id
+ *
+*/
+export function getArticleDetails(id){
+ return request.get('article/details/'+id,{},{noAuth:true});
+}
+
+/**
+ * 手机号+验证码登录接口
+ * @param object data
+*/
+export function loginMobile(data){
+ return request.post('login/mobile',data,{noAuth:true})
+}
+
+/**
+ * 验证码发送
+ * @param object phone
+*/
+export function registerVerify(code, key, phone, reset){
+ return request.post('register/verify', { code: code, key: key, phone: phone, type: reset === undefined ? 'reset' : reset },{noAuth:true})
+}
+
+/**
+ * 手机号注册
+ * @param object data
+ *
+*/
+export function phoneRegister(data){
+ return request.post('register',data,{noAuth:true});
+}
+
+/**
+ * 手机号修改密码
+ * @param object data
+ *
+*/
+export function phoneRegisterReset(data){
+ return request.post('register/reset',data,{noAuth:true})
+}
+
+/**
+ * 手机号+密码登录
+ * @param object data
+ *
+*/
+export function phoneLogin(data){
+ return request.post('login',data,{noAuth:true})
+}
+
+/**
+ * 切换H5登录
+ * @param object data
+*/
+export function switchH5Login(){
+ return request.post('switch_h5', { 'from':'routine'});
+}
+
+/**
+ * 绑定手机号
+ *
+*/
+export function bindingPhone(data){
+ return request.post('binding',data);
+}
+
+/**
+ * 退出登錄
+ *
+*/
+export function logout(){
+ return request.get('logout');
+}
+
+/**
+ * 获取订阅消息id
+ */
+export function getTemlIds()
+{
+ return request.get('wechat/teml_ids', {}, { noAuth:true});
+}
+
+/**
+ * 获取小程序直播列表
+ */
+export function getLiveList(page,limit) {
+ return request.get('wechat/live', { page, limit}, { noAuth: true });
+}
+
+/**
+ * 获取key值
+ */
+export function verifyCode() {
+ return request.get('verify_code', {}, { noAuth: true });
+}
+/**
+ * 获取城市信息
+ */
+export function getCity() {
+ return request.get('city_list', { }, { noAuth: true });
+}
\ No newline at end of file
diff --git a/template/xcx/api/order.js b/template/xcx/api/order.js
new file mode 100644
index 000000000..4b3df780f
--- /dev/null
+++ b/template/xcx/api/order.js
@@ -0,0 +1,194 @@
+import request from "./../utils/request.js";
+/**
+ *
+ * 订单相关接口
+ *
+*/
+
+/**
+ * 获取购物车列表
+ *
+ */
+export function getCartList() {
+ return request.get("cart/list");
+}
+
+/**
+ * 获取购物车列表
+ * @param numType boolean true 购物车数量,false=购物车产品数量
+ */
+export function getCartCounts(numType) {
+ return request.get("cart/count", { numType: numType === undefined ? true : numType });
+}
+
+
+/**
+ * 修改购物车数量
+ * @param int cartId 购物车id
+ * @param int number 修改数量
+ */
+export function changeCartNum(cartId, number) {
+ return request.post("cart/num", { id: cartId, number: number });
+}
+
+/**
+ * 清除购物车
+ * @param object ids join(',') 切割成字符串
+*/
+export function cartDel(ids){
+ if (typeof id === 'object')
+ ids = ids.join(',');
+ return request.post('cart/del', { ids: ids});
+}
+
+/**
+ * 订单列表
+ * @param object data
+*/
+export function getOrderList(data){
+ return request.get('order/list',data);
+}
+
+/**
+ * 订单确认获取订单详细信息
+ * @param string cartId
+*/
+export function orderConfirm(cartId){
+ return request.post('order/confirm', { cartId: cartId});
+}
+
+/**
+ * 再次下单
+ * @param string uni
+ *
+*/
+export function orderAgain(uni){
+ return request.post('order/again',{uni:uni});
+}
+
+/**
+ * 订单支付
+ * @param object data
+*/
+export function orderPay(data){
+ return request.post('order/pay',data);
+}
+
+/**
+ * 订单详情
+ * @param string uni
+*/
+export function getOrderDetail(uni){
+ return request.get('order/detail/'+uni);
+}
+
+/**
+ * 删除已完成订单
+ * @param string uni
+ *
+*/
+export function orderDel(uni){
+ return request.post('order/del',{uni:uni});
+}
+
+/**
+ * 订单收货
+ * @param string uni
+ *
+*/
+export function orderTake(uni){
+ return request.post('order/take',{uni:uni});
+}
+
+/**
+ * 订单查看物流
+ * @param string uni
+*/
+export function orderExpress(uni){
+ return request.get('order/express/'+uni);
+}
+
+/**
+ * 订单评价
+ * @param object data
+ *
+*/
+export function orderComment(data){
+ return request.post('order/comment',data);
+}
+
+/**
+ * 订单取消
+ * @param string id
+ *
+*/
+export function orderCancel(id){
+ return request.post('order/cancel',{id:id});
+}
+
+/**
+ * 订单产品信息
+ * @param string unique
+*/
+export function orderProduct(unique){
+ return request.post('order/product', { unique: unique});
+}
+
+/**
+ * 订单退款审核
+ * @param object data
+*/
+export function orderRefundVerify(data){
+ return request.post('order/refund/verify',data);
+}
+
+/**
+ * 获取退款理由
+ *
+*/
+export function ordeRefundReason(){
+ return request.get('order/refund/reason');
+}
+
+/**
+ * 订单统计数据
+*/
+export function orderData(){
+ return request.get('order/data')
+}
+
+/**
+ * 获取当前金额能使用的优惠卷
+ * @param string price
+ *
+*/
+export function getCouponsOrderPrice(price, data){
+ return request.get('coupons/order/' + price, data)
+}
+
+/**
+ * 订单创建
+ * @param string key
+ * @param object data
+ *
+*/
+export function orderCreate(key,data){
+ return request.post('order/create/'+key,data);
+}
+/**
+ * 订单查询物流信息
+ * @returns {*}
+ */
+export function express(uni) {
+ return request.get("order/express/" + uni);
+}
+
+/**
+ * 计算订单金额
+ * @param key
+ * @param data
+ * @returns {*}
+ */
+export function postOrderComputed(key, data) {
+ return request.post("/order/computed/" + key, data);
+}
\ No newline at end of file
diff --git a/template/xcx/api/store.js b/template/xcx/api/store.js
new file mode 100644
index 000000000..e30c87079
--- /dev/null
+++ b/template/xcx/api/store.js
@@ -0,0 +1,136 @@
+import request from "./../utils/request.js";
+/**
+ *
+ * 产品相关接口
+ *
+*/
+
+/**
+ * 获取推荐产品
+ *
+ */
+export function getProductHot(page,limit) {
+ return request.get("product/hot", {
+ page: page === undefined ? 1 : page,
+ limit:limit === undefined ? 4 :limit
+ },{noAuth:true});
+}
+
+/**
+ * 购车添加
+ *
+*/
+export function postCartAdd(data) {
+ return request.post('cart/add', data);
+}
+
+/**
+ * 获取收藏列表
+ * @param object data
+*/
+export function getCollectUserList(data) {
+ return request.get('collect/user', data)
+}
+
+/**
+ * 批量收藏
+ *
+ * @param object id 产品编号 join(',') 切割成字符串
+ * @param string category
+*/
+export function collectAll(id, category) {
+ return request.post('collect/all', { id: id, category: category === undefined ? 'product' : category });
+}
+
+/**
+ * 删除收藏产品
+ * @param int id
+ * @param string category product=普通产品,product_seckill=秒杀产品
+*/
+export function collectDel(id, category) {
+ return request.post('collect/del', { id: id, category: category === undefined ? 'product' : category });
+}
+
+/**
+ * 添加收藏
+ * @param int id
+ * @param string category product=普通产品,product_seckill=秒杀产品
+*/
+export function collectAdd(id, category){
+ return request.post('collect/add', { id: id, 'product': category === undefined ? 'product' : category });
+}
+
+/**
+ * 获取产品详情
+ * @param int id
+ *
+*/
+export function getProductDetail(id){
+ return request.get('product/detail/' + id, {}, { noAuth : true });
+}
+
+/**
+ * 产品分享二维码 推广员
+ * @param int id
+*/
+export function getProductCode(id){
+ return request.get('product/code/' + id, { user_type:'routine'});
+}
+
+/**
+ * 获取产品评论
+ * @param int id
+ * @param object data
+ *
+*/
+export function getReplyList(id,data){
+ return request.get('reply/list/'+id,data)
+}
+
+/**
+ * 产品评价数量和好评度
+ * @param int id
+*/
+export function getReplyConfig(id){
+ return request.get('reply/config/'+id);
+}
+
+/**
+ * 获取分类列表
+ *
+*/
+export function getCategoryList(){
+ return request.get('category', {}, { noAuth:true})
+}
+
+/**
+ * 获取产品列表
+ * @param object data
+*/
+export function getProductslist(data){
+ return request.get('products',data,{noAuth:true});
+}
+
+/**
+ * 首页产品的轮播图和产品信息
+ * @param int type
+ *
+*/
+export function getGroomList(type,data){
+ return request.get('groom/list/'+type,data,{noAuth:true});
+}
+
+/**
+ * 获取搜索关键字获取
+ *
+*/
+export function getSearchKeyword(){
+ return request.get('search/keyword',{},{noAuth:true});
+}
+/**
+ * 门店列表
+ * @returns {*}
+ */
+export function storeListApi(data) {
+ return request.get("store_list", data);
+}
\ No newline at end of file
diff --git a/template/xcx/api/user.js b/template/xcx/api/user.js
new file mode 100644
index 000000000..5ce009092
--- /dev/null
+++ b/template/xcx/api/user.js
@@ -0,0 +1,278 @@
+import request from "./../utils/request.js";
+/**
+ *
+ * 用户相关接口
+ *
+*/
+
+/**
+ * 小程序用户登录
+ * @param data object 小程序用户登陆信息
+ */
+export function login(data) {
+ return request.post("wechat/mp_auth", data, { noAuth : true });
+}
+
+
+/**
+ * 获取用户中心菜单
+ *
+ */
+export function getMenuList() {
+ return request.get("menu/user");
+}
+
+/**
+ * 获取用户信息
+ *
+*/
+export function getUserInfo(){
+ return request.get('user');
+}
+
+/**
+ * 修改用户信息
+ * @param object
+*/
+export function userEdit(data){
+ return request.post('user/edit',data);
+}
+
+
+/**
+ * 会员等级列表
+ *
+*/
+export function userLevelGrade(){
+ return request.get('user/level/grade');
+}
+
+/**
+ * 获取某个等级任务
+ * @param int id 任务id
+*/
+export function userLevelTask(id){
+ return request.get('user/level/task/'+id);
+}
+
+/**
+ * 检查用户是否可以成为会员
+ *
+*/
+export function userLevelDetection(){
+ return request.get('user/level/detection');
+}
+
+/**
+ * 获取分销海报图片
+ *
+*/
+export function spreadBanner(){
+ return request.get('spread/banner',{type:1});
+}
+
+/**
+ *
+ * 获取推广用户一级和二级
+ * @param object data
+*/
+export function spreadPeople(data){
+ return request.post('spread/people',data);
+}
+
+/**
+ *
+ * 推广佣金明细
+ * @param int type
+ * @param object data
+*/
+export function spreadCommission(type,data){
+ return request.get('spread/commission/'+type,data);
+}
+
+/**
+ *
+ * 推广佣金/提现总和
+ * @param int type
+*/
+export function spreadCount(type){
+ return request.get('spread/count/'+type);
+}
+
+/**
+ *
+ * 推广订单
+ * @param object data
+*/
+export function spreadOrder(data){
+ return request.post('spread/order',data);
+}
+
+/**
+ * 提现申请
+ * @param object data
+*/
+export function extractCash(data){
+ return request.post('extract/cash',data)
+}
+
+/**
+ * 提现银行/提现最低金额
+ *
+*/
+export function extractBank(){
+ return request.get('extract/bank');
+}
+
+/**
+ * 活动状态
+ *
+*/
+export function userActivity(){
+ return request.get('user/activity');
+}
+
+/**
+ * 小程序充值
+ *
+*/
+export function rechargeRoutine(data){
+ return request.post('recharge/routine',data)
+}
+
+/**
+ *
+ * 地址列表
+ * @param object data
+*/
+export function getAddressList(data){
+ return request.get('address/list',data);
+}
+
+/**
+ * 设置默认地址
+ * @param int id
+*/
+export function setAddressDefault(id){
+ return request.post('address/default/set',{id:id})
+}
+
+/**
+ * 获取默认地址
+ *
+*/
+export function getAddressDefault(){
+ return request.get('address/default');
+}
+/**
+ * 删除地址
+ * @param int id
+ *
+*/
+export function delAddress(id){
+ return request.post('address/del',{id:id})
+}
+
+/**
+ * 修改 添加地址
+ * @param object data
+*/
+export function editAddress(data){
+ return request.post('address/edit',data);
+}
+
+/**
+ * 获取单个地址
+ * @param int id
+*/
+export function getAddressDetail(id){
+ return request.get('address/detail/'+id);
+}
+
+/**
+ * 设置用户分享
+ *
+*/
+export function userShare(){
+ return request.post('user/share');
+}
+
+/**
+ * 获取签到配置
+ *
+*/
+export function getSignConfig(){
+ return request.get('sign/config')
+}
+
+/**
+ * 获取签到列表
+ * @param object data
+*/
+export function getSignList(data){
+ return request.get('sign/list',data);
+}
+
+/**
+ * 签到列表(年月)
+ * @param object data
+ *
+*/
+export function getSignMonthList(data){
+ return request.get('sign/month',data)
+}
+
+/**
+ * 用户签到
+*/
+export function setSignIntegral(){
+ return request.post('sign/integral')
+}
+/*
+ * 资金明细(types|0=全部,1=消费,2=充值,3=返佣,4=提现)
+ * */
+export function getCommissionInfo(q, types) {
+ return request.get("spread/commission/" + types, q);
+}
+/*
+ * 签到用户信息
+ * */
+export function postSignUser(sign) {
+ return request.post("sign/user", sign);
+}
+/*
+ * 积分记录
+ * */
+export function getIntegralList(q) {
+ return request.get("integral/list", q);
+}
+/*
+ * 点击领取优惠券
+ * */
+export function getCouponReceive(couponId) {
+ return request.post("coupon/receive", couponId);
+}
+/*
+ * 领取优惠券列表
+ * */
+export function getCoupon(q) {
+ return request.get("coupons", q);
+}
+/*
+ * 获取推广人排行
+ * */
+export function getRankList(q) {
+ return request.get("rank", q);
+}
+/*
+ * 获取佣金排名
+ * */
+export function getBrokerageRank(q) {
+ return request.get("brokerage_rank", q);
+}
+/**
+ * 充值金额选择
+*/
+export function getRechargeApi() {
+ return request.get('recharge/index')
+}
\ No newline at end of file
diff --git a/template/xcx/app.copy.json b/template/xcx/app.copy.json
new file mode 100644
index 000000000..7df996f9d
--- /dev/null
+++ b/template/xcx/app.copy.json
@@ -0,0 +1,130 @@
+{
+ "pages": [
+ "pages/index/index",
+ "pages/goods_cate/goods_cate",
+ "pages/order_details/index",
+ "pages/user_sgin/index",
+ "pages/user/user",
+ "pages/user_get_coupon/index",
+ "pages/order_confirm/index",
+ "pages/goods_list/goods_list",
+ "pages/user_coupon/index",
+ "pages/goods_comment_list/index",
+ "pages/user_goods_collection/index",
+ "pages/user_address_list/index",
+ "pages/news_list/index",
+ "pages/user_phone/index",
+ "pages/user_pwd_edit/index",
+ "pages/goods_search/index",
+ "pages/user_vip/index",
+ "pages/user_spread_money/index",
+ "pages/user_integral/index",
+ "pages/user_bill/index",
+ "pages/user_money/index",
+ "pages/user_spread_user/index",
+ "pages/user_sgin_list/index",
+ "pages/order_list/index",
+ "pages/goods_details/index",
+ "pages/goods_details_store/index",
+ "pages/news_details/index",
+ "pages/promoter-list/index",
+ "pages/promoter-order/index",
+ "pages/cash-audit/index",
+ "pages/user_cash/index",
+ "pages/user_return_list/index",
+ "pages/goods_return/index",
+ "pages/goods_comment_con/index",
+ "pages/promotional-items/index",
+ "pages/first-new-product/index",
+ "pages/user_spread_code/index",
+ "pages/user_info/index",
+ "pages/order_pay_status/index",
+ "pages/goods_logistics/index",
+ "pages/user_address/index",
+ "pages/order_addcart/order_addcart",
+ "pages/user_payment/index",
+ "pages/order_cancellation/index",
+ "pages/commission_rank/index",
+ "pages/promoter_rank/index",
+ "components/navbar/index",
+ "components/recommend/index",
+ "components/share-red-packets/index",
+ "components/orderGoods/index",
+ "components/swipers/index",
+ "components/goodList/index",
+ "components/promotionGood/index",
+ "components/productConSwiper/index",
+ "components/userEvaluation/index",
+ "components/coupon-window/index",
+ "components/product-window/index",
+ "components/coupon-list-window/index",
+ "components/address-window/index",
+ "components/home/index",
+ "components/write-off/index",
+ "components/general-window/index"
+ ],
+ "subPackages": [
+ {
+ "root": "pages/activity",
+ "name": "activity",
+ "pages": [
+ "goods_seckill_details/index",
+ "goods_seckill/index"
+ ],
+ "plugins": {
+ "live-player-plugin": {
+ "version": "1.2.4",
+ "provider": "wx2b03c6e691cd7370"
+ }
+ }
+ }
+ ],
+ "window": {
+ "backgroundTextStyle": "dark",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTitleText": "WeChat",
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom"
+ },
+ "tabBar": {
+ "backgroundColor": "#ffffff",
+ "color": "#282828",
+ "selectedColor": "#e93323",
+ "borderStyle": "white",
+ "list": [
+ {
+ "pagePath": "pages/index/index",
+ "iconPath": "images/1-001.png",
+ "selectedIconPath": "images/1-002.png",
+ "text": "首页"
+ },
+ {
+ "pagePath": "pages/goods_cate/goods_cate",
+ "iconPath": "images/2-001.png",
+ "selectedIconPath": "images/2-002.png",
+ "text": "分类"
+ },
+ {
+ "pagePath": "pages/order_addcart/order_addcart",
+ "iconPath": "images/3-001.png",
+ "selectedIconPath": "images/3-002.png",
+ "text": "购物车"
+ },
+ {
+ "pagePath": "pages/user/user",
+ "iconPath": "images/4-001.png",
+ "selectedIconPath": "images/4-002.png",
+ "text": "我的"
+ }
+ ]
+ },
+ "permission": {
+ "scope.userLocation": {
+ "desc": "你的位置信息将用于获取附近门店"
+ }
+ },
+ "requiredBackgroundModes": [
+ "location"
+ ],
+ "sitemapLocation": "sitemap.json"
+}
diff --git a/template/xcx/app.js b/template/xcx/app.js
new file mode 100644
index 000000000..c293148e2
--- /dev/null
+++ b/template/xcx/app.js
@@ -0,0 +1,119 @@
+import { HTTP_REQUEST_URL, CACHE_USERINFO, CACHE_TOKEN, CACHE_EXPIRES_TIME } from './config.js';
+import Server from './utils/Server.js';
+import util from './utils/util.js';
+
+App({
+ onLaunch: function (option) {
+ if (HTTP_REQUEST_URL==''){
+ console.error("请配置根目录下的config.js文件中的 'HTTP_REQUEST_URL'\n\n请修改开发者工具中【详情】->【AppID】改为自己的Appid\n\n请前往后台【小程序】->【小程序配置】填写自己的 appId and AppSecret");
+ return false;
+ }
+ let that = this;
+ let token = wx.getStorageSync(CACHE_TOKEN);
+ let expiresTime = wx.getStorageSync(CACHE_EXPIRES_TIME);
+ let userInfo = wx.getStorageSync(CACHE_USERINFO);
+ this.globalData.isLog = !!userInfo && util.checkLogin(token, expiresTime,true);
+ if (this.globalData.isLog) {
+ this.globalData.token = token;
+ this.globalData.expiresTime = expiresTime;
+ this.globalData.userInfo = userInfo ? JSON.parse(userInfo) : {};
+ }
+ if (option.query.hasOwnProperty('scene')){
+ switch (option.scene) {
+ //扫描小程序码
+ case 1047:
+ that.globalData.code = option.query.scene;
+ break;
+ //长按图片识别小程序码
+ case 1048:
+ that.globalData.code = option.query.scene;
+ break;
+ //手机相册选取小程序码
+ case 1049:
+ that.globalData.code = option.query.scene;
+ break;
+ //直接进入小程序
+ case 1001:
+ that.globalData.spid = option.query.scene;
+ break;
+ }
+ }
+ // 获取导航高度;
+ wx.getSystemInfo({
+ success: res => {
+ //导航高度
+ this.globalData.navHeight = res.statusBarHeight * (750 / res.windowWidth) + 97;
+ }, fail(err) {}
+ });
+ const updateManager = wx.getUpdateManager();
+
+ updateManager.onCheckForUpdate(function (res) {
+ // 请求完新版本信息的回调
+
+ })
+
+ updateManager.onUpdateReady(function () {
+ wx.showModal({
+ title: '更新提示',
+ content: '新版本已经准备好,是否重启应用?',
+ success: function (res) {
+ if (res.confirm) {
+ // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
+ updateManager.applyUpdate()
+ }
+ }
+ })
+ });
+
+ updateManager.onUpdateFailed(function () {
+ return that.Tips({title:'新版本下载失败'});
+ })
+ //实例化聊天服务
+ this.$chat = new Server(this);
+ },
+ $chat:null,
+ globalData: {
+ navHeight: 0,
+ routineStyle: '#ffffff',
+ openPages: '',
+ spid: 0,
+ code:0,
+ urlImages: '',
+ url: HTTP_REQUEST_URL,
+ token: '',
+ isLog:false,
+ expiresTime:0,
+ MyMenus:[],
+ userInfo:{},
+ loginType:'routine'
+ },
+ /**
+ * 聊天事件快捷注册
+ *
+ */
+ $on: function (name, action){
+ this.$chat.$on(name,action);
+ },
+ /*
+ * 信息提示 + 跳转
+ * @param object opt {title:'提示语',icon:''} | url
+ * @param object to_url 跳转url 有5种跳转方式 {tab:1-5,url:跳转地址}
+ */
+ Tips: function (opt, to_url) {
+ return util.Tips(opt, to_url);
+ },
+ /**
+ * 快捷调取助手函数
+ */
+ help:function()
+ {
+ return util.$h;
+ },
+ /*
+ * 合并数组
+ * @param array list 请求返回数据
+ * @param array sp 原始数组
+ * @return array
+ */
+ SplitArray: function (list, sp) { return util.SplitArray(list, sp)},
+})
\ No newline at end of file
diff --git a/template/xcx/app.json b/template/xcx/app.json
new file mode 100644
index 000000000..3fd988387
--- /dev/null
+++ b/template/xcx/app.json
@@ -0,0 +1,124 @@
+{
+ "pages": [
+ "pages/index/index",
+ "pages/goods_cate/goods_cate",
+ "pages/order_details/index",
+ "pages/user_sgin/index",
+ "pages/user/user",
+ "pages/user_get_coupon/index",
+ "pages/order_confirm/index",
+ "pages/goods_list/goods_list",
+ "pages/user_coupon/index",
+ "pages/goods_comment_list/index",
+ "pages/user_goods_collection/index",
+ "pages/user_address_list/index",
+ "pages/news_list/index",
+ "pages/user_phone/index",
+ "pages/user_pwd_edit/index",
+ "pages/goods_search/index",
+ "pages/user_vip/index",
+ "pages/user_spread_money/index",
+ "pages/user_integral/index",
+ "pages/user_bill/index",
+ "pages/user_money/index",
+ "pages/user_spread_user/index",
+ "pages/user_sgin_list/index",
+ "pages/order_list/index",
+ "pages/goods_details/index",
+ "pages/goods_details_store/index",
+ "pages/news_details/index",
+ "pages/promoter-list/index",
+ "pages/promoter-order/index",
+ "pages/cash-audit/index",
+ "pages/user_cash/index",
+ "pages/user_return_list/index",
+ "pages/goods_return/index",
+ "pages/goods_comment_con/index",
+ "pages/promotional-items/index",
+ "pages/first-new-product/index",
+ "pages/user_spread_code/index",
+ "pages/user_info/index",
+ "pages/order_pay_status/index",
+ "pages/goods_logistics/index",
+ "pages/user_address/index",
+ "pages/order_addcart/order_addcart",
+ "pages/user_payment/index",
+ "pages/order_cancellation/index",
+ "pages/commission_rank/index",
+ "pages/promoter_rank/index",
+ "components/navbar/index",
+ "components/recommend/index",
+ "components/share-red-packets/index",
+ "components/orderGoods/index",
+ "components/swipers/index",
+ "components/goodList/index",
+ "components/promotionGood/index",
+ "components/productConSwiper/index",
+ "components/userEvaluation/index",
+ "components/coupon-window/index",
+ "components/product-window/index",
+ "components/coupon-list-window/index",
+ "components/address-window/index",
+ "components/home/index",
+ "components/write-off/index",
+ "components/general-window/index"
+ ],
+ "subPackages": [
+ {
+ "root": "pages/activity",
+ "name": "activity",
+ "pages": [
+ "goods_seckill_details/index",
+ "goods_seckill/index"
+ ]
+ }
+ ],
+ "window": {
+ "backgroundTextStyle": "dark",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTitleText": "WeChat",
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom"
+ },
+ "tabBar": {
+ "backgroundColor": "#ffffff",
+ "color": "#282828",
+ "selectedColor": "#e93323",
+ "borderStyle": "white",
+ "list": [
+ {
+ "pagePath": "pages/index/index",
+ "iconPath": "images/1-001.png",
+ "selectedIconPath": "images/1-002.png",
+ "text": "首页"
+ },
+ {
+ "pagePath": "pages/goods_cate/goods_cate",
+ "iconPath": "images/2-001.png",
+ "selectedIconPath": "images/2-002.png",
+ "text": "分类"
+ },
+ {
+ "pagePath": "pages/order_addcart/order_addcart",
+ "iconPath": "images/3-001.png",
+ "selectedIconPath": "images/3-002.png",
+ "text": "购物车"
+ },
+ {
+ "pagePath": "pages/user/user",
+ "iconPath": "images/4-001.png",
+ "selectedIconPath": "images/4-002.png",
+ "text": "我的"
+ }
+ ]
+ },
+ "permission": {
+ "scope.userLocation": {
+ "desc": "你的位置信息将用于获取附近门店"
+ }
+ },
+ "requiredBackgroundModes": [
+ "location"
+ ],
+ "sitemapLocation": "sitemap.json"
+}
\ No newline at end of file
diff --git a/template/xcx/app.wxss b/template/xcx/app.wxss
new file mode 100644
index 000000000..9e44a1f16
--- /dev/null
+++ b/template/xcx/app.wxss
@@ -0,0 +1,70 @@
+/**app.wxss**/
+@import '/font/iconfont.wxss';
+@import '/css/style.wxss';
+@import '/css/animate.wxss';
+.start{width: 122rpx; height: 30rpx;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHoAAADMCAYAAAC8yreMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpDMDg0NEE2QTVFNUQxMUU4QUI3RkNGOTgwNDYyRUZDOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozODU5QzVENDMwRjcxMUU5OTQ0QzlEOTQ5RkE1MTlBRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozODU5QzVEMzMwRjcxMUU5OTQ0QzlEOTQ5RkE1MTlBRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpkN2ZhZTM5NC0wNmE4LTkzNGYtODA0OS0zNjBjNTcxOTU2YjAiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmYWI1M2NhMC04MWE1LTE5NGItYmJlYi1jMzI2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');background-repeat: no-repeat; background-size: 122rpx auto;}
+.start.star5{background-position: 0 3rpx;}
+.start.star4{background-position: 0 -30rpx;}
+.start.star3{background-position: 0 -70rpx;}
+.start.star2{background-position: 0 -105rpx;}
+.start.star1{background-position: 0 -140rpx;}
+.start.star0{background-position: 0 -175rpx;}
+page{font-size:28rpx;background-color: #f5f5f5; color: #333;}
+view{box-sizing:border-box;}
+.acea-row{display:flex;flex-wrap:wrap;}
+.acea-row.row-top{align-items:flex-start;}
+.acea-row.row-middle{align-items:center;}
+.acea-row.row-bottom{align-items:flex-end;}
+.acea-row.row-left{justify-content:flex-start;}
+.acea-row.row-center{justify-content:center;}
+.acea-row.row-right{justify-content:flex-end;}
+.acea-row.row-between{justify-content:space-between;}
+.acea-row.row-around{justify-content:space-around;}
+.acea-row.row-column{flex-direction:column;}
+.acea-row.row-column-between{flex-direction:column;justify-content:space-between;}
+.acea-row.row-column-around{flex-direction:column;justify-content:space-around;}
+.acea-row.row-center-wrapper{align-items:center;justify-content:center;}
+.acea-row.row-between-wrapper{align-items:center;justify-content:space-between;}
+.font-color{color:#fc4141!important;}
+.bg-color{background-color:#e93323!important;}
+.icon-color{color:#ff3c2b;}
+.cart-color{color:#ff3700!important;border:1px solid #ff3700!important;}
+/* 单选 */
+radio .wx-radio-input{border-radius:50%;width:38rpx;height:38rpx;}
+radio .wx-radio-input.wx-radio-input-checked{border: 1px solid #e93323 !important;
+background-color: #e93323 !important;}
+/* 多选 */
+checkbox .wx-checkbox-input{border-radius:50%;width:38rpx;height:38rpx;}
+checkbox .wx-checkbox-input.wx-checkbox-input-checked{
+border: 1px solid #e93323 !important;background-color: #e93323 !important;color:#fff!important;}
+checkbox .wx-checkbox-input.wx-checkbox-input-checked::before {font-size:35rpx;}
+.line1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
+.line2{word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
+.mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:0.5;z-index:5;}
+button{padding:0;margin:0;line-height:normal;background-color:#fff;}
+button::after{border:0;}
+@keyframes load
+ {
+ from {transform: rotate(0deg);}
+ to {transform: rotate(360deg);}
+ }
+.loadingpic {
+ animation: load 3s linear 1s infinite;
+}
+ .loading-list {
+ animation: load linear 1s infinite;
+ font-size:40rpx;margin-right:22rpx;
+}
+.loading{width:100%;height:100rpx;line-height:100rpx;align-items:center;justify-content:center;position: relative;text-align:center;}
+.loading .line{position: absolute;width: 450rpx;left: 150rpx;top: 50rpx;height: 1px;border-top:1px solid #eee ;}
+.loading .text{position: relative;display: inline-block;padding: 0 20rpx;background: #fff;z-index: 2;color: #777;}
+
+.loadingicon .loading {animation: load linear 1s infinite;font-size:45rpx;color:#000;}
+.loadingicon{width:100%;height:80rpx;}
+.mt-30{margin-top:30rpx;}
+.mt-20{margin-top:20rpx;}
+.mr-10{margin-right:10rpx;}
+
+
+
+
diff --git a/template/xcx/components/address-window/index.js b/template/xcx/components/address-window/index.js
new file mode 100644
index 000000000..ad30265ef
--- /dev/null
+++ b/template/xcx/components/address-window/index.js
@@ -0,0 +1,58 @@
+import { getAddressList } from '../../api/user.js';
+
+var app = getApp();
+Component({
+ properties: {
+ //跳转url链接
+ pagesUrl:{
+ type:String,
+ value:'',
+ },
+ address:{
+ type: Object,
+ value:{
+ address:true,
+ addressId:0,
+ }
+ },
+ isLog:{
+ type:Boolean,
+ value:false,
+ },
+ },
+ data: {
+ active: 0,
+ //地址列表
+ addressList:[],
+ is_loading:true,
+ },
+ attached: function () {
+
+ },
+ methods: {
+ tapAddress: function (e) {
+ this.setData({ active: e.currentTarget.dataset.id });
+ this.triggerEvent('OnChangeAddress', e.currentTarget.dataset.addressid);
+ },
+ close: function () {
+ this.setData({ 'address.address': false });
+ this.triggerEvent('changeTextareaStatus');
+ },
+ goAddressPages:function(){
+ this.setData({ 'address.address': false });
+ this.triggerEvent('changeTextareaStatus');
+ wx.navigateTo({url: this.data.pagesUrl});
+ },
+ getAddressList:function(){
+ var that=this;
+ getAddressList({page:1,limit:5}).then(res=>{
+ var addressList = res.data;
+ //处理默认选中项
+ for (var i = 0, leng = addressList.length; i < leng; i++) {
+ if (addressList[i].id == that.data.address.addressId) that.setData({ active: i });
+ }
+ that.setData({ addressList: addressList,is_loading:false });
+ })
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/address-window/index.json b/template/xcx/components/address-window/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/address-window/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/address-window/index.wxml b/template/xcx/components/address-window/index.wxml
new file mode 100644
index 000000000..8e3322815
--- /dev/null
+++ b/template/xcx/components/address-window/index.wxml
@@ -0,0 +1,17 @@
+
+ 选择地址
+
+
+
+
+ {{item.real_name}}{{item.phone}}
+ {{item.province}}{{item.city}}{{item.district}}{{item.detail}}
+
+
+
+
+
+
+ 选择其地址
+
+
diff --git a/template/xcx/components/address-window/index.wxss b/template/xcx/components/address-window/index.wxss
new file mode 100644
index 000000000..2f825d0db
--- /dev/null
+++ b/template/xcx/components/address-window/index.wxss
@@ -0,0 +1,15 @@
+@import '/app.wxss';
+.address-window{background-color:#fff;position:fixed;bottom:0;left:0;width:100%;z-index:101;transform:translate3d(0,100%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);}
+.address-window.on{transform:translate3d(0,0,0);}
+.address-window .title{font-size:32rpx;font-weight:bold;text-align:center;height:123rpx;line-height:123rpx;position:relative;}
+.address-window .title .iconfont{position:absolute;right:30rpx;color:#8a8a8a;font-size:35rpx;}
+.address-window .list .item{margin-left:30rpx;padding-right:30rpx;border-bottom:1px solid #eee;height:129rpx;font-size:25rpx;color:#333;}
+.address-window .list .item .iconfont{font-size:37rpx;color:#2c2c2c;}
+.address-window .list .item .iconfont.icon-complete{font-size:30rpx;color:#fff;}
+.address-window .list .item .address{width:560rpx;}
+.address-window .list .item .address .name{font-size:28rpx;font-weight:bold;color:#282828;margin-bottom:4rpx;}
+.address-window .list .item .address .name .phone{margin-left:18rpx;}
+.address-window .addressBnt{font-size:30rpx;font-weight:bold;color:#fff;width:690rpx;height:86rpx;border-radius:43rpx;text-align:center;line-height:86rpx;margin:85rpx auto;}
+.address-window .pictrue{width:414rpx;height:336rpx;margin:0 auto;}
+.address-window .pictrue image{width:100%;height:100%;}
+
diff --git a/template/xcx/components/authorize/authorize.js b/template/xcx/components/authorize/authorize.js
new file mode 100644
index 000000000..5d3133d91
--- /dev/null
+++ b/template/xcx/components/authorize/authorize.js
@@ -0,0 +1,133 @@
+import { CACHE_USERINFO, CACHE_TOKEN, CACHE_EXPIRES_TIME } from '../../config.js';
+import Util from '../../utils/util.js';
+import { getLogo } from '../../api/api.js';
+import { login } from '../../api/user.js';
+
+let app = getApp();
+
+Component({
+ properties: {
+ iShidden: {
+ type: Boolean,
+ value: true,
+ },
+ //是否自动登录
+ isAuto: {
+ type: Boolean,
+ value: true,
+ },
+ isGoIndex:{
+ type: Boolean,
+ value:true,
+ },
+ },
+ data: {
+ cloneIner: null,
+ loading:false,
+ errorSum:0,
+ errorNum:3
+ },
+ attached() {
+ this.get_logo_url();
+ this.setAuthStatus();
+ },
+ methods: {
+ close(){
+ let pages = getCurrentPages();
+ let currPage = pages[pages.length - 1];
+ if(this.data.isGoIndex){
+ wx.switchTab({url:'/pages/index/index'});
+ }else{
+ this.setData({
+ iShidden: true
+ });
+ if (currPage && currPage.data.iShidden != undefined){
+ currPage.setData({ iShidden:true});
+ }
+ }
+ },
+ get_logo_url: function () {
+ var that = this;
+ if (wx.getStorageSync('logo_url')) return this.setData({ logo_url: wx.getStorageSync('logo_url') });
+ getLogo().then(res=>{
+ wx.setStorageSync('logo_url', res.data.logo_url);
+ that.setData({ logo_url: res.data.logo_url });
+ });
+ },
+ //检测登录状态并执行自动登录
+ setAuthStatus() {
+ var that = this;
+ Util.chekWxLogin().then((res)=> {
+ let pages = getCurrentPages();
+ let currPage = pages[pages.length - 1];
+ if (currPage && currPage.data.iShidden != undefined) {
+ currPage.setData({ iShidden:true});
+ }
+ if (res.isLogin) {
+ if (!Util.checkLogin()) return Promise.reject({ authSetting: true, msg: '用户token失效', userInfo: res.userInfo});
+ that.triggerEvent('onLoadFun', app.globalData.userInfo);
+ }else{
+ wx.showLoading({ title: '正在登录中' });
+ that.setUserInfo(res.userInfo,true);
+ }
+ }).catch(res=>{
+ if (res.authSetting === false) {
+ //没有授权不会自动弹出登录框
+ if (that.data.isAuto === false) return;
+ //自动弹出授权
+ that.setData({ iShidden: false });
+ } else if (res.authSetting){
+ //授权后登录token失效了
+ that.setUserInfo(res.userInfo);
+ }
+ })
+ },
+ //授权
+ setUserInfo(userInfo,isLogin) {
+ let that = this;
+ wx.showLoading({ title: '正在登录中' });
+ if (isLogin){
+ that.getWxUserInfo(userInfo);
+ }else{
+ Util.getCodeLogin((res)=>{
+ Util.wxgetUserInfo().then(userInfo=>{
+ userInfo.code = res.code;
+ that.getWxUserInfo(userInfo);
+ }).catch(res=>{
+ wx.hideLoading();
+ });
+ });
+ }
+ },
+ getWxUserInfo: function (userInfo){
+ let that = this;
+ userInfo.spread_spid = app.globalData.spid;//获取推广人ID
+ userInfo.spread_code = app.globalData.code;//获取推广人分享二维码ID
+ login(userInfo).then(res => {
+ app.globalData.token = res.data.token;
+ app.globalData.isLog = true;
+ app.globalData.userInfo = res.data.userInfo;
+ app.globalData.expiresTime = res.data.expires_time;
+ wx.setStorageSync(CACHE_TOKEN, res.data.token);
+ wx.setStorageSync(CACHE_EXPIRES_TIME, res.data.expires_time);
+ wx.setStorageSync(CACHE_USERINFO, JSON.stringify(res.data.userInfo));
+ if (res.data.cache_key) wx.setStorage({ key: 'cache_key', data: res.data.cache_key });
+ //取消登录提示
+ wx.hideLoading();
+ //关闭登录弹出窗口
+ that.setData({ iShidden: true, errorSum: 0 });
+ //执行登录完成回调
+ that.triggerEvent('onLoadFun', app.globalData.userInfo);
+ }).catch((err) => {
+ wx.hideLoading();
+ that.data.errorSum++;
+ that.setData({ errorSum: that.data.errorSum });
+ if (that.data.errorSum >= that.data.errorNum) {
+ Util.Tips({ title: err });
+ } else {
+ that.setUserInfo(userInfo);
+ }
+ });
+ }
+ },
+})
\ No newline at end of file
diff --git a/template/xcx/components/authorize/authorize.json b/template/xcx/components/authorize/authorize.json
new file mode 100644
index 000000000..b5ecd1b5f
--- /dev/null
+++ b/template/xcx/components/authorize/authorize.json
@@ -0,0 +1,3 @@
+{
+ "component":true
+}
\ No newline at end of file
diff --git a/template/xcx/components/authorize/authorize.wxml b/template/xcx/components/authorize/authorize.wxml
new file mode 100644
index 000000000..fb344211d
--- /dev/null
+++ b/template/xcx/components/authorize/authorize.wxml
@@ -0,0 +1,11 @@
+
+
+
\ No newline at end of file
diff --git a/template/xcx/components/authorize/authorize.wxss b/template/xcx/components/authorize/authorize.wxss
new file mode 100644
index 000000000..6e498430f
--- /dev/null
+++ b/template/xcx/components/authorize/authorize.wxss
@@ -0,0 +1,12 @@
+/* pages/authorize/authorize.wxss */
+@import "../../app.wxss";
+
+.Popup{width:500rpx;background-color:#fff;position:fixed;top:50%;left:50%;margin-left:-250rpx;transform:translateY(-50%);z-index:320;}
+.Popup image{width:150rpx;height:150rpx;margin:-67rpx auto 0 auto;display:block;border: 8rpx solid #fff;border-radius: 50%}
+.Popup .title{font-size:28rpx;color:#000;text-align:center;margin-top: 30rpx}
+.Popup .tip{font-size:22rpx;color:#555;padding:0 24rpx;margin-top:25rpx;}
+.Popup .bottom .item{width:50%;height:80rpx;background-color:#eeeeee;text-align:center;line-height:80rpx;font-size:24rpx;color:#666;margin-top:54rpx;}
+.Popup .bottom .item.on{width: 100%}
+.flex{display:flex;}
+.Popup .bottom .item.grant{font-size:28rpx;color:#fff;font-weight:bold;background-color:#e93323;border-radius:0;padding:0;}
+.mask{position:fixed;top:0;right:0;left:0;bottom:0;background-color:rgba(0,0,0,0.65);z-index:310;}
\ No newline at end of file
diff --git a/template/xcx/components/coupon-list-window/index.js b/template/xcx/components/coupon-list-window/index.js
new file mode 100644
index 000000000..ca643cdd3
--- /dev/null
+++ b/template/xcx/components/coupon-list-window/index.js
@@ -0,0 +1,55 @@
+import { setCouponReceive } from '../../api/api.js';
+const app = getApp();
+Component({
+ properties: {
+ coupon: {
+ type: Object,
+ value:{
+ list:[],
+ statusTile:''
+ },
+ },
+ cartId: {
+ type: String,
+ value: '',
+ },
+ //打开状态 0=领取优惠券,1=使用优惠券
+ openType:{
+ type:Number,
+ value:0,
+ }
+ },
+ data: {
+ },
+ attached: function () {
+ console.log(this.data.cartId)
+ },
+ methods: {
+ close: function () {
+ this.triggerEvent('ChangCouponsClone');
+ },
+ getCouponUser:function(e){
+ var that = this;
+ var id = e.currentTarget.dataset.id;
+ var index = e.currentTarget.dataset.index;
+ var list = that.data.coupon.list;
+ if (list[index].is_use == true && this.data.openType==0) return true;
+ switch (this.data.openType){
+ case 0:
+ //领取优惠券
+ setCouponReceive(id).then(res=>{
+ list[index].is_use = true;
+ that.setData({
+ ['coupon.list']: list
+ });
+ app.Tips({ title: '领取成功' });
+ that.triggerEvent('ChangCoupons', list[index]);
+ });
+ break;
+ case 1:
+ that.triggerEvent('ChangCoupons',index);
+ break;
+ }
+ },
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/coupon-list-window/index.json b/template/xcx/components/coupon-list-window/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/coupon-list-window/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/coupon-list-window/index.wxml b/template/xcx/components/coupon-list-window/index.wxml
new file mode 100644
index 000000000..74e2aaae4
--- /dev/null
+++ b/template/xcx/components/coupon-list-window/index.wxml
@@ -0,0 +1,28 @@
+
+ 优惠券
+
+
+
+ ¥{{item.coupon_price}}
+ 满{{item.use_min_price}}元可用
+
+
+
+ 通用劵
+ 品类券
+ 商品券
+ {{item.title}}
+
+
+ {{item.start_time ? item.start_time+'-' : ''}}{{item.end_time}}
+ {{item.use_title || '已领取'}}
+ {{coupon.statusTile || '立即领取'}}
+
+
+
+
+
+
+
+
+
diff --git a/template/xcx/components/coupon-list-window/index.wxss b/template/xcx/components/coupon-list-window/index.wxss
new file mode 100644
index 000000000..373e0d43e
--- /dev/null
+++ b/template/xcx/components/coupon-list-window/index.wxss
@@ -0,0 +1,26 @@
+@import '/app.wxss';
+.coupon-list-window{position:fixed;bottom:0;left:0;width:100%;background-color:#f5f5f5;border-radius:16rpx 16rpx 0 0;transform:translate3d(0,100%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);z-index: 1000}
+.coupon-list-window.on{transform:translate3d(0,0,0);}
+.coupon-list-window .title{height:124rpx;width:100%;text-align:center;line-height:124rpx;font-size:32rpx;font-weight:bold;position:relative;}
+.coupon-list-window .title .iconfont{position:absolute;right:30rpx;top:50%;transform:translateY(-50%);font-size:35rpx;color:#8a8a8a;font-weight:normal;width: 100rpx;display: block;text-align: right;}
+.coupon-list-window .coupon-list{margin:0 0 50rpx 0;height:550rpx;overflow:auto;}
+.coupon-list-window .pictrue{width:414rpx;height:336rpx;margin:0 auto 50rpx auto;}
+.coupon-list-window .pictrue image{width:100%;height:100%;}
+.pic-num{color: #fff;font-size: 24rpx;}
+.line-title{
+ width:90rpx;
+ padding: 0 10rpx;
+ box-sizing: border-box;
+ background:rgba(255,247,247,1);
+ border:1px solid rgba(232,51,35,1);
+ opacity:1;
+ border-radius:20rpx;
+ font-size:20rpx;
+ color: #E83323;
+ margin-right: 12rpx;
+}
+.line-title.gray{
+ border-color:#BBB;
+ color:#bbb;
+ background-color:#F5F5F5;
+}
diff --git a/template/xcx/components/coupon-window/index.js b/template/xcx/components/coupon-window/index.js
new file mode 100644
index 000000000..bb4c78a62
--- /dev/null
+++ b/template/xcx/components/coupon-window/index.js
@@ -0,0 +1,24 @@
+var app = getApp();
+Component({
+ properties: {
+ window:{
+ type: Boolean,
+ value: false,
+ },
+ couponList:{
+ type:Array,
+ value:[],
+ }
+ },
+ data: {
+
+ },
+ attached: function () {
+
+ },
+ methods: {
+ close:function(){
+ this.triggerEvent('onColse');
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/coupon-window/index.json b/template/xcx/components/coupon-window/index.json
new file mode 100644
index 000000000..8835af069
--- /dev/null
+++ b/template/xcx/components/coupon-window/index.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/template/xcx/components/coupon-window/index.wxml b/template/xcx/components/coupon-window/index.wxml
new file mode 100644
index 000000000..153ee26f5
--- /dev/null
+++ b/template/xcx/components/coupon-window/index.wxml
@@ -0,0 +1,24 @@
+
+
+
+
+ ¥{{item.coupon_price}}
+ 满{{item.use_min_price}}元可用
+
+
+
+ {{item.title}}
+ {{item.start_time ? item.start_time+'-' : ''}}{{item.end_time}}
+
+ 通用劵
+ 品类券
+ 商品券
+
+
+
+
+ 立即领取
+
+
+
+
diff --git a/template/xcx/components/coupon-window/index.wxss b/template/xcx/components/coupon-window/index.wxss
new file mode 100644
index 000000000..2837e53ed
--- /dev/null
+++ b/template/xcx/components/coupon-window/index.wxss
@@ -0,0 +1,18 @@
+@import '/app.wxss';
+.coupon-window{background-image:url('data:image/png;base64,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');background-repeat:no-repeat;background-size:100% 100%;width:630rpx;height:649rpx;position:fixed;top:20%;z-index:99;left:50%;margin-left:-305rpx;transform:translate3d(0,-200%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);}
+.coupon-window.on{transform:translate3d(0,0,0);}
+.coupon-window .couponWinList{width:480rpx;margin:157rpx 0 0 60rpx;height:415rpx;overflow:auto;}
+.coupon-window .couponWinList .item{width:100%;height:120rpx;background-color:#fff;position:relative;margin-bottom:17rpx;}
+.coupon-window .couponWinList .item::after{content:'';position: absolute;width:18rpx;height: 18rpx;border-radius: 50%;background-color: #f2443a;left:25.5%;bottom:0;margin-bottom:-9rpx;}
+.coupon-window .couponWinList .item::before{content:'';position: absolute;width:18rpx;height: 18rpx;border-radius: 50%;background-color: #f2443a;left:25.5%;top:0;margin-top:-9rpx;}
+.coupon-window .couponWinList .item .money{width:130rpx;border-right:1px dashed #ddd;height:100%;text-align:center;font-size:26rpx;font-weight:bold;}
+.coupon-window .couponWinList .item .money .num{font-size:40rpx;}
+.coupon-window .couponWinList .item .text{width:349rpx;padding:0 20rpx;box-sizing:border-box;height: 100%;}
+.coupon-window .couponWinList .item .text .pic{font-size:22rpx;color:#999;}
+.coupon-window .couponWinList .item .text .name{font-size:26rpx;color:#282828;font-weight:bold;margin-bottom:9rpx;width: 260rpx;}
+.coupon-window .couponWinList .item .type{display: inline-block; font-size:15.5rpx;width:27rpx;height:78rpx;color: #FFF;text-align: center;background:linear-gradient(251deg,rgba(236,51,35,1) 0%,rgba(248,76,0,1) 100%);position: relative;}
+.coupon-window .couponWinList .item .type:after{content: '';position: absolute;top: 55rpx;right: 0rpx; border: 14rpx solid transparent;border-bottom-color: #fff;}
+.coupon-window .lid{background-image:url('data:image/png;base64,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');background-repeat:no-repeat;background-size:100% 100%;width:573rpx;height:224rpx;position:fixed;left:49.8%;top:20%;margin:424rpx 0 0 -296rpx;}
+.coupon-window .lid .bnt{font-size:29rpx;width:440rpx;height:80rpx;border-radius:40rpx;background-color:#f9f1d3;text-align:center;line-height:80rpx;font-weight:bold;margin:98rpx auto 0 auto;}
+.coupon-window .lid .iconfont{color:#fff;font-size:60rpx;text-align:center;margin-top:87rpx;}
+.pic-num{color: #BBBBBB;font-size: 18rpx;}
\ No newline at end of file
diff --git a/template/xcx/components/general-window/index.js b/template/xcx/components/general-window/index.js
new file mode 100644
index 000000000..19519fe0c
--- /dev/null
+++ b/template/xcx/components/general-window/index.js
@@ -0,0 +1,19 @@
+var app = getApp();
+Component({
+ properties: {
+ generalActive: {
+ type: Boolean
+ },
+ generalContent: {
+ type:Object
+ }
+ },
+ data: {},
+ attached: function () {
+ },
+ methods: {
+ close: function (){
+ this.triggerEvent('generalWindow');
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/general-window/index.json b/template/xcx/components/general-window/index.json
new file mode 100644
index 000000000..8835af069
--- /dev/null
+++ b/template/xcx/components/general-window/index.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/template/xcx/components/general-window/index.wxml b/template/xcx/components/general-window/index.wxml
new file mode 100644
index 000000000..e66d45c14
--- /dev/null
+++ b/template/xcx/components/general-window/index.wxml
@@ -0,0 +1,10 @@
+
+
+
+ {{generalContent.title}}
+ {{generalContent.promoterNum}}
+ 我知道了
+
+
+
+
diff --git a/template/xcx/components/general-window/index.wxss b/template/xcx/components/general-window/index.wxss
new file mode 100644
index 000000000..087afcd08
--- /dev/null
+++ b/template/xcx/components/general-window/index.wxss
@@ -0,0 +1,12 @@
+@import '/font/iconfont.wxss';
+@import '/css/style.wxss';
+.generalWindow .generalTip{position:fixed;top:50%;left:50%;width:560rpx;margin-left:-280rpx;z-index:99;border-radius:20rpx;background-color:#fff;transition:all 0.3s ease-in-out 0s;opacity:0;transform: scale(0);padding-bottom:60rpx;margin-top:-330rpx;}
+.generalWindow .generalTip.on{opacity:1;transform: scale(1);}
+.generalWindow .generalTip .pictrue{width:100%;height:270rpx;}
+.generalWindow .generalTip .pictrue image{width:100%;height:100%;border-radius:20rpx 20rpx 0 0;}
+.generalWindow .generalTip .name{font-size:36rpx;font-weight:bold;color:#282828;text-align:center;padding:0 29rpx;margin-top:37rpx;}
+.generalWindow .generalTip .info{font-size:30rpx;color:#666;padding:0 29rpx;text-align:center;margin-top:21rpx;}
+.generalWindow .generalTip .info .money{font-weight:bold;margin:0 10rpx;}
+.generalWindow .generalTip .help{font-size:32rpx;font-weight:bold;text-align:center;margin-top:40rpx;}
+.generalWindow .generalTip .tipBnt{font-size:32rpx;color:#fff;width:360rpx;height:82rpx;border-radius:41rpx;background-image:linear-gradient(to right,#f67a38 0%,#f11b09 100%);text-align:center;line-height:82rpx;margin:50rpx auto 0 auto;}
+.generalWindow .mask{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(0, 0, 0, 0.7);z-index:55;}
\ No newline at end of file
diff --git a/template/xcx/components/goodList/index.js b/template/xcx/components/goodList/index.js
new file mode 100644
index 000000000..aa71e7bb9
--- /dev/null
+++ b/template/xcx/components/goodList/index.js
@@ -0,0 +1,36 @@
+// components/goodList/index.js
+Component({
+ properties: {
+ status: {
+ type: String,
+ value: 0,
+ },
+ bastList: {
+ type: Object,
+ value: [],
+ }
+ },
+ data: {
+ },
+ methods: {
+ /**
+ * 商品详情跳转
+ */
+ goDetail: function (e) {
+ let item = e.currentTarget.dataset.items
+ if (item.activity && item.activity.type === "1") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_seckill_details/index?id=${item.activity.id}&time=${item.activity.time}&status=1`
+ });
+ } else if (item.activity && item.activity.type === "2") {
+ wx.navigateTo({ url: `/pages/activity/goods_bargain_details/index?id=${item.activity.id}`});
+ } else if (item.activity && item.activity.type === "3") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_combination_details/index?id=${item.activity.id}`
+ });
+ } else {
+ wx.navigateTo({ url: `/pages/goods_details/index?id=${item.id}` });
+ }
+ },
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/goodList/index.json b/template/xcx/components/goodList/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/goodList/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/goodList/index.wxml b/template/xcx/components/goodList/index.wxml
new file mode 100644
index 000000000..6ed3dfe56
--- /dev/null
+++ b/template/xcx/components/goodList/index.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ 秒杀
+ 砍价
+ 拼团
+
+
+
+ {{item.store_name}}
+ ¥{{item.price}}
+ ¥{{item.vip_price || 0}}已售{{item.sales}}{{item.unit_name}}
+ 已售{{item.sales}}{{item.unit_name}}
+
+
+
+
+
+
+
diff --git a/template/xcx/components/goodList/index.wxss b/template/xcx/components/goodList/index.wxss
new file mode 100644
index 000000000..f6143fbfa
--- /dev/null
+++ b/template/xcx/components/goodList/index.wxss
@@ -0,0 +1,14 @@
+@import '/app.wxss';
+.goodList .item{position:relative;padding-left:30rpx;}
+.goodList .item .pictrue{width:180rpx;height:180rpx;position:relative;}
+.goodList .item .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.goodList .item .pictrue .numPic{position:absolute;left:7rpx;top:7rpx;width:50rpx;height:50rpx;border-radius:50%;}
+.goodList .item .underline{padding:30rpx 30rpx 30rpx 0;border-bottom:1px solid #f5f5f5;}
+.goodList .item:nth-last-child(1) .underline{border-bottom:0; }
+.goodList .item .text{font-size:30rpx;color:#222;width:489rpx;}
+.goodList .item .text .money{font-size:26rpx;font-weight:bold;margin-top:50rpx;}
+.goodList .item .text .money .num{font-size:34rpx;}
+.goodList .item .text .vip-money{font-size:24rpx;color:#282828;font-weight:bold;margin-top:15rpx;}
+.goodList .item .text .vip-money image{width:46rpx;height:21rpx;margin-left:5rpx;}
+.goodList .item .text .vip-money .num{font-size:22rpx;color:#aaa;font-weight:normal;margin:-2rpx 0 0 22rpx;}
+.goodList .item .iconfont{position:absolute;right:30rpx;width:50rpx;height:50rpx;border-radius:50%;font-size:30rpx;bottom:38rpx;}
\ No newline at end of file
diff --git a/template/xcx/components/home/index.js b/template/xcx/components/home/index.js
new file mode 100644
index 000000000..e7da12daf
--- /dev/null
+++ b/template/xcx/components/home/index.js
@@ -0,0 +1,77 @@
+// components/home/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ homeActive:false
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ setTouchMove: function (e) {
+ var that = this;
+ if (e.touches[0].clientY < 545 && e.touches[0].clientY > 66) {
+ that.setData({
+ top: e.touches[0].clientY
+ })
+ }
+ },
+ open:function(){
+ this.setData({
+ homeActive: !this.data.homeActive
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/home/index.json b/template/xcx/components/home/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/home/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/home/index.wxml b/template/xcx/components/home/index.wxml
new file mode 100644
index 000000000..d004dea8e
--- /dev/null
+++ b/template/xcx/components/home/index.wxml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template/xcx/components/home/index.wxss b/template/xcx/components/home/index.wxss
new file mode 100644
index 000000000..ac6a58ae1
--- /dev/null
+++ b/template/xcx/components/home/index.wxss
@@ -0,0 +1,16 @@
+@import '/app.wxss';
+/* .home{position: fixed ;bottom:100rpx;color: white;text-align: center;z-index:99;right:10rpx;}
+.home .homeCon{width:86rpx;border-radius:50rpx;padding:34rpx 0;box-sizing:border-box;transition:all 0.3s ease-in-out 0s;opacity:0;transform: scale(0);height:0rpx;color:#e93323;}
+.home .homeCon.on{opacity:1;transform: scale(1);height:300rpx;color:#fff;}
+.home .homeCon .iconfont{font-size:48rpx;}
+.home .pictrue{width:86rpx;height:86rpx;border-radius:50%;margin-top:20rpx;}
+.home .pictrue image{width:100%;height:100%;border-radius:50%;} */
+
+.home{position: fixed ;bottom:100rpx;color: white;text-align: center;z-index:99;right:10rpx;height: 86rpx;width:96rpx;overflow:hidden;}
+.home.on{width:396rpx;}
+.home .homeCon{border-radius:50rpx;box-sizing:border-box;transform:translate3d(500rpx,0,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);height:86rpx;background-color:#f44939;color:#f44939;}
+.home .homeCon.on{transform:translate3d(0,0,0);color:#fff;}
+.home .homeCon .iconfont{font-size:48rpx;width:100rpx;}
+.home .pictrue{width:86rpx;height:86rpx;border-radius:50%;margin-left: 10rpx;margin-top:-86rpx;}
+.home .pictrue image{width:100%;height:100%;border-radius:50%;transform: rotate(90deg);}
+.home .pictrue.on{margin-top:0;}
diff --git a/template/xcx/components/navbar/index.js b/template/xcx/components/navbar/index.js
new file mode 100644
index 000000000..08c50bba1
--- /dev/null
+++ b/template/xcx/components/navbar/index.js
@@ -0,0 +1,69 @@
+var app = getApp();
+Component({
+ properties: {
+ parameter:{
+ type: Object,
+ value:{
+ class:'0'
+ },
+ },
+ logoUrl:{
+ type:String,
+ value:'',
+ }
+ },
+ data: {
+ navH: ""
+ },
+ ready: function(){
+ this.setClass();
+ var pages = getCurrentPages();
+ if (pages.length <= 1) this.setData({'parameter.return':0});
+ },
+ attached: function () {
+ this.setData({
+ navH: app.globalData.navHeight
+ });
+ },
+ methods: {
+ return:function(){
+ wx.navigateBack({
+ delta: 1
+ });
+ // var pages = getCurrentPages();
+ // wx.navigateBack({
+ // delta: pages.length-2
+ // });
+ },
+ setGoodsSearch:function(){
+ wx.navigateTo({
+ url: '/pages/goods_search/index',
+ })
+ },
+ setClass:function(){
+ var color = '';
+ switch (this.data.parameter.class) {
+ case "0": case 'on':
+ color = 'on'
+ break;
+ case '1': case 'black':
+ color = 'black'
+ break;
+ case '2': case 'gray':
+ color = 'gray'
+ break;
+ case '3': case "red":
+ color = 'red'
+ break;
+ case '4': case "gradual01":
+ color = 'gradual01'
+ break;
+ default:
+ break;
+ }
+ this.setData({
+ 'parameter.class': color
+ })
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/navbar/index.json b/template/xcx/components/navbar/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/navbar/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/navbar/index.wxml b/template/xcx/components/navbar/index.wxml
new file mode 100644
index 000000000..a5db45823
--- /dev/null
+++ b/template/xcx/components/navbar/index.wxml
@@ -0,0 +1,13 @@
+
+
+
+ 搜索商品
+
+
+
+ {{parameter.title}}
+
+
+
+
+
diff --git a/template/xcx/components/navbar/index.wxss b/template/xcx/components/navbar/index.wxss
new file mode 100644
index 000000000..80ce53840
--- /dev/null
+++ b/template/xcx/components/navbar/index.wxss
@@ -0,0 +1,17 @@
+@import '/app.wxss';
+.navbar{position:fixed;background-color:#fff;top:0;left:0;z-index:999;width:100%;}
+.navbar.on{background-color:#e93323;}
+.navbar.black{background-color:#232323;}
+.navbar.gray{background-color:#666;}
+.navbar.red{background-color:#eb5447;}
+.navbar.gradual01{background-image: linear-gradient(to right,#f67837 0%,#f11d09 100%);}
+.navbar .navbarH{position:relative;}
+.navbar .navbarH .navbarCon{position:absolute;bottom:0;height:100rpx;width:100%;}
+.navbar .navbarH .navbarCon .name{color:#000;font-size:36rpx;font-weight:bold;width: 300rpx;text-align: center;}
+.navbar .navbarH .navbarCon .name.on{color:#fff;}
+.navbar .navbarH .navbarCon .icon-xiangzuo{color:#000;font-weight:bold;position:absolute;font-size:40rpx;left:16rpx;width:100rpx;height:56rpx;line-height:54rpx;top:50%;transform:translateY(-50%);}
+.navbar .navbarH .navbarCon .icon-xiangzuo.on{color:#fff;}
+.navbar .navbarH .navbarCon .logo{width:127rpx;height:45rpx;position:absolute;left:30rpx;top:50%;transform:translateY(-50%);}
+.navbar .navbarH .navbarCon .logo image{width:100%;height:100%;display:block;}
+.navbar .navbarH .navbarCon .search{width:360rpx;height:64rpx;background-color:#f7f7f7;border-radius:50rpx;padding:0 28rpx;box-sizing:border-box;font-size:28rpx;color:#bbb;margin-right:26rpx;}
+.navbar .navbarH .navbarCon .search .icon-xiazai5{font-size:34rpx;margin-right:16rpx;}
\ No newline at end of file
diff --git a/template/xcx/components/orderGoods/index.js b/template/xcx/components/orderGoods/index.js
new file mode 100644
index 000000000..f1d3f114e
--- /dev/null
+++ b/template/xcx/components/orderGoods/index.js
@@ -0,0 +1,21 @@
+var app = getApp();
+Component({
+ properties: {
+ evaluate: {
+ type: Number,
+ value:0,
+ },
+ cartInfo:{
+ type:Object,
+ value:[],
+ },
+ orderId:{
+ type:String,
+ value:'',
+ },
+ },
+ data: {
+ },
+ methods: {
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/orderGoods/index.json b/template/xcx/components/orderGoods/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/orderGoods/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/orderGoods/index.wxml b/template/xcx/components/orderGoods/index.wxml
new file mode 100644
index 000000000..71e0c0dc5
--- /dev/null
+++ b/template/xcx/components/orderGoods/index.wxml
@@ -0,0 +1,22 @@
+
+ 共{{cartInfo.length}}件商品
+
+
+
+
+
+
+
+
+ {{item.productInfo.store_name}}
+ x {{item.cart_num}}
+
+ {{item.productInfo.attrInfo.suk}}
+ ¥{{item.productInfo.attrInfo.price}}
+ ¥{{item.productInfo.price}}
+ 评价
+ 已评价
+
+
+
+
diff --git a/template/xcx/components/orderGoods/index.wxss b/template/xcx/components/orderGoods/index.wxss
new file mode 100644
index 000000000..dd7f4c7b5
--- /dev/null
+++ b/template/xcx/components/orderGoods/index.wxss
@@ -0,0 +1,6 @@
+@import '/app.wxss';
+.orderGoods{background-color:#fff;margin-top:12rpx;}
+.orderGoods .total{width:100%;height:86rpx;padding:0 30rpx;border-bottom:2rpx solid #f0f0f0;font-size:30rpx;color:#282828;line-height:86rpx;}
+
+
+
diff --git a/template/xcx/components/payment/index.js b/template/xcx/components/payment/index.js
new file mode 100644
index 000000000..802b3c3f6
--- /dev/null
+++ b/template/xcx/components/payment/index.js
@@ -0,0 +1,92 @@
+import { orderPay } from '../../api/order.js';
+
+const app = getApp();
+
+Component({
+ properties: {
+ payMode:{
+ type:Array,
+ value:[],
+ },
+ pay_close:{
+ type:Boolean,
+ value:false,
+ },
+ order_id:{
+ type:String,
+ value:''
+ },
+ totalPrice:{
+ type:String,
+ value:'0'
+ },
+ },
+ data: {
+ },
+ attached: function () {
+ },
+ methods: {
+ close:function(){
+ this.triggerEvent('onChangeFun',{action:'pay_close'});
+ },
+ goPay:function(e){
+ let that = this;
+ let paytype = e.currentTarget.dataset.value;
+ let number = e.currentTarget.dataset.number
+ if (!that.data.order_id) return app.Tips({title:'请选择要支付的订单'});
+ if (paytype == 'yue' && parseFloat(number) < parseFloat(that.data.totalPrice)) return app.Tips({ title: '余额不足!' });
+ wx.showLoading({ title: '支付中' });
+ orderPay({ uni: that.data.order_id, paytype: paytype, 'from': 'routine' }).then(res => {
+ switch (paytype){
+ case 'weixin':
+ if (res.data.result === undefined) return app.Tips({title:'缺少支付参数'});
+ var jsConfig = res.data.result.jsConfig;
+ wx.requestPayment({
+ timeStamp: jsConfig.timestamp,
+ nonceStr: jsConfig.nonceStr,
+ package: jsConfig.package,
+ signType: jsConfig.signType,
+ paySign: jsConfig.paySign,
+ success: function (res) {
+ wx.hideLoading();
+ return app.Tips({ title: res.msg, icon: 'success' }, () => {
+ that.triggerEvent('onChangeFun', { action: 'pay_complete' });
+ });
+ },
+ fail: function (e) {
+ wx.hideLoading();
+ return app.Tips({ title: '取消支付' }, () => {
+ that.triggerEvent('onChangeFun', { action: 'pay_fail' });
+ });
+ },
+ complete: function (e) {
+ wx.hideLoading();
+ if (e.errMsg == 'requestPayment:cancel') return app.Tips({ title: '取消支付' }, () => {
+ that.triggerEvent('onChangeFun', { action: 'pay_fail' });
+ });
+ },
+ });
+ break;
+ case 'yue':
+ wx.hideLoading();
+ return app.Tips({ title: res.msg, icon: 'success' }, () => {
+ that.triggerEvent('onChangeFun', { action: 'pay_complete' });
+ });;
+ break;
+ case 'offline':
+ wx.hideLoading();
+ return app.Tips({ title: res.msg, icon: 'success' }, () => {
+ that.triggerEvent('onChangeFun', { action: 'pay_complete' });
+ });;
+ break;
+ }
+ }).catch(err => {
+ wx.hideLoading();
+ return app.Tips({ title: err }, () => {
+ that.triggerEvent('onChangeFun', { action: 'pay_fail' });
+ });
+ })
+ },
+ }
+
+})
\ No newline at end of file
diff --git a/template/xcx/components/payment/index.json b/template/xcx/components/payment/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/payment/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/payment/index.wxml b/template/xcx/components/payment/index.wxml
new file mode 100644
index 000000000..9afd18766
--- /dev/null
+++ b/template/xcx/components/payment/index.wxml
@@ -0,0 +1,19 @@
+
+
+ 选择付款方式
+
+
+
+
+
+ {{item.name}}
+
+ {{item.title}} ¥{{ item.number }}
+
+ {{item.title}}
+
+
+
+
+
+
diff --git a/template/xcx/components/payment/index.wxss b/template/xcx/components/payment/index.wxss
new file mode 100644
index 000000000..16cd4a8ec
--- /dev/null
+++ b/template/xcx/components/payment/index.wxss
@@ -0,0 +1,91 @@
+@import '/font/iconfont.wxss';
+@import '/app.wxss';
+.payment {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ border-radius: 16rpx 16rpx 0 0;
+ background-color: #fff;
+ padding-bottom: 60rpx;
+ z-index: 99;
+ transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
+ transform: translate3d(0, 100%, 0);
+}
+
+.payment.on {
+ transform: translate3d(0, 0, 0);
+}
+
+.payment .title {
+ text-align: center;
+ height: 123rpx;
+ font-size: 32rpx;
+ color: #282828;
+ font-weight: bold;
+ padding-right: 30rpx;
+ margin-left: 30rpx;
+ position: relative;
+ border-bottom: 1rpx solid #eee;
+}
+
+.payment .title .iconfont {
+ position: absolute;
+ right: 30rpx;
+ top: 50%;
+ transform: translateY(-50%);
+ font-size: 43rpx;
+ color: #8a8a8a;
+ font-weight: normal;
+}
+
+.payment .item {
+ border-bottom: 1rpx solid #eee;
+ height: 130rpx;
+ margin-left: 30rpx;
+ padding-right: 30rpx;
+}
+
+.payment .item .left {
+ width: 610rpx;
+}
+
+.payment .item .left .text {
+ width: 540rpx;
+}
+
+.payment .item .left .text .name {
+ font-size: 32rpx;
+ color: #282828;
+}
+
+.payment .item .left .text .info {
+ font-size: 24rpx;
+ color: #999;
+}
+
+.payment .item .left .text .info .money {
+ color: #ff9900;
+}
+
+.payment .item .left .iconfont {
+ font-size: 45rpx;
+ color: #09bb07;
+}
+
+.payment .item .left .iconfont.icon-zhifubao {
+ color: #00aaea;
+}
+
+.payment .item .left .iconfont.icon-yuezhifu {
+ color: #ff9900;
+}
+
+.payment .item .left .iconfont.icon-yuezhifu1 {
+ color: #eb6623;
+}
+
+.payment .item .iconfont {
+ font-size: 0.3rpx;
+ color: #999;
+}
\ No newline at end of file
diff --git a/template/xcx/components/product-window/index.js b/template/xcx/components/product-window/index.js
new file mode 100644
index 000000000..306f82bef
--- /dev/null
+++ b/template/xcx/components/product-window/index.js
@@ -0,0 +1,98 @@
+var app = getApp();
+Component({
+ properties: {
+ iSplus:{
+ type: Boolean,
+ value: true
+ },
+ iSbnt:{
+ type:Number,
+ value:0
+ },
+ limitNum:{
+ type: Number,
+ value: 0
+ },
+ attribute: {
+ type: Object,
+ value:{}
+ },
+ attrList:{
+ type: Object,
+ value:[],
+ },
+ productAttr:{
+ type: Object,
+ value: [],
+ },
+ productSelect:{
+ type: Object,
+ value: {
+ image: '',
+ store_name: '',
+ price: 0,
+ unique: '',
+ stock:0,
+ }
+ },
+ },
+ data: {
+ attrValue:[],
+ attrIndex:0,
+ isShow: false
+ },
+ attached: function () {
+ let pages = getCurrentPages();
+ let currPage = null;
+ if (pages.length) {
+ currPage = pages[pages.length - 1];
+ }
+ let route = currPage.route
+ this.setData({ isShow: route.indexOf("goods_details")!==-1});
+ },
+ methods: {
+ /**
+ * 购物车手动输入数量
+ *
+ */
+ bindCode: function (e) {
+ this.triggerEvent('iptCartNum', e.detail.value);
+ },
+ close: function () {
+ this.triggerEvent('myevent', {'window': false});
+ },
+ goCat:function(){
+ this.triggerEvent('goCat');
+ },
+ CartNumDes:function(){
+ this.triggerEvent('ChangeCartNum', false);
+ },
+ CartNumInt:function(){
+ this.triggerEvent('ChangeCartNum', true);
+ },
+ tapAttr:function(e){
+ //父级index
+ var indexw = e.currentTarget.dataset.indexw;
+ //子集index
+ var indexn = e.currentTarget.dataset.indexn;
+ //每次点击获得的属性
+ var attr = this.data.productAttr[indexw].attr_value[indexn];
+ //设置当前点击属性
+ this.data.productAttr[indexw].checked = attr['attr'];
+ this.setData({
+ productAttr: this.data.productAttr,
+ });
+ var value = this.getCheckedValue().sort().join(',');
+ this.triggerEvent('ChangeAttr',value);
+ },
+ getCheckedValue: function () {
+ return this.data.productAttr.map(function (attr) {
+ return attr.checked;
+ });
+ },
+ ResetAttr:function(){
+ for (var k in this.data.productAttr) this.data.productAttr[k].checked='';
+ this.setData({ productAttr: this.data.productAttr});
+ },
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/product-window/index.json b/template/xcx/components/product-window/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/product-window/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/product-window/index.wxml b/template/xcx/components/product-window/index.wxml
new file mode 100644
index 000000000..df970632d
--- /dev/null
+++ b/template/xcx/components/product-window/index.wxml
@@ -0,0 +1,36 @@
+
+
+
+
+ {{productSelect.store_name}}
+
+ ¥{{productSelect.price}}
+ 库存: {{productSelect.stock}}
+ 限量: {{productSelect.quota_show}}
+
+
+
+
+
+
+ {{item.attr_name}}
+
+ {{itemn.attr}}
+
+
+
+
+ 数量
+
+ -
+
+
+
+ +
+ +
+
+
+ 我要参团
+ 已售罄
+
+
diff --git a/template/xcx/components/product-window/index.wxss b/template/xcx/components/product-window/index.wxss
new file mode 100644
index 000000000..5a2c47b9c
--- /dev/null
+++ b/template/xcx/components/product-window/index.wxss
@@ -0,0 +1,30 @@
+@import '/app.wxss';
+.product-window{position:fixed;bottom:0;width:100%;left:0;background-color:#fff;z-index:88;border-radius:16rpx 16rpx 0 0;padding-bottom:140rpx;transform:translate3d(0,100%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);}
+.product-window.on{transform:translate3d(0,0,0);}
+.product-window.join{padding-bottom: 30rpx;}
+.product-window .textpic{padding:0 130rpx 0 30rpx;margin-top:29rpx;position:relative;}
+.product-window .textpic .pictrue{width:150rpx;height:150rpx;}
+.product-window .textpic .pictrue image{width:100%;height:100%;border-radius:10rpx;}
+.product-window .textpic .text{width:410rpx;font-size:32rpx;color:#202020;}
+.product-window .textpic .text .money{font-size:24rpx;margin-top:40rpx;}
+.product-window .textpic .text .money .num{font-size:36rpx;}
+.product-window .textpic .text .money .stock{color:#999;margin-left:18rpx;}
+.product-window .textpic .iconfont{position:absolute;right:30rpx;top:-5rpx;font-size:35rpx;color:#8a8a8a;}
+.product-window .productWinList{max-height:395rpx;overflow:auto;margin-top:36rpx;}
+.product-window .productWinList .item~.item{margin-top:36rpx;}
+.product-window .productWinList .item .title{font-size:30rpx;color:#999;padding:0 30rpx;}
+.product-window .productWinList .item .listn{padding:0 30rpx 0 16rpx;}
+.product-window .productWinList .item .listn .itemn{border:1px solid #bbb;font-size:26rpx;color:#282828;padding:7rpx 33rpx;border-radius:6rpx;margin:14rpx 0 0 14rpx;}
+.product-window .productWinList .item .listn .itemn.on{color:#fff;background-color:#ff3700;border-color:#ff3700;}
+.product-window .cart{margin-top:36rpx;padding:0 30rpx;}
+.product-window .cart .title{font-size:30rpx;color:#999;}
+.product-window .cart .carnum{height:54rpx;margin-top:24rpx;}
+.product-window .cart .carnum view{border:1px solid #a4a4a4;width:84rpx;text-align:center;height:100%;line-height:54rpx;color:#a4a4a4;font-size:45rpx;}
+.product-window .cart .carnum .reduce{border-right:0;border-radius:6rpx 0 0 6rpx;line-height:48rpx;}
+.product-window .cart .carnum .reduce.on{border-color:#e3e3e3;color:#dedede;}
+.product-window .cart .carnum .plus{border-left:0;border-radius:0 6rpx 6rpx 0;line-height:46rpx;}
+.product-window .cart .carnum .plus.on{border-color:#e3e3e3;color:#dedede;}
+.product-window .cart .carnum .num{color:#282828;font-size:28rpx;}
+.product-window .joinBnt{font-size: 30rpx;width: 620rpx;height: 86rpx;border-radius: 50rpx;text-align: center;line-height: 86rpx;color: #fff;margin: 21rpx auto 0 auto;}
+.product-window .joinBnt.on{background-color:#bbb;color:#fff;}
+
diff --git a/template/xcx/components/productConSwiper/index.js b/template/xcx/components/productConSwiper/index.js
new file mode 100644
index 000000000..c0f4f9da1
--- /dev/null
+++ b/template/xcx/components/productConSwiper/index.js
@@ -0,0 +1,40 @@
+var app = getApp();
+Component({
+ properties: {
+ imgUrls:{
+ type:Object,
+ value:[]
+ },
+ videoline:
+ {
+ type:String,
+ value:""
+ }
+ },
+ data: {
+ indicatorDots: true,
+ circular: true,
+ autoplay: false,
+ interval: 3000,
+ duration: 500,
+ currents: "1",
+ controls:true
+ },
+ ready:function(){
+ this.videoContext = wx.createVideoContext('myVideo',this);
+ },
+ methods: {
+ bindPause:function(){
+ this.videoContext.play();
+ this.setData({
+ controls:false
+ });
+ },
+ change: function (e) {
+ this.setData({
+ currents: e.detail.current + 1
+ })
+ }
+ }
+})
+
diff --git a/template/xcx/components/productConSwiper/index.json b/template/xcx/components/productConSwiper/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/productConSwiper/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/productConSwiper/index.wxml b/template/xcx/components/productConSwiper/index.wxml
new file mode 100644
index 000000000..ac141b77e
--- /dev/null
+++ b/template/xcx/components/productConSwiper/index.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template/xcx/components/productConSwiper/index.wxss b/template/xcx/components/productConSwiper/index.wxss
new file mode 100644
index 000000000..253f141b2
--- /dev/null
+++ b/template/xcx/components/productConSwiper/index.wxss
@@ -0,0 +1,10 @@
+.product-bg{width:100%;height:750rpx;position:relative;}
+.product-bg swiper{width:100%;height:100%;position:relative;}
+.product-bg .slide-image{width:100%;height:100%;}
+.product-bg .pages{position:absolute;background-color:#fff;height:34rpx;padding:0 10rpx;border-radius:3rpx;right:30rpx;bottom:30rpx;line-height:34rpx;font-size:24rpx;color:#050505;}
+#myVideo{width: 100%;height: 100%}
+.product-bg .item{position:relative;width:100%;height:100%;}
+.product-bg .item .poster{position:absolute;top:0;left:0;height:750rpx;width:100%;}
+.product-bg .item .poster .image{width:100%;height:100%;}
+.product-bg .item .stop{position:absolute;top:50%;left:50%;width:136rpx;height:136rpx;margin-top:-68rpx;margin-left:-68rpx;}
+.product-bg .item .stop .image{width:100%;height:100%;}
\ No newline at end of file
diff --git a/template/xcx/components/promotionGood/index.js b/template/xcx/components/promotionGood/index.js
new file mode 100644
index 000000000..c20baa3a8
--- /dev/null
+++ b/template/xcx/components/promotionGood/index.js
@@ -0,0 +1,39 @@
+var app = getApp();
+Component({
+ properties: {
+ benefit: {
+ type: Object,
+ value: [],
+ }
+ },
+ data: {
+
+ },
+ ready: function () {
+
+ },
+ attached: function () {
+
+ },
+ methods: {
+ /**
+ * 商品详情跳转
+ */
+ goDetail: function (e) {
+ let item = e.currentTarget.dataset.items
+ if (item.activity && item.activity.type === "1") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_seckill_details/index?id=${item.activity.id}&time=${item.activity.time}&status=1`
+ });
+ } else if (item.activity && item.activity.type === "2") {
+ wx.navigateTo({ url: `/pages/activity/goods_bargain_details/index?id=${item.activity.id}`});
+ } else if (item.activity && item.activity.type === "3") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_combination_details/index?id=${item.activity.id}`
+ });
+ } else {
+ wx.navigateTo({ url: `/pages/goods_details/index?id=${item.id}` });
+ }
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/promotionGood/index.json b/template/xcx/components/promotionGood/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/promotionGood/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/promotionGood/index.wxml b/template/xcx/components/promotionGood/index.wxml
new file mode 100644
index 000000000..1dd7e5cb4
--- /dev/null
+++ b/template/xcx/components/promotionGood/index.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ 秒杀
+ 砍价
+ 拼团
+
+
+ {{item.store_name}}
+
+ 促销价: ¥{{item.price}}
+
+
+ 日常价:¥{{item.ot_price}}
+ 仅剩:{{item.stock}}{{item.unit_name}}
+
+
+
+
+
diff --git a/template/xcx/components/promotionGood/index.wxss b/template/xcx/components/promotionGood/index.wxss
new file mode 100644
index 000000000..b68bd0ec9
--- /dev/null
+++ b/template/xcx/components/promotionGood/index.wxss
@@ -0,0 +1,11 @@
+@import '/app.wxss';
+.promotionGood{padding:0 30rpx;}
+.promotionGood .item{border-bottom:1rpx solid #eee;height:250rpx;}
+.promotionGood .item .pictrue{width:188rpx;height:188rpx;position: relative;}
+.promotionGood .item .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.promotionGood .item .text{font-size:24rpx;color:#999;width:472rpx;}
+.promotionGood .item .text .name{font-size:30rpx;color:#333;}
+.promotionGood .item .text .sp-money{margin:34rpx 0 20rpx 0;}
+.promotionGood .item .text .sp-money .moneyCon{padding:0 18rpx;background-color:red;height:46rpx;line-height:46rpx;background-image:linear-gradient(to right,#ff6248 0%,#ff3e1e 100%);font-size:20rpx;color:#fff;border-radius:24rpx 3rpx 24rpx 3rpx;}
+.promotionGood .item .text .sp-money .moneyCon .num{font-size:24rpx;}
+.promotionGood .item .text .money{text-decoration:line-through;}
\ No newline at end of file
diff --git a/template/xcx/components/recommend/index.js b/template/xcx/components/recommend/index.js
new file mode 100644
index 000000000..43364cedc
--- /dev/null
+++ b/template/xcx/components/recommend/index.js
@@ -0,0 +1,34 @@
+var app = getApp();
+Component({
+ properties: {
+ host_product:{
+ type: Object,
+ value:[],
+ }
+ },
+ data: {
+ },
+ attached: function () {
+ },
+ methods: {
+ /**
+ * 商品详情跳转
+ */
+ goDetail: function (e) {
+ let item = e.currentTarget.dataset.items
+ if (item.activity && item.activity.type === "1") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_seckill_details/index?id=${item.activity.id}&time=${item.activity.time}&status=1`
+ });
+ } else if (item.activity && item.activity.type === "2") {
+ wx.navigateTo({ url: `/pages/activity/goods_bargain_details/index?id=${item.activity.id}`});
+ } else if (item.activity && item.activity.type === "3") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_combination_details/index?id=${item.activity.id}`
+ });
+ } else {
+ wx.navigateTo({ url: `/pages/goods_details/index?id=${item.id}` });
+ }
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/recommend/index.json b/template/xcx/components/recommend/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/recommend/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/recommend/index.wxml b/template/xcx/components/recommend/index.wxml
new file mode 100644
index 000000000..83ddb096e
--- /dev/null
+++ b/template/xcx/components/recommend/index.wxml
@@ -0,0 +1,19 @@
+
+
+
+ 热门推荐
+
+
+
+
+
+
+ 秒杀
+ 砍价
+ 拼团
+
+ {{item.store_name}}
+ ¥{{item.price}}
+
+
+
diff --git a/template/xcx/components/recommend/index.wxss b/template/xcx/components/recommend/index.wxss
new file mode 100644
index 000000000..337bef9fb
--- /dev/null
+++ b/template/xcx/components/recommend/index.wxss
@@ -0,0 +1,13 @@
+@import '/app.wxss';
+.recommend{background-color:#fff;}
+.recommend .title{height:135rpx;font-size:28rpx;color:#282828;}
+.recommend .title .name{margin:0 28rpx;}
+.recommend .title .iconfont{font-size:170rpx;color:#454545;}
+.recommend .title .iconfont.lefticon{transform:rotate(180deg);}
+.recommend .recommendList{padding:0 30rpx;}
+.recommend .recommendList .item{width:335rpx;margin-bottom:30rpx;}
+.recommend .recommendList .item .pictrue{width:100%;height:335rpx;position: relative;}
+.recommend .recommendList .item .pictrue image{width:100%;height:100%;border-radius:10rpx;}
+.recommend .recommendList .item .name{font-size:28rpx;color:#282828;margin-top:20rpx;}
+.recommend .recommendList .item .money{font-size:20rpx;margin-top:8rpx;}
+.recommend .recommendList .item .money .num{font-size:28rpx;}
diff --git a/template/xcx/components/share-red-packets/index.js b/template/xcx/components/share-red-packets/index.js
new file mode 100644
index 000000000..fe012f25e
--- /dev/null
+++ b/template/xcx/components/share-red-packets/index.js
@@ -0,0 +1,27 @@
+var app = getApp();
+Component({
+ properties: {
+ sharePacket:{
+ type:Object,
+ value:{
+ isState: true,
+ priceName:'',
+ }
+ }
+ },
+ data: {
+
+ },
+ attached: function () {
+ },
+ methods: {
+ closeShare:function(){
+ this.setData({
+ "sharePacket.isState": true
+ })
+ },
+ goShare:function(){
+ this.triggerEvent('listenerActionSheet');
+ },
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/share-red-packets/index.json b/template/xcx/components/share-red-packets/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/share-red-packets/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/share-red-packets/index.wxml b/template/xcx/components/share-red-packets/index.wxml
new file mode 100644
index 000000000..d1002f3a8
--- /dev/null
+++ b/template/xcx/components/share-red-packets/index.wxml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ 会员分享返
+ ¥ {{sharePacket.priceName}}
+ 下单即返佣金
+ 立即分享
+
+
+
diff --git a/template/xcx/components/share-red-packets/index.wxss b/template/xcx/components/share-red-packets/index.wxss
new file mode 100644
index 000000000..b1754cfd9
--- /dev/null
+++ b/template/xcx/components/share-red-packets/index.wxss
@@ -0,0 +1,12 @@
+@import '/app.wxss';
+.sharing-packets{position:fixed;left:30rpx;z-index:5;transition:all 0.3s ease-in-out 0s;opacity:1;transform: scale(1);bottom:150rpx;}
+.sharing-packets.on{transform: scale(0);opacity:0;}
+.sharing-packets .iconfont{width:44rpx;height:44rpx;border-radius:50%;text-align:center;line-height:44rpx;background-color:#999;font-size:20rpx;color:#fff;margin:0 auto;box-sizing:border-box;padding-left:1px;}
+.sharing-packets .line{width:2rpx;height:40rpx;background-color:#999;margin:0 auto;}
+.sharing-packets .sharing-con{width:187rpx;height:210rpx;position:relative;}
+.sharing-packets .sharing-con image{width:100%;height:100%;}
+.sharing-packets .sharing-con .text{position:absolute;top:30rpx;font-size:20rpx;width:100%;text-align:center;}
+.sharing-packets .sharing-con .text .money{font-size:32rpx;font-weight:bold;margin-top:5rpx;}
+.sharing-packets .sharing-con .text .money .label{font-size:20rpx;}
+.sharing-packets .sharing-con .text .tip{font-size:18rpx;color:#999;margin-top:5rpx;}
+.sharing-packets .sharing-con .text .shareBut{font-size:22rpx;color:#fff;margin-top:18rpx;height:50rpx;line-height:50rpx;}
diff --git a/template/xcx/components/swipers/index.js b/template/xcx/components/swipers/index.js
new file mode 100644
index 000000000..fdefff0ba
--- /dev/null
+++ b/template/xcx/components/swipers/index.js
@@ -0,0 +1,27 @@
+// components/swiper/index.js
+var app = getApp();
+Component({
+ properties: {
+ imgUrls: {
+ type: Object,
+ value: []
+ }
+ },
+ data: {
+ circular: true,
+ autoplay: true,
+ interval: 3000,
+ duration: 500,
+ currentSwiper: 0
+ },
+ attached: function () {
+ console.log(this.data.imgUrls);
+ },
+ methods: {
+ swiperChange: function (e) {
+ this.setData({
+ currentSwiper: e.detail.current
+ })
+ },
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/swipers/index.json b/template/xcx/components/swipers/index.json
new file mode 100644
index 000000000..4575d1b8f
--- /dev/null
+++ b/template/xcx/components/swipers/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/swipers/index.wxml b/template/xcx/components/swipers/index.wxml
new file mode 100644
index 000000000..509bba0ec
--- /dev/null
+++ b/template/xcx/components/swipers/index.wxml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template/xcx/components/swipers/index.wxss b/template/xcx/components/swipers/index.wxss
new file mode 100644
index 000000000..1b32940bb
--- /dev/null
+++ b/template/xcx/components/swipers/index.wxss
@@ -0,0 +1,7 @@
+@import '/app.wxss';
+.swiper{width:100%;height:282rpx;position:relative;}
+.swiper swiper{width:100%;height:100%;position:relative;}
+.swiper swiper .slide-image{width:100%;height:100%;}
+.swiper .dots{position:absolute;right:40rpx;bottom:20rpx;}
+.swiper .dots .dot{width:12rpx;height:12rpx;border:2rpx solid #fff;border-radius:50%;margin-right:15rpx;}
+.swiper .dots .dot.active{border-color:#e93323;background-color:#e93323;}
diff --git a/template/xcx/components/userEvaluation/index.js b/template/xcx/components/userEvaluation/index.js
new file mode 100644
index 000000000..7eceac8de
--- /dev/null
+++ b/template/xcx/components/userEvaluation/index.js
@@ -0,0 +1,24 @@
+var app = getApp();
+Component({
+ properties: {
+ reply:{
+ type:Object,
+ value:[],
+ }
+ },
+ data: {
+
+ },
+ attached: function () {
+
+ },
+ methods: {
+ getpreviewImage:function(e){
+ var dataset=e.currentTarget.dataset;
+ wx.previewImage({
+ urls: this.data.reply[dataset.index].pics,
+ current: this.data.reply[dataset.index].pics[dataset.pic_index],
+ });
+ },
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/userEvaluation/index.json b/template/xcx/components/userEvaluation/index.json
new file mode 100644
index 000000000..32640e0dc
--- /dev/null
+++ b/template/xcx/components/userEvaluation/index.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/userEvaluation/index.wxml b/template/xcx/components/userEvaluation/index.wxml
new file mode 100644
index 000000000..40d36fde5
--- /dev/null
+++ b/template/xcx/components/userEvaluation/index.wxml
@@ -0,0 +1,24 @@
+
+
+
+
+
+ {{item.nickname}}
+
+
+
+ {{item.add_time}} {{item.suk}}
+ {{item.comment}}
+
+
+
+
+
+ 店小二 :{{item.merchant_reply_content}}
+
+
+
+
+
+
+
diff --git a/template/xcx/components/userEvaluation/index.wxss b/template/xcx/components/userEvaluation/index.wxss
new file mode 100644
index 000000000..39aad6135
--- /dev/null
+++ b/template/xcx/components/userEvaluation/index.wxss
@@ -0,0 +1,14 @@
+@import '/app.wxss';
+.evaluateWtapper .evaluateItem{background-color:#fff;padding-bottom:25rpx;}
+.evaluateWtapper .evaluateItem~.evaluateItem{border-top:1rpx solid #f5f5f5;}
+.evaluateWtapper .evaluateItem .pic-text{font-size:26rpx;color:#282828;height:95rpx;padding:0 30rpx;}
+.evaluateWtapper .evaluateItem .pic-text .pictrue{width:56rpx;height:56rpx;margin-right:20rpx;}
+.evaluateWtapper .evaluateItem .pic-text .pictrue image{width:100%;height:100%;border-radius:50%;}
+.evaluateWtapper .evaluateItem .pic-text .name{max-width:450rpx;margin-right:15rpx;}
+.evaluateWtapper .evaluateItem .time{font-size:24rpx;color:#82848f;padding:0 30rpx;}
+.evaluateWtapper .evaluateItem .evaluate-infor{font-size:28rpx;color:#282828;margin-top:19rpx;padding:0 30rpx;}
+.evaluateWtapper .evaluateItem .imgList{padding:0 30rpx 0 15rpx;margin-top:25rpx;}
+.evaluateWtapper .evaluateItem .imgList .pictrue{width:156rpx;height:156rpx;margin:0 0 15rpx 15rpx;}
+.evaluateWtapper .evaluateItem .imgList .pictrue image{width:100%;height:100%;}
+.evaluateWtapper .evaluateItem .reply{font-size:26rpx;color:#454545;background-color:#f7f7f7;border-radius:5rpx;margin:20rpx 30rpx 0 30rpx;padding:30rpx;position:relative;}
+.evaluateWtapper .evaluateItem .reply::before{content: "";width: 0;height: 0;border-left:0.3rem solid transparent;border-right:0.3rem solid transparent;border-bottom:0.4rem solid #f7f7f7;position:absolute;top:-0.4rem;left:2rem;}
\ No newline at end of file
diff --git a/template/xcx/components/write-off/index.js b/template/xcx/components/write-off/index.js
new file mode 100644
index 000000000..d32818074
--- /dev/null
+++ b/template/xcx/components/write-off/index.js
@@ -0,0 +1,20 @@
+var app = getApp();
+Component({
+ properties: {
+ iShidden: {
+ type: Boolean,
+ value: false
+ }
+ },
+ data: {
+
+ },
+ attached: function () {
+
+ },
+ methods: {
+ cancel: function () {
+ this.triggerEvent('cancel', false);
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/components/write-off/index.json b/template/xcx/components/write-off/index.json
new file mode 100644
index 000000000..32640e0dc
--- /dev/null
+++ b/template/xcx/components/write-off/index.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
\ No newline at end of file
diff --git a/template/xcx/components/write-off/index.wxml b/template/xcx/components/write-off/index.wxml
new file mode 100644
index 000000000..d40cb6905
--- /dev/null
+++ b/template/xcx/components/write-off/index.wxml
@@ -0,0 +1,12 @@
+
+
+
+ wx156687208866123509
+ 查看
+
+ 确定要核销此订单吗?
+ 确定核销
+ 取消
+
+
+
diff --git a/template/xcx/components/write-off/index.wxss b/template/xcx/components/write-off/index.wxss
new file mode 100644
index 000000000..d328d0b0b
--- /dev/null
+++ b/template/xcx/components/write-off/index.wxss
@@ -0,0 +1,18 @@
+@import '/app.wxss';
+.WriteOff {width: 560rpx;height: 800rpx;background-color: #fff;border-radius: 20rpx;
+ position: fixed;top: 50%;left: 50%;margin-top: -400rpx;margin-left: -280rpx;z-index: 99;
+ padding-top: 55rpx;}
+.WriteOff .pictrue {width: 340rpx;height: 340rpx;margin: 0 auto;}
+.WriteOff .pictrue image {width: 100%;height: 100%;display: block;border-radius: 10rpx;}
+.WriteOff .num {font-size: 30rpx;color: #666;margin: 28rpx 0 30rpx 0;}
+.WriteOff .num .see {font-size: 16rpx;color: #fff;border-radius: 4rpx;background-color: #c68937;padding-left: 5rpx;margin-left: 12rpx;}
+.WriteOff .num .see .iconfont {font-size: 15rpx;}
+.WriteOff .tip {font-size: 36rpx;color: #282828;text-align: center;border-top: 1px dashed #ccc;padding-top: 40rpx;position: relative;}
+.WriteOff .tip:after {content: "";position: absolute;width: 25rpx;height: 25rpx;
+border-radius: 50%;background-color: #7f7f7f;right: -12.5rpx;top: -12.5rpx;}
+.WriteOff .tip:before {content: "";position: absolute;width: 25rpx;height: 25rpx;
+ border-radius: 50%;background-color: #7f7f7f;left: -12.5rpx;top: -12.5rpx;}
+.WriteOff .sure {font-size: 32rpx;color: #fff;text-align: center;line-height: 82rpx;
+ height: 82rpx;width: 460rpx;border-radius: 41rpx;margin: 40rpx auto 0 auto;
+ background-image: linear-gradient(to right, #f67a38 0%, #f11b09 100%);}
+.WriteOff .sure.cancel {background-image: none;color: #999;margin-top: 10rpx;}
\ No newline at end of file
diff --git a/template/xcx/config.js b/template/xcx/config.js
new file mode 100644
index 000000000..ee236c76c
--- /dev/null
+++ b/template/xcx/config.js
@@ -0,0 +1,33 @@
+module.exports = {
+ // 请求域名 格式: https://您的域名
+ HTTP_REQUEST_URL:'',
+ // Socket链接 暂不做配置
+ WSS_SERVER_URL:'',
+
+
+ // 以下配置非开发者,无需修改
+ // 请求头
+ HEADER:{
+ 'content-type': 'application/json'
+ },
+ // Socket调试模式
+ SERVER_DEBUG:true,
+ // 心跳间隔
+ PINGINTERVAL:3000,
+ // 回话密钥名称
+ TOKENNAME: 'Authori-zation',
+ //用户信息缓存名称
+ CACHE_USERINFO:'USERINFO',
+ //token缓存名称
+ CACHE_TOKEN:'TOKEN',
+ //token过期事件
+ CACHE_EXPIRES_TIME:'EXPIRES_TIME',
+ //模板缓存
+ CACHE_SUBSCRIBE_MESSAGE:'SUBSCRIBE_MESSAGE',
+ //用户信息缓存名称
+ CACHE_USERINFO: 'USERINFO',
+ //缓存经度
+ CACHE_LONGITUDE: 'LONGITUDE',
+ //缓存纬度
+ CACHE_LATITUDE: 'LATITUDE',
+}
\ No newline at end of file
diff --git a/template/xcx/css/animate.wxss b/template/xcx/css/animate.wxss
new file mode 100644
index 000000000..98f29c245
--- /dev/null
+++ b/template/xcx/css/animate.wxss
@@ -0,0 +1,3494 @@
+@charset "UTF-8";
+
+/*!
+ * animate.css -http://daneden.me/animate
+ * Version - 3.6.0
+ * Licensed under the MIT license - http://opensource.org/licenses/MIT
+ *
+ * Copyright (c) 2018 Daniel Eden
+ */
+
+.animated {
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+}
+
+.animated.infinite {
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+}
+
+@-webkit-keyframes bounce {
+ from,
+ 20%,
+ 53%,
+ 80%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ 40%,
+ 43% {
+ -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+ -webkit-transform: translate3d(0, -30px, 0);
+ transform: translate3d(0, -30px, 0);
+ }
+
+ 70% {
+ -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+ -webkit-transform: translate3d(0, -15px, 0);
+ transform: translate3d(0, -15px, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(0, -4px, 0);
+ transform: translate3d(0, -4px, 0);
+ }
+}
+
+@keyframes bounce {
+ from,
+ 20%,
+ 53%,
+ 80%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ 40%,
+ 43% {
+ -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+ -webkit-transform: translate3d(0, -30px, 0);
+ transform: translate3d(0, -30px, 0);
+ }
+
+ 70% {
+ -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+ -webkit-transform: translate3d(0, -15px, 0);
+ transform: translate3d(0, -15px, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(0, -4px, 0);
+ transform: translate3d(0, -4px, 0);
+ }
+}
+
+.bounce {
+ -webkit-animation-name: bounce;
+ animation-name: bounce;
+ -webkit-transform-origin: center bottom;
+ transform-origin: center bottom;
+}
+
+@-webkit-keyframes flash {
+ from,
+ 50%,
+ to {
+ opacity: 1;
+ }
+
+ 25%,
+ 75% {
+ opacity: 0;
+ }
+}
+
+@keyframes flash {
+ from,
+ 50%,
+ to {
+ opacity: 1;
+ }
+
+ 25%,
+ 75% {
+ opacity: 0;
+ }
+}
+
+.flash {
+ -webkit-animation-name: flash;
+ animation-name: flash;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes pulse {
+ from {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+
+ 50% {
+ -webkit-transform: scale3d(1.05, 1.05, 1.05);
+ transform: scale3d(1.05, 1.05, 1.05);
+ }
+
+ to {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+@keyframes pulse {
+ from {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+
+ 50% {
+ -webkit-transform: scale3d(1.05, 1.05, 1.05);
+ transform: scale3d(1.05, 1.05, 1.05);
+ }
+
+ to {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+.pulse {
+ -webkit-animation-name: pulse;
+ animation-name: pulse;
+}
+
+@-webkit-keyframes rubberBand {
+ from {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+
+ 30% {
+ -webkit-transform: scale3d(1.25, 0.75, 1);
+ transform: scale3d(1.25, 0.75, 1);
+ }
+
+ 40% {
+ -webkit-transform: scale3d(0.75, 1.25, 1);
+ transform: scale3d(0.75, 1.25, 1);
+ }
+
+ 50% {
+ -webkit-transform: scale3d(1.15, 0.85, 1);
+ transform: scale3d(1.15, 0.85, 1);
+ }
+
+ 65% {
+ -webkit-transform: scale3d(0.95, 1.05, 1);
+ transform: scale3d(0.95, 1.05, 1);
+ }
+
+ 75% {
+ -webkit-transform: scale3d(1.05, 0.95, 1);
+ transform: scale3d(1.05, 0.95, 1);
+ }
+
+ to {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+@keyframes rubberBand {
+ from {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+
+ 30% {
+ -webkit-transform: scale3d(1.25, 0.75, 1);
+ transform: scale3d(1.25, 0.75, 1);
+ }
+
+ 40% {
+ -webkit-transform: scale3d(0.75, 1.25, 1);
+ transform: scale3d(0.75, 1.25, 1);
+ }
+
+ 50% {
+ -webkit-transform: scale3d(1.15, 0.85, 1);
+ transform: scale3d(1.15, 0.85, 1);
+ }
+
+ 65% {
+ -webkit-transform: scale3d(0.95, 1.05, 1);
+ transform: scale3d(0.95, 1.05, 1);
+ }
+
+ 75% {
+ -webkit-transform: scale3d(1.05, 0.95, 1);
+ transform: scale3d(1.05, 0.95, 1);
+ }
+
+ to {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+.rubberBand {
+ -webkit-animation-name: rubberBand;
+ animation-name: rubberBand;
+}
+
+@-webkit-keyframes shake {
+ from,
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ 10%,
+ 30%,
+ 50%,
+ 70%,
+ 90% {
+ -webkit-transform: translate3d(-10px, 0, 0);
+ transform: translate3d(-10px, 0, 0);
+ }
+
+ 20%,
+ 40%,
+ 60%,
+ 80% {
+ -webkit-transform: translate3d(10px, 0, 0);
+ transform: translate3d(10px, 0, 0);
+ }
+}
+
+@keyframes shake {
+ from,
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ 10%,
+ 30%,
+ 50%,
+ 70%,
+ 90% {
+ -webkit-transform: translate3d(-10px, 0, 0);
+ transform: translate3d(-10px, 0, 0);
+ }
+
+ 20%,
+ 40%,
+ 60%,
+ 80% {
+ -webkit-transform: translate3d(10px, 0, 0);
+ transform: translate3d(10px, 0, 0);
+ }
+}
+
+.shake {
+ -webkit-animation-name: shake;
+ animation-name: shake;
+}
+
+@-webkit-keyframes headShake {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 6.5% {
+ -webkit-transform: translateX(-6px) rotateY(-9deg);
+ transform: translateX(-6px) rotateY(-9deg);
+ }
+
+ 18.5% {
+ -webkit-transform: translateX(5px) rotateY(7deg);
+ transform: translateX(5px) rotateY(7deg);
+ }
+
+ 31.5% {
+ -webkit-transform: translateX(-3px) rotateY(-5deg);
+ transform: translateX(-3px) rotateY(-5deg);
+ }
+
+ 43.5% {
+ -webkit-transform: translateX(2px) rotateY(3deg);
+ transform: translateX(2px) rotateY(3deg);
+ }
+
+ 50% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes headShake {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 6.5% {
+ -webkit-transform: translateX(-6px) rotateY(-9deg);
+ transform: translateX(-6px) rotateY(-9deg);
+ }
+
+ 18.5% {
+ -webkit-transform: translateX(5px) rotateY(7deg);
+ transform: translateX(5px) rotateY(7deg);
+ }
+
+ 31.5% {
+ -webkit-transform: translateX(-3px) rotateY(-5deg);
+ transform: translateX(-3px) rotateY(-5deg);
+ }
+
+ 43.5% {
+ -webkit-transform: translateX(2px) rotateY(3deg);
+ transform: translateX(2px) rotateY(3deg);
+ }
+
+ 50% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.headShake {
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-name: headShake;
+ animation-name: headShake;
+}
+
+@-webkit-keyframes swing {
+ 20% {
+ -webkit-transform: rotate3d(0, 0, 1, 15deg);
+ transform: rotate3d(0, 0, 1, 15deg);
+ }
+
+ 40% {
+ -webkit-transform: rotate3d(0, 0, 1, -10deg);
+ transform: rotate3d(0, 0, 1, -10deg);
+ }
+
+ 60% {
+ -webkit-transform: rotate3d(0, 0, 1, 5deg);
+ transform: rotate3d(0, 0, 1, 5deg);
+ }
+
+ 80% {
+ -webkit-transform: rotate3d(0, 0, 1, -5deg);
+ transform: rotate3d(0, 0, 1, -5deg);
+ }
+
+ to {
+ -webkit-transform: rotate3d(0, 0, 1, 0deg);
+ transform: rotate3d(0, 0, 1, 0deg);
+ }
+}
+
+@keyframes swing {
+ 20% {
+ -webkit-transform: rotate3d(0, 0, 1, 15deg);
+ transform: rotate3d(0, 0, 1, 15deg);
+ }
+
+ 40% {
+ -webkit-transform: rotate3d(0, 0, 1, -10deg);
+ transform: rotate3d(0, 0, 1, -10deg);
+ }
+
+ 60% {
+ -webkit-transform: rotate3d(0, 0, 1, 5deg);
+ transform: rotate3d(0, 0, 1, 5deg);
+ }
+
+ 80% {
+ -webkit-transform: rotate3d(0, 0, 1, -5deg);
+ transform: rotate3d(0, 0, 1, -5deg);
+ }
+
+ to {
+ -webkit-transform: rotate3d(0, 0, 1, 0deg);
+ transform: rotate3d(0, 0, 1, 0deg);
+ }
+}
+
+.swing {
+ -webkit-transform-origin: top center;
+ transform-origin: top center;
+ -webkit-animation-name: swing;
+ animation-name: swing;
+}
+
+@-webkit-keyframes tada {
+ from {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+
+ 10%,
+ 20% {
+ -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+ transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+ }
+
+ 30%,
+ 50%,
+ 70%,
+ 90% {
+ -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+ transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+ }
+
+ 40%,
+ 60%,
+ 80% {
+ -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+ transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+ }
+
+ to {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+@keyframes tada {
+ from {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+
+ 10%,
+ 20% {
+ -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+ transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+ }
+
+ 30%,
+ 50%,
+ 70%,
+ 90% {
+ -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+ transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+ }
+
+ 40%,
+ 60%,
+ 80% {
+ -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+ transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+ }
+
+ to {
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+.tada {
+ -webkit-animation-name: tada;
+ animation-name: tada;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes wobble {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ 15% {
+ -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+ transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+ }
+
+ 30% {
+ -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+ transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+ }
+
+ 45% {
+ -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+ transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+ }
+
+ 60% {
+ -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+ transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+ transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes wobble {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ 15% {
+ -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+ transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+ }
+
+ 30% {
+ -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+ transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+ }
+
+ 45% {
+ -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+ transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+ }
+
+ 60% {
+ -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+ transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+ transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.wobble {
+ -webkit-animation-name: wobble;
+ animation-name: wobble;
+}
+
+@-webkit-keyframes jello {
+ from,
+ 11.1%,
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ 22.2% {
+ -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
+ transform: skewX(-12.5deg) skewY(-12.5deg);
+ }
+
+ 33.3% {
+ -webkit-transform: skewX(6.25deg) skewY(6.25deg);
+ transform: skewX(6.25deg) skewY(6.25deg);
+ }
+
+ 44.4% {
+ -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
+ transform: skewX(-3.125deg) skewY(-3.125deg);
+ }
+
+ 55.5% {
+ -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
+ transform: skewX(1.5625deg) skewY(1.5625deg);
+ }
+
+ 66.6% {
+ -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
+ transform: skewX(-0.78125deg) skewY(-0.78125deg);
+ }
+
+ 77.7% {
+ -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
+ transform: skewX(0.390625deg) skewY(0.390625deg);
+ }
+
+ 88.8% {
+ -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
+ transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
+ }
+}
+
+@keyframes jello {
+ from,
+ 11.1%,
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ 22.2% {
+ -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
+ transform: skewX(-12.5deg) skewY(-12.5deg);
+ }
+
+ 33.3% {
+ -webkit-transform: skewX(6.25deg) skewY(6.25deg);
+ transform: skewX(6.25deg) skewY(6.25deg);
+ }
+
+ 44.4% {
+ -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
+ transform: skewX(-3.125deg) skewY(-3.125deg);
+ }
+
+ 55.5% {
+ -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
+ transform: skewX(1.5625deg) skewY(1.5625deg);
+ }
+
+ 66.6% {
+ -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
+ transform: skewX(-0.78125deg) skewY(-0.78125deg);
+ }
+
+ 77.7% {
+ -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
+ transform: skewX(0.390625deg) skewY(0.390625deg);
+ }
+
+ 88.8% {
+ -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
+ transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
+ }
+}
+
+.jello {
+ -webkit-animation-name: jello;
+ animation-name: jello;
+ -webkit-transform-origin: center;
+ transform-origin: center;
+}
+
+@-webkit-keyframes bounceIn {
+ from,
+ 20%,
+ 40%,
+ 60%,
+ 80%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
+ transform: scale3d(0.3, 0.3, 0.3);
+ }
+
+ 20% {
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
+ transform: scale3d(1.1, 1.1, 1.1);
+ }
+
+ 40% {
+ -webkit-transform: scale3d(0.9, 0.9, 0.9);
+ transform: scale3d(0.9, 0.9, 0.9);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(1.03, 1.03, 1.03);
+ transform: scale3d(1.03, 1.03, 1.03);
+ }
+
+ 80% {
+ -webkit-transform: scale3d(0.97, 0.97, 0.97);
+ transform: scale3d(0.97, 0.97, 0.97);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+@keyframes bounceIn {
+ from,
+ 20%,
+ 40%,
+ 60%,
+ 80%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
+ transform: scale3d(0.3, 0.3, 0.3);
+ }
+
+ 20% {
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
+ transform: scale3d(1.1, 1.1, 1.1);
+ }
+
+ 40% {
+ -webkit-transform: scale3d(0.9, 0.9, 0.9);
+ transform: scale3d(0.9, 0.9, 0.9);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(1.03, 1.03, 1.03);
+ transform: scale3d(1.03, 1.03, 1.03);
+ }
+
+ 80% {
+ -webkit-transform: scale3d(0.97, 0.97, 0.97);
+ transform: scale3d(0.97, 0.97, 0.97);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale3d(1, 1, 1);
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+.bounceIn {
+ -webkit-animation-duration: 0.75s;
+ animation-duration: 0.75s;
+ -webkit-animation-name: bounceIn;
+ animation-name: bounceIn;
+}
+
+@-webkit-keyframes bounceInDown {
+ from,
+ 60%,
+ 75%,
+ 90%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ 0% {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -3000px, 0);
+ transform: translate3d(0, -3000px, 0);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 25px, 0);
+ transform: translate3d(0, 25px, 0);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(0, -10px, 0);
+ transform: translate3d(0, -10px, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(0, 5px, 0);
+ transform: translate3d(0, 5px, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes bounceInDown {
+ from,
+ 60%,
+ 75%,
+ 90%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ 0% {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -3000px, 0);
+ transform: translate3d(0, -3000px, 0);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 25px, 0);
+ transform: translate3d(0, 25px, 0);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(0, -10px, 0);
+ transform: translate3d(0, -10px, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(0, 5px, 0);
+ transform: translate3d(0, 5px, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.bounceInDown {
+ -webkit-animation-name: bounceInDown;
+ animation-name: bounceInDown;
+}
+
+@-webkit-keyframes bounceInLeft {
+ from,
+ 60%,
+ 75%,
+ 90%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ 0% {
+ opacity: 0;
+ -webkit-transform: translate3d(-3000px, 0, 0);
+ transform: translate3d(-3000px, 0, 0);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translate3d(25px, 0, 0);
+ transform: translate3d(25px, 0, 0);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(-10px, 0, 0);
+ transform: translate3d(-10px, 0, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(5px, 0, 0);
+ transform: translate3d(5px, 0, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes bounceInLeft {
+ from,
+ 60%,
+ 75%,
+ 90%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ 0% {
+ opacity: 0;
+ -webkit-transform: translate3d(-3000px, 0, 0);
+ transform: translate3d(-3000px, 0, 0);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translate3d(25px, 0, 0);
+ transform: translate3d(25px, 0, 0);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(-10px, 0, 0);
+ transform: translate3d(-10px, 0, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(5px, 0, 0);
+ transform: translate3d(5px, 0, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.bounceInLeft {
+ -webkit-animation-name: bounceInLeft;
+ animation-name: bounceInLeft;
+}
+
+@-webkit-keyframes bounceInRight {
+ from,
+ 60%,
+ 75%,
+ 90%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(3000px, 0, 0);
+ transform: translate3d(3000px, 0, 0);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translate3d(-25px, 0, 0);
+ transform: translate3d(-25px, 0, 0);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(10px, 0, 0);
+ transform: translate3d(10px, 0, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(-5px, 0, 0);
+ transform: translate3d(-5px, 0, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes bounceInRight {
+ from,
+ 60%,
+ 75%,
+ 90%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(3000px, 0, 0);
+ transform: translate3d(3000px, 0, 0);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translate3d(-25px, 0, 0);
+ transform: translate3d(-25px, 0, 0);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(10px, 0, 0);
+ transform: translate3d(10px, 0, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(-5px, 0, 0);
+ transform: translate3d(-5px, 0, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.bounceInRight {
+ -webkit-animation-name: bounceInRight;
+ animation-name: bounceInRight;
+}
+
+@-webkit-keyframes bounceInUp {
+ from,
+ 60%,
+ 75%,
+ 90%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 3000px, 0);
+ transform: translate3d(0, 3000px, 0);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(0, 10px, 0);
+ transform: translate3d(0, 10px, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(0, -5px, 0);
+ transform: translate3d(0, -5px, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes bounceInUp {
+ from,
+ 60%,
+ 75%,
+ 90%,
+ to {
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 3000px, 0);
+ transform: translate3d(0, 3000px, 0);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+
+ 75% {
+ -webkit-transform: translate3d(0, 10px, 0);
+ transform: translate3d(0, 10px, 0);
+ }
+
+ 90% {
+ -webkit-transform: translate3d(0, -5px, 0);
+ transform: translate3d(0, -5px, 0);
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.bounceInUp {
+ -webkit-animation-name: bounceInUp;
+ animation-name: bounceInUp;
+}
+
+@-webkit-keyframes bounceOut {
+ 20% {
+ -webkit-transform: scale3d(0.9, 0.9, 0.9);
+ transform: scale3d(0.9, 0.9, 0.9);
+ }
+
+ 50%,
+ 55% {
+ opacity: 1;
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
+ transform: scale3d(1.1, 1.1, 1.1);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
+ transform: scale3d(0.3, 0.3, 0.3);
+ }
+}
+
+@keyframes bounceOut {
+ 20% {
+ -webkit-transform: scale3d(0.9, 0.9, 0.9);
+ transform: scale3d(0.9, 0.9, 0.9);
+ }
+
+ 50%,
+ 55% {
+ opacity: 1;
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
+ transform: scale3d(1.1, 1.1, 1.1);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
+ transform: scale3d(0.3, 0.3, 0.3);
+ }
+}
+
+.bounceOut {
+ -webkit-animation-duration: 0.75s;
+ animation-duration: 0.75s;
+ -webkit-animation-name: bounceOut;
+ animation-name: bounceOut;
+}
+
+@-webkit-keyframes bounceOutDown {
+ 20% {
+ -webkit-transform: translate3d(0, 10px, 0);
+ transform: translate3d(0, 10px, 0);
+ }
+
+ 40%,
+ 45% {
+ opacity: 1;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 2000px, 0);
+ transform: translate3d(0, 2000px, 0);
+ }
+}
+
+@keyframes bounceOutDown {
+ 20% {
+ -webkit-transform: translate3d(0, 10px, 0);
+ transform: translate3d(0, 10px, 0);
+ }
+
+ 40%,
+ 45% {
+ opacity: 1;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 2000px, 0);
+ transform: translate3d(0, 2000px, 0);
+ }
+}
+
+.bounceOutDown {
+ -webkit-animation-name: bounceOutDown;
+ animation-name: bounceOutDown;
+}
+
+@-webkit-keyframes bounceOutLeft {
+ 20% {
+ opacity: 1;
+ -webkit-transform: translate3d(20px, 0, 0);
+ transform: translate3d(20px, 0, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(-2000px, 0, 0);
+ transform: translate3d(-2000px, 0, 0);
+ }
+}
+
+@keyframes bounceOutLeft {
+ 20% {
+ opacity: 1;
+ -webkit-transform: translate3d(20px, 0, 0);
+ transform: translate3d(20px, 0, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(-2000px, 0, 0);
+ transform: translate3d(-2000px, 0, 0);
+ }
+}
+
+.bounceOutLeft {
+ -webkit-animation-name: bounceOutLeft;
+ animation-name: bounceOutLeft;
+}
+
+@-webkit-keyframes bounceOutRight {
+ 20% {
+ opacity: 1;
+ -webkit-transform: translate3d(-20px, 0, 0);
+ transform: translate3d(-20px, 0, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(2000px, 0, 0);
+ transform: translate3d(2000px, 0, 0);
+ }
+}
+
+@keyframes bounceOutRight {
+ 20% {
+ opacity: 1;
+ -webkit-transform: translate3d(-20px, 0, 0);
+ transform: translate3d(-20px, 0, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(2000px, 0, 0);
+ transform: translate3d(2000px, 0, 0);
+ }
+}
+
+.bounceOutRight {
+ -webkit-animation-name: bounceOutRight;
+ animation-name: bounceOutRight;
+}
+
+@-webkit-keyframes bounceOutUp {
+ 20% {
+ -webkit-transform: translate3d(0, -10px, 0);
+ transform: translate3d(0, -10px, 0);
+ }
+
+ 40%,
+ 45% {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 20px, 0);
+ transform: translate3d(0, 20px, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -2000px, 0);
+ transform: translate3d(0, -2000px, 0);
+ }
+}
+
+@keyframes bounceOutUp {
+ 20% {
+ -webkit-transform: translate3d(0, -10px, 0);
+ transform: translate3d(0, -10px, 0);
+ }
+
+ 40%,
+ 45% {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 20px, 0);
+ transform: translate3d(0, 20px, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -2000px, 0);
+ transform: translate3d(0, -2000px, 0);
+ }
+}
+
+.bounceOutUp {
+ -webkit-animation-name: bounceOutUp;
+ animation-name: bounceOutUp;
+}
+
+@-webkit-keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+
+ to {
+ opacity: 1;
+ }
+}
+
+@keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+
+ to {
+ opacity: 1;
+ }
+}
+
+.fadeIn {
+ -webkit-animation-name: fadeIn;
+ animation-name: fadeIn;
+}
+
+@-webkit-keyframes fadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes fadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.fadeInDown {
+ -webkit-animation-name: fadeInDown;
+ animation-name: fadeInDown;
+}
+
+@-webkit-keyframes fadeInDownBig {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -2000px, 0);
+ transform: translate3d(0, -2000px, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes fadeInDownBig {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -2000px, 0);
+ transform: translate3d(0, -2000px, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.fadeInDownBig {
+ -webkit-animation-name: fadeInDownBig;
+ animation-name: fadeInDownBig;
+}
+
+@-webkit-keyframes fadeInLeft {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes fadeInLeft {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.fadeInLeft {
+ -webkit-animation-name: fadeInLeft;
+ animation-name: fadeInLeft;
+}
+
+@-webkit-keyframes fadeInLeftBig {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(-2000px, 0, 0);
+ transform: translate3d(-2000px, 0, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes fadeInLeftBig {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(-2000px, 0, 0);
+ transform: translate3d(-2000px, 0, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.fadeInLeftBig {
+ -webkit-animation-name: fadeInLeftBig;
+ animation-name: fadeInLeftBig;
+}
+
+@-webkit-keyframes fadeInRight {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes fadeInRight {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.fadeInRight {
+ -webkit-animation-name: fadeInRight;
+ animation-name: fadeInRight;
+}
+
+@-webkit-keyframes fadeInRightBig {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(2000px, 0, 0);
+ transform: translate3d(2000px, 0, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes fadeInRightBig {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(2000px, 0, 0);
+ transform: translate3d(2000px, 0, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.fadeInRightBig {
+ -webkit-animation-name: fadeInRightBig;
+ animation-name: fadeInRightBig;
+}
+
+@-webkit-keyframes fadeInUp {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes fadeInUp {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.fadeInUp {
+ -webkit-animation-name: fadeInUp;
+ animation-name: fadeInUp;
+}
+
+@-webkit-keyframes fadeInUpBig {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 2000px, 0);
+ transform: translate3d(0, 2000px, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes fadeInUpBig {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 2000px, 0);
+ transform: translate3d(0, 2000px, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.fadeInUpBig {
+ -webkit-animation-name: fadeInUpBig;
+ animation-name: fadeInUpBig;
+}
+
+@-webkit-keyframes fadeOut {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ }
+}
+
+@keyframes fadeOut {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ }
+}
+
+.fadeOut {
+ -webkit-animation-name: fadeOut;
+ animation-name: fadeOut;
+}
+
+@-webkit-keyframes fadeOutDown {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+}
+
+@keyframes fadeOutDown {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+}
+
+.fadeOutDown {
+ -webkit-animation-name: fadeOutDown;
+ animation-name: fadeOutDown;
+}
+
+@-webkit-keyframes fadeOutDownBig {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 2000px, 0);
+ transform: translate3d(0, 2000px, 0);
+ }
+}
+
+@keyframes fadeOutDownBig {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 2000px, 0);
+ transform: translate3d(0, 2000px, 0);
+ }
+}
+
+.fadeOutDownBig {
+ -webkit-animation-name: fadeOutDownBig;
+ animation-name: fadeOutDownBig;
+}
+
+@-webkit-keyframes fadeOutLeft {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+}
+
+@keyframes fadeOutLeft {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+}
+
+.fadeOutLeft {
+ -webkit-animation-name: fadeOutLeft;
+ animation-name: fadeOutLeft;
+}
+
+@-webkit-keyframes fadeOutLeftBig {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(-2000px, 0, 0);
+ transform: translate3d(-2000px, 0, 0);
+ }
+}
+
+@keyframes fadeOutLeftBig {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(-2000px, 0, 0);
+ transform: translate3d(-2000px, 0, 0);
+ }
+}
+
+.fadeOutLeftBig {
+ -webkit-animation-name: fadeOutLeftBig;
+ animation-name: fadeOutLeftBig;
+}
+
+@-webkit-keyframes fadeOutRight {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+}
+
+@keyframes fadeOutRight {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+}
+
+.fadeOutRight {
+ -webkit-animation-name: fadeOutRight;
+ animation-name: fadeOutRight;
+}
+
+@-webkit-keyframes fadeOutRightBig {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(2000px, 0, 0);
+ transform: translate3d(2000px, 0, 0);
+ }
+}
+
+@keyframes fadeOutRightBig {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(2000px, 0, 0);
+ transform: translate3d(2000px, 0, 0);
+ }
+}
+
+.fadeOutRightBig {
+ -webkit-animation-name: fadeOutRightBig;
+ animation-name: fadeOutRightBig;
+}
+
+@-webkit-keyframes fadeOutUp {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+}
+
+@keyframes fadeOutUp {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+}
+
+.fadeOutUp {
+ -webkit-animation-name: fadeOutUp;
+ animation-name: fadeOutUp;
+}
+
+@-webkit-keyframes fadeOutUpBig {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -2000px, 0);
+ transform: translate3d(0, -2000px, 0);
+ }
+}
+
+@keyframes fadeOutUpBig {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -2000px, 0);
+ transform: translate3d(0, -2000px, 0);
+ }
+}
+
+.fadeOutUpBig {
+ -webkit-animation-name: fadeOutUpBig;
+ animation-name: fadeOutUpBig;
+}
+
+@-webkit-keyframes flip {
+ from {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+ transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+
+ 50% {
+ -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+ transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 80% {
+ -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
+ transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ to {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+}
+
+@keyframes flip {
+ from {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+ transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+
+ 50% {
+ -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+ transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 80% {
+ -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
+ transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ to {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+}
+
+.animated.flip {
+ -webkit-backface-visibility: visible;
+ backface-visibility: visible;
+ -webkit-animation-name: flip;
+ animation-name: flip;
+}
+
+@-webkit-keyframes flipInX {
+ from {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ opacity: 0;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 60% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+ opacity: 1;
+ }
+
+ 80% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+ }
+
+ to {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ }
+}
+
+@keyframes flipInX {
+ from {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ opacity: 0;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 60% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+ opacity: 1;
+ }
+
+ 80% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+ }
+
+ to {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ }
+}
+
+.flipInX {
+ -webkit-backface-visibility: visible !important;
+ backface-visibility: visible !important;
+ -webkit-animation-name: flipInX;
+ animation-name: flipInX;
+}
+
+@-webkit-keyframes flipInY {
+ from {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ opacity: 0;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 60% {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+ opacity: 1;
+ }
+
+ 80% {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+ }
+
+ to {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ }
+}
+
+@keyframes flipInY {
+ from {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ opacity: 0;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 60% {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+ opacity: 1;
+ }
+
+ 80% {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+ }
+
+ to {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ }
+}
+
+.flipInY {
+ -webkit-backface-visibility: visible !important;
+ backface-visibility: visible !important;
+ -webkit-animation-name: flipInY;
+ animation-name: flipInY;
+}
+
+@-webkit-keyframes flipOutX {
+ from {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ }
+
+ 30% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes flipOutX {
+ from {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ }
+
+ 30% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ opacity: 0;
+ }
+}
+
+.flipOutX {
+ -webkit-animation-duration: 0.75s;
+ animation-duration: 0.75s;
+ -webkit-animation-name: flipOutX;
+ animation-name: flipOutX;
+ -webkit-backface-visibility: visible !important;
+ backface-visibility: visible !important;
+}
+
+@-webkit-keyframes flipOutY {
+ from {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ }
+
+ 30% {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes flipOutY {
+ from {
+ -webkit-transform: perspective(400px);
+ transform: perspective(400px);
+ }
+
+ 30% {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+ transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+ opacity: 0;
+ }
+}
+
+.flipOutY {
+ -webkit-animation-duration: 0.75s;
+ animation-duration: 0.75s;
+ -webkit-backface-visibility: visible !important;
+ backface-visibility: visible !important;
+ -webkit-animation-name: flipOutY;
+ animation-name: flipOutY;
+}
+
+@-webkit-keyframes lightSpeedIn {
+ from {
+ -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
+ transform: translate3d(100%, 0, 0) skewX(-30deg);
+ opacity: 0;
+ }
+
+ 60% {
+ -webkit-transform: skewX(20deg);
+ transform: skewX(20deg);
+ opacity: 1;
+ }
+
+ 80% {
+ -webkit-transform: skewX(-5deg);
+ transform: skewX(-5deg);
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+@keyframes lightSpeedIn {
+ from {
+ -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
+ transform: translate3d(100%, 0, 0) skewX(-30deg);
+ opacity: 0;
+ }
+
+ 60% {
+ -webkit-transform: skewX(20deg);
+ transform: skewX(20deg);
+ opacity: 1;
+ }
+
+ 80% {
+ -webkit-transform: skewX(-5deg);
+ transform: skewX(-5deg);
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+.lightSpeedIn {
+ -webkit-animation-name: lightSpeedIn;
+ animation-name: lightSpeedIn;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+}
+
+@-webkit-keyframes lightSpeedOut {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
+ transform: translate3d(100%, 0, 0) skewX(30deg);
+ opacity: 0;
+ }
+}
+
+@keyframes lightSpeedOut {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
+ transform: translate3d(100%, 0, 0) skewX(30deg);
+ opacity: 0;
+ }
+}
+
+.lightSpeedOut {
+ -webkit-animation-name: lightSpeedOut;
+ animation-name: lightSpeedOut;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+}
+
+@-webkit-keyframes rotateIn {
+ from {
+ -webkit-transform-origin: center;
+ transform-origin: center;
+ -webkit-transform: rotate3d(0, 0, 1, -200deg);
+ transform: rotate3d(0, 0, 1, -200deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: center;
+ transform-origin: center;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateIn {
+ from {
+ -webkit-transform-origin: center;
+ transform-origin: center;
+ -webkit-transform: rotate3d(0, 0, 1, -200deg);
+ transform: rotate3d(0, 0, 1, -200deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: center;
+ transform-origin: center;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+.rotateIn {
+ -webkit-animation-name: rotateIn;
+ animation-name: rotateIn;
+}
+
+@-webkit-keyframes rotateInDownLeft {
+ from {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
+ transform: rotate3d(0, 0, 1, -45deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateInDownLeft {
+ from {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
+ transform: rotate3d(0, 0, 1, -45deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+.rotateInDownLeft {
+ -webkit-animation-name: rotateInDownLeft;
+ animation-name: rotateInDownLeft;
+}
+
+@-webkit-keyframes rotateInDownRight {
+ from {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
+ transform: rotate3d(0, 0, 1, 45deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateInDownRight {
+ from {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
+ transform: rotate3d(0, 0, 1, 45deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+.rotateInDownRight {
+ -webkit-animation-name: rotateInDownRight;
+ animation-name: rotateInDownRight;
+}
+
+@-webkit-keyframes rotateInUpLeft {
+ from {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
+ transform: rotate3d(0, 0, 1, 45deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateInUpLeft {
+ from {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
+ transform: rotate3d(0, 0, 1, 45deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+.rotateInUpLeft {
+ -webkit-animation-name: rotateInUpLeft;
+ animation-name: rotateInUpLeft;
+}
+
+@-webkit-keyframes rotateInUpRight {
+ from {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate3d(0, 0, 1, -90deg);
+ transform: rotate3d(0, 0, 1, -90deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateInUpRight {
+ from {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate3d(0, 0, 1, -90deg);
+ transform: rotate3d(0, 0, 1, -90deg);
+ opacity: 0;
+ }
+
+ to {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+}
+
+.rotateInUpRight {
+ -webkit-animation-name: rotateInUpRight;
+ animation-name: rotateInUpRight;
+}
+
+@-webkit-keyframes rotateOut {
+ from {
+ -webkit-transform-origin: center;
+ transform-origin: center;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: center;
+ transform-origin: center;
+ -webkit-transform: rotate3d(0, 0, 1, 200deg);
+ transform: rotate3d(0, 0, 1, 200deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOut {
+ from {
+ -webkit-transform-origin: center;
+ transform-origin: center;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: center;
+ transform-origin: center;
+ -webkit-transform: rotate3d(0, 0, 1, 200deg);
+ transform: rotate3d(0, 0, 1, 200deg);
+ opacity: 0;
+ }
+}
+
+.rotateOut {
+ -webkit-animation-name: rotateOut;
+ animation-name: rotateOut;
+}
+
+@-webkit-keyframes rotateOutDownLeft {
+ from {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
+ transform: rotate3d(0, 0, 1, 45deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOutDownLeft {
+ from {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate3d(0, 0, 1, 45deg);
+ transform: rotate3d(0, 0, 1, 45deg);
+ opacity: 0;
+ }
+}
+
+.rotateOutDownLeft {
+ -webkit-animation-name: rotateOutDownLeft;
+ animation-name: rotateOutDownLeft;
+}
+
+@-webkit-keyframes rotateOutDownRight {
+ from {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
+ transform: rotate3d(0, 0, 1, -45deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOutDownRight {
+ from {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
+ transform: rotate3d(0, 0, 1, -45deg);
+ opacity: 0;
+ }
+}
+
+.rotateOutDownRight {
+ -webkit-animation-name: rotateOutDownRight;
+ animation-name: rotateOutDownRight;
+}
+
+@-webkit-keyframes rotateOutUpLeft {
+ from {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
+ transform: rotate3d(0, 0, 1, -45deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOutUpLeft {
+ from {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate3d(0, 0, 1, -45deg);
+ transform: rotate3d(0, 0, 1, -45deg);
+ opacity: 0;
+ }
+}
+
+.rotateOutUpLeft {
+ -webkit-animation-name: rotateOutUpLeft;
+ animation-name: rotateOutUpLeft;
+}
+
+@-webkit-keyframes rotateOutUpRight {
+ from {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate3d(0, 0, 1, 90deg);
+ transform: rotate3d(0, 0, 1, 90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOutUpRight {
+ from {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate3d(0, 0, 1, 90deg);
+ transform: rotate3d(0, 0, 1, 90deg);
+ opacity: 0;
+ }
+}
+
+.rotateOutUpRight {
+ -webkit-animation-name: rotateOutUpRight;
+ animation-name: rotateOutUpRight;
+}
+
+@-webkit-keyframes hinge {
+ 0% {
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 20%,
+ 60% {
+ -webkit-transform: rotate3d(0, 0, 1, 80deg);
+ transform: rotate3d(0, 0, 1, 80deg);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 40%,
+ 80% {
+ -webkit-transform: rotate3d(0, 0, 1, 60deg);
+ transform: rotate3d(0, 0, 1, 60deg);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 700px, 0);
+ transform: translate3d(0, 700px, 0);
+ opacity: 0;
+ }
+}
+
+@keyframes hinge {
+ 0% {
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 20%,
+ 60% {
+ -webkit-transform: rotate3d(0, 0, 1, 80deg);
+ transform: rotate3d(0, 0, 1, 80deg);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 40%,
+ 80% {
+ -webkit-transform: rotate3d(0, 0, 1, 60deg);
+ transform: rotate3d(0, 0, 1, 60deg);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ opacity: 1;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 700px, 0);
+ transform: translate3d(0, 700px, 0);
+ opacity: 0;
+ }
+}
+
+.hinge {
+ -webkit-animation-duration: 2s;
+ animation-duration: 2s;
+ -webkit-animation-name: hinge;
+ animation-name: hinge;
+}
+
+@-webkit-keyframes jackInTheBox {
+ from {
+ opacity: 0;
+ -webkit-transform: scale(0.1) rotate(30deg);
+ transform: scale(0.1) rotate(30deg);
+ -webkit-transform-origin: center bottom;
+ transform-origin: center bottom;
+ }
+
+ 50% {
+ -webkit-transform: rotate(-10deg);
+ transform: rotate(-10deg);
+ }
+
+ 70% {
+ -webkit-transform: rotate(3deg);
+ transform: rotate(3deg);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes jackInTheBox {
+ from {
+ opacity: 0;
+ -webkit-transform: scale(0.1) rotate(30deg);
+ transform: scale(0.1) rotate(30deg);
+ -webkit-transform-origin: center bottom;
+ transform-origin: center bottom;
+ }
+
+ 50% {
+ -webkit-transform: rotate(-10deg);
+ transform: rotate(-10deg);
+ }
+
+ 70% {
+ -webkit-transform: rotate(3deg);
+ transform: rotate(3deg);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+.jackInTheBox {
+ -webkit-animation-name: jackInTheBox;
+ animation-name: jackInTheBox;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes rollIn {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+ transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes rollIn {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+ transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.rollIn {
+ -webkit-animation-name: rollIn;
+ animation-name: rollIn;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes rollOut {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+ transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+ }
+}
+
+@keyframes rollOut {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+ transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+ }
+}
+
+.rollOut {
+ -webkit-animation-name: rollOut;
+ animation-name: rollOut;
+}
+
+@-webkit-keyframes zoomIn {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
+ transform: scale3d(0.3, 0.3, 0.3);
+ }
+
+ 50% {
+ opacity: 1;
+ }
+}
+
+@keyframes zoomIn {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
+ transform: scale3d(0.3, 0.3, 0.3);
+ }
+
+ 50% {
+ opacity: 1;
+ }
+}
+
+.zoomIn {
+ -webkit-animation-name: zoomIn;
+ animation-name: zoomIn;
+}
+
+@-webkit-keyframes zoomInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+@keyframes zoomInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+.zoomInDown {
+ -webkit-animation-name: zoomInDown;
+ animation-name: zoomInDown;
+}
+
+@-webkit-keyframes zoomInLeft {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+@keyframes zoomInLeft {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+.zoomInLeft {
+ -webkit-animation-name: zoomInLeft;
+ animation-name: zoomInLeft;
+}
+
+@-webkit-keyframes zoomInRight {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+@keyframes zoomInRight {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+.zoomInRight {
+ -webkit-animation-name: zoomInRight;
+ animation-name: zoomInRight;
+}
+
+@-webkit-keyframes zoomInUp {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+@keyframes zoomInUp {
+ from {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+.zoomInUp {
+ -webkit-animation-name: zoomInUp;
+ animation-name: zoomInUp;
+}
+
+@-webkit-keyframes zoomOut {
+ from {
+ opacity: 1;
+ }
+
+ 50% {
+ opacity: 0;
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
+ transform: scale3d(0.3, 0.3, 0.3);
+ }
+
+ to {
+ opacity: 0;
+ }
+}
+
+@keyframes zoomOut {
+ from {
+ opacity: 1;
+ }
+
+ 50% {
+ opacity: 0;
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
+ transform: scale3d(0.3, 0.3, 0.3);
+ }
+
+ to {
+ opacity: 0;
+ }
+}
+
+.zoomOut {
+ -webkit-animation-name: zoomOut;
+ animation-name: zoomOut;
+}
+
+@-webkit-keyframes zoomOutDown {
+ 40% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
+ -webkit-transform-origin: center bottom;
+ transform-origin: center bottom;
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+@keyframes zoomOutDown {
+ 40% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
+ -webkit-transform-origin: center bottom;
+ transform-origin: center bottom;
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+.zoomOutDown {
+ -webkit-animation-name: zoomOutDown;
+ animation-name: zoomOutDown;
+}
+
+@-webkit-keyframes zoomOutLeft {
+ 40% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
+ transform: scale(0.1) translate3d(-2000px, 0, 0);
+ -webkit-transform-origin: left center;
+ transform-origin: left center;
+ }
+}
+
+@keyframes zoomOutLeft {
+ 40% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
+ transform: scale(0.1) translate3d(-2000px, 0, 0);
+ -webkit-transform-origin: left center;
+ transform-origin: left center;
+ }
+}
+
+.zoomOutLeft {
+ -webkit-animation-name: zoomOutLeft;
+ animation-name: zoomOutLeft;
+}
+
+@-webkit-keyframes zoomOutRight {
+ 40% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
+ transform: scale(0.1) translate3d(2000px, 0, 0);
+ -webkit-transform-origin: right center;
+ transform-origin: right center;
+ }
+}
+
+@keyframes zoomOutRight {
+ 40% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
+ transform: scale(0.1) translate3d(2000px, 0, 0);
+ -webkit-transform-origin: right center;
+ transform-origin: right center;
+ }
+}
+
+.zoomOutRight {
+ -webkit-animation-name: zoomOutRight;
+ animation-name: zoomOutRight;
+}
+
+@-webkit-keyframes zoomOutUp {
+ 40% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
+ -webkit-transform-origin: center bottom;
+ transform-origin: center bottom;
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+@keyframes zoomOutUp {
+ 40% {
+ opacity: 1;
+ -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+ transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+ -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
+ transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
+ -webkit-transform-origin: center bottom;
+ transform-origin: center bottom;
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+ }
+}
+
+.zoomOutUp {
+ -webkit-animation-name: zoomOutUp;
+ animation-name: zoomOutUp;
+}
+
+@-webkit-keyframes slideInDown {
+ from {
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ visibility: visible;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes slideInDown {
+ from {
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ visibility: visible;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.slideInDown {
+ -webkit-animation-name: slideInDown;
+ animation-name: slideInDown;
+}
+
+@-webkit-keyframes slideInLeft {
+ from {
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ visibility: visible;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes slideInLeft {
+ from {
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ visibility: visible;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.slideInLeft {
+ -webkit-animation-name: slideInLeft;
+ animation-name: slideInLeft;
+}
+
+@-webkit-keyframes slideInRight {
+ from {
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ visibility: visible;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes slideInRight {
+ from {
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ visibility: visible;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.slideInRight {
+ -webkit-animation-name: slideInRight;
+ animation-name: slideInRight;
+}
+
+@-webkit-keyframes slideInUp {
+ from {
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ visibility: visible;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes slideInUp {
+ from {
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ visibility: visible;
+ }
+
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.slideInUp {
+ -webkit-animation-name: slideInUp;
+ animation-name: slideInUp;
+}
+
+@-webkit-keyframes slideOutDown {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ visibility: hidden;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+}
+
+@keyframes slideOutDown {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ visibility: hidden;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+}
+
+.slideOutDown {
+ -webkit-animation-name: slideOutDown;
+ animation-name: slideOutDown;
+}
+
+@-webkit-keyframes slideOutLeft {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ visibility: hidden;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+}
+
+@keyframes slideOutLeft {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ visibility: hidden;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+}
+
+.slideOutLeft {
+ -webkit-animation-name: slideOutLeft;
+ animation-name: slideOutLeft;
+}
+
+@-webkit-keyframes slideOutRight {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ visibility: hidden;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+}
+
+@keyframes slideOutRight {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ visibility: hidden;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+}
+
+.slideOutRight {
+ -webkit-animation-name: slideOutRight;
+ animation-name: slideOutRight;
+}
+
+@-webkit-keyframes slideOutUp {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ visibility: hidden;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+}
+
+@keyframes slideOutUp {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+
+ to {
+ visibility: hidden;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+}
+
+.slideOutUp {
+ -webkit-animation-name: slideOutUp;
+ animation-name: slideOutUp;
+}
diff --git a/template/xcx/css/guildford.wxss b/template/xcx/css/guildford.wxss
new file mode 100644
index 000000000..4b43b8b11
--- /dev/null
+++ b/template/xcx/css/guildford.wxss
@@ -0,0 +1,16 @@
+@font-face {
+ font-family: 'Guildford Pro';
+ src: url('GuildfordPro.eot');
+ font-weight: normal;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'Guildford Pro';
+ src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff2'),
+ url(data:application/font-woff;charset=utf-8;base64,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) format('woff'),
+ url('GuildfordPro.ttf') format('truetype'),
+ url('GuildfordPro.svg#GuildfordPro') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
diff --git a/template/xcx/css/style.wxss b/template/xcx/css/style.wxss
new file mode 100644
index 000000000..150d20973
--- /dev/null
+++ b/template/xcx/css/style.wxss
@@ -0,0 +1,143 @@
+.product-con .wrapper{background-color:#fff;}
+.product-con .wrapper .share{margin:0 30rpx;padding-top:25rpx;}
+.product-con .wrapper .share .money{font-size:28rpx;font-weight:bold;}
+.product-con .wrapper .share .money .num{font-size:48rpx;}
+.product-con .wrapper .share .money .vip-money{color:#282828;margin-left:13rpx;}
+.product-con .wrapper .share .money image{width:46rpx;height:21rpx;margin-left:7rpx;}
+.product-con .wrapper .share .money .vip-money{color:#282828;margin-left:13rpx;}
+.product-con .wrapper .share .iconfont{color:#515151;font-size:40rpx;margin-bottom:10rpx;
+}
+.product-con .wrapper .introduce{font-size:32rpx;font-weight:bold;margin:23rpx 30rpx 0 30rpx;}
+.product-con .wrapper .label{margin:0 30rpx;font-size:24rpx;color:#82848f;margin-top:22rpx;}
+.product-con .wrapper .coupon{padding:0 30rpx;border-top:1rpx solid #f5f5f5;margin-top:25rpx;height:80rpx;font-size:26rpx;color:#82848f;}
+.product-con .wrapper .coupon .hide{width:540rpx;height:80rpx;line-height:80rpx;}
+.product-con .wrapper .coupon .activity{height:40rpx;padding:0 20rpx;border:1rpx solid #f2857b;color:#e93323;font-size:24rpx;line-height:40rpx;position:relative;margin:19rpx 0 19rpx 15rpx;}
+.product-con .wrapper .coupon .activity:before {
+ content: ' ';
+ position: absolute;
+ width:7rpx;
+ height:10rpx;
+ border-radius:0 7rpx 7rpx 0;
+ border:1rpx solid #f2857b;
+ background-color:#fff;
+ bottom:50%;
+ left:-1rpx;
+ margin-bottom: -5rpx;
+ border-left-color:#fff;
+}
+.product-con .wrapper .coupon .activity:after {
+ content: ' ';
+ position: absolute;
+ width:7rpx;
+ height:10rpx;
+ border-radius:7rpx 0 0 7rpx;
+ border:1rpx solid #f2857b;
+ background-color:#fff;
+ right:-1rpx;
+ bottom:50%;
+ margin-bottom: -5rpx;
+ border-right-color:#fff;
+}
+.product-con .wrapper .coupon .iconfont{color:#7a7a7a;font-size:28rpx;}
+.product-con .attribute{background-color:#fff;padding:0 30rpx;font-size:26rpx;color:#82848f;margin-top:20rpx;height:80rpx;}
+.product-con .attribute .atterTxt{font-size:28rpx;color:#282828;}
+.product-con .attribute .iconfont{font-size:28rpx;color:#7a7a7a;}
+.product-con .userEvaluation{margin-top:20rpx;background-color:#fff;}
+.product-con .userEvaluation .title{height:86rpx;border-bottom:1rpx solid #eee;font-size:28rpx;color:#282828;margin-left:30rpx;padding-right:30rpx;}
+.product-con .userEvaluation .title .praise{font-size:28rpx;color:#808080;}
+.product-con .userEvaluation .title .praise .iconfont{color:#7a7a7a;font-size:28rpx;vertical-align:1rpx;margin-left:8rpx;}
+.product-con .product-intro{margin-top:20rpx;}
+.product-con .product-intro .title{font-size:30rpx;color:#282828;height:86rpx;width:100%;background-color:#fff;text-align:center;line-height:86rpx;}
+.product-con .product-intro .conter{width:100%;overflow:hidden;}
+.product-con .product-intro .conter image{width:100%!important;display:block!important;}
+.goodsStyle{margin-top:1rpx;background-color:#fff;padding:22rpx 30rpx;}
+.goodsStyle .pictrue{width:120rpx;height:120rpx;}
+.goodsStyle .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.goodsStyle .text{width:545rpx;font-size:28rpx;color:#999;}
+.goodsStyle .text .name{width:360rpx;color:#282828;height:75rpx;}
+.goodsStyle .text .money{text-align:right;}
+.goodsStyle .text .money .num{margin-top:7rpx;}
+.goodWrapper .item{margin-left:30rpx;padding-right:30rpx;border-bottom:2rpx solid #f0f0f0;height:180rpx;}
+.goodWrapper .item .pictrue{width:130rpx;height:130rpx;}
+.goodWrapper .item .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.goodWrapper .item .text{width:537rpx;position:relative;}
+.goodWrapper .item .text .name{font-size:28rpx;color:#282828;width:453rpx;}
+.goodWrapper .item .text .num{font-size:26rpx;color:#868686;}
+.goodWrapper .item .text .attr{font-size:20rpx;color:#868686;margin-top:7rpx;}
+.goodWrapper .item .text .money{font-size:26rpx;margin-top:17rpx;}
+.goodWrapper .item .text .evaluate{position:absolute;width:114rpx;height:46rpx;border:1rpx solid #bbb;border-radius:4rpx;text-align:center;line-height:46rpx;right:0;bottom:-5rpx;}
+.goodWrapper .item .text .evaluate.userEvaluated{font-size:26rpx;color:#aaa;background-color:#f7f7f7;border-color:#f7f7f7;}
+.promoterHeader{width:100%;height:220rpx;}
+.promoterHeader .headerCon{width:100%;height:100%;padding:0 88rpx 0 55rpx;box-sizing:border-box;font-size:28rpx;color:#fff;background-image:url('data:image/png;base64,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');background-repeat:no-repeat;background-size:100% 100%;}
+.promoterHeader .headerCon .name{margin-bottom:10rpx;}
+.promoterHeader .headerCon .num{font-size:50rpx;}
+.promoterHeader .headerCon .iconfont{font-size:125rpx;}
+.sign-record .list .item .data{height:80rpx;line-height:80rpx;padding:0 30rpx;font-size:24rpx;color:#666;}
+.sign-record .list .item .listn{background-color:#fff;font-size:24rpx;color:#999;}
+.sign-record .list .item .listn .itemn{height:120rpx;border-bottom:1rpx solid #eee;padding-right:30rpx;margin-left:30rpx;}
+.sign-record .list .item .listn .itemn .name{width:390rpx;font-size:28rpx;color:#282828;margin-bottom:10rpx;}
+.sign-record .list .item .listn .itemn .num{font-size:36rpx;font-family: 'Guildford Pro';color:#16ac57;}
+.coupon-list{padding:0 30rpx;margin-top:25rpx;}
+.coupon-list .item{width:100%;height:170rpx;margin-bottom:16rpx;}
+.coupon-list .item .money{background-image:url('data:image/png;base64,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');background-repeat:no-repeat;background-size:100% 100%;width:240rpx;height:100%;color:#fff;font-size:36rpx;font-weight:bold;text-align:center;display: flex;flex-direction: column;align-items: center;justify-content: center;}
+.coupon-list .item .money.moneyGray{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAACqCAMAAACknjIxAAAAgVBMVEUAAADGxsbKysrKysvDw8LBwcG/v77MzMzGxsaxsbHExMS/v7+9vb26urqvr6+3t7e0tLTCwsKlpaTGxsatra2qqqq8vLynp6fIyMi5ubm2trazs7Ojo6PKysqpqanBwcGfn5+mpqasrKzMzMyioqKhoaGgoKCampqdnZ2cnJyhoKBnDnX9AAAACXRSTlMAE3Zubnapp1QPqckSAAAYs0lEQVR42pyc3XITMQyFCVzwU0J/0jYN6TYkpL3g/R+Q2mv7SDrSKqBlOpO9++ZIsixp+QD7ndrk2NP0ZG2j7JuwW9jhcLg9VLsa9n3YY7d1t12z624/q91028/2tduPrz+G3Xc7nU7gXaW470/5o3k7MGifBCx4DfABdhUSr2GNdmdwf1pcmIergL/EpAMY5uNuyiN46xMAF+YrRXs1YBswiFleLXDEy8QA/pz7s2XWuLk/wxbVBW7A+/N6pgU0FCZeQatcejXlLp1EMDwavBsB3JEPDfgKAgtiT14AQ2FovIfAcQCfZnv4F4E18VP5Y2hZ3lhf0FL4kr4Vdqdhr+HSBXbvhi/07cSd92Puz3l+NvkqjN9uAxbAyM+DthFDXakviENgKfFDV/jTMm6WsFhfjl8CdvV9JIE9b7ZJi92ZA1gCrz7nwUv5alKwEFjGL6JXCnwLXA0MiZfD1zmEk/R833gL8OrL52kRFwoDFsAwLe9/JGj2Z5b3utMyb+zPA7cAE6DH7GUspgUyaHWCPgxgLS/M8K6p3vAO4Zvl82jEL4AThcmfHdO4UbqKAxjxuxa8DRi4xLtHyorLjYuBwUoJelo6j4zC7MyuP9v4pfpK4wJ4ifcEXgbOD6S82mB/1smKCkoY5PX9Ob40MC/HbwdefZrSA4k9elqQFwrfGn8G7yHMV3RfMIZLQzMGvpcCEzBqDtef/fPXWuLOcYEl5KWC0te3qusJ/EMaaGdcBbyKcfn8ZVh2542gRYKGP9P9KL8vgBb6gjnLVw/DXl6WgOvD5cZEwNEFWNUby/UkARMuxe/FwMB9f5ZcenLdeVq8DW5SXJhOz2uW19CC1wEGLXAdgV+QtFKBwZrlZw5f70KY3n+vyyPJgQvYdgovlc8aOJI3Pn4n1M+Ei/IZwEE5afzZ13fXDApb4mLkz6ivNG0IPDWJoTDCV5nCNQpzv+7CcnINXhnKlK/Q2mF5h8IM7Fsor8lWQM7LSSXvlS43AAxN6aoEfY3ATEzH0UsB3oYxPDntyazAyvNV2p9EPVlw18QLYtPIcvVVtM22nKUnlBvmRsjHURDBt7q84hOY4peJ1x2YTmHwosrS98GT9WfwFuCVW3KQwlpiui1ofZn4kv4VfHiHX+6tgVp3WmHr0AOXgSfASmTQwpsBzQUWeIdJ3oFs0hVwqbTsuOJWqHp3DRfElKC3xeDSCN6wfs7bz8ybhy/lK6U2ig6cwgQMkSNeEIukNUFkrjiy9rPCBXLnPQDX5QWkhkeN5Wcsbu3AoS1uA47bz8DNLwx+APsX/pwXCWtYPDnjQlrHL2hdYO+6MGUV9CYZmHnzI7eeFOSEezHwu4G2PJUYwFk5mR9Hy/3JrHwGr0RnXObd+7wVGMQQ2MTw1B+Yn5+RoXlAiPjNziP06wh3XXkNMV36CRe8IC60UBhZGvr6EZzff+MDCbT2vrBWFZbWl3DVZLTNF8yo4V4cTQ23+TPsWM5hNGP99sa0HL4bL0F3WsHL+WrtWTrpv5G6BgKfwCv8+bg9NuCOnMfwUr/drSeZF+3nYckoCQJze0PcG9SoAe4s9a3AH6d4gQMGXMGb52fm5XlZOOrndNVmDNKJAawqrZGgBW0FrkmLmrE+bkVmeXNezldSVGeXwyoc6esBt4PYynuc7UN4HaQG1kYPkML9Db/fTsAkL/FCYC2v8eIOrnkt8HEmvvswN59Th964DSzQOhF8SX1lcpe+LpiKMpwv0KxfKgyrvO/AgT9fPg/lC3DcsOu0j0SbuvPCqWv8GcCKtvLe1RgGbTY+goX1MwYM2f3XhHJw3zfyev06j/dB+/O2A5csnTo096/8gegh6j9f8TglGCX5m2eqqkL8dsSqsmrNnuYOFuJXAq9yXqD6Ds0DpCR+k1UOAGtv1sDQlHrRRuBO24BjVm5w5Pf9K74Pkr6dHbRLwME6objt86iw64t0BeCPecGxPO3+ttzP4fAVZ3E/n3zaeGEFuMW4dcfnUbWatBg37W/k/VjmHZCQWpra5MD9yKPlpGxHheTOQmGiDeRNHDrl7ZTyLgyBi1G9obc3GBiqohcNfUGsFZ6y+y/JSwLTfD++8FPl4R1Kihe2sK8y6qvWyuJ6IwS2uKQwRW9UT35nXhPLEBgdafASLu8z9COIZg1G3zvY83sMP2X+HAdw4s+a12t2MG4jrrmKgCOBT8MYGLicpZnY0G7S+2+cr4Ti3aEfw3132cXhC/CoN2YnFgV0M+vOEPhZn8N8HaTxUbJOGAFjwQHAUdFR5A2aku2nng/yqo6QtwADF8CevjRNMQNCJjaw4HM7eKRvwwWvKbDwpodsgbSjMyStwjtwAfyR5oNBP+d/FoIf67+FBsDONN37UNCJX/lCaOqtcujzCLjPMmlZcaMBQ+zQ3J7suPEC+FpP+TEEtbz6JxgD4OOcrwRvAw4SFmiTiWhaYOFFtL6CAzj+/ojcG4wteenRd9VWykvAyfiI3DmdL0DdeGF2p26F8VCB9b4Xkt57uxz6BH5udi7ADTf7YGPjqtuB/foq2XfX9YY7EwSuuR92Rvi0HY3eEW8hrjHM697LFyQah/q8/j4lp+fBu/eAg/pj8L489PMJDj2OJaPv+7+SpZ/c+36M7DawiM6ZGDazU6SGC2ChaMR7L8ehvN2gK63Bez4X4FU2/wVszAsj3vj4hTdjamQ+uArvD52vTlRUEDutuwZ89oE3QfwihNP5L+Ny/OL8VVuEqt4w+MJ0jnrQOYuRB+/s0gQskdP6mXnDARryMzZY9JYK+CpuJLDdz9HA2/I02EF8rh5dk5YFXpoeLS40APfiD2Rp1Ru0jMsOPfY3eCGr1h4grvK+nl8/LK/nkC+TwrYbi4wNeZ1t6PUcvQYXy/zgdQOYU9RLj2jp0uBtwK+vH5x60h0g5e2NiktvBDG1N+RYEHiQF/wyP8uMVeA6H6b9MkuPvAXg/+tf5bzcjzbVc7iDxMeT7u+gjCQ9K/iWWpZV4tdiJoahrVtf6RED4R6SD4J9efcABm7MOwMDF3gdTvLW4qMWIDPvK7I00160voGAjRt4ZqHDerMGRECHDTyxf8UnEIgRwHcD+K2cw4OXb/zEGw/4TQaDUXlVeSFwt1ld4MffTwp9hZhgq8RHuDOA3xQwLFvgYH3DhSzn+nsdLhHuwb/UvuvDX0pOIEb4joI6cGl8XUb6xgmLP9CJ9YW68nv2IS8EdhJ0NwPM3Q11JA2F34rCq08bp7wytCqACThZuNMb0Xrq2/kabjHfnc2UX58+RwJGh/Z4B+A/b+/AwYGU7D9LdW/TgRIENmNuyAlc8mezdQafJncGcPstWwCvTWE/RYfdHBJ4aeD/6OM66TlYKow/SFLzUOJ9bsQQ+PmtAEPhC/MV6esl7PK47gx5TT2plvrTeQNvrXQ69DdmccW7QlvsV41hqjb89Ryic108+v75OnLnzov7MOMufSA72lfghcIiY81WsjSvMwAXvAeboOHf5gpRHihMuAbYlNPp/yBUTS1EP2xJ4cYLgRvwr1/lHCZ9FxeSRq4qFuoLp27eTF8672+gLvUrYQo33O8344U2cMCrglt53xiYF5LwOR3KKbXCwvoiivuk29X3Bu8C3OT7nHEgM7B8AeBf7NLx+Qs5D1Cd9s+op+N/yl5xm4X6UokVf3Gm+pPaw0u7o9AW3pK0rLybC+ZH6vXAhb4QeOd/ldJw8RawVmFckhh42FbyqpHDbFXfCqzDN5uHIoL5dcE1ApdkBeAbxdve4h0TU472Ahg+jXZs5wXyueICOD5+WUmK4cMQ2Oi700veJC+dyhb3q62yLC/sCN6zpa1RbIC/UYJWtHw9kn3L8VLLu/N3nt+fIi7eBl3LH+6hdP/gA6uBCvOeu8QfVn8rOxcepYIYCqtRo4Ki6C5ZIMhuuFeW//8Dnfdpe1qu1lUTH4mfp9OZ6WN4H/d7My+If1fiuItU4BrgPa1qzLbD7p45gIs1DDYX+JI0vuooHeHy4SJ/3X/W7uuGeIFbfo15WV4+VFZzgBUbgFuFJfOmr7kmADzeIEMJsnrnpzR8w42nytxRFa75k7587CCBB92ki8KXCjyVnEcD1quXBHbLg/EzFdzEvwduxBtPmiFEA9dk3Z+hb7YjFQ2zwiPjEb1XgLD044tzulhxlgPyuvFqv+FdaimpA9z0FY7JFjB4b5MYAgM4BS3QBvnncoVw0q9S9zVwI3feu5vUYdmhI4Exd1bJ4LzTWMW9pDQVmxPw3YJKxS322+ln4PX7+DXq4t+bXwTw4qOjEPjBm+qHQwshj1riaRAzMGjBWySuWLJ8Al6JKxQGWPycDi79cXhG6yhMpLWMvp0YgRsCJ2DvfoQbEn75d+cC8Fo7+ajn01Ld06Ycr1/KQoOXBSbggTZftkeErYx8S1+3Oa/hQN9k6nfMwSIBD+KKy2M438ta3S8/kgyLBeZbUm+40w5d0ebbfLno2D3NNRH/IUjYSdzyC85zjOtRFA2mnPPitbzfCZhx+U4Yj/VvGxGWKq6/54yNQF0PHgoMRsJ7A8+Ql3Ar20aMTtrR50O3WF68IuTq24Ev0DcLXGi7TZ13HDxcXGdj/t1YZftCEfix4jIw1PXcmfQN4nPAizz8AC7Et1kBX6+zjGbSpaW6buRecb75Mf3aaKizaBsKYm7AgjEuZ+1gu276bDHfmj+DeOr/GXMOWj8IN5xr4O7QpHKn7XD7jmbcnPwZuIsbUrABAxi8lXYetOnrWoCbwsSVcJP5c6Mr+DM9oGPdmR/95qTl4vkqPE7qojdc9gZ5ofD1PI3d6k2EC5PHrvi9a0O8qXVvAcz7EYgp6Y4hO+AyMMrCY/+9WYUTb5a4G4ADXlNXWnkzgyzlhn61Gj395fKa+MznDR5033Z/xo6UrdJWiWs4K2sYVJSZprpSy62HwBXXGa1jgRdrDAjQsApLg3atHFr0PUuPNsD94AF17UWCnsFeHoKlR86Rv1K0YbyKqyrVormz47FVGSpq+oKN40jdh4e8mfl+YXid91+mBRuaoBdf0unQfH7mgAVillcNrqTvN6gL4FkAN3W58g9DX7SQl3k3MojBgqdlYAPX8uLOAFyYqYSjstJwYWN3zi6deNximt/2vr7zXu6TaeqHyf0IAgMb7YSuQ9efAKxCtJOGtsDnxlvStJAX+mpg/Yx9KDAesmPebByvYDIQvwzeAqqi9M5dwIxsBW68CRjuTJ0dbp52TeEKuPyrPA/8XcqLmKX2nVFCKl8wt3GHLWftJkH7+ppP111hre9PN8/DuKxv7rRjXn6/LygCD6RMZUaRXmyYBi7Wr60lCd4ksKgPC32X6w4JKsL9B+BuJLBugAYw3Bm8fUZHK8zEZyHwta3gWZVa7tWVatvoWvLKo4V8YAZBzOzCVFOBDeBTA5YHSiAX1HHtj3EL8SwEvnZ5Z1lqgT+TvAYXoQm4sjU4fAM7TnKgX7QCI4n1QksY5vFmXA2cJK686Qs9HgudO2X7dYGf3NZv8HYjXgX8ou4FD3TmcLdhSEy4l8u582bD6RrAMKJt8kJEgfuV7xJMvHzpf1H3IPexZLomRXtS/vFyPEPftIiVwu8WedcZyYNiXKNwgf2HJGWJzwBuJuVlfbuRvNkmCJwN98Wcpo3uR414TVD9PXP6pBGO0ULee53fHbYSFVjFi8ft4v5KZKG1RxeJp1sHpvD8RTeirYi3WMfl1n6FS7xBzq4CNQ1PpG+fRoIBV+grSisNtgH/+XNWTS1x5XAVDvzi/SB6mSJ8tD++BCuPPS2ndTqwIO60ReHKm7468Ot5znY9v8FhUiNXXn+cbAPcrzAAx5f+6G2OwgNgm+UgfXeghcGjZzi0Jq5r2FjXN1caAqhHjCJ1faOPYjSt4EHfmZLwgT+sYBfe+nn9pq9zYgVswk32WsM08tI2zbGKPl/ja8LF7wXPq+7/p8hfgMGjLwy8IfX3oqw7o450fZXAAzkfulB5MEt4TWu08wYfLYpLP3BhFtdUGZSAOE0CF+rmb+zQsrkhe7QEVmZrS6Nu9khQw5t51huL1yNernq/sMJxlhLxypO3ACuBNbJbPVzx9Cuw3FEzTRwdJ8Oms5e0SAEkNyTcF/i4EQKf4dLNnWEotaBmVnl9qHS64tF2hKsg675UFX1QeWbnPAlzkljo8KjA0znz/oE/K+DfSt4vRd4hovtgzmM0+hx1cSxM1mVgteUA1wtXsb6jKDpTvBLApu69whKNnPbJyMs1FVs1S1j8NgWylADOQAAm3oEb7EijpHYFMCm8WgEXRX5//rWZvO7nL/d6JC78TcY7VeCT9NeT9Oho/bK8KHtDYnDKNbwawMCNLn1I6NBVMQzPnxtVlZl5AVxpTrT/GoX9C3Bdvq1oeq64DnHJSwOXeN1TsnJns4D581S+iUpRYvZG6xSQXr68HwXurLuWpitgaR8uEocfoPLYVqk0E8r4g3Ll9mvfc3OqDIMJLs1lhlBf7i+cc5m45eI94NRKGT4/sV498sf/Pmlcc0ES8gqPRiEwMZsikqoj9GQAgGH6Qkj6TrB5HolKcmmaJ5O4q9ItateoimUwWsCVl1tTgNuC9DMEFAeO0q5ibkkkrxR4dNzdZJn4qoPW2n4++4jC/WU3TsptaPt17/sd2MnZvBhg+CseiKooWwEsqklg7bjoAkDe/Twb4jcZKVi/azTZ0aX+iYH962+RErDyPRkAS97nzjvi77MqneWvyouecKxf7c4jk/UK4Ojz2h7ly25Of13Uy2ImRQ+y05nfV2nAaoC//oEtWI50rFQKQ9/elTZVXGkATlyW9rGri55vhtos+XOztB9RSg7xqDC/dIEBvFMwWwWMizDWrtC34Rrmq1zD/Dzf2na/P7HXLpyfx+fVcWP3wg77kGMVgDPKs78rSXcW/nybYaOXR0ZpOb/eY5Vd2uy0eydD6V333XHBnfNeDl/mRzfh8c4xuvB24Bv0NcxyH9b6ogtaAbOIG6oCU4LjUIv7rC+A+QCl5a2WgBGv6BY8+gqTP9883isB95ycwDWhjG/1e++jY+m6fyjIAOY2K+JtuCCepy3PvY8hnewLffWywucSqtmloW7wlI7Ty+7gpq8D5G0SV5n9zwMqFOTP9mR8gRcIYhrtMLCqJ08ELbxyffepM7NI8xctYW7j0MjR/YcVlrH3sqU/RLzFZscoSgsmqS5fnZ74VPGdQjRV+WHlqUIQI4ERXW+nZsf65/iWpID7OjbG+zDkpeEzk/sYAuI9Ci9EB+PP43VGyk95CxijNxd4gdLXIa4W8wI4n6Fp2o6fWuESUZWYczoG+Jt+zy68z5vcRVu8O/Z6yQvaTnzrtAP5VV0eyuINPkoVuOmHDW+ze7oVYhA4bu0/0Qbs7UdJ4i0O0H4aC/JCYNERr29LiNIrGocGsCwgdSIRkjC6AVueVCkqN1rLi9m5rboxgFY4PowOlqKp1iYAwjFgKXCRmHPM36OuFcehzfNBSl6KuTlWZRs1hqOzfgl3vkHfwcvACx8lgwy0U0XgrF01wuXW4NOOcDGesjVp6Ol8vnCeQ/LWazCWsL04wKXpMV36LPPOvDnQ+jwsF/njUQbBq4e5q7pw56n8w496Q4K81qPPukncpmkRr9a8HenPFxlEkO97VGRgfQ3wQ3iAftY3/kvv+EaAFmcxuggjYnnAFK74aVXY04bD72e5IfH77jHuDrSmNnRUZe/jNO54FxGwBjAMvNo0cPx0H/RFX+F3DkcoMsT7Ec8Cn5S6WzDks5WQdzvJcRys3y4vYFWIjoFjXkQr+SDlZ16h1Pm98MBblZcDFpbj8xD4Mqt5jQnEtP+6sLwPu/7ccPEJQehq2B8I50AnsKXRukwj9aUTYg/OcsCs2EW4M8krkpXaCBi0K3PC4nqp47Bhk44/u3Gi/VfuR+3CkAzenNdvtZkfqsCBErzWZJR+++njGk9hdeSqK/RFUnbP7voZwMtvcZz8/AZ4SxYd3qwHVMpsLNzZ8+j8jQzA2d5+zMDSInmzHVi/g9PFEci7o5Oie9+ZjnIiFsBwaBWib7wd8ToGMBJ5sHgea59hdBH/W6X1u86sO8spI6MvTg+QCfL2KA1cLGDIG1pt3npDxLSGqapy4PvP538d5fev+3Uktk6H0tYC4HS21JfHdqCcBi3+VmRvun10iKOmQoMDiX1eMcz/gPuReN+sFJJ6pTPkndT2xduvCxsDvwWt5aWe7wOr9zngBW3bkMihM24m7hT0L++47S8wMl0Il4EhMdS914X1maNR+LZbeH6u8qLWX//xDXg2+l64oaPpO8GhPeIY+BPp200XvbMdmOZb0FVogU/yVrvdgXd3FOHW6DurI2gHntMCvlE+9p+B31LAiprOILFkCeLVNztJuIO8O/2AAfO2w8YFtMXaXjyVvOzNjVcxMAz6cv8O1Rf4dvvLz2/wbGxXuC1eIEMuOQB8nkzi7qLuwSTvgv0FWzFPbqn+R/UAAAAASUVORK5CYII=');}
+.coupon-list .item .money .num{font-size:60rpx;}
+.coupon-list .item .text{width:450rpx;padding:0 17rpx 0 24rpx;box-sizing:border-box;background-color:#fff;}
+.coupon-list .item .text .condition{font-size:30rpx;color:#282828;height:93rpx;line-height:93rpx;border-bottom:1rpx solid #f0f0f0;}
+.coupon-list .item .text .data{font-size:20rpx;color:#999;height:76rpx;}
+.coupon-list .item .text .data .bnt{width:136rpx;height:44rpx;border-radius:22rpx;font-size:22rpx;text-align:center;line-height:44rpx;color:#fff;}
+.coupon-list .item .text .data .bnt.gray{background-color:#ccc;}
+.noCommodity{border-top:7rpx solid #f5f5f5;}
+.noCommodity .pictrue{width:414rpx;height:336rpx;margin:75rpx auto 30rpx auto;}
+.noCommodity .pictrue image{width:100%;height:100%;}
+/**订单列表订单**/
+.pos-order-goods{padding:30rpx;background-color: #fff;box-sizing: border-box;border-bottom: 1px solid #eee;}
+.pos-order-goods .goods~.goods{border-top:1px dashed #e5e5e5;}
+.pos-order-goods .goods .picTxt{width:515rpx;}
+.pos-order-goods .goods .picTxt .pictrue{width:130rpx;height:130rpx;}
+.pos-order-goods .goods .picTxt .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.pos-order-goods .goods .picTxt .text{width:365rpx;height:130rpx;}
+.pos-order-goods .goods .picTxt .text .info{font-size:28rpx;color:#282828;}
+.pos-order-goods .goods .picTxt .text .attr{font-size:20rpx;color:#999;}
+.pos-order-goods .goods .money{width:164rpx;text-align:right;font-size:28rpx;}
+.pos-order-goods .goods .money .x-money{color:#282828;}
+.pos-order-goods .goods .money .num{color:#ff9600;margin:5rpx 0;}
+.pos-order-goods .goods .money .y-money{color:#999;text-decoration:line-through;}
+.public-total{font-size:28rpx;color:#282828;border-top:1px solid #eee;height:92rpx;line-height:92rpx;text-align:right;padding:0 30rpx;background-color: #fff;box-sizing: border-box;}
+.public-total .money{color:#ff4c3c;}
+.font-color-red {color: #fc4141 !important;}
+/*商品标签公用样式*/
+.pictrue_log_class{
+ background: linear-gradient(90deg,rgba(246, 122, 56, 1) 0%,rgba(241, 27, 9, 1) 100%);
+ opacity: 1;
+ position: absolute;
+ top: 0;
+ left: 0;
+ color: #fff;
+ text-align: center;
+}
+.pictrue_log {
+ width: 80rpx;
+ height: 40rpx;
+ border-radius: 6rpx 0 12rpx 0;
+ line-height: 40rpx;
+ font-size: 24rpx;
+}
+.pictrue_log_medium {
+ width: 80rpx;
+ height: 44rpx;
+ border-radius: 12rpx 0 16rpx 0;
+ line-height: 44rpx;
+ text-align: center;
+ font-size: 26rpx;
+}
+.pictrue_log_big{
+ width:100rpx;
+ height:46rpx;
+ line-height: 46rpx;
+ border-radius:10rpx 0 16rpx 0;
+ font-size: 28rpx;
+}
+.bg-color-hui{
+ background: #bbbbbb !important;
+}
\ No newline at end of file
diff --git a/template/xcx/font/iconfont.wxss b/template/xcx/font/iconfont.wxss
new file mode 100644
index 000000000..2ba808d61
--- /dev/null
+++ b/template/xcx/font/iconfont.wxss
@@ -0,0 +1,757 @@
+@font-face {font-family: "iconfont";
+ src: url('iconfont.eot?t=1583910898195'); /* IE9 */
+ src: url('iconfont.eot?t=1583910898195#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
+ url('iconfont.woff?t=1583910898195') format('woff'),
+ url('iconfont.ttf?t=1583910898195') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
+ url('iconfont.svg?t=1583910898195#iconfont') format('svg'); /* iOS 4.1- */
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-zhibojieshux:before {
+ content: "\e63d";
+}
+
+.icon-zhibo:before {
+ content: "\e63e";
+}
+
+.icon-VIP:before {
+ content: "\e751";
+}
+
+.icon-tuiguang:before {
+ content: "\e63b";
+}
+
+.icon-geren1:before {
+ content: "\e750";
+}
+
+.icon-gouwuche4:before {
+ content: "\e74f";
+}
+
+.icon-fenlei1:before {
+ content: "\e74e";
+}
+
+.icon-shouye3:before {
+ content: "\e74c";
+}
+
+.icon-geren:before {
+ content: "\e74b";
+}
+
+.icon-gouwuche3:before {
+ content: "\e74a";
+}
+
+.icon-fenlei:before {
+ content: "\e749";
+}
+
+.icon-shouye2:before {
+ content: "\e748";
+}
+
+.icon-mzshopping:before {
+ content: "\e746";
+}
+
+.icon-gongneng:before {
+ content: "\e63a";
+}
+
+.icon-gerenzhongxin-copy:before {
+ content: "\ebc0";
+}
+
+.icon-shouye1-copy:before {
+ content: "\ebc1";
+}
+
+.icon-gerenzhongxin:before {
+ content: "\e636";
+}
+
+.icon-shouye1:before {
+ content: "\e637";
+}
+
+.icon-gouwuche2:before {
+ content: "\e638";
+}
+
+.icon-fenleiyemian:before {
+ content: "\e639";
+}
+
+.icon-gouwuche2-copy:before {
+ content: "\ebc2";
+}
+
+.icon-fenleiyemian-copy:before {
+ content: "\ebc3";
+}
+
+.icon-tonghua:before {
+ content: "\e740";
+}
+
+.icon-youjian:before {
+ content: "\e677";
+}
+
+.icon-dadianhua01:before {
+ content: "\e623";
+}
+
+.icon-paihang:before {
+ content: "\e73e";
+}
+
+.icon-weizhi:before {
+ content: "\e62d";
+}
+
+.icon-paihang1:before {
+ content: "\e633";
+}
+
+.icon-shuoming1:before {
+ content: "\e673";
+}
+
+.icon-dianhau:before {
+ content: "\e634";
+}
+
+.icon-shijian:before {
+ content: "\e635";
+}
+
+.icon-huabanfuben:before {
+ content: "\e654";
+}
+
+.icon-jian:before {
+ content: "\e621";
+}
+
+.icon-jia:before {
+ content: "\e7e0";
+}
+
+.icon-xiugai:before {
+ content: "\e61f";
+}
+
+.icon-anniu_jiantouzhankai_o:before {
+ content: "\eb89";
+}
+
+.icon-jiantou_xiayiye_o:before {
+ content: "\eb8f";
+}
+
+.icon-jiantou_shangxiaqiehuan_o:before {
+ content: "\eb90";
+}
+
+.icon-shangxiazhankai_o:before {
+ content: "\eb9a";
+}
+
+.icon-dianhua_o:before {
+ content: "\ebaf";
+}
+
+.icon-yunshangchuan_o:before {
+ content: "\ebb3";
+}
+
+.icon-bingtu_o:before {
+ content: "\ebb4";
+}
+
+.icon-baoguo_huanbaohe_o:before {
+ content: "\ebb6";
+}
+
+.icon-baoguo_quxiaoshouhuo_o:before {
+ content: "\ebb7";
+}
+
+.icon-baoguo_shouhuo_o:before {
+ content: "\ebb8";
+}
+
+.icon-baoguo_lingjian_o:before {
+ content: "\ebb9";
+}
+
+.icon-baoguo_shouna_o:before {
+ content: "\ebbe";
+}
+
+.icon-xianxiazhifu:before {
+ content: "\e6e1";
+}
+
+.icon-icon_im_keyboard:before {
+ content: "\eb97";
+}
+
+.icon-tupian-:before {
+ content: "\e73f";
+}
+
+.icon-icon_im_face:before {
+ content: "\eb96";
+}
+
+.icon-yuezhifu:before {
+ content: "\e65e";
+}
+
+.icon-yuezhifu1:before {
+ content: "\e61a";
+}
+
+.icon-weixinzhifu:before {
+ content: "\e632";
+}
+
+.icon-zhifubao:before {
+ content: "\e61d";
+}
+
+.icon-haibao:before {
+ content: "\e73b";
+}
+
+.icon-weixin3:before {
+ content: "\e618";
+}
+
+.icon-crmeb1:before {
+ content: "\e739";
+}
+
+.icon-crmeb:before {
+ content: "\e735";
+}
+
+.icon-xuanzhong2:before {
+ content: "\e731";
+}
+
+.icon-shujutongji:before {
+ content: "\e732";
+}
+
+.icon-xiangxishuju:before {
+ content: "\e733";
+}
+
+.icon-gengduo:before {
+ content: "\e734";
+}
+
+.icon-up:before {
+ content: "\e617";
+}
+
+.icon-yonghu2:before {
+ content: "\e60a";
+}
+
+.icon-zhinengkefu-:before {
+ content: "\e616";
+}
+
+.icon-xiangshang1:before {
+ content: "\e622";
+}
+
+.icon-xiangxia2:before {
+ content: "\ebbd";
+}
+
+.icon-code_:before {
+ content: "\e723";
+}
+
+.icon-code_1:before {
+ content: "\e724";
+}
+
+.icon-phone_:before {
+ content: "\e725";
+}
+
+.icon-xiala:before {
+ content: "\e67f";
+}
+
+.icon-shezhi:before {
+ content: "\e619";
+}
+
+.icon-bianji1:before {
+ content: "\e614";
+}
+
+.icon-jiazai:before {
+ content: "\e62c";
+}
+
+.icon-2:before {
+ content: "\e684";
+}
+
+.icon-tuandui:before {
+ content: "\e685";
+}
+
+.icon-jinbi1:before {
+ content: "\e655";
+}
+
+.icon-guanbi3:before {
+ content: "\e6c5";
+}
+
+.icon-wenti:before {
+ content: "\e758";
+}
+
+.icon-ziyuan-xianxing:before {
+ content: "\e8a4";
+}
+
+.icon-yonghu1:before {
+ content: "\e644";
+}
+
+.icon-dingdan:before {
+ content: "\e61e";
+}
+
+.icon-suozi:before {
+ content: "\e631";
+}
+
+.icon-quanxianguanlisuozi:before {
+ content: "\e6d2";
+}
+
+.icon-lingxing:before {
+ content: "\e6ff";
+}
+
+.icon-miaosha:before {
+ content: "\e6c3";
+}
+
+.icon-hebingxingzhuang:before {
+ content: "\e656";
+}
+
+.icon-kanjia1:before {
+ content: "\e613";
+}
+
+.icon-qiandai:before {
+ content: "\e6b1";
+}
+
+.icon-tongji:before {
+ content: "\e687";
+}
+
+.icon-erweima:before {
+ content: "\e607";
+}
+
+.icon-icon34:before {
+ content: "\e62b";
+}
+
+.icon-yinhangqia:before {
+ content: "\e72c";
+}
+
+.icon-yituikuan:before {
+ content: "\e6fd";
+}
+
+.icon-tuikuanzhong:before {
+ content: "\e6fe";
+}
+
+.icon-sousuo2:before {
+ content: "\e757";
+}
+
+.icon-caidan:before {
+ content: "\e62a";
+}
+
+.icon-icon25201:before {
+ content: "\e70d";
+}
+
+.icon-kongxinxing:before {
+ content: "\e6fc";
+}
+
+.icon-shitixing:before {
+ content: "\e6fb";
+}
+
+.icon-pintuanchenggong:before {
+ content: "\e6f9";
+}
+
+.icon-pintuanshibai:before {
+ content: "\e6fa";
+}
+
+.icon-laba:before {
+ content: "\e612";
+}
+
+.icon-xiaolian:before {
+ content: "\e60f";
+}
+
+.icon-kanjia:before {
+ content: "\e69b";
+}
+
+.icon-shuoming:before {
+ content: "\e630";
+}
+
+.icon-mingxi:before {
+ content: "\e6f7";
+}
+
+.icon-tishengfenzhi:before {
+ content: "\e6f8";
+}
+
+.icon-guanbi2:before {
+ content: "\e61c";
+}
+
+.icon-yuandianxiao:before {
+ content: "\e82f";
+}
+
+.icon-webicon318:before {
+ content: "\e6c2";
+}
+
+.icon-tianjiadizhi:before {
+ content: "\e640";
+}
+
+.icon-shanchu:before {
+ content: "\e628";
+}
+
+.icon-weixin2:before {
+ content: "\e604";
+}
+
+.icon-icon-test:before {
+ content: "\e6f6";
+}
+
+.icon-guanbi1:before {
+ content: "\e6f5";
+}
+
+.icon-shoucang:before {
+ content: "\e606";
+}
+
+.icon-kefu:before {
+ content: "\e6b2";
+}
+
+.icon-shoucang1:before {
+ content: "\e714";
+}
+
+.icon-biankuang:before {
+ content: "\e6f4";
+}
+
+.icon-zhuangshixian:before {
+ content: "\e6f1";
+}
+
+.icon-jishuzhichi:before {
+ content: "\e6f3";
+}
+
+.icon-xuanzhong1:before {
+ content: "\e6ef";
+}
+
+.icon-weixuanzhong:before {
+ content: "\e6f0";
+}
+
+.icon-xiangshang:before {
+ content: "\ebbb";
+}
+
+.icon-xiangxia:before {
+ content: "\e8ca";
+}
+
+.icon-cuxiaoguanli:before {
+ content: "\e60e";
+}
+
+.icon-shanchu1:before {
+ content: "\e611";
+}
+
+.icon-caigou-xianxing:before {
+ content: "\e887";
+}
+
+.icon-caigou:before {
+ content: "\e888";
+}
+
+.icon-yingyongchengxu-xianxing:before {
+ content: "\e8a1";
+}
+
+.icon-yingyongchengxu:before {
+ content: "\e8a2";
+}
+
+.icon-shouye:before {
+ content: "\e8b9";
+}
+
+.icon-shouye-xianxing:before {
+ content: "\e8ba";
+}
+
+.icon-yonghu-xianxing:before {
+ content: "\e8c8";
+}
+
+.icon-yonghu:before {
+ content: "\e8c9";
+}
+
+.icon-sousuo:before {
+ content: "\e67d";
+}
+
+.icon-sousuo1:before {
+ content: "\e64c";
+}
+
+.icon-kefu_o:before {
+ content: "\eb63";
+}
+
+.icon-liwu_o:before {
+ content: "\eb65";
+}
+
+.icon-huobiliu_o:before {
+ content: "\eb9f";
+}
+
+.icon-jinbi_o:before {
+ content: "\eba1";
+}
+
+.icon-gerentouxiang_o:before {
+ content: "\ebac";
+}
+
+.icon-qunzu_o:before {
+ content: "\ebad";
+}
+
+.icon-shoucang_o:before {
+ content: "\ebae";
+}
+
+.icon-didiandingwei_o:before {
+ content: "\ebba";
+}
+
+.icon-xiangyou:before {
+ content: "\e679";
+}
+
+.icon-jingpintuijian:before {
+ content: "\e60d";
+}
+
+.icon-xinpin:before {
+ content: "\e610";
+}
+
+.icon-remen:before {
+ content: "\e67c";
+}
+
+.icon-xiangzuo:before {
+ content: "\ebbc";
+}
+
+.icon-ditu:before {
+ content: "\e906";
+}
+
+.icon-guanbi:before {
+ content: "\e62f";
+}
+
+.icon-liulan:before {
+ content: "\e629";
+}
+
+.icon-shenhezhong:before {
+ content: "\e6ce";
+}
+
+.icon-chongzhi:before {
+ content: "\e602";
+}
+
+.icon-iconfontguanbi:before {
+ content: "\e643";
+}
+
+.icon-zhekou:before {
+ content: "\e790";
+}
+
+.icon-duihao2:before {
+ content: "\e601";
+}
+
+.icon-duihao:before {
+ content: "\e64e";
+}
+
+.icon-jingyanzhi:before {
+ content: "\e62e";
+}
+
+.icon-wuliu:before {
+ content: "\e6f2";
+}
+
+.icon-pintuan-copy:before {
+ content: "\ebbf";
+}
+
+.icon-arrow:before {
+ content: "\e627";
+}
+
+.icon-pintuan:before {
+ content: "\e60c";
+}
+
+.icon-youhuiquan:before {
+ content: "\e6e4";
+}
+
+.icon-gouwuche1:before {
+ content: "\e642";
+}
+
+.icon-pailie:before {
+ content: "\e61b";
+}
+
+.icon-tupianpailie:before {
+ content: "\e620";
+}
+
+.icon-xiazai5:before {
+ content: "\e605";
+}
+
+.icon-weixin1:before {
+ content: "\e66e";
+}
+
+.icon-gouwuche:before {
+ content: "\e669";
+}
+
+.icon-jiantou:before {
+ content: "\e641";
+}
+
+.icon-huiyuan:before {
+ content: "\e60b";
+}
+
+.icon-xuanzhong:before {
+ content: "\e615";
+}
+
+.icon-complete:before {
+ content: "\e646";
+}
+
+.icon-xiala1:before {
+ content: "\e609";
+}
+
+.icon-dizhi:before {
+ content: "\e608";
+}
+
+.icon-weixin:before {
+ content: "\e600";
+}
+
+.icon-fenxiang:before {
+ content: "\e603";
+}
+
+.icon-bianji:before {
+ content: "\e6cc";
+}
+
+.icon-huangguan:before {
+ content: "\e624";
+}
+
+.icon-huangguan1:before {
+ content: "\e625";
+}
+
+.icon-huangguan2:before {
+ content: "\e626";
+}
+
diff --git a/template/xcx/images/1-001.png b/template/xcx/images/1-001.png
new file mode 100644
index 000000000..c2d7fae88
Binary files /dev/null and b/template/xcx/images/1-001.png differ
diff --git a/template/xcx/images/1-002.png b/template/xcx/images/1-002.png
new file mode 100644
index 000000000..c6bd22828
Binary files /dev/null and b/template/xcx/images/1-002.png differ
diff --git a/template/xcx/images/2-001.png b/template/xcx/images/2-001.png
new file mode 100644
index 000000000..a25cf9370
Binary files /dev/null and b/template/xcx/images/2-001.png differ
diff --git a/template/xcx/images/2-002.png b/template/xcx/images/2-002.png
new file mode 100644
index 000000000..76aa0d23d
Binary files /dev/null and b/template/xcx/images/2-002.png differ
diff --git a/template/xcx/images/3-001.png b/template/xcx/images/3-001.png
new file mode 100644
index 000000000..b55ee3113
Binary files /dev/null and b/template/xcx/images/3-001.png differ
diff --git a/template/xcx/images/3-002.png b/template/xcx/images/3-002.png
new file mode 100644
index 000000000..4a0ca4193
Binary files /dev/null and b/template/xcx/images/3-002.png differ
diff --git a/template/xcx/images/4-001.png b/template/xcx/images/4-001.png
new file mode 100644
index 000000000..26d7fbe56
Binary files /dev/null and b/template/xcx/images/4-001.png differ
diff --git a/template/xcx/images/4-002.png b/template/xcx/images/4-002.png
new file mode 100644
index 000000000..f3304d796
Binary files /dev/null and b/template/xcx/images/4-002.png differ
diff --git a/template/xcx/images/accountBg.png b/template/xcx/images/accountBg.png
new file mode 100644
index 000000000..0299e5779
Binary files /dev/null and b/template/xcx/images/accountBg.png differ
diff --git a/template/xcx/images/address.png b/template/xcx/images/address.png
new file mode 100644
index 000000000..408b0cac7
Binary files /dev/null and b/template/xcx/images/address.png differ
diff --git a/template/xcx/images/alter.png b/template/xcx/images/alter.png
new file mode 100644
index 000000000..5ae334707
Binary files /dev/null and b/template/xcx/images/alter.png differ
diff --git a/template/xcx/images/angle.png b/template/xcx/images/angle.png
new file mode 100644
index 000000000..68865ab83
Binary files /dev/null and b/template/xcx/images/angle.png differ
diff --git a/template/xcx/images/balance.png b/template/xcx/images/balance.png
new file mode 100644
index 000000000..ef7344fec
Binary files /dev/null and b/template/xcx/images/balance.png differ
diff --git a/template/xcx/images/bargain.png b/template/xcx/images/bargain.png
new file mode 100644
index 000000000..309fb9465
Binary files /dev/null and b/template/xcx/images/bargain.png differ
diff --git a/template/xcx/images/bargainBg.jpg b/template/xcx/images/bargainBg.jpg
new file mode 100644
index 000000000..ccf9b61c5
Binary files /dev/null and b/template/xcx/images/bargainBg.jpg differ
diff --git a/template/xcx/images/close.gif b/template/xcx/images/close.gif
new file mode 100644
index 000000000..4de18b411
Binary files /dev/null and b/template/xcx/images/close.gif differ
diff --git a/template/xcx/images/code_1.png b/template/xcx/images/code_1.png
new file mode 100644
index 000000000..9d98bd9e5
Binary files /dev/null and b/template/xcx/images/code_1.png differ
diff --git a/template/xcx/images/code_2.png b/template/xcx/images/code_2.png
new file mode 100644
index 000000000..9bb836997
Binary files /dev/null and b/template/xcx/images/code_2.png differ
diff --git a/template/xcx/images/collection.png b/template/xcx/images/collection.png
new file mode 100644
index 000000000..b22fde2c2
Binary files /dev/null and b/template/xcx/images/collection.png differ
diff --git a/template/xcx/images/commission.jpg b/template/xcx/images/commission.jpg
new file mode 100644
index 000000000..e8df341b8
Binary files /dev/null and b/template/xcx/images/commission.jpg differ
diff --git a/template/xcx/images/coupon-window.png b/template/xcx/images/coupon-window.png
new file mode 100644
index 000000000..e50ae1014
Binary files /dev/null and b/template/xcx/images/coupon-window.png differ
diff --git a/template/xcx/images/coupon-window2.png b/template/xcx/images/coupon-window2.png
new file mode 100644
index 000000000..ac3cb8b5c
Binary files /dev/null and b/template/xcx/images/coupon-window2.png differ
diff --git a/template/xcx/images/coupon.png b/template/xcx/images/coupon.png
new file mode 100644
index 000000000..27e634012
Binary files /dev/null and b/template/xcx/images/coupon.png differ
diff --git a/template/xcx/images/coupon2.png b/template/xcx/images/coupon2.png
new file mode 100644
index 000000000..de9d6aad4
Binary files /dev/null and b/template/xcx/images/coupon2.png differ
diff --git a/template/xcx/images/customer.png b/template/xcx/images/customer.png
new file mode 100644
index 000000000..dc97ca81f
Binary files /dev/null and b/template/xcx/images/customer.png differ
diff --git a/template/xcx/images/dfh.png b/template/xcx/images/dfh.png
new file mode 100644
index 000000000..0a1fc0464
Binary files /dev/null and b/template/xcx/images/dfh.png differ
diff --git a/template/xcx/images/dfk.png b/template/xcx/images/dfk.png
new file mode 100644
index 000000000..4e6f62f7c
Binary files /dev/null and b/template/xcx/images/dfk.png differ
diff --git a/template/xcx/images/down.png b/template/xcx/images/down.png
new file mode 100644
index 000000000..344123968
Binary files /dev/null and b/template/xcx/images/down.png differ
diff --git a/template/xcx/images/dpj.png b/template/xcx/images/dpj.png
new file mode 100644
index 000000000..4df4d545e
Binary files /dev/null and b/template/xcx/images/dpj.png differ
diff --git a/template/xcx/images/dsh.png b/template/xcx/images/dsh.png
new file mode 100644
index 000000000..71ca61302
Binary files /dev/null and b/template/xcx/images/dsh.png differ
diff --git a/template/xcx/images/examine.png b/template/xcx/images/examine.png
new file mode 100644
index 000000000..d43e7f9c6
Binary files /dev/null and b/template/xcx/images/examine.png differ
diff --git a/template/xcx/images/extension.png b/template/xcx/images/extension.png
new file mode 100644
index 000000000..d34cb521f
Binary files /dev/null and b/template/xcx/images/extension.png differ
diff --git a/template/xcx/images/gift.png b/template/xcx/images/gift.png
new file mode 100644
index 000000000..2f1e984cf
Binary files /dev/null and b/template/xcx/images/gift.png differ
diff --git a/template/xcx/images/h5.png b/template/xcx/images/h5.png
new file mode 100644
index 000000000..bc115ca34
Binary files /dev/null and b/template/xcx/images/h5.png differ
diff --git a/template/xcx/images/horn.png b/template/xcx/images/horn.png
new file mode 100644
index 000000000..d0ca022f8
Binary files /dev/null and b/template/xcx/images/horn.png differ
diff --git a/template/xcx/images/left.png b/template/xcx/images/left.png
new file mode 100644
index 000000000..6c79bbeca
Binary files /dev/null and b/template/xcx/images/left.png differ
diff --git a/template/xcx/images/light.png b/template/xcx/images/light.png
new file mode 100644
index 000000000..efa92080b
Binary files /dev/null and b/template/xcx/images/light.png differ
diff --git a/template/xcx/images/line.jpg b/template/xcx/images/line.jpg
new file mode 100644
index 000000000..1640f55ce
Binary files /dev/null and b/template/xcx/images/line.jpg differ
diff --git a/template/xcx/images/ling.png b/template/xcx/images/ling.png
new file mode 100644
index 000000000..17f052879
Binary files /dev/null and b/template/xcx/images/ling.png differ
diff --git a/template/xcx/images/lock.png b/template/xcx/images/lock.png
new file mode 100644
index 000000000..e3fde19ca
Binary files /dev/null and b/template/xcx/images/lock.png differ
diff --git a/template/xcx/images/lock2.png b/template/xcx/images/lock2.png
new file mode 100644
index 000000000..d791ab983
Binary files /dev/null and b/template/xcx/images/lock2.png differ
diff --git a/template/xcx/images/logo.png b/template/xcx/images/logo.png
new file mode 100644
index 000000000..883548b8e
Binary files /dev/null and b/template/xcx/images/logo.png differ
diff --git a/template/xcx/images/medal01.png b/template/xcx/images/medal01.png
new file mode 100644
index 000000000..cca6a3107
Binary files /dev/null and b/template/xcx/images/medal01.png differ
diff --git a/template/xcx/images/medal02.png b/template/xcx/images/medal02.png
new file mode 100644
index 000000000..7f14fcea8
Binary files /dev/null and b/template/xcx/images/medal02.png differ
diff --git a/template/xcx/images/medal03.png b/template/xcx/images/medal03.png
new file mode 100644
index 000000000..3e92ecb94
Binary files /dev/null and b/template/xcx/images/medal03.png differ
diff --git a/template/xcx/images/member.png b/template/xcx/images/member.png
new file mode 100644
index 000000000..b637ae4bf
Binary files /dev/null and b/template/xcx/images/member.png differ
diff --git a/template/xcx/images/memberCenter.png b/template/xcx/images/memberCenter.png
new file mode 100644
index 000000000..978edd273
Binary files /dev/null and b/template/xcx/images/memberCenter.png differ
diff --git a/template/xcx/images/money.png b/template/xcx/images/money.png
new file mode 100644
index 000000000..9d8aa075c
Binary files /dev/null and b/template/xcx/images/money.png differ
diff --git a/template/xcx/images/news.png b/template/xcx/images/news.png
new file mode 100644
index 000000000..dd3f87316
Binary files /dev/null and b/template/xcx/images/news.png differ
diff --git a/template/xcx/images/noAddress.png b/template/xcx/images/noAddress.png
new file mode 100644
index 000000000..bb6e36333
Binary files /dev/null and b/template/xcx/images/noAddress.png differ
diff --git a/template/xcx/images/noCart.png b/template/xcx/images/noCart.png
new file mode 100644
index 000000000..23212587c
Binary files /dev/null and b/template/xcx/images/noCart.png differ
diff --git a/template/xcx/images/noCollection.png b/template/xcx/images/noCollection.png
new file mode 100644
index 000000000..f967720bb
Binary files /dev/null and b/template/xcx/images/noCollection.png differ
diff --git a/template/xcx/images/noCoupon.png b/template/xcx/images/noCoupon.png
new file mode 100644
index 000000000..e2da350df
Binary files /dev/null and b/template/xcx/images/noCoupon.png differ
diff --git a/template/xcx/images/noEvaluate.png b/template/xcx/images/noEvaluate.png
new file mode 100644
index 000000000..de6f5381a
Binary files /dev/null and b/template/xcx/images/noEvaluate.png differ
diff --git a/template/xcx/images/noNews.png b/template/xcx/images/noNews.png
new file mode 100644
index 000000000..755d20680
Binary files /dev/null and b/template/xcx/images/noNews.png differ
diff --git a/template/xcx/images/noOrder.png b/template/xcx/images/noOrder.png
new file mode 100644
index 000000000..425aaca70
Binary files /dev/null and b/template/xcx/images/noOrder.png differ
diff --git a/template/xcx/images/noSearch.png b/template/xcx/images/noSearch.png
new file mode 100644
index 000000000..e4fa6601c
Binary files /dev/null and b/template/xcx/images/noSearch.png differ
diff --git a/template/xcx/images/noShopper.png b/template/xcx/images/noShopper.png
new file mode 100644
index 000000000..fb39ca2e6
Binary files /dev/null and b/template/xcx/images/noShopper.png differ
diff --git a/template/xcx/images/one.png b/template/xcx/images/one.png
new file mode 100644
index 000000000..f598487fb
Binary files /dev/null and b/template/xcx/images/one.png differ
diff --git a/template/xcx/images/open.gif b/template/xcx/images/open.gif
new file mode 100644
index 000000000..4943b5263
Binary files /dev/null and b/template/xcx/images/open.gif differ
diff --git a/template/xcx/images/orderTime.png b/template/xcx/images/orderTime.png
new file mode 100644
index 000000000..681c7352c
Binary files /dev/null and b/template/xcx/images/orderTime.png differ
diff --git a/template/xcx/images/phone_1.png b/template/xcx/images/phone_1.png
new file mode 100644
index 000000000..9c63ead60
Binary files /dev/null and b/template/xcx/images/phone_1.png differ
diff --git a/template/xcx/images/poster-close.png b/template/xcx/images/poster-close.png
new file mode 100644
index 000000000..189b6bcb1
Binary files /dev/null and b/template/xcx/images/poster-close.png differ
diff --git a/template/xcx/images/posterbackgd.png b/template/xcx/images/posterbackgd.png
new file mode 100644
index 000000000..c49cb91c4
Binary files /dev/null and b/template/xcx/images/posterbackgd.png differ
diff --git a/template/xcx/images/priceTag.png b/template/xcx/images/priceTag.png
new file mode 100644
index 000000000..1472091de
Binary files /dev/null and b/template/xcx/images/priceTag.png differ
diff --git a/template/xcx/images/promoter.png b/template/xcx/images/promoter.png
new file mode 100644
index 000000000..53c135175
Binary files /dev/null and b/template/xcx/images/promoter.png differ
diff --git a/template/xcx/images/promotionBg.png b/template/xcx/images/promotionBg.png
new file mode 100644
index 000000000..9943d095c
Binary files /dev/null and b/template/xcx/images/promotionBg.png differ
diff --git a/template/xcx/images/qh.png b/template/xcx/images/qh.png
new file mode 100644
index 000000000..e435b7337
Binary files /dev/null and b/template/xcx/images/qh.png differ
diff --git a/template/xcx/images/record1.png b/template/xcx/images/record1.png
new file mode 100644
index 000000000..4a24c3322
Binary files /dev/null and b/template/xcx/images/record1.png differ
diff --git a/template/xcx/images/record2.png b/template/xcx/images/record2.png
new file mode 100644
index 000000000..ddaaaa687
Binary files /dev/null and b/template/xcx/images/record2.png differ
diff --git a/template/xcx/images/record3.png b/template/xcx/images/record3.png
new file mode 100644
index 000000000..fdceadba0
Binary files /dev/null and b/template/xcx/images/record3.png differ
diff --git a/template/xcx/images/record4.png b/template/xcx/images/record4.png
new file mode 100644
index 000000000..84c9d8d02
Binary files /dev/null and b/template/xcx/images/record4.png differ
diff --git a/template/xcx/images/red-packets.png b/template/xcx/images/red-packets.png
new file mode 100644
index 000000000..436ab7669
Binary files /dev/null and b/template/xcx/images/red-packets.png differ
diff --git a/template/xcx/images/redBg.png b/template/xcx/images/redBg.png
new file mode 100644
index 000000000..2b777fa48
Binary files /dev/null and b/template/xcx/images/redBg.png differ
diff --git a/template/xcx/images/register.png b/template/xcx/images/register.png
new file mode 100644
index 000000000..9eb6cf7ca
Binary files /dev/null and b/template/xcx/images/register.png differ
diff --git a/template/xcx/images/routine.png b/template/xcx/images/routine.png
new file mode 100644
index 000000000..bd4deb55a
Binary files /dev/null and b/template/xcx/images/routine.png differ
diff --git a/template/xcx/images/rushBuy.jpg b/template/xcx/images/rushBuy.jpg
new file mode 100644
index 000000000..805f856f6
Binary files /dev/null and b/template/xcx/images/rushBuy.jpg differ
diff --git a/template/xcx/images/scan.gif b/template/xcx/images/scan.gif
new file mode 100644
index 000000000..95ed7fa31
Binary files /dev/null and b/template/xcx/images/scan.gif differ
diff --git a/template/xcx/images/score.png b/template/xcx/images/score.png
new file mode 100644
index 000000000..f0be9fe31
Binary files /dev/null and b/template/xcx/images/score.png differ
diff --git a/template/xcx/images/sh.png b/template/xcx/images/sh.png
new file mode 100644
index 000000000..3d92d7765
Binary files /dev/null and b/template/xcx/images/sh.png differ
diff --git a/template/xcx/images/sort1.png b/template/xcx/images/sort1.png
new file mode 100644
index 000000000..2a88241a1
Binary files /dev/null and b/template/xcx/images/sort1.png differ
diff --git a/template/xcx/images/sort2.png b/template/xcx/images/sort2.png
new file mode 100644
index 000000000..74faf73b1
Binary files /dev/null and b/template/xcx/images/sort2.png differ
diff --git a/template/xcx/images/sort3.png b/template/xcx/images/sort3.png
new file mode 100644
index 000000000..c3ce7d42b
Binary files /dev/null and b/template/xcx/images/sort3.png differ
diff --git a/template/xcx/images/spot.png b/template/xcx/images/spot.png
new file mode 100644
index 000000000..dc26b0c5f
Binary files /dev/null and b/template/xcx/images/spot.png differ
diff --git a/template/xcx/images/stars1.png b/template/xcx/images/stars1.png
new file mode 100644
index 000000000..b2f620c4b
Binary files /dev/null and b/template/xcx/images/stars1.png differ
diff --git a/template/xcx/images/stars2.png b/template/xcx/images/stars2.png
new file mode 100644
index 000000000..c26dcb3d2
Binary files /dev/null and b/template/xcx/images/stars2.png differ
diff --git a/template/xcx/images/stars3.png b/template/xcx/images/stars3.png
new file mode 100644
index 000000000..9e72c5f80
Binary files /dev/null and b/template/xcx/images/stars3.png differ
diff --git a/template/xcx/images/stop.png b/template/xcx/images/stop.png
new file mode 100644
index 000000000..6cd5b0246
Binary files /dev/null and b/template/xcx/images/stop.png differ
diff --git a/template/xcx/images/support.png b/template/xcx/images/support.png
new file mode 100644
index 000000000..b562a1520
Binary files /dev/null and b/template/xcx/images/support.png differ
diff --git a/template/xcx/images/three.png b/template/xcx/images/three.png
new file mode 100644
index 000000000..8eee090cd
Binary files /dev/null and b/template/xcx/images/three.png differ
diff --git a/template/xcx/images/time.png b/template/xcx/images/time.png
new file mode 100644
index 000000000..d52fda333
Binary files /dev/null and b/template/xcx/images/time.png differ
diff --git a/template/xcx/images/transparent.png b/template/xcx/images/transparent.png
new file mode 100644
index 000000000..4760ebb73
Binary files /dev/null and b/template/xcx/images/transparent.png differ
diff --git a/template/xcx/images/two.png b/template/xcx/images/two.png
new file mode 100644
index 000000000..14bc79607
Binary files /dev/null and b/template/xcx/images/two.png differ
diff --git a/template/xcx/images/up.png b/template/xcx/images/up.png
new file mode 100644
index 000000000..567db181a
Binary files /dev/null and b/template/xcx/images/up.png differ
diff --git a/template/xcx/images/vacancy.png b/template/xcx/images/vacancy.png
new file mode 100644
index 000000000..0cf3ffe5f
Binary files /dev/null and b/template/xcx/images/vacancy.png differ
diff --git a/template/xcx/images/value.jpg b/template/xcx/images/value.jpg
new file mode 100644
index 000000000..b47d08d31
Binary files /dev/null and b/template/xcx/images/value.jpg differ
diff --git a/template/xcx/images/vip.png b/template/xcx/images/vip.png
new file mode 100644
index 000000000..904fa5081
Binary files /dev/null and b/template/xcx/images/vip.png differ
diff --git a/template/xcx/images/writeOff.jpg b/template/xcx/images/writeOff.jpg
new file mode 100644
index 000000000..f642a1207
Binary files /dev/null and b/template/xcx/images/writeOff.jpg differ
diff --git a/template/xcx/images/数据.jpg b/template/xcx/images/数据.jpg
new file mode 100644
index 000000000..b4dad3faa
Binary files /dev/null and b/template/xcx/images/数据.jpg differ
diff --git a/template/xcx/package-lock.json b/template/xcx/package-lock.json
new file mode 100644
index 000000000..4e72ee479
--- /dev/null
+++ b/template/xcx/package-lock.json
@@ -0,0 +1,13 @@
+{
+ "name": "cremb_xcx_v3.0",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "vant-weapp": {
+ "version": "0.5.19",
+ "resolved": "https://registry.npmjs.org/vant-weapp/-/vant-weapp-0.5.19.tgz",
+ "integrity": "sha512-/ixRsmyPgghw7qFghC/uBih62SK/GJRWxhCvvbnRt/M9w7gCAGS73KPReaQ2vFSqmNqn50gqWb/IpSDP9pYxMQ=="
+ }
+ }
+}
diff --git a/template/xcx/pages/activity/goods_seckill/index.js b/template/xcx/pages/activity/goods_seckill/index.js
new file mode 100644
index 000000000..2c9d7e8ca
--- /dev/null
+++ b/template/xcx/pages/activity/goods_seckill/index.js
@@ -0,0 +1,145 @@
+import wxh from '../../../utils/wxh.js';
+import { getSeckillIndexTime, getSeckillList } from '../../../api/activity.js';
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ topImage:'',
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '限时秒杀',
+ 'color': true,
+ 'class': '0'
+ },
+ seckillList:[],
+ timeList:[],
+ active:5,
+ scrollLeft:0,
+ interval:0,
+ status:1,
+ countDownHour: "00",
+ countDownMinute: "00",
+ countDownSecond: "00",
+ page : 1,
+ limit : 20,
+ loading:false,
+ loadend:false
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (e) {
+ this.getSeckillConfig();
+ },
+ goDetails:function(e){
+ wx.navigateTo({
+ url: '/pages/activity/goods_seckill_details/index?id=' + e.currentTarget.dataset.id + '&time=' + this.data.timeList[this.data.active].stop + '&status=' + this.data.status
+ })
+ },
+ settimeList:function(e){
+ var that = this;
+ that.setData({ active: e.currentTarget.dataset.index });
+ if (that.data.interval) {
+ clearInterval(that.data.interval);
+ that.setData({ interval: null });
+ }
+ that.setData({
+ interval: 0,
+ countDownHour: "00",
+ countDownMinute: "00",
+ countDownSecond: "00",
+ status: that.data.timeList[that.data.active].status,
+ loadend:false,
+ page:1,
+ seckillList:[],
+ });
+ // wxh.time(e.currentTarget.dataset.stop, that);
+ that.getSeckillList();
+ },
+ getSeckillConfig: function () {
+ let that = this;
+ getSeckillIndexTime().then(res=>{
+ that.setData({ topImage: res.data.lovely, timeList: res.data.seckillTime, active: res.data.seckillTimeIndex });
+ if (that.data.timeList.length) {
+ // wxh.time(that.data.timeList[that.data.active].stop, that);
+ that.setData({ scrollLeft: (that.data.active - 1.37) * 100 });
+ // setTimeout(function () { that.setData({ loading: true }) }, 2000);
+ that.setData({ seckillList: [], page: 1 });
+ that.setData({ status: that.data.timeList[that.data.active].status });
+ that.getSeckillList();
+ }
+ });
+ },
+ getSeckillList: function () {
+ var that = this;
+ var data = { page: that.data.page, limit: that.data.limit};
+ if(that.data.loading) return;
+ if(that.data.loadend) return;
+ that.setData({loading:true,loadTitle:'正在搜索'});
+ getSeckillList(that.data.timeList[that.data.active].id, data).then(res=>{
+ wx.hideLoading();
+ var seckillList = res.data;
+ var loadend = seckillList.length < that.data.limit;
+ that.data.seckillList = app.SplitArray(seckillList, that.data.seckillList);
+ that.setData({
+ seckillList: that.data.seckillList,
+ loading: false,
+ loadend: loadend,
+ page: that.data.page + 1,
+ loadTitle: loadend ? '已全部加载' : '加载更多',
+ });
+ }).catch(err=>{
+ wx.hideLoading();
+ that.setData({ loading: false, loadTitle: "加载更多" });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ if(this.data.interval){
+ clearInterval(this.data.interval);
+ this.setData({ interval: null });
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getSeckillList();
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/activity/goods_seckill/index.json b/template/xcx/pages/activity/goods_seckill/index.json
new file mode 100644
index 000000000..322eb75fc
--- /dev/null
+++ b/template/xcx/pages/activity/goods_seckill/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "home": "/components/home/index"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/activity/goods_seckill/index.wxml b/template/xcx/pages/activity/goods_seckill/index.wxml
new file mode 100644
index 000000000..85e45a1b5
--- /dev/null
+++ b/template/xcx/pages/activity/goods_seckill/index.wxml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.time}}
+ {{item.state}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+ ¥
+ {{item.price}}
+ ¥{{item.ot_price}}
+
+ 限量 {{item.quota}}件
+
+
+ 已抢{{item.percent}}%
+
+
+
+
+ 马上抢
+ 未开始
+ 已结束
+
+
+
+
+ {{loadTitle}}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/activity/goods_seckill/index.wxss b/template/xcx/pages/activity/goods_seckill/index.wxss
new file mode 100644
index 000000000..b367d7aec
--- /dev/null
+++ b/template/xcx/pages/activity/goods_seckill/index.wxss
@@ -0,0 +1,31 @@
+page{background-color:#F5F5F5!important;}
+.flash-sale .header{width:710rpx;height:300rpx;margin: -215rpx auto 0 auto;border-radius: 20rpx;}
+.flash-sale .header image{width:100%;height:100%;border-radius:20rpx;}
+.flash-sale .seckillList{padding:0 20rpx;}
+.flash-sale .seckillList .priceTag{width:75rpx;height:70rpx;}
+.flash-sale .seckillList .priceTag image{width:100%;height:100%;}
+.flash-sale .timeLsit{width:610rpx;white-space:nowrap;margin: 10rpx 0;}
+.flash-sale .timeLsit .item{display:inline-block;font-size:20rpx;color:#666;text-align:center;padding:11rpx 0;box-sizing:border-box;height:96rpx;margin-right: 35rpx;
+}
+.flash-sale .timeLsit .item .time{font-size:36rpx;font-weight:600;color:#333;}
+.flash-sale .timeLsit .item.on .time{color:#E93323;}
+.flash-sale .timeLsit .item.on .state{width:90rpx;height:30rpx;border-radius:15rpx;background:linear-gradient(90deg,rgba(252,25,75,1) 0%,rgba(252,60,32,1) 100%);color:#fff;}
+.flash-sale .countDown{height:92rpx;border-bottom:1rpx solid #f0f0f0;margin-top:-14rpx;font-size:28rpx;color:#282828;}
+.flash-sale .countDown .num{font-size:28rpx;font-weight:bold;background-color:#ffcfcb;padding:4rpx 7rpx;border-radius:3rpx;}
+.flash-sale .countDown .text{font-size:28rpx;color:#282828;margin-right:13rpx;}
+.flash-sale .list .item{height:230rpx;position:relative;width: 710rpx;margin: 0 auto 20rpx auto;background-color: #fff;border-radius: 20rpx;padding: 0 25rpx;}
+.flash-sale .list .item .pictrue{width:180rpx;height:180rpx;border-radius:10rpx;}
+.flash-sale .list .item .pictrue image{width:100%;height:100%;border-radius:10rpx;}
+.flash-sale .list .item .text{width:460rpx;font-size:30rpx;color:#333;height:166rpx;}
+.flash-sale .list .item .text .name{width:100%;}
+.flash-sale .list .item .text .money{font-size:30rpx;color:#E93323;}
+.flash-sale .list .item .text .money .num{font-size:40rpx;font-weight:500;font-family: 'Guildford Pro';}
+.flash-sale .list .item .text .money .y_money{font-size:24rpx;color:#999;text-decoration-line:line-through;margin-left:15rpx;}
+.flash-sale .list .item .text .limit{font-size:22rpx;color:#999;margin-bottom: 5rpx;}
+.flash-sale .list .item .text .limit .limitPrice{margin-left:10rpx;}
+.flash-sale .list .item .text .progress {overflow: hidden;background-color:#FFEFEF;width:260rpx;border-radius:18rpx;height:18rpx;position:relative;}
+.flash-sale .list .item .text .progress .bg-reds{width: 0;height: 100%;transition: width 0.6s ease;background:linear-gradient(90deg,rgba(233,51,35,1) 0%,rgba(255,137,51,1) 100%);}
+.flash-sale .list .item .text .progress .piece{position:absolute;left:8%;transform:translate(0%,-50%);top:49%;font-size:16rpx;color:#FFB9B9;}
+.flash-sale .list .item .grab{font-size:28rpx;color:#fff;width:150rpx;height:54rpx;border-radius:27rpx;text-align:center;line-height:54rpx;position:absolute;right:30rpx;bottom:30rpx;}
+.flash-sale .saleBox {width: 100%;height: 230rpx;background: rgba(233, 51, 35, 1);border-radius: 0 0 50rpx 50rpx;}
+
diff --git a/template/xcx/pages/activity/goods_seckill_details/index.js b/template/xcx/pages/activity/goods_seckill_details/index.js
new file mode 100644
index 000000000..b288c928a
--- /dev/null
+++ b/template/xcx/pages/activity/goods_seckill_details/index.js
@@ -0,0 +1,467 @@
+import wxh from '../../../utils/wxh.js';
+import wxParse from '../../../wxParse/wxParse.js';
+import { getSeckillDetail } from '../../../api/activity.js';
+import { postCartAdd, collectAdd, collectDel } from '../../../api/store.js';
+
+const app = getApp();
+
+Page({
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ id: 0,
+ time:0,
+ countDownHour: "00",
+ countDownMinute: "00",
+ countDownSecond: "00",
+ storeInfo:[],
+ imgUrls: [],
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '抢购详情页',
+ 'color': false
+ },
+ attribute: {
+ 'cartAttr': false
+ },
+ productSelect: [],
+ productAttr: [],
+ productValue: [],
+ isOpen: false,
+ attr: '请选择',
+ attrValue: '',
+ status: 1,
+ isAuto: false,
+ iShidden: false,
+ limitNum: 1,//限制本属性产品的个数;
+ personNum:0, //限制用户购买的个数;
+ iSplus:false,
+ replyCount: 0,//总评论数量
+ reply: [],//评论列表
+ replyChance:0,
+ navH: "",
+ navList: ['商品', '评价', '详情'],
+ opacity: 0,
+ scrollY: 0,
+ topArr: [],
+ toView: '',
+ height: 0,
+ heightArr: [],
+ lock: false,
+ scrollTop:0
+ },
+ returns: function () {
+ wx.navigateBack();
+ },
+ tap: function (e) {
+ var id = e.currentTarget.dataset.id;
+ var index = e.currentTarget.dataset.index;
+ var that = this;
+ // if (!this.data.good_list.length && id == "past2") {
+ // id = "past3"
+ // }
+ this.setData({
+ toView: id,
+ navActive: index,
+ lock: true,
+ scrollTop:index>0?that.data.topArr[index]-(app.globalData.navHeight/2):that.data.topArr[index]
+ });
+ },
+ scroll: function (e) {
+ var that = this, scrollY = e.detail.scrollTop;
+ var opacity = scrollY / 450;
+ opacity = opacity > 1 ? 1 : opacity;
+ that.setData({
+ opacity: opacity,
+ scrollY: scrollY
+ })
+ if (that.data.lock) {
+ that.setData({
+ lock: false
+ })
+ return;
+ }
+ for (var i = 0; i < that.data.topArr.length; i++) {
+ if (scrollY < that.data.topArr[i] - (app.globalData.navHeight/2) + that.data.heightArr[i]) {
+ that.setData({
+ navActive: i
+ });
+ break
+ }
+ }
+ },
+ onLoadFun:function(){
+ this.getSeckillDetail();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ var that = this;
+ this.setData({
+ navH: app.globalData.navHeight
+ });
+ //设置商品列表高度
+ wx.getSystemInfo({
+ success: function (res) {
+ that.setData({
+ height: res.windowHeight
+ //res.windowHeight:获取整个窗口高度为px,*2为rpx;98为头部占据的高度;
+ })
+ },
+ });
+ if (options.hasOwnProperty('id') && options.hasOwnProperty('time') && options.hasOwnProperty('status')) {
+ this.setData({ id: options.id, time: options.time, status: options.status});
+ app.globalData.openPages = '/pages/activity/goods_seckill_details/index?id=' + this.data.id + '&time=' + this.data.time + '&status=' + options.status;
+ }else
+ return app.Tips({ title:'参数错误'},{tab:3,url:1})
+ },
+ infoScroll: function () {
+ var that = this, topArr = [], heightArr = [];
+ for (var i = 0; i < that.data.navList.length; i++) { //productList
+ //获取元素所在位置
+ var query = wx.createSelectorQuery().in(this);
+ var idView = "#past" + i;
+ // if (!that.data.good_list.length && i == 2) {
+ // var idView = "#past" + 3;
+ // }
+ query.select(idView).boundingClientRect();
+ query.exec(function (res) {
+ var top = res[0].top;
+ var height = res[0].height;
+ topArr.push(top);
+ heightArr.push(height);
+ that.setData({
+ topArr: topArr,
+ heightArr: heightArr
+ });
+ });
+ };
+ },
+ onMyEvent: function (e) {
+ this.setData({ 'attribute.cartAttr': e.detail.window, isOpen: false })
+ },
+ /**
+ * 收藏商品
+ */
+ setCollect: function () {
+ if (app.globalData.isLog === false) {
+ this.setData({
+ isAuto: true,
+ iShidden: false,
+ });
+ } else {
+ var that = this;
+ if (this.data.storeInfo.userCollect) {
+ collectDel(this.data.storeInfo.product_id).then(res => {
+ that.setData({
+ ['storeInfo.userCollect']: !that.data.storeInfo.userCollect
+ })
+ })
+ } else {
+ collectAdd(this.data.storeInfo.product_id).then(res => {
+ that.setData({
+ ['storeInfo.userCollect']: !that.data.storeInfo.userCollect
+ })
+ })
+ }
+ }
+ },
+ /**
+ * 购物车手动填写
+ *
+ */
+ iptCartNum: function (e) {
+ this.data.productSelect.cart_num = e.detail;
+ this.setData({
+ productSelect: this.data.productSelect,
+ cart_num: e.detail
+ })
+ },
+ /**
+ * 购物车数量加和数量减
+ *
+ */
+ ChangeCartNum: function (e) {
+ //是否 加|减
+ var changeValue = e.detail;
+ //获取当前变动属性
+ var productSelect = this.data.productValue[this.data.attrValue];
+ //如果没有属性,赋值给商品默认库存
+ if (productSelect === undefined && !this.data.productAttr.length) productSelect = this.data.productSelect;
+ //不存在不加数量
+ if (productSelect === undefined) return;
+
+ if (this.data.cart_num) {
+ productSelect.cart_num = this.data.cart_num;
+ }
+ //提取库存
+ var stock = productSelect.stock || 0;
+ var productStock = productSelect.product_stock || 0;
+ var quota = productSelect.quota || 0;
+ var quotaShow = productSelect.quota_show || 0;
+ var num = this.data.storeInfo.num || 0;
+ //设置默认数据
+ if (productSelect.cart_num == undefined) productSelect.cart_num = 1;
+ //数量+
+ if (changeValue) {
+ productSelect.cart_num++;
+ //大于库存时,等于库存
+ let arrMin = [];
+ arrMin.push(num);
+ arrMin.push(quota);
+ arrMin.push(productStock);
+ let minN = Math.min.apply(null,arrMin);
+ if (productSelect.cart_num >= minN) productSelect.cart_num = minN ? minN : 1;
+ // if (quotaShow >= productStock) {
+ // if (productSelect.cart_num >= productStock) productSelect.cart_num = productStock;
+ // } else {
+ // if (productSelect.cart_num >= quotaShow) productSelect.cart_num = quotaShow;
+ // }
+ this.setData({
+ ['productSelect.cart_num']: productSelect.cart_num,
+ cart_num: productSelect.cart_num
+ });
+ } else {
+ //数量减
+ productSelect.cart_num--;
+ //小于1时,等于1
+ if (productSelect.cart_num < 1) productSelect.cart_num = 1;
+ this.setData({
+ ['productSelect.cart_num']: productSelect.cart_num,
+ cart_num: productSelect.cart_num
+ });
+ }
+ },
+ /**
+ * 属性变动赋值
+ *
+ */
+ ChangeAttr: function (e) {
+ var values = e.detail;
+ var productSelect = this.data.productValue[values];
+ var storeInfo = this.data.storeInfo;
+ this.setData({
+ cart_num: 1,
+ ["productSelect.num"]: storeInfo.num
+ });
+ if (productSelect) {
+ this.setData({
+ ["productSelect.image"]: productSelect.image,
+ ["productSelect.price"]: productSelect.price,
+ ["productSelect.quota"]: productSelect.quota,
+ ["productSelect.stock"]: productSelect.stock,
+ ["productSelect.quota_show"]: productSelect.quota_show,
+ ["productSelect.product_stock"]: productSelect.product_stock,
+ ['productSelect.unique']: productSelect.unique,
+ ['productSelect.cart_num']: 1,
+ attrValue: values,
+ attr: '已选择'
+ });
+ } else {
+ this.setData({
+ ["productSelect.image"]: storeInfo.image,
+ ["productSelect.price"]: storeInfo.price,
+ ["productSelect.quota_show"]: 0,
+ ["productSelect.quota"]: 0,
+ ['productSelect.unique']: '',
+ ['productSelect.cart_num']: 1,
+ attrValue: '',
+ attr: '请选择'
+ });
+ }
+ },
+ /**
+ * 默认选中属性
+ *
+ */
+ DefaultSelect: function () {
+ var productAttr = this.data.productAttr, storeInfo = this.data.storeInfo, productValue = this.data.productValue, value = [];
+ for (var key in productValue) {
+ if (productValue[key].quota > 0 && productValue[key].product_stock > 0) {
+ value = this.data.productAttr.length ? key.split(",") : [];
+ break;
+ }
+ }
+ for (var i = 0, len = productAttr.length; i < len; i++) {
+ if (productAttr[i].attr_value[0]) productAttr[i].checked = value[i];
+ }
+ var productSelect = this.data.productValue[value.sort().join(',')];
+ if (productSelect) {
+ this.setData({
+ ["productSelect.store_name"]: storeInfo.store_name,
+ ["productSelect.image"]: productSelect.image,
+ ["productSelect.price"]: productSelect.price,
+ ["productSelect.quota"]: productSelect.quota,
+ ["productSelect.stock"]: productSelect.stock,
+ ["productSelect.quota_show"]: productSelect.quota_show,
+ ["productSelect.product_stock"]: productSelect.product_stock,
+ ['productSelect.unique']: productSelect.unique,
+ ['productSelect.cart_num']: 1,
+ attrValue: value,
+ attr: '已选择'
+ });
+ } else {
+ this.setData({
+ ["productSelect.store_name"]: storeInfo.store_name,
+ ["productSelect.image"]: storeInfo.image,
+ ["productSelect.price"]: storeInfo.price,
+ ["productSelect.quota_show"]: storeInfo.quota_show || 0,
+ ["productSelect.quota"]: storeInfo.quota || 0,
+ ["productSelect.product_stock"]: storeInfo.product_stock || 0,
+ ['productSelect.unique']: '',
+ ['productSelect.cart_num']: 1,
+ attrValue: '',
+ attr: '请选择'
+ });
+ }
+ this.setData({ productAttr: productAttr, ["productSelect.num"]: storeInfo.num, cart_num: 1});
+ },
+ selecAttr: function () {
+ if(this.data.status == 1)
+ this.setData({
+ 'attribute.cartAttr': true
+ });
+ },
+ /*
+ * 单独购买
+ */
+ openAlone: function () {
+ wx.navigateTo({
+ url: `/pages/goods_details/index?id=${this.data.storeInfo.product_id}`
+ })
+
+ },
+ /*
+ * 下订单
+ */
+ goCat: function () {
+ var that = this;
+ var productSelect = this.data.productValue[this.data.attrValue];
+ //打开属性
+ if (this.data.isOpen)
+ this.setData({ 'attribute.cartAttr': true })
+ else
+ this.setData({ 'attribute.cartAttr': !this.data.attribute.cartAttr });
+ //只有关闭属性弹窗时进行加入购物车
+ if (this.data.attribute.cartAttr === true && this.data.isOpen == false) return this.setData({ isOpen: true });
+ //如果有属性,没有选择,提示用户选择
+ if (this.data.productAttr.length && productSelect === undefined && this.data.isOpen == true) return app.Tips({ title: '请选择属性' });
+ postCartAdd({
+ productId: that.data.storeInfo.product_id,
+ secKillId: that.data.id,
+ bargainId: 0,
+ combinationId: 0,
+ cartNum: that.data.cart_num,
+ uniqueId: productSelect !== undefined ? productSelect.unique : '',
+ 'new': 1
+ }).then(res=>{
+ that.setData({ isOpen: false });
+ wx.navigateTo({ url: '/pages/order_confirm/index?cartId=' + res.data.cartId });
+ }).catch(err=>{
+ return app.Tips({title:err});
+ });
+ },
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if(this.data.isClone && app.globalData.isLog) this.getSeckillDetail();
+ },
+ getSeckillDetail: function () {
+ let that = this;
+ getSeckillDetail(that.data.id).then(res=>{
+ let title = res.data.storeInfo.title;
+ that.setData({
+ // ["parameter.title"]: title.length > 10 ? title.substring(0, 10) + '...' : title,
+ storeInfo: res.data.storeInfo,
+ imgUrls: res.data.storeInfo.images,
+ productAttr: res.data.productAttr,
+ productValue: res.data.productValue,
+ personNum: res.data.storeInfo.num,
+ replyCount: res.data.replyCount,
+ reply: res.data.reply ? [res.data.reply] : [],
+ replyChance: res.data.replyChance
+ });
+ that.setProductSelect();
+ that.DefaultSelect();
+ setTimeout(function () {
+ that.infoScroll();
+ }, 500);
+ app.globalData.openPages = '/pages/activity/goods_seckill_details/index?id=' + that.data.id + '&time=' + that.data.time + '&status=' + that.data.status + '&scene=' + that.data.storeInfo.uid;
+ wxParse.wxParse('description', 'html', that.data.storeInfo.description || '', that, 0);
+ wxh.time(that.data.time, that);
+ }).catch(err=>{
+ return app.Tips({ title: err }, { tab: 3, url: 1 });
+ });
+ },
+ setProductSelect:function(){
+ var that = this;
+ if (that.data.productSelect.length == 0){
+ that.setData({
+ ['productSelect.image']: that.data.storeInfo.image,
+ ['productSelect.store_name']: that.data.storeInfo.title,
+ ['productSelect.price']: that.data.storeInfo.price,
+ ['productSelect.quota']: that.data.storeInfo.quota,
+ ['productSelect.unique']: '',
+ ['productSelect.cart_num']: 1,
+ cart_num: 1,
+ ["productSelect.num"]: that.data.storeInfo.num,
+ ['productSelect.is_on']: that.data.storeInfo.num <= 1,
+ })
+ }
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({isClone:true});
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+ var that = this;
+ return {
+ title: that.data.storeInfo.title,
+ path: app.globalData.openPages ,
+ imageUrl: that.data.storeInfo.image,
+ success: function () {
+ wx.showToast({
+ title: '分享成功',
+ icon: 'success',
+ duration: 2000
+ })
+ }
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/activity/goods_seckill_details/index.json b/template/xcx/pages/activity/goods_seckill_details/index.json
new file mode 100644
index 000000000..0db3fdee5
--- /dev/null
+++ b/template/xcx/pages/activity/goods_seckill_details/index.json
@@ -0,0 +1,10 @@
+{
+ "usingComponents": {
+ "productConSwiper": "/components/productConSwiper/index",
+ "home": "/components/home/index",
+ "product-window": "/components/product-window/index",
+ "navbar": "/components/navbar/index",
+ "userEvaluation": "/components/userEvaluation/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/activity/goods_seckill_details/index.wxml b/template/xcx/pages/activity/goods_seckill_details/index.wxml
new file mode 100644
index 000000000..726db422b
--- /dev/null
+++ b/template/xcx/pages/activity/goods_seckill_details/index.wxml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ¥{{storeInfo.price}} ¥{{storeInfo.ot_price}}
+
+
+ 距秒杀结束仅剩
+
+ {{countDownHour}} :
+ {{countDownMinute}} :
+ {{countDownSecond}}
+
+
+
+
+
+
+
+
+ {{storeInfo.title}}
+
+
+
+
+ 累计销售:{{storeInfo.total?storeInfo.total:0}}件
+ 限量: {{ storeInfo.quota ? storeInfo.quota : 0 }} 件
+
+
+
+ {{attr}}:{{attrValue}}
+
+
+
+
+
+ 用户评价({{replyCount}})
+
+ {{replyChance}}% 好评率
+
+
+
+
+
+
+ 产品介绍
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/activity/goods_seckill_details/index.wxss b/template/xcx/pages/activity/goods_seckill_details/index.wxss
new file mode 100644
index 000000000..475a3f45e
--- /dev/null
+++ b/template/xcx/pages/activity/goods_seckill_details/index.wxss
@@ -0,0 +1,38 @@
+.navbar .header {height: 96rpx;font-size: 30rpx;color: #050505;background-color: #fff;padding-right: 95rpx;}
+.navbar .header .item {position: relative;margin: 0 25rpx;}
+.navbar .header .item.on:before {position: absolute;width: 60rpx;height: 5rpx;background-repeat: no-repeat;content: "";background-image: linear-gradient(to right, #ff3366 0%, #ff6533 100%);bottom: -10rpx;left:50%;margin-left:-28rpx;}
+.navbar{position:fixed;background-color:#fff;top:0;left:0;z-index:999;width:100%;}
+.navbar .navbarH{position:relative;}
+.navbar .navbarH .navbarCon{position:absolute;bottom:0;height:100rpx;width:100%;}
+.returnF{position:fixed;top:0;left:0;width:100rpx;z-index:1000;}
+.returnF .returnH{position:relative;}
+.returnF .returnH .returnCon{position:absolute;bottom:0;height:100rpx;width:100%;color:#000;font-weight:bold;font-size:40rpx;}
+/* .icon-xiangzuo{color:#000;font-weight:bold;position:fixed;font-size:40rpx;width:100rpx;height:56rpx;line-height:54rpx;z-index:1000;left:33rpx;} */
+.product-con .nav{background-image:url('data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QN/aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0MiA3OS4xNjA5MjQsIDIwMTcvMDcvMTMtMDE6MDY6MzkgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDNlZTU0ZDMtNjEwZS03ZjQ4LWEwODgtNTZlMTZiNzI3NTQwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI1NEI2MDUyM0ZDMjExRTk5OTg1REI1OUM1NjNEMUZCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI1NEI2MDUxM0ZDMjExRTk5OTg1REI1OUM1NjNEMUZCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUyMDIzNWNmLTIwNGYtOTQ0My05YTBiLWNmMmZlMTJmMDk3NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0M2VlNTRkMy02MTBlLTdmNDgtYTA4OC01NmUxNmI3Mjc1NDAiLz4gPC9yZGY6RGVzY3JpcHRpb24+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');background-repeat:no-repeat;background-size:100% 100%;width:100%;height:100rpx;padding:0 30rpx;box-sizing:border-box;}
+.product-con .nav .money{font-size:28rpx;color:#fff;}
+.product-con .nav .money .num{font-size:48rpx;}
+.product-con .nav .money .y-money{font-size:26rpx;margin-left:10rpx;text-decoration:line-through;}
+.product-con .nav .time{font-size:20rpx;color:#fff;text-align:center;}
+.product-con .nav .time .timeCon{margin-top:10rpx;}
+.product-con .nav .time .timeCon .num{padding:0 7rpx;font-size:22rpx;color:#ff3d3d;background-color:#fff;border-radius:2rpx;}
+.product-con .nav .timeState{font-size:28RPX;color:#FFF;}
+.product-con .nav .iconfont{color:#fff;font-size:30rpx;margin-left:20rpx;}
+.product-con .wrapper{padding:32rpx 0;width:100%;}
+.product-con .wrapper .introduce{margin:0;}
+.product-con .wrapper .introduce .infor{width:570rpx;}
+.product-con .wrapper .introduce .iconfont{font-size:37rpx;color:#515151;}
+.product-con .wrapper .label{margin:18rpx 0 0 0;font-size:24rpx;color:#82848f;}
+.product-con .wrapper .label .stock{width:255rpx;margin-right:28rpx;}
+.product-con .footer{padding:0 20rpx 0 30rpx;position:fixed;bottom:0;width:100%;box-sizing:border-box;height:100rpx;background-color:#fff;z-index:99;border-top:1rpx solid #f0f0f0;}
+.product-con .footer .item{font-size:18rpx;color:#666;}
+.product-con .footer .item .iconfont{text-align:center;font-size:40rpx;}
+.product-con .footer .item .iconfont.icon-shoucang1 {color:#f00;}
+.product-con .footer .item .iconfont.icon-gouwuche1{font-size:40rpx;position:relative;}
+.product-con .footer .item .iconfont.icon-gouwuche1 .num{color:#fff;position:absolute;font-size:18rpx;
+padding:2rpx 8rpx 3rpx;border-radius:200rpx;top:-10rpx;right:-10rpx;}
+.product-con .footer .bnt{width:540rpx;height:76rpx;}
+.product-con .footer .bnt .bnts{width:270rpx;text-align:center;line-height:76rpx;color:#fff;font-size:28rpx;}
+.product-con .footer .bnt .joinCart{border-radius:50rpx 0 0 50rpx;background-image: linear-gradient(to right,#fea10f 0%,#fa8013 100%);}
+.product-con .footer .bnt .buy{border-radius:0 50rpx 50rpx 0;background-image: linear-gradient(to right,#fa6514 0%,#e93323 100%);}
+.setCollectBox{font-size: 18rpx;color: #666;}
+@import "/wxParse/wxParse.wxss";
\ No newline at end of file
diff --git a/template/xcx/pages/cash-audit/index.js b/template/xcx/pages/cash-audit/index.js
new file mode 100644
index 000000000..524d7f3d8
--- /dev/null
+++ b/template/xcx/pages/cash-audit/index.js
@@ -0,0 +1,72 @@
+// pages/cash-audit/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '提现审核',
+ 'color':true,
+ 'class':'0'
+ },
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/cash-audit/index.json b/template/xcx/pages/cash-audit/index.json
new file mode 100644
index 000000000..ed5513eb0
--- /dev/null
+++ b/template/xcx/pages/cash-audit/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/cash-audit/index.wxml b/template/xcx/pages/cash-audit/index.wxml
new file mode 100644
index 000000000..a8a065c38
--- /dev/null
+++ b/template/xcx/pages/cash-audit/index.wxml
@@ -0,0 +1,7 @@
+
+
+
+ 提现申请已提交,等待人工审核
+ 2018-08-29 10:55:26
+ 好的
+
diff --git a/template/xcx/pages/cash-audit/index.wxss b/template/xcx/pages/cash-audit/index.wxss
new file mode 100644
index 000000000..a61452791
--- /dev/null
+++ b/template/xcx/pages/cash-audit/index.wxss
@@ -0,0 +1,6 @@
+.cash-audit{width:710rpx;background-color:#fff;border-radius:6rpx;margin:25rpx auto 0 auto;padding:53rpx 0 58rpx 0;}
+.cash-audit .pictrue{width:214rpx;height:179rpx;margin:0 auto;}
+.cash-audit .pictrue image{width:100%;height:100%;}
+.cash-audit .tip{font-size:32rpx;color:#282828;margin-top:40rpx;text-align:center;padding:0 40rpx;}
+.cash-audit .time{font-size:26rpx;color:#999;text-align:center;margin-top:15rpx;}
+.cash-audit .bnt{font-size:32rpx;color:#fff;width:500rpx;height:86rpx;border-radius:43rpx;text-align:center;line-height:86rpx;margin:50rpx auto 0 auto;}
\ No newline at end of file
diff --git a/template/xcx/pages/commission_rank/index.js b/template/xcx/pages/commission_rank/index.js
new file mode 100644
index 000000000..349396305
--- /dev/null
+++ b/template/xcx/pages/commission_rank/index.js
@@ -0,0 +1,123 @@
+// pages/commission_rank/index.js
+import { getBrokerageRank } from '../../api/user.js';
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '佣金排行',
+ 'color': true,
+ 'class': '0'
+ },
+ navList: ["周排行", "月排行"],
+ active: 0,
+ rankList:[],
+ page:1,
+ limit:10,
+ loadend:false,
+ loading:false,
+ loadTitle:'加载更多',
+ type:'week',
+ position:0,
+ },
+ switchTap:function(e){
+ let index = e.currentTarget.dataset.index
+ this.setData({
+ active: index,
+ type: index ? 'month': 'week',
+ page:1,
+ loadend:false,
+ rankList:[],
+ });
+ this.getBrokerageRankList();
+ },
+ onLoadFun:function(){
+ this.getBrokerageRankList();
+ },
+ getBrokerageRankList:function(){
+ if(this.data.loadend) return;
+ if(this.data.loading) return;
+ this.setData({loading:true,loadTitle:''});
+ getBrokerageRank({
+ page:this.data.page,
+ limit:this.data.limit,
+ type:this.data.type
+ }).then(res=>{
+ let list = res.data.rank;
+ let loadend = list.length < this.data.limit;
+ this.data.rankList.push.apply(this.data.rankList, list);
+ this.setData({
+ loading:false,
+ loadend: loadend,
+ loadTitle: loadend ? '😕我也是有底线的':'加载更多',
+ rankList: this.data.rankList,
+ position: res.data.position
+ });
+ }).catch(err=>{
+ this.setData({loading:false,loadTitle:'加载更多'});
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if (this.data.isClone && app.globalData.isLog){
+ this.setData({ page: 1, loadend: false, rankList:{}});
+ this.getBrokerageRankList();
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({isClone:true});
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getBrokerageRankList();
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/commission_rank/index.json b/template/xcx/pages/commission_rank/index.json
new file mode 100644
index 000000000..db2238595
--- /dev/null
+++ b/template/xcx/pages/commission_rank/index.json
@@ -0,0 +1,7 @@
+{
+ "navigationBarTextStyle": "white",
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/commission_rank/index.wxml b/template/xcx/pages/commission_rank/index.wxml
new file mode 100644
index 000000000..2e0cab7d7
--- /dev/null
+++ b/template/xcx/pages/commission_rank/index.wxml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+ {{index+1}}
+
+
+
+ {{item.nickname}}
+
+ ¥{{item.brokerage_price}}
+
+
+
+
+
+
diff --git a/template/xcx/pages/commission_rank/index.wxss b/template/xcx/pages/commission_rank/index.wxss
new file mode 100644
index 000000000..735267e77
--- /dev/null
+++ b/template/xcx/pages/commission_rank/index.wxss
@@ -0,0 +1,20 @@
+.CommissionRank .header {background: url("data:image/jpeg;base64,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") no-repeat;
+ width: 100%;height: 344rpx;background-size: 100% 100%;position: relative;z-index: -1;}
+.CommissionRank .header .rank {font-size: 33rpx;color: #fff;position: absolute;top: 160rpx;
+ left: 48rpx;}
+.CommissionRank .header .rank .num {font-size: 51rpx;font-weight: bold;margin: 0 10rpx;}
+.CommissionRank .wrapper {width: 710rpx;background-color: #fff;border-radius: 20rpx;
+ margin: -76rpx auto 0 auto;}
+.CommissionRank .wrapper .nav {height: 99rpx;border-bottom: 2.5rpx solid #f3f3f3;font-size: 30rpx;font-weight: bold;color: #999;line-height: 99rpx;}
+.CommissionRank .wrapper .nav .item.font-color {border-bottom: 4rpx solid #e93323;}
+.CommissionRank .wrapper .list {padding: 0 30rpx;}
+.CommissionRank .wrapper .list .item {border-bottom: 1px solid #f3f3f3;height: 101rpx;
+ font-size: 28rpx;}
+.CommissionRank .wrapper .list .item .num {color: #666;width: 70rpx;}
+.CommissionRank .wrapper .list .item .num image {width: 34rpx;height: 40rpx;display: block;}
+.CommissionRank .wrapper .list .item .picTxt {width: 350rpx;}
+.CommissionRank .wrapper .list .item .picTxt .pictrue {width: 68rpx;height: 68rpx;}
+.CommissionRank .wrapper .list .item .picTxt .pictrue image {width: 100%;height: 100%;
+ display: block;border-radius: 50%;}
+.CommissionRank .wrapper .list .item .picTxt .text {width: 262rpx;color: #333;}
+.CommissionRank .wrapper .list .item .people {width: 175rpx;text-align: right;}
\ No newline at end of file
diff --git a/template/xcx/pages/first-new-product/index.js b/template/xcx/pages/first-new-product/index.js
new file mode 100644
index 000000000..e275435e8
--- /dev/null
+++ b/template/xcx/pages/first-new-product/index.js
@@ -0,0 +1,114 @@
+import { getGroomList } from '../../api/store.js';
+import { getCoupons } from '../../api/api.js';
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '首发新品'
+ },
+ imgUrls: [],
+ bastList:[],
+ name:'',
+ icon:'',
+ type:0,
+ status:0,
+ loading:false,
+ loadend:false,
+ page:1,
+ limit:20,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.setData({ type: options.type });
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ var type = this.data.type;
+ if (type == 1){
+ this.setData({ 'parameter.title': '精品推荐', name: '精品推荐', icon: 'icon-jingpintuijian'});
+ } else if (type == 2) {
+ this.setData({ 'parameter.title': '热门榜单', name: '热门榜单', icon: 'icon-remen', status: 1});
+ } else if (type == 3) {
+ this.setData({ 'parameter.title': '首发新品', name: '首发新品', icon: 'icon-xinpin' });
+ } else if (type == 4) {
+ this.setData({ 'parameter.title': '促销单品', name: '促销单品', icon: 'icon-cuxiaoguanli' });
+ }else{
+ this.setData({ 'parameter.title': '首发新品', name: '首发新品', icon: 'icon-xinpin' });
+ }
+ this.getIndexGroomList();
+ },
+ getIndexGroomList: function(){
+ var that=this
+ if(this.data.loadend) return false;
+ if(this.data.loading) return false;
+ that.setData({loading:true,loadTitle:'正在搜索'});
+ getGroomList(that.data.type,{ page: that.data.page, limit: that.data.limit }).then(res=>{
+ var list=res.data.list,loadend=list.length < that.data.limit;
+ var bastList = app.SplitArray(list, that.data.bastList);
+ that.setData({
+ loading: false,
+ bastList: bastList,
+ page:that.data.page+1,
+ loadend: loadend,
+ loadTitle: loadend ? '已全部加载' : '加载更多',
+ imgUrls: res.data.banner
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: "加载更多" });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getIndexGroomList();
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/first-new-product/index.json b/template/xcx/pages/first-new-product/index.json
new file mode 100644
index 000000000..77403f549
--- /dev/null
+++ b/template/xcx/pages/first-new-product/index.json
@@ -0,0 +1,8 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "swipers": "/components/swipers/index",
+ "goodList": "/components/goodList/index",
+ "home": "/components/home/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/first-new-product/index.wxml b/template/xcx/pages/first-new-product/index.wxml
new file mode 100644
index 000000000..c445a1dd1
--- /dev/null
+++ b/template/xcx/pages/first-new-product/index.wxml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ {{name}}
+
+
+
+
+ {{loadTitle}}
+
+
+
diff --git a/template/xcx/pages/first-new-product/index.wxss b/template/xcx/pages/first-new-product/index.wxss
new file mode 100644
index 000000000..a94d7d990
--- /dev/null
+++ b/template/xcx/pages/first-new-product/index.wxss
@@ -0,0 +1,5 @@
+page{background-color:#fff!important;}
+.quality-recommend .title{height:120rpx;font-size:32rpx;color:#282828;background-color:#f5f5f5;}
+.quality-recommend .title .line{width:230rpx;height:2rpx;background-color:#e9e9e9;}
+.quality-recommend .title .name{margin:0 20rpx;}
+.quality-recommend .title .name .iconfont{margin-right:13rpx;font-size:38rpx;vertical-align:-4rpx;color:#343434;}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_cate/goods_cate.js b/template/xcx/pages/goods_cate/goods_cate.js
new file mode 100644
index 000000000..c03e0e886
--- /dev/null
+++ b/template/xcx/pages/goods_cate/goods_cate.js
@@ -0,0 +1,135 @@
+import { getCategoryList} from '../../api/store.js';
+
+const app = getApp();
+Page({
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ navlist: [],
+ productList: [],
+ navActive: 0,
+ parameter: {
+ 'navbar': '1',
+ 'return': '0',
+ 'title':'产品分类'
+ },
+ navH:"",
+ number:""
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (res) {
+ this.getAllCategory();
+ },
+ infoScroll:function(){
+ let that = this;
+ let len = that.data.productList.length;
+ that.setData({
+ navH: app.globalData.navHeight,
+ number: that.data.productList[len - 1].children.length
+ })
+ //设置商品列表高度
+ wx.getSystemInfo({
+ success: function (res) {
+ that.setData({
+ height: (res.windowHeight) * ( 750/res.windowWidth) - 98 - app.globalData.navHeight
+ //res.windowHeight:获取整个窗口高度为px,*2为rpx;98为头部占据的高度;
+ })
+ },
+ });
+ var height = 0;
+ var hightArr = [];
+ for (var i = 0; i < len; i++) { //productList
+ //获取元素所在位置
+ var query = wx.createSelectorQuery().in(this);
+ var idView = "#b" + i;
+ query.select(idView).boundingClientRect();
+ query.exec(function (res) {
+ var top = res[0].top;
+ hightArr.push(top);
+ that.setData({
+ hightArr: hightArr
+ });
+ });
+ };
+ },
+ tap: function (e) {
+ var id = e.currentTarget.dataset.id;
+ var index = e.currentTarget.dataset.index;
+ this.setData({
+ toView: id,
+ navActive: index
+ });
+ },
+ getAllCategory:function(){
+ var that = this;
+ getCategoryList().then(res=>{
+ that.setData({
+ productList: res.data
+ });
+ that.infoScroll();
+ })
+ },
+ scroll: function (e) {
+ var scrollTop = e.detail.scrollTop;
+ var scrollArr = this.data.hightArr;
+ for (var i = 0; i < scrollArr.length; i++) {
+ if (scrollTop >= 0 && scrollTop < scrollArr[1] - scrollArr[0]) {
+ this.setData({
+ navActive: 0,
+ lastActive: 0
+ })
+ } else if (scrollTop >= scrollArr[i] - scrollArr[0] && scrollTop < scrollArr[i + 1] - scrollArr[0]) {
+ this.setData({
+ navActive: i
+ })
+ } else if (scrollTop >= scrollArr[scrollArr.length - 1] - scrollArr[0]) {
+ this.setData({
+ navActive: scrollArr.length - 1
+ })
+ }
+ }
+ },
+
+ searchSubmitValue: function (e) {
+ if (e.detail.value.length > 0)
+ wx.navigateTo({ url: '/pages/goods_list/goods_list?searchValue=' + e.detail.value})
+ else
+ return app.Tips({ title:'请填写要搜索的产品信息'});
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_cate/goods_cate.json b/template/xcx/pages/goods_cate/goods_cate.json
new file mode 100644
index 000000000..c10b19984
--- /dev/null
+++ b/template/xcx/pages/goods_cate/goods_cate.json
@@ -0,0 +1,5 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_cate/goods_cate.wxml b/template/xcx/pages/goods_cate/goods_cate.wxml
new file mode 100644
index 000000000..65722a2f8
--- /dev/null
+++ b/template/xcx/pages/goods_cate/goods_cate.wxml
@@ -0,0 +1,36 @@
+
+
+
+
+
+ {{item.cate_name}}
+
+
+
+
+
+
+
+
+ {{item.cate_name}}
+
+
+
+
+
+
+ {{item.cate_name}}
+
+
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/goods_cate/goods_cate.wxss b/template/xcx/pages/goods_cate/goods_cate.wxss
new file mode 100644
index 000000000..2ab15b775
--- /dev/null
+++ b/template/xcx/pages/goods_cate/goods_cate.wxss
@@ -0,0 +1,19 @@
+page{background-color:#fff!important;}
+.productSort .header{width:100%;height:96rpx;background-color:#fff;position:fixed;left:0;right:0;z-index:9;border-bottom:1rpx solid #f5f5f5;}
+.productSort .header .input{width:90%;height:60rpx;background-color:#f5f5f5;border-radius:50rpx;box-sizing:border-box;padding:0 25rpx;}
+.productSort .header .input .iconfont{font-size:35rpx;color:#555;}
+.productSort .header .input .placeholder{color:#999;}
+.productSort .header .input input{font-size:26rpx;height:100%;width: 90%;}
+.productSort .aside{position:fixed;width:180rpx;left:0;bottom:0;background-color:#f7f7f7;overflow-y:auto;overflow-x:hidden;}
+.productSort .aside .item{height:80rpx;width:100%;font-size:26rpx;color:#424242;}
+.productSort .aside .item.on{background-color:#fff;border-left:4rpx solid #fc4141;width:100%;text-align:center;color:#fc4141;font-weight:bold;}
+.productSort .conter{margin:98rpx 0 0 180rpx;padding:0 14rpx;}
+.productSort .conter .listw{padding-top:20rpx;vertical-align: top;}
+.productSort .conter .listw .title{height:90rpx;}
+.productSort .conter .listw .title .line{width:100rpx;height:2rpx;background-color:#999;}
+.productSort .conter .listw .title .name{font-size:28rpx;color:#333;margin:0 30rpx;font-weight:bold;}
+.productSort .conter .list{flex-wrap:wrap;}
+.productSort .conter .list .item{width:177rpx;margin-top:26rpx;}
+.productSort .conter .list .item .picture{width:120rpx;height:120rpx;border-radius:50%;}
+.productSort .conter .list .item .picture image{width:100%;height:100%;border-radius:50%;}
+.productSort .conter .list .item .name{font-size:24rpx;color:#333;height:56rpx;line-height:56rpx;width:120rpx;text-align:center;}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_comment_con/index.js b/template/xcx/pages/goods_comment_con/index.js
new file mode 100644
index 000000000..9ad14b1c2
--- /dev/null
+++ b/template/xcx/pages/goods_comment_con/index.js
@@ -0,0 +1,144 @@
+import { orderProduct, orderComment} from '../../api/order.js';
+
+
+const app=getApp();
+const util = require('../../utils/util.js');
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '商品评价',
+ 'color': false,
+ },
+ scoreList:[
+ { 'name': '商品质量','stars':0},
+ { 'name': '服务态度','stars':0},
+ ],
+ pics:[],
+ orderId:'',
+ unique:'',
+ productInfo:{},
+ cart_num:0,
+ },
+
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getOrderProduct();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (!options.unique || !options.uni) return app.Tips({title:'缺少参数'},{tab:3,url:1});
+ this.setData({ unique: options.unique, orderId: options.uni});
+ },
+ /**
+ * 获取某个产品详情
+ *
+ */
+ getOrderProduct:function(){
+ var that=this;
+ orderProduct(that.data.unique).then(res=>{
+ that.setData({ productInfo: res.data.productInfo, cart_num: res.data.cart_num });
+ });
+ },
+ stars: function (e) {
+ var index = e.target.dataset.index;
+ var indexw = e.target.dataset.indexw;
+ this.data.scoreList[indexw].stars = index
+ this.setData({
+ scoreList: this.data.scoreList
+ })
+ },
+
+ /**
+ * 删除图片
+ *
+ */
+ DelPic: function (e) {
+ var index = e.target.dataset.index, that = this, pic = this.data.pics[index];
+ that.data.pics.splice(index, 1);
+ that.setData({ pics: that.data.pics });
+ },
+
+ /**
+ * 上传文件
+ *
+ */
+ uploadpic: function () {
+ var that = this;
+ util.uploadImageOne('upload/image', function (res) {
+ that.data.pics.push(res.data.url);
+ that.setData({ pics: that.data.pics });
+ });
+ },
+
+ /**
+ * 立即评价
+ */
+ formSubmit:function(e){
+ var formId = e.detail.formId, value = e.detail.value, that = this,
+ product_score = that.data.scoreList[0].stars, service_score = that.data.scoreList[1].stars;
+ if (!value.comment) return app.Tips({ title:'请填写你对宝贝的心得!'});
+ value.product_score = product_score;
+ value.service_score = service_score;
+ value.pics=that.data.pics;
+ value.unique = that.data.unique;
+ wx.showLoading({ title: "正在发布评论……" });
+ orderComment(value).then(res=>{
+ wx.hideLoading();
+ return app.Tips({ title: '感谢您的评价!', icon: 'success' }, '/pages/order_details/index?order_id=' + that.data.orderId);
+ }).catch(err=>{
+ wx.hideLoading();
+ return app.Tips({ title: err });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_comment_con/index.json b/template/xcx/pages/goods_comment_con/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/goods_comment_con/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_comment_con/index.wxml b/template/xcx/pages/goods_comment_con/index.wxml
new file mode 100644
index 000000000..13b1a10c3
--- /dev/null
+++ b/template/xcx/pages/goods_comment_con/index.wxml
@@ -0,0 +1,43 @@
+
+
+
diff --git a/template/xcx/pages/goods_comment_con/index.wxss b/template/xcx/pages/goods_comment_con/index.wxss
new file mode 100644
index 000000000..873ded8f9
--- /dev/null
+++ b/template/xcx/pages/goods_comment_con/index.wxss
@@ -0,0 +1,22 @@
+.evaluate-con .score{background-color:#fff;border-top:1rpx solid #f5f5f5;font-size:28rpx;color:#282828;padding:48rpx 30rpx 65rpx 30rpx;}
+.evaluate-con .score .item~.item{margin-top:30rpx;}
+.evaluate-con .score .item .starsList{padding:0 35rpx 0 40rpx;}
+.evaluate-con .score .item .starsList .iconfont{font-size:40rpx;color:#aaa;}
+.evaluate-con .score .item .starsList .iconfont~.iconfont{margin-left:20rpx;}
+.evaluate-con .score .item .evaluate{color:#aaa;font-size:24rpx;}
+.evaluate-con .score .textarea{width:690rpx;background-color:#fafafa;border-radius:10rpx;margin-top:48rpx;}
+.evaluate-con .score .textarea textarea{font-size:28rpx;padding:38rpx 30rpx 0 30rpx;width:100%;box-sizing:border-box;height:160rpx;}
+.evaluate-con .score .textarea .placeholder{color:#bbb;}
+.evaluate-con .score .textarea .list{margin-top:25rpx;padding-left:5rpx;}
+.evaluate-con .score .textarea .list .pictrue{width:140rpx;height:140rpx;margin:0 0 35rpx 25rpx;position:relative;font-size:22rpx;color:#bbb;}
+.evaluate-con .score .textarea .list .pictrue:nth-last-child(1){border:1rpx solid #ddd;box-sizing:border-box;}
+.evaluate-con .score .textarea .list .pictrue image{width:100%;height:100%;border-radius:3rpx;}
+.evaluate-con .score .textarea .list .pictrue .icon-guanbi1{font-size:45rpx;position:absolute;top:-20rpx;right:-20rpx;}
+.evaluate-con .score .textarea .list .pictrue .icon-icon25201{color:#bfbfbf;font-size:50rpx;}
+.evaluate-con .score .evaluateBnt{font-size:30rpx;color:#fff;width:690rpx;height:86rpx;border-radius:43rpx;text-align:center;line-height:86rpx;margin-top:45rpx;}
+
+
+
+
+
+
diff --git a/template/xcx/pages/goods_comment_list/index.js b/template/xcx/pages/goods_comment_list/index.js
new file mode 100644
index 000000000..3bb2dd247
--- /dev/null
+++ b/template/xcx/pages/goods_comment_list/index.js
@@ -0,0 +1,94 @@
+import { getReplyList, getReplyConfig} from '../../api/store.js';
+
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '商品评分',
+ 'color': false,
+ },
+ replyData:{},
+ product_id:0,
+ reply:[],
+ type:0,
+ loading:false,
+ loadend:false,
+ loadTitle:'加载更多',
+ page:1,
+ limit:8
+ },
+ /**
+ * 授权回调
+ *
+ */
+ onLoadFun:function(){
+ this.getProductReplyCount();
+ this.getProductReplyList();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if(!options.product_id) return app.Tips({title:'缺少参数'},{tab:3,url:1});
+ this.setData({product_id:options.product_id});
+ },
+ /**
+ * 获取评论统计数据
+ *
+ */
+ getProductReplyCount:function(){
+ var that=this;
+ getReplyConfig(that.data.product_id).then(res=>{
+ that.setData({ replyData: res.data });
+ });
+ },
+ /**
+ * 分页获取评论
+ */
+ getProductReplyList:function(){
+ var that=this;
+ if (that.data.loadend) return;
+ if (that.data.loading) return;
+ that.setData({loading:true,loadTitle:''});
+ getReplyList(that.data.product_id, {
+ page: that.data.page,
+ limit: that.data.limit,
+ type: that.data.type,
+ }).then(res=>{
+ var list = res.data, loadend = list.length < that.data.limit;
+ that.data.reply = app.SplitArray(list, that.data.reply);
+ that.setData({
+ reply: that.data.reply,
+ loading: false,
+ loadend: loadend,
+ loadTitle: loadend ? "😕人家是有底线的~~" : "加载更多",
+ page: that.data.page + 1
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: '加载更多' });
+ });
+ },
+ /*
+ * 点击事件切换
+ * */
+ changeType:function(e){
+ var type = e.target.dataset.type;
+ type=parseInt(type);
+ if(type==this.data.type) return;
+ this.setData({type:type,page:1,loadend:false,reply:[]});
+ this.getProductReplyList();
+ },
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getProductReplyList();
+ },
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_comment_list/index.json b/template/xcx/pages/goods_comment_list/index.json
new file mode 100644
index 000000000..8fddb450b
--- /dev/null
+++ b/template/xcx/pages/goods_comment_list/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "userEvaluation": "/components/userEvaluation/index",
+ "authorize":"/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_comment_list/index.wxml b/template/xcx/pages/goods_comment_list/index.wxml
new file mode 100644
index 000000000..51b1473ac
--- /dev/null
+++ b/template/xcx/pages/goods_comment_list/index.wxml
@@ -0,0 +1,24 @@
+
+
+
+
+ 全部({{replyData.sum_count||0}})
+ 好评({{replyData.good_count||0}})
+ 中评({{replyData.in_count||0}})
+ 差评({{replyData.poor_count||0}})
+
+
+
+ {{loadTitle}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/goods_comment_list/index.wxss b/template/xcx/pages/goods_comment_list/index.wxss
new file mode 100644
index 000000000..896226343
--- /dev/null
+++ b/template/xcx/pages/goods_comment_list/index.wxss
@@ -0,0 +1,5 @@
+.evaluate-list .generalComment{height:94rpx;padding:0 30rpx;margin-top:1rpx;background-color:#fff;font-size:28rpx;color:#808080;}
+.evaluate-list .generalComment .evaluate{margin-right:7rpx;}
+.evaluate-list .nav{font-size:24rpx;color:#282828;padding:0 30rpx 32rpx 30rpx;background-color:#fff;border-bottom:1rpx solid #f5f5f5;}
+.evaluate-list .nav .item{font-size:24rpx;color:#282828;border-radius:6rpx;height:54rpx;padding:0 20rpx;background-color:#f4f4f4;line-height:54rpx;margin-right:17rpx;}
+.evaluate-list .nav .item.bg-color{color:#fff;}
diff --git a/template/xcx/pages/goods_details/index.js b/template/xcx/pages/goods_details/index.js
new file mode 100644
index 000000000..7a5abc147
--- /dev/null
+++ b/template/xcx/pages/goods_details/index.js
@@ -0,0 +1,818 @@
+import { getProductDetail, getProductCode, collectAdd, collectDel, postCartAdd, storeListApi } from '../../api/store.js';
+import { getUserInfo, userShare } from '../../api/user.js';
+import { getCoupons } from '../../api/api.js';
+import { getCartCounts } from '../../api/order.js';
+import WxParse from '../../wxParse/wxParse.js';
+import util from '../../utils/util.js';
+import wxh from '../../utils/wxh.js';
+import { CACHE_LONGITUDE, CACHE_LATITUDE } from '../../config.js';
+const app = getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '商品详情'
+ },
+ attribute: { 'cartAttr': false },//属性是否打开
+ coupon: {
+ 'coupon': false,
+ list: [],
+ },
+ attr: '请选择',//属性页面提示
+ attrValue: '',//已选属性
+ animated: false,//购物车动画
+ id: 0,//商品id
+ replyCount: 0,//总评论数量
+ reply: [],//评论列表
+ storeInfo: {},//商品详情
+ productAttr: [],//组件展示属性
+ productValue: [],//系统属性
+ couponList: [], //优惠券
+ productSelect: {}, //属性选中规格
+ cart_num: 1,//购买数量
+ isAuto: false,//没有授权的不会自动授权
+ iShidden: true,//是否隐藏授权
+ isOpen: false,//是否打开属性组件
+ isLog: app.globalData.isLog,//是否登录
+ actionSheetHidden: true,
+ posterImageStatus: false,
+ storeImage: '',//海报产品图
+ PromotionCode: '',//二维码图片
+ canvasStatus: false,//海报绘图标签
+ posterImage: '',//海报路径
+ posterbackgd: '/images/posterbackgd.png',
+ sharePacket: {
+ isState: true,//默认不显示
+ priceName: 0,
+ },//分销商详细
+ uid: 0,//用户uid
+ circular: false,
+ autoplay: false,
+ interval: 3000,
+ duration: 500,
+ clientHeight: "",
+ systemStore: {},//门店信息
+ good_list: [],
+ isDown: true,
+ storeSelfMention: true,
+ storeItems: {},
+ storeList: [],
+ activity:[],
+ iSplus:true,
+ navH: "",
+ navList: [],
+ opacity: 0,
+ scrollY:0,
+ topArr:[],
+ toView: '',
+ height: 0,
+ heightArr: [],
+ lock: false,
+ scrollTop:0
+ },
+ returns: function () {
+ wx.navigateBack();
+ },
+ tap: function (e) {
+ var id = e.currentTarget.dataset.id;
+ var index = e.currentTarget.dataset.index;
+ var that = this;
+ if (!this.data.good_list.length && id == "past2") {
+ id = "past3"
+ }
+ this.setData({
+ toView: id,
+ navActive: index,
+ lock: true,
+ scrollTop:index>0?that.data.topArr[index]-(app.globalData.navHeight/2):that.data.topArr[index]
+ });
+ },
+ scroll: function (e) {
+ var that = this, scrollY = e.detail.scrollTop;
+ var opacity = scrollY / 200;
+ opacity = opacity > 1 ? 1 : opacity;
+ that.setData({
+ opacity: opacity,
+ scrollY: scrollY
+ })
+ if (that.data.lock) {
+ that.setData({
+ lock: false
+ })
+ return;
+ }
+ for (var i = 0; i < that.data.topArr.length; i++) {
+ if (scrollY < that.data.topArr[i]-(app.globalData.navHeight/2) + that.data.heightArr[i]) {
+ that.setData({
+ navActive: i
+ });
+ break
+ }
+ }
+ },
+ /**
+ * 登录后加载
+ *
+ */
+ onLoadFun: function (e) {
+ this.setData({ isLog: true });
+ this.getCouponList();
+ this.getCartCount();
+ this.downloadFilePromotionCode();
+ this.getUserInfo();
+ this.get_product_collect();
+ },
+ ChangCouponsClone: function () {
+ this.setData({ 'coupon.coupon': false });
+ },
+ goActivity: function (e) {
+ let item = e.currentTarget.dataset.items;
+ if (item.type === "1") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_seckill_details/index?id=${item.id}&time=${item.time}&status=1`
+ });
+ } else if (item.type === "2") {
+ wx.navigateTo({ url: `/pages/activity/goods_bargain_details/index?id=${item.id}`});
+ } else {
+ wx.navigateTo({ url: `/pages/activity/goods_combination_details/index?id=${item.id}`});
+ }
+ },
+ /**
+ * 商品详情跳转
+ */
+ goDetail: function (e) {
+ let item = e.currentTarget.dataset.items;
+ if (item.activity && item.activity.type === "1") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_seckill_details/index?id=${item.activity.id}&time=${item.activity.time}&status=1`
+ });
+ } else if (item.activity && item.activity.type === "2") {
+ wx.navigateTo({ url: `/pages/activity/goods_bargain_details/index?id=${item.activity.id}`});
+ } else if (item.activity && item.activity.type === "3") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_combination_details/index?id=${item.activity.id}`
+ });
+ } else {
+ wx.navigateTo({ url: `/pages/goods_details/index?id=${item.id}` });
+ }
+ },
+ /*
+ * 跳转门店列表
+ */
+ showStoreList: function () {
+ wx.navigateTo({
+ url: '/pages/goods_details_store/index?go=details'
+ })
+ },
+ /**
+ * 获取门店列表数据
+ */
+ getList: function () {
+ let longitude = wx.getStorageSync(CACHE_LONGITUDE); //经度
+ let latitude = wx.getStorageSync(CACHE_LATITUDE); //纬度
+ let data = {
+ latitude: latitude, //纬度
+ longitude: longitude, //经度
+ page: 1,
+ limit: 10
+ }
+ storeListApi(data).then(res => {
+ let list = res.data.list || [];
+ this.setData({
+ storeList: list,
+ storeItems: list[0]
+ });
+ }).catch(err => {
+
+ })
+ },
+ /*
+ * 获取用户信息
+ */
+ getUserInfo: function () {
+ var that = this;
+ getUserInfo().then(res => {
+ let isState = true;
+ if ((res.data.is_promoter || res.data.statu == 2) && this.data.sharePacket.priceName != 0) {
+ isState = false;
+ }
+ that.setData({
+ 'sharePacket.isState': isState,
+ uid: res.data.uid
+ });
+ });
+ },
+ /**
+ * 购物车手动填写
+ *
+ */
+ iptCartNum: function (e) {
+ this.setData({
+ ['productSelect.cart_num']: e.detail,
+ cart_num: e.detail
+ });
+ },
+ /**
+ * 购物车数量加和数量减
+ *
+ */
+ ChangeCartNum: function (e) {
+ //是否 加|减
+ var changeValue = e.detail;
+ //获取当前变动属性
+ var productSelect = this.data.productValue[this.data.attrValue];
+ //如果没有属性,赋值给商品默认库存
+ if (productSelect === undefined && !this.data.productAttr.length) productSelect = this.data.productSelect;
+ //不存在不加数量
+ if (productSelect === undefined) return;
+
+ if (this.data.cart_num) {
+ productSelect.cart_num = this.data.cart_num;
+ };
+ //提取库存
+ var stock = productSelect.stock || 0;
+ //设置默认数据
+ if (productSelect.cart_num == undefined) productSelect.cart_num = 1;
+ //数量+
+ if (changeValue) {
+ productSelect.cart_num++;
+ //大于库存时,等于库存
+ if (productSelect.cart_num > stock) productSelect.cart_num = stock ? stock : 1;
+ this.setData({
+ ['productSelect.cart_num']: productSelect.cart_num,
+ cart_num: productSelect.cart_num
+ });
+ } else {
+ //数量减
+ productSelect.cart_num--;
+ //小于1时,等于1
+ if (productSelect.cart_num < 1) productSelect.cart_num = 1;
+ this.setData({
+ ['productSelect.cart_num']: productSelect.cart_num,
+ cart_num: productSelect.cart_num
+ });
+ }
+ },
+ /**
+ * 属性变动赋值
+ *
+ */
+ ChangeAttr: function (e) {
+ var values = e.detail;
+ var productSelect = this.data.productValue[values];
+ var storeInfo = this.data.storeInfo;
+ this.setData({
+ cart_num:1
+ })
+ if (productSelect) {
+ this.setData({
+ ["productSelect.image"]: productSelect.image,
+ ["productSelect.price"]: productSelect.price,
+ ["productSelect.stock"]: productSelect.stock,
+ ['productSelect.unique']: productSelect.unique,
+ ['productSelect.cart_num']: 1,
+ attrValue: values,
+ attr: '已选择'
+ });
+ } else {
+ this.setData({
+ ["productSelect.image"]: storeInfo.image,
+ ["productSelect.price"]: storeInfo.price,
+ ["productSelect.stock"]: 0,
+ ['productSelect.unique']: '',
+ ['productSelect.cart_num']: 1,
+ attrValue: '',
+ attr: '请选择'
+ });
+ }
+ },
+ /**
+ * 领取完毕移除当前页面领取过的优惠券展示
+ */
+ ChangCoupons: function (e) {
+ var coupon = e.detail;
+ var couponList = util.ArrayRemove(this.data.couponList, 'id', coupon.id);
+ this.setData({ couponList: couponList });
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ var that = this;
+ this.setData({
+ navH: app.globalData.navHeight
+ });
+ //设置商品列表高度
+ wx.getSystemInfo({
+ success: function (res) {
+ that.setData({
+ height: res.windowHeight
+ //res.windowHeight:获取整个窗口高度为px,*2为rpx;98为头部占据的高度;
+ })
+ },
+ });
+ //扫码携带参数处理
+ if (options.scene) {
+ var value = util.getUrlParams(decodeURIComponent(options.scene));
+ if (value.id) options.id = value.id;
+ //记录推广人uid
+ if (value.pid) app.globalData.spid = value.pid;
+ }
+ if (!options.id) return app.Tips({ title: '缺少参数无法查看商品' }, { tab: 3, url: 1 });
+ this.setData({ id: options.id });
+ //记录推广人uid
+ if (options.spid) app.globalData.spid = options.spid;
+ this.getGoodsDetails();
+ this.getList();
+ },
+ setClientHeight: function () {
+ if (!this.data.good_list.length) return;
+ var query = wx.createSelectorQuery().in(this);
+ query.select("#list0").boundingClientRect();
+ var that = this;
+ query.exec(function (res) {
+ that.setData({
+ clientHeight: res[0].height + 20
+ });
+ });
+ },
+ infoScroll: function () {
+ var that = this, topArr = [], heightArr = [];
+ for (var i = 0; i < that.data.navList.length; i++) { //productList
+ //获取元素所在位置
+ var query = wx.createSelectorQuery().in(this);
+ var idView = "#past" + i;
+ if (!that.data.good_list.length && i == 2) {
+ var idView = "#past" + 3;
+ }
+ query.select(idView).boundingClientRect();
+ query.exec(function (res) {
+ var top = res[0].top;
+ var height = res[0].height;
+ topArr.push(top);
+ heightArr.push(height);
+ that.setData({
+ topArr: topArr,
+ heightArr: heightArr
+ });
+ });
+ };
+ },
+ /**
+ * 获取产品详情
+ *
+ */
+ getGoodsDetails: function () {
+ var that = this;
+ getProductDetail(that.data.id).then(res => {
+ var storeInfo = res.data.storeInfo;
+ var good_list = res.data.good_list || [];
+ var count = Math.ceil(good_list.length / 6);
+ var goodArray = new Array();
+ for (var i = 0; i < count; i++) {
+ var list = good_list.slice(i * 6, i * 6 + 6);
+ if (list.length) goodArray.push({ list: list });
+ }
+ that.setData({
+ storeInfo: storeInfo,
+ reply: res.data.reply ? [res.data.reply] : [],
+ replyCount: res.data.replyCount,
+ description: storeInfo.description,
+ replyChance: res.data.replyChance,
+ productAttr: res.data.productAttr,
+ productValue: res.data.productValue,
+ ["sharePacket.priceName"]: res.data.priceName,
+ // ['parameter.title']: storeInfo.store_name,
+ systemStore: res.data.system_store,
+ storeSelfMention: res.data.store_self_mention,
+ good_list: goodArray,
+ activity:res.data.activity ? res.data.activity : []
+ });
+ var navList = ['商品', '评价', '详情'];
+ if (goodArray.length) {
+ navList.splice(2, 0, '推荐')
+ }
+ that.setData({
+ navList: navList
+ });
+ if (app.globalData.isLog) {
+ that.getUserInfo();
+ }
+ that.downloadFilestoreImage();
+ that.DefaultSelect();
+ setTimeout(function () {
+ that.setClientHeight();
+ }, 500);
+ setTimeout(function () {
+ that.infoScroll();
+ }, 500);
+ //html转wxml
+ WxParse.wxParse('description', 'html', that.data.description, that, 0);
+ }).catch(err => {
+ //状态异常返回上级页面
+ return app.Tips({ title: err.toString() }, { tab: 3, url: 1 });
+ })
+ },
+ goPages: function (e) {
+ wx.navigateTo({ url: 'pages/goods_details/index?id=' + e.currentTarget.dataset.id });
+ },
+ /**
+ * 拨打电话
+ */
+ makePhone: function () {
+ wx.makePhoneCall({
+ phoneNumber: this.data.systemStore.phone
+ })
+ },
+ /**
+ * 打开地图
+ *
+ */
+ showMaoLocation: function () {
+ if (!this.data.systemStore.latitude || !this.data.systemStore.longitude) return app.Tips({ title: '缺少经纬度信息无法查看地图!' });
+ wx.openLocation({
+ latitude: parseFloat(this.data.systemStore.latitude),
+ longitude: parseFloat(this.data.systemStore.longitude),
+ scale: 8,
+ name: this.data.systemStore.name,
+ address: this.data.systemStore.address + this.data.systemStore.detailed_address,
+ success: function () {
+
+ },
+ });
+ },
+ /**
+ * 默认选中属性
+ *
+ */
+ DefaultSelect: function () {
+ var productAttr = this.data.productAttr, storeInfo = this.data.storeInfo , productValue = this.data.productValue,
+ value = [];
+ for (var key in productValue) {
+ if (productValue[key].stock > 0) {
+ value = this.data.productAttr.length ? key.split(",") : [];
+ break;
+ }
+ }
+ for (var i = 0, len = productAttr.length; i < len; i++) {
+ if (productAttr[i].attr_value[0]) productAttr[i].checked = value[i];
+ };
+ var productSelect = this.data.productValue[value.sort().join(',')];
+ if (productSelect) {
+ this.setData({
+ ["productSelect.store_name"]: storeInfo.store_name,
+ ["productSelect.image"]: productSelect.image,
+ ["productSelect.price"]: productSelect.price,
+ ["productSelect.stock"]: productSelect.stock,
+ ['productSelect.unique']: productSelect.unique,
+ ['productSelect.cart_num']: 1,
+ attrValue: value,
+ attr: '已选择'
+ });
+ } else {
+ this.setData({
+ ["productSelect.store_name"]: storeInfo.store_name,
+ ["productSelect.image"]: storeInfo.image,
+ ["productSelect.price"]: storeInfo.price,
+ ["productSelect.stock"]: this.data.productAttr.length ? 0 : storeInfo.stock,
+ ['productSelect.unique']: '',
+ ['productSelect.cart_num']: 1,
+ attrValue: '',
+ attr: '请选择'
+ });
+ }
+ this.setData({ productAttr: productAttr, cart_num:1});
+ },
+ /**
+ * 获取是否收藏
+ */
+ get_product_collect: function () {
+ var that = this;
+ getProductDetail(that.data.id).then(res => {
+ that.setData({ 'storeInfo.userCollect': res.data.storeInfo.userCollect });
+ });
+ },
+ /**
+ * 获取优惠券
+ *
+ */
+ getCouponList() {
+ var that = this;
+ getCoupons({ page: 1, limit: 10, type: 1, product_id: that.data.id}).then(res => {
+ var couponList = [];
+ for (var i = 0; i < res.data.length; i++) {
+ if (!res.data[i].is_use && couponList.length < 2) couponList.push(res.data[i]);
+ }
+ that.setData({
+ ['coupon.list']: res.data,
+ couponList: couponList
+ });
+ });
+ },
+ /**
+ *
+ *
+ * 收藏商品
+ */
+ setCollect: function () {
+ if (app.globalData.isLog === false) {
+ this.setData({
+ isAuto: true,
+ iShidden: false,
+ });
+ } else {
+ var that = this;
+ if (this.data.storeInfo.userCollect) {
+ collectDel(this.data.storeInfo.id).then(res => {
+ that.setData({
+ ['storeInfo.userCollect']: !that.data.storeInfo.userCollect
+ })
+ })
+ } else {
+ collectAdd(this.data.storeInfo.id).then(res => {
+ that.setData({
+ ['storeInfo.userCollect']: !that.data.storeInfo.userCollect
+ })
+ })
+ }
+ }
+ },
+ /**
+ * 打开属性插件
+ */
+ selecAttr: function () {
+ if (app.globalData.isLog === false)
+ this.setData({ isAuto: true, iShidden: false })
+ else
+ this.setData({ 'attribute.cartAttr': true, isOpen: true })
+ },
+ /**
+ * 打开优惠券插件
+ */
+ coupon: function () {
+ if (app.globalData.isLog === false)
+ this.setData({ isAuto: true, iShidden: false })
+ else {
+ this.getCouponList();
+ this.setData({ 'coupon.coupon': true })
+ }
+ },
+ onMyEvent: function (e) {
+ this.setData({ 'attribute.cartAttr': e.detail.window, isOpen: false });
+ },
+ /**
+ * 打开属性加入购物车
+ *
+ */
+ joinCart: function (e) {
+ //是否登录
+ if (app.globalData.isLog === false)
+ this.setData({ isAuto: true, iShidden: false, });
+ else {
+ this.goCat();
+ }
+ },
+ /*
+ * 加入购物车
+ */
+ goCat: function (isPay) {
+ var that = this;
+ var productSelect = this.data.productValue[this.data.attrValue];
+ //打开属性
+ if (this.data.attrValue) {
+ //默认选中了属性,但是没有打开过属性弹窗还是自动打开让用户查看默认选中的属性
+ this.setData({ 'attribute.cartAttr': !this.data.isOpen ? true : false })
+ } else {
+ if (this.data.isOpen)
+ this.setData({ 'attribute.cartAttr': true })
+ else
+ this.setData({ 'attribute.cartAttr': !this.data.attribute.cartAttr });
+ }
+ //只有关闭属性弹窗时进行加入购物车
+ if (this.data.attribute.cartAttr === true && this.data.isOpen == false) return this.setData({ isOpen: true });
+ //如果有属性,没有选择,提示用户选择
+ if (this.data.productAttr.length && productSelect === undefined && this.data.isOpen == true) return app.Tips({ title: '请选择属性' });
+ if (!that.data.cart_num || parseInt(that.data.cart_num) <= 0) return app.Tips({ title: '请输入购买数量' });
+ postCartAdd({
+ productId: that.data.id,
+ cartNum: that.data.cart_num,
+ uniqueId: productSelect !== undefined ? productSelect.unique : '',
+ 'new': isPay === undefined ? 0 : 1,
+ }).then(res => {
+ that.setData({ isOpen: false, 'attribute.cartAttr': false });
+ if (isPay)
+ wx.navigateTo({ url: '/pages/order_confirm/index?cartId=' + res.data.cartId });
+ else
+ app.Tips({ title: '添加购物车成功', icon: 'success' }, function () {
+ that.getCartCount(true);
+ });
+ }).catch(err => {
+ return app.Tips({ title: err });
+ });
+ },
+ /**
+ * 获取购物车数量
+ * @param boolean 是否展示购物车动画和重置属性
+ */
+ getCartCount: function (isAnima) {
+ var that = this;
+ getCartCounts().then(res => {
+ that.setData({ CartCount: res.data.count });
+ //加入购物车后重置属性
+ if (isAnima) {
+ that.setData({
+ animated: true,
+ attrValue: '',
+ attr: '请选择',
+ ["productSelect.image"]: that.data.storeInfo.image,
+ ["productSelect.price"]: that.data.storeInfo.price,
+ ["productSelect.stock"]: that.data.storeInfo.stock,
+ ['productSelect.unique']: '',
+ ['productSelect.cart_num']: 1,
+ cart_num:1
+ });
+ that.selectComponent('#product-window').ResetAttr();
+ setTimeout(function () {
+ that.setData({
+ animated: false
+ });
+ }, 500);
+ }
+ });
+ },
+ /**
+ * 立即购买
+ */
+ goBuy: function (e) {
+ if (app.globalData.isLog === false)
+ this.setData({ isAuto: true, iShidden: false });
+ else
+ this.goCat(true);
+ },
+ /**
+ * 分享打开和关闭
+ *
+ */
+ listenerActionSheet: function () {
+ if (app.globalData.isLog === false)
+ this.setData({ isAuto: true, iShidden: false });
+ else
+ this.setData({ actionSheetHidden: !this.data.actionSheetHidden })
+ },
+ //隐藏海报
+ posterImageClose: function () {
+ this.setData({ posterImageStatus: false, })
+ },
+ //替换安全域名
+ setDomain: function (url) {
+ url = url ? url.toString() : '';
+ //本地调试打开,生产请注销
+ // return url;
+ if (url.indexOf("https://") > -1) return url;
+ else return url.replace('http://', 'https://');
+ },
+ //获取海报产品图
+ downloadFilestoreImage: function () {
+ var that = this;
+ wx.downloadFile({
+ url: that.setDomain(that.data.storeInfo.image),
+ success: function (res) {
+ that.setData({
+ storeImage: res.tempFilePath
+ })
+ },
+ fail: function () {
+ return app.Tips({ title: '' });
+ that.setData({
+ storeImage: '',
+ })
+ },
+ });
+ },
+ /**
+ * 获取产品分销二维码
+ * @param function successFn 下载完成回调
+ *
+ */
+ downloadFilePromotionCode: function (successFn) {
+ var that = this;
+ getProductCode(this.data.id).then(res => {
+ wx.downloadFile({
+ url: that.setDomain(res.data.code),
+ success: function (res) {
+ that.setData({ isDown: false });
+ if (typeof successFn == 'function')
+ successFn && successFn(res.tempFilePath);
+ else
+ that.setData({ PromotionCode: res.tempFilePath });
+ },
+ fail: function () {
+ that.setData({ isDown: false });
+ that.setData({ PromotionCode: '' });
+ },
+ });
+ }).catch(err => {
+ that.setData({ isDown: false });
+ that.setData({ PromotionCode: '' });
+ });
+ },
+ /**
+ * 生成海报
+ */
+ goPoster: function () {
+ var that = this;
+ that.setData({ canvasStatus: true });
+ var arr2 = [that.data.posterbackgd, that.data.storeImage, that.data.PromotionCode];
+ if (that.data.isDown) return app.Tips({ title: '正在下载海报,请稍后再试!' });
+ wx.getImageInfo({
+ src: that.data.PromotionCode,
+ fail: function (res) {
+ return app.Tips({ 'title': '小程序二维码需要发布正式版后才能获取到' });
+ },
+ success() {
+ if (arr2[2] == '') {
+ //海报二维码不存在则从新下载
+ that.downloadFilePromotionCode(function (msgPromotionCode) {
+ arr2[2] = msgPromotionCode;
+ if (arr2[2] == '') return app.Tips({ title: '海报二维码生成失败!' });
+ util.PosterCanvas(arr2, that.data.storeInfo.store_name, that.data.storeInfo.price, function (tempFilePath) {
+ that.setData({
+ posterImage: tempFilePath,
+ posterImageStatus: true,
+ canvasStatus: false,
+ actionSheetHidden: !that.data.actionSheetHidden
+ })
+ });
+ });
+ } else {
+ //生成推广海报
+ util.PosterCanvas(arr2, that.data.storeInfo.store_name, that.data.storeInfo.price, function (tempFilePath) {
+ that.setData({
+ posterImage: tempFilePath,
+ posterImageStatus: true,
+ canvasStatus: false,
+ actionSheetHidden: !that.data.actionSheetHidden
+ })
+ });
+ }
+ },
+ });
+ },
+ /*
+ * 保存到手机相册
+ */
+ savePosterPath: function () {
+ var that = this;
+ wx.getSetting({
+ success(res) {
+ if (!res.authSetting['scope.writePhotosAlbum']) {
+ wx.authorize({
+ scope: 'scope.writePhotosAlbum',
+ success() {
+ wx.saveImageToPhotosAlbum({
+ filePath: that.data.posterImage,
+ success: function (res) {
+ that.posterImageClose();
+ app.Tips({ title: '保存成功', icon: 'success' });
+ },
+ fail: function (res) {
+ app.Tips({ title: '保存失败' });
+ }
+ })
+ }
+ })
+ } else {
+ wx.saveImageToPhotosAlbum({
+ filePath: that.data.posterImage,
+ success: function (res) {
+ that.posterImageClose();
+ app.Tips({ title: '保存成功', icon: 'success' });
+ },
+ fail: function (res) {
+ app.Tips({ title: '保存失败' });
+ },
+ })
+ }
+ }
+ })
+ },
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+ var that = this;
+ that.setData({ actionSheetHidden: !that.data.actionSheetHidden });
+ userShare();
+ return {
+ title: that.data.storeInfo.store_name || '',
+ imageUrl: that.data.storeInfo.image || '',
+ path: '/pages/goods_details/index?id=' + that.data.id + '&spid=' + that.data.uid,
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_details/index.json b/template/xcx/pages/goods_details/index.json
new file mode 100644
index 000000000..bf66f6d1c
--- /dev/null
+++ b/template/xcx/pages/goods_details/index.json
@@ -0,0 +1,12 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "shareRedPackets": "/components/share-red-packets/index",
+ "productConSwiper": "/components/productConSwiper/index",
+ "userEvaluation": "/components/userEvaluation/index",
+ "product-window":"/components/product-window/index",
+ "coupon-list-window": "/components/coupon-list-window/index",
+ "authorize": "/components/authorize/authorize",
+ "home": "/components/home/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_details/index.wxml b/template/xcx/pages/goods_details/index.wxml
new file mode 100644
index 000000000..524be8a17
--- /dev/null
+++ b/template/xcx/pages/goods_details/index.wxml
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ¥
+ {{storeInfo.price}}
+ ¥{{storeInfo.vip_price}}
+
+
+
+
+ {{storeInfo.store_name}}
+
+ 原价:¥{{storeInfo.ot_price}}
+ 库存:{{storeInfo.stock}}{{storeInfo.unit_name}}
+ 销量:{{storeInfo.fsales}}{{storeInfo.unit_name}}
+
+
+
+ 赠积分:
+ 赠送 {{storeInfo.give_integral}} 积分
+
+
+
+
+ 优惠券:
+ 满{{item.use_min_price}}减{{item.coupon_price}}
+
+
+
+
+
+ 活 动:
+
+
+
+ 参与秒杀
+
+
+
+ 参与砍价
+
+
+
+ 参与拼团
+
+
+
+
+
+
+ {{attr}}:
+ {{attrValue}}
+
+
+
+
+
+
+
+ 用户评价({{replyCount}})
+
+ {{replyChance}}% 好评率
+
+
+
+
+
+
+
+
+ 优品推荐
+
+
+
+
+
+
+
+
+
+ 秒杀
+ 砍价
+ 拼团
+
+ {{val.store_name}}
+ ¥{{val.price}}
+
+
+
+
+
+
+
+
+ 产品介绍
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 发送给朋友
+
+
+
+ 生成海报
+
+
+
+
+
+
+
+ 保存到手机
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/goods_details/index.wxss b/template/xcx/pages/goods_details/index.wxss
new file mode 100644
index 000000000..bf10ade50
--- /dev/null
+++ b/template/xcx/pages/goods_details/index.wxss
@@ -0,0 +1,116 @@
+.navbar .header {height: 96rpx;font-size: 30rpx;color: #050505;background-color: #fff;padding-right: 95rpx;}
+.navbar .header .item {position: relative;margin: 0 25rpx;}
+.navbar .header .item.on:before {position: absolute;width: 60rpx;height: 5rpx;background-repeat: no-repeat;content: "";background-image: linear-gradient(to right, #ff3366 0%, #ff6533 100%);bottom: -10rpx;left:50%;margin-left:-28rpx;}
+.navbar{position:fixed;background-color:#fff;top:0;left:0;z-index:999;width:100%;}
+.navbar .navbarH{position:relative;}
+.navbar .navbarH .navbarCon{position:absolute;bottom:0;height:100rpx;width:100%;}
+.returnF{position:fixed;top:0;left:0;width:100rpx;z-index:1000;}
+.returnF .returnH{position:relative;}
+.returnF .returnH .returnCon{position:absolute;bottom:0;height:100rpx;width:100%;color:#000;font-weight:bold;font-size:40rpx;}
+/* .icon-xiangzuo{color:#000;font-weight:bold;position:fixed;font-size:40rpx;width:100rpx;height:56rpx;line-height:54rpx;z-index:1000;left:33rpx;} */
+.product-con .footer{padding:0 20rpx 0 30rpx;position:fixed;bottom:0;width:100%;box-sizing:border-box;height:100rpx;background-color:#fff;z-index:99;border-top:1rpx solid #f0f0f0;}
+.product-con .footer .item{font-size:18rpx;color:#666;}
+.product-con .footer .item .iconfont{text-align:center;font-size:40rpx;}
+.product-con .footer .item .iconfont.icon-shoucang1 {color:#f00;}
+.product-con .footer .item .iconfont.icon-gouwuche1{font-size:40rpx;position:relative;}
+.product-con .footer .item .iconfont.icon-gouwuche1 .num{color:#fff;position:absolute;font-size:18rpx;
+padding:2rpx 8rpx 3rpx;border-radius:200rpx;top:-10rpx;right:-10rpx;}
+.product-con .footer .bnt{width:444rpx;height:76rpx;}
+.product-con .footer .bnt .bnts{width:222rpx;text-align:center;line-height:76rpx;color:#fff;font-size:28rpx;}
+.product-con .footer .bnt .joinCart{border-radius:50rpx 0 0 50rpx;background-image: linear-gradient(to right,#fea10f 0%,#fa8013 100%);}
+.product-con .footer .bnt .buy{border-radius:0 50rpx 50rpx 0;background-image: linear-gradient(to right,#fa6514 0%,#e93323 100%);}
+.product-con .store-info {margin-top:20rpx;background-color: #fff;}
+.product-con .store-info .title {font-size: 28rpx;color: #282828;
+ height: 80rpx;line-height: 80rpx;}
+.product-con .store-info .info {padding: 0 30rpx;height: 126rpx;}
+.product-con .store-info .info .picTxt {display: flex;justify-content: space-between;}
+.product-con .store-info .info .picTxt .pictrue {width: 76rpx;height: 76rpx;margin-right: 20rpx;}
+.product-con .store-info .info .picTxt .pictrue image {width: 100%;height: 100%;border-radius: 6rpx;}
+.product-con .store-info .info .picTxt .text {width: 409rpx;}
+.product-con .store-info .info .picTxt .text .name {font-size: 30rpx;color: #282828;}
+.product-con .store-info .info .picTxt .text .address {font-size: 24rpx;color: #666;
+ margin-top: 3rpx;}
+.product-con .store-info .info .picTxt .text .address .iconfont {color: #707070;
+ font-size: 18rpx;margin-left: 10rpx;}
+.product-con .store-info .info .picTxt .text .address .addressTxt {max-width: 350rpx;}
+.product-con .store-info .info .iconfont {font-size: 40rpx;}
+.product-con .superior {background-color: #fff;margin-top: 20rpx;padding-bottom: 10rpx;}
+.product-con .superior .title {height: 98rpx;}
+.product-con .superior .title image {width:30rpx;height: 30rpx;}
+.product-con .superior .title .titleTxt {margin: 0 20rpx;font-size: 30rpx;
+ background-image: linear-gradient(to right, #f57a37 0%, #f21b07 100%);
+ -webkit-background-clip: text;-webkit-text-fill-color: transparent;}
+.product-con .superior .slider-banner {width:690rpx;margin: 0 auto;position:relative;}
+.product-con .superior .slider-banner swiper{height:100%;width:100%;}
+.product-con .superior .slider-banner swiper-item{height:100%;}
+.product-con .superior .slider-banner .list {width: 100%;}
+.product-con .superior .slider-banner .list .item {width: 215rpx;margin: 0 22rpx 30rpx 0;
+ font-size: 26rpx;}
+.product-con .superior .slider-banner .list .item:nth-of-type(3n) {margin-right: 0;}
+.product-con .superior .slider-banner .list .item .pictrue {width: 100%;height: 215rpx;position: relative;}
+.product-con .superior .slider-banner .list .item .pictrue image {width: 100%;height: 100%;
+ border-radius: 6rpx;}
+.product-con .superior .slider-banner .list .item .name {color: #282828;margin-top: 12rpx;}
+.product-con .superior .slider-banner .swiper-pagination-bullet {background-color: #999;}
+.product-con .superior .slider-banner .swiper-pagination-bullet-active {background-color: #e93323;}
+@import "/wxParse/wxParse.wxss";
+button{padding:0;margin:0;line-height:normal;background-color:#fff;}
+button::after{border:0;}
+action-sheet-item{padding: 0;height:240rpx;align-items:center;display:flex;}
+.contact{font-size:16px;width:50%;
+background-color:#fff;padding:8rpx 0;border-radius:0;margin:0;line-height:2;}
+.contact::after{border:none;}
+.action-sheet{font-size:17px;line-height:1.8;width:50%;position: absolute;top:0;right:0;padding:25rpx 0;}
+
+.canvas{width: 750px; height: 1298px;}
+.poster-pop{width:450rpx;height:714rpx;position:fixed;left:50%;transform:translateX(-50%);z-index:111;top:50%;margin-top:-357rpx;}
+.poster-pop image{width:100%;height:100%;display:block;}
+.poster-pop .close{width:46rpx;height:75rpx;position:fixed;right:0;top:-73rpx;display:block;}
+.poster-pop .save-poster{background-color:#df2d0a;font-size::22rpx;color:#fff;text-align:center;height:76rpx;line-height:76rpx;width:100%;}
+.mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.6);z-index:9;}
+
+.pro-wrapper .iconn{background-image:url('data:image/png;base64,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');width:100rpx;height:100rpx;background-repeat:no-repeat;background-size:100% 100%;margin:0 auto;}
+.pro-wrapper .iconn.iconn1{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAR4ElEQVR4nO2deZgU5Z3HP1XVU9zDMYDcIDcaBjJQCsMhDy54crjhTMDEXKtE27gGn8TkiZpo8qgRQyeyq0924wKrgMawEDRuUBFkQBsQgVW5j8EBgeGYGRBqpqv2j6oeaqqqr+nu6eqZ/jxPP1BvvTVVXd9+r9/7e3+vMHLxFbKdoF9uBxQC/YG+QG+gG1BgfloBPqCNeUklUANcBMrNTxlwFDgEHAB2KQH1fMN9i/oR9MtRz/sa6DlSRtAvy8BIYDQwDigCeib4Z8JCtwd6RLlXKbAD2ARsAbYpAVVN9JkzSVYIHPTL1wBTgFuByVwVKN30ND/TzOOqoF9eD6wD1ioB9csGeo56I3i1ig765bbATGAOMAGQMvpATkLA+8AKYJUSUC9k4iFiVdGeEzjol28A7sMQt1U819RocOSczsFynS8u6Jyo0DlZCeWXdCquwFeqTo0Gl6qN/C3zwCdCC1mgjQwdWwl0aQNd8wW6txXoVyDQp72AT4z7sS8CrwEvKgF1a6LfORmyQuCgXxaB6cDDQHGs/Oe+go9KNXaWaew6oXOo3BAwlfhE6FsgUNhVYFhXkRt7ibRvEdelJcBzwGoloKb4qZx4WuCgXxaAu4DHgaHR8u4/o/PuAY2Soxqfn9LR9IZ4wquIAgzuLFDcW2Rif5EBHYVYl+zG+F5/VQJq2p7WswIH/fIE4HfAiEh5Tlfp/M+nGm/v1ThyroEVjUGf9gK3DBKZdp1Ip9ZRxd4O/EQJqBvS8RyeEzjol3sAzwBzI+X5qFRjxU6NzUe0Bi+piSIKMKaPyJzhIjf0jNporwAeUQJqaSrv7xmBzXZ2AfAbXIY5mg7r92v81/YQ+057XNUIDOwk8O0REv80QER0L9SVwKPAklS1z54QOOiX+wDLgTFu5zcc1Hhxa4gD5dkprJ3+BQL3jpa4qW/EEr0ZmK8E1MPJ3ivjAgf98jzgBSDffm7vaZ3nN4XYfjztnc2MMKKHyEPjJAZ1ci3OFcCPlIC6PJl7ZEzgoF9uBvwR+L793KVq+LctIVZ9EvJ8G5ssogCzCiXuK5Zomeea5U/A/UpArZcQsQSOfyif2E17YNhvHeJuPaYxZ3k1K3Y2fnHB6Fus+CTEnOXVbD3mWlN9H9hkvrOUk3KBg355OPAhoFjT1RA8vymEf3UNJyqbgLI2TlTq+FfXsGhjCDXkOK0AH5rvLqWkVOCgX74Fo+R2s6aXVeh8d1U1r3wcoulJexUdeHVniHtWVVNW4XgT3TBK8i2pvGfKBA765buANUBra/qWoxp3r6hmb5YOfdLBvtM6d6+oZstRR5XdGlgT9Mv/nKp7pUTgoF/+JoaxvU6L//oujR+vqeHC5VTcpXFx4TL8eE0Nr+92iCwDq8x3mjRJC2z+2pZimc7TgcAHIZ7eUNMkOlL1RdPh6fdqWPyBo+mSgKVBv/yNZO+RlMBBv3wb8CoWcTUdnlxfw7Idzp5EDneW7wjx6/WOwiABr5jvuN7UW+CgXx4KrMRSLWs6/Gp9DWs+bZyGi3Sy9lONXzlFDlfXUWfaolEvgc0x25tYbMo68Nv3alj3WU7c+rLuM43fvldjr65bA2/Wd5ycsMCm09sb2JzVlpSEWL0nJ26yrN6jsaTE0bz1AN4wrYMJUZ8SvASbEeP13Rovb8u1uani5W0ht961gmHTT4iEBDYnDr5nTdtyVOPZDTWJ3jdHDJ7dUOM2Tv6eqUHcxC2wOeVX5xdUVqHzi7dzQ6F0oOnwi7dr3CxeLwT98rXx/p24BDYn65djmfJTQ/DIuhoqckaMtFFxGRauq7HbrvOBZaYmMYm3BC/ANln/QkkoZ35sAPad1vnjZkf/ZgyGJjGJOR8c9Ms9gf/DMiT68JjGA6sd3fkcaUIA/jDdx4296pTHSuB6IKqPVzwl+Dks4l6qhqfeadqzQg2NDjz5TqjWcd+kDYY2UYkqcNAvjwNmWNOWlISa5HxupjlZqbuNj2diLMCLSESBTaf05zFqCMBoD17blRvvZorXdrl6nNbRyE60EnwXNqf0RZuahpuNV9F0eG6jw+YwAkMrV1wFNrvgj1vTNhzUGq33Yzax4wudDQcdOjxBBC0jleApWNYKaTos2ZKrmr3Ci1sdNenXMDRzEEnghdaDf+zXOHw2Vzd7hQPlOuv3O0rxQre8DoGDfnkUNqPGsu250us1ljo1GQOMsie6leAfWg+CpVrOYuVB9p7W+ajUUYp/aE+oE6PDDJswy5r26s7Md6xayyDEXI7b8FRmeO38ip2afUXjLOAhoDachD0Iy2wsYRNOVemUOKesGoye7QR+d4ePvgUeVBcjbMRP36zhYIYWzW0+onGqSqfz1fXJrTA0fCmcYK+iZ1sP1n6mEcpgAX50ouRZccFYBP74pMwFKtJ0QyMbdTSsFTjol7sAN1lP/v3zzFbPgzqlZelUShncObM/wLecGt0EdAkfWH9+U7C4v+4/o2c8bIJbu3vknM7RDD1Xr3YC13bwVo1y9JzO/jO6NWaIBNyJsWqxjsC3Wy9890DmO1d2/vRRiJe2ZnYm67uKxH2jvRWy690DGgM61nmmOzAFFgGCfjkPmGjNsfGwtwS+cNkQONMDtpe3hThzMdNPUZcPjji0mgjkwdU2eCQWd5zySzr7PTb2PVWlZ7TDF0bTjThdXmLvKZ2zl+rolY/p+RquoutYrrYf1zNeUuKlXQuYMkRiYCeBKhU2Hzai82TL86cCHdh2XGfywDr9g2KgxGc5qOWTE9nxeoZ1FVg0NY98izv4jKEiGw9p/PStGqqbkIV1Z5nO5IF1korhahVdZ9531wkP1IUxaCnDM3f66ogbZnxfkR/c4K2OULrZfdKh2QgAMeiX2wO9wqmaDoeyIJzRpAEiHVpEHrJ8o1CKFKuqUXLgjCNeZy+gvYgtRuTJSt0thoTn6N0+unr5zaCgZdNROBxx18ZQERhgTcm0cSNeqmIY+nXgYvpigHoSF5v4YBHoY005liUCbzwUvZ+wrVSzu5k2esouOLTrK2JsYlFLpsyAiXKgXOe/P3ZvSy6q8Oz7WdDOpJgvnOuYevmAa+pmarDnSZrFm0IcP68zr0iie1uBkAYlRzUCH4SypqlJJScrHUmdfUAHa8r5r7LnxegYa5Nf363R3GcsiEvGrbdFnhEaeER3kf4dBbrlQytZoFX0aIGeoeKy48sX+IDO1pTzWbpa8HISS5TbtYC5wyVmFkq0SXgNvXc47zShdvZhC1xW6fwVNGruGCLy8HhfVgsbpvKKQ7tWPmxeHd63YaUGAfCPlZhX1HgsXi7Nk2Td7g2AS1m1r1f9eWSCjxmF3vcYSQSXYWHrrPmGqaxC71GkRiduJESMhcS1tPRoj7Fza4Fr2iRvery5v8gCj3lkpAqXgONVIrZm16u/a1GAb49I7umUHiJPTM6K7RrrhcvkSkjE2JatljbNvGugn1koceeQ+oms9BBZNNVHs8arr5t2F0XglDWlXXzbt2WMxyb5eHCsRAv3/Q8cNPPBD26U+MN0H80bsbjgqt0pH8bmyLW0bS6Axx1e5hVJ3DFE4m+fhdh0WOPTL3Wu2AwdPdsJjO0jMq9ItHr+N2rymzu+Z7kPqLMHbpeG2pk3Sdq3gPlFEvOLJHQMK85FVUcSoUMLoVFXxZFw0e5LH1Bnc6Zu+dn3axcwBG8fxcOjKeCi3RERu8Btm/ZLyma6O7U7LAL7rSn9PLzYK0d0XLTbJwJ7rCkJ7nydwyP4REM7G3tEJaCexRIOzydC/9ibH+fwGP0KHAXzGHA2nLTNeqawa64IZxsumm2Hq5bJEuuZYV1zJTjbGN7NoVkJXBV4s/VMUXchcmy8HJ5DAEb0iC7wNoz9bAHo2ErItcNZxKDOgt3JvxIIgimwElCrgXetOaLsXp3DY4zt49DqHaAa6s4OvmnNMbF/TuBswUWrdeH/WM+sBWq9xQd0FGKu/0k3urfnPDxB7/aCNT4HGBr+LXxQK7ASUE8C71tz3jY4s6V4/xnvK+wSv7lBuXWQQ6P3gZPhA/vZldaDKUNEpAxq/NQ7NZ4Oglp6Xuex/83cnlGiAFOvcwhUR0P7pNpKjAjiLcHwgyruLbIpQwFZjp3XmbW82rM+y1VXMjtzPqaPY677EtEEVgLqhaBfXgncE06bMzxzAofJdExIrzJ7mGvpvWBNcKuAX7Ie3NBTZFCn3JjYawzqJNi32QGbduAisBJQtwJbrGmNyfu/sTB/hEOTLcBWe2KkLtTT1oPJA0XPhfBryvQrEJg0wCHd0255Iwm8Fss8sSjQaJ3Fs5F7RzkCzOzB0MyBq8BKQNWAx6xpE/qJFHXPleJM8/XuAhP6OWR7jAjrBqONcv+KOacY5uHxviYVmshriAL8ZLzDXXQHhlbu10Q6oQRUHSM8fC0DOwnMLMxV1ZliZqERstHGQ0QZjke1UykBdRPwmjVtQbFElxQsAsuRGF3aCCwodhSu14CN0a6LxxD5MJYViC3z4Oc3SzmHgAZEwHjnttWDVRjaRCWmwEpALQUetaaN6iUyZ3iuqm4oZg+XGOU0ajxqahOVeKcSlmBz67l/jGt7kCPFDOwk8MAYR2EqAV6I5/q4BDaHTfOxuPXIEjxzu3u01xypIb+Z8Y7luvpWAPNNTWIS92SgElAPA/db07q3FXjy1tzQKR2IAvz6Vp/bcpT7lYB6KO6/k8hNlYC6DPgPa9ro3iILJzTBpXxpZuEEH8W9HfL8p6lB3NRnOv9H2BzlZwwV+c7IXKcrVXxnpMSMoQ5ptgELEv1bCQusBNQrGDtOH7emLyiWmH59zlEvWaZfL7qNd48Dd5nvPiHqpYgSUI9j7LNUFU4TgJ9N9HF7hv24spnbB4v8bKLPbmO4CNxuvvOEqbcaSkDdjbHbZW3oNFEwYmjUN1BKU+bOISKPTXJ0WFVgpvmu60VSSigB9S1gLhZ3W1GAX07y5ZwEEmBekcQvneKGgG+a77jeJF3UlID6BnA3FpEF4MGxEo9MaFobYySKKMAjEyQeHOsw/YaAu5WA+pek75HsHwBQAuor2KprMGY/fj/VR37zVNylcZHfHH4/1ec2O6cCs813mjQpayzNkjwNS8cLjHHysjl5ObOmhYGdBJbNyWO0c5xbBUxLRckNk9LekBJQ/w6MB8qs6d3yBf48K4+5w5v2LJQAzBom8edZeW4RccqA8eY7TBkp7+4qAfVj4EZsxhBZgn8dL7F4mq9Jzid3aSOweJqPhTdJdtsyGO/qRvPdpZS0jGfMMds4zD1srYzuLbLyW3nMHtY0OmCiALOHSaz8lmuVDIbpd1x9x7mxEEYuTu+ygaBfnocxtZVvP7f3tM7zm0JsP94448yP6CHy0Dgp0sKBCuABJaAuTeYeQX/0+M9pF9h8iL7AUmzb2IbZcFDj37eG3Hbuykr6FQjcO0py834MU4Ix5Rf3rFAkPCGw+SAixkTFU9i2EQBjv4F/7NdYuj2U8SWZ9WVgJ4G7R0hMGiBGan4qgZ8DL8Q7nxsLzwgcJuiXewKLgBmR8nxUqvHqxxolR7Wk9kFqCEQBinuLzP26yA09o3Zp/gI8FI+bTSJ4TuAwQb88AXgOKIqU51SVzppPNd76XOPYeW8p3audwG2DRaZeFzNc8Q7gYSWgbkjHc3hWYICgXxYwph6fAL4WLe++0zrrD2iUHNHYd7rht6AXMKrgMX1Ebu4vxmO42QM8Drxh+pinBU8LHMZsn6djuIEWx8hO+SWdYKnOJ2Uau07qHCp3bI6cND4R+hYIFHYRGNZNROnpCFUUiRKMmml1qtrZaGSFwFaCfnkU8C8Ytu2W8VxTo8HhszqHzup8cUGnrELnZCWUX9SpVOErVadag6/MfYVa5EGeCC1kgTYyFLQSuKa1EUq5R1uBvh0Eru2QUFDWS8Aq4EVz+W2DkXUChwn65bYYIs/FMH96bf4xhLGq4FVglRJQL8TInxayVmArQb98DTAFuBWYjMswq4GoAtZjxKFaqwTUL2PkTzuNQmArQb8sAyOB0Rjm0CKgZ5puV4rRC96EsYJ+mxJQPbX5X6MT2I2gX24PFAIDMLas7wN0AwrMT0tABlqZl1wCrpj/lpufMuCI+dkP7FIC6rmG+Qb1J5bA/w8QrL/zy2ZeXQAAAABJRU5ErkJggg==');}
+.store-box{padding: 0 30rpx;border-bottom: 1px solid #f5f5f5;}
+.corlor-red{color: #fc4141;}
+.addressBox .phone{text-align: right;}
+.store-box .iconfont {font-size: 28rpx;color: #7a7a7a;}
+.activity_pin {
+ width: auto;
+ height: 44rpx;
+ line-height: 44rpx;
+ background: linear-gradient(90deg,rgba(233, 51, 35, 1) 0%,rgba(250, 101, 20, 1) 100%);
+ opacity: 1;
+ border-radius: 22rpx;
+ padding: 0 15rpx;
+ margin-left: 19rpx;
+}
+.activity_miao {
+ width: auto;
+ height: 44rpx;
+ line-height: 44rpx;
+ padding: 0 15rpx;
+ background: linear-gradient(90deg,rgba(250, 102, 24, 1) 0%,rgba(254, 161, 15, 1) 100%);
+ opacity: 1;
+ border-radius: 22rpx;
+ margin-left: 19rpx;
+}
+.iconfonts {
+ color: #fff !important;
+ font-size: 28rpx;
+}
+.activity_title {
+ font-size: 24rpx;
+ color: #fff;
+}
+.activity_kan {
+ width: auto;
+ height: 44rpx;
+ line-height: 44rpx;
+ padding: 0 15rpx;
+ background: linear-gradient(90deg,rgba(254, 159, 15, 1) 0%,rgba(254, 178, 15, 1) 100%);
+ opacity: 1;
+ border-radius: 22rpx;
+ margin-left: 19rpx;
+}
+.mask{z-index:100!important;}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_details_store/index.js b/template/xcx/pages/goods_details_store/index.js
new file mode 100644
index 000000000..dcd95da7b
--- /dev/null
+++ b/template/xcx/pages/goods_details_store/index.js
@@ -0,0 +1,152 @@
+
+import { CACHE_LONGITUDE, CACHE_LATITUDE} from '../../config.js';
+import { storeListApi } from '../../api/store.js';
+import wxh from '../../utils/wxh.js';
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '门店列表'
+ },
+ loading: false,//是否加载中
+ loadend: false,//是否加载完毕
+ loadTitle: '加载更多',//提示语
+ page: 1,
+ limit: 10,
+ isClose: false,
+ storeList: [],
+ status: ''
+ // longitude: '',
+ // latitude: ''
+ },
+ onLoad: function (options) {
+ this.setData({ status: options.go });
+ // if (options.go === 'order') this.checked();
+ },
+ /**
+ * 登录回调
+ *
+ */
+ onLoadFun: function () {
+ let longitude = wx.getStorageSync(CACHE_LONGITUDE); //经度
+ let latitude = wx.getStorageSync(CACHE_LATITUDE); //纬度
+ // this.setData({ latitude: latitude, longitude: longitude });
+ if (longitude && latitude){
+ this.getList(longitude, latitude);
+ }else{
+ this.selfLocation();
+ }
+ },
+ /**
+ * 授权地址
+ *
+ */
+ selfLocation: function () {
+ const that = this;
+ wxh.selfLocation().then(res=>{
+ that.getList(res.longitude, res.latitude);
+ }).catch(()=>{
+ that.getList();
+ });
+ },
+ /**
+ * 选中门店
+ *
+ */
+ checked: function (e) {
+ let details = e.currentTarget.dataset.details;
+ let pages = getCurrentPages(); //当前页面
+ let prevPage = pages[pages.length - 2]; //上一页面
+ prevPage.setData({
+ storeItem: details
+ });
+ if (this.data.status === 'order') wx.navigateBack({ delta: 1 });
+ },
+ /**
+ * 获取门店列表数据
+ */
+ getList: function (longitudes, latitudes) {
+ if (this.data.loadend) return;
+ if (this.data.loading) return;
+ this.setData({ loading: true, loadTitle: "" });
+ let data={
+ latitude: latitudes || '', //纬度
+ longitude: longitudes || '', //经度
+ page: this.data.page,
+ limit: this.data.limit
+ }
+ storeListApi(data).then(res => {
+ let list = res.data.list || [];
+ let loadend = list.length < this.data.limit;
+ this.data.storeList = app.SplitArray(list, this.data.storeList);
+ this.setData({
+ storeList: this.data.storeList,
+ loadend: loadend,
+ loading: false,
+ loadTitle: loadend ? "我也是有底线的" : '加载更多',
+ page: this.data.page + 1
+ });
+ }).catch(err => {
+ this.setData({ loading: false, loadTitle: "加载更多" });
+ })
+ },
+ /**
+ * 拨打电话
+ */
+ makePhone: function (e) {
+ let phone = e.currentTarget.dataset.phone;
+ wx.makePhoneCall({
+ phoneNumber: phone
+ })
+ },
+ /**
+ * 打开地图
+ *
+*/
+ showMaoLocation: function (e) {
+ let details = e.currentTarget.dataset.details;
+ if (!details.latitude || !details.longitude) return app.Tips({ title: '缺少经纬度信息无法查看地图!' });
+ wx.openLocation({
+ latitude: parseFloat(details.latitude),
+ longitude: parseFloat(details.longitude),
+ scale: 8,
+ name: details.name,
+ address: details.address + details.detailed_address,
+ success: function () {
+
+ },
+ });
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({ isClose: true });
+ },
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ // if (app.globalData.isLog && this.data.isClose) {
+ // this.setData({ loadend: false, page: 1, storeList: [] });
+ // let longitude = wx.getStorageSync(CACHE_LONGITUDE); //经度
+ // let latitude = wx.getStorageSync(CACHE_LATITUDE); //纬度
+ // this.getList(longitude, latitude);
+ // }
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ let longitude = wx.getStorageSync(CACHE_LONGITUDE); //经度
+ let latitude = wx.getStorageSync(CACHE_LATITUDE); //纬度
+ this.getList(longitude, latitude);
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_details_store/index.json b/template/xcx/pages/goods_details_store/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/goods_details_store/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_details_store/index.wxml b/template/xcx/pages/goods_details_store/index.wxml
new file mode 100644
index 000000000..c73b1f9c8
--- /dev/null
+++ b/template/xcx/pages/goods_details_store/index.wxml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+ {{item.name}}
+ {{item.address}}{{", "+item.detailed_address}}
+
+
+
+
+
+
+
+ 距离{{item.range}}千米
+ 查看地图
+
+
+
+
+
+ {{loadTitle}}
+
+
+
diff --git a/template/xcx/pages/goods_details_store/index.wxss b/template/xcx/pages/goods_details_store/index.wxss
new file mode 100644
index 000000000..59e0f1ecf
--- /dev/null
+++ b/template/xcx/pages/goods_details_store/index.wxss
@@ -0,0 +1,71 @@
+.storeBox{
+ width: 100%;
+ background-color: #fff;
+ padding: 0 30rpx;
+}
+.storeBox-box{
+ width: 100%;
+ height: auto;
+ display: flex;
+ align-items: center;
+ padding: 23rpx 0;
+ border-bottom: 1px solid #eee;
+}
+.storeBox .picTxt{
+ width: 450rpx;
+}
+.store-cent{
+ display: flex;
+ align-items: center;
+ width: 80%;
+}
+.store-cent-left{
+ width: 300rpx;
+}
+.store-img{
+ width: 120rpx;
+ height: 120rpx;
+ border-radius:6rpx;
+ margin-right: 22rpx;
+}
+.store-img image{
+ width: 100%;
+ height: 100%;
+}
+.store-name{
+ color: #282828;
+ font-size: 30rpx;
+ margin-bottom: 22rpx;
+ width:100%;
+}
+.store-address{
+ color: #666666;
+ font-size: 24rpx;
+}
+.store-phone{
+ width:50rpx;
+ height:50rpx;
+ color: #fff;
+ border-radius:50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: #E83323;
+ margin-bottom: 22rpx;
+ margin-left: 87rpx;
+}
+.store-distance{
+ font-size: 22rpx;
+ color: #E83323;
+ text-align:right;
+}
+.iconfont{
+ font-size: 20rpx;
+}
+.row-right{
+ width: 162rpx;
+}
+.addressTxt {
+ width: 100%;
+}
+.phoneIcon{width:100%;}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_list/goods_list.js b/template/xcx/pages/goods_list/goods_list.js
new file mode 100644
index 000000000..afa6d0174
--- /dev/null
+++ b/template/xcx/pages/goods_list/goods_list.js
@@ -0,0 +1,213 @@
+import { getProductslist, getProductHot } from '../../api/store.js';
+
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ productList:[],
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '商品列表',
+ 'color': true,
+ 'class': '0'
+ },
+ navH: "",
+ is_switch:true,
+ where: {
+ sid: 0,
+ keyword: '',
+ priceOrder: '',
+ salesOrder: '',
+ news: 0,
+ page: 1,
+ limit: 10,
+ cid: 0,
+ },
+ price:0,
+ stock:0,
+ nows:false,
+ loadend:false,
+ loading:false,
+ loadTitle:'加载更多',
+ userInfo:{}
+ },
+ onLoadFun: function (e) {
+ this.setData({
+ userInfo: e.detail
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.setData({
+ ['where.sid']: options.sid || 0,
+ title: options.title || '',
+ ['where.keyword']: options.searchValue || '',
+ navH: app.globalData.navHeight
+ });
+ this.get_product_list();
+ this.get_host_product();
+ },
+ /**
+ * 商品详情跳转
+ */
+ goDetail: function (e) {
+ let item = e.currentTarget.dataset.items;
+ if (item.activity && item.activity.type === "1") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_seckill_details/index?id=${item.activity.id}&time=${item.activity.time}&status=1`
+ });
+ } else if (item.activity && item.activity.type === "2") {
+ wx.navigateTo({ url: `/pages/activity/goods_bargain_details/index?id=${item.activity.id}&bargain=${this.data.userInfo.uid}`});
+ } else if (item.activity && item.activity.type === "3") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_combination_details/index?id=${item.activity.id}`
+ });
+ } else {
+ wx.navigateTo({ url: `/pages/goods_details/index?id=${item.id}` });
+ }
+ },
+ Changswitch:function(){
+ var that = this;
+ that.setData({
+ is_switch: !this.data.is_switch
+ })
+ },
+ searchSubmit: function (e) {
+ var that = this;
+ this.setData({ ['where.keyword']: e.detail.value, loadend: false, ['where.page']: 1 })
+ this.get_product_list(true);
+ },
+ /**
+ * 获取我的推荐
+ */
+ get_host_product: function () {
+ var that = this;
+ getProductHot().then(res=>{
+ that.setData({ host_product: res.data });
+ });
+ },
+ //点击事件处理
+ set_where: function (e) {
+ var dataset = e.target.dataset;
+ switch (dataset.type) {
+ case '1':
+ return wx.navigateBack({
+ delta: 1,
+ })
+ break;
+ case '2':
+ if (this.data.price == 0)
+ this.data.price = 1;
+ else if (this.data.price == 1)
+ this.data.price = 2;
+ else if (this.data.price == 2)
+ this.data.price = 0;
+ this.setData({ price: this.data.price, stock: 0 });
+ break;
+ case '3':
+ if (this.data.stock == 0)
+ this.data.stock = 1;
+ else if (this.data.stock == 1)
+ this.data.stock = 2;
+ else if (this.data.stock == 2)
+ this.data.stock = 0;
+ this.setData({ stock: this.data.stock, price: 0 });
+ break;
+ case '4':
+ this.setData({ nows: !this.data.nows });
+ break;
+ }
+ this.setData({ loadend: false, ['where.page']: 1 });
+ this.get_product_list(true);
+ },
+ //设置where条件
+ setWhere: function () {
+ if (this.data.price == 0)
+ this.data.where.priceOrder = '';
+ else if (this.data.price == 1)
+ this.data.where.priceOrder = 'desc';
+ else if (this.data.price == 2)
+ this.data.where.priceOrder = 'asc';
+ if (this.data.stock == 0)
+ this.data.where.salesOrder = '';
+ else if (this.data.stock == 1)
+ this.data.where.salesOrder = 'desc';
+ else if (this.data.stock == 2)
+ this.data.where.salesOrder = 'asc';
+ this.data.where.news = this.data.nows ? 1 : 0;
+ this.setData({ where: this.data.where });
+ },
+ //查找产品
+ get_product_list: function (isPage) {
+ let that = this;
+ this.setWhere();
+ if (that.data.loadend) return;
+ if (that.data.loading) return;
+ if (isPage === true) that.setData({ productList: [] });
+ that.setData({ loading: true, loadTitle: '' });
+ getProductslist(that.data.where).then(res=>{
+ let list = res.data;
+ let productList = app.SplitArray(list, that.data.productList);
+ let loadend = list.length < that.data.where.limit;
+ that.setData({
+ loadend: loadend,
+ loading: false,
+ loadTitle: loadend ? '已全部加载' : '加载更多',
+ productList: productList,
+ ['where.page']: that.data.where.page + 1,
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: '加载更多' });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+ this.setData({['where.page']:1,loadend:false,productList:[]});
+ this.get_product_list();
+ wx.stopPullDownRefresh();
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.get_product_list();
+ },
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_list/goods_list.json b/template/xcx/pages/goods_list/goods_list.json
new file mode 100644
index 000000000..f592dfc7b
--- /dev/null
+++ b/template/xcx/pages/goods_list/goods_list.json
@@ -0,0 +1,8 @@
+{
+ "navigationBarTextStyle": "white",
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "recommend": "/components/recommend/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_list/goods_list.wxml b/template/xcx/pages/goods_list/goods_list.wxml
new file mode 100644
index 000000000..56bd47a13
--- /dev/null
+++ b/template/xcx/pages/goods_list/goods_list.wxml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{title ? title:'默认'}}
+
+ 价格
+
+
+
+
+
+ 销量
+
+
+
+
+
+ 新品
+
+
+
+
+
+
+ 秒杀
+ 砍价
+ 拼团
+
+
+ {{item.store_name}}
+ ¥{{item.price}}
+
+ ¥{{item.vip_price}}
+ 已售{{item.sales}}件
+
+
+
+
+
+
+ {{loadTitle}}
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/goods_list/goods_list.wxss b/template/xcx/pages/goods_list/goods_list.wxss
new file mode 100644
index 000000000..c98397b5c
--- /dev/null
+++ b/template/xcx/pages/goods_list/goods_list.wxss
@@ -0,0 +1,31 @@
+.productList .search{width:100%;height:86rpx;padding-left:23rpx;box-sizing:border-box;position:fixed;left:0;z-index:9;}
+.productList .search .input{width:640rpx;height:60rpx;background-color:#fff;border-radius:50rpx;padding:0 20rpx;box-sizing:border-box;}
+.productList .search .input input{width:548rpx;height:100%;font-size:26rpx;}
+.productList .search .input .placeholder{color:#999;}
+.productList .search .input .iconfont{font-size:35rpx;color:#555;}
+.productList .search .icon-pailie,.productList .search .icon-tupianpailie{color:#fff;width:62rpx;font-size:40rpx;height:86rpx;line-height:86rpx;}
+.productList .nav{height:86rpx;color:#454545;position:fixed;left:0;width:100%;font-size:28rpx;background-color:#fff;z-index: 9;}
+.productList .nav .item{width:25%;text-align:center;}
+.productList .nav .item.font-color{font-weight:bold;}
+.productList .nav .item image{width:15rpx;height:19rpx;margin-left:10rpx;}
+.productList .list{padding:0 20rpx;margin-top:172rpx;}
+.productList .list.on{background-color:#fff;border-top:1px solid #f6f6f6;}
+.productList .list .item{width:345rpx;margin-top:20rpx;background-color:#fff;border-radius:10rpx;}
+.productList .list .item.on{width:100%;display:flex;border-bottom:1rpx solid #f6f6f6;padding:30rpx 0;margin:0;}
+.productList .list .item .pictrue{width:100%;height:345rpx;position: relative;}
+.productList .list .item .pictrue.on{width:180rpx;height:180rpx;}
+.productList .list .item .pictrue image{width:100%;height:100%;border-radius:10rpx 10rpx 0 0;}
+.productList .list .item .pictrue image.on{border-radius:6rpx;}
+.productList .list .item .text{padding:20rpx 17rpx 26rpx 17rpx;font-size:30rpx;color:#222;}
+.productList .list .item .text.on{width:508rpx;padding:0 0 0 22rpx;}
+.productList .list .item .text .money{font-size:26rpx;font-weight:bold;margin-top:8rpx;}
+.productList .list .item .text .money.on{margin-top:50rpx;}
+.productList .list .item .text .money .num{font-size:34rpx;}
+.productList .list .item .text .vip{font-size:22rpx;color:#aaa;margin-top:7rpx;}
+.productList .list .item .text .vip.on{margin-top:12rpx;}
+.productList .list .item .text .vip .vip-money{font-size:24rpx;color:#282828;font-weight:bold;}
+.productList .list .item .text .vip .vip-money image{width:46rpx;height:21rpx;margin-left:4rpx;}
+.noCommodity{background-color:#fff;}
+
+
+
diff --git a/template/xcx/pages/goods_logistics/index.js b/template/xcx/pages/goods_logistics/index.js
new file mode 100644
index 000000000..0a12cb59d
--- /dev/null
+++ b/template/xcx/pages/goods_logistics/index.js
@@ -0,0 +1,108 @@
+import { express } from '../../api/order.js';
+import { getProductHot } from '../../api/store.js';
+var app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '物流信息'
+ },
+ orderId:'',
+ product: { productInfo:{}},
+ orderInfo:{},
+ expressList:[],
+ },
+
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getExpress();
+ this.get_host_product();
+ },
+ copyOrderId:function(){
+ wx.setClipboardData({ data: this.data.orderInfo.delivery_id });
+ },
+ getExpress:function(){
+ var that=this;
+ express(that.data.orderId).then(function(res){
+ var result = res.data.express.result || {};
+ that.setData({
+ product: res.data.order.cartInfo[0] || {},
+ orderInfo: res.data.order,
+ expressList: result.list || []
+ });
+ });
+ },
+ /**
+* 获取我的推荐
+*/
+ get_host_product: function () {
+ var that = this;
+ var data = { offset: 1, limit: 4 }
+ getProductHot().then(function (res) {
+ that.setData({ host_product: res.data });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (!options.orderId) return app.Tips({title:'缺少订单号'});
+ this.setData({ orderId: options.orderId });
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_logistics/index.json b/template/xcx/pages/goods_logistics/index.json
new file mode 100644
index 000000000..3d8369c79
--- /dev/null
+++ b/template/xcx/pages/goods_logistics/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "recommend": "/components/recommend/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_logistics/index.wxml b/template/xcx/pages/goods_logistics/index.wxml
new file mode 100644
index 000000000..8df8439bb
--- /dev/null
+++ b/template/xcx/pages/goods_logistics/index.wxml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+ 物流公司: {{orderInfo.delivery_name}}
+ 快递单号: {{orderInfo.delivery_id}}
+
+
+ 复制单号
+
+
+
+
+ {{item.status}}
+ {{item.time}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/goods_logistics/index.wxss b/template/xcx/pages/goods_logistics/index.wxss
new file mode 100644
index 000000000..69826deac
--- /dev/null
+++ b/template/xcx/pages/goods_logistics/index.wxss
@@ -0,0 +1,23 @@
+.logistics .header{padding:23rpx 30rpx;background-color:#fff;height:166rpx;box-sizing:border-box;}
+.logistics .header .pictrue{width:120rpx;height:120rpx;}
+.logistics .header .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.logistics .header .text{width:540rpx;font-size:28rpx;color:#999;margin-top:6rpx;}
+.logistics .header .text .name{width:365rpx;color:#282828;}
+.logistics .header .text .money{text-align:right;}
+.logistics .logisticsCon{background-color:#fff;margin:12rpx 0;}
+.logistics .logisticsCon .company{height:120rpx;margin:0 0 45rpx 30rpx;padding-right:30rpx;border-bottom:1rpx solid #f5f5f5;}
+.logistics .logisticsCon .company .picTxt{width:520rpx;}
+.logistics .logisticsCon .company .picTxt .iconfont{width:50rpx;height:50rpx;background-color:#666;text-align:center;line-height:50rpx;color:#fff;font-size:35rpx;}
+.logistics .logisticsCon .company .picTxt .text{width:450rpx;font-size:26rpx;color:#282828;}
+.logistics .logisticsCon .company .picTxt .text .name{color:#999;}
+.logistics .logisticsCon .company .picTxt .text .express{margin-top:5rpx;}
+.logistics .logisticsCon .company .copy{font-size:20rpx;width:106rpx;height:40rpx;text-align:center;line-height:40rpx;border-radius:3rpx;border:1rpx solid #999;}
+.logistics .logisticsCon .item{padding:0 40rpx;position:relative;}
+.logistics .logisticsCon .item .circular{width:20rpx;height:20rpx;border-radius:50%;position:absolute;top:-1rpx;left:31.5rpx;background-color:#ddd;}
+.logistics .logisticsCon .item .circular.on{background-color:#e93323;}
+.logistics .logisticsCon .item .text.on-font{color:#e93323;}
+.logistics .logisticsCon .item .text .data.on-font{color:#e93323;}
+.logistics .logisticsCon .item .text{font-size:26rpx;color:#666;width:615rpx;border-left:1rpx solid #e6e6e6;padding:0 0 60rpx 38rpx;}
+.logistics .logisticsCon .item .text.on{border-left-color:#f8c1bd;}
+.logistics .logisticsCon .item .text .data{font-size:24rpx;color:#999;margin-top:10rpx;}
+.logistics .logisticsCon .item .text .data .time{margin-left:15rpx;}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_return/index.js b/template/xcx/pages/goods_return/index.js
new file mode 100644
index 000000000..1086492a8
--- /dev/null
+++ b/template/xcx/pages/goods_return/index.js
@@ -0,0 +1,106 @@
+// pages/apply-return/index.js
+import { ordeRefundReason, orderRefundVerify, getOrderDetail} from '../../api/order.js';
+import util from '../../utils/util.js';
+
+
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '申请退货',
+ 'color': false
+ },
+ refund_reason_wap_img:[],
+ orderInfo:{},
+ RefundArray: [],
+ index: 0,
+ orderId:0,
+ },
+ /**
+ * 授权回调
+ *
+ */
+ onLoadFun:function(){
+ this.getOrderInfo();
+ this.getRefundReason();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (!options.orderId) return app.Tips({title:'缺少订单id,无法退款'},{tab:3,url:1});
+ this.setData({orderId:options.orderId});
+ },
+ /**
+ * 获取订单详情
+ *
+ */
+ getOrderInfo:function(){
+ var that=this;
+ getOrderDetail(that.data.orderId).then(res=>{
+ that.setData({ orderInfo: res.data });
+ });
+ },
+ /**
+ * 获取退款理由
+ */
+ getRefundReason:function(){
+ var that=this;
+ ordeRefundReason().then(res=>{
+ that.setData({ RefundArray: res.data });
+ })
+ },
+
+ /**
+ * 删除图片
+ *
+ */
+ DelPic:function(e){
+ var index = e.target.dataset.index, that = this, pic = this.data.refund_reason_wap_img[index];
+ that.data.refund_reason_wap_img.splice(index, 1);
+ that.setData({ refund_reason_wap_img: that.data.refund_reason_wap_img });
+ },
+
+ /**
+ * 上传文件
+ *
+ */
+ uploadpic:function(){
+ var that=this;
+ util.uploadImageOne('upload/image',function(res){
+ that.data.refund_reason_wap_img.push(res.data.url);
+ that.setData({ refund_reason_wap_img: that.data.refund_reason_wap_img});
+ });
+ },
+
+
+ /**
+ * 申请退货
+ */
+ subRefund:function(e){
+ var that = this, value = e.detail.value;
+ //收集form表单
+ // if (!value.refund_reason_wap_explain) return app.Tips({title:'请输入退款原因'});
+ orderRefundVerify({
+ text: that.data.RefundArray[that.data.index] || '',
+ refund_reason_wap_explain: value.refund_reason_wap_explain,
+ refund_reason_wap_img: that.data.refund_reason_wap_img.join(','),
+ uni: that.data.orderId
+ }).then(res=>{
+ return app.Tips({ title: '申请成功', icon: 'success' }, { tab: 5, url: '/pages/user_return_list/index?isT=1' });
+ }).catch(err=>{
+ return app.Tips({ title: err });
+ })
+ },
+
+ bindPickerChange: function (e) {
+ this.setData({index: e.detail.value});
+ },
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_return/index.json b/template/xcx/pages/goods_return/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/goods_return/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_return/index.wxml b/template/xcx/pages/goods_return/index.wxml
new file mode 100644
index 000000000..26d96fca8
--- /dev/null
+++ b/template/xcx/pages/goods_return/index.wxml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ {{item.productInfo.store_name}}
+
+ ¥{{item.productInfo.attrInfo.price}}
+ x{{item.cart_num}}
+
+
+ ¥{{item.productInfo.price}}
+ x{{item.cart_num}}
+
+
+
+
+
+ 退货件数
+ {{orderInfo.total_num}}
+
+
+ 退款金额
+ ¥{{orderInfo.pay_price}}
+
+
+ 退款原因
+
+
+ {{RefundArray[index]}}
+
+
+
+
+
+ 备注说明
+
+
+
+
+ 上传凭证
+ ( 最多可上传3张 )
+
+
+
+
+
+
+
+
+ 上传凭证
+
+
+
+
+ 申请退款
+
+
+
diff --git a/template/xcx/pages/goods_return/index.wxss b/template/xcx/pages/goods_return/index.wxss
new file mode 100644
index 000000000..246b5756b
--- /dev/null
+++ b/template/xcx/pages/goods_return/index.wxss
@@ -0,0 +1,19 @@
+.apply-return .list{background-color:#fff;margin-top:18rpx;}
+.apply-return .list .item{margin-left:30rpx;padding-right:30rpx;min-height:90rpx;border-bottom:1rpx solid #eee;font-size:30rpx;color:#333;}
+.apply-return .list .item .num{color:#282828;width:427rpx;text-align:right;}
+.apply-return .list .item .num .picker .reason{width:385rpx;}
+.apply-return .list .item .num .picker .iconfont{color:#666;font-size:30rpx;margin-top:2rpx;}
+.apply-return .list .item.textarea{padding:30rpx 30rpx 30rpx 0;}
+.apply-return .list .item textarea{height:100rpx;font-size:30rpx;}
+.apply-return .list .item .placeholder{color:#bbb;}
+.apply-return .list .item .title{height:95rpx;width:100%;}
+.apply-return .list .item .title .tip{font-size:30rpx;color:#bbb;}
+.apply-return .list .item .upload{padding-bottom:36rpx;}
+.apply-return .list .item .upload .pictrue{margin:22rpx 23rpx 0 0;width:156rpx;height:156rpx;position:relative;font-size:24rpx;color:#bbb;}
+.apply-return .list .item .upload .pictrue:nth-of-type(4n){margin-right:0;}
+.apply-return .list .item .upload .pictrue image{width:100%;height:100%;border-radius:3rpx;}
+.apply-return .list .item .upload .pictrue .icon-guanbi1{position:absolute;font-size:45rpx;top:-10rpx;right:-10rpx;}
+.apply-return .list .item .upload .pictrue .icon-icon25201{color:#bfbfbf;font-size:50rpx;}
+.apply-return .list .item .upload .pictrue:nth-last-child(1){border:1rpx solid #ddd;box-sizing:border-box;}
+.apply-return .returnBnt{font-size:32rpx;color:#fff;width:690rpx;height:86rpx;border-radius:50rpx;text-align:center;line-height:86rpx;margin:43rpx auto;}
+
diff --git a/template/xcx/pages/goods_search/index.js b/template/xcx/pages/goods_search/index.js
new file mode 100644
index 000000000..10d05b0b2
--- /dev/null
+++ b/template/xcx/pages/goods_search/index.js
@@ -0,0 +1,141 @@
+// pages/searchGood/index.js
+import { getSearchKeyword, getProductslist, getProductHot} from '../../api/store.js';
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '搜索商品',
+ 'color': false
+ },
+ host_product:[],
+ searchValue:'',
+ focus:true,
+ bastList:[],
+ hotSearchList:[],
+ limit: 8,
+ page:1,
+ loading:false,
+ loadend:false,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ getRoutineHotSearch: function () {
+ var that = this;
+ getSearchKeyword().then(res=>{
+ that.setData({ hotSearchList: res.data });
+ });
+ },
+ getProductList:function(){
+ var that = this;
+ if(this.data.loading) return;
+ if(this.data.loadend) return;
+ this.setData({loading:true,loadTitle:'正在搜索'});
+ getProductslist({
+ keyword: that.data.searchValue,
+ page: this.data.page,
+ limit: this.data.limit
+ }).then(res=>{
+ wx.hideLoading();
+ var list = res.data, loadend = list.length < that.data.limit;
+ that.data.bastList = app.SplitArray(list, that.data.bastList);
+ that.setData({
+ bastList: that.data.bastList,
+ loading: false,
+ loadend: loadend,
+ page: that.data.page + 1,
+ loadTitle: loadend ? '已全部加载' : '加载更多',
+ });
+ }).catch(err=>{
+ wx.hideLoading();
+ that.setData({ loading: false, loadTitle: "加载更多" });
+ });
+ },
+ getHostProduct: function () {
+ var that = this;
+ getProductHot().then(res=>{
+ that.setData({ host_product: res.data });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+ setHotSearchValue: function (event) {
+ this.setData({ searchValue: event.currentTarget.dataset.item });
+ this.getProductList();
+ },
+ setValue: function (event){
+ this.setData({ searchValue: event.detail.value});
+ },
+ searchBut:function(){
+ var that = this;
+ this.setData({ focus: false });
+ if (that.data.searchValue.length > 0){
+ that.setData({ page: 1, loadend: false, bastList:[]});
+ wx.showLoading({ title:'正在搜索中'});
+ that.getProductList();
+ }else{
+ return app.Tips({
+ title: '请输入要搜索的商品',
+ icon: 'none',
+ duration: 1000,
+ mask: true,
+ });
+ }
+ },
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ this.getRoutineHotSearch();
+ this.getHostProduct();
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getProductList();
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/goods_search/index.json b/template/xcx/pages/goods_search/index.json
new file mode 100644
index 000000000..77a964296
--- /dev/null
+++ b/template/xcx/pages/goods_search/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "goodList": "/components/goodList/index",
+ "recommend": "/components/recommend/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/goods_search/index.wxml b/template/xcx/pages/goods_search/index.wxml
new file mode 100644
index 000000000..8a0e6f81c
--- /dev/null
+++ b/template/xcx/pages/goods_search/index.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+ 搜索
+
+ 热门搜索
+
+
+ {{item}}
+
+
+
+
+
+ {{loadTitle}}
+
+
+
+
+
+
diff --git a/template/xcx/pages/goods_search/index.wxss b/template/xcx/pages/goods_search/index.wxss
new file mode 100644
index 000000000..756ff17ca
--- /dev/null
+++ b/template/xcx/pages/goods_search/index.wxss
@@ -0,0 +1,12 @@
+page{background-color:#fff!important;}
+.searchGood .search{padding-left:30rpx;}
+.searchGood .search{margin-top:20rpx;}
+.searchGood .search .input{width:598rpx;background-color:#f7f7f7;border-radius:33rpx;padding:0 35rpx;box-sizing:border-box;height:66rpx;}
+.searchGood .search .input input{width:472rpx;font-size:28rpx;}
+.searchGood .search .input .placeholder{color:#bbb;}
+.searchGood .search .input .iconfont{color:#000;font-size:35rpx;}
+.searchGood .search .bnt{width:120rpx;text-align:center;height:66rpx;line-height:66rpx;font-size:30rpx;color:#282828;}
+.searchGood .title{font-size:28rpx;color:#999;margin:50rpx 30rpx 25rpx 30rpx;}
+.searchGood .list{padding-left:10rpx;}
+.searchGood .list .item{font-size:26rpx;color:#454545;padding:0 21rpx;height:60rpx;border-radius:3rpx;line-height:60rpx;border:1rpx solid #aaa;margin:0 0 20rpx 20rpx;}
+.searchGood .line{border-bottom:1rpx solid #eee;margin:20rpx 30rpx 0 30rpx;}
diff --git a/template/xcx/pages/index/index.js b/template/xcx/pages/index/index.js
new file mode 100644
index 000000000..630ad14b3
--- /dev/null
+++ b/template/xcx/pages/index/index.js
@@ -0,0 +1,198 @@
+const app = getApp();
+
+import { getIndexData, getCoupons, getTemlIds, getLiveList} from '../../api/api.js';
+import { CACHE_SUBSCRIBE_MESSAGE } from '../../config.js';
+import Util from '../../utils/util.js';
+import wxh from '../../utils/wxh.js';
+Page({
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ imgUrls: [],
+ itemNew:[],
+ activityList:[],
+ menus: [],
+ bastBanner: [],
+ bastInfo: '',
+ bastList: [],
+ fastInfo: '',
+ fastList: [],
+ firstInfo: '',
+ firstList: [],
+ salesInfo: '',
+ likeInfo: [],
+ lovelyBanner: {},
+ benefit:[],
+ indicatorDots: false,
+ circular: true,
+ autoplay: true,
+ interval: 3000,
+ duration: 500,
+ parameter:{
+ 'navbar':'0',
+ 'return':'0'
+ },
+ window: false,
+ iShidden:false,
+ navH: "",
+ newGoodsBananr:'',
+ selfLongitude: '',
+ selfLatitude: '',
+ liveList: [],
+ liveInfo:{},
+ },
+ closeTip:function(){
+ wx.setStorageSync('msg_key',true);
+ this.setData({
+ iShidden:true
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ wxh.selfLocation(1);
+ this.setData({
+ navH: app.globalData.navHeight
+ });
+ if (options.spid) app.globalData.spid = options.spid;
+ if (options.scene) app.globalData.code = decodeURIComponent(options.scene);
+ if (wx.getStorageSync('msg_key')) this.setData({ iShidden:true});
+ this.getTemlIds();
+ this.getLiveList();
+ },
+ getLiveList:function(){
+ getLiveList(1,20).then(res=>{
+ if(res.data.length == 1){
+ this.setData({liveInfo:res.data[0]});
+ }else{
+ this.setData({liveList:res.data});
+ }
+ }).catch(res=>{
+
+ })
+ },
+ /**
+ * 商品详情跳转
+ */
+ goDetail: function (e) {
+ let item = e.currentTarget.dataset.items
+ if (item.activity && item.activity.type === "1") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_seckill_details/index?id=${item.activity.id}&time=${item.activity.time}&status=1`
+ });
+ } else if (item.activity && item.activity.type === "2") {
+ wx.navigateTo({ url: `/pages/activity/goods_bargain_details/index?id=${item.activity.id}` });
+ } else if (item.activity && item.activity.type === "3") {
+ wx.navigateTo({
+ url: `/pages/activity/goods_combination_details/index?id=${item.activity.id}`
+ });
+ } else {
+ wx.navigateTo({ url: `/pages/goods_details/index?id=${item.id}` });
+ }
+ },
+ getTemlIds(){
+ let messageTmplIds = wx.getStorageSync(CACHE_SUBSCRIBE_MESSAGE);
+ if (!messageTmplIds){
+ getTemlIds().then(res=>{
+ if (res.data)
+ wx.setStorageSync(CACHE_SUBSCRIBE_MESSAGE, JSON.stringify(res.data));
+ })
+ }
+ },
+ catchTouchMove: function (res) {
+ return false
+ },
+ onColse:function(){
+ this.setData({ window: false});
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ this.getIndexConfig();
+ if(app.globalData.isLog && app.globalData.token) this.get_issue_coupon_list();
+ },
+ get_issue_coupon_list:function(){
+ var that = this;
+ getCoupons({page:1,limit:3}).then(res=>{
+ that.setData({ couponList: res.data });
+ if (!res.data.length) that.setData({ window: false });
+ });
+ },
+ getIndexConfig:function(){
+ var that = this;
+ getIndexData().then(res=>{
+ that.setData({
+ imgUrls: res.data.banner,
+ menus: res.data.menus,
+ itemNew: res.data.roll,
+ activityList: res.data.activity,
+ bastBanner: res.data.info.bastBanner,
+ bastInfo: res.data.info.bastInfo,
+ bastList: res.data.info.bastList,
+ fastInfo: res.data.info.fastInfo,
+ fastList: res.data.info.fastList,
+ firstInfo: res.data.info.firstInfo,
+ firstList: res.data.info.firstList,
+ salesInfo: res.data.info.salesInfo,
+ likeInfo: res.data.likeInfo,
+ lovelyBanner: res.data.lovely.length ? res.data.lovely[0] : {},
+ benefit: res.data.benefit,
+ logoUrl: res.data.logoUrl,
+ couponList: res.data.couponList,
+ newGoodsBananr: res.data.newGoodsBananr
+ });
+ wx.getSetting({
+ success(res) {
+ if (!res.authSetting['scope.userInfo']) {
+ that.setData({ window: that.data.couponList.length ? true : false });
+ } else {
+ that.setData({ window: false, iShidden: true});
+ }
+ }
+ });
+ })
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({ window:false});
+ },
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+ this.getIndexConfig();
+ if (app.globalData.isLog && app.globalData.token) this.get_issue_coupon_list();
+ wx.stopPullDownRefresh();
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/index/index.json b/template/xcx/pages/index/index.json
new file mode 100644
index 000000000..d7d2e167d
--- /dev/null
+++ b/template/xcx/pages/index/index.json
@@ -0,0 +1,9 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "goodList": "/components/goodList/index",
+ "promotionGood": "/components/promotionGood/index",
+ "coupon-window": "/components/coupon-window/index",
+ "home": "/components/home/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/index/index.wxml b/template/xcx/pages/index/index.wxml
new file mode 100644
index 000000000..c22b55ced
--- /dev/null
+++ b/template/xcx/pages/index/index.wxml
@@ -0,0 +1,213 @@
+
+
+
+
+ 点击“ ”添加到我的小程序, 微信首页下拉即可访问商城。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
+
+
+ 最新
+ {{item.info}}
+
+
+
+
+
+ 最新
+ {{item.info}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+ {{item.info}}
+
+
+
+
+
+
+
+
+ {{item.title}}
+ {{item.info}}
+
+
+
+
+
+
+ 热门直播
+
+
+
+
+ 直播中
+ 已结束
+ 直播时间 {{liveInfo._start_time}}
+
+ {{liveInfo.name}}
+
+
+
+
+
+
+ 直播中
+ 已结束
+ 直播时间 {{item._start_time}}
+
+ {{item.name}}
+
+
+
+
+
+
+
+ 快速选择
+ {{fastInfo}}
+
+ 更多
+
+
+
+
+
+
+
+
+ {{item.cate_name}}
+
+
+
+
+
+
+
+
+ 精品推荐
+ {{bastInfo}}
+
+ 更多
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 热门榜单 根据销量、搜索、好评等综合得出
+ 更多
+
+
+
+
+
+
+
+
+
+
+
+ {{item.store_name}}
+ ¥{{item.price}}
+
+
+
+
+
+
+
+
+
+
+
+
+ 首发新品NEW~
+ {{firstInfo}}
+
+ 更多
+
+
+
+
+
+
+
+ 秒杀
+ 砍价
+ 拼团
+
+ {{item.store_name}}
+ ¥{{item.price}}
+
+
+
+
+
+
+
+
+ 促销单品
+ {{salesInfo}}
+
+ 更多
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/index/index.wxss b/template/xcx/pages/index/index.wxss
new file mode 100644
index 000000000..ed492938b
--- /dev/null
+++ b/template/xcx/pages/index/index.wxss
@@ -0,0 +1,105 @@
+page{background-color:#fff!important;}
+.index .indexTip{position:fixed;right:42rpx;z-index:9;}
+.index .indexTip .tip{width:400rpx;border-radius:6rpx;background-color:#fff;padding:15rpx 22rpx;position:relative;}
+.index .indexTip .tip::before{content: "";width: 0;height: 0;border-left:15rpx solid transparent;border-right:15rpx solid transparent;border-bottom:17rpx solid #fff;position:absolute;top:-14rpx;right:95rpx;}
+.index .indexTip .text{font-size:22rpx;color:#333;width:320rpx;}
+.index .indexTip .text image{width:30rpx;height:16rpx;display:inline-block;}
+.index .indexTip .iconfont{color:#cdcdcd;font-size:32rpx;}
+.index .index-bg{width:100%;height:375rpx;position:relative;}
+.index .index-bg swiper{width:100%;height:100%;position:relative;}
+.index .index-bg .slide-navigator{width:100%;height:100%;}
+.index .index-bg .slide-navigator .slide-image{width:100%;height:100%;}
+.index .index-bg .wx-swiper-dot{width:20rpx;height:5rpx;border-radius:3rpx;}
+.index .index-bg .wx-swiper-dots.wx-swiper-dots-horizontal{margin-bottom:5rpx;}
+.index .nav{padding-top:26rpx;}
+.index .nav .item{width:25%;text-align:center;font-size:26rpx;margin-bottom:35rpx;}
+.index .nav .item .pictrue{width:90rpx;height:90rpx;margin:0 auto 15rpx auto;}
+.index .nav .item .pictrue image{width:100%;height:100%;border-radius:50%;}
+.index .news{height:77rpx;border-top:1rpx solid #f4f4f4;padding:0 30rpx;box-shadow:0 10rpx 30rpx #f5f5f5;}
+.index .news .pictrue{width:124rpx;height:28rpx;border-right:1rpx solid #ddd;padding-right:23rpx;box-sizing: content-box;}
+.index .news .pictrue image{width:100%;height:100%;}
+.index .news .swiperTxt{width:523rpx;height:100%;line-height:77rpx;overflow:hidden;}
+.index .news .swiperTxt .text{width:480rpx;}
+.index .news .swiperTxt .text .label{font-size:20rpx;color:#ff4c48;width:64rpx;height:30rpx;border-radius:40rpx;text-align:center;line-height:28rpx;border:2rpx solid #ff4947;}
+.index .news .swiperTxt .text .newsTitle{width:397rpx;font-size:24rpx;color:#666;}
+.index .news .swiperTxt .iconfont{font-size:28rpx;color:#888;}
+.index .news .swiperTxt swiper{height:100%;}
+.index .specialArea{padding:30rpx;}
+.index .specialArea .assemble{width:260rpx;height:260rpx;position:relative;}
+.index .specialArea .assemble image{width:100%;height:100%;border-radius:5rpx;}
+.index .specialArea .assemble .text{position:absolute;top:37rpx;left:22rpx;}
+.index .specialArea .name{font-size:30rpx;color:#fff;}
+.index .specialArea .infor{font-size:22rpx;color:rgba(255, 255, 255, 0.8);margin-top:5rpx;}
+.index .specialArea .list{height:260rpx;width:416rpx;}
+.index .specialArea .item{width:100%;height:124rpx;position:relative;}
+.index .specialArea .item image{width:100%;height:100%;}
+.index .specialArea .item .text{position:absolute;top:23rpx;left:28rpx;}
+.index .wrapper .title{border-top:1rpx solid #eee;padding-top:34rpx;margin:0 30rpx;}
+.index .wrapper .title .text{font-size:24rpx;color:#999;width:530rpx;}
+.index .wrapper .title .text .name{color:#282828;font-size:30rpx;font-weight:bold;margin-bottom:5rpx;position:relative;}
+.index .wrapper .title .text .name .new{position:absolute;top:2rpx;left:130rpx;font-size:16rpx;font-weight:bold;}
+.index .wrapper .title .more{font-size:26rpx;color:#333;}
+.index .wrapper .title .more .iconfont{margin-left:9rpx;font-size:26rpx;vertical-align:3rpx;}
+.index .wrapper .scroll-product{white-space:nowrap;margin-top:38rpx;padding:0 30rpx 37rpx 30rpx;}
+.index .wrapper .scroll-product .item{width:180rpx;display:inline-block;margin-right:19rpx;border-bottom:4rpx solid #47b479;
+box-shadow: 0 40rpx 30rpx -10rpx #eee;}
+.index .wrapper .scroll-product .item:nth-of-type(3n){border-bottom:4rpx solid #ff6960;}
+.index .wrapper .scroll-product .item:nth-of-type(3n-1){border-bottom:4rpx solid #579afe;}
+.index .wrapper .scroll-product .item:nth-last-child(1){margin-right:0;}
+.index .wrapper .scroll-product .item .img-box{width:100%;height:180rpx;}
+.index .wrapper .scroll-product .item .img-box image{width:100%;height:100%;border-radius:6rpx 6rpx 0 0;}
+.index .wrapper .scroll-product .item .pro-info{font-size:24rpx;color:#282828;text-align:center;height:60rpx;line-height:60rpx;border:1rpx solid #f5f5f5;border-bottom:0;border-top:0;padding:0 10rpx;}
+.index .wrapper .boutique{width:690rpx;height:300rpx;margin:28rpx auto 0 auto;}
+.index .wrapper .boutique swiper{width:100%;height:100%;position:relative;}
+.index .wrapper .boutique image{width:100%;height:260rpx;}
+.index .wrapper .boutique .wx-swiper-dot{width:7rpx;height:7rpx;border-radius:50%;}
+.index .wrapper .boutique .wx-swiper-dot-active{width:20rpx;border-radius:5rpx;}
+.index .wrapper .boutique .wx-swiper-dots.wx-swiper-dots-horizontal{margin-bottom:-8rpx;}
+.index .hotList .hot-bg{width:100%;height:215rpx;background-image:url('data:image/png;base64,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');background-repeat:no-repeat;background-size:100% 100%;padding:0 30rpx;box-sizing:border-box;font-size:24rpx;color:#fff;margin-top:15rpx;}
+.index .hotList .hot-bg .title{height:87rpx;}
+.index .hotList .hot-bg .title .text{width:575rpx;}
+.index .hotList .hot-bg .title .text .label{font-size:30rpx;font-weight:bold;margin-right:20rpx;}
+.index .hotList .hot-bg .title .more{font-size:26rpx;}
+.index .hotList .hot-bg .title .more .iconfont{font-size:25rpx;vertical-align:2rpx;
+margin-left:10rpx;}
+.index .hotList .list{width:690rpx;height:330rpx;border-radius:20rpx;background-color:#fff;margin:-128rpx auto 0 auto;padding:0 22rpx;box-sizing:border-box;box-shadow: 0 0 30rpx -10rpx #aaa;}
+.index .hotList .list .item{width:200rpx;}
+.index .hotList .list .item~.item{margin-left:22rpx;}
+.index .hotList .list .item .pictrue{width:100%;height:200rpx;position:relative;}
+.index .hotList .list .item .pictrue image{width:100%;height:100%;border-radius:10rpx;}
+.index .hotList .list .item .pictrue .numPic{width:50rpx;height:50rpx;border-radius:50%;position:absolute;top:7rpx;left:7rpx;}
+.index .hotList .list .item .name{font-size:26rpx;color:#282828;margin-top:12rpx;}
+.index .hotList .list .item .money{font-size:20rpx;font-weight:bold;margin-top:4rpx;}
+.index .hotList .list .item .money .num{font-size:28rpx;}
+.index .adver{width:100%;height:180rpx;margin-top:37rpx;}
+.index .adver image{width:100%;height:100%;}
+.index .wrapper .newProducts{white-space:nowrap;padding:0 30rpx;margin:35rpx 0 42rpx 0;}
+.index .wrapper .newProducts .item{display:inline-block;width:240rpx;margin-right:20rpx;border:1rpx solid #eee;border-radius:12rpx;}
+.index .wrapper .newProducts .item:nth-last-child(1){margin-right:0;}
+.index .wrapper .newProducts .item .img-box{width:100%;height:240rpx;position: relative;}
+.index .wrapper .newProducts .item .img-box image{width:100%;height:100%;border-radius:12rpx 12rpx 0 0;}
+.index .wrapper .newProducts .item .pro-info{font-size:28rpx;color:#333;text-align:center;padding:19rpx 10rpx 0 10rpx;}
+.index .wrapper .newProducts .item .money{padding:0 10rpx 18rpx 10rpx;text-align:center;font-size:26rpx;font-weight:bold;}
+.index .liveBroadcast .title{font-size:30rpx;color:#282828;font-weight:600;padding:0 30rpx;}
+.index .liveBroadcast .list{white-space:nowrap;margin-top:25rpx;}
+.index .liveBroadcast .list .item{width:320rpx;display:inline-block;margin-right:20rpx;}
+.index .liveBroadcast .list .item .pictrue{width:100%;height:180rpx;border-radius:10rpx;position:relative;}
+.index .liveBroadcast .list .item:nth-of-type(1){margin-left:30rpx;}
+.index .liveBroadcast .list .item image{width:100%;height:100%;border-radius:10rpx;display:block;}
+.index .liveBroadcast .list .item .label{background:linear-gradient(270deg,rgba(255,85,85,1) 0%,rgba(255,0,0,1) 100%);border-radius:10rpx 0 10rpx 0;height:36rpx;line-height:36rpx;position:absolute;top:0;left:0;color:#fff;font-size:22rpx;padding:0 15rpx;}
+.index .liveBroadcast .list .item .label .iconfont{font-size:25rpx;margin-right:7rpx;}
+.index .liveBroadcast .list .item.end .label{background:linear-gradient(270deg,rgba(153,153,153,1) 0%,rgba(102,102,102,1) 100%);}
+.index .liveBroadcast .list .item.time .label{background:linear-gradient(315deg,rgba(24,192,244,1) 0%,rgba(26,163,246,1) 100%);}
+.index .liveBroadcast .list .item .text{font-size:30rpx;color:#000;margin:16rpx 0 39rpx 0;}
+.index .liveBroadcast .broadcast{width:690rpx;margin:25rpx auto 0 auto;}
+.index .liveBroadcast .broadcast .pictrue{width:100%;height:390rpx;border-radius:10rpx;position:relative;}
+.index .liveBroadcast .broadcast .pictrue image{width:100%;height:100%;border-radius:10rpx;display:block;}
+.index .liveBroadcast .broadcast .pictrue .label{position:absolute;top:0;left:0;height:44rpx;border-radius:10rpx 0 10rpx 0;background:linear-gradient(270deg,rgba(255,85,85,1) 0%,rgba(255,0,0,1) 100%);color:#fff;font-size:24rpx;line-height:44rpx;padding:0 15rpx;}
+.index .liveBroadcast .broadcast .pictrue .label .iconfont{font-size:30rpx;margin-right:12rpx;}
+.index .liveBroadcast .broadcast .text{font-size:30rpx;color:#000;margin:18rpx 0 39rpx 0;}
+.index .liveBroadcast .broadcast.end .label{background:linear-gradient(270deg,rgba(153,153,153,1) 0%,rgba(102,102,102,1) 100%);}
+.index .liveBroadcast .broadcast.time .label{background:linear-gradient(315deg,rgba(24,192,244,1) 0%,rgba(26,163,246,1) 100%);}
+
+
+
+
diff --git a/template/xcx/pages/news_details/index.js b/template/xcx/pages/news_details/index.js
new file mode 100644
index 000000000..e3ba6f5db
--- /dev/null
+++ b/template/xcx/pages/news_details/index.js
@@ -0,0 +1,93 @@
+import wxParse from '../../wxParse/wxParse.js';
+import { getArticleDetails } from '../../api/api.js';
+
+const app = getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '新闻详情',
+ 'color': false
+ },
+ id:0,
+ articleInfo:[],
+ store_info:{},
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (options.hasOwnProperty('id')){
+ this.setData({ id: options.id});
+ }else{
+ wx.navigateBack({delta: 1 });
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ this.getArticleOne();
+ },
+ getArticleOne:function(){
+ var that = this;
+ getArticleDetails(that.data.id).then(res=>{
+ that.setData({ 'parameter.title': res.data.title, articleInfo: res.data, store_info: res.data.store_info ? res.data.store_info : {} });
+ //html转wxml
+ wxParse.wxParse('content', 'html', res.data.content, that, 0);
+ });
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+ return {
+ title: this.data.parameter.title,
+ path: '/pages/news_details/index?id=' + this.data.id,
+ imageUrl: this.data.articleInfo.image_input.length ? this.data.articleInfo.image_input[0] : '',
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/news_details/index.json b/template/xcx/pages/news_details/index.json
new file mode 100644
index 000000000..6ad84505f
--- /dev/null
+++ b/template/xcx/pages/news_details/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "home": "/components/home/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/news_details/index.wxml b/template/xcx/pages/news_details/index.wxml
new file mode 100644
index 000000000..856813d91
--- /dev/null
+++ b/template/xcx/pages/news_details/index.wxml
@@ -0,0 +1,25 @@
+
+
+ {{articleInfo.title}}
+
+ {{articleInfo.cart_name}}
+ {{articleInfo.add_time}}
+
+
+
+
+
+
+
+ {{store_info.store_name}}
+
+ ¥{{store_info.price}}
+
+ ¥{{store_info.ot_price}}
+
+ 查看商品
+
+ 和好友一起分享
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/news_details/index.wxss b/template/xcx/pages/news_details/index.wxss
new file mode 100644
index 000000000..2293c641b
--- /dev/null
+++ b/template/xcx/pages/news_details/index.wxss
@@ -0,0 +1,26 @@
+page{background-color:#fff!important;}
+.newsDetail .title{padding:0 30rpx;font-size:44rpx;color:#282828;font-weight:bold;margin:45rpx 0 30rpx 0;line-height:1.5;}
+.newsDetail .list{margin:0 30rpx;padding-bottom:30rpx;}
+.newsDetail .list .label{font-size:30rpx;color:#B1B2B3;}
+.newsDetail .list .item{margin-left:27rpx;font-size:30rpx;color:#B1B2B3;}
+.newsDetail .list .item .iconfont{font-size:28rpx;margin-right:10rpx;}
+.newsDetail .list .item .iconfont.icon-shenhezhong{font-size:26rpx;}
+.newsDetail .conter{padding:0 30rpx;font-size:32rpx;color:#8A8B8C;line-height:1.7;word-wrap: break-word;word-break: normal;}
+.newsDetail .picTxt {width: 690rpx;height: 200rpx;border-radius: 20rpx;border: 1px solid #e1e1e1;position: relative;margin: 30rpx auto 0 auto;}
+.newsDetail .picTxt .pictrue {width: 200rpx;height:100%;}
+.newsDetail .picTxt .pictrue image {width: 100%;height: 100%;border-radius: 20rpx 0 0 20rpx;
+ display: block;}
+.newsDetail .picTxt .text {width: 460rpx;}
+.newsDetail .picTxt .text .name {font-size: 30rpx;color: #282828;}
+.newsDetail .picTxt .text .money {font-size: 24rpx;margin-top: 40rpx;font-weight: bold;}
+.newsDetail .picTxt .text .money .num {font-size: 36rpx;}
+.newsDetail .picTxt .text .y_money {font-size: 26rpx;color: #999;text-decoration: line-through;}
+.newsDetail .picTxt .label {position: absolute;background-color: #303131;width:160rpx;
+ height: 50rpx;right:-7rpx;border-radius: 25rpx 0 6rpx 25rpx;text-align: center;
+ line-height: 50rpx;bottom: 24rpx;}
+.newsDetail .picTxt .label .span {background-image: linear-gradient(to right, #fff71e 0%, #f9b513 100%);-webkit-background-clip: text;-webkit-text-fill-color: transparent;}
+.newsDetail .picTxt .label:after {content: " ";position: absolute;width: 0;height: 0;
+ border-bottom: 8rpx solid #303131;border-right: 8rpx solid transparent;top: -7rpx;
+ right: 0;}
+.newsDetail .bnt {color: #fff;font-size: 30rpx;width: 690rpx;height: 90rpx;border-radius: 45rpx;margin: 48rpx auto 30rpx auto;text-align: center;line-height: 90rpx;}
+@import "/wxParse/wxParse.wxss";
\ No newline at end of file
diff --git a/template/xcx/pages/news_list/index.js b/template/xcx/pages/news_list/index.js
new file mode 100644
index 000000000..85189fd14
--- /dev/null
+++ b/template/xcx/pages/news_list/index.js
@@ -0,0 +1,138 @@
+import { getArticleCategoryList, getArticleList, getArticleHotList, getArticleBannerList} from '../../api/api.js';
+
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '资讯',
+ 'color': false
+ },
+ imgUrls: [],
+ articleList:[],
+ indicatorDots: false,
+ circular: true,
+ autoplay: true,
+ interval: 3000,
+ duration: 500,
+ navList:[],
+ active: 0,
+ page:1,
+ limit:8,
+ status:false,
+ scrollLeft: 0
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ getArticleHot: function () {
+ var that = this;
+ getArticleHotList().then(res=>{
+ that.setData({ articleList: res.data });
+ });
+ },
+ getArticleBanner: function () {
+ var that = this;
+ getArticleBannerList().then(res=>{
+ that.setData({ imgUrls: res.data });
+ });
+ },
+ getCidArticle: function () {
+ var that = this;
+ if (that.data.active == 0) return ;
+ var limit = that.data.limit;
+ var page = that.data.page;
+ var articleList = that.data.articleList;
+ if (that.data.status) return ;
+ getArticleList(that.data.active, { page: page, limit: limit}).then(res=>{
+ var articleListNew = [];
+ var len = res.data.length;
+ articleListNew = articleList.concat(res.data);
+ that.data.page++
+ that.setData({
+ articleList: articleListNew,
+ status: limit > len,
+ page: that.data.page,
+ });
+ });
+ },
+ getArticleCate:function(){
+ var that = this;
+ getArticleCategoryList().then(res=>{
+ that.setData({ navList: res.data });
+ });
+ },
+ tabSelect(e) {
+ this.setData({
+ active: e.currentTarget.dataset.id,
+ scrollLeft: (e.currentTarget.dataset.id - 1) * 50
+ })
+ if (this.data.active == 0) this.getArticleHot();
+ else{
+ this.setData({ articleList: [], page: 1, status: false});
+ this.getCidArticle();
+ }
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ this.getArticleHot();
+ this.getArticleBanner();
+ this.getArticleCate();
+ this.setData({ status: false, page: 1, articleList:[]});
+ this.getCidArticle();
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getCidArticle();
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/news_list/index.json b/template/xcx/pages/news_list/index.json
new file mode 100644
index 000000000..6ad84505f
--- /dev/null
+++ b/template/xcx/pages/news_list/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "home": "/components/home/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/news_list/index.wxml b/template/xcx/pages/news_list/index.wxml
new file mode 100644
index 000000000..84479c6a1
--- /dev/null
+++ b/template/xcx/pages/news_list/index.wxml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+ {{item.add_time}}
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+ {{item.add_time}}
+
+
+ {{item.title}}
+
+
+
+
+
+ {{item.add_time}}
+
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/news_list/index.wxss b/template/xcx/pages/news_list/index.wxss
new file mode 100644
index 000000000..d798e1393
--- /dev/null
+++ b/template/xcx/pages/news_list/index.wxss
@@ -0,0 +1,21 @@
+page{background-color:#fff!important;}
+.newsList .swiper{width:100%;position:relative;box-sizing:border-box;padding:0 30rpx;}
+.newsList .swiper swiper{width:100%;height:365rpx;position:relative;}
+.newsList .swiper .slide-image{width:100%;height:330rpx;border-radius:6rpx;}
+.newsList .swiper .wx-swiper-dot{width:12rpx;height:12rpx;border-radius:0;transform: rotate(-45deg);transform-origin: 0 100%;}
+.newsList .swiper .wx-swiper-dot~.wx-swiper-dot{margin-left:5rpx;}
+.newsList .swiper .wx-swiper-dots.wx-swiper-dots-horizontal{margin-bottom:-20rpx;}
+.newsList .nav{padding:0 30rpx;width:100%;white-space:nowrap;box-sizing:border-box;margin-top:43rpx;}
+.newsList .nav .item{display:inline-block;font-size:32rpx;color:#999;}
+.newsList .nav .item.on{color:#282828;}
+.newsList .nav .item~.item{margin-left:46rpx;}
+.newsList .nav .item .line{width:24rpx;height:4rpx;border-radius:2rpx;margin:10rpx auto 0 auto;}
+.newsList .list .item{margin:0 30rpx;border-bottom:1rpx solid #f0f0f0;padding:35rpx 0;}
+.newsList .list .item .pictrue{width:250rpx;height:156rpx;}
+.newsList .list .item .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.newsList .list .item .text{width:420rpx;height:156rpx;font-size:24rpx;color:#999;}
+.newsList .list .item .text .name{font-size:30rpx;color:#282828;}
+.newsList .list .item .picList .pictrue{width:335rpx;height:210rpx;margin-top:30rpx;}
+.newsList .list .item .picList.on .pictrue{width:217rpx;height:136rpx;}
+.newsList .list .item .picList .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.newsList .list .item .time{text-align:right;font-size:24rpx;color:#999;margin-top:22rpx;}
diff --git a/template/xcx/pages/order_addcart/order_addcart.js b/template/xcx/pages/order_addcart/order_addcart.js
new file mode 100644
index 000000000..c59c3379d
--- /dev/null
+++ b/template/xcx/pages/order_addcart/order_addcart.js
@@ -0,0 +1,344 @@
+
+import { getCartList, getCartCounts, changeCartNum, cartDel} from '../../api/order.js';
+import { getProductHot, collectAll } from '../../api/store.js';
+
+const app = getApp();
+const util = require('../../utils/util.js');
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '0',
+ 'title': '购物车',
+ 'color': false
+ },
+ navH: 0,
+ cartCount:0,
+ goodsHidden:true,
+ footerswitch: true,
+ host_product: [],
+ cartList:[],
+ isAllSelect:false,//全选
+ selectValue:[],//选中的数据
+ selectCountPrice:0.00,
+ isGoIndex: true,
+ iShidden: false,
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ var that = this;
+ that.setData({
+ navH: app.globalData.navHeight
+ });
+ if (app.globalData.token) that.setData({ iShidden:true});
+ },
+ /**
+ * input阻止冒泡
+ *
+ */
+ proventD: function () { },
+ /**
+ * 手动输入数量失焦事件
+ */
+ inputBlur(e) {
+ if (e.detail.value < 1) {
+ let index = e.currentTarget.dataset.index;
+ let item = this.data.cartList.valid[index];
+ item.cart_num = 1;
+ if (item.cart_num) this.setCartNum(item.id, item.cart_num);
+ let itemData = "cartList.valid[" + index + "]";
+ this.setData({ [itemData]: item });
+ this.switchSelect();
+ }
+ },
+ /**
+ * 关闭授权
+ *
+ */
+ onCloseAuto: function () {
+ this.setData({ iShidden: true });
+ },
+ subDel:function (event) {
+ let that = this, selectValue = that.data.selectValue;
+ if (selectValue.length > 0)
+ cartDel(selectValue).then(res=>{
+ that.getCartList();
+ that.getCartNum();
+ });
+ else
+ return app.Tips({ title:'请选择产品'});
+ },
+ getSelectValueProductId:function(){
+ var that = this;
+ var validList = that.data.cartList.valid;
+ var selectValue = that.data.selectValue;
+ var productId = [];
+ if (selectValue.length > 0){ for (var index in validList){if(that.inArray(validList[index].id, selectValue)) { productId.push(validList[index].product_id);}}};
+ return productId;
+ },
+ subCollect: function (event){
+ let that = this, selectValue = that.data.selectValue;
+ if (selectValue.length > 0) {
+ var selectValueProductId = that.getSelectValueProductId();
+ collectAll(that.getSelectValueProductId().join(',')).then(res=>{
+ return app.Tips({title:res.msg,icon:'success'});
+ }).catch(err=>{
+ return app.Tips({ title: err });
+ });
+ } else {
+ return app.Tips({ title:'请选择产品'});
+ }
+ },
+ subOrder: function (event){
+ let that = this, selectValue = that.data.selectValue;
+ if (selectValue.length > 0){
+ wx.navigateTo({url:'/pages/order_confirm/index?cartId=' + selectValue.join(',')});
+ }else{
+ return app.Tips({ title:'请选择产品'});
+ }
+ },
+ checkboxAllChange: function (event){
+ var value = event.detail.value;
+ if (value.length > 0) { this.setAllSelectValue(1)}
+ else { this.setAllSelectValue(0) }
+ },
+ setAllSelectValue:function(status){
+ var that = this;
+ var selectValue = [];
+ var valid = that.data.cartList.valid;
+ if (valid.length > 0) {
+ for (var index in valid) {
+ if (status == 1){
+ valid[index].checked = true;
+ selectValue.push(valid[index].id);
+ }else valid[index].checked = false;
+ }
+ var validData = "cartList.valid";
+ that.setData({
+ [validData]: valid,
+ selectValue: selectValue,
+ });
+ that.switchSelect();
+ }
+ },
+ checkboxChange: function (event){
+ var that = this;
+ var value = event.detail.value;
+ var valid = this.data.cartList.valid;
+ for (var index in valid){
+ if (that.inArray(valid[index].id, value)) valid[index].checked = true;
+ else valid[index].checked = false;
+ }
+ var validData = "cartList.valid";
+ this.setData({
+ [validData]: valid,
+ isAllSelect: value.length == this.data.cartList.valid.length,
+ selectValue: value,
+ })
+ this.switchSelect();
+ },
+ inArray:function(search, array){
+ for (var i in array) { if (array[i] == search) { return true; } }
+ return false;
+ },
+ switchSelect:function(){
+ var that = this;
+ var validList = that.data.cartList.valid;
+ var selectValue = that.data.selectValue;
+ var selectCountPrice = 0.00;
+ if (selectValue.length < 1) { that.setData({ selectCountPrice: selectCountPrice }); }
+ else{
+ for (var index in validList){
+ if (that.inArray(validList[index].id, selectValue)){
+ selectCountPrice = Number(selectCountPrice) + Number(validList[index].cart_num) * Number(validList[index].truePrice)
+ }
+ }
+ that.setData({ selectCountPrice: selectCountPrice.toFixed(2) });
+ }
+ },
+ subCart:function(event){
+ var that = this;
+ var status = false;
+ var index = event.currentTarget.dataset.index;
+ var item = that.data.cartList.valid[index];
+ item.cart_num = item.cart_num - 1;
+ if (item.cart_num < 1) status = true;
+ if (item.cart_num <= 1) {
+ item.cart_num = 1;
+ item.numSub = true;
+ } else { item.numSub = false;item.numAdd = false; }
+ if (false == status) {
+ that.setCartNum(item.id, item.cart_num, function (data) {
+ var itemData = "cartList.valid[" + index + "]";
+ that.setData({ [itemData]: item });
+ that.switchSelect();
+ });
+ }
+ },
+ /**
+ * 购物车手动填写
+ *
+ */
+ iptCartNum: function (e) {
+ let index = e.currentTarget.dataset.index;
+ let item = this.data.cartList.valid[index];
+ item.cart_num = e.detail.value;
+ if (item.cart_num) this.setCartNum(item.id, item.cart_num);
+ let itemData = "cartList.valid[" + index + "]";
+ this.setData({ [itemData]: item });
+ this.switchSelect();
+ },
+ addCart: function (event) {
+ var that = this;
+ var index = event.currentTarget.dataset.index;
+ var item = that.data.cartList.valid[index];
+ item.cart_num = parseInt(item.cart_num) + 1;
+ var productInfo = item.productInfo;
+ if (productInfo.hasOwnProperty('attrInfo') && item.cart_num >= item.productInfo.attrInfo.stock) {
+ item.cart_num = item.productInfo.attrInfo.stock;
+ item.numAdd = true;
+ item.numSub = false;
+ } else if (item.cart_num >= item.productInfo.stock) {
+ item.cart_num = item.productInfo.stock;
+ item.numAdd = true;
+ item.numSub = false;
+ } else { item.numAdd = false; item.numSub = false; }
+ that.setCartNum(item.id, item.cart_num, function (data) {
+ var itemData = "cartList.valid[" + index + "]";
+ that.setData({ [itemData]: item });
+ that.switchSelect();
+ });
+ },
+ setCartNum(cartId, cartNum, successCallback) {
+ var that = this;
+ changeCartNum(cartId, cartNum).then(res=>{
+ successCallback && successCallback(res.data);
+ });
+ },
+ getCartNum: function () {
+ var that = this;
+ getCartCounts().then(res=>{
+ that.setData({ cartCount: res.data.count });
+ });
+ },
+ getCartList: function () {
+ var that = this;
+ getCartList().then(res=>{
+ var cartList = res.data;
+ var valid = cartList.valid;
+ var numSub = [{ numSub: true }, { numSub: false }];
+ var numAdd = [{ numAdd: true }, { numAdd: false }], selectValue = [];;
+ if (valid.length > 0) {
+ for (var index in valid) {
+ if (valid[index].cart_num == 1) { valid[index].numSub = true; }
+ else { valid[index].numSub = false; }
+ var productInfo = valid[index].productInfo;
+ if (productInfo.hasOwnProperty('attrInfo') && valid[index].cart_num == valid[index].productInfo.attrInfo.stock) {
+ valid[index].numAdd = true;;
+ } else if (valid[index].cart_num == valid[index].productInfo.stock) {
+ valid[index].numAdd = true;;
+ } else { valid[index].numAdd = false; }
+ valid[index].checked = true;
+ selectValue.push(valid[index].id);
+ }
+ }
+ that.setData({
+ cartList: cartList,
+ goodsHidden: cartList.valid.length <= 0 ? false : true,
+ selectValue: selectValue,
+ isAllSelect: valid.length == selectValue.length && valid.length
+ });
+ that.switchSelect();
+ });
+ },
+ getHostProduct: function () {
+ var that = this;
+ getProductHot().then(res=>{
+ that.setData({ host_product: res.data });
+ });
+ },
+ goodsOpen:function(){
+ var that = this;
+ that.setData({
+ goodsHidden: !that.data.goodsHidden
+ })
+ },
+ manage:function(){
+ var that = this;
+ that.setData({
+ footerswitch: !that.data.footerswitch
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+ onLoadFun: function () {
+ this.getHostProduct();
+ this.getCartList();
+ this.getCartNum();
+ },
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if (app.globalData.isLog == true) {
+ this.getHostProduct();
+ this.getCartList();
+ this.getCartNum();
+ this.setData({
+ goodsHidden: true,
+ footerswitch: true,
+ host_product: [],
+ cartList: [],
+ isAllSelect: false,//全选
+ selectValue: [],//选中的数据
+ selectCountPrice: 0.00,
+ cartCount: 0,
+ iShidden:true
+ });
+ }
+ },
+ unsetCart:function(){
+ let that=this,ids=[];
+ for (var i = 0, len = that.data.cartList.invalid.length;i < len;i++){
+ ids.push(that.data.cartList.invalid[i].id);
+ }
+ cartDel(ids).then(res=>{
+ app.Tips({ title: '清除成功' });
+ that.setData({ 'cartList.invalid': [] });
+ }).catch(res=>{
+
+ });
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/order_addcart/order_addcart.json b/template/xcx/pages/order_addcart/order_addcart.json
new file mode 100644
index 000000000..3d8369c79
--- /dev/null
+++ b/template/xcx/pages/order_addcart/order_addcart.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "recommend": "/components/recommend/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/order_addcart/order_addcart.wxml b/template/xcx/pages/order_addcart/order_addcart.wxml
new file mode 100644
index 000000000..83cb46715
--- /dev/null
+++ b/template/xcx/pages/order_addcart/order_addcart.wxml
@@ -0,0 +1,95 @@
+
+
+
+ 100%正品保证
+ 所有商品精挑细选
+ 售后无忧
+
+
+ 购物数量 {{cartCount}}
+ {{ footerswitch ? '管理' : '取消'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.productInfo.store_name}}
+ 属性:{{item.productInfo.attrInfo.suk}}
+ ¥{{item.truePrice}}
+
+
+ -
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ 失效商品
+ 清空
+
+
+
+
+ 失效
+
+
+
+
+
+ {{item.productInfo.store_name}}
+ 属性:{{item.productInfo.attrInfo.suk}}
+
+ ¥{{item.truePrice}}
+ 该商品已失效
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/order_addcart/order_addcart.wxss b/template/xcx/pages/order_addcart/order_addcart.wxss
new file mode 100644
index 000000000..9599c0ced
--- /dev/null
+++ b/template/xcx/pages/order_addcart/order_addcart.wxss
@@ -0,0 +1,44 @@
+.shoppingCart .labelNav{height:76rpx;padding:0 30rpx;font-size:22rpx;color:#8c8c8c;position:fixed;left:0;width:100%;box-sizing:border-box;background-color:#f5f5f5;z-index:5;}
+.shoppingCart .labelNav .item .iconfont{font-size:25rpx;margin-right:10rpx;}
+.shoppingCart .nav{width:100%;height:80rpx;background-color:#fff;padding:0 30rpx;box-sizing:border-box;font-size:28rpx;color:#282828;position:fixed;left:0;z-index:5;}
+.shoppingCart .nav .administrate{font-size:26rpx;color:#282828;width:110rpx;height:46rpx;border-radius:6rpx;border:1px solid #868686;}
+.shoppingCart .noCart{margin-top:171rpx;background-color:#fff;padding-top: 0.1rpx;}
+.shoppingCart .noCart .pictrue{width:414rpx;height:336rpx;margin:78rpx auto 56rpx auto;}
+.shoppingCart .noCart .pictrue image{width:100%;height:100%;}
+.shoppingCart .list{margin-top:171rpx;}
+.shoppingCart .list .item{padding:25rpx 30rpx;background-color:#fff;margin-bottom:15rpx;}
+.shoppingCart .list .item .picTxt{width:627rpx;position:relative;}
+.shoppingCart .list .item .picTxt .pictrue{width:160rpx;height:160rpx;}
+.shoppingCart .list .item .picTxt .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.shoppingCart .list .item .picTxt .text{width:444rpx;font-size:28rpx;color:#282828;}
+.shoppingCart .list .item .picTxt .text .infor{font-size:24rpx;color:#868686;margin-top:16rpx;}
+.shoppingCart .list .item .picTxt .text .money{font-size:32rpx;color:#282828;margin-top:28rpx;}
+.shoppingCart .list .item .picTxt .carnum{height:47rpx;position:absolute;bottom:7rpx;right:0;}
+.shoppingCart .list .item .picTxt .carnum view{border:1rpx solid #a4a4a4;width:66rpx;text-align:center;height:100%;line-height:40rpx;font-size:28rpx;color:#a4a4a4;}
+.shoppingCart .list .item .picTxt .carnum .reduce{border-right:0;border-radius:3rpx 0 0 3rpx;}
+.shoppingCart .list .item .picTxt .carnum .reduce.on{border-color:#e3e3e3;color:#dedede;}
+.shoppingCart .list .item .picTxt .carnum .plus{border-left:0;border-radius:0 3rpx 3rpx 0;}
+.shoppingCart .list .item .picTxt .carnum .num{color:#282828;}
+.shoppingCart .invalidGoods{background-color:#fff;}
+.shoppingCart .invalidGoods .goodsNav{width:100%;height:66rpx;padding:0 30rpx;box-sizing:border-box;font-size:28rpx;color:#282828;}
+.shoppingCart .invalidGoods .goodsNav .iconfont{color:#424242;font-size:28rpx;margin-right:17rpx;}
+.shoppingCart .invalidGoods .goodsNav .del{font-size:26rpx;color:#999;}
+.shoppingCart .invalidGoods .goodsNav .del .icon-shanchu1{color:#999;font-size:33rpx;vertical-align:-2rpx;margin-right:8rpx;}
+.shoppingCart .invalidGoods .goodsList .item{padding:20rpx 30rpx;border-top:1rpx solid #f5f5f5;}
+.shoppingCart .invalidGoods .goodsList .item .invalid{font-size:22rpx;color:#fff;width:70rpx;height:36rpx;background-color:#aaa;border-radius:3rpx;text-align:center;line-height:36rpx;}
+.shoppingCart .invalidGoods .goodsList .item .pictrue{width:140rpx;height:140rpx;}
+.shoppingCart .invalidGoods .goodsList .item .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.shoppingCart .invalidGoods .goodsList .item .text{width:433rpx;font-size:28rpx;color:#999;height:140rpx;}
+.shoppingCart .invalidGoods .goodsList .item .text .infor{font-size:24rpx;}
+.shoppingCart .invalidGoods .goodsList .item .text .end{font-size:26rpx;color:#bbb;}
+.shoppingCart .footer{width:100%;height:96rpx;background-color:#fafafa;position:fixed;bottom:0;padding:0 30rpx;box-sizing:border-box;border-top:1rpx solid #eee;}
+.shoppingCart .footer .checkAll{font-size:28rpx;color:#282828;margin-left:16rpx;}
+.shoppingCart .footer checkbox .wx-checkbox-input{background-color:#fafafa;}
+.shoppingCart .footer .money{font-size:30rpx;}
+.shoppingCart .footer .placeOrder{color:#fff;font-size:30rpx;width:226rpx;height:70rpx;border-radius:50rpx;text-align:center;line-height:70rpx;margin-left:22rpx;}
+.shoppingCart .footer .button .bnt{font-size:28rpx;color:#999;border-radius:50rpx;border:1px solid #999;width:160rpx;height:60rpx;text-align:center;line-height:60rpx;}
+.shoppingCart .footer .button form~form{margin-left:17rpx;}
+
+
+
+
diff --git a/template/xcx/pages/order_cancellation/index.js b/template/xcx/pages/order_cancellation/index.js
new file mode 100644
index 000000000..5fd7160fb
--- /dev/null
+++ b/template/xcx/pages/order_cancellation/index.js
@@ -0,0 +1,82 @@
+// pages/order_cancellation/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '订单核销',
+ 'color': true,
+ 'class': '4'
+ },
+ iShidden:false
+ },
+ audit:function(){
+ this.setData({
+ iShidden:true
+ })
+ },
+ cancel:function(res){
+ this.setData({
+ iShidden: res.detail
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/order_cancellation/index.json b/template/xcx/pages/order_cancellation/index.json
new file mode 100644
index 000000000..9b52106fc
--- /dev/null
+++ b/template/xcx/pages/order_cancellation/index.json
@@ -0,0 +1,7 @@
+{
+ "navigationBarTextStyle": "white",
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "write-off": "/components/write-off/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/order_cancellation/index.wxml b/template/xcx/pages/order_cancellation/index.wxml
new file mode 100644
index 000000000..514dd54d5
--- /dev/null
+++ b/template/xcx/pages/order_cancellation/index.wxml
@@ -0,0 +1,11 @@
+
+
+
+
+
+ 立即核销
+
+
+
+
+
diff --git a/template/xcx/pages/order_cancellation/index.wxss b/template/xcx/pages/order_cancellation/index.wxss
new file mode 100644
index 000000000..8b2827ea9
--- /dev/null
+++ b/template/xcx/pages/order_cancellation/index.wxss
@@ -0,0 +1,11 @@
+page{background-color:#fff!important;}
+.OrderCancellation .header {background: url("data:image/jpeg;base64,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") no-repeat;
+ width: 100%;height: 300rpx;background-size: 100% 100%;}
+.OrderCancellation .whiteBg {width: 690rpx;background-color: #fff; margin: -93rpx auto 0 auto;padding-top: 80rpx;border-radius: 6rpx 6rpx 0 0;}
+.OrderCancellation .whiteBg .input {width: 580rpx;margin: 0 auto;border-bottom: 1px solid #eee;}
+.OrderCancellation .whiteBg .input input {padding-bottom: 25rpx;font-size: 60rpx;
+ color: #282828;width: 100%;text-align: center;height:75rpx;line-height:75rpx;}
+.OrderCancellation .whiteBg .bnt {font-size: 32rpx;color: #fff;width: 580rpx;
+ height: 86rpx;border-radius: 43rpx;background-image: linear-gradient(to right, #f67a38 0%, #f11b09 100%);text-align: center;line-height: 86rpx;margin: 55rpx auto 0 auto;}
+.OrderCancellation .scan {width: 300rpx;height: 300rpx;margin: 110rpx auto 0 auto;}
+.OrderCancellation .scan image {width: 100%;height: 100%;display: block;}
\ No newline at end of file
diff --git a/template/xcx/pages/order_confirm/index.js b/template/xcx/pages/order_confirm/index.js
new file mode 100644
index 000000000..c89202162
--- /dev/null
+++ b/template/xcx/pages/order_confirm/index.js
@@ -0,0 +1,436 @@
+import { orderConfirm, getCouponsOrderPrice, orderCreate, postOrderComputed} from '../../api/order.js';
+import { getAddressDefault, getAddressDetail } from '../../api/user.js';
+import { openPaySubscribe } from '../../utils/SubscribeMessage.js';
+import { storeListApi } from '../../api/store.js';
+import { CACHE_LONGITUDE, CACHE_LATITUDE } from '../../config.js';
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ textareaStatus:true,
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '提交订单',
+ 'color': true,
+ 'class': '0'
+ },
+ //支付方式
+ cartArr: [
+ { "name": "微信支付", "icon": "icon-weixin2", value: 'weixin', title: '微信快捷支付' },
+ { "name": "余额支付", "icon": "icon-icon-test", value: 'yue',title:'可用余额:'},
+ { "name": "线下支付", "icon": "icon-yinhangqia", value: 'offline', title: '线下支付'},
+ ],
+ payType:'weixin',//支付方式
+ openType:1,//优惠券打开方式 1=使用
+ active:0,//支付方式切换
+ coupon: { coupon: false, list: [], statusTile:'立即使用'},//优惠券组件
+ address: {address: false},//地址组件
+ addressInfo:{},//地址信息
+ pinkId:0,//拼团id
+ addressId:0,//地址id
+ couponId:0,//优惠券id
+ cartId:'',//购物车id
+ userInfo:{},//用户信息
+ mark:'',//备注信息
+ couponTitle:'请选择',//优惠券
+ coupon_price:0,//优惠券抵扣金额
+ useIntegral:false,//是否使用积分
+ integral_price:0,//积分抵扣金额
+ ChangePrice:0,//使用积分抵扣变动后的金额
+ formIds:[],//收集formid
+ status:0,
+ is_address:false,
+ isClose:false,
+ toPay:false,//修复进入支付时页面隐藏从新刷新页面
+ shippingType:0,
+ system_store:{},
+ storePostage:0,
+ contacts:'',
+ contactsTel:'',
+ mydata: {},
+ storeList: []
+ },
+ /**
+ * 授权回调事件
+ *
+ */
+ onLoadFun:function(){
+ this.getaddressInfo();
+ this.getConfirm();
+ //调用子页面方法授权后执行获取地址列表
+ this.selectComponent('#address-window').getAddressList();
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ this.setData({ textareaStatus: true });
+ if (app.globalData.isLog && this.data.isClose && this.data.toPay==false) {
+ this.getaddressInfo();
+ this.selectComponent('#address-window').getAddressList();
+ }
+ let pages = getCurrentPages();
+ let currPage = pages[pages.length - 1]; //当前页面
+ if (currPage.data.storeItem){
+ let json = currPage.data.storeItem;
+ this.setData({
+ system_store: json,
+ });
+ }
+ },
+ /**
+ * 获取门店列表数据
+ */
+ getList: function () {
+ let longitude = wx.getStorageSync(CACHE_LONGITUDE); //经度
+ let latitude = wx.getStorageSync(CACHE_LATITUDE); //纬度
+ let data = {
+ latitude: latitude, //纬度
+ longitude: longitude, //经度
+ page: 1,
+ limit: 10
+ }
+ storeListApi(data).then(res => {
+ let list = res.data.list || [];
+ this.setData({
+ storeList: list,
+ system_store: list[0],
+ });
+ }).catch(err => {
+
+ })
+ },
+ /*
+ * 跳转门店列表
+ */
+ showStoreList: function () {
+ wx.navigateTo({
+ url: '/pages/goods_details_store/index?go=order'
+ })
+ },
+ computedPrice:function(){
+ let shippingType = this.data.shippingType;
+ postOrderComputed(this.data.orderKey,{
+ addressId: this.data.addressId,
+ useIntegral: this.data.useIntegral ? 1 : 0,
+ couponId: this.data.couponId,
+ shipping_type: parseInt(shippingType) + 1,
+ payType: this.data.payType
+ }).then(res=>{
+ let result = res.data.result;
+ if (result){
+ this.setData({
+ totalPrice: result.pay_price,
+ integral_price: result.deduction_price,
+ coupon_price: result.coupon_price,
+ integral: this.data.useIntegral ? result.SurplusIntegral : this.data.userInfo.integral ,
+ 'priceGroup.storePostage': shippingType == 1 ? 0 : result.pay_postage,
+ });
+ }
+ })
+ },
+ addressType:function(e){
+ let index = e.currentTarget.dataset.index;
+ if (this.data.storeList.length>0){
+ this.setData({ shippingType: parseInt(index) });
+ }else{
+ if(index==1){
+ return app.Tips({ title: '暂无门店信息,你无法选择到店自提' });
+ }
+ }
+ this.computedPrice();
+ },
+ bindPickerChange: function (e) {
+ let value = e.detail.value;
+ this.setData({shippingType: value})
+ this.computedPrice();
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({ isClose: true });
+ },
+ ChangCouponsClone:function(){
+ this.setData({'coupon.coupon':false});
+ },
+ changeTextareaStatus:function(){
+ for (var i = 0, len = this.data.coupon.list.length; i < len;i++){
+ this.data.coupon.list[i].use_title='';
+ this.data.coupon.list[i].is_use = 0;
+ }
+ this.setData({ textareaStatus: true, status: 0, "coupon.list": this.data.coupon.list});
+ },
+ /**
+ * 处理点击优惠券后的事件
+ *
+ */
+ ChangCoupons:function(e){
+ var index = e.detail, list = this.data.coupon.list, couponTitle = '请选择', couponId = 0;
+ for (var i = 0, len = list.length; i < len; i++) {
+ if(i != index){
+ list[i].use_title = '';
+ list[i].is_use = 0;
+ }
+ }
+ if (list[index].is_use) {
+ //不使用优惠券
+ list[index].use_title = '';
+ list[index].is_use = 0;
+ } else {
+ //使用优惠券
+ list[index].use_title = '不使用';
+ list[index].is_use = 1;
+ couponTitle = list[index].coupon_title;
+ couponId = list[index].id;
+ }
+ this.setData({
+ couponTitle: couponTitle,
+ couponId: couponId,
+ 'coupon.coupon': false,
+ "coupon.list":list,
+ });
+ this.computedPrice();
+ },
+ /**
+ * 使用积分抵扣
+ */
+ ChangeIntegral:function(){
+ this.setData({useIntegral:!this.data.useIntegral});
+ this.computedPrice();
+ },
+ /**
+ * 选择地址后改变事件
+ * @param object e
+ */
+ OnChangeAddress:function(e){
+ this.setData({ textareaStatus:true,addressId: e.detail,'address.address':false});
+ this.getaddressInfo();
+ this.computedPrice();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (!options.cartId) return app.Tips({ title:'请选择要购买的商品'},{tab:3,url:1});
+ // if (options.shippingType) this.setData({ shippingType: options.shippingType, storeIndex: options.storeIndex });
+ this.setData({
+ couponId: options.couponId || 0,
+ pinkId: options.pinkId ? parseInt(options.pinkId) : 0,
+ addressId: options.addressId || 0,
+ cartId: options.cartId,
+ is_address: options.is_address ? true : false
+ });
+ },
+ bindHideKeyboard: function (e) {
+ this.setData({mark: e.detail.value});
+ },
+ /**
+ * 获取当前订单详细信息
+ *
+ */
+ getConfirm:function(){
+ var that=this;
+ orderConfirm(this.data.cartId).then(res=>{
+ that.setData({
+ userInfo: res.data.userInfo,
+ integral: res.data.userInfo.integral,
+ cartInfo: res.data.cartInfo,
+ integralRatio: res.data.integralRatio,
+ offlinePostage: res.data.offlinePostage,
+ orderKey: res.data.orderKey,
+ priceGroup: res.data.priceGroup,
+ totalPrice: app.help().Add(parseFloat(res.data.priceGroup.totalPrice), parseFloat(res.data.priceGroup.storePostage)),
+ seckillId: parseInt(res.data.seckill_id),
+ usableCoupon: res.data.usableCoupon,
+ // system_store: res.data.system_store,
+ store_self_mention: res.data.store_self_mention
+ });
+ that.data.cartArr[1].title = '可用余额:' + res.data.userInfo.now_money;
+ if (res.data.offline_pay_status == 2) that.data.cartArr.pop();
+ that.setData({ cartArr: that.data.cartArr, ChangePrice: that.data.totalPrice });
+ that.getBargainId();
+ that.getCouponList();
+ that.getList();
+ }).catch(err=>{
+ return app.Tips({ title: err }, { tab: 3, url: 1 });
+ });
+ },
+ /*
+ * 提取砍价和拼团id
+ */
+ getBargainId: function () {
+ var that = this;
+ var cartINfo = that.data.cartInfo;
+ var BargainId = 0;
+ var combinationId = 0;
+ cartINfo.forEach(function (value, index, cartINfo) {
+ BargainId = cartINfo[index].bargain_id,
+ combinationId = cartINfo[index].combination_id
+ })
+ that.setData({ BargainId: parseInt(BargainId), combinationId: parseInt(combinationId)});
+ if (that.data.cartArr.length == 3 && (BargainId || combinationId || that.data.seckillId)){
+ that.data.cartArr.pop();
+ that.setData({ cartArr: that.data.cartArr});
+ }
+ },
+ /**
+ * 获取当前金额可用优惠券
+ *
+ */
+ getCouponList:function(){
+ var that=this;
+ let data = { cartId: this.data.cartId}
+ getCouponsOrderPrice(this.data.totalPrice, data).then(res=>{
+ that.setData({ 'coupon.list': res.data, openType: 1 });
+ });
+ },
+ /*
+ * 获取默认收货地址或者获取某条地址信息
+ */
+ getaddressInfo:function(){
+ var that=this;
+ if(that.data.addressId){
+ getAddressDetail(that.data.addressId).then(res=>{
+ res.data.is_default = parseInt(res.data.is_default);
+ that.setData({ addressInfo: res.data || {}, addressId: res.data.id || 0, 'address.addressId': res.data.id || 0 });
+ })
+ }else{
+ getAddressDefault().then(res=>{
+ res.data.is_default = parseInt(res.data.is_default);
+ that.setData({ addressInfo: res.data || {}, addressId: res.data.id || 0, 'address.addressId': res.data.id || 0 });
+ })
+ }
+ },
+ payItem:function(e){
+ var that = this;
+ var active = e.currentTarget.dataset.index;
+ that.setData({
+ active: active,
+ animated: true,
+ payType: that.data.cartArr[active].value,
+ });
+ that.computedPrice();
+ setTimeout(function () {
+ that.car();
+ }, 500);
+ },
+ coupon: function () {
+ this.setData({
+ 'coupon.coupon': true
+ })
+ },
+ car: function () {
+ var that = this;
+ that.setData({
+ animated: false
+ });
+ },
+ onAddress:function(){
+ this.setData({
+ textareaStatus:false,
+ 'address.address': true,
+ pagesUrl: '/pages/user_address_list/index?cartId=' + this.data.cartId + '&pinkId=' + this.data.pinkId + '&couponId=' + this.data.couponId
+ });
+ },
+ realName:function(e){
+ this.setData({
+ contacts: e.detail.value
+ })
+ },
+ phone: function (e) {
+ this.setData({
+ contactsTel: e.detail.value
+ })
+ },
+ SubOrder:function(e){
+ var that = this, data={};
+ if (!this.data.payType) return app.Tips({title:'请选择支付方式'});
+ if (!this.data.addressId && !this.data.shippingType) return app.Tips({ title:'请选择收货地址'});
+ if (this.data.shippingType == 1){
+ if (this.data.contacts == "" || this.data.contactsTel == "")
+ return app.Tips({ title: '请填写联系人或联系人电话' });
+ if (!/^1(3|4|5|7|8|9|6)\d{9}$/.test(this.data.contactsTel)) {
+ return app.Tips({ title: '请填写正确的手机号' });
+ }
+ if (!/^[\u4e00-\u9fa5\w]{2,16}$/.test(this.data.contacts)) {
+ return app.Tips({ title: '请填写您的真实姓名' });
+ }
+ }
+ data={
+ real_name: that.data.contacts,
+ phone: that.data.contactsTel,
+ addressId: that.data.addressId,
+ formId: '',
+ couponId: that.data.couponId,
+ payType: that.data.payType,
+ useIntegral: that.data.useIntegral,
+ bargainId: that.data.BargainId,
+ combinationId: that.data.combinationId,
+ pinkId: that.data.pinkId,
+ seckill_id: that.data.seckillId,
+ mark: that.data.mark,
+ store_id: that.data.system_store ? that.data.system_store.id : 0,
+ 'from':'routine',
+ shipping_type: app.help().Add(that.data.shippingType,1)
+ };
+ if (data.payType == 'yue' && parseFloat(that.data.userInfo.now_money) < parseFloat(that.data.totalPrice)) return app.Tips({title:'余额不足!'});
+ wx.showLoading({ title: '订单支付中'});
+ openPaySubscribe().then(()=>{
+ orderCreate(this.data.orderKey ,data).then(res=>{
+ var status = res.data.status, orderId = res.data.result.orderId, jsConfig = res.data.result.jsConfig,
+ goPages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=' + res.msg;
+ switch (status) {
+ case 'ORDER_EXIST': case 'EXTEND_ORDER': case 'PAY_ERROR':
+ wx.hideLoading();
+ return app.Tips({ title: res.msg }, { tab: 5, url: goPages });
+ break;
+ case 'SUCCESS':
+ wx.hideLoading();
+ if (that.data.BargainId || that.data.combinationId || that.data.pinkId || that.data.seckillId)
+ return app.Tips({ title: res.msg, icon: 'success' }, { tab: 4, url: goPages });
+ return app.Tips({ title: res.msg, icon: 'success' }, { tab: 5, url: goPages });
+ break;
+ case 'WECHAT_PAY':
+ that.setData({ toPay: true });
+ wx.requestPayment({
+ timeStamp: jsConfig.timestamp,
+ nonceStr: jsConfig.nonceStr,
+ package: jsConfig.package,
+ signType: jsConfig.signType,
+ paySign: jsConfig.paySign,
+ success: function (res) {
+ wx.hideLoading();
+ if (that.data.BargainId || that.data.combinationId || that.data.pinkId || that.data.seckillId)
+ return app.Tips({ title: '支付成功', icon: 'success' }, { tab: 4, url: goPages });
+ return app.Tips({ title: '支付成功', icon: 'success' }, { tab: 5, url: goPages });
+ },
+ fail: function (e) {
+ wx.hideLoading();
+ return app.Tips({ title: '取消支付' }, { tab: 5, url: goPages + '&status=2' });
+ },
+ complete: function (e) {
+ wx.hideLoading();
+ //关闭当前页面跳转至订单状态
+ if (res.errMsg == 'requestPayment:cancel') return app.Tips({ title: '取消支付' }, { tab: 5, url: goPages + '&status=2' });
+ },
+ })
+ break;
+ case 'PAY_DEFICIENCY':
+ wx.hideLoading();
+ //余额不足
+ return app.Tips({ title: res.msg }, { tab: 5, url: goPages + '&status=1' });
+ break;
+ }
+ }).catch(err=>{
+ wx.hideLoading();
+ return app.Tips({title:err});
+ });
+ });
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/order_confirm/index.json b/template/xcx/pages/order_confirm/index.json
new file mode 100644
index 000000000..cf6a0ab60
--- /dev/null
+++ b/template/xcx/pages/order_confirm/index.json
@@ -0,0 +1,11 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "orderGoods": "/components/orderGoods/index",
+ "coupon-list-window": "/components/coupon-list-window/index",
+ "address-window": "/components/address-window/index",
+ "authorize": "/components/authorize/authorize",
+ "home": "/components/home/index"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/order_confirm/index.wxml b/template/xcx/pages/order_confirm/index.wxml
new file mode 100644
index 000000000..4df6ac4e5
--- /dev/null
+++ b/template/xcx/pages/order_confirm/index.wxml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+ {{addressInfo.real_name}}
+ {{addressInfo.phone}}
+
+
+ [默认] {{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{addressInfo.detail}}
+
+
+
+ 设置收货地址
+
+
+
+
+
+ {{system_store.name}}
+ {{system_store.phone}}
+
+ {{system_store.address}}{{", " + system_store.detailed_address}}
+
+
+
+
+
+
+
+
+
+
+ 优惠券
+ {{couponTitle}}
+
+
+
+
+ 积分抵扣
+
+ {{useIntegral ? "剩余积分":"当前积分"}}
+ {{integral || 0}}
+
+
+
+
+
+
+
+ 会员优惠
+ -¥{{priceGroup.vipPrice}}
+
+
+ 快递费用
+ ¥{{priceGroup.storePostage}}
+ 免运费
+
+
+
+ 联系人
+
+
+
+
+
+ 联系电话
+
+
+
+
+
+
+
+ 备注信息
+
+
+
+
+
+ 支付方式
+
+
+
+ {{item.name}}
+ {{item.title}}
+
+
+
+
+
+
+ 商品总价:
+ ¥{{priceGroup.totalPrice}}
+
+
+ 优惠券抵扣:
+ -¥{{coupon_price}}
+
+
+ 积分抵扣:
+ -¥{{integral_price}}
+
+
+ 运费:
+ +¥{{priceGroup.storePostage}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/order_confirm/index.wxss b/template/xcx/pages/order_confirm/index.wxss
new file mode 100644
index 000000000..102664e21
--- /dev/null
+++ b/template/xcx/pages/order_confirm/index.wxss
@@ -0,0 +1,92 @@
+.order-submission .line{width:100%;height:3rpx;}
+.order-submission .line image{width:100%;height:100%;display:block;}
+.order-submission .address{padding:28rpx 30rpx;background-color:#fff;}
+.order-submission .address .addressCon{width:610rpx;font-size:26rpx;color:#666;}
+.order-submission .address .addressCon .name{font-size:30rpx;color:#282828;font-weight:bold;margin-bottom:10rpx;}
+.order-submission .address .addressCon .name .phone{margin-left:50rpx;}
+.order-submission .address .addressCon .default{margin-right:12rpx;}
+.order-submission .address .addressCon .setaddress{color:#333;font-size:28rpx;}
+.order-submission .address .iconfont{font-size:35rpx;color:#707070;}
+.order-submission .allAddress {width: 100%;background-image: linear-gradient(to bottom, #e93323 0%, #f5f5f5 100%);background-image: -webkit-linear-gradient(to bottom,#e93323 0%, #f5f5f5 100%);background-image: -moz-linear-gradient(to bottom, #e93323 0%, #f5f5f5 100%);
+ padding-top: 100rpx;}
+.order-submission .allAddress .nav {width: 710rpx;margin: 0 auto;}
+.order-submission .allAddress .nav .item {width: 355rpx;}
+.order-submission .allAddress .nav .item.on {position: relative;width: 250rpx;}
+.order-submission .allAddress .nav .item.on::before {
+ position: absolute;bottom: 0;content: "快递配送";
+ font-size: 28rpx;
+ display: block;
+ height: 0;
+ width: 336rpx;
+ border-width: 0 20rpx 80rpx 0;
+ border-style: none solid solid;
+ border-color: transparent transparent #fff;
+ z-index: 2;
+ border-radius: 7rpx 30rpx 0 0;
+ text-align: center;
+ line-height: 80rpx;
+}
+.order-submission .allAddress .nav .item:nth-of-type(2).on::before {
+ content: "到店自提";
+ border-width: 0 0 80rpx 20rpx;
+ border-radius: 30rpx 7rpx 0 0;
+}
+.order-submission .allAddress .nav .item.on2 {
+ position: relative;
+}
+.order-submission .allAddress .nav .item.on2::before {
+ position: absolute;
+ bottom: 0;
+ content: "到店自提";
+ font-size: 28rpx;
+ display: block;
+ height: 0;
+ width: 400rpx;
+ border-width: 0 0 60rpx 60rpx;
+ border-style: none solid solid;
+ border-color: transparent transparent #f7c1bd;
+ border-radius: 40rpx 6rpx 0 0;
+ text-align: center;
+ line-height: 60rpx;
+}
+.order-submission .allAddress .nav .item:nth-of-type(1).on2::before {
+ content: "快递配送";
+ border-width: 0 60rpx 60rpx 0;
+ border-radius: 6rpx 40rpx 0 0;
+}
+.order-submission .allAddress .address {
+ width: 710rpx;
+ height: 150rpx;
+ margin: 0 auto;
+}
+.order-submission .allAddress .line {
+ width: 710rpx;
+ margin: 0 auto;
+}
+.order-submission .wrapper .item .discount .placeholder {
+ color: #ccc;
+}
+.order-submission .wrapper{background-color:#fff;margin-top:13rpx;}
+.order-submission .wrapper .item{padding:27rpx 30rpx;font-size:30rpx;color:#282828;border-bottom:1px solid #f0f0f0;}
+.order-submission .wrapper .item .discount{font-size:30rpx;color:#999;}
+.order-submission .wrapper .item .discount input{text-align:right;}
+.order-submission .wrapper .item .discount .iconfont{color:#515151;font-size:30rpx;margin-left:15rpx;}
+.order-submission .wrapper .item .discount .num{font-size:32rpx;margin-right:20rpx;}
+.order-submission .wrapper .item .shipping{font-size:30rpx;color:#999;position:relative;padding-right: 58rpx;}
+.order-submission .wrapper .item .shipping .iconfont{font-size:35rpx;color:#707070;position: absolute;right:0;top:50%;transform:translateY(-50%);margin-left:30rpx;}
+.order-submission .wrapper .item textarea{background-color:#f9f9f9;width:690rpx;height:140rpx;border-radius:3rpx;margin-top:30rpx;padding:25rpx 28rpx;box-sizing:border-box;}
+.order-submission .wrapper .item .placeholder{color:#ccc;}
+.order-submission .wrapper .item .list{margin-top:35rpx;}
+.order-submission .wrapper .item .list .payItem{border:1px solid #eee;border-radius:6rpx;height:86rpx;width:100%;box-sizing:border-box;margin-top:20rpx;font-size:28rpx;color:#282828;}
+.order-submission .wrapper .item .list .payItem.on{border-color:#fc5445;color:#e93323;}
+.order-submission .wrapper .item .list .payItem .name{width:50%;text-align:center;border-right:1px solid #eee;}
+.order-submission .wrapper .item .list .payItem .name .iconfont{width:44rpx;height:44rpx;border-radius:50%;text-align:center;line-height:44rpx;background-color:#fe960f;color:#fff;font-size:30rpx;margin-right:15rpx;}
+.order-submission .wrapper .item .list .payItem .name .iconfont.icon-weixin2{background-color:#41b035;}
+.order-submission .wrapper .item .list .payItem .tip{width:49%;text-align:center;font-size:26rpx;color:#aaa;}
+.order-submission .moneyList{margin-top:12rpx;background-color:#fff;padding:30rpx;}
+.order-submission .moneyList .item{font-size:28rpx;color:#282828;}
+.order-submission .moneyList .item~.item{margin-top:20rpx;}
+.order-submission .moneyList .item .money{color:#868686;}
+.order-submission .footer{width:100%;height:100rpx;background-color:#fff;padding:0 30rpx;font-size:28rpx;color:#333;box-sizing:border-box;position:fixed;bottom:0;left:0;}
+.order-submission .footer .settlement{font-size:30rpx;color:#fff;width:240rpx;height:70rpx;background-color:#e93323;border-radius:50rpx;text-align:center;line-height:70rpx;}
+.footer .transparent{opacity: 0}
diff --git a/template/xcx/pages/order_details/index.js b/template/xcx/pages/order_details/index.js
new file mode 100644
index 000000000..12935f1fc
--- /dev/null
+++ b/template/xcx/pages/order_details/index.js
@@ -0,0 +1,317 @@
+import { getOrderDetail, orderAgain, orderTake, orderDel} from '../../api/order.js';
+import { openOrderRefundSubscribe } from '../../utils/SubscribeMessage.js';
+import { getUserInfo } from '../../api/user.js';
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '订单详情',
+ 'color': true,
+ 'class': '0'
+ // 'class': '2' 顶部为灰色
+ },
+ order_id:'',
+ evaluate:0,
+ cartInfo:[],//购物车产品
+ orderInfo: { system_store:{}},//订单详情
+ system_store:{},
+ isGoodsReturn:false,//是否为退款订单
+ status:{},//订单底部按钮状态
+ isClose:false,
+ payMode: [
+ { name: "微信支付", icon: "icon-weixinzhifu", value: 'weixin', title: '微信快捷支付' },
+ { name: "余额支付", icon: "icon-yuezhifu", value: 'yue', title: '可用余额:', number: 0 },
+ ],
+ pay_close: false,
+ pay_order_id: '',
+ totalPrice: '0',
+ generalActive:false,
+ generalContent:{
+ promoterNum:'',
+ title:''
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (options.order_id) this.setData({ order_id: options.order_id});
+ if (options.isReturen){
+ this.setData({ 'parameter.class': '2', isGoodsReturn:true });
+ this.selectComponent('#navbar').setClass();
+ }
+ },
+ openSubcribe:function(e){
+ let page = e.currentTarget.dataset.url;
+ wx.showLoading({
+ title: '正在加载',
+ })
+ openOrderRefundSubscribe().then(res => {
+ wx.hideLoading();
+ wx.navigateTo({
+ url: page,
+ });
+ }).catch(() => {
+ wx.hideLoading();
+ });
+ },
+ /**
+ * 事件回调
+ *
+ */
+ onChangeFun: function (e) {
+ let opt = e.detail;
+ let action = opt.action || null;
+ let value = opt.value != undefined ? opt.value : null;
+ (action && this[action]) && this[action](value);
+ },
+ /**
+ * 拨打电话
+ */
+ makePhone: function () {
+ wx.makePhoneCall({
+ phoneNumber: this.data.system_store.phone
+ })
+ },
+ /**
+ * 打开地图
+ *
+ */
+ showMaoLocation: function () {
+ if (!this.data.system_store.latitude || !this.data.system_store.longitude) return app.Tips({ title: '缺少经纬度信息无法查看地图!' });
+ wx.openLocation({
+ latitude: parseFloat(this.data.system_store.latitude),
+ longitude: parseFloat(this.data.system_store.longitude),
+ scale: 8,
+ name: this.data.system_store.name,
+ address: this.data.system_store.address + this.data.system_store.detailed_address,
+ success: function () {
+
+ },
+ });
+ },
+ /**
+ * 关闭支付组件
+ *
+ */
+ pay_close: function () {
+ this.setData({ pay_close: false });
+ },
+ /**
+ * 打开支付组件
+ *
+ */
+ pay_open: function () {
+ this.setData({
+ pay_close: true,
+ pay_order_id: this.data.orderInfo.order_id,
+ totalPrice: this.data.orderInfo.pay_price
+ });
+ },
+ /**
+ * 支付成功回调
+ *
+ */
+ pay_complete: function () {
+ this.setData({pay_close: false, pay_order_id: '' });
+ this.getOrderInfo();
+ },
+ /**
+ * 支付失败回调
+ *
+ */
+ pay_fail: function () {
+ this.setData({ pay_close: false, pay_order_id: '' });
+ },
+ /**
+ * 登录授权回调
+ *
+ */
+ onLoadFun:function(){
+ this.getOrderInfo();
+ this.getUserInfo();
+ },
+ /**
+ * 获取用户信息
+ *
+ */
+ getUserInfo:function(){
+ let that = this;
+ getUserInfo().then(res=>{
+ that.data.payMode[1].number = res.data.now_money;
+ that.setData({ payMode: that.data.payMode });
+ })
+ },
+ /**
+ * 获取订单详细信息
+ *
+ */
+ getOrderInfo:function(){
+ var that=this;
+ wx.showLoading({ title: "正在加载中" });
+ getOrderDetail(this.data.order_id).then(res=>{
+ let _type = res.data._status._type;
+ wx.hideLoading();
+ that.setData({
+ orderInfo: res.data,
+ cartInfo: res.data.cartInfo,
+ evaluate: _type == 3 ? 3 : 0,
+ system_store: res.data.system_store,
+ });
+ if (this.data.orderInfo.refund_status != 0 ){
+ this.setData({ 'parameter.class': '2', isGoodsReturn: true });
+ this.selectComponent('#navbar').setClass();
+ }
+ that.getOrderStatus();
+ }).catch(err=>{
+ wx.hideLoading();
+ app.Tips({ title: err }, '/pages/order_list/index');
+ });
+ },
+ /**
+ *
+ * 剪切订单号
+ */
+ copy:function(){
+ var that=this;
+ wx.setClipboardData({data: this.data.orderInfo.order_id});
+ },
+ /**
+ * 打电话
+ */
+ goTel:function(){
+ wx.makePhoneCall({
+ phoneNumber: this.data.orderInfo.delivery_id
+ })
+ },
+
+ /**
+ * 设置底部按钮
+ *
+ */
+ getOrderStatus:function(){
+ var orderInfo = this.data.orderInfo || {}, _status = orderInfo._status || { _type:0},status={};
+ var type = parseInt(_status._type), combination_id = orderInfo.combination_id || 0, delivery_type = orderInfo.delivery_type,
+ seckill_id = orderInfo.seckill_id ? parseInt(orderInfo.seckill_id) : 0,
+ bargain_id=orderInfo.bargain_id ? parseInt(orderInfo.bargain_id) : 0,
+ combination_id = orderInfo.combination_id ? parseInt(orderInfo.combination_id) : 0;
+ status={
+ type: type == 9 ? -9 : type,
+ class_status:0
+ };
+ if (type == 1 && combination_id >0) status.class_status = 1;//查看拼团
+ if (type == 2 && delivery_type == 'express') status.class_status = 2;//查看物流
+ if (type == 2) status.class_status = 3;//确认收货
+ if (type == 4 || type == 0) status.class_status = 4;//删除订单
+ if (!seckill_id && !bargain_id && !combination_id && (type == 3 || type == 4)) status.class_status = 5;//再次购买
+ this.setData({ status: status});
+ },
+ /**
+ * 去拼团详情
+ *
+ */
+ goJoinPink:function(){
+ wx.navigateTo({
+ url: '/pages/activity/goods_combination_status/index?id=' + this.data.orderInfo.pink_id,
+ });
+ },
+ /**
+ * 再此购买
+ *
+ */
+ goOrderConfirm:function(){
+ var that=this;
+ orderAgain( that.data.orderInfo.order_id ).then(res=>{
+ return wx.navigateTo({ url: '/pages/order_confirm/index?cartId=' + res.data.cateId });
+ });
+ },
+ confirmOrder:function(){
+ var that=this;
+ wx.showModal({
+ title: '确认收货',
+ content: '为保障权益,请收到货确认无误后,再确认收货',
+ success: function (res) {
+ if (res.confirm) {
+ wx.showLoading({
+ mask:true,
+ title: '加载中',
+ })
+ orderTake(that.data.order_id).then(res=>{
+ wx.hideLoading();
+ const generalContent="generalContent.promoterNum";
+ const title="generalContent.title";
+ if(res.data.gain_integral!="0.00" && res.data.gain_coupon!="0.00"){
+ that.setData({
+ generalActive: true,
+ [generalContent]: `恭喜您获得${res.data.gain_coupon}元优惠券以及${res.data.gain_integral}积分,购买商品时可抵现哦~`,
+ [title]: '恭喜您获得优惠礼包'
+ });
+ return;
+ }else if(res.data.gain_integral!="0.00"){
+ that.setData({
+ generalActive: true,
+ [generalContent]: `恭喜您获得${res.data.gain_integral}积分,购买商品时可抵现哦~`,
+ [title]: '赠送积分'
+ });
+ return;
+ }else if(res.data.gain_coupon!="0.00"){
+ that.setData({
+ generalActive: true,
+ [generalContent]: `恭喜您获得${res.data.gain_coupon}元优惠券,购买商品时可抵现哦~`,
+ [title]: '恭喜您获得优惠券'
+ });
+ return;
+ }else{
+ return app.Tips({ title: '操作成功', icon: 'success' }, function () {
+ that.getOrderInfo();
+ });
+ }
+ }).catch(err=>{
+ return app.Tips({title:err});
+ })
+ }
+ }
+ })
+ },
+ generalWindow:function(){
+ this.setData({
+ generalActive: false
+ });
+ this.getOrderInfo();
+ },
+ /**
+ *
+ * 删除订单
+ */
+ delOrder:function(){
+ var that=this;
+ orderDel(this.data.order_id).then(res=>{
+ return app.Tips({ title: '删除成功', icon: 'success' }, { tab: 3, url: 1 });
+ }).catch(err=>{
+ return app.Tips({title:err});
+ });
+ },
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if (app.globalData.isLog && this.data.isClose) {
+ this.getOrderInfo();
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({ isClose: true });
+ },
+})
\ No newline at end of file
diff --git a/template/xcx/pages/order_details/index.json b/template/xcx/pages/order_details/index.json
new file mode 100644
index 000000000..29f0f0d78
--- /dev/null
+++ b/template/xcx/pages/order_details/index.json
@@ -0,0 +1,11 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "orderGoods": "/components/orderGoods/index",
+ "home":"/components/home/index",
+ "authorize": "/components/authorize/authorize",
+ "payment": "/components/payment/index",
+ "generalWindow": "/components/general-window/index"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/order_details/index.wxml b/template/xcx/pages/order_details/index.wxml
new file mode 100644
index 000000000..c3dc33d71
--- /dev/null
+++ b/template/xcx/pages/order_details/index.wxml
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+ 待付款
+ {{orderInfo.shipping_type==1 ? '待发货':'待核销'}}
+ 待收货
+ 待评价
+ 已完成
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 核销信息
+
+
+
+
+ {{orderInfo._verify_code}}
+
+
+
+ 核销时间
+
+
+ 每日:{{orderInfo.system_store.day_time}}
+
+
+
+
+ 使用说明
+
+ 可将二维码出示给店员扫描或提供数字核销码
+
+
+
+
+ 自提地址信息
+
+ 查看位置
+
+
+
+ {{orderInfo.real_name}}{{orderInfo.user_phone}}
+ {{orderInfo.user_address}}
+
+
+ {{orderInfo.system_store.name}}{{orderInfo.system_store.phone}}
+ {{orderInfo.system_store._detailed_address}}
+
+
+
+
+ 联系客服
+
+
+ 订单编号:
+ {{orderInfo.order_id}}复制
+
+
+ 下单时间:
+ {{(orderInfo.add_time_y || '') +' '+(orderInfo.add_time_h || 0)}}
+
+
+ 支付状态:
+ 已支付
+ 未支付
+
+
+ 支付方式:
+ {{orderInfo._status._payType}}
+
+
+ 买家留言:
+ {{orderInfo.mark}}
+
+
+
+
+
+ 收货人:
+ {{orderInfo.real_name}}
+
+
+ 联系电话:
+ {{orderInfo.user_phone}}
+
+
+ 收货地址:
+ {{orderInfo.user_address}}
+
+
+
+
+
+ 配送方式:
+ 发货
+
+
+ 快递公司:
+ {{orderInfo.delivery_name || ''}}
+
+
+ 快递号:
+ {{orderInfo.delivery_id || ''}}
+
+
+
+
+ 配送方式::
+ 送货
+
+
+ 配送人姓名:
+ {{orderInfo.delivery_name || ''}}
+
+
+ 联系电话:
+ {{orderInfo.delivery_id || ''}}拨打
+
+
+
+
+ 虚拟发货:
+ 已发货,请注意查收
+
+
+
+
+
+ 支付金额:
+ ¥{{orderInfo.total_price}}
+
+
+ 优惠券抵扣:
+ -¥{{orderInfo.coupon_price}}
+
+
+ 积分抵扣:
+ -¥{{orderInfo.deduction_price}}
+
+
+ 运费:
+ ¥{{orderInfo.pay_postage}}
+
+ 实付款:¥{{orderInfo.pay_price}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/order_details/index.wxss b/template/xcx/pages/order_details/index.wxss
new file mode 100644
index 000000000..05ff1696c
--- /dev/null
+++ b/template/xcx/pages/order_details/index.wxss
@@ -0,0 +1,59 @@
+.order-details .header{padding:0 30rpx;height:150rpx;}
+.order-details .header.on{background-color:#666!important;}
+.order-details .header .pictrue{width:110rpx;height:110rpx;}
+.order-details .header .pictrue image{width:100%;height:100%;}
+.order-details .header .data{color:rgba(255,255,255,0.8);font-size:24rpx;margin-left:27rpx;}
+.order-details .header .data.on{margin-left:0;}
+.order-details .header .data .state{font-size:30rpx;font-weight:bold;color:#fff;margin-bottom:7rpx;}
+.order-details .header .data .time{margin-left:20rpx;}
+.order-details .nav{background-color:#fff;font-size:26rpx;color:#282828;padding:25rpx 0;}
+.order-details .nav .navCon{padding:0 40rpx;}
+.order-details .nav .on{color: #e93323;}
+.order-details .nav .progress{padding:0 65rpx;margin-top:10rpx;}
+.order-details .nav .progress .line{width:100rpx;height:2rpx;background-color:#939390;}
+.order-details .nav .progress .iconfont{font-size:25rpx;color:#939390;margin-top:-2rpx;}
+.order-details .address{font-size:26rpx;color:#868686;background-color:#fff;margin-top:13rpx;padding:35rpx 30rpx;}
+.order-details .address .name{font-size:30rpx;color:#282828;margin-bottom:15rpx;}
+.order-details .address .name .phone{margin-left:40rpx;}
+.order-details .line{width:100%;height:3rpx;}
+.order-details .line image{width:100%;height:100%;display:block;}
+.order-details .wrapper{background-color:#fff;margin-top:12rpx;padding:30rpx;}
+.order-details .wrapper .item{font-size:28rpx;color:#282828;}
+.order-details .wrapper .item~.item{margin-top:20rpx;}
+.order-details .wrapper .item .conter{color:#868686;width:460rpx;text-align:right;}
+.order-details .wrapper .item .conter .copy{font-size:20rpx;color:#333;border-radius:3rpx;border:1rpx solid #666;padding:3rpx 15rpx;margin-left:24rpx;}
+.order-details .wrapper .actualPay{border-top:1rpx solid #eee;margin-top:30rpx;padding-top:30rpx;}
+.order-details .wrapper .actualPay .money{font-weight:bold;font-size:30rpx;}
+.order-details .footer{width:100%;height:100rpx;position:fixed;bottom:0;left:0;background-color:#fff;padding:0 30rpx;box-sizing:border-box;}
+.order-details .footer .bnt{width:158rpx;height:60rpx;text-align:center;line-height:60rpx;border-radius:50rpx;color:#fff;font-size:27rpx;}
+.order-details .footer .bnt.cancel{color:#aaa;border:1rpx solid #ddd;}
+.order-details .footer .bnt~.bnt{margin-left:18rpx;}
+.order-details .writeOff {background-color: #fff;margin-top: 13rpx;padding-bottom: 30rpx;}
+.order-details .writeOff .title {font-size: 30rpx;color: #282828;height: 87rpx;
+ border-bottom: 1px solid #f0f0f0;padding: 0 30rpx;line-height: 87rpx;}
+.order-details .writeOff .grayBg {background-color: #f2f5f7;width: 590rpx;height: 384rpx;
+ border-radius: 20rpx 20rpx 0 0;margin: 50rpx auto 0 auto;padding-top: 55rpx;}
+.order-details .writeOff .grayBg .pictrue {width: 290rpx;height: 290rpx;margin: 0 auto;}
+.order-details .writeOff .grayBg .pictrue image {width: 100%;height: 100%;display: block;}
+.order-details .writeOff .gear {width: 590rpx;height: 30rpx;margin: 0 auto;}
+.order-details .writeOff .gear image {width: 100%;height: 100%;display: block;}
+.order-details .writeOff .num {background-color: #f0c34c;width: 590rpx;height: 84rpx;
+ color: #282828;font-size: 48rpx;margin: 0 auto;border-radius: 0 0 20rpx 20rpx;
+ text-align: center;padding-top: 4rpx;}
+.order-details .writeOff .rules {margin: 46rpx 30rpx 0 30rpx;border-top: 1px solid #f0f0f0;
+ padding-top: 10rpx;}
+.order-details .writeOff .rules .item {margin-top:20rpx;}
+.order-details .writeOff .rules .item .rulesTitle {font-size: 28rpx;color: #282828;}
+.order-details .writeOff .rules .item .rulesTitle .iconfont {font-size: 30rpx;color: #333;
+ margin-right: 8rpx;margin-top: 5rpx;}
+.order-details .writeOff .rules .item .info {font-size: 28rpx;color: #999;margin-top:7rpx;}
+.order-details .writeOff .rules .item .info .time {margin-left: 20rpx;}
+.order-details .map {height: 86rpx;font-size: 30rpx;color: #282828;line-height: 86rpx;
+ border-bottom: 1px solid #f0f0f0;margin-top: 13rpx;background-color: #fff;
+ padding: 0 30rpx;}
+.order-details .map .place {font-size: 26rpx;width: 176rpx;height: 50rpx;border-radius: 25rpx;line-height: 50rpx;text-align: center;}
+.order-details .map .place .iconfont {font-size: 27rpx;height: 27rpx;line-height: 27rpx;
+ margin: 2rpx 3rpx 0 0;}
+.order-details .address .name .iconfont {font-size: 34rpx;margin-left: 10rpx;}
+.order-details .contactCustomer{width:100%;height:86rpx;font-size:30rpx;text-align:center;line-height:86rpx;background-color:#fff;}
+.order-details .contactCustomer .iconfont{font-size:34rpx;margin-right: 14rpx;}
diff --git a/template/xcx/pages/order_list/index.js b/template/xcx/pages/order_list/index.js
new file mode 100644
index 000000000..dcbc6b77b
--- /dev/null
+++ b/template/xcx/pages/order_list/index.js
@@ -0,0 +1,246 @@
+import { getOrderList, orderData, orderCancel, orderDel, orderPay } from '../../api/order.js';
+import { getUserInfo } from '../../api/user.js';
+import { openOrderSubscribe } from '../../utils/SubscribeMessage.js';
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '我的订单',
+ 'color': true,
+ 'class': '0'
+ },
+ loading:false,//是否加载中
+ loadend:false,//是否加载完毕
+ loadTitle:'加载更多',//提示语
+ orderList:[],//订单数组
+ orderData:{},//订单详细统计
+ orderStatus:0,//订单状态
+ page:1,
+ limit:10,
+ isClose:false,
+ payMode:[
+ { name: "微信支付", icon: "icon-weixinzhifu", value: 'weixin', title: '微信快捷支付' },
+ { name: "余额支付", icon: "icon-yuezhifu", value: 'yue', title: '可用余额:',number:0},
+ ],
+ pay_close:false,
+ pay_order_id:'',
+ totalPrice:'0',
+ },
+
+ /**
+ * 登录回调
+ *
+ */
+ onLoadFun:function(){
+ this.getOrderData();
+ this.getOrderList();
+ this.getUserInfo();
+ },
+ /**
+ * 事件回调
+ *
+ */
+ onChangeFun:function(e){
+ let opt = e.detail;
+ let action = opt.action || null;
+ let value = opt.value != undefined ? opt.value : null;
+ (action && this[action]) && this[action](value);
+ },
+ /**
+ * 获取用户信息
+ *
+ */
+ getUserInfo:function(){
+ let that = this;
+ getUserInfo().then(res=>{
+ that.data.payMode[1].number = res.data.now_money;
+ that.setData({ payMode: that.data.payMode});
+ });
+ },
+ /**
+ * 关闭支付组件
+ *
+ */
+ pay_close:function(){
+ this.setData({ pay_close:false});
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (options.status) this.setData({ orderStatus:options.status});
+ this.setData({ 'parameter.return': options.is_return ? '0' : '1'});
+ },
+ /**
+ * 获取订单统计数据
+ *
+ */
+ getOrderData:function(){
+ var that=this;
+ orderData().then(res=>{
+ that.setData({ orderData: res.data });
+ })
+ },
+ /**
+ * 取消订单
+ *
+ */
+ cancelOrder:function(e){
+ var order_id = e.currentTarget.dataset.order_id;
+ var index = e.currentTarget.dataset.index,that=this;
+ if (!order_id) return app.Tips({title:'缺少订单号无法取消订单'});
+ orderCancel(order_id).then(res=>{
+ return app.Tips({ title: res.msg, icon: 'success' }, function () {
+ that.data.orderList.splice(index, 1);
+ that.setData({ orderList: that.data.orderList, 'orderData.unpaid_count': that.data.orderData.unpaid_count - 1 });
+ that.getOrderData();
+ });
+ }).catch(err=>{
+ return app.Tips({title:err});
+ });
+ },
+ /**
+ * 打开支付组件
+ *
+ */
+ goPay:function(e){
+ let order_id = e.currentTarget.dataset.order_id, pay_price = e.currentTarget.dataset.pay_price;
+ this.setData({ pay_close: true, pay_order_id: order_id, totalPrice: pay_price});
+ },
+ /**
+ * 支付成功回调
+ *
+ */
+ pay_complete:function(){
+ this.setData({ loadend: false, page: 1, orderList: [], pay_close: false, pay_order_id:''});
+ this.getOrderData();
+ this.getOrderList();
+ },
+ /**
+ * 支付失败回调
+ *
+ */
+ pay_fail:function(){
+ this.setData({ pay_close: false, pay_order_id:''});
+ },
+ /**
+ * 去订单详情
+ */
+ goOrderDetails:function(e){
+ var order_id = e.currentTarget.dataset.order_id;
+ if (!order_id) return app.Tips({ title: '缺少订单号无法查看订单详情' });
+ wx.showLoading({
+ title: '正在加载',
+ })
+ openOrderSubscribe().then(()=>{
+ wx.hideLoading();
+ wx.navigateTo({ url: '/pages/order_details/index?order_id=' + order_id })
+ }).catch(()=>{
+ wx.hideLoading();
+ })
+ },
+ /**
+ * 切换类型
+ */
+ statusClick:function(e){
+ var status = e.currentTarget.dataset.status;
+ if (status == this.data.orderStatus) return;
+ this.setData({ orderStatus: status, loadend: false, page: 1, orderList:[]});
+ this.getOrderList();
+ },
+ /**
+ * 获取订单列表
+ */
+ getOrderList:function(){
+ var that=this;
+ if(that.data.loadend) return;
+ if(that.data.loading) return;
+ that.setData({ loading: true, loadTitle:""});
+ getOrderList({
+ type: that.data.orderStatus,
+ page: that.data.page,
+ limit: that.data.limit,
+ }).then(res=>{
+ var list = res.data || [];
+ var loadend = list.length < that.data.limit;
+ that.data.orderList = app.SplitArray(list, that.data.orderList);
+ that.setData({
+ orderList: that.data.orderList,
+ loadend: loadend,
+ loading: false,
+ loadTitle: loadend ? "我也是有底线的" : '加载更多',
+ page: that.data.page + 1,
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: "加载更多" });
+ })
+ },
+
+ /**
+ * 删除订单
+ */
+ delOrder:function(e){
+ var order_id = e.currentTarget.dataset.order_id;
+ var index = e.currentTarget.dataset.index, that = this;
+ orderDel(order_id).then(res=>{
+ that.data.orderList.splice(index, 1);
+ that.setData({ orderList: that.data.orderList, 'orderData.unpaid_count': that.data.orderData.unpaid_count - 1 });
+ that.getOrderData();
+ return app.Tips({ title: '删除成功', icon: 'success' });
+ }).catch(err=>{
+ return app.Tips({title:err});
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if (app.globalData.isLog && this.data.isClose){
+ this.getOrderData();
+ this.setData({ loadend: false, page: 1, orderList:[]});
+ this.getOrderList();
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({ isClose:true});
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getOrderList();
+ },
+})
\ No newline at end of file
diff --git a/template/xcx/pages/order_list/index.json b/template/xcx/pages/order_list/index.json
new file mode 100644
index 000000000..cd5da651d
--- /dev/null
+++ b/template/xcx/pages/order_list/index.json
@@ -0,0 +1,9 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize",
+ "home": "/components/home/index",
+ "payment":"/components/payment/index"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/order_list/index.wxml b/template/xcx/pages/order_list/index.wxml
new file mode 100644
index 000000000..0b06bc730
--- /dev/null
+++ b/template/xcx/pages/order_list/index.wxml
@@ -0,0 +1,92 @@
+
+
+
+
+
+ 待付款
+ {{orderData.unpaid_count || 0}}
+
+
+ 待发货
+ {{orderData.unshipped_count || 0}}
+
+
+ 待收货
+ {{orderData.received_count || 0}}
+
+
+ 待评价
+ {{orderData.evaluated_count || 0}}
+
+
+ 已完成
+ {{orderData.complete_count || 0}}
+
+
+
+
+
+
+
+ 砍价
+ 拼团
+ 秒杀
+ {{item._add_time}}
+
+ 待付款
+ 待发货
+ 待收货
+ 待评价
+ 已完成
+ 待核销
+
+
+
+
+
+
+ {{item.productInfo.store_name}}
+
+ ¥{{item.productInfo.attrInfo.price}}
+ ¥{{item.productInfo.price}}
+ x{{item.cart_num}}
+
+
+
+ 共{{item.cartInfo.length || 0}}件商品,总金额
+ ¥{{item.pay_price}}
+
+
+
+ 取消订单
+ 立即付款
+ 查看详情
+ 查看详情
+ 去评价
+ 再次购买
+ 删除订单
+
+
+
+
+ {{loadTitle}}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/order_list/index.wxss b/template/xcx/pages/order_list/index.wxss
new file mode 100644
index 000000000..57058a915
--- /dev/null
+++ b/template/xcx/pages/order_list/index.wxss
@@ -0,0 +1,29 @@
+.my-order .header{height:260rpx;padding:0 30rpx;}
+.my-order .header .picTxt{height:190rpx;}
+.my-order .header .picTxt .text{color:rgba(255, 255, 255, 0.8);font-size:26rpx;font-family: 'Guildford Pro';}
+.my-order .header .picTxt .text .name{font-size:34rpx;font-weight:bold;color:#fff;margin-bottom:20rpx;}
+.my-order .header .picTxt .pictrue{width:122rpx;height:109rpx;}
+.my-order .header .picTxt .pictrue image{width:100%;height:100%;}
+.my-order .nav{background-color:#fff;width:690rpx;height:140rpx;border-radius:6rpx;margin:-73rpx auto 0 auto;}
+.my-order .nav .item{text-align:center;font-size:26rpx;color:#282828;padding:29rpx 0;}
+.my-order .nav .item.on{font-weight:bold;border-bottom:5rpx solid #e93323;}
+.my-order .nav .item .num{margin-top:18rpx;}
+.my-order .list{width:690rpx;margin:14rpx auto 0 auto;}
+.my-order .list .item{background-color:#fff;border-radius:6rpx;margin-bottom:14rpx;}
+.my-order .list .item .title{height:84rpx;padding:0 30rpx;border-bottom:1rpx solid #eee;font-size:28rpx;color:#282828;}
+.my-order .list .item .title .sign{font-size: 24rpx;padding: 0 7rpx;height: 36rpx;margin-right: 15rpx;}
+.my-order .list .item .item-info{padding:0 30rpx;margin-top:22rpx;}
+.my-order .list .item .item-info .pictrue{width:120rpx;height:120rpx;}
+.my-order .list .item .item-info .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.my-order .list .item .item-info .text{width:486rpx;font-size:28rpx;color:#999;margin-top:6rpx;}
+.my-order .list .item .item-info .text .name{width:306rpx;color:#282828;}
+.my-order .list .item .item-info .text .money{text-align:right;}
+.my-order .list .item .totalPrice{font-size:26rpx;color:#282828;text-align:right;margin:27rpx 0 0 30rpx;padding:0 30rpx 30rpx 0;border-bottom:1rpx solid #eee;}
+.my-order .list .item .totalPrice .money{font-size:28rpx;font-weight:bold;}
+.my-order .list .item .bottom{height:107rpx;padding:0 30rpx;}
+.my-order .list .item .bottom .bnt{width:176rpx;height:60rpx;text-align:center;line-height:60rpx;color:#fff;border-radius:50rpx;font-size:27rpx;}
+.my-order .list .item .bottom .bnt.cancelBnt{border:1rpx solid #ddd;color:#aaa;}
+.my-order .list .item .bottom .bnt~.bnt{margin-left:17rpx;}
+ .noCart{margin-top:171rpx;padding-top: 0.1rpx;}
+ .noCart .pictrue{width:414rpx;height:336rpx;margin:78rpx auto 56rpx auto;}
+ .noCart .pictrue image{width:100%;height:100%;}
diff --git a/template/xcx/pages/order_pay_status/index.js b/template/xcx/pages/order_pay_status/index.js
new file mode 100644
index 000000000..903cf12db
--- /dev/null
+++ b/template/xcx/pages/order_pay_status/index.js
@@ -0,0 +1,73 @@
+
+import { getOrderDetail} from '../../api/order.js';
+import { openOrderSubscribe } from '../../utils/SubscribeMessage.js'
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '0',
+ 'title': '支付成功'
+ },
+ orderId:'',
+ order_pay_info: { paid :1 }
+ },
+ onLoadFun:function(){
+ this.getOrderPayInfo();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (!options.order_id) return app.Tips({title:'缺少参数无法查看订单支付状态'},{tab:3,url:1});
+ this.setData({ orderId: options.order_id, status: options.status || 0, msg: options.msg || ''});
+ },
+ /**
+ *
+ * 支付完成查询支付状态
+ *
+ */
+ getOrderPayInfo:function(){
+ var that=this;
+ wx.showLoading({title: '正在加载中'});
+ getOrderDetail(this.data.orderId).then(res=>{
+ wx.hideLoading();
+ that.setData({ order_pay_info: res.data, 'parameter.title': res.data.paid ? '支付成功' : '支付失败' });
+ }).catch(err=>{
+ wx.hideLoading();
+ });
+ },
+ /**
+ * 去首页关闭当前所有页面
+ */
+ goIndex:function(e){
+ wx.switchTab({url:'/pages/index/index'});
+ },
+
+ /**
+ *
+ * 去订单详情页面
+ */
+ goOrderDetails:function(e)
+ {
+ let that = this;
+ wx.showLoading({
+ title: '正在加载',
+ })
+ openOrderSubscribe().then(res => {
+ wx.hideLoading();
+ wx.navigateTo({
+ url: '/pages/order_details/index?order_id=' + that.data.orderId
+ });
+ }).catch(() => {
+ wx.hideLoading();
+ });
+ }
+
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/order_pay_status/index.json b/template/xcx/pages/order_pay_status/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/order_pay_status/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/order_pay_status/index.wxml b/template/xcx/pages/order_pay_status/index.wxml
new file mode 100644
index 000000000..0f8d8907b
--- /dev/null
+++ b/template/xcx/pages/order_pay_status/index.wxml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ {{order_pay_info.paid ? '订单支付成功':'订单支付失败'}}
+ 订单创建成功
+
+
+ 订单编号
+ {{orderId}}
+
+
+ 下单时间
+ {{order_pay_info._pay_time}}
+
+
+ 支付方式
+ {{order_pay_info._status._payType}}
+
+
+ 支付金额
+ {{order_pay_info.pay_price}}
+
+
+
+ 失败原因
+ {{status==2 ? '取消支付':msg}}
+
+
+
+
+ 查看订单
+
+
+ 重新购买
+
+
+ 重新支付
+
+
+ 返回首页
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/order_pay_status/index.wxss b/template/xcx/pages/order_pay_status/index.wxss
new file mode 100644
index 000000000..4ef76b51f
--- /dev/null
+++ b/template/xcx/pages/order_pay_status/index.wxss
@@ -0,0 +1,11 @@
+.payment-status{background-color:#fff;margin:195rpx 30rpx 0 30rpx;border-radius:10rpx;padding:1rpx 0 28rpx 0;}
+.payment-status .iconfont{font-size:70rpx;width:140rpx;height:140rpx;border-radius:50%;color:#fff;text-align:center;line-height:140rpx;text-shadow:0px 4px 0px #df1e14;border:6rpx solid #f5f5f5;margin:-76rpx auto 0 auto;background-color:#999;}
+.payment-status .iconfont.fail{text-shadow:0px 4px 0px #7a7a7a;}
+.payment-status .status{font-size:32rpx;font-weight:bold;text-align:center;margin:25rpx 0 37rpx 0;}
+.payment-status .wrapper{border:1rpx solid #eee;margin:0 30rpx 47rpx 30rpx;padding:35rpx 0;border-left:0;border-right:0;}
+.payment-status .wrapper .item{font-size:28rpx;color:#282828;}
+.payment-status .wrapper .item~.item{margin-top:20rpx;}
+.payment-status .wrapper .item .itemCom{color:#666;}
+.payment-status .returnBnt{width:630rpx;height:86rpx;border-radius:50rpx;color:#fff;font-size:30rpx;text-align:center;line-height:86rpx;margin:0 auto 20rpx auto;}
+
+
diff --git a/template/xcx/pages/promoter-list/index.js b/template/xcx/pages/promoter-list/index.js
new file mode 100644
index 000000000..b05461ba2
--- /dev/null
+++ b/template/xcx/pages/promoter-list/index.js
@@ -0,0 +1,150 @@
+// pages/promoter-list/index.js
+
+import { spreadPeople } from '../../api/user.js';
+
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '推广人列表',
+ 'color': true,
+ 'class': '0'
+ },
+ total:0,
+ totalLevel:0,
+ teamCount: 0,
+ page: 1,
+ limit: 20,
+ keyword:'',
+ sort:'',
+ grade:0,
+ status: false,
+ recordList:[],
+ },
+
+ onLoadFun:function(e){
+ this.userSpreadNewList();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if(this.data.is_show) this.userSpreadNewList();
+ },
+ setSort: function (e) {
+ var that = this;
+ that.setData({
+ sort: e.currentTarget.dataset.sort,
+ page: 1,
+ limit: 20,
+ status: false,
+ recordList: [],
+ });
+ that.userSpreadNewList();
+ },
+ setKeyword: function (e) {
+ this.setData({ keyword: e.detail.value });
+ },
+ setRecordList: function () {
+ this.setData({
+ page: 1,
+ limit: 20,
+ status: false,
+ recordList: [],
+ });
+ this.userSpreadNewList();
+ },
+ setType:function(e){
+ if (this.data.grade != e.currentTarget.dataset.grade) {
+ this.setData({
+ grade: e.currentTarget.dataset.grade,
+ page: 1,
+ limit: 20,
+ keyword: '',
+ sort: '',
+ status: false,
+ recordList: [],
+ });
+ this.userSpreadNewList();
+ }
+ },
+ userSpreadNewList: function () {
+ var that = this;
+ var page = that.data.page;
+ var limit = that.data.limit;
+ var status = that.data.status;
+ var keyword = that.data.keyword;
+ var sort = that.data.sort;
+ var grade = that.data.grade;
+ var recordList = that.data.recordList;
+ var recordListNew = [];
+ if (status == true) return;
+ spreadPeople({
+ page: page,
+ limit: limit,
+ keyword: keyword,
+ grade: grade,
+ sort: sort,
+ }).then(res=>{
+ var len = res.data.list.length;
+ var recordListData = res.data.list;
+ recordListNew = recordList.concat(recordListData);
+ that.setData({
+ total: res.data.total,
+ totalLevel: res.data.totalLevel,
+ teamCount: Number(res.data.total) + Number(res.data.totalLevel),
+ status: limit > len,
+ page: page + 1,
+ recordList: recordListNew
+ });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({is_show:true});
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.userSpreadNewList();
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/promoter-list/index.json b/template/xcx/pages/promoter-list/index.json
new file mode 100644
index 000000000..4912fb41c
--- /dev/null
+++ b/template/xcx/pages/promoter-list/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/promoter-list/index.wxml b/template/xcx/pages/promoter-list/index.wxml
new file mode 100644
index 000000000..b0358f3b0
--- /dev/null
+++ b/template/xcx/pages/promoter-list/index.wxml
@@ -0,0 +1,69 @@
+
+
+
+
+ 一级({{total}})
+ 二级({{totalLevel}})
+
+
+
+
+
+
+
+ 团队排序
+
+
+ 团队排序
+
+
+ 团队排序
+
+
+ 金额排序
+
+
+ 金额排序
+
+
+ 金额排序
+
+
+ 订单排序
+
+
+ 订单排序
+
+
+ 订单排序
+
+
+
+
+
+
+
+
+ {{item.nickname}}
+ 加入时间: {{item.time}}
+
+
+
+ {{item.childCount ? item.childCount : 0}} 人
+ {{item.orderCount ? item.orderCount : 0}} 单
+ {{item.numberCount ? item.numberCount : 0}} 元
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/promoter-list/index.wxss b/template/xcx/pages/promoter-list/index.wxss
new file mode 100644
index 000000000..f8dedf528
--- /dev/null
+++ b/template/xcx/pages/promoter-list/index.wxss
@@ -0,0 +1,21 @@
+.promoter-list .nav{background-color:#fff;height:86rpx;line-height:86rpx;font-size:28rpx;color:#282828;border-bottom:1rpx solid #eee;}
+.promoter-list .nav .item.on{border-bottom:5rpx solid #e93323;color:#e93323;}
+.promoter-list .search{width:100%;background-color:#fff;height:86rpx;padding:0 30rpx;box-sizing:border-box;}
+.promoter-list .search .input{width:630rpx;height:60rpx;border-radius:50rpx;background-color:#f5f5f5;text-align:center;position:relative;}
+.promoter-list .search .input input{height:100%;font-size:26rpx;width:620rpx;text-align:center;}
+.promoter-list .search .input .placeholder{color:#bbb;}
+.promoter-list .search .input .iconfont{position:absolute;right:28rpx;color:#999;font-size:28rpx;top:50%;transform:translateY(-50%);}
+.promoter-list .search .iconfont{font-size:45rpx;color:#515151;}
+.promoter-list .list{margin-top:12rpx;}
+.promoter-list .list .sortNav{background-color:#fff;height:76rpx;border-bottom:1rpx solid #eee;color:#333;font-size:28rpx;}
+.promoter-list .list .sortNav .sortItem{text-align:center;flex:1;}
+.promoter-list .list .sortNav .sortItem image{width:24rpx;height:24rpx;margin-left:6rpx;vertical-align:-3rpx;}
+.promoter-list .list .item{background-color:#fff;border-bottom:1rpx solid #eee;height:152rpx;padding:0 30rpx 0 20rpx;font-size:24rpx;color:#666;}
+.promoter-list .list .item .picTxt{width:440rpx;}
+.promoter-list .list .item .picTxt .pictrue{width:106rpx;height:106rpx;border-radius:50%;}
+.promoter-list .list .item .picTxt .pictrue image{width:100%;height:100%;border-radius:50%;border:3rpx solid #fff;box-shadow:0 0 10rpx #aaa;box-sizing:border-box;}
+.promoter-list .list .item .picTxt .text{width:304rpx;font-size:24rpx;color:#666;}
+.promoter-list .list .item .picTxt .text .name{font-size:28rpx;color:#333;margin-bottom:13rpx;}
+.promoter-list .list .item .right{width:240rpx;text-align:right;font-size:22rpx;color:#333;}
+
+
diff --git a/template/xcx/pages/promoter-order/index.js b/template/xcx/pages/promoter-order/index.js
new file mode 100644
index 000000000..65c320412
--- /dev/null
+++ b/template/xcx/pages/promoter-order/index.js
@@ -0,0 +1,107 @@
+// pages/promoter-order/index.js
+
+import { spreadOrder } from '../../api/user.js';
+
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '推广人订单',
+ 'color':true,
+ 'class':'0'
+ },
+ loading: false,//是否加载中
+ loadend: false,//是否加载完毕
+ loadTitle: '加载更多',//提示语
+ page: 1,
+ limit: 5,
+ recordList: [],
+ recordCount: 0,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ this.getRecordOrderList();
+ },
+ getRecordOrderList: function () {
+ var that = this;
+ if (that.data.loadend) return;
+ if (that.data.loading) return;
+ that.setData({ loading: true, loadTitle: "" });
+ var page = that.data.page;
+ var limit = that.data.limit;
+ spreadOrder({ page: page, limit: limit }).then(res=>{
+ var list = res.data.list || [];
+ var loadend = list.length < that.data.limit;
+ var recordList = that.data.recordList;
+ recordList = recordList.concat(res.data.list);
+ that.setData({
+ recordList: recordList,
+ loadend: loadend,
+ loading: false,
+ loadTitle: loadend ? "我也是有底线的" : '加载更多',
+ page: that.data.page + 1,
+ recordCount: res.data.count
+ });
+ }).catch(function(){
+ that.setData({ loading: false, loadTitle: "加载更多" });
+ })
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getRecordOrderList();
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/promoter-order/index.json b/template/xcx/pages/promoter-order/index.json
new file mode 100644
index 000000000..ed5513eb0
--- /dev/null
+++ b/template/xcx/pages/promoter-order/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/promoter-order/index.wxml b/template/xcx/pages/promoter-order/index.wxml
new file mode 100644
index 000000000..fb2dda17c
--- /dev/null
+++ b/template/xcx/pages/promoter-order/index.wxml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+ {{item.time}}
+ 本月累计推广订单:{{item.count || 0}}单
+
+
+
+
+
+
+
+ {{child.nickname}}
+
+ 暂未返佣
+ 返佣:¥{{child.number}}
+
+
+ 订单编号: {{child.order_id}}
+ 下单时间: {{child.time}}
+ 返佣时间: {{child.time}}
+
+
+
+
+
+
+
+ {{loadTitle}}
+
+
+
diff --git a/template/xcx/pages/promoter-order/index.wxss b/template/xcx/pages/promoter-order/index.wxss
new file mode 100644
index 000000000..c65d3771f
--- /dev/null
+++ b/template/xcx/pages/promoter-order/index.wxss
@@ -0,0 +1,17 @@
+.promoter-order .list{width:100%;overflow:hidden;}
+.promoter-order .list .item .title{height:133rpx;padding:0 30rpx;font-size:26rpx;color:#999;}
+.promoter-order .list .item .title .data{font-size:28rpx;color:#282828;margin-bottom:5rpx;}
+.promoter-order .list .item .listn .itenm{background-color:#fff;}
+.promoter-order .list .item .listn .itenm~.itenm{margin-top:12rpx;}
+.promoter-order .list .item .listn .itenm .top{margin-left:30rpx;padding-right:30rpx;border-bottom:1rpx solid #eee;height:100rpx;}
+.promoter-order .list .item .listn .itenm .top .pictxt{width:320rpx;}
+.promoter-order .list .item .listn .itenm .top .pictxt .text{width:230rpx;font-size:30rpx;color:#282828;}
+.promoter-order .list .item .listn .itenm .top .pictxt .pictrue{width:66rpx;height:66rpx;}
+.promoter-order .list .item .listn .itenm .top .pictxt .pictrue image{width:100%;height:100%;border-radius:50%;border:3rpx solid #fff;box-sizing:border-box;box-shadow:0 0 15rpx #aaa;}
+.promoter-order .list .item .listn .itenm .top .money{font-size:28rpx;}
+.promoter-order .list .item .listn .itenm .bottom{padding:20rpx 30rpx;font-size:28rpx;color:#666;line-height:1.6;}
+.promoter-order .list .item .listn .itenm .bottom .name{color:#999;}
+
+
+
+
diff --git a/template/xcx/pages/promoter_rank/index.js b/template/xcx/pages/promoter_rank/index.js
new file mode 100644
index 000000000..c25877668
--- /dev/null
+++ b/template/xcx/pages/promoter_rank/index.js
@@ -0,0 +1,139 @@
+// pages/promoter_rank/index.js
+import { getRankList } from '../../api/user.js';
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '推广人排行',
+ 'color': true,
+ 'class': '0'
+ },
+ navList: ["周榜", "月榜"],
+ active: 0,
+ page:1,
+ limit:15,
+ type:'week',
+ loading:false,
+ loadend:false,
+ loadTitle:"加载更多",
+ rankList:[],
+ Two: {},
+ One: {},
+ Three:{},
+ },
+ onLoadFun:function(e){
+ this.getRanklist();
+ },
+ getRanklist:function(){
+ let that = this;
+ if(that.data.loadend) return;
+ if(that.data.loading) return;
+ that.setData({ loading: true, loadTitle: ""});
+ getRankList({
+ page:this.data.page,
+ limit:this.data.limit,
+ type: this.data.type
+ }).then(res=>{
+ let list = res.data;
+ that.data.rankList = that.data.rankList.concat(list);
+ if(that.data.page == 1){
+ that.data.One=that.data.rankList.shift() || {};
+ that.data.Two = that.data.rankList.shift() || {};
+ that.data.Three = that.data.rankList.shift() || {};
+ }
+ let loadend = list.length < that.data.limit;
+ that.setData({
+ loadend: loadend,
+ loading:false,
+ rankList: that.data.rankList,
+ page: that.data.page+1,
+ loadTitle: loadend ? "我也是有底线的" : '加载更多',
+ One: that.data.One,
+ Two: that.data.Two,
+ Three: that.data.Three,
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: "加载更多"});
+ })
+ },
+
+ switchTap:function(e){
+ var index = e.currentTarget.dataset.index;
+ if (this.data.active === index) return;
+ this.setData({
+ active:index,
+ type: index ? 'month': 'week',
+ page:1,
+ loadend:false,
+ rankList:[],
+ Two:{},
+ One:{},
+ Three:{}
+ });
+ this.getRanklist();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if(this.data.isClone && app.globalData.isLog){
+ this.setData({ loadend: false, page: 1, rankList:[]});
+ this.getRanklist();
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({isClone:true});
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getRanklist();
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/promoter_rank/index.json b/template/xcx/pages/promoter_rank/index.json
new file mode 100644
index 000000000..db2238595
--- /dev/null
+++ b/template/xcx/pages/promoter_rank/index.json
@@ -0,0 +1,7 @@
+{
+ "navigationBarTextStyle": "white",
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/promoter_rank/index.wxml b/template/xcx/pages/promoter_rank/index.wxml
new file mode 100644
index 000000000..67817affe
--- /dev/null
+++ b/template/xcx/pages/promoter_rank/index.wxml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+ {{index+3}}
+
+
+ {{item.nickname}}
+
+ {{item.count}}人
+
+
+ {{loadTitle}}
+
+
+
+
diff --git a/template/xcx/pages/promoter_rank/index.wxss b/template/xcx/pages/promoter_rank/index.wxss
new file mode 100644
index 000000000..9bb2ae341
--- /dev/null
+++ b/template/xcx/pages/promoter_rank/index.wxss
@@ -0,0 +1,31 @@
+.PromoterRank .redBg {padding: 45rpx 0 30rpx 0;}
+.PromoterRank .header {background: url("data:image/jpeg;base64,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") no-repeat;
+ width: 100%;height: 460rpx;background-size: 100% 100%;}
+.PromoterRank .header .nav {width: 450rpx;height: 66rpx;border: 1px solid #fff;
+ border-radius: 33rpx;font-size: 30rpx;color: #fff;margin: 0 auto;}
+.PromoterRank .header .nav .item {width: 223rpx;height: 100%;text-align: center;line-height: 60rpx;}
+.PromoterRank .header .nav .item.font-color:nth-of-type(1) {background-color: #fff;
+ border-radius: 33rpx 0 0 33rpx;}
+.PromoterRank .header .nav .item.font-color:nth-of-type(2) {background-color: #fff;
+ border-radius: 0 33rpx 33rpx 0;}
+.PromoterRank .header .rank {padding: 0 20rpx;margin-top: 30rpx;}
+.PromoterRank .header .rank .item{width: 210rpx;}
+.PromoterRank .header .rank .item .pictrue {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIgAAACxCAYAAAAfz/U3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxNGUyNzRkOS00YmQ4LTUzNGItYWZkZS02ZTlmMTgxYmZlYWUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODVBODg2MzdEOEU1MTFFOTg4RTM5OTQyQjhDODMzMTciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODVBODg2MzZEOEU1MTFFOTg4RTM5OTQyQjhDODMzMTciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTAxZGU2OWItNWM2My0xOTQ1LTllZmMtMGIzNjcwYTFmNWUxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE0ZTI3NGQ5LTRiZDgtNTM0Yi1hZmRlLTZlOWYxODFiZmVhZSIv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") no-repeat;
+ background-size: 100% 100%;width: 136rpx;height: 177rpx;position: relative;margin: 0 auto;}
+.PromoterRank .header .rank .item .pictrue image {position: absolute;width: 130rpx;height: 130rpx;display: block;bottom: 2rpx;border-radius: 50%;left: 50%;margin-left: -65rpx;}
+.PromoterRank .header .rank .item:nth-of-type(2) .pictrue {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJwAAADNCAYAAABNahkfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxNGUyNzRkOS00YmQ4LTUzNGItYWZkZS02ZTlmMTgxYmZlYWUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUU1MTlBRjBEOEU1MTFFOUEwRjRGRTQyMUZGNDk5NEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUU1MTlBRUZEOEU1MTFFOUEwRjRGRTQyMUZGNDk5NEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTAxZGU2OWItNWM2My0xOTQ1LTllZmMtMGIzNjcwYTFmNWUxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE0ZTI3NGQ5LTRiZDgtNTM0Yi1hZmRlLTZlOWYxODFiZmVhZSIv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");width: 156rpx;height: 205rpx;}
+.PromoterRank .header .rank .item:nth-of-type(2) .pictrue image {width: 150rpx;height: 150rpx;margin-left: -75rpx;}
+.PromoterRank .header .rank .item:nth-of-type(3) .pictrue {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIgAAACxCAYAAAAfz/U3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxNGUyNzRkOS00YmQ4LTUzNGItYWZkZS02ZTlmMTgxYmZlYWUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTExRTlGRDlEOEU2MTFFOTg0MDg4RjQ5MDM3QjNGRTIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTExRTlGRDhEOEU2MTFFOTg0MDg4RjQ5MDM3QjNGRTIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTAxZGU2OWItNWM2My0xOTQ1LTllZmMtMGIzNjcwYTFmNWUxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE0ZTI3NGQ5LTRiZDgtNTM0Yi1hZmRlLTZlOWYxODFiZmVhZSIv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");}
+.PromoterRank .header .rank .item:nth-of-type(3) .pictrue image {margin-left: -64rpx;}
+.PromoterRank .header .rank .item .name {font-size: 30rpx;color: #fff;margin:22rpx auto 0 auto;text-align: center;width:200rpx;}
+.PromoterRank .header .rank .item .num {font-size: 30rpx;color: #fff;text-align: center;}
+.PromoterRank .list {width: 710rpx;background-color: #fff;border-radius: 20rpx;
+ margin: -60rpx auto 0 auto;padding: 0 30rpx;}
+.PromoterRank .list .item {border-bottom: 1px solid #f3f3f3;height: 101rpx;font-size: 28rpx;}
+.PromoterRank .list .item .num {color: #666;width: 70rpx;}
+.PromoterRank .list .item .picTxt {width: 350rpx;}
+.PromoterRank .list .item .picTxt .pictrue {width: 68rpx;height: 68rpx;}
+.PromoterRank .list .item .picTxt .pictrue image {width: 100%;height: 100%;display: block;
+ border-radius: 50%;}
+.PromoterRank .list .item .picTxt .text {width: 262rpx;color: #333;}
+.PromoterRank .list .item .people {width: 175rpx;text-align: right;}
\ No newline at end of file
diff --git a/template/xcx/pages/promotional-items/index.js b/template/xcx/pages/promotional-items/index.js
new file mode 100644
index 000000000..64e32e87b
--- /dev/null
+++ b/template/xcx/pages/promotional-items/index.js
@@ -0,0 +1,96 @@
+import { getGroomList } from '../../api/store.js';
+
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '促销单品'
+ },
+ loading:false,
+ loadend:false,
+ page:1,
+ limit:20
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.getIndexGroomList();
+ },
+ getIndexGroomList: function(){
+ var that=this
+ if(this.data.loadend) return false;
+ if(this.data.loading) return false;
+ that.setData({loading:true,loadTitle:'正在搜索'});
+ getGroomList(4,{ page: that.data.page, limit: that.data.limit }).then(res=>{
+ var list=res.data.list,loadend=list.length < that.data.limit;
+ var bastList = app.SplitArray(list, that.data.bastList);
+ that.setData({
+ loading: false,
+ bastList: bastList,
+ page:that.data.page+1,
+ loadend: loadend,
+ loadTitle: loadend ? '已全部加载' : '加载更多',
+ imgUrls: res.data.banner
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: "加载更多" });
+ });
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getIndexGroomList();
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/promotional-items/index.json b/template/xcx/pages/promotional-items/index.json
new file mode 100644
index 000000000..9ec65a056
--- /dev/null
+++ b/template/xcx/pages/promotional-items/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "swipers": "/components/swipers/index",
+ "promotionGood": "/components/promotionGood/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/promotional-items/index.wxml b/template/xcx/pages/promotional-items/index.wxml
new file mode 100644
index 000000000..d7a2d46be
--- /dev/null
+++ b/template/xcx/pages/promotional-items/index.wxml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ 促销单品
+
+
+
+
+ {{loadTitle}}
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/promotional-items/index.wxss b/template/xcx/pages/promotional-items/index.wxss
new file mode 100644
index 000000000..a94d7d990
--- /dev/null
+++ b/template/xcx/pages/promotional-items/index.wxss
@@ -0,0 +1,5 @@
+page{background-color:#fff!important;}
+.quality-recommend .title{height:120rpx;font-size:32rpx;color:#282828;background-color:#f5f5f5;}
+.quality-recommend .title .line{width:230rpx;height:2rpx;background-color:#e9e9e9;}
+.quality-recommend .title .name{margin:0 20rpx;}
+.quality-recommend .title .name .iconfont{margin-right:13rpx;font-size:38rpx;vertical-align:-4rpx;color:#343434;}
\ No newline at end of file
diff --git a/template/xcx/pages/user/user.js b/template/xcx/pages/user/user.js
new file mode 100644
index 000000000..ddd5891d9
--- /dev/null
+++ b/template/xcx/pages/user/user.js
@@ -0,0 +1,139 @@
+const app = getApp();
+
+import { getMenuList, getUserInfo} from '../../api/user.js';
+import { switchH5Login } from '../../api/api.js';
+import authLogin from '../../utils/autuLogin.js';
+import util from '../../utils/util.js';
+import wxh from '../../utils/wxh.js';
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '0',
+ 'title': '个人中心',
+ 'color': true,
+ 'class': '0'
+ },
+ userInfo:{},
+ MyMenus:[],
+ isGoIndex:false,
+ iShidden:true,
+ isAuto:false,
+ switchActive:false,
+ loginType: app.globalData.loginType,
+ orderStatusNum:{},
+ promoter_price:0,
+ generalActive:false,
+ generalContent:{
+ promoterNum:'',
+ title:'您未获得推广权限'
+ }
+ },
+
+ close:function(){
+ this.setData({ switchActive:false});
+ },
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(e){
+ this.getUserInfo();
+ this.getMyMenus();
+ },
+ Setting: function () {
+ wx.openSetting({
+ success: function (res) {
+ console.log(res.authSetting)
+ wxh.selfLocation();
+ }
+ });
+ },
+ /**
+ *
+ * 获取个人中心图标
+ */
+ getMyMenus: function () {
+ var that = this;
+ if (this.data.MyMenus.length) return;
+ getMenuList().then(res=>{
+ that.setData({ MyMenus: res.data.routine_my_menus });
+ });
+ },
+ /**
+ * 获取个人用户信息
+ */
+ getUserInfo:function(){
+ var that=this;
+ getUserInfo().then(res=>{
+ const generalContent="generalContent.promoterNum";
+ that.setData({
+ userInfo: res.data,
+ loginType: res.data.login_type,
+ orderStatusNum: res.data.orderStatusNum,
+ [generalContent]:`您在商城累计消费金额仅差 ${res.data.promoter_price || 0}元即可开通推广权限`
+ });
+ });
+ },
+ generalWindow:function(){
+ this.setData({
+ generalActive: false
+ })
+ },
+ /**
+ * 页面跳转
+ */
+ goPages:function(e){
+ if(app.globalData.isLog){
+ if (e.currentTarget.dataset.url == '/pages/user_spread_user/index') {
+ if (!this.data.userInfo.is_promoter && this.data.userInfo.statu == 1)
+ return app.Tips({ title: '您还没有推广权限!!' });
+ if (!this.data.userInfo.is_promoter && this.data.userInfo.statu == 2){
+ return this.setData({ generalActive:true});
+ }
+ }
+ if (e.currentTarget.dataset.url == '/pages/logon/index') return this.setData({ switchActive:true});
+ wx.navigateTo({
+ url: e.currentTarget.dataset.url
+ })
+ }else{
+ this.setData({ iShidden:false});
+ }
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.setData({ MyMenus:app.globalData.MyMenus});
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({ switchActive: false });
+ },
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+ onShow:function(){
+ let that = this;
+ if (app.globalData.isLog){
+ this.getUserInfo();
+ this.getMyMenus();
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user/user.json b/template/xcx/pages/user/user.json
new file mode 100644
index 000000000..2e706a494
--- /dev/null
+++ b/template/xcx/pages/user/user.json
@@ -0,0 +1,8 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize",
+ "generalWindow": "/components/general-window/index"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user/user.wxml b/template/xcx/pages/user/user.wxml
new file mode 100644
index 000000000..b8e37c91c
--- /dev/null
+++ b/template/xcx/pages/user/user.wxml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+ 我的余额
+ {{userInfo.now_money || 0}}
+
+
+ 当前佣金
+ {{userInfo.brokerage_price || 0}}
+
+
+ 当前积分
+ {{userInfo.integral || 0}}
+
+
+ 优惠券
+ {{userInfo.couponCount || 0}}
+
+
+
+
+ 我的订单
+ 全部订单
+
+
+
+
+
+ {{ orderStatusNum.unpaid_count }}
+
+ 待付款
+
+
+
+
+ {{ orderStatusNum.unshipped_count }}
+
+ 待发货
+
+
+
+
+ {{ orderStatusNum.received_count }}
+
+ 待收货
+
+
+
+
+ {{ orderStatusNum.evaluated_count }}
+
+ 待评价
+
+
+
+
+ {{ orderStatusNum.refund_count }}
+
+ 售后/退款
+
+
+
+
+ 我的服务
+
+
+
+ {{item.name}}
+
+
+
+ 联系客服
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user/user.wxss b/template/xcx/pages/user/user.wxss
new file mode 100644
index 000000000..580ce6720
--- /dev/null
+++ b/template/xcx/pages/user/user.wxss
@@ -0,0 +1,40 @@
+.user .header{padding:0 30rpx;height:190rpx;position:relative;}
+.user .header:after { position: absolute;left: 0;right: 0;bottom: -98rpx;z-index: -1;
+ content:'';height:100rpx;width: 100%;border-radius: 0 0 50% 50%;background-color: #e93323;}
+.user .header .picTxt .pictrue{width:120rpx;height:120rpx;}
+.user .header .picTxt .pictrue image{width:100%;height:100%;border-radius:50%;border:2px solid #f5f5f5;}
+.user .header .picTxt .text{width:434rpx;color:rgba(255,255,255,1);margin-left:35rpx;}
+.user .header .picTxt .text .name{font-size:32rpx;max-width:270rpx;}
+.user .header .picTxt .text .member{padding:0 10rpx;height:36rpx;background-color:rgba(0, 0, 0, 0.2);font-size:20rpx;border-radius:30rpx;margin-left:17rpx;}
+.user .header .picTxt .text .member image{width:28rpx;height:28rpx;font-size:20rpx;margin-right:8rpx;}
+.user .header .picTxt .text .id{color:rgba(255,255,255,0.6);font-size:26rpx;margin-top:15rpx;}
+.user .header .picTxt .text .id .iconfont{font-size:30rpx;margin-left:12rpx;}
+.user .header .icon-shezhi{font-size:36rpx;color:#fff;margin-top:-52rpx;}
+.user .wrapper{padding:0 20rpx;}
+.user .wrapper .nav{background-color:#fff;border-radius:6rpx;height:140rpx;}
+.user .wrapper .nav .item{flex:1;text-align:center;font-size:26rpx;color:#aaa;}
+.user .wrapper .nav .item~.item{border-left:1px solid #eee;}
+.user .wrapper .nav .item .num{margin-top:10rpx;font-size:36rpx;color:#282828;}
+.user .wrapper .myOrder{background-color:#fff;border-radius:10rpx;margin-top:15rpx;}
+.user .wrapper .myOrder .title,.user .wrapper .myService .title{height:88rpx;padding:0 30rpx;border-bottom:1px dashed #ddd;font-size:30rpx;color:#282828;}
+.user .wrapper .myOrder .title .allOrder{font-size:26rpx;color:#666;}
+.user .wrapper .myOrder .title .allOrder .iconfont{font-size:30rpx;margin-left:7rpx;}
+.user .wrapper .myOrder .orderState{height:160rpx;}
+.user .wrapper .myOrder .orderState .item{font-size:26rpx;color:#454545;flex:1;text-align:center;}
+.user .wrapper .myOrder .orderState .item .pictrue{width:49rpx;height:42rpx;margin:0 auto 18rpx auto;position: relative;}
+.user .wrapper .myOrder .orderState .item .pictrue image{width:100%;height:100%;}
+.user .wrapper .myService{background-color:#fff;margin-top:15rpx;border-radius:10rpx;}
+.user .wrapper .myService .serviceList{padding:8rpx 0 27rpx 0;}
+.user .wrapper .myService .serviceList .item{width:25%;text-align:center;font-size:26rpx;color:#333;margin-top:30rpx;}
+.user .wrapper .myService .serviceList .item .pictrue{width:52rpx;height:52rpx;margin:0 auto 16rpx auto;}
+.user .wrapper .myService .serviceList .item .pictrue image{width:100%;height:100%;}
+.user .support{width:219rpx;height:74rpx;margin:54rpx auto;display:block;}
+.switchWindow{width:560rpx;border-radius:20rpx;background-color:#fff;position:fixed;top:50%;left:50%;margin-left:-280rpx;margin-top:-300rpx;z-index:99;padding:50rpx 30rpx 40rpx 30rpx;text-align:center;box-sizing:border-box;transition:all 0.3s ease-in-out 0s;opacity:0;transform: scale(0);}
+.switchWindow.on{opacity:1;transform: scale(1);}
+.switchWindow .pictrue{width:236rpx;height:236rpx;margin:0 auto;}
+.switchWindow .pictrue image{width:100%;height:100%;}
+.switchWindow .info{font-size:32rpx;color:#282828;margin-top:44rpx;font-weight:bold;}
+.switchWindow .switchBnt{font-size:32rpx;color:#fff;width:360rpx;height:82rpx;border-radius:41rpx;margin:57rpx auto 0 auto;background-image: linear-gradient(to right,#f67a38 0%,#f11b09 100%);line-height:82rpx;}
+.switchWindow .switchBnt.cancelBnt{background-color:#fff;color:#999;background-image:none;margin-top:10rpx;}
+.order-status-num {min-width:14rpx;background-color: #fff;color: #ee5a52;border-radius: 15px;position: absolute;right: -14rpx;top: -15rpx;font-size: 23rpx;padding: 0 8rpx; border: 1px solid #ee5a52;}
+.user .binding{padding: 2rpx 18rpx; background-color: #ca1f10; border-radius: 50px;font-size: 22rpx;border: 1px solid #e8695e;color: #ffffff;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_address/index.js b/template/xcx/pages/user_address/index.js
new file mode 100644
index 000000000..ebd8d90e5
--- /dev/null
+++ b/template/xcx/pages/user_address/index.js
@@ -0,0 +1,230 @@
+import { editAddress, getAddressDetail} from '../../api/user.js';
+import { getCity } from '../../api/api.js';
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '添加地址'
+ },
+ region: ['省', '市', '区'],
+ valueRegion: [0, 0, 0],
+ cartId:'',//购物车id
+ pinkId:0,//拼团id
+ couponId:0,//优惠券id
+ id:0,//地址id
+ userAddress: { is_default:false},//地址详情
+ cityId:0,
+ district:[],
+ multiArray:[],
+ multiIndex: [0, 0, 0],
+ },
+ /**
+ * 授权回调
+ *
+ */
+ onLoadFun:function(){
+ this.getUserAddress();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.setData({
+ cartId: options.cartId || '',
+ pinkId: options.pinkId || 0,
+ couponId: options.couponId || 0,
+ id: options.id || 0,
+ 'parameter.title': options.id ? '修改地址' : '添加地址'
+ });
+ this.getCityList();
+ },
+ getCityList:function(){
+ let that = this;
+ getCity().then(res=>{
+ that.setData({ district:res.data});
+ that.initialize();
+ })
+ },
+ initialize:function(){
+ let that = this, province = [], city = [], area = [];
+ if (that.data.district.length) {
+ let cityChildren = that.data.district[0].c || [];
+ let areaChildren = cityChildren.length ? (cityChildren[0].c || []) : [];
+ that.data.district.forEach(function (item) {
+ province.push(item.n);
+ });
+ cityChildren.forEach(function (item) {
+ city.push(item.n);
+ });
+ areaChildren.forEach(function (item) {
+ area.push(item.n);
+ });
+ that.setData({
+ multiArray: [province, city, area],
+ });
+ }
+ },
+ bindRegionChange: function (e) {
+ let multiIndex = this.data.multiIndex, province = this.data.district[multiIndex[0]] || { c: [] }, city = province.c[multiIndex[1]] || { v: 0 }, multiArray = this.data.multiArray, value = e.detail.value;
+ console.log(value);
+ console.log(province);
+ this.setData({
+ region: [multiArray[0][value[0]], multiArray[1][value[1]], multiArray[2][value[2]]],
+ cityId: city.v,
+ valueRegion: [0,0,0]
+ });
+ this.initialize();
+ },
+ bindMultiPickerColumnChange:function(e){
+ let that = this, column = e.detail.column, value = e.detail.value, currentCity = this.data.district[value] || { c: [] }, multiArray = that.data.multiArray, multiIndex = that.data.multiIndex;
+ multiIndex[column] = value;
+ switch (column){
+ case 0:
+ let areaList = currentCity.c[0] || { c: [] };
+ multiArray[1] = currentCity.c.map((item)=>{
+ return item.n;
+ });
+ multiArray[2] = areaList.c.map((item)=>{
+ return item.n;
+ });
+ break;
+ case 1:
+ let cityList = that.data.district[multiIndex[0]].c[multiIndex[1]].c || [];
+ multiArray[2] = cityList.map((item)=>{
+ return item.n;
+ });
+ break;
+ case 2:
+
+ break;
+ }
+ this.setData({ multiArray: multiArray, multiIndex: multiIndex});
+ },
+ getUserAddress:function(){
+ if(!this.data.id) return false;
+ let that = this;
+ getAddressDetail(this.data.id).then(res=>{
+ var region = [res.data.province, res.data.city, res.data.district];
+ that.setData({
+ userAddress: res.data,
+ region: region,
+ cityId: res.data.city_id,
+ });
+ });
+ },
+ getWxAddress:function(){
+ var that = this;
+ wx.authorize({
+ scope: 'scope.address',
+ success: function (res) {
+ wx.chooseAddress({
+ success: function (res) {
+ var addressP = {};
+ addressP.province = res.provinceName;
+ addressP.city = res.cityName;
+ addressP.district = res.countyName;
+ editAddress({
+ address: addressP,
+ is_default: 1,
+ real_name: res.userName,
+ post_code: res.postalCode,
+ phone: res.telNumber,
+ detail: res.detailInfo,
+ id: 0,
+ type: 1,
+ }).then(res => {
+ setTimeout(function () {
+ if (that.data.cartId) {
+ var cartId = that.data.cartId;
+ var pinkId = that.data.pinkId;
+ var couponId = that.data.couponId;
+ that.setData({ cartId: '', pinkId: '', couponId: '' })
+ wx.navigateTo({
+ url: '/pages/order_confirm/index?cartId=' + cartId + '&addressId=' + (that.data.id ? that.data.id : res.data.id) + '&pinkId=' + pinkId + '&couponId=' + couponId
+ });
+ } else {
+ wx.navigateBack({ delta: 1 });
+ }
+ }, 1000);
+ return app.Tips({ title: "添加成功", icon: 'success' });
+ }).catch(err => {
+ return app.Tips({ title: err });
+ });
+ },
+ fail: function (res) {
+ if (res.errMsg == 'chooseAddress:cancel') return app.Tips({ title: '取消选择' });
+ },
+ })
+ },
+ fail: function (res) {
+ wx.showModal({
+ title: '您已拒绝导入微信地址权限',
+ content: '是否进入权限管理,调整授权?',
+ success(res) {
+ if (res.confirm) {
+ wx.openSetting({
+ success: function (res) {
+ console.log(res.authSetting)
+ }
+ });
+ } else if (res.cancel) {
+ return app.Tips({ title: '已取消!' });
+ }
+ }
+ })
+ },
+ })
+ },
+ /**
+ * 提交用户添加地址
+ *
+ */
+ formSubmit:function(e){
+ var that = this, value = e.detail.value;
+ if (!value.real_name) return app.Tips({title:'请填写收货人姓名'});
+ if (!value.phone) return app.Tips({title:'请填写联系电话'});
+ if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(value.phone)) return app.Tips({title:'请输入正确的手机号码'});
+ if (that.data.region[0] =='省') return app.Tips({title:'请选择所在地区'});
+ if (!value.detail) return app.Tips({title:'请填写详细地址'});
+ value.id=that.data.id;
+ value.address={
+ province:that.data.region[0],
+ city: that.data.region[1],
+ district: that.data.region[2],
+ city_id: that.data.cityId,
+ };
+ value.is_default = that.data.userAddress.is_default ? 1 : 0;
+ editAddress(value).then(res=>{
+ if (that.data.id)
+ app.Tips({ title: '修改成功', icon: 'success' });
+ else
+ app.Tips({ title: '添加成功', icon: 'success' });
+ setTimeout(function () {
+ if (that.data.cartId) {
+ var cartId = that.data.cartId;
+ var pinkId = that.data.pinkId;
+ var couponId = that.data.couponId;
+ that.setData({ cartId: '', pinkId: '', couponId: '' })
+ wx.navigateTo({
+ url: '/pages/order_confirm/index?cartId=' + cartId + '&addressId=' + (that.data.id ? that.data.id : res.data.id) + '&pinkId=' + pinkId + '&couponId=' + couponId
+ });
+ } else {
+ wx.navigateBack({ delta: 1 });
+ }
+ }, 1000);
+ }).catch(err=>{
+ return app.Tips({title:err});
+ })
+ },
+ ChangeIsDefault:function(e){
+ this.setData({ 'userAddress.is_default': !this.data.userAddress.is_default});
+ },
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_address/index.json b/template/xcx/pages/user_address/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/user_address/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_address/index.wxml b/template/xcx/pages/user_address/index.wxml
new file mode 100644
index 000000000..c4d008ef6
--- /dev/null
+++ b/template/xcx/pages/user_address/index.wxml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ 姓名
+
+
+
+ 联系电话
+
+
+
+ 所在地区
+
+
+ {{region[0]}},{{region[1]}},{{region[2]}}
+
+
+
+
+
+ 详细地址
+
+
+
+
+ 设置为默认地址
+
+ 立即保存
+ 导入微信地址
+
+
+
diff --git a/template/xcx/pages/user_address/index.wxss b/template/xcx/pages/user_address/index.wxss
new file mode 100644
index 000000000..e3e35ceef
--- /dev/null
+++ b/template/xcx/pages/user_address/index.wxss
@@ -0,0 +1,12 @@
+.addAddress .list{background-color:#fff;}
+.addAddress .list .item{padding:0 30rpx;height:90rpx;border-top:1rpx solid #eee;}
+.addAddress .list .item .name{width:195rpx;font-size:30rpx;color:#333;}
+.addAddress .list .item input{width:475rpx;font-size:30rpx;}
+.addAddress .list .item .placeholder{color:#ccc;}
+.addAddress .list .item picker{width:475rpx;}
+.addAddress .list .item picker .picker{width:410rpx;font-size:30rpx;}
+.addAddress .list .item picker .iconfont{font-size:43rpx;}
+.addAddress .default{padding:0 30rpx;height:90rpx;background-color:#fff;margin-top:23rpx;}
+.addAddress .default checkbox{margin-right:15rpx;}
+.addAddress .keepBnt{width:690rpx;height:86rpx;border-radius:50rpx;text-align:center;line-height:86rpx;margin:50rpx auto;font-size:32rpx;color:#fff;}
+.addAddress .wechatAddress{width:690rpx;height:86rpx;border-radius:50rpx;text-align:center;line-height:86rpx;margin:0 auto;font-size:32rpx;color:#fe960f;border:1px solid #fe960f;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_address_list/index.js b/template/xcx/pages/user_address_list/index.js
new file mode 100644
index 000000000..43d9fe96a
--- /dev/null
+++ b/template/xcx/pages/user_address_list/index.js
@@ -0,0 +1,203 @@
+
+import { getAddressList, setAddressDefault, delAddress, editAddress} from '../../api/user.js';
+
+var app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '地址管理'
+ },
+ addressList:[],
+ cartId:'',
+ pinkId:0,
+ couponId:0,
+ loading:false,
+ loadend:false,
+ loadTitle:'加载更多',
+ page:1,
+ limit:8,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.setData({
+ cartId: options.cartId || '',
+ pinkId: options.pinkId || 0,
+ couponId: options.couponId || 0,
+ })
+ },
+ onShow:function(){
+ var that = this;
+ if (app.globalData.isLog) that.getAddressList(true);
+ },
+ onLoadFun:function(){
+ this.getAddressList();
+ },
+ /*
+ * 导入微信地址
+ */
+ getWxAddress: function () {
+ var that = this;
+ wx.authorize({
+ scope: 'scope.address',
+ success: function (res) {
+ wx.chooseAddress({
+ success: function (res) {
+ var addressP = {};
+ addressP.province = res.provinceName;
+ addressP.city = res.cityName;
+ addressP.district = res.countyName;
+ editAddress({
+ address: addressP,
+ is_default: 1,
+ real_name: res.userName,
+ post_code: res.postalCode,
+ phone: res.telNumber,
+ detail: res.detailInfo,
+ type:1,
+ id: 0
+ }).then(res=>{
+ app.Tips({ title: "添加成功", icon: 'success' }, function () {
+ that.getAddressList(true);
+ });
+ }).catch(err=>{
+ return app.Tips({title:err});
+ });
+ },
+ fail: function (res) {
+ if (res.errMsg == 'chooseAddress:cancel') return app.Tips({ title:'取消选择'});
+ },
+ })
+ },
+ fail: function (res) {
+ wx.showModal({
+ title: '您已拒绝导入微信地址权限',
+ content:'是否进入权限管理,调整授权?',
+ success(res) {
+ if (res.confirm) {
+ wx.openSetting({
+ success: function (res) {
+ console.log(res.authSetting)
+ }
+ });
+ } else if (res.cancel){
+ return app.Tips({ title: '已取消!' });
+ }
+ }
+ })
+ },
+ })
+ },
+ /**
+ * 获取地址列表
+ *
+ */
+ getAddressList: function (isPage){
+ var that=this;
+ if (isPage) that.setData({ loadend: false, page: 1, addressList:[]});
+ if (that.data.loading) return;
+ if (that.data.loadend) return;
+ that.setData({ loading:true,loadTitle:''});
+ getAddressList({ page: that.data.page, limit: that.data.limit }).then(res=>{
+ var list = res.data;
+ var loadend = list.length < that.data.limit;
+ that.data.addressList = app.SplitArray(list, that.data.addressList);
+ that.setData({
+ addressList: that.data.addressList,
+ loadend: loadend,
+ loadTitle: loadend ? '我也是有底线的' : '加载更多',
+ page: that.data.page + 1,
+ loading: false,
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: '加载更多' });
+ });
+ },
+ /**
+ * 设置默认地址
+ */
+ radioChange:function(e){
+ var index = parseInt(e.detail.value),that=this;;
+ var address = this.data.addressList[index];
+ if (address==undefined) return app.Tips({title:'您设置的默认地址不存在!'});
+ setAddressDefault(address.id).then(res=>{
+ for (var i = 0, len = that.data.addressList.length; i < len; i++) {
+ if (i == index) that.data.addressList[i].is_default = true;
+ else that.data.addressList[i].is_default = false;
+ }
+ app.Tips({ title: '设置成功', icon: 'success' }, function () {
+ that.setData({ addressList: that.data.addressList });
+ });
+ }).catch(err=>{
+ return app.Tips({title:err});
+ });
+ },
+ /**
+ * 编辑地址
+ */
+ editAddress:function(e){
+ var cartId = this.data.cartId,pinkId = this.data.pinkId,couponId = this.data.couponId;
+ this.setData({cartId: '',pinkId: '',couponId: ''})
+ wx.navigateTo({
+ url: '/pages/user_address/index?id=' + e.currentTarget.dataset.id + '&cartId=' + cartId + '&pinkId=' + pinkId + '&couponId=' + couponId
+ })
+ },
+ /**
+ * 删除地址
+ */
+ delAddress:function(e){
+ var index = e.currentTarget.dataset.index, that = this, address=this.data.addressList[index];
+ if (address == undefined) return app.Tips({ title: '您删除的地址不存在!' });
+ delAddress(address.id).then(res=>{
+ app.Tips({ title: '删除成功', icon: 'success' }, function () {
+ that.data.addressList.splice(index, 1);
+ that.setData({ addressList: that.data.addressList });
+ });
+ }).catch(err=>{
+ return app.Tips({title:err});
+ });
+ },
+ /**
+ * 新增地址
+ */
+ addAddress: function () {
+ var cartId = this.data.cartId,pinkId = this.data.pinkId,couponId = this.data.couponId;
+ this.setData({ cartId: '', pinkId: '', couponId: ''})
+ wx.navigateTo({
+ url: '/pages/user_address/index?cartId=' + cartId + '&pinkId=' + pinkId + '&couponId=' + couponId
+ })
+ },
+ goOrder:function(e){
+ var id = e.currentTarget.dataset.id;
+ var cartId = '';
+ var pinkId = '';
+ var couponId = '';
+ if (this.data.cartId && id) {
+ cartId = this.data.cartId;
+ pinkId = this.data.pinkId;
+ couponId = this.data.couponId;
+ this.setData({
+ cartId: '',
+ pinkId: '',
+ couponId: '',
+ })
+ wx.redirectTo({
+ url: '/pages/order_confirm/index?is_address=1&cartId=' + cartId + '&addressId=' + id + '&pinkId=' + pinkId + '&couponId=' + couponId
+ })
+ }
+ },
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getAddressList();
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_address_list/index.json b/template/xcx/pages/user_address_list/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/user_address_list/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_address_list/index.wxml b/template/xcx/pages/user_address_list/index.wxml
new file mode 100644
index 000000000..92d3d0eae
--- /dev/null
+++ b/template/xcx/pages/user_address_list/index.wxml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ 收货人:{{item.real_name}}{{item.phone}}
+ 收货地址:{{item.province}}{{item.city}}{{item.district}}{{item.detail}}
+
+
+
+ 设为默认
+
+
+ 编辑
+ 删除
+
+
+
+
+
+ {{loadTitle}}
+
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/user_address_list/index.wxss b/template/xcx/pages/user_address_list/index.wxss
new file mode 100644
index 000000000..5c01ba95b
--- /dev/null
+++ b/template/xcx/pages/user_address_list/index.wxss
@@ -0,0 +1,15 @@
+.address-management.fff{background-color: #fff;height: 1300rpx}
+.address-management .line{width:100%;height:3rpx;}
+.address-management .line image{width:100%;height:100%;display:block;}
+.address-management .item{background-color:#fff;padding:0 30rpx;margin-bottom:12rpx;}
+.address-management .item .address{padding:30rpx 0;border-bottom:1rpx solid #eee;font-size:28rpx;color:#282828;}
+.address-management .item .address .consignee{font-size:28rpx;font-weight:bold;margin-bottom:8rpx;}
+.address-management .item .address .consignee .phone{margin-left:25rpx;}
+.address-management .item .operation{height:83rpx;font-size:28rpx;color:#282828;}
+.address-management .item .operation .radio text{margin-left:13rpx;}
+.address-management .item .operation .iconfont{color:#2c2c2c;font-size:35rpx;vertical-align:-2rpx;margin-right:10rpx;}
+.address-management .item .operation .iconfont.icon-shanchu{margin-left:40rpx;font-size:38rpx;}
+.address-management .footer{position:fixed;width:100%;background-color:#fff;bottom:0;height:106rpx;padding:0 30rpx;box-sizing:border-box;}
+.address-management .footer .addressBnt{width:330rpx;height:76rpx;border-radius:50rpx;text-align:center;line-height:76rpx;font-size:30rpx;color:#fff;}
+.address-management .footer .addressBnt .iconfont{font-size:35rpx;margin-right:8rpx;vertical-align:-1rpx;}
+.address-management .footer .addressBnt.wxbnt{background-color:#fe960f;}
diff --git a/template/xcx/pages/user_bill/index.js b/template/xcx/pages/user_bill/index.js
new file mode 100644
index 000000000..70aa812fa
--- /dev/null
+++ b/template/xcx/pages/user_bill/index.js
@@ -0,0 +1,88 @@
+// pages/bill-details/index.js
+import { getCommissionInfo } from '../../api/user.js';
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '账单明细',
+ 'color':true,
+ 'class':'0'
+ },
+ loadTitle:'加载更多',
+ loading:false,
+ loadend:false,
+ page:1,
+ limit:10,
+ type:0,
+ userBillList:[],
+ },
+
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getUserBillList();
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.setData({ type: options.type || 0});
+ },
+
+ /**
+ * 获取账户明细
+ */
+ getUserBillList:function(){
+ var that=this;
+ if (that.data.loadend) return;
+ if (that.data.loading) return;
+ that.setData({ loading: true, loadTitle: "" });
+ var data = {
+ page: that.data.page,
+ limit: that.data.limit
+ }
+ getCommissionInfo(data, that.data.type).then(function(res){
+ var list=res.data,loadend=list.length < that.data.limit;
+ that.data.userBillList = app.SplitArray(list,that.data.userBillList);
+ that.setData({
+ userBillList:that.data.userBillList,
+ loadend:loadend,
+ loading:false,
+ loadTitle:loadend ? "哼😕~我也是有底线的~": "加载更多",
+ page:that.data.page+1,
+ });
+ },function(res){
+ that.setData({loading:false,loadTitle:'加载更多'});
+ });
+ },
+ /**
+ * 切换导航
+ */
+ changeType:function(e){
+ this.setData({ type: e.currentTarget.dataset.type,loadend:false,page:1,userBillList:[]});
+ this.getUserBillList();
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getUserBillList();
+ },
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_bill/index.json b/template/xcx/pages/user_bill/index.json
new file mode 100644
index 000000000..4912fb41c
--- /dev/null
+++ b/template/xcx/pages/user_bill/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_bill/index.wxml b/template/xcx/pages/user_bill/index.wxml
new file mode 100644
index 000000000..244621c9e
--- /dev/null
+++ b/template/xcx/pages/user_bill/index.wxml
@@ -0,0 +1,29 @@
+
+
+
+ 全部
+ 消费
+ 充值
+
+
+
+
+ {{item.time}}
+
+
+
+ {{vo.title}}
+ {{vo.add_time}}
+
+ +{{vo.number}}
+ -{{vo.number}}
+
+
+
+
+
+ {{loadTitle}}
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user_bill/index.wxss b/template/xcx/pages/user_bill/index.wxss
new file mode 100644
index 000000000..8d118f4d0
--- /dev/null
+++ b/template/xcx/pages/user_bill/index.wxss
@@ -0,0 +1,3 @@
+.bill-details .nav{background-color:#fff;height:90rpx;width:100%;line-height:90rpx;}
+.bill-details .nav .item{flex:1;text-align:center;font-size:30rpx;color:#282828;}
+.bill-details .nav .item.on{color:#e93323;border-bottom:3rpx solid #e93323;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_cash/index.js b/template/xcx/pages/user_cash/index.js
new file mode 100644
index 000000000..da024753f
--- /dev/null
+++ b/template/xcx/pages/user_cash/index.js
@@ -0,0 +1,140 @@
+// pages/cash-withdrawal/index.js
+import { extractCash, extractBank, getUserInfo} from '../../api/user.js';
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '提现',
+ 'color':true,
+ 'class':'0'
+ },
+ navList: [
+ { 'name': '银行卡', 'icon':'icon-yinhangqia'},
+ { 'name': '微信', 'icon': 'icon-weixin2' },
+ { 'name': '支付宝', 'icon': 'icon-icon34' }
+ ],
+ currentTab: 0,
+ index: 0,
+ array: [],//提现银行
+ commissionCount:0.00,//最低提现金额
+ userInfo:[],
+ isClone:false
+ },
+ onLoadFun:function(){
+ this.getUserInfo();
+ this.getUserExtractBank();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ getUserExtractBank: function () {
+ var that = this;
+ extractBank().then(res=>{
+ var array = res.data.extractBank;
+ array.unshift("请选择银行");
+ that.setData({ array: array, commissionCount: res.data.commissionCount });
+ });
+ },
+ /**
+ * 获取个人用户信息
+ */
+ getUserInfo: function () {
+ var that = this;
+ getUserInfo().then(res=>{
+ that.setData({ userInfo: res.data });
+ });
+ },
+ swichNav: function (e) {
+ this.setData({ currentTab: e.currentTarget.dataset.current });
+ },
+ bindPickerChange: function (e) {
+ this.setData({ index: e.detail.value });
+ },
+ subCash: function (e) {
+ let that = this, value = e.detail.value;
+ if (that.data.currentTab == 0){//银行卡
+ if (value.name.length == 0) return app.Tips({title:'请填写持卡人姓名'});
+ if (value.cardnum.length == 0) return app.Tips({title:'请填写卡号'});
+ if (that.data.index == 0) return app.Tips({title:"请选择银行"});
+ value.extract_type = 'bank';
+ value.bankname = that.data.array[that.data.index];
+ } else if (that.data.currentTab == 1) {//微信
+ value.extract_type = 'weixin';
+ if (value.name.length == 0) return app.Tips({ title: '请填写微信号' });
+ value.weixin = value.name;
+ } else if (that.data.currentTab == 2) {//支付宝
+ value.extract_type = 'alipay';
+ if (value.name.length == 0) return app.Tips({title:'请填写账号'});
+ value.alipay_code = value.name;
+ }
+ if (value.money.length == 0) return app.Tips({title:'请填写提现金额'});
+ if (Number(value.money) > Number(that.data.commissionCount)) return app.Tips({ title: '提现金额不能大于' + that.data.commissionCount});
+ extractCash(value).then(res=>{
+ that.getUserInfo();
+ return app.Tips({ title: res.msg, icon: 'success' });
+ }).catch(err=>{
+ return app.Tips({ title: err });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if(app.globalData.isLog && this.data.isClone){
+ this.getUserInfo();
+ this.getUserExtractBank();
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({isClone:true});
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_cash/index.json b/template/xcx/pages/user_cash/index.json
new file mode 100644
index 000000000..4912fb41c
--- /dev/null
+++ b/template/xcx/pages/user_cash/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_cash/index.wxml b/template/xcx/pages/user_cash/index.wxml
new file mode 100644
index 000000000..2911cb9ae
--- /dev/null
+++ b/template/xcx/pages/user_cash/index.wxml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+ 持卡人
+
+
+
+ 卡号
+
+
+
+ 银行
+
+
+ {{array[index]}}
+
+
+
+
+
+ 提现
+
+
+ 当前可提现金额: {{userInfo.commissionCount}}
+ 提现
+
+
+
+
+
+ 账号
+
+
+
+ 提现
+
+
+ 当前可提现金额: {{userInfo.commissionCount}}
+ 提现
+
+
+
+
+
+ 账号
+
+
+
+ 提现
+
+
+ 当前可提现金额: {{userInfo.commissionCount}}
+ 提现
+
+
+
+
+
diff --git a/template/xcx/pages/user_cash/index.wxss b/template/xcx/pages/user_cash/index.wxss
new file mode 100644
index 000000000..45c92c585
--- /dev/null
+++ b/template/xcx/pages/user_cash/index.wxss
@@ -0,0 +1,19 @@
+page{background-color:#fff!important;}
+.cash-withdrawal .nav{height:130rpx;box-shadow:0 10rpx 10rpx #f8f8f8;}
+.cash-withdrawal .nav .item{font-size:26rpx;flex:1;text-align:center;}
+.cash-withdrawal .nav .item~.item{border-left:1px solid #f0f0f0;}
+.cash-withdrawal .nav .item .iconfont{width:40rpx;height:40rpx;border-radius:50%;border:2rpx solid #e93323;text-align:center;line-height:37rpx;margin:0 auto 6rpx auto;font-size:22rpx;box-sizing:border-box;}
+.cash-withdrawal .nav .item .iconfont.on{background-color:#e93323;color:#fff;border-color:#e93323;}
+.cash-withdrawal .nav .item .line{width:2rpx;height:20rpx;margin:0 auto;transition:height 0.3s;}
+.cash-withdrawal .nav .item .line.on{height:39rpx;}
+.cash-withdrawal .wrapper .list{padding:0 30rpx;}
+.cash-withdrawal .wrapper .list .item{border-bottom:1rpx solid #eee;height:107rpx;font-size:30rpx;color:#333;}
+.cash-withdrawal .wrapper .list .item .name{width:130rpx;}
+.cash-withdrawal .wrapper .list .item .input{width:505rpx;}
+.cash-withdrawal .wrapper .list .item .input .placeholder{color:#bbb;}
+.cash-withdrawal .wrapper .list .tip{font-size:26rpx;color:#999;margin-top:25rpx;}
+.cash-withdrawal .wrapper .list .bnt{font-size:32rpx;color:#fff;width:690rpx;height:90rpx;text-align:center;border-radius:50rpx;line-height:90rpx;margin:64rpx auto;}
+.cash-withdrawal .wrapper .list .tip2{font-size:26rpx;color:#999;text-align:center;margin:44rpx 0 20rpx 0;}
+.cash-withdrawal .wrapper .list .value{height:135rpx;line-height:135rpx;border-bottom:1rpx solid #eee;width:690rpx;margin:0 auto;}
+.cash-withdrawal .wrapper .list .value input{font-size:80rpx;color:#282828;height:135rpx;text-align:center;}
+.cash-withdrawal .wrapper .list .value .placeholder2{color:#bbb;}
diff --git a/template/xcx/pages/user_coupon/index.js b/template/xcx/pages/user_coupon/index.js
new file mode 100644
index 000000000..d422750e6
--- /dev/null
+++ b/template/xcx/pages/user_coupon/index.js
@@ -0,0 +1,54 @@
+// pages/coupon-list/index.js
+
+import { getUserCoupons } from '../../api/api.js';
+
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '我的优惠券',
+ 'color': false
+ },
+ couponsList:[],
+ loading:false,
+ },
+
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getUseCoupons();
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 获取领取优惠券列表
+ */
+ getUseCoupons:function(){
+ var that = this;
+ getUserCoupons(0).then(res=>{
+ that.setData({ loading: true, couponsList: res.data });
+ })
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_coupon/index.json b/template/xcx/pages/user_coupon/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/user_coupon/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_coupon/index.wxml b/template/xcx/pages/user_coupon/index.wxml
new file mode 100644
index 000000000..ed40e5218
--- /dev/null
+++ b/template/xcx/pages/user_coupon/index.wxml
@@ -0,0 +1,26 @@
+
+
+
+
+ ¥{{item.coupon_price}}
+ 满{{item.use_min_price}}元可用
+
+
+
+ 通用劵
+ 品类券
+ 商品券
+ {{item.coupon_title}}
+
+
+ {{ item.start_time ? item.start_time+'-':''}}{{ item.end_time }}
+ {{item._msg}}
+ {{item._msg}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user_coupon/index.wxss b/template/xcx/pages/user_coupon/index.wxss
new file mode 100644
index 000000000..0c8654857
--- /dev/null
+++ b/template/xcx/pages/user_coupon/index.wxss
@@ -0,0 +1,21 @@
+.condition .line-title{
+ width:90rpx;
+ padding: 0 10rpx;
+ box-sizing: border-box;
+ background:rgba(255,247,247,1);
+ border:1px solid rgba(232,51,35,1);
+ opacity:1;
+ border-radius:20rpx;
+ font-size:20rpx;
+ color: #E83323;
+ margin-right: 12rpx;
+}
+.condition .line-title.gray{
+ border-color:#BBB;
+ color:#bbb;
+ background-color:#F5F5F5;
+}
+.coupon-list .pic-num{
+ color: #FFFFFF;
+ font-size: 24rpx;
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_get_coupon/index.js b/template/xcx/pages/user_get_coupon/index.js
new file mode 100644
index 000000000..5b6af3c93
--- /dev/null
+++ b/template/xcx/pages/user_get_coupon/index.js
@@ -0,0 +1,86 @@
+// pages/coupon-list/index.js
+import { getCouponReceive } from '../../api/user.js';
+import { getCoupons } from '../../api/api.js';
+
+const app = getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '领取优惠券',
+ 'color': false
+ },
+ couponsList:[],
+ loading:false,
+ loadend:false,
+ page:1,
+ limit:20,
+ },
+
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getUseCoupons();
+ },
+ getCoupon:function(e){
+ var that = this;
+ var id = e.currentTarget.dataset.id;
+ var index = e.currentTarget.dataset.index;
+ var list = that.data.couponsList;
+ //领取优惠券
+ getCouponReceive({ couponId: id }).then(function (res) {
+ list[index].is_use = true;
+ that.setData({
+ couponsList: list
+ });
+ app.Tips({ title: '领取成功' });
+ },function(res){
+ return app.Tips({title:res.msg});
+ });
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 获取领取优惠券列表
+ */
+ getUseCoupons:function(){
+ var that=this
+ if(this.data.loadend) return false;
+ if(this.data.loading) return false;
+ that.setData({loading:true,loadTitle:'正在搜索'});
+ getCoupons({ page: this.data.page, limit: this.data.limit }).then(res=>{
+ var list=res.data,loadend=list.length < that.data.limit;
+ var couponsList = app.SplitArray(list, that.data.couponsList);
+ that.setData({
+ loading: false,
+ couponsList: couponsList,
+ page:that.data.page+1,
+ loadend: loadend,
+ loadTitle: loadend ? '已全部加载' : '加载更多'
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: '加载更多' });
+ });
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getUseCoupons();
+ },
+
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_get_coupon/index.json b/template/xcx/pages/user_get_coupon/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/user_get_coupon/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_get_coupon/index.wxml b/template/xcx/pages/user_get_coupon/index.wxml
new file mode 100644
index 000000000..615f2817d
--- /dev/null
+++ b/template/xcx/pages/user_get_coupon/index.wxml
@@ -0,0 +1,31 @@
+
+
+
+
+ ¥{{item.coupon_price}}
+ 满{{item.use_min_price}}元可用
+
+
+
+ 通用劵
+ 品类券
+ 商品券
+ {{item.title}}
+
+
+ {{ item.start_time ? item.start_time+'-':''}}{{ item.end_time }}
+ 不限时
+ 已领取
+ 已领完
+ 立即领取
+
+
+
+
+ {{loadTitle}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user_get_coupon/index.wxss b/template/xcx/pages/user_get_coupon/index.wxss
new file mode 100644
index 000000000..0c8654857
--- /dev/null
+++ b/template/xcx/pages/user_get_coupon/index.wxss
@@ -0,0 +1,21 @@
+.condition .line-title{
+ width:90rpx;
+ padding: 0 10rpx;
+ box-sizing: border-box;
+ background:rgba(255,247,247,1);
+ border:1px solid rgba(232,51,35,1);
+ opacity:1;
+ border-radius:20rpx;
+ font-size:20rpx;
+ color: #E83323;
+ margin-right: 12rpx;
+}
+.condition .line-title.gray{
+ border-color:#BBB;
+ color:#bbb;
+ background-color:#F5F5F5;
+}
+.coupon-list .pic-num{
+ color: #FFFFFF;
+ font-size: 24rpx;
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_goods_collection/index.js b/template/xcx/pages/user_goods_collection/index.js
new file mode 100644
index 000000000..aa1194674
--- /dev/null
+++ b/template/xcx/pages/user_goods_collection/index.js
@@ -0,0 +1,91 @@
+// pages/collectionGoods/index.js
+
+import { getCollectUserList, getProductHot, collectDel} from '../../api/store.js';
+
+
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '收藏商品',
+ 'color': false
+ },
+ host_product:[],
+ loadTitle:'加载更多',
+ loading:false,
+ loadend:false,
+ collectProductList:[],
+ limit:8,
+ page:1,
+ },
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.get_user_collect_product();
+ this.get_host_product();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ /**
+ * 获取收藏产品
+ */
+ get_user_collect_product:function(){
+ var that=this;
+ if (this.data.loading) return;
+ if (this.data.loadend) return;
+ that.setData({ loading: true, loadTitle:''});
+ getCollectUserList({ page: that.data.page,limit: that.data.limit}).then(res=>{
+ var collectProductList = res.data;
+ var loadend = collectProductList.length < that.data.limit;
+ console.log(collectProductList.length);
+ that.data.collectProductList = app.SplitArray(collectProductList, that.data.collectProductList);
+ that.setData({
+ collectProductList: that.data.collectProductList,
+ loadend: loadend,
+ loadTitle: loadend ? '我也是有底线的' : '加载更多',
+ page: that.data.page + 1,
+ loading: false
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: "加载更多" })
+ });
+ },
+ /**
+ * 取消收藏
+ */
+ delCollection:function(e){
+ var id = e.target.dataset.id, that = this, index = e.target.dataset.index;
+ collectDel(id).then(res=>{
+ return app.Tips({ title: '取消收藏成功', icon: 'success' }, function () {
+ that.data.collectProductList.splice(index, 1);
+ that.setData({ collectProductList: that.data.collectProductList });
+ });
+ });
+ },
+ /**
+ * 获取我的推荐
+ */
+ get_host_product: function () {
+ var that = this;
+ getProductHot().then(res=>{
+ that.setData({ host_product: res.data });
+ });
+ },
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.get_user_collect_product();
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_goods_collection/index.json b/template/xcx/pages/user_goods_collection/index.json
new file mode 100644
index 000000000..3d8369c79
--- /dev/null
+++ b/template/xcx/pages/user_goods_collection/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "recommend": "/components/recommend/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_goods_collection/index.wxml b/template/xcx/pages/user_goods_collection/index.wxml
new file mode 100644
index 000000000..537e39d7f
--- /dev/null
+++ b/template/xcx/pages/user_goods_collection/index.wxml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ {{item.store_name}}
+
+ ¥{{item.price}}
+ 删除
+
+
+
+
+ {{loadTitle}}
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/user_goods_collection/index.wxss b/template/xcx/pages/user_goods_collection/index.wxss
new file mode 100644
index 000000000..b6ac5cee6
--- /dev/null
+++ b/template/xcx/pages/user_goods_collection/index.wxss
@@ -0,0 +1,9 @@
+.collectionGoods{background-color:#fff;border-top:1rpx solid #eee;}
+.collectionGoods .item{margin-left:30rpx;padding-right:30rpx;border-bottom:1rpx solid #eee;height:180rpx;}
+.collectionGoods .item .pictrue{width:130rpx;height:130rpx;}
+.collectionGoods .item .pictrue image{width:100%;height:100%;border-radius:6rpx;}
+.collectionGoods .item .text{width:535rpx;height:130rpx;font-size:28rpx;color:#282828;}
+.collectionGoods .item .text .name{width:100%;}
+.collectionGoods .item .text .money{font-size:26rpx;}
+.collectionGoods .item .text .delete{font-size:26rpx;color:#282828;width:144rpx;height:46rpx;border:1px solid #bbb;border-radius:4rpx;text-align:center;line-height:46rpx;}
+.noCommodity{background-color:#fff;}
diff --git a/template/xcx/pages/user_info/index.js b/template/xcx/pages/user_info/index.js
new file mode 100644
index 000000000..997569de2
--- /dev/null
+++ b/template/xcx/pages/user_info/index.js
@@ -0,0 +1,162 @@
+import { getUserInfo, userEdit} from '../../api/user.js';
+import { switchH5Login } from '../../api/api.js';
+import authLogin from '../../utils/autuLogin.js';
+import util from '../../utils/util.js';
+
+const app = getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '个人资料',
+ 'color': true,
+ 'class': '0'
+ },
+ userInfo:{},
+ loginType: 'h5',//app.globalData.loginType
+ userIndex: 0,
+ switchUserInfo:[],
+ },
+ /**
+ * 小程序设置
+ */
+ Setting: function () {
+ wx.openSetting({
+ success: function (res) {
+ console.log(res.authSetting)
+ }
+ });
+ },
+ switchAccounts: function (e) {
+ let index = e.currentTarget.dataset.index, userInfo = this.data.switchUserInfo[index] , that = this;
+ that.setData({ userIndex: index });
+ if (that.data.switchUserInfo.length <= 1) return true;
+ if (userInfo === undefined) return app.Tips({title:'切换的账号不存在'});
+ if (userInfo.user_type === 'h5'){
+ wx.showLoading({ title: '正在切换中' });
+ switchH5Login().then(res => {
+ wx.hideLoading();
+ app.globalData.token = res.data.token;
+ app.globalData.expires_time = res.data.time;
+ app.globalData.loginType = 'h5';
+ app.globalData.userInfo = res.data.userInfo;
+ that.getUserInfo();
+ }).catch(err => {
+ wx.hideLoading();
+ return app.Tips({ title: err });
+ })
+ }else{
+ wx.showLoading({ title: '正在切换中' });
+ authLogin('routine').then(res => {
+ that.getUserInfo();
+ wx.hideLoading();
+ }).catch(err=>{
+ wx.hideLoading();
+ return app.Tips({ title: err });
+ });
+ }
+ },
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getUserInfo();
+ },
+
+ /**
+ * 退出登录
+ *
+ */
+ outLogin:function(){
+ if (this.data.loginType == 'h5'){
+ app.globalData.token = '';
+ app.globalData.isLog = false;
+ app.globalData.userInfo = {};
+ app.globalData.expiresTime = 0;
+ wx.showLoading({
+ title: '正在退出登录',
+ });
+ return wx.switchTab({
+ url: '/pages/index/index',
+ success: function () {
+ wx.hideLoading();
+ }
+ });
+ }
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ getPhoneNumber:function(e){
+ var detail = e.detail, cache_key = wx.getStorageSync('cache_key'),that=this;
+ if (detail.errMsg =='getPhoneNumber:ok'){
+ if (!cache_key){
+ app.globalData.token='';
+ app.globalData.isLog=false;
+ return false;
+ }
+
+
+
+ }else{
+ app.Tips({ title:'取消授权'});
+ }
+ },
+
+ /**
+ * 获取用户详情
+ */
+ getUserInfo:function(){
+ var that=this;
+ getUserInfo().then(res=>{
+ that.setData({ userInfo: res.data, switchUserInfo: res.data.switchUserInfo || [] });
+ for(let i=0;i{
+ return app.Tips({ title: res.msg, icon: 'success' }, { tab: 3, url: 1 });
+ }).catch(msg=>{
+ return app.Tips({ title: msg || '保存失败,您并没有修改' }, { tab: 3, url: 1 });
+ });
+ },
+
+
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_info/index.json b/template/xcx/pages/user_info/index.json
new file mode 100644
index 000000000..4912fb41c
--- /dev/null
+++ b/template/xcx/pages/user_info/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_info/index.wxml b/template/xcx/pages/user_info/index.wxml
new file mode 100644
index 000000000..17cf96b21
--- /dev/null
+++ b/template/xcx/pages/user_info/index.wxml
@@ -0,0 +1,81 @@
+
+
+
+
+ 管理我的账号
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.nickname }}
+ 绑定手机号:{{ item.phone }}
+ 账号:{{ item.phone }}
+ 暂未绑定手机号
+
+
+
+ 当前账号
+
+
+ 使用账号
+
+
+
+
+
+
+ 昵称
+
+
+
+ 手机号码
+
+ 点击绑定手机号
+
+
+
+
+
+
+
+ ID号
+
+
+
+
+
+
+ 权限设置
+
+ 点击管理
+
+
+
+ 密码
+
+ 点击修改密码
+
+
+
+ 保存修改
+ 退出登录
+
+
+
+
diff --git a/template/xcx/pages/user_info/index.wxss b/template/xcx/pages/user_info/index.wxss
new file mode 100644
index 000000000..f92343799
--- /dev/null
+++ b/template/xcx/pages/user_info/index.wxss
@@ -0,0 +1,23 @@
+.personal-data .wrapper{margin:10rpx 0;background-color:#fff;padding:36rpx 30rpx 13rpx 30rpx;}
+.personal-data .wrapper .title{margin-bottom:30rpx;font-size:32rpx;color:#282828;}
+.personal-data .wrapper .wrapList .item{width:690rpx;height:160rpx;background-color:#f8f8f8;border-radius:20rpx;margin-bottom:22rpx;padding:0 30rpx;position:relative;border:2rpx solid #f8f8f8;}
+.personal-data .wrapper .wrapList .item.on{border-color:#e93323;border-radius:20rpx;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArIAAACgCAYAAADw+I85AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0QzNkY3NzlCNzJCMTFFOTgyNEU4QzhGQTRFRUY2REQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0QzNkY3N0FCNzJCMTFFOTgyNEU4QzhGQTRFRUY2REQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRDM2Rjc3N0I3MkIxMUU5ODI0RThDOEZBNEVFRjZERCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRDM2Rjc3OEI3MkIxMUU5ODI0RThDOEZBNEVFRjZERCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pn3rJMAAAArUSURBVHja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");background-size:100% 100%;background-color:#fff9f9;background-repeat:no-repeat;}
+.personal-data .wrapper .wrapList .item .picTxt{width:445rpx;}
+.personal-data .wrapper .wrapList .item .picTxt .pictrue{width:96rpx;height:96rpx;position:relative;}
+.personal-data .wrapper .wrapList .item .picTxt .pictrue image{width:100%;height:100%;border-radius:50%;}
+.personal-data .wrapper .wrapList .item .picTxt .pictrue .alter{width:30rpx;height:30rpx;border-radius:50%;position:absolute;bottom:0;right:0;}
+.personal-data .wrapper .wrapList .item .picTxt .text{width:325rpx;}
+.personal-data .wrapper .wrapList .item .picTxt .text .name{width:100%;font-size:30rpx;color:#282828;}
+.personal-data .wrapper .wrapList .item .picTxt .text .phone{font-size:24rpx;color:#999;margin-top:10rpx;}
+.personal-data .wrapper .wrapList .item .bnt{font-size:24rpx;background-color:#fff;border-radius:27rpx;width:140rpx;height:54rpx;border:2rpx solid #e93323;}
+.personal-data .wrapper .wrapList .item .currentBnt{position:absolute;right:0;top:0;font-size:26rpx;background-color:rgba(233,51,35,0.1);width:140rpx;height:48rpx;border-radius:0 20rpx 0 20rpx;}
+.personal-data .list{margin-top:15rpx;background-color:#fff;}
+.personal-data .list .item{padding:30rpx 30rpx 30rpx 0;border-bottom:1rpx solid #f2f2f2;margin-left:30rpx;font-size:32rpx;color:#282828;}
+.personal-data .list .item .phone{width:160rpx;height:56rpx;font-size:24rpx;color:#fff;line-height:56rpx;border-radius: 32rpx}
+.personal-data .list .item .pictrue{width:88rpx;height:88rpx;}
+.personal-data .list .item .pictrue image{width:100%;height:100%;border-radius:50%;}
+.personal-data .list .item .input{width:415rpx;text-align:right;color:#868686;}
+.personal-data .list .item .input .id{width:365rpx;}
+.personal-data .list .item .input .iconfont{font-size:35rpx;}
+.personal-data .modifyBnt{font-size:32rpx;color:#fff;width:690rpx;height:90rpx;border-radius:50rpx;text-align:center;line-height:90rpx;margin:76rpx auto 0 auto;}
+.personal-data .logOut{font-size:32rpx;text-align:center;width:690rpx;height:90rpx;border-radius:45rpx;margin:30rpx auto 0 auto;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_integral/index.js b/template/xcx/pages/user_integral/index.js
new file mode 100644
index 000000000..f6820cb84
--- /dev/null
+++ b/template/xcx/pages/user_integral/index.js
@@ -0,0 +1,84 @@
+// pages/integral-details/index.js
+import { postSignUser, getIntegralList } from '../../api/user.js';
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '积分详情',
+ 'color': true,
+ 'class': '0'
+ },
+ navList:[
+ { 'name': '分值明细', 'icon':'icon-mingxi'},
+ { 'name': '分值提升', 'icon': 'icon-tishengfenzhi' }
+ ],
+ current:0,
+ page:1,
+ limit:10,
+ integralList:[],
+ loadend:false,
+ loading:false,
+ loadTitle:'加载更多',
+ },
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getUserInfo();
+ this.getIntegralList();
+ },
+ getUserInfo:function(){
+ var that=this;
+ postSignUser({sign: 1,integral: 1,all: 1}).then(function(res){
+ that.setData({userInfo:res.data});
+ });
+ },
+
+ /**
+ * 获取积分明细
+ */
+ getIntegralList:function(){
+ var that=this;
+ if(that.data.loading) return;
+ if(that.data.loadend) return;
+ that.setData({loading:true,loadTitle:''});
+ getIntegralList({ page: that.data.page, limit: that.data.limit }).then(function(res){
+ var list=res.data,loadend=list.length < that.data.limit;
+ that.data.integralList = app.SplitArray(list,that.data.integralList);
+ that.setData({
+ integralList: that.data.integralList,
+ page:that.data.page+1,
+ loading:false,
+ loadend:loadend,
+ loadTitle:loadend ? '哼~😕我也是有底线的~':"加载更多"
+ });
+ },function(res){
+ that.setData({ loading: false, loadTitle:'加载更多'});
+ });
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ nav:function(e){
+ this.setData({
+ current: e.currentTarget.dataset.idx
+ })
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getIntegralList();
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_integral/index.json b/template/xcx/pages/user_integral/index.json
new file mode 100644
index 000000000..4912fb41c
--- /dev/null
+++ b/template/xcx/pages/user_integral/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_integral/index.wxml b/template/xcx/pages/user_integral/index.wxml
new file mode 100644
index 000000000..aa019a9be
--- /dev/null
+++ b/template/xcx/pages/user_integral/index.wxml
@@ -0,0 +1,55 @@
+
+
+
+
+
+ {{item.name}}
+
+
+ 提示:积分数值的高低会直接影响您的会员等级
+
+
+ {{item.mark}}
+ {{item.add_time}}
+
+ +{{item.number}}
+ -{{item.number}}
+
+
+ {{loadTitle}}
+
+
+
+
+
+ 购买商品可获得积分奖励
+ 赚积分
+
+
+
+ 每日签到可获得积分奖励
+ 赚积分
+
+
+
+
+
diff --git a/template/xcx/pages/user_integral/index.wxss b/template/xcx/pages/user_integral/index.wxss
new file mode 100644
index 000000000..9e177ecbf
--- /dev/null
+++ b/template/xcx/pages/user_integral/index.wxss
@@ -0,0 +1,31 @@
+@import '/css/guildford.wxss';
+.integral-details .header{background-image:url('data:image/jpeg;base64,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');background-repeat:no-repeat;background-size:100% 100%;width:100%;height:460rpx;font-size:72rpx;color:#fff;padding:31rpx 0 45rpx 0;box-sizing:border-box;text-align:center;}
+.integral-details .header .currentScore{font-size:26rpx;color:rgba(255, 255, 255, 0.8);text-align:center;margin-bottom:11rpx;}
+.integral-details .header .line{width:60rpx;height:3rpx;background-color:#fff;margin:20rpx auto 0 auto;}
+.integral-details .header .nav{font-size:22rpx;color:rgba(255, 255, 255, 0.8);flex:1;margin-top:35rpx;}
+.integral-details .header .nav .item{width:33.33%;text-align:center;}
+.integral-details .header .nav .item .num{color:#fff;font-size:40rpx;margin-bottom:5rpx;font-family: 'Guildford Pro';}
+.integral-details .wrapper .nav{flex:1;width:690rpx;border-radius:20rpx 20rpx 0 0;margin:-96rpx auto 0 auto;background-color:#f7f7f7;height:96rpx;font-size:30rpx;color:#bbb;}
+.integral-details .wrapper .nav .item{text-align:center;width:50%;}
+.integral-details .wrapper .nav .item.on{background-color:#fff;color:#e93323;font-weight:bold;
+border-radius:20rpx 0 0 0;}
+.integral-details .wrapper .nav .item:nth-of-type(2).on{border-radius:0 20rpx 0 0;}
+.integral-details .wrapper .nav .item .iconfont{font-size:38rpx;margin-right:10rpx;}
+.integral-details .wrapper .list{background-color:#fff;padding:24rpx 30rpx;}
+.integral-details .wrapper .list .tip{font-size:25rpx;width:690rpx;height:60rpx;border-radius:50rpx;background-color:#fff5e2;border:1rpx solid #ffeac1;color:#c8a86b;padding:0 20rpx;box-sizing:border-box;margin-bottom:24rpx;}
+.integral-details .wrapper .list .tip .iconfont{font-size:35rpx;margin-right:15rpx;}
+.integral-details .wrapper .list .item{height:124rpx;border-bottom:1rpx solid #eee;font-size:24rpx;color:#999;}
+.integral-details .wrapper .list .item .state{font-size:28rpx;color:#282828;margin-bottom:8rpx;}
+.integral-details .wrapper .list .item .num{font-size:36rpx;font-family: 'Guildford Pro';}
+.integral-details .wrapper .list2{background-color:#fff;padding:24rpx 0;}
+.integral-details .wrapper .list2 .item{background-image:linear-gradient(to right,#fff7e7 0%,#fffdf9 100%);width:690rpx;height:180rpx;position:relative;border-radius:10rpx;margin:0 auto 20rpx auto;padding:0 25rpx 0 180rpx;box-sizing:border-box;}
+.integral-details .wrapper .list2 .item .pictrue{width:90rpx;height:150rpx;position:absolute;bottom:0;left:45rpx;}
+.integral-details .wrapper .list2 .item .pictrue image{width:100%;height:100%;}
+.integral-details .wrapper .list2 .item .name{width:285rpx;font-size:30rpx;font-weight:bold;color:#c8a86b;}
+.integral-details .wrapper .list2 .item .earn{font-size:26rpx;color:#c8a86b;border:2rpx solid #c8a86b;text-align:center;line-height:52rpx;height:52rpx;width:160rpx;border-radius:50rpx;}
+
+
+
+
+
+
diff --git a/template/xcx/pages/user_money/index.js b/template/xcx/pages/user_money/index.js
new file mode 100644
index 000000000..ae3407a2a
--- /dev/null
+++ b/template/xcx/pages/user_money/index.js
@@ -0,0 +1,105 @@
+// pages/my-account/index.js
+
+import { getProductHot } from '../../api/store.js';
+import { openRechargeSubscribe } from '../../utils/SubscribeMessage.js';
+import { getUserInfo, userActivity } from '../../api/user.js';
+
+const app=getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '我的账户',
+ 'color': false,
+ },
+ userInfo:{},
+ host_product:[],
+ isClose:false,
+ recharge_switch:0,
+ },
+
+ /**
+ * 登录回调
+ */
+ onLoadFun:function(){
+ this.getUserInfo();
+ this.get_host_product();
+ this.get_activity();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ openSubscribe:function(e){
+ let page = e.currentTarget.dataset.url;
+ wx.showLoading({
+ title: '正在加载',
+ })
+ openRechargeSubscribe().then(res => {
+ wx.hideLoading();
+ wx.navigateTo({
+ url: page,
+ });
+ }).catch(() => {
+ wx.hideLoading();
+ });
+ },
+
+ /**
+ * 获取用户详情
+ */
+ getUserInfo:function(){
+ let that = this;
+ getUserInfo().then(res=>{
+ that.setData({
+ userInfo: res.data,
+ recharge_switch: res.data.recharge_switch
+ });
+ });
+ },
+ /**
+ * 获取活动可参与否
+ */
+ get_activity:function(){
+ var that=this;
+ userActivity().then(res=>{
+ that.setData({ activity: res.data });
+ })
+ },
+ /**
+ * 获取我的推荐
+ */
+ get_host_product:function(){
+ var that=this;
+ getProductHot().then(res=>{
+ that.setData({ host_product: res.data });
+ })
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if (app.globalData.isLog && this.data.isClose) {
+ this.getUserInfo();
+ this.get_host_product();
+ this.get_activity();
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({ isClose: true });
+ },
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_money/index.json b/template/xcx/pages/user_money/index.json
new file mode 100644
index 000000000..3d8369c79
--- /dev/null
+++ b/template/xcx/pages/user_money/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "recommend": "/components/recommend/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_money/index.wxml b/template/xcx/pages/user_money/index.wxml
new file mode 100644
index 000000000..accafa414
--- /dev/null
+++ b/template/xcx/pages/user_money/index.wxml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+ 账单记录
+
+
+
+ 消费记录
+
+
+
+ 充值记录
+
+
+
+ 积分中心
+
+
+
+
+
+ 签到领积分
+ 赚积分抵现金
+
+
+
+
+
+ 领取优惠券
+ 满减享优惠
+
+
+
+
+
+
+
+
+
+ 最新拼团活动
+ 最新的优惠商品上架拼团
+
+
+ 立即参与
+ 已结束
+
+
+
+
+
+ 当前限时秒杀
+ 最新商品秒杀进行中
+
+
+ 立即参与
+ 已结束
+
+
+
+
+
+ 砍价活动
+ 呼朋唤友来砍价
+
+
+ 立即参与
+ 已结束
+
+
+
+
+
+
diff --git a/template/xcx/pages/user_money/index.wxss b/template/xcx/pages/user_money/index.wxss
new file mode 100644
index 000000000..04b40e215
--- /dev/null
+++ b/template/xcx/pages/user_money/index.wxss
@@ -0,0 +1,32 @@
+@import '/css/guildford.wxss';
+.my-account .wrapper{background-color:#fff;padding:32rpx 0 34rpx 0;margin-bottom:14rpx;}
+.my-account .wrapper .header{width:690rpx;height:330rpx;background-image:linear-gradient(to right,#f33b2b 0%,#f36053 100%);border-radius:16rpx;margin:0 auto;box-sizing:border-box;color:rgba(255,255,255,0.6);font-size:24rpx;}
+.my-account .wrapper .header .headerCon{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArIAAAFKCAYAAADhULxpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzMUM4RDlEM0YxNTExRTk4OUJFQ0Q4Qjg0RDBCMzQ1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzMUM4RDlFM0YxNTExRTk4OUJFQ0Q4Qjg0RDBCMzQ1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTMxQzhEOUIzRjE1MTFFOTg5QkVDRDhCODREMEIzNDUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTMxQzhEOUMzRjE1MTFFOTg5QkVDRDhCODREMEIzNDUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ymvxvAAAIhklEQVR42uzd0W6bQBCG0QWMwfj9nzfNKNBYVSq1iXH443MkXzfdGz6hYbZ7eXlpAACQpncEAAAIWQAAELIAACBkAQAQsgAAIGQBAEDIAgAgZAEAQMgCAICQBQAAIQsAgJAFAAAhCwAAQhYAACELAABCFgAAhCwAAEIWAACELAAACFkAABCyAAAIWQAAELIAACBkAQAQsgAAIGQBAEDIAgAgZAEAQMgCAICQBQAAIQsAgJAFAAAhCwAAQhYAACELAABCFgAAhCwAAEIWAACELAAACFkAABCyAAAIWQAAELIAACBkAQAQsgAAIGQBAEDIAgAgZAEAQMgCAICQBQAAIQsAgJAFAAAhCwAAQhYAACELAABCFgAAhCwAAEIWAACELAAACFkAABCyAAAIWQAAELIAACBkAQAQsgAAIGQBAEDIAgCAkAUAQMgCAICQBQAAIQsAgJAFAAAhCwAAQhYAACELAABCFgAAhCwAAAhZAACELAAACFkAABCyAAAIWQAAELIAACBkAQAQsgAAIGQBAEDIAgCAkAUAQMgCAICQBQAAIQsAgJAFAAAhCwAAQhYAACELAABCFgAAhCwAAAhZAACELAAACFkAABCyAAAIWQAAELIAACBkAQAQsgAAIGQBAEDIAgCAkAUAQMgCAICQBQAAIQsAgJAFAAAhCwAAQhYAACELAABCFgAAhCwAAAhZAACELAAACFkAABCyAAAIWQAAELIAACBkAQAQsgAAIGQBAEDIAgCAkAUAQMgCAICQBQAAIQsAgJAFAAAhCwAAQhYAAIQsAABCFgAAhCwAAAhZAACELAAACFkAABCyAAAIWQAAELIAACBkAQBAyAIAIGQBAEDIAgCAkAUAQMgCAICQBQAAIQsAgJAFAAAhCwAAQhYAAIQsAABCFgAAhCwAAAhZAACELAAACFkAABCyAAAIWQAAELIAACBkAQBAyAIAIGQBAEDIAgCAkAUA4Ec7OQIAAIJ0r7/h9dcLWQAAjh6tt7/fEwVCFgCAw0frR4QsAADfoV9b9DZc/4uQBQDgkeG6xeuXlw4IWQAA9g7X+nX3/geELAAA99D9Ea67r3kVsgAAfFaNCIztfVzgoYQsAAD/6vat69h2GBcQsgAA3Et/E66HakchCwDAR/G6hethe1HIAgBwG6/1GxL+YCELAPC8ujVczynxKmQBAMTr4WZehSwAAH/rvnPb6XICIQsAwD31a7yO7QEXFAhZAAC+InruVcgCADyfob2/fe2e4T8sZAEAsm1vX5+u64QsAECebfa1ft2zHoKQBQDIUeMDU3t7C/v0hCwAwPGNa8AOjkLIAgAcXY0MbOMDveMQsgAAR2f+VcgCAMQF7LQGLEIWAODwfMAlZAEABKyQBQBgz4CddZiQBQAQsEIWAICdAtYIgZAFAIhRWwhmAStkAQBSdGvAWqMlZAEAYgJ22wPrIgMhCwAQoeJ1FrBCFgAgqaUqYAdHIWQBABLUh1wXLSVkAQBSbHOwk6MQsgAAKczBClkAgCg1/3pp5mCFLABACPtghSwAQJy6jevSjBEIWQCAELYRCFkAgDjbNgJvYYUsAEAEH3MJWQCAKHbCClkAgMgGqrewvaMQsgAACazUErIAAJHd4y2skAUAiFJvYc3CClkAgBg2EghZAIA49QZ2dgxCFgAghdu5hCwAQJxxjVi3cwlZAIAYFbDWaglZAIAYNUqwNB90CVkAgCD1BrY+6DJKIGQBACK4oQshCwDEMUqAkAUA4thKgJAFAOK4ZhYhCwBEqbevi25ByAIASYY1YntHgZAFAFLURoKLY0DIAgBJzMMiZAGAKOZhEbIAQJyag70287AIWQAgrEnqTaz9sAhZACCGj7oQsgBAHB91IWQBgDg1SjA6BoQsAJCi5mDro67BUSBkAYAUNhMgZAGAOMMasTYTIGQBgKjmsF4LIQsARBnXiAUhCwDEsCMWIQsAxKn9sLNjQMgCAElcdICQBQDi1CjB2TEgZAGAJG7r4mEsIwYARCxCFgAQsfAoRgsAgK+6agqELACQpG7pWvQE38VoAQDwWSIWIQsAxDFOgJAFAOJ4E4uQBQAiI9Z2AoQsACBiQcgCAHu6iFiELACQZn79nR0DQhYASDKtPxCyAECMegs7OwaELACQpOZhL44BIQsAJKkdsYtjQMgCAEkGEYuQBQASu6AitnMUCFkAIEXF61UbIGQBABELQhYA2FltJxgcA0IWAEhSe2JdPYuQBQCi1IUHbu1CyAIAUWpXrAsPELIAQNzz365YhCwAEGXbUGBXLEIWAIiyeP4jZAGANLWh4OQYELIAQBIbChCyAECcuuxgdgwIWQAgSX3UtTQfdyFkAYAwPu5CyAIAcXzchZAFAOKMzcddCFkAIPD57vpZhCwAEMXHXQhZACBSzcUOjgEhCwAkOa8/ELIAQNQz3aUHCFkAII65WIQsABCnNhSYi0XIAgBRal+suViELAAQ9xy3LxYhCwDEqYg1F4uQBQCi1PWzJ8eAkAUAktSHXVZtIWQdAQDEMRcLQhYA4riCFoQsAMSpmdjJMYCQBYAktZ3ASAEIWQCIM3tug5AFgDQ1UuD2LhCyABDFSAEIWQCINHleg5AFgDRDs6UAhCwABFocAQhZAEhjpACELABEPp9nxwBCFgDS2FIAQhYA4oztbW8sIGQBIIadsSBkASDSvMYsIGQBIEbtjHUNLQhZAIhjpACELADEqTexg2MAIQsASWom1s5YELIAEGdqPvACIQsAgc/hyTGAkAWAND7wAiELAHFOzQ1eIGQBIJAPvEDIAkAc67ZAyAJAHOu2QMgCQCTrtkDIAkCcCtizYwAhCwBp5uZtLAhZAAh85nobC0IWAOL4wAuELADEqVVbo2MAIQsAaSZHAEIWANJ4GwtCFgAimY2FnfwSYABJ5w5fwq1SbwAAAABJRU5ErkJggg==');background-repeat:no-repeat;background-size:100%;height:100%;width:100%;padding:36rpx 0 29rpx 0;box-sizing:border-box;}
+.my-account .wrapper .header .headerCon .account{padding:0 35rpx;}
+.my-account .wrapper .header .headerCon .account .assets .money{font-size:72rpx;color:#fff;font-family: 'Guildford Pro';margin-top: 15rpx;}
+.my-account .wrapper .header .headerCon .account .recharge{font-size:28rpx;width:150rpx;height:54rpx;border-radius:27rpx;background-color:#fff9f8;text-align:center;line-height:54rpx;}
+.my-account .wrapper .header .headerCon .cumulative{margin-top:46rpx;}
+.my-account .wrapper .header .headerCon .cumulative .item{flex:1;padding-left:35rpx;}
+.my-account .wrapper .header .headerCon .cumulative .item .money{font-size:48rpx;font-family: 'Guildford Pro';color:#fff;margin-top:6rpx;}
+.my-account .wrapper .nav{height:155rpx;border-bottom:1rpx solid #f5f5f5;}
+.my-account .wrapper .nav .item{flex:1;text-align:center;font-size:26rpx;color:#999;}
+.my-account .wrapper .nav .item .pictrue{width:44rpx;height:44rpx;margin:0 auto;margin-bottom:20rpx;}
+.my-account .wrapper .nav .item .pictrue image{width:100%;height:100%;}
+.my-account .wrapper .advert{padding:0 30rpx;margin-top:30rpx;}
+.my-account .wrapper .advert .item{background-color:#fff6d1;width:332rpx;height:118rpx;border-radius:10rpx;padding:0 27rpx 0 25rpx;box-sizing:border-box;font-size:24rpx;color:#e44609;}
+.my-account .wrapper .advert .item.on{background-color:#fff3f3;color:#e96868;}
+.my-account .wrapper .advert .item .pictrue{width:78rpx;height:78rpx;}
+.my-account .wrapper .advert .item .pictrue image{width:100%;height:100%;}
+.my-account .wrapper .advert .item .text .name{font-size:30rpx;font-weight:bold;color:#f33c2b;margin-bottom:7rpx;}
+.my-account .wrapper .advert .item.on .text .name{color:#f64051;}
+.my-account .wrapper .list{padding:0 30rpx;}
+.my-account .wrapper .list .item{margin-top:44rpx;}
+.my-account .wrapper .list .item .picTxt .iconfont{width:82rpx;height:82rpx;border-radius:50%;background-image:linear-gradient(to right,#ff9389 0%,#f9776b 100%);text-align:center;line-height:82rpx;color:#fff;font-size:40rpx;}
+.my-account .wrapper .list .item .picTxt .iconfont.yellow{background-image:linear-gradient(to right,#ffccaa 0%,#fea060 100%);}
+.my-account .wrapper .list .item .picTxt .iconfont.green{background-image:linear-gradient(to right,#a1d67c 0%,#9dd074 100%);}
+.my-account .wrapper .list .item .picTxt{width:428rpx;font-size:30rpx;color:#282828;}
+.my-account .wrapper .list .item .picTxt .text{width:317rpx;}
+.my-account .wrapper .list .item .picTxt .text .infor{font-size:24rpx;color:#999;margin-top:5rpx;}
+.my-account .wrapper .list .item .bnt{font-size:26rpx;color:#282828;width:156rpx;height:52rpx;border:1rpx solid #ddd;border-radius:26rpx;text-align:center;line-height:52rpx;}
+.my-account .wrapper .list .item .bnt.end{font-size:26rpx;color:#aaa;background-color:#f2f2f2;
+border-color:#f2f2f2;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_payment/index.js b/template/xcx/pages/user_payment/index.js
new file mode 100644
index 000000000..a8003332c
--- /dev/null
+++ b/template/xcx/pages/user_payment/index.js
@@ -0,0 +1,170 @@
+// pages/mall/payment/payment.js
+import { getUserInfo, rechargeRoutine, getRechargeApi} from '../../api/user.js';
+
+var app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ picList:[],
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '余额充值',
+ 'color': false,
+ },
+ navRecharge: ['账户充值','佣金转入'],
+ active:0,
+ number:'',
+ focus:true,
+ userinfo:{},
+ placeholder:"0.00",
+ placeholderOther:"其他",
+ activePic:0,
+ numberPic: '',
+ rechar_id: 0,
+ recharge_attention:[]
+ },
+
+ /**
+ * 登录授权回调
+ */
+ onLoadFun:function(){
+ this.getUserInfo();
+ this.getRecharge();
+ },
+ setPlaceholderStatus:function(event){
+ if (event.detail.value.length == 0) this.setData({ placeholder: '0.00' });
+ },
+ setPlaceholder:function(){
+ this.setData({ placeholder : '' })
+ },
+ setOtherPlaceholder:function(){
+ this.setData({ placeholderOther : '' })
+ },
+ setOtherPlaceholderStatus:function(event){
+ if (event.detail.value.length == 0) this.setData({ placeholderOther: '其他' });
+ },
+ navRecharge:function(e){
+ this.setData({
+ active: e.currentTarget.dataset.id,
+ activePic: 0
+ })
+ if (this.data.picList.length){
+ this.setData({
+ rechar_id: this.data.picList[0].id,
+ numberPic: this.data.picList[0].price
+ })
+ }
+ },
+ /**
+ * 选择金额
+ */
+ picCharge:function(e){
+ if (e.currentTarget.dataset.id == 0) {
+ this.setData({
+ activePic: e.currentTarget.dataset.index,
+ rechar_id: 0,
+ numberPic: ''
+ })
+ }else {
+ this.setData({
+ number: '',
+ activePic: e.currentTarget.dataset.index,
+ rechar_id: e.currentTarget.dataset.id,
+ numberPic: e.currentTarget.dataset.quota,
+ placeholderOther: '其他'
+ })
+ }
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ /**
+ * 充值额度选择
+ */
+ getRecharge: function () {
+ var that = this;
+ getRechargeApi().then(res => {
+ that.setData({
+ picList: res.data.recharge_quota,
+ rechar_id: res.data.recharge_quota[0].id,
+ numberPic: res.data.recharge_quota[0].price,
+ recharge_attention: res.data.recharge_attention || []
+ });
+ })
+ },
+ /**
+ * 获取用户信息
+ */
+ getUserInfo:function(){
+ var that = this;
+ getUserInfo().then(res=>{
+ that.setData({ userinfo: res.data });
+ })
+ },
+ /*
+ * 用户充值
+ */
+ submitSub:function(e){
+ let that = this, value = e.detail.value.number, commissionCount = that.data.userinfo.commissionCount;
+ if (that.data.active){
+ if (parseFloat(value) < 0 || !value) return app.Tips({ title: '请输入金额' });
+ if (Number(value) > Number(commissionCount)) return app.Tips({ title: '转佣金额不能大于' + commissionCount });
+ wx.showModal({
+ title: '转入余额',
+ content: '转入余额后无法再次转出,确认是否转入余额',
+ success(res){
+ if (res.confirm){
+ rechargeRoutine({ price: value, type: 1 }).then(res => {
+ that.setData({ 'userinfo.now_money': app.help().Add(value, that.data.userinfo.now_money) });
+ return app.Tips({ title: '转入成功', icon: 'success' }, {tab:5,url:'/pages/user_money/index'});
+ }).catch(err => {
+ return app.Tips({ title: err })
+ });
+ } else if (res.cancel){
+ return app.Tips({title:'已取消'});
+ }
+ },
+ })
+ }else{
+ if (this.data.picList.length == this.data.activePic && !value) return app.Tips({ title: '请输入金额' });
+ wx.showLoading({
+ title: '正在支付',
+ })
+ rechargeRoutine({
+ price: that.data.rechar_id == 0 ? value : that.data.numberPic,
+ type: 0,
+ rechar_id: that.data.rechar_id
+ }).then(res=>{
+ wx.hideLoading();
+ let jsConfig = res.data;
+ wx.requestPayment({
+ timeStamp: jsConfig.timestamp,
+ nonceStr: jsConfig.nonceStr,
+ package: jsConfig.package,
+ signType: jsConfig.signType,
+ paySign: jsConfig.paySign,
+ success: function (res) {
+ that.setData({ 'userinfo.now_money': app.help().Add(value, that.data.userinfo.now_money) });
+ return app.Tips({ title: '支付成功', icon: 'success' }, {tab:5,url:'/pages/user_money/index'});
+ },
+ fail: function () {
+ return app.Tips({ title: '支付失败' });
+ },
+ complete: function (res) {
+ if (res.errMsg == 'requestPayment:cancel') return app.Tips({ title: '取消支付' });
+ }
+ })
+ }).catch(err=>{
+ wx.hideLoading();
+ return app.Tips({title:err})
+ });
+ }
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_payment/index.json b/template/xcx/pages/user_payment/index.json
new file mode 100644
index 000000000..ad81b4721
--- /dev/null
+++ b/template/xcx/pages/user_payment/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
diff --git a/template/xcx/pages/user_payment/index.wxml b/template/xcx/pages/user_payment/index.wxml
new file mode 100644
index 000000000..16714aae3
--- /dev/null
+++ b/template/xcx/pages/user_payment/index.wxml
@@ -0,0 +1,39 @@
+
+
+
+ 我的余额
+ ¥{{userinfo.now_money || 0}}
+
+
+
+ {{item}}
+
+
+
+ ¥
+
+
+ 提示:
+ 当前可转入佣金:
+ ¥{{userinfo.commissionCount || 0}}
+
+
+
+
+
+ {{item.price}} 元
+ 赠送:{{item.give_money}}元
+
+
+
+
+
+
+
+ 注意事项:
+ {{item}}
+
+ {{active ? '立即转入': '立即充值' }}
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user_payment/index.wxss b/template/xcx/pages/user_payment/index.wxss
new file mode 100644
index 000000000..a526854c1
--- /dev/null
+++ b/template/xcx/pages/user_payment/index.wxss
@@ -0,0 +1,21 @@
+.payment{width:100%;background-color:#fff;margin:20rpx auto 0 auto;padding: 30rpx;border-top-right-radius: 39rpx;border-top-left-radius: 39rpx;margin-top: -45rpx;}
+.payment .nav{height:75rpx;line-height:75rpx;padding: 0 100rpx;}
+.payment .nav .item{font-size:30rpx;color:#333;}
+.payment .nav .item.on{font-weight:bold;border-bottom:4rpx solid #e83323;}
+.payment .input{width:100%;border-bottom:1rpx solid #dddddd;margin:60rpx auto 0 auto;font-size:56rpx;color:#333333;flex-wrap:nowrap;}
+.payment .input text{padding-left:106rpx;}
+.payment .input input{padding-right:106rpx;height:94rpx;text-align:center;}
+.payment .placeholder{font-size:84.5rpx;color:#d0d0d0;}
+.payment .tip{font-size:28rpx;color:#333333;font-weight:800;margin-bottom: 14rpx;}
+.payment .tip-samll{font-size:24rpx;color:#333333;margin-bottom: 14rpx;}
+.payment .but{color:#fff;font-size:30rpx;width:550rpx;height:86rpx;border-radius:50rpx;margin:46rpx auto 0 auto;line-height:86rpx;}
+.payment-top{width: 100%;height: 350rpx;background-color: #E83323;}
+.payment-top .name{font-size:26rpx;color:rgba(255,255,255,.8);margin-top: -38rpx;margin-bottom: 30rpx;}
+.payment-top .pic{font-size:32rpx;color: #fff;}
+.payment-top .pic-font{font-size:78rpx;color: #fff;}
+.picList .pic-box{width:216rpx; height:120rpx;border-radius:20rpx;margin-top: 21rpx;}
+.pic-box-color{background-color: #F4F4F4;color: #656565;}
+.pic-box-color-active{background-color: #EC3323;color: #fff;}
+.pic-box-active{width:216rpx; height:120rpx;background-color: #EC3323;border-radius:20rpx;}
+.pic-number{font-size:22rpx;}
+.pic-number-pic{font-size:38rpx;margin-right: 10rpx;text-align: center;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_phone/index.js b/template/xcx/pages/user_phone/index.js
new file mode 100644
index 000000000..25312ef8d
--- /dev/null
+++ b/template/xcx/pages/user_phone/index.js
@@ -0,0 +1,188 @@
+import { registerVerify, bindingPhone, verifyCode} from '../../api/api.js';
+const app = getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '绑定手机号',
+ 'color': true,
+ 'class': '0'
+ },
+ disabled: false,
+ active: false,
+ timetext: '获取验证码',
+ userInfo: {},
+ phone: '',
+ key: '',
+ imagesCode: false,
+ httpUrl: '',
+ captchaimg: ''
+ },
+ inputgetName(e) {
+ let that = this;
+ let name = e.currentTarget.dataset.name;
+ let nameMap = {}
+ if (name.indexOf('.') != -1) {
+ let nameList = name.split('.')
+ if (that.data[nameList[0]]) {
+ nameMap[nameList[0]] = that.data[nameList[0]]
+ } else {
+ nameMap[nameList[0]] = {}
+ }
+ nameMap[nameList[0]][nameList[1]] = e.detail.value
+ } else {
+ nameMap[name] = e.detail.value
+ }
+ that.setData(nameMap);
+ },
+ onLoadFun:function(){
+
+ },
+ editPwd:function(){
+ let that = this;
+ if (!this.data.phone) return app.Tips({ title: '请填写手机号码!' });
+ if (!(/^1[3456789]\d{9}$/.test(this.data.phone))) return app.Tips({ title: '请输入正确的手机号码!' });
+ if (!this.data.captcha) return app.Tips({title:'请填写验证码'});
+ bindingPhone({
+ phone:this.data.phone,
+ captcha: this.data.captcha
+ }).then(res=>{
+ if (res.data !== undefined && res.data.is_bind){
+ wx.showModal({
+ title:'是否绑定账号',
+ content:res.msg,
+ confirmText:'绑定',
+ success(res){
+ if (res.confirm){
+ bindingPhone({
+ phone: that.data.phone,
+ captcha: that.data.captcha,
+ step:1
+ }).then(res=>{
+ return app.Tips({ title: res.msg, icon: 'success' }, { tab: 5, url: '/pages/user_info/index' });
+ }).catch(err => { return app.Tips({ title: err }); })
+ } else if (res.cancel){
+ return app.Tips({ title: '您已取消绑定!'}, { tab: 5, url: '/pages/user_info/index' });
+ }
+ }
+ });
+ }else
+ return app.Tips({title:'绑定成功!',icon:'success'},{tab:5,url:'/pages/user_info/index'});
+ }).catch(err=>{
+ return app.Tips({title:err});
+ })
+ },
+ /**
+ * 发送验证码
+ *
+ */
+ code: function () {
+ let that = this;
+ if (!this.data.phone) return app.Tips({ title: '请填写手机号码!' });
+ if (!(/^1[3456789]\d{9}$/.test(that.data.phone))) return app.Tips({ title: '请输入正确的手机号码!' });
+ if (that.data.imagesCode) {
+ if (!that.data.captchaimg) {
+ return app.Tips({ title: '请输入图片验证码' });
+ }
+ };
+ registerVerify(this.data.captchaimg, this.data.key,this.data.phone).then(res => {
+ if (res.status == 402) {
+ that.data.imagesCode = true;
+ that.setData({
+ imagesCode: that.data.imagesCode
+ });
+ if (this.data.captchaimg != '') {
+ that.runNun();
+ }
+ } else {
+ that.runNun();
+ }
+ return app.Tips({title:'发送成功',icon:'success'});
+ }).catch(err => {
+ return app.Tips({ title: err });
+ });
+ },
+ runNun: function () {
+ let that = this;
+ let n = 60;
+ let run = setInterval(function () {
+ n--;
+ if (n < 0) {
+ clearInterval(run);
+ that.setData({ disabled: false, active: false, timetext: '重新获取' })
+ } else {
+ that.setData({ timetext: "剩余 " + n + "s", disabled: true, active: true })
+ }
+ }, 1000);
+ },
+ // 获取key值;
+ getVerifyCode: function () {
+ let that = this;
+ verifyCode().then(res => {
+ that.setData({
+ key: res.data.key,
+ httpUrl: app.globalData.url + '/api/sms_captcha?key=' + res.data.key
+ })
+ }).catch(err => {
+ return app.Tips({ title: err.msg });
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.getVerifyCode();
+ },
+ imagesCodeTap: function () {
+ this.setData({
+ httpUrl: this.data.httpUrl + '&' + Date.parse(new Date())
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_phone/index.json b/template/xcx/pages/user_phone/index.json
new file mode 100644
index 000000000..4912fb41c
--- /dev/null
+++ b/template/xcx/pages/user_phone/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_phone/index.wxml b/template/xcx/pages/user_phone/index.wxml
new file mode 100644
index 000000000..8ec8615f3
--- /dev/null
+++ b/template/xcx/pages/user_phone/index.wxml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+ {{ timetext }}
+
+
+
+
+
+
+
+ 确认绑定
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user_phone/index.wxss b/template/xcx/pages/user_phone/index.wxss
new file mode 100644
index 000000000..a7045e242
--- /dev/null
+++ b/template/xcx/pages/user_phone/index.wxss
@@ -0,0 +1,12 @@
+/*修改密码*/
+page{background-color:#fff!important;}
+.ChangePassword .phone{font-size:32rpx;font-weight:bold;text-align:center;margin-top:55rpx;}
+.ChangePassword .list{width:580rpx;margin:53rpx auto 0 auto;}
+.ChangePassword .list .item{width:100%;height:110rpx;border-bottom:2rpx solid #f0f0f0;}
+.ChangePassword .list .item input{width:100%;height:100%;font-size:32rpx;}
+.ChangePassword .list .item .placeholder{color:#b9b9bc;}
+.ChangePassword .list .item input.codeIput{width:340rpx;}
+.ChangePassword .list .item .code{font-size:32rpx;background-color:#fff;}
+.ChangePassword .list .item .code.on{color:#b9b9bc!important;}
+.ChangePassword .list .item .images{width: 160rpx;height:70rpx;display:block;}
+.ChangePassword .confirmBnt{font-size:32rpx;width:580rpx;height:90rpx;border-radius:45rpx;color:#fff;margin:92rpx auto 0 auto;text-align:center;line-height:90rpx;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_pwd_edit/index.js b/template/xcx/pages/user_pwd_edit/index.js
new file mode 100644
index 000000000..9dd07bf6f
--- /dev/null
+++ b/template/xcx/pages/user_pwd_edit/index.js
@@ -0,0 +1,167 @@
+import { phoneRegisterReset, registerVerify, verifyCode} from '../../api/api.js';
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '登录',
+ 'color': true,
+ 'class': '0'
+ },
+ disabled: false,
+ active: false,
+ timetext: '获取验证码',
+ userInfo:{},
+ phone:'',
+ key:'',
+ imagesCode:false,
+ httpUrl:'',
+ captchaimg:''
+ },
+
+ inputgetName(e) {
+ let that = this;
+ let name = e.currentTarget.dataset.name;
+ let nameMap = {}
+ if (name.indexOf('.') != -1) {
+ let nameList = name.split('.')
+ if (that.data[nameList[0]]) {
+ nameMap[nameList[0]] = that.data[nameList[0]]
+ } else {
+ nameMap[nameList[0]] = {}
+ }
+ nameMap[nameList[0]][nameList[1]] = e.detail.value
+ } else {
+ nameMap[name] = e.detail.value
+ }
+ that.setData(nameMap);
+ },
+
+ onLoadFun:function(e){
+ let userInfo = e.detail;
+ let tel = userInfo.phone;
+ let phone = tel.substr(0, 3) + "****" + tel.substr(7);
+ this.setData({ userInfo: e.detail, phone: phone});
+ },
+ /**
+ * 发送验证码
+ *
+ */
+ code: function () {
+ let that = this;
+ if (!this.data.userInfo.phone) return app.Tips({title:'手机号码不存在,无法发送验证码'});
+ if (that.data.imagesCode){
+ if (!that.data.captchaimg) {
+ return app.Tips({ title: '请输入图片验证码' });
+ }
+ };
+ registerVerify(this.data.captchaimg,this.data.key,this.data.userInfo.phone).then(res=>{
+ if (res.status == 402) {
+ that.data.imagesCode = true;
+ that.setData({
+ imagesCode: that.data.imagesCode
+ });
+ if (this.data.captchaimg != '') {
+ that.runNun();
+ }
+ }else{
+ that.runNun();
+ }
+ }).catch(function(err){
+ return app.Tips({ title: err });
+ });
+ },
+ runNun:function(){
+ let that = this;
+ let n = 60;
+ let run = setInterval(function () {
+ n--;
+ if (n < 0) {
+ clearInterval(run);
+ that.setData({ disabled: false, active: false, timetext: '重新获取' })
+ } else {
+ that.setData({ timetext: "剩余 " + n + "s", disabled: true, active: true })
+ }
+ }, 1000);
+ },
+ /**
+ * H5登录 修改密码
+ *
+ */
+ editPwd:function(){
+ let that = this;
+ if (!that.data.password) return app.Tips({title:'请输入新密码'});
+ if (that.data.qr_password != that.data.password) return app.Tips({title:'两次输入的密码不一致!'});
+ if (!that.data.captcha) return app.Tips({title:'请输入验证码'});
+ if (that.data.imagesCode){
+ if (!that.data.captchaimg){
+ return app.Tips({ title: '请输入图片验证码' });
+ }
+ };
+ phoneRegisterReset({
+ account:that.data.userInfo.phone,
+ captcha:that.data.captcha,
+ password: that.data.password,
+ code: that.data.captchaimg
+ }).then(res=>{
+ return app.Tips({title:res.msg},{tab:3,url:1});
+ }).catch(err=>{
+ return app.Tips({title:err});
+ });
+ },
+ // 获取key值;
+ getVerifyCode:function(){
+ let that = this;
+ verifyCode().then(res=>{
+ that.setData({
+ key: res.data.key,
+ httpUrl: app.globalData.url + '/api/sms_captcha?key=' + res.data.key
+ })
+ }).catch(err=>{
+ return app.Tips({ title: err.msg });
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.getVerifyCode();
+ },
+ imagesCodeTap:function(){
+ this.setData({
+ httpUrl: this.data.httpUrl + '&' + Date.parse(new Date())
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_pwd_edit/index.json b/template/xcx/pages/user_pwd_edit/index.json
new file mode 100644
index 000000000..01bfd5e28
--- /dev/null
+++ b/template/xcx/pages/user_pwd_edit/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_pwd_edit/index.wxml b/template/xcx/pages/user_pwd_edit/index.wxml
new file mode 100644
index 000000000..be5e86faf
--- /dev/null
+++ b/template/xcx/pages/user_pwd_edit/index.wxml
@@ -0,0 +1,28 @@
+
+
+ 当前手机号:{{phone}}
+
+
+
+
+
+
+
+
+
+
+ {{ timetext }}
+
+
+
+
+
+
+
+ 确认修改
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user_pwd_edit/index.wxss b/template/xcx/pages/user_pwd_edit/index.wxss
new file mode 100644
index 000000000..a7045e242
--- /dev/null
+++ b/template/xcx/pages/user_pwd_edit/index.wxss
@@ -0,0 +1,12 @@
+/*修改密码*/
+page{background-color:#fff!important;}
+.ChangePassword .phone{font-size:32rpx;font-weight:bold;text-align:center;margin-top:55rpx;}
+.ChangePassword .list{width:580rpx;margin:53rpx auto 0 auto;}
+.ChangePassword .list .item{width:100%;height:110rpx;border-bottom:2rpx solid #f0f0f0;}
+.ChangePassword .list .item input{width:100%;height:100%;font-size:32rpx;}
+.ChangePassword .list .item .placeholder{color:#b9b9bc;}
+.ChangePassword .list .item input.codeIput{width:340rpx;}
+.ChangePassword .list .item .code{font-size:32rpx;background-color:#fff;}
+.ChangePassword .list .item .code.on{color:#b9b9bc!important;}
+.ChangePassword .list .item .images{width: 160rpx;height:70rpx;display:block;}
+.ChangePassword .confirmBnt{font-size:32rpx;width:580rpx;height:90rpx;border-radius:45rpx;color:#fff;margin:92rpx auto 0 auto;text-align:center;line-height:90rpx;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_return_list/index.js b/template/xcx/pages/user_return_list/index.js
new file mode 100644
index 000000000..5f9f21ee2
--- /dev/null
+++ b/template/xcx/pages/user_return_list/index.js
@@ -0,0 +1,118 @@
+// pages/return-list/index.js
+import { getOrderList } from '../../api/order.js';
+
+
+const app=getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '退货列表',
+ 'color': false
+ },
+ loading: false,//是否加载中
+ loadend: false,//是否加载完毕
+ loadTitle: '加载更多',//提示语
+ orderList: [],//订单数组
+ orderStatus: -3,//订单状态
+ page: 1,
+ limit: 10
+ },
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getOrderList();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ if (options.isT) this.setData({'parameter.return':0});
+ },
+
+ /**
+ * 去订单详情
+ */
+ goOrderDetails: function (e) {
+ var order_id = e.currentTarget.dataset.order_id;
+ if (!order_id) return app.Tips({ title: '缺少订单号无法查看订单详情' });
+ wx.navigateTo({ url: '/pages/order_details/index?order_id=' + order_id +'&isReturen=1' })
+ },
+
+ /**
+ * 获取订单列表
+ */
+ getOrderList: function () {
+ var that = this;
+ if (that.data.loadend) return;
+ if (that.data.loading) return;
+ that.setData({ loading: true, loadTitle: "" });
+ getOrderList({
+ type: that.data.orderStatus,
+ page: that.data.page,
+ limit: that.data.limit,
+ }).then(res=>{
+ var list = res.data || [];
+ var loadend = list.length < that.data.limit;
+ that.data.orderList = app.SplitArray(list, that.data.orderList);
+ that.setData({
+ orderList: that.data.orderList,
+ loadend: loadend,
+ loading: false,
+ loadTitle: loadend ? "我也是有底线的" : '加载更多',
+ page: that.data.page + 1,
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadTitle: "加载更多" });
+ });
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getOrderList();
+ },
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_return_list/index.json b/template/xcx/pages/user_return_list/index.json
new file mode 100644
index 000000000..b382c75dc
--- /dev/null
+++ b/template/xcx/pages/user_return_list/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize",
+ "home": "/components/home/index"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_return_list/index.wxml b/template/xcx/pages/user_return_list/index.wxml
new file mode 100644
index 000000000..69843a7af
--- /dev/null
+++ b/template/xcx/pages/user_return_list/index.wxml
@@ -0,0 +1,28 @@
+
+
+
+
+
+ 订单号:{{item.order_id}}
+
+
+
+
+ {{item.productInfo.store_name}}
+ x {{item.cart_num}}
+
+ {{item.productInfo.attrInfo.suk}}
+ {{item.productInfo.store_name}}
+ ¥{{item.productInfo.price}}
+
+
+ 共{{item.cartInfo.length || 0}}件商品,总金额 ¥{{item.pay_price}}
+
+
+
+ {{loadTitle}}
+
+
+
+
+
diff --git a/template/xcx/pages/user_return_list/index.wxss b/template/xcx/pages/user_return_list/index.wxss
new file mode 100644
index 000000000..19b7a629f
--- /dev/null
+++ b/template/xcx/pages/user_return_list/index.wxss
@@ -0,0 +1,7 @@
+.return-list .goodWrapper{background-color:#fff;margin-top:13rpx;position:relative;}
+.return-list .goodWrapper .orderNum{padding:0 30rpx;border-bottom:1px solid #eee;height:87rpx;line-height:87rpx;font-size:30rpx;color:#282828;}
+.return-list .goodWrapper .item{border-bottom:0;}
+.return-list .goodWrapper .totalSum{padding:0 30rpx 32rpx 30rpx;text-align:right;font-size:26rpx;color:#282828;}
+.return-list .goodWrapper .totalSum .price{font-size:28rpx;font-weight:bold;}
+.return-list .goodWrapper .iconfont{position:absolute;font-size:109rpx;top:7rpx;right:30rpx;color:#ccc;}
+.return-list .goodWrapper .iconfont.powder{color:#f8c1bd;}
diff --git a/template/xcx/pages/user_sgin/index.js b/template/xcx/pages/user_sgin/index.js
new file mode 100644
index 000000000..132e5abcb
--- /dev/null
+++ b/template/xcx/pages/user_sgin/index.js
@@ -0,0 +1,138 @@
+import util from '../../utils/util.js';
+import { postSignUser, getSignConfig, getSignList, setSignIntegral} from '../../api/user.js';
+import { setFormId } from '../../api/api.js';
+
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '签到',
+ 'color': true,
+ 'class':'0'
+ },
+ active:false,
+ userInfo:{},
+ signCount:[],
+ signSystemList:[],
+ signList:[],
+ integral:0,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getUserInfo();
+ this.getSignSysteam();
+ this.getSignList();
+ },
+
+ /**
+ * 获取签到配置
+ */
+ getSignSysteam:function(){
+ var that=this;
+ getSignConfig().then(res=>{
+ that.setData({ signSystemList: res.data, day: that.Rp(res.data.length) });
+ })
+ },
+
+ /**
+ * 去签到记录页面
+ *
+ */
+ goSignList:function(){
+ return app.Tips('/pages/user_sgin_list/index');
+ },
+ /**
+ * 获取用户信息
+ */
+ getUserInfo:function(){
+ var that=this;
+ postSignUser({ sign: 1 }).then(res=>{
+ res.data.integral = parseInt(res.data.integral);
+ var sum_sgin_day = res.data.sum_sgin_day;
+ that.setData({ userInfo: res.data, signCount: that.PrefixInteger(sum_sgin_day, 4), sign_index: res.data.sign_num });
+ });
+ },
+
+ /**
+ * 获取签到列表
+ *
+ */
+ getSignList:function(){
+ var that=this;
+ getSignList({page:1,limit:3}).then(res=>{
+ that.setData({ signList: res.data });
+ })
+ },
+ /**
+ * 数字转中文
+ *
+ */
+ Rp: function (n) {
+ var cnum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
+ var s = '';
+ n = '' + n; // 数字转为字符串
+ for (var i = 0; i < n.length; i++) {
+ s += cnum[parseInt(n.charAt(i))];
+ }
+ return s;
+ },
+ /**
+ * 数字分割为数组
+ * @param int num 需要分割的数字
+ * @param int length 需要分割为n位数组
+ */
+ PrefixInteger: function (num, length) {
+ return (Array(length).join('0') + num).slice(-length).split('');
+ },
+
+ /**
+ * 用户签到
+ */
+ goSign:function(e){
+ let that = this, sum_sgin_day = that.data.userInfo.sum_sgin_day;
+ if (that.data.userInfo.is_day_sgin) return app.Tips({title:'您今日已签到!'});
+ setSignIntegral().then(res=>{
+ that.setData({
+ active: true,
+ integral: res.data.integral,
+ sign_index: (that.data.sign_index + 1) > that.data.signSystemList.length ? 1 : that.data.sign_index + 1,
+ signCount: that.PrefixInteger(sum_sgin_day + 1, 4),
+ 'userInfo.is_day_sgin': true,
+ 'userInfo.integral': util.$h.Add(that.data.userInfo.integral, res.data.integral)
+ });
+ that.getSignList();
+ }).catch(err=>{
+ return app.Tips({title:err})
+ });
+ },
+ /**
+ * 关闭签到提示
+ */
+ close:function(){
+ this.setData({active: false});
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ }
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_sgin/index.json b/template/xcx/pages/user_sgin/index.json
new file mode 100644
index 000000000..627347f3e
--- /dev/null
+++ b/template/xcx/pages/user_sgin/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_sgin/index.wxml b/template/xcx/pages/user_sgin/index.wxml
new file mode 100644
index 000000000..b49512c77
--- /dev/null
+++ b/template/xcx/pages/user_sgin/index.wxml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+ {{item.day}}
+
+ +{{item.sign_num}}
+
+
+ 已签到
+
+ 立即签到
+
+
+
+
+ 已累计签到
+
+ {{signCount[0] || 0}}
+ {{signCount[1] || 0}}
+ {{signCount[2] || 0}}
+ {{signCount[3] || 0}}
+ 天
+
+ 据说连续签到第{{day}}天可获得超额积分,一定要坚持签到哦~~~
+
+
+
+ {{item.title}}
+ {{item.add_time}}
+
+ +{{item.number}}
+
+ 点击加载更多
+
+
+
+
+
+ 签到成功
+ 获得{{integral}}积分
+ 好的
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/user_sgin/index.wxss b/template/xcx/pages/user_sgin/index.wxss
new file mode 100644
index 000000000..3a69dda5c
--- /dev/null
+++ b/template/xcx/pages/user_sgin/index.wxss
@@ -0,0 +1,42 @@
+@import '/css/guildford.wxss';
+.sign .header{width:100%;height:310rpx;}
+.sign .header .headerCon{padding:0 0 0 30rpx;height:234rpx;}
+.sign .header .headerCon .left{width:530rpx;font-size:32rpx;color:#fff;font-weight:bold;}
+.sign .header .headerCon .left .integral text{font-size:24rpx;margin-top:19rpx;background-color:#ff9000;text-align:center;border-radius:6rpx;font-weight:normal;padding:4rpx 15rpx;}
+.sign .header .headerCon .text{width:410rpx;}
+.sign .header .headerCon .left .pictrue{width:100rpx;height:100rpx;border-radius:50%;border:4rpx solid #ecddbc;}
+.sign .header .headerCon .left .pictrue image{width:100%;height:100%;border-radius:50%;}
+.sign .header .headerCon .right{width:142rpx;height:66rpx;background-color:#fff;border-radius:50rpx 0 0 50rpx;font-size:24rpx;color:#ff9000;}
+.sign .header .headerCon .right .iconfont{font-size:33rpx;padding:0 10rpx 0 30rpx;margin-top:5rpx;}
+.sign .wrapper{background-color:#fff;margin:-80rpx 20rpx 0 20rpx;border-radius:15rpx;padding-bottom:80rpx;position:relative;}
+.sign .wrapper .list{padding:0 30rpx;height:240rpx;}
+.sign .wrapper .list .item{font-size:22rpx;color:#8a8886;text-align:center;}
+.sign .wrapper .list .item .rewardTxt{width:74rpx;height:32rpx;background-color:#f4b409;border-radius:16rpx;font-size:20rpx;color:#a57d3f;line-height:32rpx;}
+.sign .wrapper .list .item .num{font-size:30rpx;color:#999;}
+.sign .wrapper .list .item .num.on{color:#ff9000;}
+.sign .wrapper .list .item .venus{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowYWFmYjU3Mi03MGJhLTRiNDctOTI2Yi0zOThlZDkzZDkxMDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDQ3N0E3RkJEMDFCMTFFODhGODVBOTc1NEM5Nzg2NzkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDQ3N0E3RkFEMDFCMTFFODhGODVBOTc1NEM5Nzg2NzkiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZmRjNTM0MmUtNmFkOC1iMDRhLThjZTEtMjk2YWYzM2FkMmUxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBhYWZiNTcyLTcwYmEtNGI0Ny05MjZiLTM5OGVkOTNkOTEwOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnZClGIAAAT7SURBVHja7JtLcxtFEMdnn1rJUhIrTiS7KLsK/EXwNck3gCMcuUFx4QvACW48buHGMZxJPkiowpjC2LElcKzXSqul/6OdoOB9zezsCCimqmvXtdqd+U33dPf0rq2Tn54zg81KjrGuB75x8FbuddsQWIvkS5IxySA5b5no2DUE94TkKPk7IHmf5JDkUQJdW7MNw623o+Ra698KmAdnDNLeIJwRSHvDcLVDVnYynU771fnLl9eFcLZts+VymQf5iJ6pzfFYJeKgT/IZyTskXdWOPM9jjYbPLMticRyz2Sxk8/lc9XFDksckH1IcDKtq8FOSD6rMIuCCoPHXrBIk/qYDC0MlyO1kTBOSj6uuwXerwPn+63DrrdFo8OsV2ns6nEy3Chwg8lpFyK4OwNrgNGpSvxfFoDzP5etJR8PzsiYETmk+X5BjmpkBrHPGU109TeKqv5X3rT3QQ3ObaPDGRjIZXWZpol+b/cebUUA4iuHw938UoNbk9+zsjP16eqoV4JfjH1uqgLjxe10DiaKIDYZDNqfU7OrqSifjkzxIuwDubV2juLi8ZK7j8oT74uJSJ+BRHqQtC6cS/7A9wtrDvb7v84A9Go2UMyQZSFsWrmz6td4GgyF38a7r8lgGefHiQjnjkYG064ZDmjWktecRnEOCDa9DpjqdTrnUDSk2vJXgsHGdTKa0t5vx/V0Yhvy4WMx5hdf3VqYJDQqTxW+QdmECPM8h8flvPPRFR/QXBEEuKEw9Yz/5AyoDtBkei5zriyw4pGVFmoOHPD7+mQ/ccR1mWzZpyuIacx2Hgzl0FJkIjjBTHBeLiO6LuDZH4zFbRkt63oLt7+8XAmJcIhFP0eTn2C9CgzBTrPjUp7XbW6VSJGjx5OSEBhsz2wGkxc0R967LuukuSWKaFEwMnXJQSL/fZ51Op/QSuL5OdVjY7beFBq2sAlHZ/A8aOTg4YKenv/EBr8Nl5ZUO6jPJRGCg0dJie/d3WbPZlMpPMwpZsN0Y2sOVb7PcOzou22CGe3u7fB3J3Cd+udvvScG9soT0Kt13tAZj4UVRwHmWtZClcj+azX6vxx0GN8ECUFyHjnsEp+KlM8b3TBTKBCDqkA/SIFV20jCbO3duk8OIcgHF7G9ttbinVYFLcTBgeAAP+vc4mAkJVywLibARpZvOjWWA36rApYSI1+DSMhltkJPpRGIyJrXAZeWiWiCnk9kNU4RGl8m5MN1VLFzwWKobLm83kQtZbnMb8lgYJ2aIYH//3g73lEHQ5ECAXYUSu7QWZeCKqmoCcqSyPkQgd8lHbne3uSMRbWenSwNtU476BxtT9oJQOZ3OKKloq6SmmXBlyoZKb3nG4wnXyt1ul9261UkN9ggjvd497mDOz885KGN3pfvKg1OuixY15JCHh2/ymFjUms2AMqD9BFB/qwUQg5ZtrVY9b7H/LxtmZSCbaCr9KgGmpEeG6qpzM2tQBHudb5eKNLfKiUMzgAIyL6uRreHklB9qX4MDlQfLpHUV4AY6AB+rzl4ZyIqa+0aHiX6UlDTwMcK2CqQoEGmEE5+RfFK4N636vWjKh0Cp5ceS38k8JXko8yHQ7W7PXKBPBvYwGegNF4/q12g05mV7HXClqgs1ffEr+/LmaTIx0nCb+uI3U5M64Tadi5aBrBXORLKdB1k7nKndhID8GqUaErze/coEXJ1OJm9CY2bw3wr+FGAAoa6PIUihovYAAAAASUVORK5CYII=');background-repeat:no-repeat;background-size:100% 100%;width:56rpx;height:56rpx;margin:10rpx 0;}
+.sign .wrapper .list .item .venus.venusSelect{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowYWFmYjU3Mi03MGJhLTRiNDctOTI2Yi0zOThlZDkzZDkxMDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzkwRkI4NEFEMDFCMTFFODhDNDdBMDVGOTBBN0U2NTQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzkwRkI4NDlEMDFCMTFFODhDNDdBMDVGOTBBN0U2NTQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZmRjNTM0MmUtNmFkOC1iMDRhLThjZTEtMjk2YWYzM2FkMmUxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBhYWZiNTcyLTcwYmEtNGI0Ny05MjZiLTM5OGVkOTNkOTEwOSIv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');}
+.sign .wrapper .list .item .venus.reward{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAA4CAYAAAC1+AWFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowYWFmYjU3Mi03MGJhLTRiNDctOTI2Yi0zOThlZDkzZDkxMDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUEyNzZEMjZEMDFCMTFFOEIzQzhEMjMxNjI1NENDQjciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUEyNzZEMjVEMDFCMTFFOEIzQzhEMjMxNjI1NENDQjciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZmRjNTM0MmUtNmFkOC1iMDRhLThjZTEtMjk2YWYzM2FkMmUxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBhYWZiNTcyLTcwYmEtNGI0Ny05MjZiLTM5OGVkOTNkOTEwOSIv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');width:75rpx;height:56rpx;}
+.sign .wrapper .but{width:400rpx;height:76rpx;font-size:30rpx;line-height:76rpx;color:#fff;border-radius:50rpx;text-align:center;margin:0 auto;}
+.sign .wrapper .but.on{background-color: #999 !important;}
+.sign .wrapper .lock{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAi4AAABECAYAAACmur7KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowYWFmYjU3Mi03MGJhLTRiNDctOTI2Yi0zOThlZDkzZDkxMDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkY0OEQxQjdEMDFDMTFFODgwMTlGMzZDRjQ3RTkwMTgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkY0OEQxQjZEMDFDMTFFODgwMTlGMzZDRjQ3RTkwMTgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZmRjNTM0MmUtNmFkOC1iMDRhLThjZTEtMjk2YWYzM2FkMmUxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBhYWZiNTcyLTcwYmEtNGI0Ny05MjZiLTM5OGVkOTNkOTEwOSIv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');background-repeat:no-repeat;background-size:100% 100%;width:558rpx;height:68rpx;position:absolute;left:50%;transform: translateX(-50%);bottom:-42rpx;z-index:9;}
+.sign .wrapper2{margin-top:15rpx;padding:73rpx 0 0 0;}
+.sign .wrapper2 .tip{font-size:30rpx;color:#666;text-align:center;}
+.sign .wrapper2 .list2{margin:45rpx 0 49rpx 0;}
+.sign .wrapper2 .list2 .item{width:80rpx;height:116rpx;background-repeat:no-repeat;background-size:100% 100%;color:#fff;font-size:72rpx;text-align:center;line-height:116rpx;margin-right:19rpx;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAB0CAYAAAASLLWNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1YTNlMmVkYy05YmJjLTI3NDYtYThjOS1jM2ZmNzY5ZmJjMjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MThCMUUxN0YzRTI5MTFFOUEwQ0ZCQzExRjI0NkNGM0UiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MThCMUUxN0UzRTI5MTFFOUEwQ0ZCQzExRjI0NkNGM0UiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGExMjQxMTgtOWFlZC02NTRkLTgzNjgtOWQ4MmQzNTgxNmYyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjVhM2UyZWRjLTliYmMtMjc0Ni1hOGM5LWMzZmY3NjlmYmMyMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pn8ds/sAAAHJSURBVHja7Na9alNhHMfxvJnegm3cooNzdOhdNJB6FXaog6U3IGgHHfQqSt/uoyK4OJixUjK3S4+U+n/kCRyTQD0nU8nnCz8Ih2f6cJI8zcmg31hQN7aVtxnbyM9WqevYRexb7CR2FitmDzUXAA5jH2JPGyo3ju3FjssPW6XP7dj7fADefMnkKBu1pw87pQPvYm853dvUaK/8Bo7gVUYcTQHTn8NHJpX7lOwS4HbsCY/K9WKvWvmqonptJcCXHGr3IgE+5lC79QS4xqF23RaD5QIIECBAgAIIECBAAQQIEKAAAgQIUAABAgQogAABAhRAgAABCiBAgAAFECBAgAIIECBAAQQI8KHXaT57TsEbCBDgyv4G3v38QcEbCBAgQAEECBCgAAIECFAAAQIEKIAAAQIUQIAAAQogQIAABRAgQIACCBAgQAEECBAgQAQAAQIEqGUArzDUrkiAlxxqd5kAv3Oo3XkCPOVQu9MEeBi7YFG5X8kuARaxNzwqtxu7mV5j0lt4wOS/O8hm/9wD92Of2dzbl2w1d5G+je3ERrExp7mSyXbsdbb6W3My6C863M2Hh7FBrBd7tGJgv/MfxdfYSf7KFrOH/ggwAIarNp6h8hqzAAAAAElFTkSuQmCC');}
+.sign .wrapper2 .list2 .data{font-size:30rpx;color:#232323;}
+.sign .wrapper2 .tip2{font-size:30rpx;color:#999999;padding:0 55rpx;text-align:center;line-height:1.5;}
+.sign .list3{margin:45rpx 37rpx 0 37rpx;border-top:1px dashed #eee;}
+.sign .list3 .item{align-items:center;justify-content:space-between;border-bottom:1px solid #eee;height:130rpx;}
+.sign .list3 .item .name{color:#232323;font-size:30rpx;width:400rpx;}
+.sign .list3 .item .data{font-size:24rpx;color:#bbbbbb;margin-top:9rpx;}
+.sign .list3 .item .num{font-size:36rpx;font-family: 'Guildford Pro';}
+.sign .list3 .loading{font-size:26rpx;color:#282828;height:97rpx;line-height:97rpx;text-align:center;}
+.sign .list3 .loading .iconfont{font-size:25rpx;color:#212121;vertical-align:2rpx;margin-left:10rpx;}
+.sign .signTip{width:644rpx;height:645rpx;position:fixed;top:50%;left:50%;margin-left:-322rpx;margin-top:-322.5rpx;z-index:99;text-align:center;transition:all 0.3s ease-in-out 0s;opacity:0;transform: scale(0);}
+.sign .signTip .signTipLight{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoQAAAKFCAMAAABiNQjYAAAAjVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8DizOFAAAAL3RSTlMABAsHDxMdGRYnKyEvQiQ+OUYzSjZOYFtkUmhteVhVdHCCfoaLkJWZnaGmrLG4xJtLVuIAALjgSURBVHja7NzdkuogEATgNO37P/OZYiFggKO1Q1yw+iMhP7d2DUGJh4iIiIiI/Abqrbklcj8MbyiQ8imo2oGmnRRDuQtyf83gJZGKoNwG46YUSo8yKN8HgHWIWx6VAZz5PG8qhnIXVNqLozpRBOUueJNSKHeBQiguUAjlCyiE4imCUCUUH3/6YJtCKH8H1qDhWP4ArP1swKyJCT8WQq3G+Q7VwoIpQQQBGhCGjF085ktDFUJJ2csNqZ9RVsA3gYcftDZxZ0i7dSWFh21efNvhBq1K3BVSBEurbRRCnPMpqBxupHxgqezBjs92DKGsDtcLlLVWdsCuIQSqYq6xeQN4eo7HmcO9Q5gn9NACxeXl8KXzsqBvfgjx0RDmHJ5NT4dLO+cgeTjuIf2VMASawFfgzmASQ6h3BjZQ1QgMMHXeEEa0ZpthiiVDvHFeTQzh9d1S/ZSyIOQeODBEMnaHS06aYdkj1ge6Sy6yEkS9RbUslCJo3bAGGvjHyafEVdUvd8xlEvMKIfqPh5otLwWpxxXzYdrDWo7dS/cs19EEZWGjmcjPTtYxdFbCglUtbIblyRlsnw/1tzerQR9TDiuBvkr4AudUQhAchDAGUQPygtDDjjAnhHcPxyRAYkhfYi+oXwT7McQWIYwwpr95WA4abCMYUinEB0LIST/MYOiAVjispflCpieE2AW4JyaPENLxcUsIWQGIIU1LllLlD2BfCiF9IXx0Wn1qF3NCWIwzqNcIVtIUwXYgjmaHsLQYvhRJXwgReAWiT8PxOgAOWTRSBukP4cMEEw+2W9cpiwHz14uBerV0cYMSmFJoewXOELbC9dQ7BWeHQrg4HOBIroDlZHYIW4cDYghHMaQyuK5h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');background-repeat:no-repeat;background-size:100% 100%;width:100%;height:100%;}
+.sign .signTip.on{opacity:1;transform: scale(1);}
+.sign .signTip .signTipCon{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAMAAABJkqEHAAAC8VBMVEUAAAD1zGTtuVf////tuVf////////3zWX////40Gf40GfxwV33zWXrQC7qtFP0yGHzxWDrQC3rQjDwwFzrOCXsSDb54rLqNyT////sTj3rQjD////3z2frtlXrQzH40WjpslL////1zGTqtFT40WjrQzH99+j76Lr66b7////1znT1zGT1y2TrQzHsTj3qNyTblz30yWL87dL1y2T87M/dl0DdmEHclj7768v66snqyG/////3zWXrQC756MLqx2zdmUH45Lrpxmnzx2HqOCX3zmbblD7qOifrynPemkL45bz979fv04z45r7y2Zvst1balj3pxmj347fhoEbuz4LrRTP66cbfnEP347Xxwl31ymP0ymP24K3x2Jjbkz3akjzrPCn97tT66MTx15brPiz55r/w1ZL24rTqyXHmqk3uvFnzxmDsSjnrtVXqs1Por1DnrU/mrE7jpUnio0jlqEvry3XqtVTpslLosFHtuVfkpkv24bLwwFzvvlvgnkTsTTzz26Hy2p3YlTztu1j03aXz2p/40WjksVbsRzbu0ITszXz98Nny1pTw1ZDu0Ybsy3f03KP03aftzn/szHnoxGP13qjw1I/v0on136r20YDtzn3szHr+8dvoxWXrPSvyxF724LDlZDfsSDfv0YjlqUz40Gfw1pXnrlDXlDzQkDrTkTvsTDv+8t/77MzNjTnnYzf/8+Hnw2DnbD7Vkjvx2Zriokfv1I7vv1zmtlz+8d3636b0pFjocUHtVT/nWjTbjzzqXzn42pjy0IrsxHXqu2bqaEH//fnwekvGiDfjrFLvckPnWDTsSTPUo17bqFvJizjoy5jmvIDftnLQmUzox4TswG71y2nv1ZDu0oj0zXz3xmTXnUzt06Ly2Z3005Dsy4zxzITyyXjju3TYmEPx263kwo3Zrm7frWLcoU/Lk0f9+fL74arkaDfrTTT414j03cD037Xv1qfGjD/76sj20XLopU3pm0vbijrdgTn03sHt0ZrWmiJXAAAALXRSTlMAZkkK+fVV9qr4SGlIBfVpWqqMWllUEOHq4NpTfnvzzMx4dUI948mZkXxhLSxQhf6cAAASvUlEQVR42uzav0orQRTH8Qlh/yQK98KFICQgitx/2uimEI6dWPkEamXt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');background-repeat:no-repeat;background-size:100% 100%;width:420rpx;height:420rpx;margin-top:-700rpx;position:relative;}
+.sign .signTip .signTipCon .state{font-size:34rpx;color:#fff;margin-top:150rpx;}
+.sign .signTip .signTipCon .integral{font-size:30rpx;color:rgba(255,255,255,0.6);margin-top:9rpx;}
+.sign .signTip .signTipCon .signTipBnt{font-size:30rpx;color:#eb4331;width:260rpx;height:76rpx;background-color:#f8d168;border-radius:38rpx;line-height:76rpx;margin:48rpx auto 0 auto;}
diff --git a/template/xcx/pages/user_sgin_list/index.js b/template/xcx/pages/user_sgin_list/index.js
new file mode 100644
index 000000000..2e301d46e
--- /dev/null
+++ b/template/xcx/pages/user_sgin_list/index.js
@@ -0,0 +1,67 @@
+import { getSignMonthList } from '../../api/user.js';
+
+const app=getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '签到记录',
+ 'color': false
+ },
+ loading:false,
+ loadend:false,
+ loadtitle:'加载更多',
+ page:1,
+ limit:8,
+ signList:[],
+ },
+
+ /**
+ *
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.getSignMoneList();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 获取签到记录列表
+ */
+ getSignMoneList:function(){
+ var that=this;
+ if(that.data.loading) return;
+ if(that.data.loadend) return;
+ that.setData({loading:true,loadtitle:""});
+ getSignMonthList({ page: that.data.page, limit: that.data.limit }).then(res=>{
+ var list = res.data;
+ var loadend = list.length < that.data.limit;
+ that.data.signList = app.SplitArray(list, that.data.signList);
+ that.setData({
+ signList: that.data.signList,
+ loadend: loadend,
+ loading: false,
+ loadtitle: loadend ? "哼😕~我也是底线的~" : "加载更多"
+ });
+ }).catch(err=>{
+ that.setData({ loading: false, loadtitle: '加载更多' });
+ });
+ },
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getSignMoneList();
+ },
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_sgin_list/index.json b/template/xcx/pages/user_sgin_list/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/user_sgin_list/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_sgin_list/index.wxml b/template/xcx/pages/user_sgin_list/index.wxml
new file mode 100644
index 000000000..13f0f1adb
--- /dev/null
+++ b/template/xcx/pages/user_sgin_list/index.wxml
@@ -0,0 +1,21 @@
+
+
+
+
+ {{item.month}}
+
+
+
+ {{item.title}}
+ {{item.add_time}}
+
+ +{{item.number}}
+
+
+
+
+
+ {{loadtitle}}
+
+
+
diff --git a/template/xcx/pages/user_sgin_list/index.wxss b/template/xcx/pages/user_sgin_list/index.wxss
new file mode 100644
index 000000000..e69de29bb
diff --git a/template/xcx/pages/user_spread_code/index.js b/template/xcx/pages/user_spread_code/index.js
new file mode 100644
index 000000000..3f098abb4
--- /dev/null
+++ b/template/xcx/pages/user_spread_code/index.js
@@ -0,0 +1,176 @@
+// pages/distribution-posters/index.js
+
+import { spreadBanner, userShare } from '../../api/user.js';
+
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '分销海报'
+ },
+ imgUrls: [],
+ indicatorDots: false,
+ circular: false,
+ autoplay: false,
+ interval: 3000,
+ duration: 500,
+ swiperIndex: 0,
+ spreadList:[],
+ userInfo:{},
+ poster:'',
+ },
+ onLoadFun:function(e){
+ this.setData({ userInfo: e.detail});
+ this.userSpreadBannerList();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ bindchange(e) {
+ var spreadList = this.data.spreadList;
+ this.setData({
+ swiperIndex: e.detail.current,
+ poster: spreadList[e.detail.current].poster,
+ })
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ this.data.isClone && this.userSpreadBannerList();
+ },
+ savePosterPath: function () {
+ var that = this;
+ wx.downloadFile({
+ url: that.data.poster,
+ success(resFile) {
+ if (resFile.statusCode === 200) {
+ wx.getSetting({
+ success(res) {
+ if (!res.authSetting['scope.writePhotosAlbum']) {
+ wx.authorize({
+ scope: 'scope.writePhotosAlbum',
+ success() {
+ wx.saveImageToPhotosAlbum({
+ filePath: resFile.tempFilePath,
+ success: function (res) {
+ return app.Tips({ title: '保存成功' });
+ },
+ fail: function (res) {
+ return app.Tips({ title: res.errMsg });
+ },
+ complete: function (res) { },
+ })
+ },
+ fail(){
+ wx.showModal({
+ title: '您已拒绝获取相册权限',
+ content: '是否进入权限管理,调整授权?',
+ success(res) {
+ if (res.confirm) {
+ wx.openSetting({
+ success: function (res) {
+ console.log(res.authSetting)
+ }
+ });
+ } else if (res.cancel) {
+ return app.Tips({ title: '已取消!' });
+ }
+ }
+ })
+ }
+ })
+ } else {
+ wx.saveImageToPhotosAlbum({
+ filePath: resFile.tempFilePath,
+ success: function (res) {
+ return app.Tips({ title: '保存成功' });
+ },
+ fail: function (res) {
+ return app.Tips({ title: res.errMsg });
+ },
+ complete: function (res) { },
+ })
+ }
+ },
+ fail(res){
+
+ }
+ })
+ }else{
+ return app.Tips({ title: resFile.errMsg});
+ }
+ },
+ fail(res) {
+ return app.Tips({ title: res.errMsg});
+ }
+ })
+ },
+ userSpreadBannerList: function () {
+ var that = this;
+ wx.showLoading({
+ title: '获取中',
+ mask: true,
+ })
+ spreadBanner().then(res=>{
+ wx.hideLoading();
+ that.setData({ spreadList: res.data, poster: res.data[0].poster });
+ }).catch(err=>{
+ wx.hideLoading();
+ });
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({isClone:true});
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+ userShare();
+ return {
+ title: this.data.userInfo.nickname+'-分销海报',
+ imageUrl: this.data.spreadList[0],
+ path: '/pages/index/index?spid=' + this.data.userInfo.uid,
+ };
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_spread_code/index.json b/template/xcx/pages/user_spread_code/index.json
new file mode 100644
index 000000000..e247f0852
--- /dev/null
+++ b/template/xcx/pages/user_spread_code/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_spread_code/index.wxml b/template/xcx/pages/user_spread_code/index.wxml
new file mode 100644
index 000000000..598a66ae5
--- /dev/null
+++ b/template/xcx/pages/user_spread_code/index.wxml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+ 保存海报
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user_spread_code/index.wxss b/template/xcx/pages/user_spread_code/index.wxss
new file mode 100644
index 000000000..9879fbb18
--- /dev/null
+++ b/template/xcx/pages/user_spread_code/index.wxss
@@ -0,0 +1,6 @@
+page{background-color:#a3a3a3!important;}
+.distribution-posters swiper{width:100%;height:1000rpx;position:relative;margin-top:40rpx;}
+.distribution-posters .slide-image{width:100%;height:100%;margin:0 auto;border-radius:15rpx;}
+.distribution-posters .slide-image.active{transform: none;transition: all 0.2s ease-in 0s;}
+.distribution-posters .slide-image.quiet{ transform: scale(0.8333333);transition: all 0.2s ease-in 0s;}
+.distribution-posters .keep{font-size:30rpx;color:#fff;width:600rpx;height:80rpx;border-radius:50rpx;text-align:center;line-height:80rpx;margin:38rpx auto;}
\ No newline at end of file
diff --git a/template/xcx/pages/user_spread_money/index.js b/template/xcx/pages/user_spread_money/index.js
new file mode 100644
index 000000000..a5fbd9933
--- /dev/null
+++ b/template/xcx/pages/user_spread_money/index.js
@@ -0,0 +1,122 @@
+// pages/commission-details/index.js
+
+import { spreadCommission, spreadCount} from '../../api/user.js';
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '佣金记录',
+ 'color': true,
+ 'class': '0'
+ },
+ name:'',
+ type:0,
+ page:0,
+ limit:8,
+ recordList:[],
+ recordType:0,
+ recordCount:0,
+ status:false,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.setData({ type: options.type });
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ var type = this.data.type;
+ if (type == 1) {
+ this.setData({ 'parameter.title': '提现记录', name: '提现总额', recordType: 4 });
+ } else if (type == 2) {
+ this.setData({ 'parameter.title': '佣金记录', name: '佣金记录', recordType: 3 });
+ } else {
+ wx.showToast({
+ title: '参数错误',
+ icon: 'none',
+ duration: 1000,
+ mask: true,
+ success: function (res) { setTimeout(function () { wx.navigateBack({ delta: 1, }) }, 1200) },
+ });
+ }
+ this.getRecordList();
+ this.getRecordListCount();
+ },
+ /**
+ * 获取余额使用记录
+ */
+ getRecordList: function () {
+ var that = this;
+ var page = that.data.page;
+ var limit = that.data.limit;
+ var status = that.data.status;
+ var recordType = that.data.recordType;
+ var recordList = that.data.recordList;
+ var recordListNew = [];
+ if (status == true) return ;
+ spreadCommission(recordType,{page:page,limit:limit}).then(res=>{
+ var len = res.data.length;
+ var recordListData = res.data;
+ recordListNew = recordList.concat(recordListData);
+ that.setData({ status: limit > len, page: limit + page, recordList: recordListNew });
+ });
+ },
+ getRecordListCount:function(){
+ var that = this;
+ spreadCount(that.data.recordType).then(res=>{
+ that.setData({ recordCount: res.data.count });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ this.getRecordList();
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_spread_money/index.json b/template/xcx/pages/user_spread_money/index.json
new file mode 100644
index 000000000..ed5513eb0
--- /dev/null
+++ b/template/xcx/pages/user_spread_money/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_spread_money/index.wxml b/template/xcx/pages/user_spread_money/index.wxml
new file mode 100644
index 000000000..b26a06810
--- /dev/null
+++ b/template/xcx/pages/user_spread_money/index.wxml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+ {{item.time}}
+
+
+
+
+ {{child.title}}
+ {{child.add_time}}
+
+ +{{child.number}}
+ -{{child.number}}
+
+
+
+
+
+
+
+
diff --git a/template/xcx/pages/user_spread_money/index.wxss b/template/xcx/pages/user_spread_money/index.wxss
new file mode 100644
index 000000000..9613b0148
--- /dev/null
+++ b/template/xcx/pages/user_spread_money/index.wxss
@@ -0,0 +1,2 @@
+.commission-details .promoterHeader .headerCon .money{font-size:36rpx;}
+.commission-details .promoterHeader .headerCon .money .num{font-family: 'Guildford Pro';}
\ No newline at end of file
diff --git a/template/xcx/pages/user_spread_user/index.js b/template/xcx/pages/user_spread_user/index.js
new file mode 100644
index 000000000..88ce001a6
--- /dev/null
+++ b/template/xcx/pages/user_spread_user/index.js
@@ -0,0 +1,106 @@
+// pages/my-promotion/index.js
+
+import { getUserInfo } from '../../api/user.js';
+import { openExtrctSubscribe } from '../../utils/SubscribeMessage.js';
+
+
+const app = getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '我的推广',
+ 'color': true,
+ 'class': '0'
+ },
+ userInfo:[],
+ yesterdayPrice:0.00,
+ isClone:false
+ },
+ onLoadFun:function(){
+ this.getUserInfo();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+ openSubscribe: function (e) {
+ let page = e.currentTarget.dataset.url;
+ wx.showLoading({
+ title: '正在加载',
+ })
+ openExtrctSubscribe().then(res => {
+ wx.hideLoading();
+ wx.navigateTo({
+ url: page,
+ });
+ }).catch(() => {
+ wx.hideLoading();
+ });
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if (app.globalData.isLog && this.data.isClone){
+ this.getUserInfo();
+ }
+ },
+ /**
+ * 获取个人用户信息
+ */
+ getUserInfo: function () {
+ var that = this;
+ getUserInfo().then(res=>{
+ that.setData({ userInfo: res.data });
+ });
+ },
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+ this.setData({isClone:true});
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_spread_user/index.json b/template/xcx/pages/user_spread_user/index.json
new file mode 100644
index 000000000..a329c3593
--- /dev/null
+++ b/template/xcx/pages/user_spread_user/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
diff --git a/template/xcx/pages/user_spread_user/index.wxml b/template/xcx/pages/user_spread_user/index.wxml
new file mode 100644
index 000000000..9f74d2b57
--- /dev/null
+++ b/template/xcx/pages/user_spread_user/index.wxml
@@ -0,0 +1,50 @@
+
+
+
+ 立即提现
+
+
+
+ 推广名片
+
+
+
+ 推广人统计
+
+
+
+ 佣金记录
+
+
+
+ 推广人订单
+
+
+
+ 推广人排行
+
+
+
+ 佣金排行
+
+
+
+
+
+
diff --git a/template/xcx/pages/user_spread_user/index.wxss b/template/xcx/pages/user_spread_user/index.wxss
new file mode 100644
index 000000000..89f4cdfee
--- /dev/null
+++ b/template/xcx/pages/user_spread_user/index.wxss
@@ -0,0 +1,17 @@
+@import '/css/guildford.wxss';
+.my-promotion .header{background-image:url("data:image/png;base64,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");background-repeat:no-repeat;background-size:100% 100%;width:100%;height:375rpx;}
+.my-promotion .header .name{font-size:30rpx;color:#fff;padding-top:57rpx;position:relative;}
+.my-promotion .header .name .record{font-size:26rpx;color:rgba(255, 255, 255, 0.8);position:absolute;right:20rpx;}
+.my-promotion .header .name .record .iconfont{font-size:25rpx;margin-left:10rpx;vertical-align:2rpx;}
+.my-promotion .header .num{text-align:center;color:#fff;margin-top:28rpx;font-size:90rpx;font-family: 'Guildford Pro';}
+.my-promotion .header .profit{padding:0 20rpx;margin-top:35rpx;font-size:24rpx;color:rgba(255, 255, 255, 0.8);}
+.my-promotion .header .profit .item{min-width:200rpx;text-align:center;}
+.my-promotion .header .profit .item .money{font-size:34rpx;color:#fff;margin-top:5rpx;}
+.my-promotion .bnt{font-size:28rpx;color:#fff;width:258rpx;height:68rpx;border-radius:50rpx;text-align:center;line-height:68rpx;margin:-32rpx auto 0 auto;}
+.my-promotion .list{padding: 0 20rpx 50rpx 20rpx;margin-top:10rpx;}
+.my-promotion .list .item{width:345rpx;height:240rpx;border-radius:20rpx;background-color:#fff;margin-top:20rpx;font-size:30rpx;color:#666;}
+.my-promotion .list .item .iconfont{font-size:70rpx;
+ background-image:linear-gradient(to right,#fc4d3d 0%,#e93323 100%);
+-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:20rpx;}
+
+
diff --git a/template/xcx/pages/user_vip/index.js b/template/xcx/pages/user_vip/index.js
new file mode 100644
index 000000000..73b2fdd24
--- /dev/null
+++ b/template/xcx/pages/user_vip/index.js
@@ -0,0 +1,131 @@
+// pages/member-center/index.js
+import { userLevelGrade, userLevelTask, userLevelDetection } from '../../api/user.js';
+import { getProductHot } from '../../api/store.js';
+
+const app=getApp();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ parameter: {
+ 'navbar': '1',
+ 'return': '1',
+ 'title': '会员中心',
+ 'class':'1',
+ 'color':true
+ },
+ VipList: [],
+ indicatorDots: false,
+ circular: true,
+ autoplay: false,
+ interval: 3000,
+ duration: 500,
+ swiperIndex: 0,
+ growthValue: true,
+ task:[],//任务列表
+ illustrate:'',//任务说明
+ level_id:0,//任务id,
+ host_product:[],
+ grade: 0,
+ },
+ /**
+ * 授权回调
+ */
+ onLoadFun:function(){
+ this.setLeveLComplete();
+ this.get_host_product();
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ var that = this;
+ setTimeout(function () {
+ that.setData({
+ loading: true
+ })
+ }, 500)
+ },
+ /**
+ * 获取我的推荐
+ */
+ get_host_product: function () {
+ var that = this;
+ getProductHot().then(res=>{
+ that.setData({ host_product: res.data });
+ });
+ },
+ /**
+ * 会员切换
+ *
+ */
+ bindchange(e) {
+ var index = e.detail.current
+ this.setData({swiperIndex: index,level_id: this.data.VipList[index].id || 0});
+ this.getTask();
+ },
+ /**
+ * 关闭说明
+ */
+ growthValue:function(){
+ this.setData({growthValue: true})
+ },
+ /**
+ * 打开说明
+ */
+ opHelp:function(e){
+ var index = e.currentTarget.dataset.index;
+ this.setData({ growthValue: false, illustrate: this.data.task[index].illustrate});
+ },
+ /**
+ * 设置会员
+ */
+ setLeveLComplete:function(){
+ let that = this;
+ userLevelDetection().then(res=>{
+ that.getVipList();
+ });
+ },
+ /**
+ * 获取会员等级
+ *
+ */
+ getVipList:function(){
+ let that=this;
+ userLevelGrade().then(res=>{
+ that.setData({
+ VipList: res.data.list,
+ task: res.data.task.task,
+ reach_count: res.data.task.reach_count,
+ level_id: res.data.list[0] ? res.data.list[0].id : 0
+ });
+ let arr = [];
+ res.data.list.forEach(function (item, index) {
+ if (item.is_clear == true) {
+ arr.push(item.grade);
+ }
+ });
+ that.setData({
+ grade: arr[0]
+ });
+ });
+ },
+ /**
+ * 获取任务要求
+ */
+ getTask:function(){
+ var that=this;
+ userLevelTask(that.data.level_id).then(res=>{
+ that.setData({ task: res.data.task, reach_count: res.data.reach_count });
+ });
+ },
+
+
+
+
+
+
+
+})
\ No newline at end of file
diff --git a/template/xcx/pages/user_vip/index.json b/template/xcx/pages/user_vip/index.json
new file mode 100644
index 000000000..ab8c498a8
--- /dev/null
+++ b/template/xcx/pages/user_vip/index.json
@@ -0,0 +1,8 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "recommend": "/components/recommend/index",
+ "authorize": "/components/authorize/authorize"
+ },
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/template/xcx/pages/user_vip/index.wxml b/template/xcx/pages/user_vip/index.wxml
new file mode 100644
index 000000000..dc596af83
--- /dev/null
+++ b/template/xcx/pages/user_vip/index.wxml
@@ -0,0 +1,53 @@
+
+
+
+
+
+ 会员升级要求
+ {{reach_count || 0}} /{{task.length || 0}}
+
+
+
+
+ {{item.name}}
+ 已满足条件
+ 未满足条件
+
+
+
+
+
+ {{item.task_type_title}}
+ {{item.new_number || 0}} /{{item.number || 0}}
+
+
+
+
+
+
+
+ {{illustrate}}
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/pages/user_vip/index.wxss b/template/xcx/pages/user_vip/index.wxss
new file mode 100644
index 000000000..d73388c79
--- /dev/null
+++ b/template/xcx/pages/user_vip/index.wxss
@@ -0,0 +1,40 @@
+.member-center .header{background-color:#232323;width:100%;padding:50rpx 0;}
+.member-center .header swiper{width:100%;height:328rpx;position:relative;}
+.member-center .header swiper-item .memberBg.active{transform: none;transition: all 0.2s ease-in 0s;}
+.member-center .header swiper-item .memberBg.quiet{ transform: scale(0.9);transition: all 0.2s ease-in 0s;}
+.member-center .header swiper-item .memberBg{width:100%;height:328rpx;border-radius:16rpx;color:#fff;position:relative;background-size: 100% 100%}
+/*
+.member-center .header swiper-item .memberBg.gold{background-image: linear-gradient(to right,#e3c072 0%,#cf9e51 100%);}
+.member-center .header swiper-item .memberBg.silver{background-image: linear-gradient(to right,#bebebe 0%,#929292 100%);}
+.member-center .header swiper-item .memberBg.brass{background-image: linear-gradient(to right,#e8cba7 0%,#caaf8f 100%);}
+.member-center .header swiper-item .memberBg.bronze{background-image: linear-gradient(to right,#9ab1c2 0%,#6a8493 100%);}
+.member-center .header swiper-item .memberBg.ordinary{background-image: linear-gradient(to right,#7aa7ed 0%,#6292de 100%);} */
+.member-center .header swiper-item .memberBg image{width:89rpx;height:108rpx;display:block;position:absolute;right:60rpx;}
+.member-center .header swiper-item .memberBg .name{font-size:46rpx;font-weight:bold;padding:40rpx 0 0 35rpx;}
+.member-center .header swiper-item .memberBg .discount{font-size:28rpx;font-weight:bold;margin:15rpx 0 0 35rpx;}
+.member-center .header swiper-item .memberBg .discount .iconfont{margin-left:10rpx;font-size:30rpx;}
+.member-center .header swiper-item .memberBg .nav{margin-top:55rpx;}
+.member-center .header swiper-item .memberBg .nav .item{flex:1;text-align:center;color:rgba(255, 255, 255, 0.6);position:relative;}
+.member-center .header swiper-item .memberBg .nav .item .num{font-size:40rpx;color:#fff;font-family: 'Guildford Pro';}
+.member-center .header swiper-item .memberBg .nav .item~.item::before{position:absolute;width:2rpx;height:32rpx;background-color:rgba(255, 255, 255, 0.6);content:'';left:0;top:50%;transform:translateY(-50%);}
+.member-center .header swiper-item .memberBg .lock{font-size:26rpx;margin:73rpx 0 0 35rpx;}
+.member-center .header swiper-item .memberBg .lock .iconfont{font-size:37rpx;margin-right:15rpx;vertical-align:-4rpx;}
+.member-center .wrapper{background-color:#fff;padding-bottom:16rpx;margin-bottom:20rpx;}
+.member-center .wrapper .title{height:98rpx;padding:0 30rpx;font-size:30rpx;font-weight:bold;color:#282828;}
+.member-center .wrapper .title .iconfont{color:#ffae06;font-weight:normal;font-size:40rpx;margin-right:12rpx;vertical-align:-2rpx;}
+.member-center .wrapper .title .num{font-size:28rpx;color:#999;}
+.member-center .wrapper .title .num .current{color:#ffae06;}
+.member-center .wrapper .list .item{width:690rpx;height:184rpx;background-color:#f9f9f9;margin:0 auto 20rpx auto;padding:27rpx 0 22rpx 0;border-radius:12rpx;box-sizing:border-box;}
+.member-center .wrapper .list .item .top{padding-right:27rpx;font-size:26rpx;color:#999;}
+.member-center .wrapper .list .item .top .name{border-left:6rpx solid #ffae06;padding-left:20rpx;font-size:28rpx;color:#282828;font-weight:bold;}
+.member-center .wrapper .list .item .top .name .iconfont{color:#999;font-size:30rpx;vertical-align:-2rpx;margin-left:10rpx;}
+.member-center .wrapper .list .item .cu-progress {overflow: hidden;height:12rpx;background-color: #eee;width:636rpx;border-radius:20rpx;margin:35rpx auto 0 auto;}
+.member-center .wrapper .list .item .cu-progress .bg-red{width: 0;height: 100%;transition: width 0.6s ease;background-color: #ffaa29;border-radius:20rpx;}
+.member-center .wrapper .list .item .experience{margin-top:17rpx;padding:0 27rpx;font-size:24rpx;color:#999;}
+.member-center .wrapper .list .item .experience .num{color:#ffad07;}
+.member-center .growthValue{background-color:#fff;border-radius:16rpx;position:fixed;top:266rpx;left:50%;width:560rpx;height:740rpx;margin-left:-280rpx;z-index:99;transform:translate3d(0,-200%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);}
+.member-center .growthValue.on{transform:translate3d(0,0,0);}
+.member-center .growthValue .pictrue{width:100%;height:257rpx;position:relative;}
+.member-center .growthValue .pictrue image{width:100%;height:100%;border-radius:16rpx 16rpx 0 0;}
+.member-center .growthValue .conter{padding:0 35rpx;font-size:30rpx;color:#333;margin-top:58rpx;line-height:1.5;height:350rpx;overflow:auto;}
+.member-center .growthValue .pictrue .iconfont{position:absolute;font-size:65rpx;color:#fff;top:775rpx;left:50%;transform:translateX(-50%);}
diff --git a/template/xcx/project.config.json b/template/xcx/project.config.json
new file mode 100644
index 000000000..7ed11c242
--- /dev/null
+++ b/template/xcx/project.config.json
@@ -0,0 +1,120 @@
+{
+ "description": "项目配置文件",
+ "packOptions": {
+ "ignore": []
+ },
+ "setting": {
+ "urlCheck": false,
+ "es6": true,
+ "enhance": true,
+ "postcss": true,
+ "minified": true,
+ "newFeature": true,
+ "coverView": true,
+ "nodeModules": false,
+ "autoAudits": false,
+ "showShadowRootInWxmlPanel": true,
+ "scopeDataCheck": false,
+ "uglifyFileName": true,
+ "checkInvalidKey": true,
+ "checkSiteMap": false,
+ "uploadWithSourceMap": true,
+ "babelSetting": {
+ "ignore": [],
+ "disablePlugins": [],
+ "outputPath": ""
+ }
+ },
+ "compileType": "miniprogram",
+ "libVersion": "2.10.2",
+ "appid": "wx6ca9ac1a01f617a1",
+ "projectname": "3.2",
+ "debugOptions": {
+ "hidedInDevtools": []
+ },
+ "isGameTourist": false,
+ "simulatorType": "wechat",
+ "simulatorPluginLibVersion": {},
+ "condition": {
+ "search": {
+ "current": -1,
+ "list": []
+ },
+ "conversation": {
+ "current": -1,
+ "list": []
+ },
+ "plugin": {
+ "current": -1,
+ "list": []
+ },
+ "game": {
+ "currentL": -1,
+ "list": []
+ },
+ "gamePlugin": {
+ "current": -1,
+ "list": []
+ },
+ "miniprogram": {
+ "current": 0,
+ "list": [
+ {
+ "id": 0,
+ "name": "order_list",
+ "pathName": "pages/admin/order_list/index",
+ "query": "status=0"
+ },
+ {
+ "id": -1,
+ "name": "pages/user_payment/index",
+ "pathName": "pages/user_payment/index",
+ "query": "status=0",
+ "scene": null
+ },
+ {
+ "id": 2,
+ "name": "pages/goods_details/index",
+ "pathName": "pages/goods_details/index",
+ "query": "id=10",
+ "scene": null
+ },
+ {
+ "id": -1,
+ "name": "pages/goods_details_store/index",
+ "pathName": "pages/goods_details_store/index",
+ "query": "id=10",
+ "scene": null
+ },
+ {
+ "id": -1,
+ "name": "pages/admin/order_statistics/index",
+ "pathName": "pages/admin/order_statistics/index",
+ "query": "start=1577808000&stop=1580486399&type=1",
+ "scene": null
+ },
+ {
+ "id": -1,
+ "name": "pages/activity/goods_seckill_details/index",
+ "pathName": "pages/activity/goods_seckill_details/index",
+ "query": "id=57&time=1591329600&status=1&scene=329",
+ "scene": null
+ },
+ {
+ "id": -1,
+ "name": "pages/activity/goods_seckill_details/index",
+ "pathName": "pages/activity/goods_seckill_details/index",
+ "query": "id=57&time=1591329600&status=1&scene=329",
+ "scene": null
+ },
+ {
+ "id": -1,
+ "name": "pages/activity/goods_seckill_details/index",
+ "pathName": "pages/activity/goods_seckill_details/index",
+ "query": "id=57&time=1591329600&status=1&scene=329",
+ "scene": null
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/template/xcx/sitemap.json b/template/xcx/sitemap.json
new file mode 100644
index 000000000..ca02add20
--- /dev/null
+++ b/template/xcx/sitemap.json
@@ -0,0 +1,7 @@
+{
+ "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
+ "rules": [{
+ "action": "allow",
+ "page": "*"
+ }]
+}
\ No newline at end of file
diff --git a/template/xcx/utils/Server.js b/template/xcx/utils/Server.js
new file mode 100644
index 000000000..a3f5aa70a
--- /dev/null
+++ b/template/xcx/utils/Server.js
@@ -0,0 +1,129 @@
+import { WSS_SERVER_URL, HEADER, SERVER_DEBUG, PINGINTERVAL} from './../config.js';
+
+export default class Server{
+
+ constructor(app) {
+ this.chatId = null // chat_id
+ this.connectStatus = false // websocket 连接状态 false:未连接,true:已连接
+ this.timer = null // 心跳
+ this.watcherList = [] // 订阅者
+ this.app = app // 方便在Chat内部操作app
+ this.debug = SERVER_DEBUG //debug
+ }
+
+ connectSocket(){
+ let that = this;
+ this.chatId = new Date().getTime();
+ this.SocketTask = wx.connectSocket({
+ url: WSS_SERVER_URL,
+ header: HEADER,
+ method: 'post',
+ success: res => {
+ that.debug && console.log(res);
+ },
+ fail:err =>{
+ that.debug && console.log(err);
+ }
+ });
+ wx.onSocketOpen(this.onOpen.bind(this));
+ wx.onSocketMessage(this.onMessage.bind(this));
+ wx.onSocketError(this.onError.bind(this));
+ wx.onSocketClose(this.onClose.bind(this));
+ }
+
+ /**
+ * 心跳
+ *
+ * */
+ ping(){
+ let that = this;
+ this.timer = setInterval(()=>{
+ that.send({type:'ping'});
+ }, PINGINTERVAL);
+ }
+
+ /**
+ * 关闭链接
+ *
+ */
+ close(){
+ clearInterval(this.timer);
+ this.SocketTask.close();
+ this.connectStatus = false;
+ }
+
+ /**
+ * 发送消息
+ *
+ * */
+ send(data){
+ let that = this;
+ return new Promise((reslove, reject)=>{
+ that.SocketTask.send({
+ data: JSON.stringify(data),
+ success:reslove,
+ fail:reject,
+ });
+ });
+ }
+
+ onMessage(res){
+ this.debug && console.log(res);
+ const { type, data = {} } = JSON.parse(res.data);
+ this.$emit(type, data);
+ }
+
+ onClose(){
+ this.close();
+ }
+
+ onError(res){
+ this.debug && console.log(res);
+ this.$emit('socket_error', res);
+ this.connectStatus = false;
+ }
+
+ onOpen(res){
+ this.debug && console.log('链接成功');
+ this.connectStatus = true;
+ if(this.app.globalData === undefined)
+ console.error('无法获取token登录失败');
+ else
+ this.send({ type: 'login', data: this.app.globalData.token});
+ this.ping();
+ }
+
+ /**
+ * 注册事件
+ * @param string name 事件名称
+ * @param callback successFun 回调函数
+ *
+ */
+ $on(name, successFun) {
+ let taht = this;
+ if (typeof name === 'object') {
+ name.forEach(item => {
+ if (!taht.watcherList[item]) this.watcherList[name] = [];
+ taht.watcherList[item].push(successFun);
+ })
+ } else {
+ if (!this.watcherList[name]) {
+ this.watcherList[name] = []
+ }
+ this.watcherList[name].push(successFun);
+ }
+ }
+
+ /**
+ * 执行事件
+ * @param string type 事件名称
+ * @param array data 参数
+ */
+ $emit(type, data){
+ let onCallbacks = this.watcherList[type]
+ onCallbacks.forEach(element => {
+ element.apply(this, arguments,data)
+ });
+ }
+
+}
diff --git a/template/xcx/utils/SubscribeMessage.js b/template/xcx/utils/SubscribeMessage.js
new file mode 100644
index 000000000..d4635546c
--- /dev/null
+++ b/template/xcx/utils/SubscribeMessage.js
@@ -0,0 +1,121 @@
+import { CACHE_SUBSCRIBE_MESSAGE } from './../config.js';
+
+export function auth()
+{
+ let tmplIds = {};
+ let messageTmplIds = wx.getStorageSync(CACHE_SUBSCRIBE_MESSAGE);
+ tmplIds = messageTmplIds ? JSON.parse(messageTmplIds) : {};
+ return tmplIds;
+}
+
+/**
+ * 支付成功后订阅消息id
+ * 订阅 确认收货通知 订单支付成功 新订单管理员提醒
+ */
+export function openPaySubscribe()
+{
+ let tmplIds = auth();
+ return subscribe([
+ tmplIds.oreder_takever,
+ tmplIds.order_pay_success,
+ tmplIds.order_new,
+ ])
+}
+
+/**
+ * 订单相关订阅消息
+ * 送货 发货 取消订单
+ */
+export function openOrderSubscribe()
+{
+ let tmplIds = auth();
+ return subscribe([
+ tmplIds.order_deliver_success,
+ tmplIds.order_postage_success,
+ tmplIds.order_clone
+ ])
+}
+
+/**
+ * 提现消息订阅
+ * 成功 和 失败 消息
+ */
+export function openExtrctSubscribe()
+{
+ let tmplIds = auth();
+ return subscribe([
+ tmplIds.user_extract
+ ]);
+}
+
+/**
+ * 拼团成功
+ */
+export function openPinkSubscribe()
+{
+ let tmplIds = auth();
+ return subscribe([
+ tmplIds.pink_true
+ ]);
+}
+
+/**
+ * 砍价成功
+ */
+export function openBargainSubscribe()
+{
+ let tmplIds = auth();
+ return subscribe([
+ tmplIds.bargain_success
+ ]);
+}
+
+/**
+ * 订单退款
+ */
+export function openOrderRefundSubscribe()
+{
+ let tmplIds = auth();
+ return subscribe([tmplIds.order_refund]);
+}
+
+/**
+ * 充值成功
+ */
+export function openRechargeSubscribe()
+{
+ let tmplIds = auth();
+ return subscribe([tmplIds.recharge_success]);
+}
+
+/**
+ * 提现
+ */
+export function openEextractSubscribe()
+{
+ let tmplIds = auth();
+ return subscribe([tmplIds.user_extract]);
+}
+
+/**
+ * 调起订阅界面
+ * array tmplIds 模板id
+ */
+export function subscribe(tmplIds)
+{
+ let wecaht = wx;
+ return new Promise((reslove) => {
+ wecaht.requestSubscribeMessage({
+ tmplIds: tmplIds,
+ success(res) {
+ return reslove(res);
+ },
+ fail(res) {
+ return reslove(res);
+ },
+ complete:function(res){
+ return reslove(res);
+ },
+ })
+ });
+}
\ No newline at end of file
diff --git a/template/xcx/utils/autuLogin.js b/template/xcx/utils/autuLogin.js
new file mode 100644
index 000000000..8c5ca333f
--- /dev/null
+++ b/template/xcx/utils/autuLogin.js
@@ -0,0 +1,23 @@
+import util from './util.js';
+import { login } from './../api/user.js';
+import { logout } from './../api/api.js';
+
+export default function authLogin(login_type){
+ return new Promise((reslove, reject) => {
+ util.autoLogin().then(userInfo => {
+ if (login_type !== undefined) userInfo.login_type = 'routine';
+ login(userInfo).then(res => {
+ getApp().globalData.token = res.data.token;
+ getApp().globalData.userInfo = res.data.userInfo;
+ getApp().globalData.isLog = true;
+ getApp().globalData.expiresTime = res.data.expires_time;
+ if (res.data.cache_key) wx.setStorage({ key: 'cache_key', data: res.data.cache_key });
+ reslove();
+ }).catch(err=>{
+ reject();
+ });
+ }).catch(err=>{
+ reject();
+ });
+ })
+}
\ No newline at end of file
diff --git a/template/xcx/utils/request.js b/template/xcx/utils/request.js
new file mode 100644
index 000000000..9b8373629
--- /dev/null
+++ b/template/xcx/utils/request.js
@@ -0,0 +1,46 @@
+import util from './util.js';
+import authLogin from './autuLogin.js';
+import { HEADER , TOKENNAME} from './../config.js';
+/**
+ * 发送请求
+ */
+export default function request(api, method, data, {noAuth = false, noVerify = false})
+{
+ let Url = getApp().globalData.url, header = HEADER;
+ if (!noAuth) {
+ //登录过期自动登录
+ if (!util.checkLogin()) return authLogin().then(res => { return request(api, method, data, { noAuth, noVerify}); });
+ }
+
+ if (getApp().globalData.token) header[TOKENNAME] = 'Bearer ' + getApp().globalData.token;
+
+ return new Promise((reslove, reject) => {
+ wx.request({
+ url: Url + '/api/' + api,
+ method: method || 'GET',
+ header: header,
+ data: data || {},
+ success: (res) => {
+ if (noVerify)
+ reslove(res.data, res);
+ else if (res.data.status == 200)
+ reslove(res.data, res);
+ else if (res.data.status == 402)
+ reslove(res.data, res);
+ else if ([410000, 410001, 410002].indexOf(res.data.status) !== -1) {
+ util.logout()
+ return authLogin().then(res => { return request(api, method, data, { noAuth, noVerify }); });
+ } else
+ reject(res.data.msg || '系统错误');
+ },
+ fail: (msg) => {
+ reject('请求失败');
+ }
+ })
+ });
+}
+
+['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach((method) => {
+ request[method] = (api, data, opt) => request(api, method, data, opt || {})
+});
+
diff --git a/template/xcx/utils/util.js b/template/xcx/utils/util.js
new file mode 100644
index 000000000..da938a149
--- /dev/null
+++ b/template/xcx/utils/util.js
@@ -0,0 +1,545 @@
+import { TOKENNAME } from './../config.js';
+const formatTime = date => {
+ const year = date.getFullYear()
+ const month = date.getMonth() + 1
+ const day = date.getDate()
+ const hour = date.getHours()
+ const minute = date.getMinutes()
+ const second = date.getSeconds()
+
+ return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
+}
+
+const $h={
+ //除法函数,用来得到精确的除法结果
+ //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
+ //调用:$h.Div(arg1,arg2)
+ //返回值:arg1除以arg2的精确结果
+ Div:function (arg1, arg2) {
+ arg1 = parseFloat(arg1);
+ arg2 = parseFloat(arg2);
+ var t1 = 0, t2 = 0, r1, r2;
+ try { t1 = arg1.toString().split(".")[1].length; } catch (e) { }
+ try { t2 = arg2.toString().split(".")[1].length; } catch (e) { }
+ r1 = Number(arg1.toString().replace(".", ""));
+ r2 = Number(arg2.toString().replace(".", ""));
+ return this.Mul(r1 / r2 , Math.pow(10, t2 - t1));
+ },
+ //加法函数,用来得到精确的加法结果
+ //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
+ //调用:$h.Add(arg1,arg2)
+ //返回值:arg1加上arg2的精确结果
+ Add: function (arg1, arg2) {
+ arg2 = parseFloat(arg2);
+ var r1, r2, m;
+ try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
+ try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
+ m = Math.pow(100, Math.max(r1, r2));
+ return (this.Mul(arg1, m) + this.Mul(arg2, m)) / m;
+ },
+ //减法函数,用来得到精确的减法结果
+ //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
+ //调用:$h.Sub(arg1,arg2)
+ //返回值:arg1减去arg2的精确结果
+ Sub: function (arg1, arg2) {
+ arg1 = parseFloat(arg1);
+ arg2 = parseFloat(arg2);
+ var r1, r2, m, n;
+ try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
+ try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
+ m = Math.pow(10, Math.max(r1, r2));
+ //动态控制精度长度
+ n = (r1 >= r2) ? r1 : r2;
+ return ((this.Mul(arg1, m) - this.Mul(arg2, m)) / m).toFixed(n);
+ },
+ //乘法函数,用来得到精确的乘法结果
+ //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
+ //调用:$h.Mul(arg1,arg2)
+ //返回值:arg1乘以arg2的精确结果
+ Mul: function (arg1, arg2) {
+ arg1 = parseFloat(arg1);
+ arg2 = parseFloat(arg2);
+ var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
+ try { m += s1.split(".")[1].length } catch (e) { }
+ try { m += s2.split(".")[1].length } catch (e) { }
+ return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
+ },
+}
+
+const formatNumber = n => {
+ n = n.toString()
+ return n[1] ? n : '0' + n
+}
+
+/**
+ * 处理服务器扫码带进来的参数
+ * @param string param 扫码携带参数
+ * @param string k 整体分割符 默认为:&
+ * @param string p 单个分隔符 默认为:=
+ * @return object
+ *
+*/
+const getUrlParams = (param,k,p) => {
+ if (typeof param!='string') return {};
+ k = k ? k : '&';//整体参数分隔符
+ p = p ? p : '=';//单个参数分隔符
+ var value = {};
+ if (param.indexOf(k) !== -1) {
+ param = param.split(k);
+ for (var val in param) {
+ if (param[val].indexOf(p) !== -1) {
+ var item = param[val].split(p);
+ value[item[0]] = item[1];
+ }
+ }
+ } else if (param.indexOf(p) !== -1){
+ var item = param.split(p);
+ value[item[0]] = item[1];
+ }else{
+ return param;
+ }
+ return value;
+}
+
+const wxgetUserInfo = function()
+{
+ return new Promise((resolve, reject) =>{
+ wx.getUserInfo({
+ lang: 'zh_CN',
+ success(res) {
+ resolve(res);
+ },
+ fail(res){
+ reject(res);
+ }
+ })
+ });
+}
+
+const checkLogin = function (token, expiresTime, isLog)
+{
+ if (getApp()){
+ token = getApp().globalData.token;
+ expiresTime = getApp().globalData.expiresTime;
+ isLog = getApp().globalData.isLog;
+ }
+ let res = token ? true : false;
+ let res1 = isLog;
+ let res2 = res && res1;
+ if (res2){
+ let newTime=Math.round(new Date() / 1000);
+ if (expiresTime < newTime) return false;
+ }
+ return res2;
+}
+
+const logout = function()
+{
+ getApp().globalData.token = '';
+ getApp().globalData.isLog = false;
+}
+
+const chekWxLogin = function()
+{
+ return new Promise((resolve, reject)=>{
+ if (checkLogin())
+ return resolve({ userinfo: getApp().globalData.userInfo, isLogin: true });
+ wx.getSetting({
+ success(res) {
+ if (!res.authSetting['scope.userInfo']) {
+ return reject({authSetting:false});
+ } else {
+ wx.getStorage({
+ key: 'cache_key',
+ success(res){
+ wxgetUserInfo().then(userInfo => {
+ userInfo.cache_key = res.data;
+ return resolve({ userInfo: userInfo, isLogin: false });
+ }).catch(res => {
+ return reject(res);
+ });
+ },
+ fail(){
+ getCodeLogin((code) => {
+ wxgetUserInfo().then(userInfo => {
+ userInfo.code = code;
+ return resolve({ userInfo: userInfo, isLogin: false });
+ }).catch(res => {
+ return reject(res);
+ })
+ });
+ }
+ })
+
+ }
+ },
+ fail(res) {
+ return reject(res);
+ }
+ })
+ })
+}
+
+
+/**
+ *
+ * 授权过后自动登录
+*/
+const autoLogin = function()
+{
+ return new Promise((resolve, reject) => {
+ wx.getStorage({
+ key: 'cache_key',
+ success(res) {
+ wxgetUserInfo().then(userInfo => {
+ userInfo.cache_key = res.data;
+ return resolve(userInfo);
+ }).catch(res => {
+ return reject(res);
+ })
+ },
+ fail(){
+ getCodeLogin((code) => {
+ wxgetUserInfo().then(userInfo => {
+ userInfo.code = code;
+ return resolve(userInfo);
+ }).catch(res => {
+ return reject(res);
+ })
+ });
+ }
+ });
+ })
+}
+
+const getCodeLogin = function(successFn)
+{
+ wx.login({
+ success(res){
+ successFn(res);
+ }
+ })
+}
+
+/*
+* 合并数组
+*/
+const SplitArray= function (list, sp) {
+ if (typeof list != 'object') return [];
+ if (sp === undefined) sp = [];
+ for (var i = 0; i < list.length; i++) {
+ sp.push(list[i]);
+ }
+ return sp;
+}
+
+ /**
+ * opt object | string
+ * to_url object | string
+ * 例:
+ * this.Tips('/pages/test/test'); 跳转不提示
+ * this.Tips({title:'提示'},'/pages/test/test'); 提示并跳转
+ * this.Tips({title:'提示'},{tab:1,url:'/pages/index/index'}); 提示并跳转值table上
+ * tab=1 一定时间后跳转至 table上
+ * tab=2 一定时间后跳转至非 table上
+ * tab=3 一定时间后返回上页面
+ * tab=4 关闭所有页面跳转至非table上
+ * tab=5 关闭当前页面跳转至table上
+ */
+const Tips= function (opt, to_url) {
+ if (typeof opt == 'string') {
+ to_url = opt;
+ opt = {};
+ }
+ var title = opt.title || '', icon = opt.icon || 'none', endtime = opt.endtime || 2000;
+ if (title) wx.showToast({ title: title, icon: icon, duration: endtime })
+ if (to_url != undefined) {
+ if (typeof to_url == 'object') {
+ var tab = to_url.tab || 1, url = to_url.url || '';
+ switch (tab) {
+ case 1:
+ //一定时间后跳转至 table
+ setTimeout(function () {
+ wx.switchTab({
+ url: url
+ })
+ }, endtime);
+ break;
+ case 2:
+ //跳转至非table页面
+ setTimeout(function () {
+ wx.navigateTo({
+ url: url,
+ })
+ }, endtime);
+ break;
+ case 3:
+ //返回上页面
+ setTimeout(function () {
+ wx.navigateBack({
+ delta: parseInt(url),
+ })
+ }, endtime);
+ break;
+ case 4:
+ //关闭当前所有页面跳转至非table页面
+ setTimeout(function () {
+ wx.reLaunch({
+ url: url,
+ })
+ }, endtime);
+ break;
+ case 5:
+ //关闭当前页面跳转至非table页面
+ setTimeout(function () {
+ wx.redirectTo({
+ url: url,
+ })
+ }, endtime);
+ break;
+ }
+
+ }else if(typeof to_url == 'function'){
+ setTimeout(function () {
+ to_url && to_url();
+ }, endtime);
+ }else{
+ //没有提示时跳转不延迟
+ setTimeout(function () {
+ wx.navigateTo({
+ url: to_url,
+ })
+ }, title ? endtime : 0);
+ }
+ }
+}
+/*
+* 单图上传
+* @param object opt
+* @param callable successCallback 成功执行方法 data
+* @param callable errorCallback 失败执行方法
+*/
+const uploadImageOne=function (opt, successCallback, errorCallback) {
+ if (typeof opt === 'string') {
+ var url = opt;
+ opt = {};
+ opt.url = url;
+ }
+ var count = opt.count || 1, sizeType = opt.sizeType || ['compressed'], sourceType = opt.sourceType || ['album', 'camera'],
+ is_load = opt.is_load || true, uploadUrl = opt.url || '', inputName = opt.name || 'pics';
+ wx.chooseImage({
+ count: count, //最多可以选择的图片总数
+ sizeType: sizeType, // 可以指定是原图还是压缩图,默认二者都有
+ sourceType: sourceType, // 可以指定来源是相册还是相机,默认二者都有
+ success: function (res) {
+ //启动上传等待中...
+ wx.showLoading({
+ title: '图片上传中',
+ });
+ wx.uploadFile({
+ url: getApp().globalData.url+'/api/'+uploadUrl,
+ filePath: res.tempFilePaths[0],
+ name: inputName,
+ formData: {
+ 'filename': inputName
+ },
+ header: {
+ "Content-Type": "multipart/form-data",
+ [TOKENNAME]: 'Bearer '+getApp().globalData.token
+ },
+ success: function (res) {
+ wx.hideLoading();
+ if (res.statusCode == 403) {
+ Tips({ title: res.data });
+ } else {
+ var data = res.data ? JSON.parse(res.data) : {};
+ if (data.status == 200) {
+ successCallback && successCallback(data)
+ } else {
+ errorCallback && errorCallback(data);
+ Tips({ title: data.msg });
+ }
+ }
+ }, fail: function (res) {
+ wx.hideLoading();
+ Tips({ title: '上传图片失败' });
+ }
+ })
+ }
+ })
+}
+
+/**
+ * 移除数组中的某个数组并组成新的数组返回
+ * @param array array 需要移除的数组
+ * @param int index 需要移除的数组的键值
+ * @param string | int 值
+ * @return array
+ *
+*/
+const ArrayRemove= (array,index,value) =>{
+ const valueArray=[];
+ if (array instanceof Array){
+ for (let i = 0; i < array.length;i++){
+ if (typeof index == 'number' && array[index] != i){
+ valueArray.push(array[i]);
+ } else if (typeof index == 'string' && array[i][index] != value){
+ valueArray.push(array[i]);
+ }
+ }
+ }
+ return valueArray;
+}
+ /**
+ * 生成海报获取文字
+ * @param string text 为传入的文本
+ * @param int num 为单行显示的字节长度
+ * @return array
+ */
+const textByteLength = (text, num) =>{
+ let strLength = 0;
+ let rows = 1;
+ let str = 0;
+ let arr = [];
+ for (let j = 0; j < text.length; j++) {
+ if (text.charCodeAt(j) > 255) {
+ strLength += 2;
+ if (strLength > rows * num) {
+ strLength++;
+ arr.push(text.slice(str, j));
+ str = j;
+ rows++;
+ }
+ } else {
+ strLength++;
+ if (strLength > rows * num) {
+ arr.push(text.slice(str, j));
+ str = j;
+ rows++;
+ }
+ }
+ }
+ arr.push(text.slice(str, text.length));
+ return [strLength, arr, rows] // [处理文字的总字节长度,每行显示内容的数组,行数]
+}
+
+/**
+ * 获取分享海报
+ * @param array arr2 海报素材
+ * @param string store_name 素材文字
+ * @param string price 价格
+ * @param function successFn 回调函数
+ *
+ *
+*/
+const PosterCanvas = (arr2, store_name, price,successFn) =>{
+ wx.showLoading({ title: '海报生成中', mask: true });
+ const ctx = wx.createCanvasContext('myCanvas');
+ ctx.clearRect(0, 0, 0, 0);
+ /**
+ * 只能获取合法域名下的图片信息,本地调试无法获取
+ *
+ */
+ wx.getImageInfo({
+ src: arr2[0],
+ success: function (res) {
+ const WIDTH = res.width;
+ const HEIGHT = res.height;
+ ctx.drawImage(arr2[0], 0, 0, WIDTH, HEIGHT);
+ ctx.drawImage(arr2[1], 0, 0, WIDTH, WIDTH);
+ ctx.save();
+ let r = 90;
+ let d = r * 2;
+ let cx = 40;
+ let cy = 990;
+ ctx.arc(cx + r, cy + r, r, 0, 2 * Math.PI);
+ ctx.clip();
+ ctx.drawImage(arr2[2], cx, cy, d, d);
+ ctx.restore();
+ const CONTENT_ROW_LENGTH = 40;
+ let [contentLeng, contentArray, contentRows] = textByteLength(store_name, CONTENT_ROW_LENGTH);
+ if (contentRows > 2) {
+ contentRows =2;
+ let textArray=contentArray.slice(0,2);
+ textArray[textArray.length-1]+='……';
+ contentArray = textArray;
+ }
+ ctx.setTextAlign('center');
+ ctx.setFontSize(32);
+ let contentHh = 32 * 1.3;
+ for (let m = 0; m < contentArray.length; m++) {
+ ctx.fillText(contentArray[m], WIDTH / 2, 820 + contentHh * m);
+ }
+ ctx.setTextAlign('center')
+ ctx.setFontSize(48);
+ ctx.setFillStyle('red');
+ ctx.fillText('¥' + price, WIDTH / 2, 860 + contentHh);
+ ctx.draw(true, function () {
+ wx.canvasToTempFilePath({
+ canvasId: 'myCanvas',
+ fileType: 'png',
+ destWidth: WIDTH,
+ destHeight: HEIGHT,
+ success: function (res) {
+ wx.hideLoading();
+ successFn && successFn(res.tempFilePath);
+ }
+ })
+ });
+ },
+ fail:function(){
+ wx.hideLoading();
+ Tips({title:'无法获取图片信息'});
+ }
+ })
+}
+
+/**
+ * 数字变动动画效果
+ * @param float BaseNumber 原数字
+ * @param float ChangeNumber 变动后的数字
+ * @param object that 当前this
+ * @param string name 变动字段名称
+ * */
+const AnimationNumber = (BaseNumber,ChangeNumber,that,name) => {
+ var difference = $h.Sub(ChangeNumber,BaseNumber) //与原数字的差
+ var absDifferent = Math.abs(difference) //差取绝对值
+ var changeTimes = absDifferent < 6 ? absDifferent : 6 //最多变化6次
+ var changeUnit = absDifferent < 6 ? 1 : Math.floor(difference/6);
+ // 依次变化
+ for (var i = 0; i < changeTimes; i += 1) {
+ // 使用闭包传入i值,用来判断是不是最后一次变化
+ (function (i) {
+ setTimeout(() => {
+ that.setData({
+ [name]: $h.Add(BaseNumber,changeUnit)
+ })
+ // 差值除以变化次数时,并不都是整除的,所以最后一步要精确设置新数字
+ if (i == changeTimes - 1) {
+ that.setData({
+ [name]: $h.Add(BaseNumber, difference)
+ })
+ }
+ }, 100 * (i + 1))
+ })(i)
+ }
+}
+
+
+module.exports = {
+ formatTime: formatTime,
+ $h:$h,
+ Tips: Tips,
+ uploadImageOne: uploadImageOne,
+ SplitArray: SplitArray,
+ ArrayRemove: ArrayRemove,
+ PosterCanvas: PosterCanvas,
+ AnimationNumber: AnimationNumber,
+ getUrlParams: getUrlParams,
+ chekWxLogin: chekWxLogin,
+ getCodeLogin: getCodeLogin,
+ checkLogin: checkLogin,
+ wxgetUserInfo: wxgetUserInfo,
+ autoLogin: autoLogin,
+ logout: logout
+}
diff --git a/template/xcx/utils/wxh.js b/template/xcx/utils/wxh.js
new file mode 100644
index 000000000..3ff5cb4fd
--- /dev/null
+++ b/template/xcx/utils/wxh.js
@@ -0,0 +1,233 @@
+import { CACHE_LONGITUDE, CACHE_LATITUDE } from '../config.js';
+//购物车减
+var carmin = function (that){
+ var num = that.data.num;
+ // 如果大于1时,才可以减
+ if (num > 1) {
+ num--;
+ }
+ // 只有大于一件的时候,才能normal状态,否则disable状态
+ var minusStatus = num <= 1 ? 'disabled' : 'normal';
+ // 将数值与状态写回
+ that.setData({
+ num: num,
+ minusStatus: minusStatus
+ });
+}
+//返回首页
+var home = function (that, e) {
+ if (e.touches[0].clientY < 500 && e.touches[0].clientY > 0) {
+ that.setData({
+ top: e.touches[0].clientY
+ })
+ }
+}
+//购物车加
+var carjia = function(that){
+ var num = that.data.num;
+ // 不作过多考虑自增1
+ num++;
+ // 只有大于一件的时候,才能normal状态,否则disable状态
+ var minusStatus = num < 1 ? 'disabled' : 'normal';
+ // 将数值与状态写回
+ that.setData({
+ num: num,
+ minusStatus: minusStatus
+ });
+}
+
+//倒计时;
+var time = function (timeStamp, that) {
+ var interval = null,totalSecond = timeStamp - Date.parse(new Date()) / 1000;
+ interval = setInterval(function () {
+ // 秒数
+ var second = totalSecond;
+
+ // 小时位
+ var hr = Math.floor(second / 3600);
+ var hrStr = hr.toString();
+ if (hrStr.length == 1) hrStr = '0' + hrStr;
+
+ // 分钟位
+ var min = Math.floor((second - hr * 3600) / 60);
+ var minStr = min.toString();
+ if (minStr.length == 1) minStr = '0' + minStr;
+
+ // 秒位
+ var sec = second - hr * 3600 - min * 60;
+ var secStr = sec.toString();
+ if (secStr.length == 1) secStr = '0' + secStr;
+ that.setData({
+ countDownHour: hrStr,
+ countDownMinute: minStr,
+ countDownSecond: secStr,
+ });
+ totalSecond--;
+ if (totalSecond <= 0) {
+ clearInterval(interval);
+ wx.showToast({
+ title: '活动已结束',
+ icon: 'none',
+ duration: 1000,
+ mask: true,
+ })
+ that.setData({
+ countDownHour: '00',
+ countDownMinute: '00',
+ countDownSecond: '00',
+ });
+ }
+ }.bind(that), 1000);
+ that.setData({ interval: interval});
+}
+
+//倒计时2;
+var time2 = function (timeStamp, that) {
+ var totalSecond = timeStamp - Date.parse(new Date()) / 1000;
+ var interval = setInterval(function () {
+ // 秒数
+ var second = totalSecond;
+ // // 天数位
+ var day = Math.floor(second / 3600 / 24);
+ var dayStr = day.toString();
+ if (dayStr.length == 1) dayStr = '0' + dayStr;
+ // 小时位
+ var hr = Math.floor((second - day * 3600 * 24) / (60 * 60));
+ var hrStr = hr.toString();
+ if (hrStr.length == 1) hrStr = '0' + hrStr;
+
+ // 分钟位
+ // var min = Math.floor((second - hr * 3600) / 60);
+ var min = Math.floor((second - day * 3600 * 24 - hr * 3600) / 60);
+ var minStr = min.toString();
+ if (minStr.length == 1) minStr = '0' + minStr;
+
+ // 秒位
+ // var sec = second - hrNew * 3600 - min * 60;
+ var sec = Math.floor(second - day * 3600 * 24 - hr * 3600 - min * 60);
+ var secStr = sec.toString();
+ if (secStr.length == 1) secStr = '0' + secStr;
+
+ that.setData({
+ countDownDay: dayStr,
+ countDownHour: hrStr,
+ countDownMinute: minStr,
+ countDownSecond: secStr,
+ });
+ totalSecond--;
+ if (totalSecond <= 0) {
+ clearInterval(interval);
+ wx.showToast({
+ title: '活动已结束',
+ });
+ that.setData({
+ countDownDay: '00',
+ countDownHour: '00',
+ countDownMinute: '00',
+ countDownSecond: '00',
+ });
+ }
+ }.bind(that), 1000);
+ that.setData({ interval: interval});
+}
+var footan = function(that){
+ that.setData({
+ prostatus: true,
+ show: false
+ })
+}
+var tapsize = function(that,e){
+ var $indexs = e.target.dataset.indexs;//内
+ var $index = e.target.dataset.index;//外
+ that.setData({
+ taberindexs: $indexs,
+ taberindex: $index
+ })
+}
+var selfLocation = function(showMode) {
+ const that = this;
+ return new Promise((resolve, reject)=>{
+ let longitude = wx.getStorageSync(CACHE_LONGITUDE); //经度
+ let latitude = wx.getStorageSync(CACHE_LATITUDE); //纬度
+ if (longitude && latitude) {
+ return resolve({ longitude: longitude, latitude: latitude});
+ }
+ wx.getSetting({
+ success: (res) => {
+ if (!res.authSetting['scope.userLocation']) {
+ wx.removeStorageSync(CACHE_LONGITUDE);
+ wx.removeStorageSync(CACHE_LATITUDE);
+ wx.getLocation({
+ success: function (res) {
+ var latitude = res.latitude;
+ var longitude = res.longitude;
+ wx.setStorageSync(CACHE_LONGITUDE, longitude);
+ wx.setStorageSync(CACHE_LATITUDE, latitude);
+ resolve(res);
+ },
+ fail(res) {
+ if (res.errMsg == "getLocation:fail auth deny" && showMode == undefined) {
+ wx.showModal({
+ title: '您已经拒绝授权地理位置',
+ content: '是否需要开启权限',
+ success: function (res) {
+ if (res.cancel) {
+ reject(res);
+ } else if (res.confirm) {
+ wx.openSetting({
+ success: function (res) {
+ if (res.authSetting["scope.userLocation"] == true) {
+ wx.showToast({
+ title: '授权成功',
+ icon: 'success',
+ duration: 1000
+ })
+ wx.getLocation({
+ success: function (res) {
+ var latitude = res.latitude;
+ var longitude = res.longitude;
+ wx.setStorageSync(CACHE_LONGITUDE, longitude);
+ wx.setStorageSync(CACHE_LATITUDE, latitude);
+ resolve(res);
+ }
+ })
+ } else {
+ wx.showToast({
+ title: '授权失败',
+ icon: 'none',
+ duration: 1000
+ })
+ }
+ }
+ })
+ }
+ },
+ })
+ }
+ },
+ });
+ } else {
+ wx.getLocation({
+ success: function (res) {
+ let latitude = res.latitude;
+ let longitude = res.longitude;
+ wx.setStorageSync(CACHE_LONGITUDE, longitude);
+ wx.setStorageSync(CACHE_LATITUDE, latitude);
+ resolve(res);
+ }
+ })
+ }
+ }
+ })
+ })
+}
+module.exports = {
+ carmin: carmin,
+ carjia: carjia,
+ time: time,
+ footan: footan,
+ tapsize: tapsize,
+ home: home,
+ time2: time2,
+ selfLocation: selfLocation
+}
\ No newline at end of file
diff --git a/template/xcx/wxParse/html2json.js b/template/xcx/wxParse/html2json.js
new file mode 100644
index 000000000..a84b97095
--- /dev/null
+++ b/template/xcx/wxParse/html2json.js
@@ -0,0 +1,303 @@
+/**
+ * html2Json 改造来自: https://github.com/Jxck/html2json
+ *
+ *
+ * author: Di (微信小程序开发工程师)
+ * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
+ * 垂直微信小程序开发交流社区
+ *
+ * github地址: https://github.com/icindy/wxParse
+ *
+ * for: 微信小程序富文本解析
+ * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
+ */
+
+var __placeImgeUrlHttps = "https";
+var __emojisReg = '';
+var __emojisBaseSrc = '';
+var __emojis = {};
+var wxDiscode = require('./wxDiscode.js');
+var HTMLParser = require('./htmlparser.js');
+// Empty Elements - HTML 5
+var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr");
+// Block Elements - HTML 5
+var block = makeMap("br,a,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video");
+
+// Inline Elements - HTML 5
+var inline = makeMap("abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var");
+
+// Elements that you can, intentionally, leave open
+// (and which close themselves)
+var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");
+
+// Attributes that have their values filled in disabled="disabled"
+var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected");
+
+// Special Elements (can contain anything)
+var special = makeMap("wxxxcode-style,script,style,view,scroll-view,block");
+function makeMap(str) {
+ var obj = {}, items = str.split(",");
+ for (var i = 0; i < items.length; i++)
+ obj[items[i]] = true;
+ return obj;
+}
+
+function q(v) {
+ return '"' + v + '"';
+}
+
+function removeDOCTYPE(html) {
+ return html
+ .replace(/<\?xml.*\?>\n/, '')
+ .replace(/<.*!doctype.*\>\n/, '')
+ .replace(/<.*!DOCTYPE.*\>\n/, '');
+}
+
+function trimHtml(html) {
+ return html
+ .replace(/\r?\n+/g, '')
+ .replace(//ig, '')
+ .replace(/\/\*.*?\*\//ig, '')
+ .replace(/[ ]+
+ // add to parents
+ var parent = bufArray[0] || results;
+ if (parent.nodes === undefined) {
+ parent.nodes = [];
+ }
+ parent.nodes.push(node);
+ } else {
+ bufArray.unshift(node);
+ }
+ },
+ end: function (tag) {
+ //debug(tag);
+ // merge into parent tag
+ var node = bufArray.shift();
+ if (node.tag !== tag) console.error('invalid state: mismatch end tag');
+
+ //当有缓存source资源时于于video补上src资源
+ if(node.tag === 'video' && results.source){
+ node.attr.src = results.source;
+ delete results.source;
+ }
+
+ if (bufArray.length === 0) {
+ results.nodes.push(node);
+ } else {
+ var parent = bufArray[0];
+ if (parent.nodes === undefined) {
+ parent.nodes = [];
+ }
+ parent.nodes.push(node);
+ }
+ },
+ chars: function (text) {
+ //debug(text);
+ var node = {
+ node: 'text',
+ text: text,
+ textArray:transEmojiStr(text)
+ };
+
+ if (bufArray.length === 0) {
+ node.index = index.toString()
+ index += 1
+ results.nodes.push(node);
+ } else {
+ var parent = bufArray[0];
+ if (parent.nodes === undefined) {
+ parent.nodes = [];
+ }
+ node.index = parent.index + '.' + parent.nodes.length
+ parent.nodes.push(node);
+ }
+ },
+ comment: function (text) {
+ //debug(text);
+ // var node = {
+ // node: 'comment',
+ // text: text,
+ // };
+ // var parent = bufArray[0];
+ // if (parent.nodes === undefined) {
+ // parent.nodes = [];
+ // }
+ // parent.nodes.push(node);
+ },
+ });
+ return results;
+};
+
+function transEmojiStr(str){
+ // var eReg = new RegExp("["+__reg+' '+"]");
+// str = str.replace(/\[([^\[\]]+)\]/g,':$1:')
+
+ var emojiObjs = [];
+ //如果正则表达式为空
+ if(__emojisReg.length == 0 || !__emojis){
+ var emojiObj = {}
+ emojiObj.node = "text";
+ emojiObj.text = str;
+ array = [emojiObj];
+ return array;
+ }
+ //这个地方需要调整
+ str = str.replace(/\[([^\[\]]+)\]/g,':$1:')
+ var eReg = new RegExp("[:]");
+ var array = str.split(eReg);
+ for(var i = 0; i < array.length; i++){
+ var ele = array[i];
+ var emojiObj = {};
+ if(__emojis[ele]){
+ emojiObj.node = "element";
+ emojiObj.tag = "emoji";
+ emojiObj.text = __emojis[ele];
+ emojiObj.baseSrc= __emojisBaseSrc;
+ }else{
+ emojiObj.node = "text";
+ emojiObj.text = ele;
+ }
+ emojiObjs.push(emojiObj);
+ }
+
+ return emojiObjs;
+}
+
+function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){
+ __emojisReg = reg;
+ __emojisBaseSrc=baseSrc;
+ __emojis=emojis;
+}
+
+module.exports = {
+ html2json: html2json,
+ emojisInit:emojisInit
+};
+
diff --git a/template/xcx/wxParse/htmlparser.js b/template/xcx/wxParse/htmlparser.js
new file mode 100644
index 000000000..811ddacf4
--- /dev/null
+++ b/template/xcx/wxParse/htmlparser.js
@@ -0,0 +1,192 @@
+/**
+ *
+ * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser
+ *
+ * author: Di (微信小程序开发工程师)
+ * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
+ * 垂直微信小程序开发交流社区
+ *
+ * github地址: https://github.com/icindy/wxParse
+ *
+ * for: 微信小程序富文本解析
+ * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
+ */
+// Regular Expressions for parsing tags and attributes
+var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,
+ endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/,
+ attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
+
+// Empty Elements - HTML 5
+var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr");
+
+// Block Elements - HTML 5
+var block = makeMap("a,address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video");
+
+// Inline Elements - HTML 5
+var inline = makeMap("abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var");
+
+// Elements that you can, intentionally, leave open
+// (and which close themselves)
+var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");
+
+// Attributes that have their values filled in disabled="disabled"
+var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected");
+
+// Special Elements (can contain anything)
+var special = makeMap("wxxxcode-style,script,style,view,scroll-view,block");
+
+function HTMLParser(html, handler) {
+ var index, chars, match, stack = [], last = html;
+ stack.last = function () {
+ return this[this.length - 1];
+ };
+
+ while (html) {
+ chars = true;
+
+ // Make sure we're not in a script or style element
+ if (!stack.last() || !special[stack.last()]) {
+
+ // Comment
+ if (html.indexOf("");
+
+ if (index >= 0) {
+ if (handler.comment)
+ handler.comment(html.substring(4, index));
+ html = html.substring(index + 3);
+ chars = false;
+ }
+
+ // end tag
+ } else if (html.indexOf("") == 0) {
+ match = html.match(endTag);
+
+ if (match) {
+ html = html.substring(match[0].length);
+ match[0].replace(endTag, parseEndTag);
+ chars = false;
+ }
+
+ // start tag
+ } else if (html.indexOf("<") == 0) {
+ match = html.match(startTag);
+
+ if (match) {
+ html = html.substring(match[0].length);
+ match[0].replace(startTag, parseStartTag);
+ chars = false;
+ }
+ }
+
+ if (chars) {
+ index = html.indexOf("<");
+ var text = ''
+ while (index === 0) {
+ text += "<";
+ html = html.substring(1);
+ index = html.indexOf("<");
+ }
+ text += index < 0 ? html : html.substring(0, index);
+ html = index < 0 ? "" : html.substring(index);
+
+ if (handler.chars)
+ handler.chars(text);
+ }
+
+ } else {
+
+ html = html.replace(new RegExp("([\\s\\S]*?)<\/" + stack.last() + "[^>]*>"), function (all, text) {
+ text = text.replace(/|/g, "$1$2");
+ if (handler.chars)
+ handler.chars(text);
+
+ return "";
+ });
+
+
+ parseEndTag("", stack.last());
+ }
+
+ if (html == last)
+ throw "Parse Error: " + html;
+ last = html;
+ }
+
+ // Clean up any remaining tags
+ parseEndTag();
+
+ function parseStartTag(tag, tagName, rest, unary) {
+ tagName = tagName.toLowerCase();
+
+ if (block[tagName]) {
+ while (stack.last() && inline[stack.last()]) {
+ parseEndTag("", stack.last());
+ }
+ }
+
+ if (closeSelf[tagName] && stack.last() == tagName) {
+ parseEndTag("", tagName);
+ }
+
+ unary = empty[tagName] || !!unary;
+
+ if (!unary)
+ stack.push(tagName);
+
+ if (handler.start) {
+ var attrs = [];
+
+ rest.replace(attr, function (match, name) {
+ var value = arguments[2] ? arguments[2] :
+ arguments[3] ? arguments[3] :
+ arguments[4] ? arguments[4] :
+ fillAttrs[name] ? name : "";
+
+ attrs.push({
+ name: name,
+ value: value,
+ escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') //"
+ });
+ });
+
+ if (handler.start) {
+ handler.start(tagName, attrs, unary);
+ }
+
+ }
+ }
+
+ function parseEndTag(tag, tagName) {
+ // If no tag name is provided, clean shop
+ if (!tagName)
+ var pos = 0;
+
+ // Find the closest opened tag of the same type
+ else {
+ tagName = tagName.toLowerCase();
+ for (var pos = stack.length - 1; pos >= 0; pos--)
+ if (stack[pos] == tagName)
+ break;
+ }
+ if (pos >= 0) {
+ // Close all the open elements, up the stack
+ for (var i = stack.length - 1; i >= pos; i--)
+ if (handler.end)
+ handler.end(stack[i]);
+
+ // Remove the open elements from the stack
+ stack.length = pos;
+ }
+ }
+};
+
+
+function makeMap(str) {
+ var obj = {}, items = str.split(",");
+ for (var i = 0; i < items.length; i++)
+ obj[items[i]] = true;
+ return obj;
+}
+
+module.exports = HTMLParser;
diff --git a/template/xcx/wxParse/showdown.js b/template/xcx/wxParse/showdown.js
new file mode 100644
index 000000000..d29206d5f
--- /dev/null
+++ b/template/xcx/wxParse/showdown.js
@@ -0,0 +1,2532 @@
+/**
+ *
+ * showdown: https://github.com/showdownjs/showdown
+ *
+ * author: Di (微信小程序开发工程师)
+ * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
+ * 垂直微信小程序开发交流社区
+ *
+ * github地址: https://github.com/icindy/wxParse
+ *
+ * for: 微信小程序富文本解析
+ * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
+ */
+
+function getDefaultOpts(simple) {
+ 'use strict';
+
+ var defaultOptions = {
+ omitExtraWLInCodeBlocks: {
+ defaultValue: false,
+ describe: 'Omit the default extra whiteline added to code blocks',
+ type: 'boolean'
+ },
+ noHeaderId: {
+ defaultValue: false,
+ describe: 'Turn on/off generated header id',
+ type: 'boolean'
+ },
+ prefixHeaderId: {
+ defaultValue: false,
+ describe: 'Specify a prefix to generated header ids',
+ type: 'string'
+ },
+ headerLevelStart: {
+ defaultValue: false,
+ describe: 'The header blocks level start',
+ type: 'integer'
+ },
+ parseImgDimensions: {
+ defaultValue: false,
+ describe: 'Turn on/off image dimension parsing',
+ type: 'boolean'
+ },
+ simplifiedAutoLink: {
+ defaultValue: false,
+ describe: 'Turn on/off GFM autolink style',
+ type: 'boolean'
+ },
+ literalMidWordUnderscores: {
+ defaultValue: false,
+ describe: 'Parse midword underscores as literal underscores',
+ type: 'boolean'
+ },
+ strikethrough: {
+ defaultValue: false,
+ describe: 'Turn on/off strikethrough support',
+ type: 'boolean'
+ },
+ tables: {
+ defaultValue: false,
+ describe: 'Turn on/off tables support',
+ type: 'boolean'
+ },
+ tablesHeaderId: {
+ defaultValue: false,
+ describe: 'Add an id to table headers',
+ type: 'boolean'
+ },
+ ghCodeBlocks: {
+ defaultValue: true,
+ describe: 'Turn on/off GFM fenced code blocks support',
+ type: 'boolean'
+ },
+ tasklists: {
+ defaultValue: false,
+ describe: 'Turn on/off GFM tasklist support',
+ type: 'boolean'
+ },
+ smoothLivePreview: {
+ defaultValue: false,
+ describe: 'Prevents weird effects in live previews due to incomplete input',
+ type: 'boolean'
+ },
+ smartIndentationFix: {
+ defaultValue: false,
+ description: 'Tries to smartly fix identation in es6 strings',
+ type: 'boolean'
+ }
+ };
+ if (simple === false) {
+ return JSON.parse(JSON.stringify(defaultOptions));
+ }
+ var ret = {};
+ for (var opt in defaultOptions) {
+ if (defaultOptions.hasOwnProperty(opt)) {
+ ret[opt] = defaultOptions[opt].defaultValue;
+ }
+ }
+ return ret;
+}
+
+/**
+ * Created by Tivie on 06-01-2015.
+ */
+
+// Private properties
+var showdown = {},
+ parsers = {},
+ extensions = {},
+ globalOptions = getDefaultOpts(true),
+ flavor = {
+ github: {
+ omitExtraWLInCodeBlocks: true,
+ prefixHeaderId: 'user-content-',
+ simplifiedAutoLink: true,
+ literalMidWordUnderscores: true,
+ strikethrough: true,
+ tables: true,
+ tablesHeaderId: true,
+ ghCodeBlocks: true,
+ tasklists: true
+ },
+ vanilla: getDefaultOpts(true)
+ };
+
+/**
+ * helper namespace
+ * @type {{}}
+ */
+showdown.helper = {};
+
+/**
+ * TODO LEGACY SUPPORT CODE
+ * @type {{}}
+ */
+showdown.extensions = {};
+
+/**
+ * Set a global option
+ * @static
+ * @param {string} key
+ * @param {*} value
+ * @returns {showdown}
+ */
+showdown.setOption = function (key, value) {
+ 'use strict';
+ globalOptions[key] = value;
+ return this;
+};
+
+/**
+ * Get a global option
+ * @static
+ * @param {string} key
+ * @returns {*}
+ */
+showdown.getOption = function (key) {
+ 'use strict';
+ return globalOptions[key];
+};
+
+/**
+ * Get the global options
+ * @static
+ * @returns {{}}
+ */
+showdown.getOptions = function () {
+ 'use strict';
+ return globalOptions;
+};
+
+/**
+ * Reset global options to the default values
+ * @static
+ */
+showdown.resetOptions = function () {
+ 'use strict';
+ globalOptions = getDefaultOpts(true);
+};
+
+/**
+ * Set the flavor showdown should use as default
+ * @param {string} name
+ */
+showdown.setFlavor = function (name) {
+ 'use strict';
+ if (flavor.hasOwnProperty(name)) {
+ var preset = flavor[name];
+ for (var option in preset) {
+ if (preset.hasOwnProperty(option)) {
+ globalOptions[option] = preset[option];
+ }
+ }
+ }
+};
+
+/**
+ * Get the default options
+ * @static
+ * @param {boolean} [simple=true]
+ * @returns {{}}
+ */
+showdown.getDefaultOptions = function (simple) {
+ 'use strict';
+ return getDefaultOpts(simple);
+};
+
+/**
+ * Get or set a subParser
+ *
+ * subParser(name) - Get a registered subParser
+ * subParser(name, func) - Register a subParser
+ * @static
+ * @param {string} name
+ * @param {function} [func]
+ * @returns {*}
+ */
+showdown.subParser = function (name, func) {
+ 'use strict';
+ if (showdown.helper.isString(name)) {
+ if (typeof func !== 'undefined') {
+ parsers[name] = func;
+ } else {
+ if (parsers.hasOwnProperty(name)) {
+ return parsers[name];
+ } else {
+ throw Error('SubParser named ' + name + ' not registered!');
+ }
+ }
+ }
+};
+
+/**
+ * Gets or registers an extension
+ * @static
+ * @param {string} name
+ * @param {object|function=} ext
+ * @returns {*}
+ */
+showdown.extension = function (name, ext) {
+ 'use strict';
+
+ if (!showdown.helper.isString(name)) {
+ throw Error('Extension \'name\' must be a string');
+ }
+
+ name = showdown.helper.stdExtName(name);
+
+ // Getter
+ if (showdown.helper.isUndefined(ext)) {
+ if (!extensions.hasOwnProperty(name)) {
+ throw Error('Extension named ' + name + ' is not registered!');
+ }
+ return extensions[name];
+
+ // Setter
+ } else {
+ // Expand extension if it's wrapped in a function
+ if (typeof ext === 'function') {
+ ext = ext();
+ }
+
+ // Ensure extension is an array
+ if (!showdown.helper.isArray(ext)) {
+ ext = [ext];
+ }
+
+ var validExtension = validate(ext, name);
+
+ if (validExtension.valid) {
+ extensions[name] = ext;
+ } else {
+ throw Error(validExtension.error);
+ }
+ }
+};
+
+/**
+ * Gets all extensions registered
+ * @returns {{}}
+ */
+showdown.getAllExtensions = function () {
+ 'use strict';
+ return extensions;
+};
+
+/**
+ * Remove an extension
+ * @param {string} name
+ */
+showdown.removeExtension = function (name) {
+ 'use strict';
+ delete extensions[name];
+};
+
+/**
+ * Removes all extensions
+ */
+showdown.resetExtensions = function () {
+ 'use strict';
+ extensions = {};
+};
+
+/**
+ * Validate extension
+ * @param {array} extension
+ * @param {string} name
+ * @returns {{valid: boolean, error: string}}
+ */
+function validate(extension, name) {
+ 'use strict';
+
+ var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',
+ ret = {
+ valid: true,
+ error: ''
+ };
+
+ if (!showdown.helper.isArray(extension)) {
+ extension = [extension];
+ }
+
+ for (var i = 0; i < extension.length; ++i) {
+ var baseMsg = errMsg + ' sub-extension ' + i + ': ',
+ ext = extension[i];
+ if (typeof ext !== 'object') {
+ ret.valid = false;
+ ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';
+ return ret;
+ }
+
+ if (!showdown.helper.isString(ext.type)) {
+ ret.valid = false;
+ ret.error = baseMsg + 'property "type" must be a string, but ' + typeof ext.type + ' given';
+ return ret;
+ }
+
+ var type = ext.type = ext.type.toLowerCase();
+
+ // normalize extension type
+ if (type === 'language') {
+ type = ext.type = 'lang';
+ }
+
+ if (type === 'html') {
+ type = ext.type = 'output';
+ }
+
+ if (type !== 'lang' && type !== 'output' && type !== 'listener') {
+ ret.valid = false;
+ ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"';
+ return ret;
+ }
+
+ if (type === 'listener') {
+ if (showdown.helper.isUndefined(ext.listeners)) {
+ ret.valid = false;
+ ret.error = baseMsg + '. Extensions of type "listener" must have a property called "listeners"';
+ return ret;
+ }
+ } else {
+ if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {
+ ret.valid = false;
+ ret.error = baseMsg + type + ' extensions must define either a "regex" property or a "filter" method';
+ return ret;
+ }
+ }
+
+ if (ext.listeners) {
+ if (typeof ext.listeners !== 'object') {
+ ret.valid = false;
+ ret.error = baseMsg + '"listeners" property must be an object but ' + typeof ext.listeners + ' given';
+ return ret;
+ }
+ for (var ln in ext.listeners) {
+ if (ext.listeners.hasOwnProperty(ln)) {
+ if (typeof ext.listeners[ln] !== 'function') {
+ ret.valid = false;
+ ret.error = baseMsg + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + ln +
+ ' must be a function but ' + typeof ext.listeners[ln] + ' given';
+ return ret;
+ }
+ }
+ }
+ }
+
+ if (ext.filter) {
+ if (typeof ext.filter !== 'function') {
+ ret.valid = false;
+ ret.error = baseMsg + '"filter" must be a function, but ' + typeof ext.filter + ' given';
+ return ret;
+ }
+ } else if (ext.regex) {
+ if (showdown.helper.isString(ext.regex)) {
+ ext.regex = new RegExp(ext.regex, 'g');
+ }
+ if (!ext.regex instanceof RegExp) {
+ ret.valid = false;
+ ret.error = baseMsg + '"regex" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';
+ return ret;
+ }
+ if (showdown.helper.isUndefined(ext.replace)) {
+ ret.valid = false;
+ ret.error = baseMsg + '"regex" extensions must implement a replace string or function';
+ return ret;
+ }
+ }
+ }
+ return ret;
+}
+
+/**
+ * Validate extension
+ * @param {object} ext
+ * @returns {boolean}
+ */
+showdown.validateExtension = function (ext) {
+ 'use strict';
+
+ var validateExtension = validate(ext, null);
+ if (!validateExtension.valid) {
+ console.warn(validateExtension.error);
+ return false;
+ }
+ return true;
+};
+
+/**
+ * showdownjs helper functions
+ */
+
+if (!showdown.hasOwnProperty('helper')) {
+ showdown.helper = {};
+}
+
+/**
+ * Check if var is string
+ * @static
+ * @param {string} a
+ * @returns {boolean}
+ */
+showdown.helper.isString = function isString(a) {
+ 'use strict';
+ return (typeof a === 'string' || a instanceof String);
+};
+
+/**
+ * Check if var is a function
+ * @static
+ * @param {string} a
+ * @returns {boolean}
+ */
+showdown.helper.isFunction = function isFunction(a) {
+ 'use strict';
+ var getType = {};
+ return a && getType.toString.call(a) === '[object Function]';
+};
+
+/**
+ * ForEach helper function
+ * @static
+ * @param {*} obj
+ * @param {function} callback
+ */
+showdown.helper.forEach = function forEach(obj, callback) {
+ 'use strict';
+ if (typeof obj.forEach === 'function') {
+ obj.forEach(callback);
+ } else {
+ for (var i = 0; i < obj.length; i++) {
+ callback(obj[i], i, obj);
+ }
+ }
+};
+
+/**
+ * isArray helper function
+ * @static
+ * @param {*} a
+ * @returns {boolean}
+ */
+showdown.helper.isArray = function isArray(a) {
+ 'use strict';
+ return a.constructor === Array;
+};
+
+/**
+ * Check if value is undefined
+ * @static
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
+ */
+showdown.helper.isUndefined = function isUndefined(value) {
+ 'use strict';
+ return typeof value === 'undefined';
+};
+
+/**
+ * Standardidize extension name
+ * @static
+ * @param {string} s extension name
+ * @returns {string}
+ */
+showdown.helper.stdExtName = function (s) {
+ 'use strict';
+ return s.replace(/[_-]||\s/g, '').toLowerCase();
+};
+
+function escapeCharactersCallback(wholeMatch, m1) {
+ 'use strict';
+ var charCodeToEscape = m1.charCodeAt(0);
+ return '~E' + charCodeToEscape + 'E';
+}
+
+/**
+ * Callback used to escape characters when passing through String.replace
+ * @static
+ * @param {string} wholeMatch
+ * @param {string} m1
+ * @returns {string}
+ */
+showdown.helper.escapeCharactersCallback = escapeCharactersCallback;
+
+/**
+ * Escape characters in a string
+ * @static
+ * @param {string} text
+ * @param {string} charsToEscape
+ * @param {boolean} afterBackslash
+ * @returns {XML|string|void|*}
+ */
+showdown.helper.escapeCharacters = function escapeCharacters(text, charsToEscape, afterBackslash) {
+ 'use strict';
+ // First we have to escape the escape characters so that
+ // we can build a character class out of them
+ var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])';
+
+ if (afterBackslash) {
+ regexString = '\\\\' + regexString;
+ }
+
+ var regex = new RegExp(regexString, 'g');
+ text = text.replace(regex, escapeCharactersCallback);
+
+ return text;
+};
+
+var rgxFindMatchPos = function (str, left, right, flags) {
+ 'use strict';
+ var f = flags || '',
+ g = f.indexOf('g') > -1,
+ x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),
+ l = new RegExp(left, f.replace(/g/g, '')),
+ pos = [],
+ t, s, m, start, end;
+
+ do {
+ t = 0;
+ while ((m = x.exec(str))) {
+ if (l.test(m[0])) {
+ if (!(t++)) {
+ s = x.lastIndex;
+ start = s - m[0].length;
+ }
+ } else if (t) {
+ if (!--t) {
+ end = m.index + m[0].length;
+ var obj = {
+ left: {start: start, end: s},
+ match: {start: s, end: m.index},
+ right: {start: m.index, end: end},
+ wholeMatch: {start: start, end: end}
+ };
+ pos.push(obj);
+ if (!g) {
+ return pos;
+ }
+ }
+ }
+ }
+ } while (t && (x.lastIndex = s));
+
+ return pos;
+};
+
+/**
+ * matchRecursiveRegExp
+ *
+ * (c) 2007 Steven Levithan
+ * MIT License
+ *
+ * Accepts a string to search, a left and right format delimiter
+ * as regex patterns, and optional regex flags. Returns an array
+ * of matches, allowing nested instances of left/right delimiters.
+ * Use the "g" flag to return all matches, otherwise only the
+ * first is returned. Be careful to ensure that the left and
+ * right format delimiters produce mutually exclusive matches.
+ * Backreferences are not supported within the right delimiter
+ * due to how it is internally combined with the left delimiter.
+ * When matching strings whose format delimiters are unbalanced
+ * to the left or right, the output is intentionally as a
+ * conventional regex library with recursion support would
+ * produce, e.g. "<" and ">" both produce ["x"] when using
+ * "<" and ">" as the delimiters (both strings contain a single,
+ * balanced instance of "").
+ *
+ * examples:
+ * matchRecursiveRegExp("test", "\\(", "\\)")
+ * returns: []
+ * matchRecursiveRegExp(">>t<>", "<", ">", "g")
+ * returns: ["t<>", ""]
+ * matchRecursiveRegExp(" test
", "]*>", "
", "gi")
+ * returns: ["test"]
+ */
+showdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {
+ 'use strict';
+
+ var matchPos = rgxFindMatchPos (str, left, right, flags),
+ results = [];
+
+ for (var i = 0; i < matchPos.length; ++i) {
+ results.push([
+ str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),
+ str.slice(matchPos[i].match.start, matchPos[i].match.end),
+ str.slice(matchPos[i].left.start, matchPos[i].left.end),
+ str.slice(matchPos[i].right.start, matchPos[i].right.end)
+ ]);
+ }
+ return results;
+};
+
+/**
+ *
+ * @param {string} str
+ * @param {string|function} replacement
+ * @param {string} left
+ * @param {string} right
+ * @param {string} flags
+ * @returns {string}
+ */
+showdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {
+ 'use strict';
+
+ if (!showdown.helper.isFunction(replacement)) {
+ var repStr = replacement;
+ replacement = function () {
+ return repStr;
+ };
+ }
+
+ var matchPos = rgxFindMatchPos(str, left, right, flags),
+ finalStr = str,
+ lng = matchPos.length;
+
+ if (lng > 0) {
+ var bits = [];
+ if (matchPos[0].wholeMatch.start !== 0) {
+ bits.push(str.slice(0, matchPos[0].wholeMatch.start));
+ }
+ for (var i = 0; i < lng; ++i) {
+ bits.push(
+ replacement(
+ str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),
+ str.slice(matchPos[i].match.start, matchPos[i].match.end),
+ str.slice(matchPos[i].left.start, matchPos[i].left.end),
+ str.slice(matchPos[i].right.start, matchPos[i].right.end)
+ )
+ );
+ if (i < lng - 1) {
+ bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));
+ }
+ }
+ if (matchPos[lng - 1].wholeMatch.end < str.length) {
+ bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));
+ }
+ finalStr = bits.join('');
+ }
+ return finalStr;
+};
+
+/**
+ * POLYFILLS
+ */
+if (showdown.helper.isUndefined(console)) {
+ console = {
+ warn: function (msg) {
+ 'use strict';
+ alert(msg);
+ },
+ log: function (msg) {
+ 'use strict';
+ alert(msg);
+ },
+ error: function (msg) {
+ 'use strict';
+ throw msg;
+ }
+ };
+}
+
+/**
+ * Created by Estevao on 31-05-2015.
+ */
+
+/**
+ * Showdown Converter class
+ * @class
+ * @param {object} [converterOptions]
+ * @returns {Converter}
+ */
+showdown.Converter = function (converterOptions) {
+ 'use strict';
+
+ var
+ /**
+ * Options used by this converter
+ * @private
+ * @type {{}}
+ */
+ options = {},
+
+ /**
+ * Language extensions used by this converter
+ * @private
+ * @type {Array}
+ */
+ langExtensions = [],
+
+ /**
+ * Output modifiers extensions used by this converter
+ * @private
+ * @type {Array}
+ */
+ outputModifiers = [],
+
+ /**
+ * Event listeners
+ * @private
+ * @type {{}}
+ */
+ listeners = {};
+
+ _constructor();
+
+ /**
+ * Converter constructor
+ * @private
+ */
+ function _constructor() {
+ converterOptions = converterOptions || {};
+
+ for (var gOpt in globalOptions) {
+ if (globalOptions.hasOwnProperty(gOpt)) {
+ options[gOpt] = globalOptions[gOpt];
+ }
+ }
+
+ // Merge options
+ if (typeof converterOptions === 'object') {
+ for (var opt in converterOptions) {
+ if (converterOptions.hasOwnProperty(opt)) {
+ options[opt] = converterOptions[opt];
+ }
+ }
+ } else {
+ throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +
+ ' was passed instead.');
+ }
+
+ if (options.extensions) {
+ showdown.helper.forEach(options.extensions, _parseExtension);
+ }
+ }
+
+ /**
+ * Parse extension
+ * @param {*} ext
+ * @param {string} [name='']
+ * @private
+ */
+ function _parseExtension(ext, name) {
+
+ name = name || null;
+ // If it's a string, the extension was previously loaded
+ if (showdown.helper.isString(ext)) {
+ ext = showdown.helper.stdExtName(ext);
+ name = ext;
+
+ // LEGACY_SUPPORT CODE
+ if (showdown.extensions[ext]) {
+ console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +
+ 'Please inform the developer that the extension should be updated!');
+ legacyExtensionLoading(showdown.extensions[ext], ext);
+ return;
+ // END LEGACY SUPPORT CODE
+
+ } else if (!showdown.helper.isUndefined(extensions[ext])) {
+ ext = extensions[ext];
+
+ } else {
+ throw Error('Extension "' + ext + '" could not be loaded. It was either not found or is not a valid extension.');
+ }
+ }
+
+ if (typeof ext === 'function') {
+ ext = ext();
+ }
+
+ if (!showdown.helper.isArray(ext)) {
+ ext = [ext];
+ }
+
+ var validExt = validate(ext, name);
+ if (!validExt.valid) {
+ throw Error(validExt.error);
+ }
+
+ for (var i = 0; i < ext.length; ++i) {
+ switch (ext[i].type) {
+
+ case 'lang':
+ langExtensions.push(ext[i]);
+ break;
+
+ case 'output':
+ outputModifiers.push(ext[i]);
+ break;
+ }
+ if (ext[i].hasOwnProperty(listeners)) {
+ for (var ln in ext[i].listeners) {
+ if (ext[i].listeners.hasOwnProperty(ln)) {
+ listen(ln, ext[i].listeners[ln]);
+ }
+ }
+ }
+ }
+
+ }
+
+ /**
+ * LEGACY_SUPPORT
+ * @param {*} ext
+ * @param {string} name
+ */
+ function legacyExtensionLoading(ext, name) {
+ if (typeof ext === 'function') {
+ ext = ext(new showdown.Converter());
+ }
+ if (!showdown.helper.isArray(ext)) {
+ ext = [ext];
+ }
+ var valid = validate(ext, name);
+
+ if (!valid.valid) {
+ throw Error(valid.error);
+ }
+
+ for (var i = 0; i < ext.length; ++i) {
+ switch (ext[i].type) {
+ case 'lang':
+ langExtensions.push(ext[i]);
+ break;
+ case 'output':
+ outputModifiers.push(ext[i]);
+ break;
+ default:// should never reach here
+ throw Error('Extension loader error: Type unrecognized!!!');
+ }
+ }
+ }
+
+ /**
+ * Listen to an event
+ * @param {string} name
+ * @param {function} callback
+ */
+ function listen(name, callback) {
+ if (!showdown.helper.isString(name)) {
+ throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');
+ }
+
+ if (typeof callback !== 'function') {
+ throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');
+ }
+
+ if (!listeners.hasOwnProperty(name)) {
+ listeners[name] = [];
+ }
+ listeners[name].push(callback);
+ }
+
+ function rTrimInputText(text) {
+ var rsp = text.match(/^\s*/)[0].length,
+ rgx = new RegExp('^\\s{0,' + rsp + '}', 'gm');
+ return text.replace(rgx, '');
+ }
+
+ /**
+ * Dispatch an event
+ * @private
+ * @param {string} evtName Event name
+ * @param {string} text Text
+ * @param {{}} options Converter Options
+ * @param {{}} globals
+ * @returns {string}
+ */
+ this._dispatch = function dispatch (evtName, text, options, globals) {
+ if (listeners.hasOwnProperty(evtName)) {
+ for (var ei = 0; ei < listeners[evtName].length; ++ei) {
+ var nText = listeners[evtName][ei](evtName, text, this, options, globals);
+ if (nText && typeof nText !== 'undefined') {
+ text = nText;
+ }
+ }
+ }
+ return text;
+ };
+
+ /**
+ * Listen to an event
+ * @param {string} name
+ * @param {function} callback
+ * @returns {showdown.Converter}
+ */
+ this.listen = function (name, callback) {
+ listen(name, callback);
+ return this;
+ };
+
+ /**
+ * Converts a markdown string into HTML
+ * @param {string} text
+ * @returns {*}
+ */
+ this.makeHtml = function (text) {
+ //check if text is not falsy
+ if (!text) {
+ return text;
+ }
+
+ var globals = {
+ gHtmlBlocks: [],
+ gHtmlMdBlocks: [],
+ gHtmlSpans: [],
+ gUrls: {},
+ gTitles: {},
+ gDimensions: {},
+ gListLevel: 0,
+ hashLinkCounts: {},
+ langExtensions: langExtensions,
+ outputModifiers: outputModifiers,
+ converter: this,
+ ghCodeBlocks: []
+ };
+
+ // attacklab: Replace ~ with ~T
+ // This lets us use tilde as an escape char to avoid md5 hashes
+ // The choice of character is arbitrary; anything that isn't
+ // magic in Markdown will work.
+ text = text.replace(/~/g, '~T');
+
+ // attacklab: Replace $ with ~D
+ // RegExp interprets $ as a special character
+ // when it's in a replacement string
+ text = text.replace(/\$/g, '~D');
+
+ // Standardize line endings
+ text = text.replace(/\r\n/g, '\n'); // DOS to Unix
+ text = text.replace(/\r/g, '\n'); // Mac to Unix
+
+ if (options.smartIndentationFix) {
+ text = rTrimInputText(text);
+ }
+
+ // Make sure text begins and ends with a couple of newlines:
+ //text = '\n\n' + text + '\n\n';
+ text = text;
+ // detab
+ text = showdown.subParser('detab')(text, options, globals);
+
+ // stripBlankLines
+ text = showdown.subParser('stripBlankLines')(text, options, globals);
+
+ //run languageExtensions
+ showdown.helper.forEach(langExtensions, function (ext) {
+ text = showdown.subParser('runExtension')(ext, text, options, globals);
+ });
+
+ // run the sub parsers
+ text = showdown.subParser('hashPreCodeTags')(text, options, globals);
+ text = showdown.subParser('githubCodeBlocks')(text, options, globals);
+ text = showdown.subParser('hashHTMLBlocks')(text, options, globals);
+ text = showdown.subParser('hashHTMLSpans')(text, options, globals);
+ text = showdown.subParser('stripLinkDefinitions')(text, options, globals);
+ text = showdown.subParser('blockGamut')(text, options, globals);
+ text = showdown.subParser('unhashHTMLSpans')(text, options, globals);
+ text = showdown.subParser('unescapeSpecialChars')(text, options, globals);
+
+ // attacklab: Restore dollar signs
+ text = text.replace(/~D/g, '$$');
+
+ // attacklab: Restore tildes
+ text = text.replace(/~T/g, '~');
+
+ // Run output modifiers
+ showdown.helper.forEach(outputModifiers, function (ext) {
+ text = showdown.subParser('runExtension')(ext, text, options, globals);
+ });
+ return text;
+ };
+
+ /**
+ * Set an option of this Converter instance
+ * @param {string} key
+ * @param {*} value
+ */
+ this.setOption = function (key, value) {
+ options[key] = value;
+ };
+
+ /**
+ * Get the option of this Converter instance
+ * @param {string} key
+ * @returns {*}
+ */
+ this.getOption = function (key) {
+ return options[key];
+ };
+
+ /**
+ * Get the options of this Converter instance
+ * @returns {{}}
+ */
+ this.getOptions = function () {
+ return options;
+ };
+
+ /**
+ * Add extension to THIS converter
+ * @param {{}} extension
+ * @param {string} [name=null]
+ */
+ this.addExtension = function (extension, name) {
+ name = name || null;
+ _parseExtension(extension, name);
+ };
+
+ /**
+ * Use a global registered extension with THIS converter
+ * @param {string} extensionName Name of the previously registered extension
+ */
+ this.useExtension = function (extensionName) {
+ _parseExtension(extensionName);
+ };
+
+ /**
+ * Set the flavor THIS converter should use
+ * @param {string} name
+ */
+ this.setFlavor = function (name) {
+ if (flavor.hasOwnProperty(name)) {
+ var preset = flavor[name];
+ for (var option in preset) {
+ if (preset.hasOwnProperty(option)) {
+ options[option] = preset[option];
+ }
+ }
+ }
+ };
+
+ /**
+ * Remove an extension from THIS converter.
+ * Note: This is a costly operation. It's better to initialize a new converter
+ * and specify the extensions you wish to use
+ * @param {Array} extension
+ */
+ this.removeExtension = function (extension) {
+ if (!showdown.helper.isArray(extension)) {
+ extension = [extension];
+ }
+ for (var a = 0; a < extension.length; ++a) {
+ var ext = extension[a];
+ for (var i = 0; i < langExtensions.length; ++i) {
+ if (langExtensions[i] === ext) {
+ langExtensions[i].splice(i, 1);
+ }
+ }
+ for (var ii = 0; ii < outputModifiers.length; ++i) {
+ if (outputModifiers[ii] === ext) {
+ outputModifiers[ii].splice(i, 1);
+ }
+ }
+ }
+ };
+
+ /**
+ * Get all extension of THIS converter
+ * @returns {{language: Array, output: Array}}
+ */
+ this.getAllExtensions = function () {
+ return {
+ language: langExtensions,
+ output: outputModifiers
+ };
+ };
+};
+
+/**
+ * Turn Markdown link shortcuts into XHTML tags.
+ */
+showdown.subParser('anchors', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('anchors.before', text, options, globals);
+
+ var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {
+ if (showdown.helper.isUndefined(m7)) {
+ m7 = '';
+ }
+ wholeMatch = m1;
+ var linkText = m2,
+ linkId = m3.toLowerCase(),
+ url = m4,
+ title = m7;
+
+ if (!url) {
+ if (!linkId) {
+ // lower-case and turn embedded newlines into spaces
+ linkId = linkText.toLowerCase().replace(/ ?\n/g, ' ');
+ }
+ url = '#' + linkId;
+
+ if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {
+ url = globals.gUrls[linkId];
+ if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {
+ title = globals.gTitles[linkId];
+ }
+ } else {
+ if (wholeMatch.search(/\(\s*\)$/m) > -1) {
+ // Special case for explicit empty url
+ url = '';
+ } else {
+ return wholeMatch;
+ }
+ }
+ }
+
+ url = showdown.helper.escapeCharacters(url, '*_', false);
+ var result = ' ' + linkText + ' ';
+
+ return result;
+ };
+
+ // First, handle reference-style links: [link text] [id]
+ /*
+ text = text.replace(/
+ ( // wrap whole match in $1
+ \[
+ (
+ (?:
+ \[[^\]]*\] // allow brackets nested one level
+ |
+ [^\[] // or anything else
+ )*
+ )
+ \]
+
+ [ ]? // one optional space
+ (?:\n[ ]*)? // one optional newline followed by spaces
+
+ \[
+ (.*?) // id = $3
+ \]
+ )()()()() // pad remaining backreferences
+ /g,_DoAnchors_callback);
+ */
+ text = text.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)][ ]?(?:\n[ ]*)?\[(.*?)])()()()()/g, writeAnchorTag);
+
+ //
+ // Next, inline-style links: [link text](url "optional title")
+ //
+
+ /*
+ text = text.replace(/
+ ( // wrap whole match in $1
+ \[
+ (
+ (?:
+ \[[^\]]*\] // allow brackets nested one level
+ |
+ [^\[\]] // or anything else
+ )
+ )
+ \]
+ \( // literal paren
+ [ \t]*
+ () // no id, so leave $3 empty
+ (.*?)>? // href = $4
+ [ \t]*
+ ( // $5
+ (['"]) // quote char = $6
+ (.*?) // Title = $7
+ \6 // matching quote
+ [ \t]* // ignore any spaces/tabs between closing quote and )
+ )? // title is optional
+ \)
+ )
+ /g,writeAnchorTag);
+ */
+ text = text.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)]\([ \t]*()(.*?(?:\(.*?\).*?)?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,
+ writeAnchorTag);
+
+ //
+ // Last, handle reference-style shortcuts: [link text]
+ // These must come last in case you've also got [link test][1]
+ // or [link test](/foo)
+ //
+
+ /*
+ text = text.replace(/
+ ( // wrap whole match in $1
+ \[
+ ([^\[\]]+) // link text = $2; can't contain '[' or ']'
+ \]
+ )()()()()() // pad rest of backreferences
+ /g, writeAnchorTag);
+ */
+ text = text.replace(/(\[([^\[\]]+)])()()()()()/g, writeAnchorTag);
+
+ text = globals.converter._dispatch('anchors.after', text, options, globals);
+ return text;
+});
+
+showdown.subParser('autoLinks', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('autoLinks.before', text, options, globals);
+
+ var simpleURLRegex = /\b(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+)(?=\s|$)(?!["<>])/gi,
+ delimUrlRegex = /<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)>/gi,
+ simpleMailRegex = /(?:^|[ \n\t])([A-Za-z0-9!#$%&'*+-/=?^_`\{|}~\.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?:$|[ \n\t])/gi,
+ delimMailRegex = /<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;
+
+ text = text.replace(delimUrlRegex, replaceLink);
+ text = text.replace(delimMailRegex, replaceMail);
+ // simpleURLRegex = /\b(((https?|ftp|dict):\/\/|www\.)[-.+~:?#@!$&'()*,;=[\]\w]+)\b/gi,
+ // Email addresses:
+
+ if (options.simplifiedAutoLink) {
+ text = text.replace(simpleURLRegex, replaceLink);
+ text = text.replace(simpleMailRegex, replaceMail);
+ }
+
+ function replaceLink(wm, link) {
+ var lnkTxt = link;
+ if (/^www\./i.test(link)) {
+ link = link.replace(/^www\./i, 'http://www.');
+ }
+ return '' + lnkTxt + ' ';
+ }
+
+ function replaceMail(wholeMatch, m1) {
+ var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);
+ return showdown.subParser('encodeEmailAddress')(unescapedStr);
+ }
+
+ text = globals.converter._dispatch('autoLinks.after', text, options, globals);
+
+ return text;
+});
+
+/**
+ * These are all the transformations that form block-level
+ * tags like paragraphs, headers, and list items.
+ */
+showdown.subParser('blockGamut', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('blockGamut.before', text, options, globals);
+
+ // we parse blockquotes first so that we can have headings and hrs
+ // inside blockquotes
+ text = showdown.subParser('blockQuotes')(text, options, globals);
+ text = showdown.subParser('headers')(text, options, globals);
+
+ // Do Horizontal Rules:
+ var key = showdown.subParser('hashBlock')(' ', options, globals);
+ text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, key);
+ text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, key);
+ text = text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm, key);
+
+ text = showdown.subParser('lists')(text, options, globals);
+ text = showdown.subParser('codeBlocks')(text, options, globals);
+ text = showdown.subParser('tables')(text, options, globals);
+
+ // We already ran _HashHTMLBlocks() before, in Markdown(), but that
+ // was to escape raw HTML in the original Markdown source. This time,
+ // we're escaping the markup we've just created, so that we don't wrap
+ // tags around block-level tags.
+ text = showdown.subParser('hashHTMLBlocks')(text, options, globals);
+ text = showdown.subParser('paragraphs')(text, options, globals);
+
+ text = globals.converter._dispatch('blockGamut.after', text, options, globals);
+
+ return text;
+});
+
+showdown.subParser('blockQuotes', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('blockQuotes.before', text, options, globals);
+ /*
+ text = text.replace(/
+ ( // Wrap whole match in $1
+ (
+ ^[ \t]*>[ \t]? // '>' at the start of a line
+ .+\n // rest of the first line
+ (.+\n)* // subsequent consecutive lines
+ \n* // blanks
+ )+
+ )
+ /gm, function(){...});
+ */
+
+ text = text.replace(/((^[ \t]{0,3}>[ \t]?.+\n(.+\n)*\n*)+)/gm, function (wholeMatch, m1) {
+ var bq = m1;
+
+ // attacklab: hack around Konqueror 3.5.4 bug:
+ // "----------bug".replace(/^-/g,"") == "bug"
+ bq = bq.replace(/^[ \t]*>[ \t]?/gm, '~0'); // trim one level of quoting
+
+ // attacklab: clean up hack
+ bq = bq.replace(/~0/g, '');
+
+ bq = bq.replace(/^[ \t]+$/gm, ''); // trim whitespace-only lines
+ bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);
+ bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse
+
+ bq = bq.replace(/(^|\n)/g, '$1 ');
+ // These leading spaces screw with
content, so we need to fix that:
+ bq = bq.replace(/(\s*[^\r]+?<\/pre>)/gm, function (wholeMatch, m1) {
+ var pre = m1;
+ // attacklab: hack around Konqueror 3.5.4 bug:
+ pre = pre.replace(/^ /mg, '~0');
+ pre = pre.replace(/~0/g, '');
+ return pre;
+ });
+
+ return showdown.subParser('hashBlock')('\n' + bq + '\n ', options, globals);
+ });
+
+ text = globals.converter._dispatch('blockQuotes.after', text, options, globals);
+ return text;
+});
+
+/**
+ * Process Markdown `` blocks.
+ */
+showdown.subParser('codeBlocks', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('codeBlocks.before', text, options, globals);
+ /*
+ text = text.replace(text,
+ /(?:\n\n|^)
+ ( // $1 = the code block -- one or more lines, starting with a space/tab
+ (?:
+ (?:[ ]{4}|\t) // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
+ .*\n+
+ )+
+ )
+ (\n*[ ]{0,3}[^ \t\n]|(?=~0)) // attacklab: g_tab_width
+ /g,function(){...});
+ */
+
+ // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
+ text += '~0';
+
+ var pattern = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;
+ text = text.replace(pattern, function (wholeMatch, m1, m2) {
+ var codeblock = m1,
+ nextChar = m2,
+ end = '\n';
+
+ codeblock = showdown.subParser('outdent')(codeblock);
+ codeblock = showdown.subParser('encodeCode')(codeblock);
+ codeblock = showdown.subParser('detab')(codeblock);
+ codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines
+ codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing newlines
+
+ if (options.omitExtraWLInCodeBlocks) {
+ end = '';
+ }
+
+ codeblock = '' + codeblock + end + ' ';
+
+ return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;
+ });
+
+ // attacklab: strip sentinel
+ text = text.replace(/~0/, '');
+
+ text = globals.converter._dispatch('codeBlocks.after', text, options, globals);
+ return text;
+});
+
+/**
+ *
+ * * Backtick quotes are used for spans.
+ *
+ * * You can use multiple backticks as the delimiters if you want to
+ * include literal backticks in the code span. So, this input:
+ *
+ * Just type ``foo `bar` baz`` at the prompt.
+ *
+ * Will translate to:
+ *
+ * Just type foo `bar` baz at the prompt.
+ *
+ * There's no arbitrary limit to the number of backticks you
+ * can use as delimters. If you need three consecutive backticks
+ * in your code, use four for delimiters, etc.
+ *
+ * * You can use spaces to get literal backticks at the edges:
+ *
+ * ... type `` `bar` `` ...
+ *
+ * Turns to:
+ *
+ * ... type `bar` ...
+ */
+showdown.subParser('codeSpans', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('codeSpans.before', text, options, globals);
+
+ /*
+ text = text.replace(/
+ (^|[^\\]) // Character before opening ` can't be a backslash
+ (`+) // $2 = Opening run of `
+ ( // $3 = The code block
+ [^\r]*?
+ [^`] // attacklab: work around lack of lookbehind
+ )
+ \2 // Matching closer
+ (?!`)
+ /gm, function(){...});
+ */
+
+ if (typeof(text) === 'undefined') {
+ text = '';
+ }
+ text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,
+ function (wholeMatch, m1, m2, m3) {
+ var c = m3;
+ c = c.replace(/^([ \t]*)/g, ''); // leading whitespace
+ c = c.replace(/[ \t]*$/g, ''); // trailing whitespace
+ c = showdown.subParser('encodeCode')(c);
+ return m1 + '' + c + '';
+ }
+ );
+
+ text = globals.converter._dispatch('codeSpans.after', text, options, globals);
+ return text;
+});
+
+/**
+ * Convert all tabs to spaces
+ */
+showdown.subParser('detab', function (text) {
+ 'use strict';
+
+ // expand first n-1 tabs
+ text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width
+
+ // replace the nth with two sentinels
+ text = text.replace(/\t/g, '~A~B');
+
+ // use the sentinel to anchor our regex so it doesn't explode
+ text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) {
+ var leadingText = m1,
+ numSpaces = 4 - leadingText.length % 4; // g_tab_width
+
+ // there *must* be a better way to do this:
+ for (var i = 0; i < numSpaces; i++) {
+ leadingText += ' ';
+ }
+
+ return leadingText;
+ });
+
+ // clean up sentinels
+ text = text.replace(/~A/g, ' '); // g_tab_width
+ text = text.replace(/~B/g, '');
+
+ return text;
+
+});
+
+/**
+ * Smart processing for ampersands and angle brackets that need to be encoded.
+ */
+showdown.subParser('encodeAmpsAndAngles', function (text) {
+ 'use strict';
+ // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:
+ // http://bumppo.net/projects/amputator/
+ text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, '&');
+
+ // Encode naked <'s
+ text = text.replace(/<(?![a-z\/?\$!])/gi, '<');
+
+ return text;
+});
+
+/**
+ * Returns the string, with after processing the following backslash escape sequences.
+ *
+ * attacklab: The polite way to do this is with the new escapeCharacters() function:
+ *
+ * text = escapeCharacters(text,"\\",true);
+ * text = escapeCharacters(text,"`*_{}[]()>#+-.!",true);
+ *
+ * ...but we're sidestepping its use of the (slow) RegExp constructor
+ * as an optimization for Firefox. This function gets called a LOT.
+ */
+showdown.subParser('encodeBackslashEscapes', function (text) {
+ 'use strict';
+ text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback);
+ text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback);
+ return text;
+});
+
+/**
+ * Encode/escape certain characters inside Markdown code runs.
+ * The point is that in code, these characters are literals,
+ * and lose their special Markdown meanings.
+ */
+showdown.subParser('encodeCode', function (text) {
+ 'use strict';
+
+ // Encode all ampersands; HTML entities are not
+ // entities within a Markdown code span.
+ text = text.replace(/&/g, '&');
+
+ // Do the angle bracket song and dance:
+ text = text.replace(//g, '>');
+
+ // Now, escape characters that are magic in Markdown:
+ text = showdown.helper.escapeCharacters(text, '*_{}[]\\', false);
+
+ // jj the line above breaks this:
+ //---
+ //* Item
+ // 1. Subitem
+ // special char: *
+ // ---
+
+ return text;
+});
+
+/**
+ * Input: an email address, e.g. "foo@example.com"
+ *
+ * Output: the email address as a mailto link, with each character
+ * of the address encoded as either a decimal or hex entity, in
+ * the hopes of foiling most address harvesting spam bots. E.g.:
+ *
+ * foo
+ * @example.com
+ *
+ * Based on a filter by Matthew Wickline, posted to the BBEdit-Talk
+ * mailing list:
+ *
+ */
+showdown.subParser('encodeEmailAddress', function (addr) {
+ 'use strict';
+
+ var encode = [
+ function (ch) {
+ return '' + ch.charCodeAt(0) + ';';
+ },
+ function (ch) {
+ return '' + ch.charCodeAt(0).toString(16) + ';';
+ },
+ function (ch) {
+ return ch;
+ }
+ ];
+
+ addr = 'mailto:' + addr;
+
+ addr = addr.replace(/./g, function (ch) {
+ if (ch === '@') {
+ // this *must* be encoded. I insist.
+ ch = encode[Math.floor(Math.random() * 2)](ch);
+ } else if (ch !== ':') {
+ // leave ':' alone (to spot mailto: later)
+ var r = Math.random();
+ // roughly 10% raw, 45% hex, 45% dec
+ ch = (
+ r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)
+ );
+ }
+ return ch;
+ });
+
+ addr = '' + addr + ' ';
+ addr = addr.replace(/">.+:/g, '">'); // strip the mailto: from the visible part
+
+ return addr;
+});
+
+/**
+ * Within tags -- meaning between < and > -- encode [\ ` * _] so they
+ * don't conflict with their use in Markdown for code, italics and strong.
+ */
+showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) {
+ 'use strict';
+
+ // Build a regex to find HTML tags and comments. See Friedl's
+ // "Mastering Regular Expressions", 2nd Ed., pp. 200-201.
+ var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;
+
+ text = text.replace(regex, function (wholeMatch) {
+ var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, '$1`');
+ tag = showdown.helper.escapeCharacters(tag, '\\`*_', false);
+ return tag;
+ });
+
+ return text;
+});
+
+/**
+ * Handle github codeblocks prior to running HashHTML so that
+ * HTML contained within the codeblock gets escaped properly
+ * Example:
+ * ```ruby
+ * def hello_world(x)
+ * puts "Hello, #{x}"
+ * end
+ * ```
+ */
+showdown.subParser('githubCodeBlocks', function (text, options, globals) {
+ 'use strict';
+
+ // early exit if option is not enabled
+ if (!options.ghCodeBlocks) {
+ return text;
+ }
+
+ text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);
+
+ text += '~0';
+
+ text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, function (wholeMatch, language, codeblock) {
+ var end = (options.omitExtraWLInCodeBlocks) ? '' : '\n';
+
+ // First parse the github code block
+ codeblock = showdown.subParser('encodeCode')(codeblock);
+ codeblock = showdown.subParser('detab')(codeblock);
+ codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines
+ codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace
+
+ codeblock = '' + codeblock + end + ' ';
+
+ codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);
+
+ // Since GHCodeblocks can be false positives, we need to
+ // store the primitive text and the parsed text in a global var,
+ // and then return a token
+ return '\n\n~G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n';
+ });
+
+ // attacklab: strip sentinel
+ text = text.replace(/~0/, '');
+
+ return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);
+});
+
+showdown.subParser('hashBlock', function (text, options, globals) {
+ 'use strict';
+ text = text.replace(/(^\n+|\n+$)/g, '');
+ return '\n\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n';
+});
+
+showdown.subParser('hashElement', function (text, options, globals) {
+ 'use strict';
+
+ return function (wholeMatch, m1) {
+ var blockText = m1;
+
+ // Undo double lines
+ blockText = blockText.replace(/\n\n/g, '\n');
+ blockText = blockText.replace(/^\n/, '');
+
+ // strip trailing blank lines
+ blockText = blockText.replace(/\n+$/g, '');
+
+ // Replace the element text with a marker ("~KxK" where x is its key)
+ blockText = '\n\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n';
+
+ return blockText;
+ };
+});
+
+showdown.subParser('hashHTMLBlocks', function (text, options, globals) {
+ 'use strict';
+
+ var blockTags = [
+ 'pre',
+ 'div',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'blockquote',
+ 'table',
+ 'dl',
+ 'ol',
+ 'ul',
+ 'script',
+ 'noscript',
+ 'form',
+ 'fieldset',
+ 'iframe',
+ 'math',
+ 'style',
+ 'section',
+ 'header',
+ 'footer',
+ 'nav',
+ 'article',
+ 'aside',
+ 'address',
+ 'audio',
+ 'canvas',
+ 'figure',
+ 'hgroup',
+ 'output',
+ 'video',
+ 'p'
+ ],
+ repFunc = function (wholeMatch, match, left, right) {
+ var txt = wholeMatch;
+ // check if this html element is marked as markdown
+ // if so, it's contents should be parsed as markdown
+ if (left.search(/\bmarkdown\b/) !== -1) {
+ txt = left + globals.converter.makeHtml(match) + right;
+ }
+ return '\n\n~K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\n\n';
+ };
+
+ for (var i = 0; i < blockTags.length; ++i) {
+ text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^(?: |\\t){0,3}<' + blockTags[i] + '\\b[^>]*>', '' + blockTags[i] + '>', 'gim');
+ }
+
+ // HR SPECIAL CASE
+ text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,
+ showdown.subParser('hashElement')(text, options, globals));
+
+ // Special case for standalone HTML comments:
+ text = text.replace(/()/g,
+ showdown.subParser('hashElement')(text, options, globals));
+
+ // PHP and ASP-style processor instructions (...?> and <%...%>)
+ text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,
+ showdown.subParser('hashElement')(text, options, globals));
+ return text;
+});
+
+/**
+ * Hash span elements that should not be parsed as markdown
+ */
+showdown.subParser('hashHTMLSpans', function (text, config, globals) {
+ 'use strict';
+
+ var matches = showdown.helper.matchRecursiveRegExp(text, ']*>', '', 'gi');
+
+ for (var i = 0; i < matches.length; ++i) {
+ text = text.replace(matches[i][0], '~L' + (globals.gHtmlSpans.push(matches[i][0]) - 1) + 'L');
+ }
+ return text;
+});
+
+/**
+ * Unhash HTML spans
+ */
+showdown.subParser('unhashHTMLSpans', function (text, config, globals) {
+ 'use strict';
+
+ for (var i = 0; i < globals.gHtmlSpans.length; ++i) {
+ text = text.replace('~L' + i + 'L', globals.gHtmlSpans[i]);
+ }
+
+ return text;
+});
+
+/**
+ * Hash span elements that should not be parsed as markdown
+ */
+showdown.subParser('hashPreCodeTags', function (text, config, globals) {
+ 'use strict';
+
+ var repFunc = function (wholeMatch, match, left, right) {
+ // encode html entities
+ var codeblock = left + showdown.subParser('encodeCode')(match) + right;
+ return '\n\n~G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n';
+ };
+
+ text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^(?: |\\t){0,3}]*>\\s*]*>', '^(?: |\\t){0,3}\\s* ', 'gim');
+ return text;
+});
+
+showdown.subParser('headers', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('headers.before', text, options, globals);
+
+ var prefixHeader = options.prefixHeaderId,
+ headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),
+
+ // Set text-style headers:
+ // Header 1
+ // ========
+ //
+ // Header 2
+ // --------
+ //
+ setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm,
+ setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm;
+
+ text = text.replace(setextRegexH1, function (wholeMatch, m1) {
+
+ var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),
+ hID = (options.noHeaderId) ? '' : ' id="' + headerId(m1) + '"',
+ hLevel = headerLevelStart,
+ hashBlock = '' + spanGamut + ' ';
+ return showdown.subParser('hashBlock')(hashBlock, options, globals);
+ });
+
+ text = text.replace(setextRegexH2, function (matchFound, m1) {
+ var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),
+ hID = (options.noHeaderId) ? '' : ' id="' + headerId(m1) + '"',
+ hLevel = headerLevelStart + 1,
+ hashBlock = '' + spanGamut + ' ';
+ return showdown.subParser('hashBlock')(hashBlock, options, globals);
+ });
+
+ // atx-style headers:
+ // # Header 1
+ // ## Header 2
+ // ## Header 2 with closing hashes ##
+ // ...
+ // ###### Header 6
+ //
+ text = text.replace(/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm, function (wholeMatch, m1, m2) {
+ var span = showdown.subParser('spanGamut')(m2, options, globals),
+ hID = (options.noHeaderId) ? '' : ' id="' + headerId(m2) + '"',
+ hLevel = headerLevelStart - 1 + m1.length,
+ header = '' + span + ' ';
+
+ return showdown.subParser('hashBlock')(header, options, globals);
+ });
+
+ function headerId(m) {
+ var title, escapedId = m.replace(/[^\w]/g, '').toLowerCase();
+
+ if (globals.hashLinkCounts[escapedId]) {
+ title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);
+ } else {
+ title = escapedId;
+ globals.hashLinkCounts[escapedId] = 1;
+ }
+
+ // Prefix id to prevent causing inadvertent pre-existing style matches.
+ if (prefixHeader === true) {
+ prefixHeader = 'section';
+ }
+
+ if (showdown.helper.isString(prefixHeader)) {
+ return prefixHeader + title;
+ }
+ return title;
+ }
+
+ text = globals.converter._dispatch('headers.after', text, options, globals);
+ return text;
+});
+
+/**
+ * Turn Markdown image shortcuts into tags.
+ */
+showdown.subParser('images', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('images.before', text, options, globals);
+
+ var inlineRegExp = /!\[(.*?)]\s?\([ \t]*()(\S+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(['"])(.*?)\6[ \t]*)?\)/g,
+ referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[(.*?)]()()()()()/g;
+
+ function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {
+
+ var gUrls = globals.gUrls,
+ gTitles = globals.gTitles,
+ gDims = globals.gDimensions;
+
+ linkId = linkId.toLowerCase();
+
+ if (!title) {
+ title = '';
+ }
+
+ if (url === '' || url === null) {
+ if (linkId === '' || linkId === null) {
+ // lower-case and turn embedded newlines into spaces
+ linkId = altText.toLowerCase().replace(/ ?\n/g, ' ');
+ }
+ url = '#' + linkId;
+
+ if (!showdown.helper.isUndefined(gUrls[linkId])) {
+ url = gUrls[linkId];
+ if (!showdown.helper.isUndefined(gTitles[linkId])) {
+ title = gTitles[linkId];
+ }
+ if (!showdown.helper.isUndefined(gDims[linkId])) {
+ width = gDims[linkId].width;
+ height = gDims[linkId].height;
+ }
+ } else {
+ return wholeMatch;
+ }
+ }
+
+ altText = altText.replace(/"/g, '"');
+ altText = showdown.helper.escapeCharacters(altText, '*_', false);
+ url = showdown.helper.escapeCharacters(url, '*_', false);
+ var result = ' ';
+ return result;
+ }
+
+ // First, handle reference-style labeled images: ![alt text][id]
+ text = text.replace(referenceRegExp, writeImageTag);
+
+ // Next, handle inline images: 
+ text = text.replace(inlineRegExp, writeImageTag);
+
+ text = globals.converter._dispatch('images.after', text, options, globals);
+ return text;
+});
+
+showdown.subParser('italicsAndBold', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);
+
+ if (options.literalMidWordUnderscores) {
+ //underscores
+ // Since we are consuming a \s character, we need to add it
+ text = text.replace(/(^|\s|>|\b)__(?=\S)([\s\S]+?)__(?=\b|<|\s|$)/gm, '$1$2 ');
+ text = text.replace(/(^|\s|>|\b)_(?=\S)([\s\S]+?)_(?=\b|<|\s|$)/gm, '$1$2 ');
+ //asterisks
+ text = text.replace(/(\*\*)(?=\S)([^\r]*?\S[*]*)\1/g, '$2 ');
+ text = text.replace(/(\*)(?=\S)([^\r]*?\S)\1/g, '$2 ');
+
+ } else {
+ // must go first:
+ text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, '$2 ');
+ text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, '$2 ');
+ }
+
+ text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);
+ return text;
+});
+
+/**
+ * Form HTML ordered (numbered) and unordered (bulleted) lists.
+ */
+showdown.subParser('lists', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('lists.before', text, options, globals);
+ /**
+ * Process the contents of a single ordered or unordered list, splitting it
+ * into individual list items.
+ * @param {string} listStr
+ * @param {boolean} trimTrailing
+ * @returns {string}
+ */
+ function processListItems (listStr, trimTrailing) {
+ // The $g_list_level global keeps track of when we're inside a list.
+ // Each time we enter a list, we increment it; when we leave a list,
+ // we decrement. If it's zero, we're not in a list anymore.
+ //
+ // We do this because when we're not inside a list, we want to treat
+ // something like this:
+ //
+ // I recommend upgrading to version
+ // 8. Oops, now this line is treated
+ // as a sub-list.
+ //
+ // As a single paragraph, despite the fact that the second line starts
+ // with a digit-period-space sequence.
+ //
+ // Whereas when we're inside a list (or sub-list), that line will be
+ // treated as the start of a sub-list. What a kludge, huh? This is
+ // an aspect of Markdown's syntax that's hard to parse perfectly
+ // without resorting to mind-reading. Perhaps the solution is to
+ // change the syntax rules such that sub-lists must start with a
+ // starting cardinal number; e.g. "1." or "a.".
+ globals.gListLevel++;
+
+ // trim trailing blank lines:
+ listStr = listStr.replace(/\n{2,}$/, '\n');
+
+ // attacklab: add sentinel to emulate \z
+ listStr += '~0';
+
+ var rgx = /(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,
+ isParagraphed = (/\n[ \t]*\n(?!~0)/.test(listStr));
+
+ listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {
+ checked = (checked && checked.trim() !== '');
+ var item = showdown.subParser('outdent')(m4, options, globals),
+ bulletStyle = '';
+
+ // Support for github tasklists
+ if (taskbtn && options.tasklists) {
+ bulletStyle = ' class="task-list-item" style="list-style-type: none;"';
+ item = item.replace(/^[ \t]*\[(x|X| )?]/m, function () {
+ var otp = ' ';
+ return otp;
+ });
+ }
+ // m1 - Leading line or
+ // Has a double return (multi paragraph) or
+ // Has sublist
+ if (m1 || (item.search(/\n{2,}/) > -1)) {
+ item = showdown.subParser('githubCodeBlocks')(item, options, globals);
+ item = showdown.subParser('blockGamut')(item, options, globals);
+ } else {
+ // Recursion for sub-lists:
+ item = showdown.subParser('lists')(item, options, globals);
+ item = item.replace(/\n$/, ''); // chomp(item)
+ if (isParagraphed) {
+ item = showdown.subParser('paragraphs')(item, options, globals);
+ } else {
+ item = showdown.subParser('spanGamut')(item, options, globals);
+ }
+ }
+ item = '\n' + item + ' \n';
+ return item;
+ });
+
+ // attacklab: strip sentinel
+ listStr = listStr.replace(/~0/g, '');
+
+ globals.gListLevel--;
+
+ if (trimTrailing) {
+ listStr = listStr.replace(/\s+$/, '');
+ }
+
+ return listStr;
+ }
+
+ /**
+ * Check and parse consecutive lists (better fix for issue #142)
+ * @param {string} list
+ * @param {string} listType
+ * @param {boolean} trimTrailing
+ * @returns {string}
+ */
+ function parseConsecutiveLists(list, listType, trimTrailing) {
+ // check if we caught 2 or more consecutive lists by mistake
+ // we use the counterRgx, meaning if listType is UL we look for UL and vice versa
+ var counterRxg = (listType === 'ul') ? /^ {0,2}\d+\.[ \t]/gm : /^ {0,2}[*+-][ \t]/gm,
+ subLists = [],
+ result = '';
+
+ if (list.search(counterRxg) !== -1) {
+ (function parseCL(txt) {
+ var pos = txt.search(counterRxg);
+ if (pos !== -1) {
+ // slice
+ result += '\n\n<' + listType + '>' + processListItems(txt.slice(0, pos), !!trimTrailing) + '' + listType + '>\n\n';
+
+ // invert counterType and listType
+ listType = (listType === 'ul') ? 'ol' : 'ul';
+ counterRxg = (listType === 'ul') ? /^ {0,2}\d+\.[ \t]/gm : /^ {0,2}[*+-][ \t]/gm;
+
+ //recurse
+ parseCL(txt.slice(pos));
+ } else {
+ result += '\n\n<' + listType + '>' + processListItems(txt, !!trimTrailing) + '' + listType + '>\n\n';
+ }
+ })(list);
+ for (var i = 0; i < subLists.length; ++i) {
+
+ }
+ } else {
+ result = '\n\n<' + listType + '>' + processListItems(list, !!trimTrailing) + '' + listType + '>\n\n';
+ }
+
+ return result;
+ }
+
+ // attacklab: add sentinel to hack around khtml/safari bug:
+ // http://bugs.webkit.org/show_bug.cgi?id=11231
+ text += '~0';
+
+ // Re-usable pattern to match any entire ul or ol list:
+ var wholeList = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;
+
+ if (globals.gListLevel) {
+ text = text.replace(wholeList, function (wholeMatch, list, m2) {
+ var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';
+ return parseConsecutiveLists(list, listType, true);
+ });
+ } else {
+ wholeList = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;
+ //wholeList = /(\n\n|^\n?)( {0,3}([*+-]|\d+\.)[ \t]+[\s\S]+?)(?=(~0)|(\n\n(?!\t| {2,}| {0,3}([*+-]|\d+\.)[ \t])))/g;
+ text = text.replace(wholeList, function (wholeMatch, m1, list, m3) {
+
+ var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';
+ return parseConsecutiveLists(list, listType);
+ });
+ }
+
+ // attacklab: strip sentinel
+ text = text.replace(/~0/, '');
+
+ text = globals.converter._dispatch('lists.after', text, options, globals);
+ return text;
+});
+
+/**
+ * Remove one level of line-leading tabs or spaces
+ */
+showdown.subParser('outdent', function (text) {
+ 'use strict';
+
+ // attacklab: hack around Konqueror 3.5.4 bug:
+ // "----------bug".replace(/^-/g,"") == "bug"
+ text = text.replace(/^(\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width
+
+ // attacklab: clean up hack
+ text = text.replace(/~0/g, '');
+
+ return text;
+});
+
+/**
+ *
+ */
+showdown.subParser('paragraphs', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('paragraphs.before', text, options, globals);
+ // Strip leading and trailing lines:
+ text = text.replace(/^\n+/g, '');
+ text = text.replace(/\n+$/g, '');
+
+ var grafs = text.split(/\n{2,}/g),
+ grafsOut = [],
+ end = grafs.length; // Wrap tags
+
+ for (var i = 0; i < end; i++) {
+ var str = grafs[i];
+ // if this is an HTML marker, copy it
+ if (str.search(/~(K|G)(\d+)\1/g) >= 0) {
+ grafsOut.push(str);
+ } else {
+ str = showdown.subParser('spanGamut')(str, options, globals);
+ str = str.replace(/^([ \t]*)/g, '
');
+ str += '
';
+ grafsOut.push(str);
+ }
+ }
+
+ /** Unhashify HTML blocks */
+ end = grafsOut.length;
+ for (i = 0; i < end; i++) {
+ var blockText = '',
+ grafsOutIt = grafsOut[i],
+ codeFlag = false;
+ // if this is a marker for an html block...
+ while (grafsOutIt.search(/~(K|G)(\d+)\1/) >= 0) {
+ var delim = RegExp.$1,
+ num = RegExp.$2;
+
+ if (delim === 'K') {
+ blockText = globals.gHtmlBlocks[num];
+ } else {
+ // we need to check if ghBlock is a false positive
+ if (codeFlag) {
+ // use encoded version of all text
+ blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text);
+ } else {
+ blockText = globals.ghCodeBlocks[num].codeblock;
+ }
+ }
+ blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs
+
+ grafsOutIt = grafsOutIt.replace(/(\n\n)?~(K|G)\d+\2(\n\n)?/, blockText);
+ // Check if grafsOutIt is a pre->code
+ if (/^]*>\s*]*>/.test(grafsOutIt)) {
+ codeFlag = true;
+ }
+ }
+ grafsOut[i] = grafsOutIt;
+ }
+ text = grafsOut.join('\n\n');
+ // Strip leading and trailing lines:
+ text = text.replace(/^\n+/g, '');
+ text = text.replace(/\n+$/g, '');
+ return globals.converter._dispatch('paragraphs.after', text, options, globals);
+});
+
+/**
+ * Run extension
+ */
+showdown.subParser('runExtension', function (ext, text, options, globals) {
+ 'use strict';
+
+ if (ext.filter) {
+ text = ext.filter(text, globals.converter, options);
+
+ } else if (ext.regex) {
+ // TODO remove this when old extension loading mechanism is deprecated
+ var re = ext.regex;
+ if (!re instanceof RegExp) {
+ re = new RegExp(re, 'g');
+ }
+ text = text.replace(re, ext.replace);
+ }
+
+ return text;
+});
+
+/**
+ * These are all the transformations that occur *within* block-level
+ * tags like paragraphs, headers, and list items.
+ */
+showdown.subParser('spanGamut', function (text, options, globals) {
+ 'use strict';
+
+ text = globals.converter._dispatch('spanGamut.before', text, options, globals);
+ text = showdown.subParser('codeSpans')(text, options, globals);
+ text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);
+ text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);
+
+ // Process anchor and image tags. Images must come first,
+ // because ![foo][f] looks like an anchor.
+ text = showdown.subParser('images')(text, options, globals);
+ text = showdown.subParser('anchors')(text, options, globals);
+
+ // Make links out of things like ` `
+ // Must come after _DoAnchors(), because you can use < and >
+ // delimiters in inline links like [this]().
+ text = showdown.subParser('autoLinks')(text, options, globals);
+ text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);
+ text = showdown.subParser('italicsAndBold')(text, options, globals);
+ text = showdown.subParser('strikethrough')(text, options, globals);
+
+ // Do hard breaks:
+ text = text.replace(/ +\n/g, ' \n');
+
+ text = globals.converter._dispatch('spanGamut.after', text, options, globals);
+ return text;
+});
+
+showdown.subParser('strikethrough', function (text, options, globals) {
+ 'use strict';
+
+ if (options.strikethrough) {
+ text = globals.converter._dispatch('strikethrough.before', text, options, globals);
+ text = text.replace(/(?:~T){2}([\s\S]+?)(?:~T){2}/g, '$1');
+ text = globals.converter._dispatch('strikethrough.after', text, options, globals);
+ }
+
+ return text;
+});
+
+/**
+ * Strip any lines consisting only of spaces and tabs.
+ * This makes subsequent regexs easier to write, because we can
+ * match consecutive blank lines with /\n+/ instead of something
+ * contorted like /[ \t]*\n+/
+ */
+showdown.subParser('stripBlankLines', function (text) {
+ 'use strict';
+ return text.replace(/^[ \t]+$/mg, '');
+});
+
+/**
+ * Strips link definitions from text, stores the URLs and titles in
+ * hash references.
+ * Link defs are in the form: ^[id]: url "optional title"
+ *
+ * ^[ ]{0,3}\[(.+)\]: // id = $1 attacklab: g_tab_width - 1
+ * [ \t]*
+ * \n? // maybe *one* newline
+ * [ \t]*
+ * (\S+?)>? // url = $2
+ * [ \t]*
+ * \n? // maybe one newline
+ * [ \t]*
+ * (?:
+ * (\n*) // any lines skipped = $3 attacklab: lookbehind removed
+ * ["(]
+ * (.+?) // title = $4
+ * [")]
+ * [ \t]*
+ * )? // title is optional
+ * (?:\n+|$)
+ * /gm,
+ * function(){...});
+ *
+ */
+showdown.subParser('stripLinkDefinitions', function (text, options, globals) {
+ 'use strict';
+
+ var regex = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*(\S+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm;
+
+ // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
+ text += '~0';
+
+ text = text.replace(regex, function (wholeMatch, linkId, url, width, height, blankLines, title) {
+ linkId = linkId.toLowerCase();
+ globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url); // Link IDs are case-insensitive
+
+ if (blankLines) {
+ // Oops, found blank lines, so it's not a title.
+ // Put back the parenthetical statement we stole.
+ return blankLines + title;
+
+ } else {
+ if (title) {
+ globals.gTitles[linkId] = title.replace(/"|'/g, '"');
+ }
+ if (options.parseImgDimensions && width && height) {
+ globals.gDimensions[linkId] = {
+ width: width,
+ height: height
+ };
+ }
+ }
+ // Completely remove the definition from the text
+ return '';
+ });
+
+ // attacklab: strip sentinel
+ text = text.replace(/~0/, '');
+
+ return text;
+});
+
+showdown.subParser('tables', function (text, options, globals) {
+ 'use strict';
+
+ if (!options.tables) {
+ return text;
+ }
+
+ var tableRgx = /^[ \t]{0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|~0)/gm;
+
+ function parseStyles(sLine) {
+ if (/^:[ \t]*--*$/.test(sLine)) {
+ return ' style="text-align:left;"';
+ } else if (/^--*[ \t]*:[ \t]*$/.test(sLine)) {
+ return ' style="text-align:right;"';
+ } else if (/^:[ \t]*--*[ \t]*:$/.test(sLine)) {
+ return ' style="text-align:center;"';
+ } else {
+ return '';
+ }
+ }
+
+ function parseHeaders(header, style) {
+ var id = '';
+ header = header.trim();
+ if (options.tableHeaderId) {
+ id = ' id="' + header.replace(/ /g, '_').toLowerCase() + '"';
+ }
+ header = showdown.subParser('spanGamut')(header, options, globals);
+
+ return '' + header + ' \n';
+ }
+
+ function parseCells(cell, style) {
+ var subText = showdown.subParser('spanGamut')(cell, options, globals);
+ return '' + subText + ' \n';
+ }
+
+ function buildTable(headers, cells) {
+ var tb = '\n\n\n',
+ tblLgn = headers.length;
+
+ for (var i = 0; i < tblLgn; ++i) {
+ tb += headers[i];
+ }
+ tb += ' \n \n\n';
+
+ for (i = 0; i < cells.length; ++i) {
+ tb += '\n';
+ for (var ii = 0; ii < tblLgn; ++ii) {
+ tb += cells[i][ii];
+ }
+ tb += ' \n';
+ }
+ tb += ' \n
\n';
+ return tb;
+ }
+
+ text = globals.converter._dispatch('tables.before', text, options, globals);
+
+ text = text.replace(tableRgx, function (rawTable) {
+
+ var i, tableLines = rawTable.split('\n');
+
+ // strip wrong first and last column if wrapped tables are used
+ for (i = 0; i < tableLines.length; ++i) {
+ if (/^[ \t]{0,3}\|/.test(tableLines[i])) {
+ tableLines[i] = tableLines[i].replace(/^[ \t]{0,3}\|/, '');
+ }
+ if (/\|[ \t]*$/.test(tableLines[i])) {
+ tableLines[i] = tableLines[i].replace(/\|[ \t]*$/, '');
+ }
+ }
+
+ var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),
+ rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),
+ rawCells = [],
+ headers = [],
+ styles = [],
+ cells = [];
+
+ tableLines.shift();
+ tableLines.shift();
+
+ for (i = 0; i < tableLines.length; ++i) {
+ if (tableLines[i].trim() === '') {
+ continue;
+ }
+ rawCells.push(
+ tableLines[i]
+ .split('|')
+ .map(function (s) {
+ return s.trim();
+ })
+ );
+ }
+
+ if (rawHeaders.length < rawStyles.length) {
+ return rawTable;
+ }
+
+ for (i = 0; i < rawStyles.length; ++i) {
+ styles.push(parseStyles(rawStyles[i]));
+ }
+
+ for (i = 0; i < rawHeaders.length; ++i) {
+ if (showdown.helper.isUndefined(styles[i])) {
+ styles[i] = '';
+ }
+ headers.push(parseHeaders(rawHeaders[i], styles[i]));
+ }
+
+ for (i = 0; i < rawCells.length; ++i) {
+ var row = [];
+ for (var ii = 0; ii < headers.length; ++ii) {
+ if (showdown.helper.isUndefined(rawCells[i][ii])) {
+
+ }
+ row.push(parseCells(rawCells[i][ii], styles[ii]));
+ }
+ cells.push(row);
+ }
+
+ return buildTable(headers, cells);
+ });
+
+ text = globals.converter._dispatch('tables.after', text, options, globals);
+
+ return text;
+});
+
+/**
+ * Swap back in all the special characters we've hidden.
+ */
+showdown.subParser('unescapeSpecialChars', function (text) {
+ 'use strict';
+
+ text = text.replace(/~E(\d+)E/g, function (wholeMatch, m1) {
+ var charCodeToReplace = parseInt(m1);
+ return String.fromCharCode(charCodeToReplace);
+ });
+ return text;
+});
+module.exports = showdown;
diff --git a/template/xcx/wxParse/wxDiscode.js b/template/xcx/wxParse/wxDiscode.js
new file mode 100644
index 000000000..fca29bb1c
--- /dev/null
+++ b/template/xcx/wxParse/wxDiscode.js
@@ -0,0 +1,207 @@
+// HTML 支持的数学符号
+function strNumDiscode(str){
+ str = str.replace(/∀/g, '∀');
+ str = str.replace(/∂/g, '∂');
+ str = str.replace(/&exists;/g, '∃');
+ str = str.replace(/∅/g, '∅');
+ str = str.replace(/∇/g, '∇');
+ str = str.replace(/∈/g, '∈');
+ str = str.replace(/∉/g, '∉');
+ str = str.replace(/∋/g, '∋');
+ str = str.replace(/∏/g, '∏');
+ str = str.replace(/∑/g, '∑');
+ str = str.replace(/−/g, '−');
+ str = str.replace(/∗/g, '∗');
+ str = str.replace(/√/g, '√');
+ str = str.replace(/∝/g, '∝');
+ str = str.replace(/∞/g, '∞');
+ str = str.replace(/∠/g, '∠');
+ str = str.replace(/∧/g, '∧');
+ str = str.replace(/∨/g, '∨');
+ str = str.replace(/∩/g, '∩');
+ str = str.replace(/∩/g, '∪');
+ str = str.replace(/∫/g, '∫');
+ str = str.replace(/∴/g, '∴');
+ str = str.replace(/∼/g, '∼');
+ str = str.replace(/≅/g, '≅');
+ str = str.replace(/≈/g, '≈');
+ str = str.replace(/≠/g, '≠');
+ str = str.replace(/≤/g, '≤');
+ str = str.replace(/≥/g, '≥');
+ str = str.replace(/⊂/g, '⊂');
+ str = str.replace(/⊃/g, '⊃');
+ str = str.replace(/⊄/g, '⊄');
+ str = str.replace(/⊆/g, '⊆');
+ str = str.replace(/⊇/g, '⊇');
+ str = str.replace(/⊕/g, '⊕');
+ str = str.replace(/⊗/g, '⊗');
+ str = str.replace(/⊥/g, '⊥');
+ str = str.replace(/⋅/g, '⋅');
+ return str;
+}
+
+//HTML 支持的希腊字母
+function strGreeceDiscode(str){
+ str = str.replace(/Α/g, 'Α');
+ str = str.replace(/Β/g, 'Β');
+ str = str.replace(/Γ/g, 'Γ');
+ str = str.replace(/Δ/g, 'Δ');
+ str = str.replace(/Ε/g, 'Ε');
+ str = str.replace(/Ζ/g, 'Ζ');
+ str = str.replace(/Η/g, 'Η');
+ str = str.replace(/Θ/g, 'Θ');
+ str = str.replace(/Ι/g, 'Ι');
+ str = str.replace(/Κ/g, 'Κ');
+ str = str.replace(/Λ/g, 'Λ');
+ str = str.replace(/Μ/g, 'Μ');
+ str = str.replace(/Ν/g, 'Ν');
+ str = str.replace(/Ξ/g, 'Ν');
+ str = str.replace(/Ο/g, 'Ο');
+ str = str.replace(/Π/g, 'Π');
+ str = str.replace(/Ρ/g, 'Ρ');
+ str = str.replace(/Σ/g, 'Σ');
+ str = str.replace(/Τ/g, 'Τ');
+ str = str.replace(/Υ/g, 'Υ');
+ str = str.replace(/Φ/g, 'Φ');
+ str = str.replace(/Χ/g, 'Χ');
+ str = str.replace(/Ψ/g, 'Ψ');
+ str = str.replace(/Ω/g, 'Ω');
+
+ str = str.replace(/α/g, 'α');
+ str = str.replace(/β/g, 'β');
+ str = str.replace(/γ/g, 'γ');
+ str = str.replace(/δ/g, 'δ');
+ str = str.replace(/ε/g, 'ε');
+ str = str.replace(/ζ/g, 'ζ');
+ str = str.replace(/η/g, 'η');
+ str = str.replace(/θ/g, 'θ');
+ str = str.replace(/ι/g, 'ι');
+ str = str.replace(/κ/g, 'κ');
+ str = str.replace(/λ/g, 'λ');
+ str = str.replace(/μ/g, 'μ');
+ str = str.replace(/ν/g, 'ν');
+ str = str.replace(/ξ/g, 'ξ');
+ str = str.replace(/ο/g, 'ο');
+ str = str.replace(/π/g, 'π');
+ str = str.replace(/ρ/g, 'ρ');
+ str = str.replace(/ς/g, 'ς');
+ str = str.replace(/σ/g, 'σ');
+ str = str.replace(/τ/g, 'τ');
+ str = str.replace(/υ/g, 'υ');
+ str = str.replace(/φ/g, 'φ');
+ str = str.replace(/χ/g, 'χ');
+ str = str.replace(/ψ/g, 'ψ');
+ str = str.replace(/ω/g, 'ω');
+ str = str.replace(/ϑ/g, 'ϑ');
+ str = str.replace(/ϒ/g, 'ϒ');
+ str = str.replace(/ϖ/g, 'ϖ');
+ str = str.replace(/·/g, '·');
+ return str;
+}
+
+//
+
+function strcharacterDiscode(str){
+ // 加入常用解析
+ str = str.replace(/ /g, ' ');
+ str = str.replace(/"/g, "'");
+ str = str.replace(/&/g, '&');
+ // str = str.replace(/</g, '‹');
+ // str = str.replace(/>/g, '›');
+
+ str = str.replace(/</g, '<');
+ str = str.replace(/>/g, '>');
+ str = str.replace(/•/g, '•');
+
+ return str;
+}
+
+// HTML 支持的其他实体
+function strOtherDiscode(str){
+ str = str.replace(/Œ/g, 'Œ');
+ str = str.replace(/œ/g, 'œ');
+ str = str.replace(/Š/g, 'Š');
+ str = str.replace(/š/g, 'š');
+ str = str.replace(/Ÿ/g, 'Ÿ');
+ str = str.replace(/ƒ/g, 'ƒ');
+ str = str.replace(/ˆ/g, 'ˆ');
+ str = str.replace(/˜/g, '˜');
+ str = str.replace(/ /g, '');
+ str = str.replace(/ /g, '');
+ str = str.replace(/ /g, '');
+ str = str.replace(//g, '');
+ str = str.replace(//g, '');
+ str = str.replace(//g, '');
+ str = str.replace(//g, '');
+ str = str.replace(/–/g, '–');
+ str = str.replace(/—/g, '—');
+ str = str.replace(/‘/g, '‘');
+ str = str.replace(/’/g, '’');
+ str = str.replace(/‚/g, '‚');
+ str = str.replace(/“/g, '“');
+ str = str.replace(/”/g, '”');
+ str = str.replace(/„/g, '„');
+ str = str.replace(/†/g, '†');
+ str = str.replace(/‡/g, '‡');
+ str = str.replace(/•/g, '•');
+ str = str.replace(/…/g, '…');
+ str = str.replace(/‰/g, '‰');
+ str = str.replace(/′/g, '′');
+ str = str.replace(/″/g, '″');
+ str = str.replace(/‹/g, '‹');
+ str = str.replace(/›/g, '›');
+ str = str.replace(/‾/g, '‾');
+ str = str.replace(/€/g, '€');
+ str = str.replace(/™/g, '™');
+
+ str = str.replace(/←/g, '←');
+ str = str.replace(/↑/g, '↑');
+ str = str.replace(/→/g, '→');
+ str = str.replace(/↓/g, '↓');
+ str = str.replace(/↔/g, '↔');
+ str = str.replace(/↵/g, '↵');
+ str = str.replace(/⌈/g, '⌈');
+ str = str.replace(/⌉/g, '⌉');
+
+ str = str.replace(/⌊/g, '⌊');
+ str = str.replace(/⌋/g, '⌋');
+ str = str.replace(/◊/g, '◊');
+ str = str.replace(/♠/g, '♠');
+ str = str.replace(/♣/g, '♣');
+ str = str.replace(/♥/g, '♥');
+
+ str = str.replace(/♦/g, '♦');
+ str = str.replace(/'/g, '\'');
+ return str;
+}
+
+function strMoreDiscode(str){
+ str = str.replace(/\r\n/g,"");
+ str = str.replace(/\n/g,"");
+
+ str = str.replace(/code/g,"wxxxcode-style");
+ return str;
+}
+
+function strDiscode(str){
+ str = strNumDiscode(str);
+ str = strGreeceDiscode(str);
+ str = strcharacterDiscode(str);
+ str = strOtherDiscode(str);
+ str = strMoreDiscode(str);
+ return str;
+}
+function urlToHttpUrl(url,rep){
+
+ var patt1 = new RegExp("^//");
+ var result = patt1.test(url);
+ if(result){
+ url = rep+":"+url;
+ }
+ return url;
+}
+
+module.exports = {
+ strDiscode:strDiscode,
+ urlToHttpUrl:urlToHttpUrl
+}
\ No newline at end of file
diff --git a/template/xcx/wxParse/wxParse.js b/template/xcx/wxParse/wxParse.js
new file mode 100644
index 000000000..89c1000b0
--- /dev/null
+++ b/template/xcx/wxParse/wxParse.js
@@ -0,0 +1,157 @@
+/**
+ * author: Di (微信小程序开发工程师)
+ * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
+ * 垂直微信小程序开发交流社区
+ *
+ * github地址: https://github.com/icindy/wxParse
+ *
+ * for: 微信小程序富文本解析
+ * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
+ */
+
+/**
+ * utils函数引入
+ **/
+import showdown from './showdown.js';
+import HtmlToJson from './html2json.js';
+/**
+ * 配置及公有属性
+ **/
+var realWindowWidth = 0;
+var realWindowHeight = 0;
+wx.getSystemInfo({
+ success: function (res) {
+ realWindowWidth = res.windowWidth
+ realWindowHeight = res.windowHeight
+ }
+})
+/**
+ * 主函数入口区
+ **/
+function wxParse(bindName = 'wxParseData', type='html', data='数据不能为空
', target,imagePadding) {
+ var that = target;
+ var transData = {};//存放转化后的数据
+ if (type == 'html') {
+ transData = HtmlToJson.html2json(data, bindName);
+ } else if (type == 'md' || type == 'markdown') {
+ var converter = new showdown.Converter();
+ var html = converter.makeHtml(data);
+ transData = HtmlToJson.html2json(html, bindName);
+ }
+ transData.view = {};
+ transData.view.imagePadding = 0;
+ if(typeof(imagePadding) != 'undefined'){
+ transData.view.imagePadding = imagePadding
+ }
+ var bindData = {};
+ bindData[bindName] = transData;
+ that.setData(bindData)
+ that.wxParseImgLoad = wxParseImgLoad;
+ that.wxParseImgTap = wxParseImgTap;
+}
+// 图片点击事件
+function wxParseImgTap(e) {
+ var that = this;
+ var nowImgUrl = e.target.dataset.src;
+ var tagFrom = e.target.dataset.from;
+ if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {
+ wx.previewImage({
+ current: nowImgUrl, // 当前显示图片的http链接
+ urls: that.data[tagFrom].imageUrls // 需要预览的图片http链接列表
+ })
+ }
+}
+
+/**
+ * 图片视觉宽高计算函数区
+ **/
+function wxParseImgLoad(e) {
+ var that = this;
+ var tagFrom = e.target.dataset.from;
+ var idx = e.target.dataset.idx;
+ if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {
+ calMoreImageInfo(e, idx, that, tagFrom)
+ }
+}
+// 假循环获取计算图片视觉最佳宽高
+function calMoreImageInfo(e, idx, that, bindName) {
+ var temData = that.data[bindName];
+ if (!temData || temData.images.length == 0) {
+ return;
+ }
+ var temImages = temData.images;
+ //因为无法获取view宽度 需要自定义padding进行计算,稍后处理
+ var recal = wxAutoImageCal(e.detail.width, e.detail.height,that,bindName);
+ // temImages[idx].width = recal.imageWidth;
+ // temImages[idx].height = recal.imageheight;
+ // temData.images = temImages;
+ // var bindData = {};
+ // bindData[bindName] = temData;
+ // that.setData(bindData);
+ var index = temImages[idx].index
+ var key = `${bindName}`
+ for (var i of index.split('.')) key+=`.nodes[${i}]`
+ var keyW = key + '.width'
+ var keyH = key + '.height'
+ that.setData({
+ [keyW]: recal.imageWidth,
+ [keyH]: recal.imageheight,
+ })
+}
+
+// 计算视觉优先的图片宽高
+function wxAutoImageCal(originalWidth, originalHeight,that,bindName) {
+ //获取图片的原始长宽
+ var windowWidth = 0, windowHeight = 0;
+ var autoWidth = 0, autoHeight = 0;
+ var results = {};
+ var padding = that.data[bindName].view.imagePadding;
+ windowWidth = realWindowWidth-2*padding;
+ windowHeight = realWindowHeight;
+ //判断按照那种方式进行缩放
+ // console.log("windowWidth" + windowWidth);
+ if (originalWidth > windowWidth) {//在图片width大于手机屏幕width时候
+ autoWidth = windowWidth;
+ // console.log("autoWidth" + autoWidth);
+ autoHeight = (autoWidth * originalHeight) / originalWidth;
+ // console.log("autoHeight" + autoHeight);
+ results.imageWidth = autoWidth;
+ results.imageheight = autoHeight;
+ } else {//否则展示原来的数据
+ results.imageWidth = originalWidth;
+ results.imageheight = originalHeight;
+ }
+ return results;
+}
+
+function wxParseTemArray(temArrayName,bindNameReg,total,that){
+ var array = [];
+ var temData = that.data;
+ var obj = null;
+ for(var i = 0; i < total; i++){
+ var simArr = temData[bindNameReg+i].nodes;
+ array.push(simArr);
+ }
+
+ temArrayName = temArrayName || 'wxParseTemArray';
+ obj = JSON.parse('{"'+ temArrayName +'":""}');
+ obj[temArrayName] = array;
+ that.setData(obj);
+}
+
+/**
+ * 配置emojis
+ *
+ */
+
+function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){
+ HtmlToJson.emojisInit(reg,baseSrc,emojis);
+}
+
+module.exports = {
+ wxParse: wxParse,
+ wxParseTemArray:wxParseTemArray,
+ emojisInit:emojisInit
+}
+
+
diff --git a/template/xcx/wxParse/wxParse.wxml b/template/xcx/wxParse/wxParse.wxml
new file mode 100644
index 000000000..49cd67f81
--- /dev/null
+++ b/template/xcx/wxParse/wxParse.wxml
@@ -0,0 +1,967 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+
+
+
+
+ \n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template/xcx/wxParse/wxParse.wxss b/template/xcx/wxParse/wxParse.wxss
new file mode 100644
index 000000000..81a2974fa
--- /dev/null
+++ b/template/xcx/wxParse/wxParse.wxss
@@ -0,0 +1,207 @@
+
+/**
+ * author: Di (微信小程序开发工程师)
+ * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
+ * 垂直微信小程序开发交流社区
+ *
+ * github地址: https://github.com/icindy/wxParse
+ *
+ * for: 微信小程序富文本解析
+ * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
+ */
+
+.wxParse{
+ margin: 0 5px;
+ font-family: Helvetica,sans-serif;
+ font-size: 28rpx;
+ color: #666;
+ line-height: 1.8;
+}
+.wxParse view{
+ word-break:break-all;
+ margin-bottom: -5rpx;
+}
+.wxParse-inline{
+ display: inline;
+ margin: 0;
+ padding: 0 15rpx;
+}
+/*//标题 */
+.wxParse-div{margin: 0;padding: 0;width:100%!important;}
+.wxParse-h1{ font-size:2em; margin: .67em 0 }
+.wxParse-h2{ font-size:1.5em; margin: .75em 0 }
+.wxParse-h3{ font-size:1.17em; margin: .83em 0 }
+.wxParse-h4{ margin: 1.12em 0}
+.wxParse-h5 { font-size:.83em; margin: 1.5em 0 }
+.wxParse-h6{ font-size:.75em; margin: 1.67em 0 }
+
+.wxParse-h1 {
+ font-size: 18px;
+ font-weight: 400;
+ margin-bottom: .9em;
+}
+.wxParse-h2 {
+ font-size: 16px;
+ font-weight: 400;
+ margin-bottom: .34em;
+}
+.wxParse-h3 {
+ font-weight: 400;
+ font-size: 15px;
+ margin-bottom: .34em;
+}
+.wxParse-h4 {
+ font-weight: 400;
+ font-size: 14px;
+ margin-bottom: .24em;
+}
+.wxParse-h5 {
+ font-weight: 400;
+ font-size: 13px;
+ margin-bottom: .14em;
+}
+.wxParse-h6 {
+ font-weight: 400;
+ font-size: 12px;
+ margin-bottom: .04em;
+}
+
+.wxParse-h1, .wxParse-h2, .wxParse-h3, .wxParse-h4, .wxParse-h5, .wxParse-h6, .wxParse-b, .wxParse-strong { font-weight: bolder }
+
+.wxParse-i,.wxParse-cite,.wxParse-em,.wxParse-var,.wxParse-address{font-style:italic}
+.wxParse-pre,.wxParse-tt,.wxParse-code,.wxParse-kbd,.wxParse-samp{font-family:monospace}
+.wxParse-pre{white-space:pre}
+.wxParse-big{font-size:1.17em}
+.wxParse-small,.wxParse-sub,.wxParse-sup{font-size:.83em}
+.wxParse-sub{vertical-align:sub}
+.wxParse-sup{vertical-align:super}
+.wxParse-s,.wxParse-strike,.wxParse-del{text-decoration:line-through}
+/*wxparse-自定义个性化的css样式*/
+/*增加video的css样式*/
+.wxParse-strong,.wxParse-s{display: inline}
+.wxParse-a{
+ color: deepskyblue;
+ word-break:break-all;
+ overflow:auto;
+}
+
+.wxParse-video{
+ text-align: center;
+ margin: 10px 0;
+}
+
+.wxParse-video-video{
+ width:100%;
+}
+
+.wxParse-img{
+ /*background-color: #efefef;*/
+ overflow: hidden;
+}
+
+.wxParse-blockquote {
+ margin: 0;
+ padding:10px 0 10px 5px;
+ font-family:Courier, Calibri,"宋体";
+ background:#f5f5f5;
+ border-left: 3px solid #dbdbdb;
+}
+
+.wxParse-code,.wxParse-wxxxcode-style{
+ display: inline;
+ background:#f5f5f5;
+}
+.wxParse-ul{
+ margin: 20rpx 10rpx;
+}
+
+.wxParse-li,.wxParse-li-inner{
+ display: flex;
+ align-items: baseline;
+ margin: 10rpx 0;
+}
+.wxParse-li-text{
+
+ align-items: center;
+ line-height: 20px;
+}
+
+.wxParse-li-circle{
+ display: inline-flex;
+ width: 5px;
+ height: 5px;
+ background-color: #333;
+ margin-right: 5px;
+}
+
+.wxParse-li-square{
+ display: inline-flex;
+ width: 10rpx;
+ height: 10rpx;
+ background-color: #333;
+ margin-right: 5px;
+}
+.wxParse-li-ring{
+ display: inline-flex;
+ width: 10rpx;
+ height: 10rpx;
+ border: 2rpx solid #333;
+ border-radius: 50%;
+ background-color: #fff;
+ margin-right: 5px;
+}
+
+/*.wxParse-table{
+ width: 100%;
+ height: 400px;
+}
+.wxParse-thead,.wxParse-tfoot,.wxParse-tr{
+ display: flex;
+ flex-direction: row;
+}
+.wxParse-th,.wxParse-td{
+ display: flex;
+ width: 580px;
+ overflow: auto;
+}*/
+
+.wxParse-u {
+ text-decoration: underline;
+}
+.wxParse-hide{
+ display: none;
+}
+.WxEmojiView{
+ align-items: center;
+}
+.wxEmoji{
+ width: 16px;
+ height:16px;
+}
+.wxParse-tr{
+ display: flex;
+ border-right:1px solid #e0e0e0;
+ border-bottom:1px solid #e0e0e0;
+ border-top:1px solid #e0e0e0;
+}
+.wxParse-th,
+.wxParse-td{
+ flex:1;
+ padding:5px;
+ font-size:28rpx;
+ border-left:1px solid #e0e0e0;
+ word-break: break-all;
+}
+.wxParse-td:last{
+ border-top:1px solid #e0e0e0;
+}
+.wxParse-th{
+ background:#f0f0f0;
+ border-top:1px solid #e0e0e0;
+}
+.wxParse-del{
+ display: inline;
+}
+.wxParse-figure {
+ overflow: hidden;
+}