Browse Source

Merge branch 'deploy' of chelingzhu-web/qbyc-shop-mini into master

张丹 4 years ago
parent
commit
b85e36eba6
61 changed files with 1228 additions and 289 deletions
  1. 1 0
      .eslintignore
  2. 1 1
      README.en.md
  3. 1 1
      README.md
  4. 1 1
      package-lock.json
  5. 2 2
      package.json
  6. 73 48
      project.config.json
  7. 11 0
      src/api/bundle.js
  8. 32 0
      src/api/packageRequest.js
  9. 23 12
      src/api/request.js
  10. 13 12
      src/app.json
  11. 6 9
      src/components/BundleCard.vue
  12. 3 2
      src/components/NoData.vue
  13. 43 19
      src/components/OrderCard.vue
  14. 2 2
      src/components/swiper.vue
  15. 26 20
      src/pages/bundleDetail/index.vue
  16. 3 3
      src/pages/couponList/index.vue
  17. 145 85
      src/pages/index/index.vue
  18. 17 8
      src/pages/login/index.vue
  19. 26 8
      src/pages/member/index.vue
  20. 271 0
      src/pages/myPackage/index.vue
  21. 5 0
      src/pages/myPackage/main.js
  22. 8 0
      src/pages/myPackage/main.json
  23. 86 25
      src/pages/orderDetail/index.vue
  24. 207 0
      src/pages/packageDetail/index.vue
  25. 0 0
      src/pages/packageDetail/main.js
  26. 3 0
      src/pages/packageDetail/main.json
  27. 1 1
      src/pages/pagesA/creatShareImage/index.vue
  28. 0 0
      src/pages/pagesA/creatShareImage/main.js
  29. 0 0
      src/pages/pagesA/creatShareImage/main.json
  30. 7 4
      src/pages/pagesA/h5Page/index.vue
  31. 12 0
      src/pages/pagesA/h5Page/main.js
  32. 0 0
      src/pages/pagesA/h5Page/main.json
  33. 138 0
      src/pages/pagesA/usageRecord/index.vue
  34. 12 0
      src/pages/pagesA/usageRecord/main.js
  35. 4 0
      src/pages/pagesA/usageRecord/main.json
  36. 1 1
      src/pages/paySuccess/index.vue
  37. 22 3
      src/pages/placeOrder/index.vue
  38. 1 1
      src/pages/rankingList/index.vue
  39. 2 2
      src/pages/shareActivity/index.vue
  40. 15 14
      src/pages/store/index.vue
  41. 2 3
      src/pages/storeSearch/index.vue
  42. 1 1
      src/pages/washCar/index.vue
  43. BIN
      static/img/bgimg.jpg
  44. BIN
      static/img/empty-icon.png
  45. BIN
      static/img/ic_shop_title_06.png
  46. BIN
      static/img/icon1red.png
  47. BIN
      static/img/icon2red.png
  48. BIN
      static/img/icon3black.png
  49. BIN
      static/img/icon3red.png
  50. BIN
      static/img/icon4red.png
  51. BIN
      static/img/logo-mini.jpg
  52. BIN
      static/img/logo.png
  53. BIN
      static/img/logos.png
  54. BIN
      static/img/noData.jpg
  55. BIN
      static/img/ranking/img1.jpg
  56. BIN
      static/img/ranking/img2.jpg
  57. BIN
      static/img/ranking/img3.jpg
  58. BIN
      static/img/ranking/img4.jpg
  59. BIN
      static/img/show.png
  60. 0 0
      static/vant/button/index.wxss
  61. 1 1
      static/vant/tabs/index.wxss

+ 1 - 0
.eslintignore

@@ -1,2 +1,3 @@
 build/*.js
 config/*.js
+src

+ 1 - 1
README.en.md

@@ -1,7 +1,7 @@
 # zyyc-shop-mini
 
 #### Description
-章鱼养车商城
+丘比养车商城
 
 #### Software Architecture
 Software architecture description

+ 1 - 1
README.md

@@ -1,7 +1,7 @@
 # zyyc-shop-mini
 
 #### 介绍
-章鱼养车商城
+丘比养车商城
 
 #### 软件架构
 软件架构说明

+ 1 - 1
package-lock.json

@@ -1,5 +1,5 @@
 {
-  "name": "zyyc-wxmini",
+  "name": "qbyc-wxmini",
   "version": "1.0.0",
   "lockfileVersion": 1,
   "requires": true,

+ 2 - 2
package.json

@@ -1,8 +1,8 @@
 {
-  "name": "zyyc-wxmini",
+  "name": "qbyc-wxmini",
   "version": "1.0.0",
   "mpvueTemplateProjectVersion": "0.1.0",
-  "description": "A Mpvue project",
+  "description": "丘比养车",
   "author": "lilei",
   "private": true,
   "scripts": {

+ 73 - 48
project.config.json

@@ -1,50 +1,75 @@
 {
-	"description": "项目配置文件。",
-	"setting": {
-		"urlCheck": false,
-		"es6": true,
-		"postcss": true,
-		"minified": true,
-		"newFeature": true,
-		"coverView": true,
-		"nodeModules": false,
-		"autoAudits": false,
-		"showShadowRootInWxmlPanel": true,
-		"scopeDataCheck": false,
-		"checkInvalidKey": true,
-		"checkSiteMap": true,
-		"uploadWithSourceMap": true,
-		"babelSetting": {
-			"ignore": [],
-			"disablePlugins": [],
-			"outputPath": ""
-		},
-		"useCompilerModule": false,
-		"userConfirmedUseCompilerModuleSwitch": false
-	},
-	"miniprogramRoot": "dist/wx/",
-	"compileType": "miniprogram",
-	"appid": "wxb6f09597a1545d81",
-	"projectname": "zyyc-wxmini",
-	"simulatorType": "wechat",
-	"simulatorPluginLibVersion": {},
-	"libVersion": "2.7.2",
-	"condition": {
-		"search": {
-			"current": -1,
-			"list": []
-		},
-		"conversation": {
-			"current": -1,
-			"list": []
-		},
-		"game": {
-			"currentL": -1,
-			"list": []
-		},
-		"miniprogram": {
-			"current": -1,
-			"list": []
-		}
-	}
+  "description": "项目配置文件",
+  "packOptions": {
+    "ignore": []
+  },
+  "setting": {
+    "urlCheck": true,
+    "es6": true,
+    "enhance": false,
+    "postcss": true,
+    "preloadBackgroundData": false,
+    "minified": true,
+    "newFeature": true,
+    "coverView": true,
+    "nodeModules": false,
+    "autoAudits": false,
+    "showShadowRootInWxmlPanel": true,
+    "scopeDataCheck": false,
+    "uglifyFileName": false,
+    "checkInvalidKey": true,
+    "checkSiteMap": true,
+    "uploadWithSourceMap": true,
+    "compileHotReLoad": false,
+    "useMultiFrameRuntime": true,
+    "useApiHook": true,
+    "babelSetting": {
+      "ignore": [],
+      "disablePlugins": [],
+      "outputPath": ""
+    },
+    "enableEngineNative": false,
+    "bundle": false,
+    "useIsolateContext": true,
+    "useCompilerModule": false,
+    "userConfirmedUseCompilerModuleSwitch": false,
+    "packNpmManually": false,
+    "packNpmRelationList": [],
+    "minifyWXSS": true
+  },
+  "compileType": "miniprogram",
+  "libVersion": "2.14.1",
+  "appid": "wx91b4a901e2f6876b",
+  "projectname": "zyyc-wxmini",
+  "miniprogramRoot": "dist/wx/",
+  "cloudfunctionTemplateRoot": "",
+  "watchOptions": {
+    "ignore": []
+  },
+  "debugOptions": {
+    "hidedInDevtools": []
+  },
+  "scripts": {},
+  "simulatorType": "wechat",
+  "simulatorPluginLibVersion": {},
+  "condition": {
+    "search": {
+      "list": []
+    },
+    "conversation": {
+      "list": []
+    },
+    "plugin": {
+      "list": []
+    },
+    "game": {
+      "list": []
+    },
+    "gamePlugin": {
+      "list": []
+    },
+    "miniprogram": {
+      "list": []
+    }
+  }
 }

+ 11 - 0
src/api/bundle.js

@@ -96,3 +96,14 @@ export const getPayStatus = params => {
     data: params
   }).then(res => res.data);
 };
+// 订单使用记录
+export const queryByOrderList = params => {
+  let url = `token/verification/queryByOrder/${params.pageNo}/${params.pageSize}`;
+  delete params.pageNo;
+  delete params.pageSize;
+  return request({
+    url: url,
+    method: 'post',
+    data: params
+  }).then(res => res.data);
+};

+ 32 - 0
src/api/packageRequest.js

@@ -0,0 +1,32 @@
+import request from './request';
+
+// 获取套餐列表
+export const getPackageList = params => {
+  return request({
+    url: 'customerBundle/findList',
+    data: params,
+    method: 'post',
+    isQbcgj: true,
+    useCgjToken: true, // 使用车管家token
+  }).then(res => res.data);
+};
+
+// 获取套餐使用明细
+export const getPackageDetail = params => {
+  return request({
+    url: 'customerBundle/findCustBundleOrder',
+    data: params,
+    method: 'post',
+    isQbcgj: true,
+    useCgjToken: true, // 使用车管家token
+  }).then(res => res.data);
+};
+// 丘比养车登录车管家,获取接口凭证
+export const getQbcgjLogin = params => {
+  return request({
+    url: 'zyycLoginVerify',
+    data: params,
+    method: 'post',
+    isQbcgj: true,
+  }).then(res => res.data);
+};

+ 23 - 12
src/api/request.js

@@ -6,11 +6,15 @@ function request(options) {
   //   title: '加载中' // 数据请求前loading,提高用户体验
   // });
   return new Promise((resolve, reject) => {
-    const baseUrl = 'https://zyyc.chelingzhu.com/zyyc-shop/'; // 预发布
-    //const baseUrl = 'https://shop.zy-yc.cn/zyyc-shop/'; // 生产
-    //const baseUrl = 'http://192.168.16.103:7102/zyyc-shop/';
-    //const baseUrl = process.env.NODE_ENV === 'production' ? proUrl : devUrl;
-
+    // 丘比养车服务
+    // const baseycUrl = 'https://zyyc.chelingzhu.com/zyyc-shop/'; // 预发布
+    const baseycUrl = 'https://shop.qiubcar.com/zyyc-shop/'; // 生产
+    // const baseycUrl = 'http://192.168.16.103:7101/zyyc-shop/';
+    // const baseycUrl = process.env.NODE_ENV === 'production' ? proUrl : devUrl;
+    // 丘比车管家服务
+    // const qbcgjUrl = 'https://wx.test.chelingzhu.com/clzwx/'; // 预发布
+    const qbcgjUrl = 'https://wx.qiubcar.com/clzwx/'; // 生产
+    // const qbcgjUrl = 'http://192.168.16.103:7003/clzwx/';
     let _obj = {
       url: '',
       data: {},
@@ -21,18 +25,18 @@ function request(options) {
     };
 
     Object.assign(_obj, options);
-    _obj.header['X-AUTH-TOKEN'] = mpvue.getStorageSync('token');
-    _obj.header['X-HEADER-APPID'] =
-      'vb/TIFOLtHqF5qWlwFKVie3SAD9Ef1ec8ERVkvn5brk=';
-    _obj.url = baseUrl + _obj.url;
+    _obj.header['X-AUTH-TOKEN'] = options.useCgjToken ? mpvue.getStorageSync('token_cgj') : mpvue.getStorageSync('token');
+    _obj.header['X-HEADER-APPID'] = 'qaHKg54DXewQ496T5XR+w9UEf9vNaJoAoTOtDN0LSUM=';
+    _obj.url = (options.isQbcgj ? qbcgjUrl : baseycUrl) + _obj.url;
     _obj.method = _obj.method.toUpperCase();
     _obj.success = function(res) {
-      if (_obj.url.indexOf('checkLogin') > -1) {
+      if (res.data.status == 200) {
+        resolve(res);
+      } else if (res.data.status === '900010' || (res.data.status == '500' && _obj.url.indexOf('checkLogin') >= 0)) {
         resolve(res);
-      } else if (res.data.status === '900010') {
         setTimeout(function() {
           wx.showToast({
-            title: '登录已过期,重新登录',
+            title: '请登录后使用',
             icon: 'none',
             duration: 1000
           });
@@ -47,6 +51,13 @@ function request(options) {
         }, 1000);
       } else {
         resolve(res);
+        setTimeout(function() {
+          wx.showToast({
+            title: res.data.message,
+            icon: 'none',
+            duration: 1000
+          });
+        }, 10);
       }
     };
     _obj.fail = function(err) {

+ 13 - 12
src/app.json

@@ -1,7 +1,7 @@
 {
   "tabBar": {
     "color": "#7d7e80",
-    "selectedColor": "#ed3f14",
+    "selectedColor": "#ff8811",
     "backgroundColor": "#ffffff",
     "list": [
       {
@@ -10,12 +10,6 @@
         "iconPath": "./static/img/icon1black.png",
         "selectedIconPath": "./static/img/icon1red.png"
       },
-      {
-        "text": "套餐",
-        "pagePath": "pages/bundle/main",
-        "iconPath": "./static/img/icon2black.png",
-        "selectedIconPath": "./static/img/icon2red.png"
-      },
       {
         "text": "门店",
         "pagePath": "pages/store/main",
@@ -44,12 +38,20 @@
     "pages/order/main",
     "pages/couponList/main",
     "pages/orderDetail/main",
-    "pages/h5Page/main",
-    "pages/creatShareImage/main",
     "pages/rankingList/main",
     "pages/storeSearch/main",
-    "pages/selectCity/main"
+    "pages/selectCity/main",
+    "pages/myPackage/main",
+    "pages/packageDetail/main"
   ],
+  "subpackages": [{
+  	"root": "pages/pagesA/",
+  	"pages": [
+      "usageRecord/main",
+      "h5Page/main",
+      "creatShareImage/main"
+    ]
+  }],
   "window": {
     "backgroundTextStyle": "light",
     "navigationBarBackgroundColor": "#fff",
@@ -68,6 +70,5 @@
     "scope.userLocation": {
       "desc": "您的位置信息将用于小程序帮您找出最近的门店"
     }
-  },
-  "navigateToMiniProgramAppIdList": ["wxed9c04d05ab849f9"]
+  }
 }

+ 6 - 9
src/components/BundleCard.vue

@@ -5,7 +5,6 @@
       <img class="img" :src="options.icon1" alt="">
     </div>
     <div class="content">
-
         <div class="header">
           <div class="title">{{options.name}}</div>
           <div class="sales" v-if="options.stock>0">
@@ -96,7 +95,7 @@ export default {
   }
 
   .content .title {
-    font-size: 35rpx;
+    font-size: 30rpx;
   }
 
   .content .desc {
@@ -115,12 +114,12 @@ export default {
 
   .detail-footer {
     display: flex;
-    margin-top: 10rpx;
+    margin-top: 0;
     font-weight: bold;
   }
 
   .footer .label, .original-price {
-    font-size: 0.6em;
+    font-size: 0.8em;
     display: inline-block;
     margin-right: 10rpx;
   }
@@ -128,20 +127,18 @@ export default {
   .original-price {
     flex: 1;
     color: #bbbec4;
-    font-size: 0.7em;
+    font-size: 0.8em;
     text-decoration: line-through;
     display: flex;
     align-items: flex-end;
   }
-
-
   .current-price {
     color: #ed3f14;
+    font-size: 1em;
   }
-
   .current-price--Offline {
     color: #bbbec4;
-    font-size: 0.8em;
+    font-size: 1em;
   }
 }
 </style>

+ 3 - 2
src/components/NoData.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="no-data" :class="clazz" v-if="isShow" >
-    <van-icon name="orders-o" size="80px" color="#bbbec4" />
+    <van-icon name="orders-o" size="40px" color="#bbbec4" />
     <div>{{name}}</div>
   </div>
 </template>
@@ -39,7 +39,8 @@ export default {
 <style>
 .no-data {
   text-align: center;
-  padding-top: 20vh;
+  padding: 50rpx 0;
   color: #bbbec4;
+  font-size: 30rpx;
 }
 </style>

+ 43 - 19
src/components/OrderCard.vue

@@ -4,26 +4,26 @@
       <div class="order-no">
         <span>订单编号: </span><span>{{options.number}}</span>
       </div>
-      <div class="order-status">
+      <div class="order-status" :class="options.orderFlag">
         {{getPayStatus}}
       </div>
     </div>
     <div class="content">
       <div class="product-img" @click="toDetail()">
-        <img class="img" :src="options.bundle.icon2" alt="">
+        <img class="img" :src="options.bundle ? options.bundle.icon2 : '/static/img/ic_shop_title_06.png'" alt="">
       </div>
       <div class="product-info">
         <div @click="toDetail()">
           <div class="title">{{options.bundleName}}</div>
-          <div class="desc">{{options.bundle.tag}}</div>
+          <div class="desc">{{options.bundle ? options.bundle.tag : ''}}</div>
         </div>
         <div>
           <div class="price">
-            ¥{{options.totalAmount}}
+              ¥{{options.payedAmount}}
           </div>
           <div class="btn-control" v-if="options.orderFlag === 'UNPA'">
             <van-button class="btn" size="small" @click="cancelHandler()">取消订单</van-button>
-            <van-button class="btn" size="small" type="danger" :disabled="payLoading" :loading="payLoading" @click="toPay()">立即支付</van-button>
+            <!-- <van-button class="btn" size="small" type="danger" :disabled="payLoading" :loading="payLoading" @click="toPay()">立即支付</van-button> -->
           </div>
           <div class="btn-control" v-else>
             <van-button class="btn" size="small" @click="toDetail()">查看详情</van-button>
@@ -61,7 +61,8 @@ export default {
         'INPA': '支付中',
         'PAED': '已支付',
         'CAEL': '已取消',
-        'SYCA': '已取消'
+        'SYCA': '已取消',
+        'RUND': '已退款'
       };
       return dict[this.options.orderFlag];
     }
@@ -144,12 +145,12 @@ export default {
 
 <style lang="stylus" scoped>
 .order-card-panel {
-  margin-top: 10rpx;
+  // margin-top: 10rpx;
   width: 100%;
   background-color: #fff;
   box-sizing: border-box;
   padding: 0 25rpx;
-
+  border-top: 16rpx solid #f8f8f8;
   .header, .content {
     box-sizing: border-box;
     padding: 15rpx 25rpx;
@@ -160,24 +161,39 @@ export default {
     justify-content: space-between;
     font-size: 25rpx;
     border-bottom: 1px solid #e9eaec;
-
     .order-no {
       color: #80848f;
     }
-
-    .order-status {
+    .UNPA {
       color: #ed3f14;
     }
+    .INPA {
+      color: #00aaff;
+    }
+    .PAED {
+      color: #00aa00;
+    }
+    .CAEL {
+      color: #999999;
+    }
+    .SYCA {
+      color: #999999;
+    }
+    .RUND {
+      color: red;
+    }
   }
 
   .content {
     display: flex;
     width: 100%;
-    height: 250rpx;
+    height: 230rpx;
 
     .product-img {
-      width: 35%;
-
+      width: 30%;
+      border-radius : 0.5em;
+      overflow: hidden;
+      border: 1px solid #f8f8f8;
       img {
         width: 100%;
         height: 100%;
@@ -185,9 +201,11 @@ export default {
     }
   }
 }
-
+  .order-card-panel:first-child{
+    border-top: none;
+  }
 .product-info {
-  padding-left: 10%;
+  padding-left: 1em;
   box-sizing: border-box;
   font-size: 25rpx;
   flex: 1;
@@ -197,7 +215,13 @@ export default {
 
   .title {
     font-size: 1.2em;
-    padding: 10rpx 0;
+    margin: 10rpx 0;
+    word-break: break-all;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 2;
+    overflow: hidden;
   }
 
   .desc {
@@ -206,8 +230,8 @@ export default {
   }
 
   .price {
-    color: #ed3f14;
-    font-size: 1.2em;
+    color: #ff5500;
+    font-size: 1.4em;
     font-weight: bold;
   }
 

+ 2 - 2
src/components/swiper.vue

@@ -39,8 +39,9 @@ export default {
        wx.navigateTo({ url });
      }else if(type == 'web_view'){
        // webview
+       wx.setStorageSync('webviewUrl', item.redirectPath)
        wx.navigateTo({
-         url: '/pages/h5Page/main?src='+url
+         url: '/pages/pagesA/h5Page/main'
        })
      }
     }
@@ -52,7 +53,6 @@ export default {
 <style lang="stylus" scoped>
 .swiper {
   height: 350rpx !important;
-
   img {
     height: 100%;
     width: 100%;

+ 26 - 20
src/pages/bundleDetail/index.vue

@@ -3,6 +3,15 @@
     <div class=" bundle-detail page--loading" :class="{'page--finished': finished }">
       <b-card :options="options" type="detail" />
       <div class="detail-info">
+        <div class="bundle-detail-desc" v-if="options.validityTermType != 'PERMANENT_VALIDITY'">
+          <div class="bundle-detail-title">
+            <van-icon name="stop" class="detail-title-icon" /> 套餐有效期:
+            <div class="detail-text">
+              <span v-if="options.validityTermType == 'FIXED_TIME'">{{options.validityTermValue}}过期</span>
+              <span v-if="options.validityTermType == 'FIXED_DAYS'">购买后{{options.validityTermValue}}天过期</span>
+            </div>
+          </div>
+        </div>
         <div class="bundle-detail-desc">
           <div class="bundle-detail-title">
             <van-icon name="stop" class="detail-title-icon" /> 套餐描述:
@@ -11,18 +20,18 @@
             {{options.description}}
           </div>
         </div>
-
-        <div class="bundle-detail-title">
-          <van-icon name="stop" class="detail-title-icon" /> 套餐详情:
-        </div>
-        <div class="detail-content-imgs">
-          <image :src="img" class="detail-img"  v-for="(img, index) in imgList" :key="index" mode="widthFix" />
+        <div class="bundle-detail-desc">
+          <div class="bundle-detail-title">
+            <van-icon name="stop" class="detail-title-icon" /> 套餐详情:
+          </div>
+          <div class="detail-content-imgs">
+            <image :src="img" class="detail-img"  v-for="(img, index) in imgList" :key="index" mode="widthFix" />
+          </div>
         </div>
-
       </div>
-      <div class="submit-btn" v-if="options.showFlag === '1'&&options.stock>0" @click="sumbitOrder">
+      <!-- <div class="submit-btn" v-if="options.showFlag === '1'&&options.stock>0" @click="sumbitOrder">
         立即下单
-      </div>
+      </div> -->
       <div class="submit-btn" style="background:#ccc" v-if="options.showFlag === '0'">
         套餐已下线
       </div>
@@ -71,7 +80,7 @@ export default {
             url: `/pages/placeOrder/main?id=${id}&couponId=${couponId}&customerCouponId=${customerCouponId}`
           });
         } else {
-          wx.navigateTo({
+          wx.redirectTo({
             url: `/pages/login/main?lanuch=false&path=` + encodeURIComponent(`/pages/bundleDetail/main?id=${id}`)
           });
         }
@@ -130,6 +139,7 @@ export default {
 <style lang="stylus" scoped>
 .bundle-detail-page {
   height: 100vh;
+  font-size : 14px;
 }
 
 .bundle-detail {
@@ -144,7 +154,7 @@ export default {
     right: 0;
     bottom: 0;
     height: 50px;
-    background-color: #f44;
+    background-color: #ff5500;
     text-align: center;
     line-height: 50px;
     font-size: 1.2em;
@@ -157,21 +167,18 @@ export default {
   margin-bottom: 50px;
 
   .bundle-detail-desc {
-    border-top: 1rpx solid #dcdee2;
-    border-bottom: 1rpx solid #dcdee2;
-    margin: 10px 0;
-    padding: 5px 0;
+    border-top: 1rpx solid #f8f8f8;
+    padding: 10px 0;
 
     .detail-text {
-      font-size: 0.8em;
-      padding: 5px 5px 0 2px;
+      font-size: 0.9em;
+      padding: 10px 10px 0 5px;
       box-sizing: border-box;
     }
   }
 
   .bundle-detail-title {
-    font-size: 0.9em;
-
+    font-size: 1em;
     .detail-title-icon {
       position: relative;
       top: 4rpx;
@@ -180,7 +187,6 @@ export default {
 
   .detail-content-imgs {
     margin-top: 5px;
-
     .detail-img {
       width: 100%;
       height: auto;

+ 3 - 3
src/pages/couponList/index.vue

@@ -6,7 +6,7 @@
           <div class="coupon-item" v-for="item in list1" :key="item.couponId">
             <v-coupon :options="item" :canUse="true" @use="useCoupon" />
           </div>
-           <no-data :options="list1"/>
+           <no-data name="暂无优惠卷" :options="list1"/>
         </scroll-view>
 
       </van-tab>
@@ -15,7 +15,7 @@
           <div class="coupon-item" v-for="item in list2" :key="item.couponId">
             <v-coupon :options="item" />
           </div>
-          <no-data :options="list2"/>
+          <no-data name="暂无优惠卷" :options="list2"/>
         </scroll-view>
       </van-tab>
       <van-tab title="已过期">
@@ -23,7 +23,7 @@
           <div class="coupon-item" v-for="item in list0" :key="item.couponId">
             <v-coupon :options="item" :canUse="false" :status="false" />
           </div>
-          <no-data :options="list0"/>
+          <no-data name="暂无优惠卷" :options="list0"/>
         </scroll-view>
       </van-tab>
     </van-tabs>

+ 145 - 85
src/pages/index/index.vue

@@ -1,50 +1,84 @@
 <template>
   <div class="container index-page">
     <div class="header">
-      <img class="logo" src="https://zyyc.oss-cn-beijing.aliyuncs.com/shop_mini/icons/logo-full.png" alt="">
-      <div class="header-ads">
-        <roll-ad :options="rollads"></roll-ad>
-      </div>
+      <img class="logo" src="/static/img/logos.png" alt="">
+      <!-- <div class="header-ads">
+        养出色,爱生活
+      </div> -->
     </div>
     <view>
       <Swiper :banners="banner" />
     </view>
-
+    <!-- 热门活动 -->
+    <div class="meal-title"><div><span></span>热门活动</div></div>
     <ul class="meal-panel">
       <li class="meal-items" v-for="item in items" :key="item.id" @click="toDetail(item)">
         <div class="item-left">
           <div class="item-title">
             <span>{{item.name}}</span><span class="tag" v-if="item.tag && item.tag.length > 0">{{item.tag}}</span>
           </div>
-          <div class="item-desc">{{item.enName}}</div>
         </div>
         <img class="item-right-img" :src="item.icon" alt="">
       </li>
     </ul>
-    <div class="ad-panel">
-      <img class="ad-img" :src="ad.icon" alt="" @click="toDetail(ad)">
+    <!-- 我的订单 -->
+    <div class="meal-title"><div><span></span>我的订单</div><div v-if="isLogin" class="mores" @click="toViewOrder">查看更多<van-icon name="arrow" /></div></div>
+    <scroll-view scroll-y v-if="isLogin" class="content">
+      <order-card v-for="item in orderList" :options="item" :key="item.id" @refresh="getOrderList"></order-card>
+      <no-data :options="orderList" name="暂无订单"/>
+    </scroll-view>
+    <div class="noLogin" v-else>
+      <div>请登录后查看您的订单</div>
+      <div>
+        <span @click="toLogin">立即登录</span>
+      </div>
     </div>
   </div>
 </template>
 
 <script>
 import { getIndexData, getRollAd } from '@/api/api';
+import { customerBundleList } from '@/api/bundle';
+import { checkLogin } from '@/api/login';
+import NoData from '@/components/NoData';
+import OrderCard from '@/components/OrderCard';
 import Swiper from '@/components/swiper';
 import RollAD from '@/components/RollAD';
 import storage from '@/utils/storage.js'
 
 export default {
-  components: { Swiper, 'roll-ad': RollAD },
+  components: { Swiper, 'roll-ad': RollAD , 'order-card': OrderCard, 'no-data': NoData},
   name: 'indexPage',
   data() {
     return {
       ad: {},
       items: [],
       banner: [],
-      rollads: []
+      orderList: [],
+      isLogin: false
     };
   },
   methods: {
+    getOrderList() {
+      const _this = this;
+      customerBundleList({}).then(res => {
+        if (res.status === '200') {
+          _this.orderList = []
+          res.data.map((item, index) => {
+            if(index < 5){
+              _this.orderList.push(item)
+            }
+          })
+        } else {
+          wx.showToast({
+            title: res.message,
+            icon: 'none',
+            duration: 2500
+          });
+        }
+        wx.hideLoading();
+      });
+    },
     toDetail(item) {
       console.log(item)
       let url = item.redirectPath + '?title=' + item.name
@@ -61,8 +95,9 @@ export default {
         wx.navigateTo({ url });
       }else if(type == 'web_view'){
         // webview
+        wx.setStorageSync('webviewUrl', item.redirectPath)
         wx.navigateTo({
-          url: '/pages/h5Page/main?src='+url
+          url: '/pages/pagesA/h5Page/main'
         })
       }
     },
@@ -93,57 +128,60 @@ export default {
     	});
     },
     setIndexData(data){
-      const _ad = data.filter(item => item.type.toLocaleUpperCase() === 'AD');
       this.banner = data.filter(item => item.type.toLocaleUpperCase() === 'BANNER');
       this.items = data.filter(item => item.type.toLocaleUpperCase() === 'LIST');
-      if (_ad && _ad.length > 0) {
-        this.ad = _ad[0];
-      }
       wx.hideLoading();
+    },
+    getHd(){
+      wx.showLoading({
+        mask: true,
+        title: '加载中'
+      });
+       getIndexData().then(res => {
+         console.log(res,'---')
+         if (res.status === '200') {
+           // 设置首页数据
+           this.setIndexData(res.data)
+         }
+       });
+    },
+    checkLogin(){
+      checkLogin().then(res => {
+        if (res.status === '200') {
+          this.getOrderList()
+          this.isLogin = true
+        } else {
+          this.isLogin = false
+        }
+      });
+    },
+    toLogin(){
+      wx.navigateTo({
+        url: '/pages/login/main?lanuch=true&path=' + encodeURIComponent('/pages/index/main')
+      })
+    },
+    toViewOrder(){
+      wx.navigateTo({
+        url: '/pages/order/main'
+      });
     }
   },
   onLoad() {
     this.checekAppUpdate()
   },
   onShow() {
-    wx.showLoading({
-      mask: true,
-      title: '加载中'
+    this.checkLogin()
+    this.getHd()
+    wx.showShareMenu({
+        withShareTicket: true,
+        menus: ['shareAppMessage', 'shareTimeline']
     });
-    // 从缓存获取数据
-    let rollads = storage.get('rollads')
-    let indexData = storage.get('indexData')
-    if(rollads){
-      this.rollads = rollads
-      wx.hideLoading();
-    }else{
-      getRollAd().then(res => {
-        if (res.status === '200') {
-          let list = res.data;
-          let len = list.length;
-          this.rollads = list.slice(0,len-(len%3));
-          // 缓存
-          storage.put('rollads', this.rollads, 3)
-        }
-      });
-    }
-    if(indexData){
-      // 设置首页数据
-      this.setIndexData(indexData)
-    }else{
-      getIndexData().then(res => {
-        console.log(res,'---')
-        if (res.status === '200') {
-          // 设置首页数据
-          this.setIndexData(res.data)
-          // 缓存
-          storage.put('indexData', res.data, 3)
-        }
-      });
-    }
   },
-  onShareAppMessage: function () {
-
+  onShareAppMessage(res) {  //  用户点击右上角转发
+    console.log(res)
+  },
+  onShareTimeline(res) {  //  用户点击右上角转发到朋友圈
+    console.log(res)
   }
 };
 </script>
@@ -158,31 +196,50 @@ export default {
   box-sizing: border-box;
 
   .header {
-    padding: 20rpx 55rpx;
+    padding: 20rpx;
     display: flex;
-    height: 90rpx;
-    justify-content: space-between;
+    align-items : center;
   }
 
   .header-ads {
-    font-size: 20rpx;
-  }
-
-  .header-ads .item-ad {
-    width: 285rpx;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
+    font-size: 26rpx;
+    padding : 0 20rpx;
   }
 
   .logo {
-    height: 70rpx;
-    width: 270rpx;
+    width: 400rpx;
+    height: 112rpx;
+  }
+  .meal-title{
+    padding: 15rpx 30rpx 15rpx 20rpx;
+    background : #f8f8f8;
+    margin-top : 20rpx;
+    font-size : 34rpx;
+    display: flex;
+    align-items: center;
+    justify-content : space-between;
+    > div{
+      &:first-child{
+        display: flex;
+        align-items: center;
+        span{
+          border-left : 3px solid #ff8811;
+          height : 1em;
+          display : block;
+          padding-left : 10rpx;
+        }
+      }
+    }
+    .mores{
+      font-size : 24rpx;
+      color : #00aaff;
+      display : flex;
+      align-items : center;
+    }
   }
-
   .meal-panel {
-    padding: 15rpx 55rpx;
-    font-size: 0.9em;
+    padding: 0 30rpx;
+    font-size: 32rpx;
   }
 
   .meal-items {
@@ -193,26 +250,23 @@ export default {
   }
 
   .meal-items + .meal-items {
-    border-top: 1px solid #e9eaec;
+    border-top: 1px solid #f8f8f8;
   }
 
   .item-title {
     display: flex;
     align-items: center;
-    font-size: 18px;
+    font-size: 34rpx;
   }
 
   .item-title .tag {
     display: inline-block;
-    margin-left: 10px;
-    background-color: #ed3f14;
-    font-size: 0.6em;
+    margin-left: 5px;
+    background-color: #ff8811;
+    border-radius: 30px;
+    font-size: 20rpx;
     color: #fff;
-    padding: 0 10px 2px 10px;
-  }
-
-  .item-desc {
-    font-size: 0.6em;
+    padding: 0 5px 2px 5px;
   }
 
   .item-right-img {
@@ -220,16 +274,22 @@ export default {
     border-radius: 50%;
     width: 80rpx;
     height: 80rpx;
-    padding: 5rpx;
-  }
-
-  .ad-panel {
-    padding: 15rpx 60rpx;
   }
 
-  .ad-img {
-    width: 100%;
-    height: 135rpx;
+  .noLogin{
+    font-size : 28rpx;
+    text-align : center;
+    padding: 30rpx;
+    > div{
+      padding : 10rpx 0;
+    }
+    span{
+      width : 40%;
+      padding : 15rpx;
+      border: 1px solid #eee;
+      border-radius : 6rpx;
+      display : inline-block;
+    }
   }
 }
 </style>

+ 17 - 8
src/pages/login/index.vue

@@ -1,10 +1,10 @@
 <template>
   <div class="container login-panel">
-    <img class="logo-img" src="https://zyyc.oss-cn-beijing.aliyuncs.com/shop_mini/icons/logo-full.png">
+    <img class="logo-img" src="/static/img/logos.png">
     <van-button plain hairline type="primary" class="login-btn" round open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
       <div class="login-btn-content">
         <div class="wechat-img"></div>
-        <div>微信登</div>
+        <div>微信登</div>
       </div>
     </van-button>
 
@@ -68,10 +68,15 @@ export default {
             wx.setStorageSync('phone', res.data.phone);
             wx.setStorageSync('userId', res.data.userId);
             wx.removeStorageSync('openid');
-            if (this.path === '/pages/index/main' || this.lanuch) {
-              wx.reLaunch({ url: this.path });
-            } else {
-              wx.redirectTo({ url: this.path });
+            // if (this.path === '/pages/index/main' || this.lanuch) {
+            //   wx.reLaunch({ url: this.path });  //  关闭所有页面,打开到应用内的某个页面
+            // } else {
+            //   wx.redirectTo({ url: this.path });  //  关闭当前页面,跳转到应用内的某个页面
+            // }
+            if(this.path === '/pages/index/main' || this.path === '/pages/member/main'){  //  tab页
+              wx.switchTab({ url: this.path })
+            }else{  //  普通页
+              wx.redirectTo({ url: this.path })
             }
           } else {
             wx.showToast({
@@ -96,6 +101,10 @@ export default {
     if (path) {
       this.path = decodeURIComponent(path);
     }
+  },
+  onUnload() {
+    //  避免从登录页返回到个人中心页(能跳转登录页则是未登录的,不应看到个人中心信息)
+    // this.gotoHome()
   }
 };
 </script>
@@ -109,8 +118,8 @@ export default {
 }
 
 .logo-img {
-  width: 400rpx;
-  height: 100rpx;
+  width: 444rpx;
+  height: 124rpx;
 }
 
 .wechat-img {

+ 26 - 8
src/pages/member/index.vue

@@ -6,6 +6,7 @@
       </div>
       <div class="user-nickname">
         <open-data type="userNickName"></open-data>
+        <div class="member-user-phone">{{phone}}</div>
       </div>
     </div>
     <div class="menu-list">
@@ -17,9 +18,9 @@
         <van-cell size="large" is-link title="我的订单" url="/pages/order/main">
           <van-icon slot="icon" class="title-icon" name="balance-list" />
         </van-cell>
-        <!-- <van-cell size="large" is-link title="洗车机" @click="getCode">
-          <van-icon slot="icon" class="title-icon" name="graphic" />
-        </van-cell> -->
+        <van-cell size="large" is-link title="我的套餐" url="/pages/myPackage/main">
+          <van-icon slot="icon" class="title-icon" name="balance-list" />
+        </van-cell>
         <van-cell size="large" is-link title="联系客服" @click="callPhone">
           <van-icon slot="icon" class="title-icon" name="service" />
         </van-cell>
@@ -36,17 +37,17 @@
 import { getCouponCount } from '@/api/coupon';
 import { checkLogin, zyycLogout } from '@/api/login';
 export default {
-
   data() {
     return {
       canUsedCount: 0,
-      isLogin: false
+      isLogin: false,
+      phone: ''
     };
   },
   methods: {
     callPhone() {
       wx.makePhoneCall({
-        phoneNumber: '4001616312'
+        phoneNumber: '4009652651'
       });
     },
     getCoupon() {
@@ -109,7 +110,7 @@ export default {
       if (res.status === '200') {
         this.getCoupon();
       } else {
-        wx.redirectTo({
+        wx.navigateTo({
           url: '/pages/login/main?lanuch=true&path=' + encodeURIComponent('/pages/member/main')
         });
       }
@@ -118,7 +119,19 @@ export default {
     });
   },
   onShow() {
+    this.phone = wx.getStorageSync('phone')
+    checkLogin().then(res => {
+      if (res.status === '200') {
 
+      } else {
+        wx.navigateTo({
+          url: '/pages/login/main?lanuch=true&path=' + encodeURIComponent('/pages/member/main')
+        });
+      }
+    })
+  },
+  onUnload() {
+     mpvue.setStorageSync('request-qbcgj',false)
   }
 };
 </script>
@@ -126,6 +139,7 @@ export default {
 <style lang="stylus" scoped>
 .container {
   padding: 15rpx 40rpx;
+  font-size : 14px;
 }
 
 .header {
@@ -149,7 +163,7 @@ export default {
     display: flex;
     align-items: center;
     font-size: 1.4em;
-    color: #ed3f14;
+    color: #ff8811;
     margin-right: 25rpx;
   }
 }
@@ -158,4 +172,8 @@ export default {
   position: relative;
   top: 25vh;
 }
+.member-user-phone{
+  color: #5a5a5a;
+  margin-top: 10rpx;
+}
 </style>

+ 271 - 0
src/pages/myPackage/index.vue

@@ -0,0 +1,271 @@
+<template>
+    <view class="content">
+      <scroll-view scroll-y>
+        <van-collapse :value="activeNames" @change="onChange">
+            <view class="vant-item" v-for="(item,index) in dataList">
+              <van-collapse-item style="margin-bottom: 10px;" :key="index" :title="item.bundleName" :name="index">
+              		<template v-if="item.customerBundleItemList">
+              		      <view class="item-title">
+              		      	<view class="list-item-left ">
+              		       		<text style="font-size: 30rpx;">服务</text>
+              		      	</view>
+
+              		      </view>
+              		      	<view  v-for="(items,indexx) in item.customerBundleItemList" :key="indexx"  class="list-item border-bottom-dashed">
+              		      		<view class="list-item-left">
+              		      			<text>{{items.itemName}}</text>
+              		      		</view>
+              		      	    <view class="list-item-right">
+              		      	    	<text>余{{items.itemTimes}}次</text>
+              		      	    </view>
+              		      	</view>
+              		 </template>
+              		<template v-if="item.customerBundlePartList">
+              			<view class="item-title ">
+              				<view class="list-item-left">
+              			 		<text style="font-size: 30rpx;">配件</text>
+              				</view>
+
+              			</view>
+              			<view v-for="(items,indexxx) in item.customerBundlePartList" :key="indexxx"  class="list-item border-bottom-dashed">
+              				<view class="list-item-left">
+              					<text>{{items.partName}}</text>
+              				</view>
+              			    <view class="list-item-right">
+              			    	<text>余{{items.quantity}} {{items.unit?items.unit:''}}</text>
+              			    </view>
+              			</view>
+              		</template>
+              	  <view @click="intoDetail(item)" class="show-detail-box">
+              		   <view class="show-detail">
+              		   	   <text>查看使用明细</text>
+              		   	   <img src="/static/img/show.png" >
+              		   </view>
+
+              	   </view>
+              </van-collapse-item>
+              <view class="item-bottom"></view>
+            </view>
+        </van-collapse>
+        <no-data :options="dataList" name="暂无套餐"/>
+      </scroll-view>
+    </view>
+</template>
+
+<script>
+  import {getQbcgjLogin,getPackageList} from '@/api/packageRequest.js'
+  import NoData from '@/components/NoData';
+    export default {
+        components: {
+          'no-data': NoData
+        },
+        data() {
+            return {
+            activeNames: [],
+            dataList:[],
+            isLoading:false , //判断页面数据是否请求完全
+          }
+        },
+        methods: {
+         RondomPass(number){
+              var arr = new Array;
+              var arr1 = new Array("0","1","2","3","4","5","6","7","8","9");
+              var nonceStr=''
+              for(var i=0;i<number;i++){
+                  var n = Math.floor(Math.random()*10);
+                  arr[i] =arr1[n] ;
+                  nonceStr+=arr1[n];
+              }
+              return nonceStr
+          },
+          // 丘比养车登录车管家,获取接口凭证
+          getCgjLogin() {
+            let mobile = wx.getStorageSync('phone')
+            let randCode = this.RondomPass(10)
+            console.log(randCode,'randCode')
+            getQbcgjLogin({mobile:mobile,randCode:randCode}).then(res=>{
+              console.log(res,'rrrrrrr')
+              if (res.status == '200') {
+                if(res.data){
+                  mpvue.setStorageSync('token_cgj',res.data.token)
+                  this.getPackageData()
+                } else {
+                  this.dataList = []
+                }
+              } else {
+                wx.showToast({
+                  title: res.message,
+                  icon: 'none',
+                  duration: 2500
+                });
+              }
+            })
+          },
+          // 获取套餐列表
+          getPackageData() {
+            getPackageList({}).then(res => {
+              wx.hideLoading()
+              if (res.status === '200') {
+                this.dataList = res.data
+              } else {
+                wx.showToast({
+                  title: res.message,
+                  icon: 'none',
+                  duration: 2500
+                });
+              }
+              this.isLoading = true
+              wx.hideLoading();
+            });
+          },
+          // 进入套餐详情
+          intoDetail(item) {
+            wx.navigateTo({
+              url: '/pages/packageDetail/main?customerBundleId='+item.id +'&bundleName='+item.bundleName
+            })
+          },
+          // 手风琴改变
+          onChange(event) {
+            console.log(event,'eeeeee')
+            this.activeNames = event.mp.detail
+          }
+        },
+        onLoad() {
+          wx.showLoading({
+            mask: true,
+            title: '加载中'
+          })
+          this.isLoading = false
+          this.activeNames = []
+          this.dataList = []
+          this.getCgjLogin()
+        },
+        onReady() {
+
+        },
+    }
+</script>
+
+<style lang="stylus" >
+	.content{
+    padding: 15rpx 40rpx;
+    font-size : 14px;
+    background: rgb(245,245,245);
+    height: calc(100vh);
+    overflow: hidden;
+    overflow-y: scroll;
+	}
+	.no-data{
+		font-size: 36rpx;
+		background: rgb(245,245,245);
+		width: 100%;
+		height: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		color: #999;
+	}
+  .load {
+    height: calc(100vh);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+
+  }
+	.van-collapse:before{
+			position: absolute;
+			z-index: 10;
+			right: 0;
+			top: 0;
+			left: 0;
+			height: 0;
+			content: '';
+			-webkit-transform: scaleY(0.5);
+			transform: scaleY(0.5);
+	}
+ .item-bottom{
+   width: 100%;
+   height: 10px;
+   background-color: rgb(245,245,245);
+ }
+  .van-collapse-cell--open{
+  	background: #FFFFFF;
+  }
+  .van-collapse-cell{
+  	font-size: 30rpx;
+  	color: rgb(40,40,40);
+  	border-bottom:20rpx solid rgb(245,245,245);
+  }
+  .van-collapse-cell__title{
+  	font-size: 34rpx;
+  }
+  .van-collapse-cell__title :after {
+  	position: absolute;
+  	z-index: 3;
+  	right: 0;
+  	bottom: 0rpx;
+  	left: 0px;
+  	height:0rpx;
+  	content: '';
+  	-webkit-transform: scaleY(0.5);
+  	transform: scaleY(0.5);
+  	background:rgb(245,245,245) ;
+  }
+  .show-detail-box{
+  	height: 110rpx;
+  	text-align:center;
+  	line-height:110rpx;
+  }
+  .show-detail{
+  		display: flex;
+  		align-items: center;
+  		justify-content: center;
+  		font-size: 28rpx;
+  		color: rgb(40,40,40);
+  }
+  .show-detail image{
+  	width: 18rpx;
+  	height: 14rpx;
+  	margin-left: 20rpx;
+  }
+  .list-item-title{
+  	width: 100%;
+  	height: 120rpx;
+  	line-height: 110rpx;
+  }
+  .list-item-left{
+  	margin-left: 30rpx;
+  }
+  .item-title{
+  	margin-top: 20rpx;
+  	width: 100%;
+  	height: 60rpx;
+  	line-height: 60rpx;
+    color: rgb(40,40,40);
+  }
+  .border-bottom-solid{
+  	border-bottom: 1px solid rgb(228,228,228);
+  }
+  .border-bottom-dashed{
+  	border-bottom: 1px dashed rgb(228,228,228);
+  }
+  .list-item{
+  	font-size: 28rpx;
+  	width: 90%;
+  	height:110rpx ;
+  	margin-left: 30rpx;
+    color: rgb(40,40,40);
+  	display: flex;
+  	justify-content: space-between;
+  	align-items:center;
+  }
+  .list-item-right{
+  	display: flex;
+  	align-items: center;
+  }
+  .back-img{
+  		width: 16rpx;
+  		height: 22rpx;
+  		margin-left: 20rpx;
+  	}
+</style>

+ 5 - 0
src/pages/myPackage/main.js

@@ -0,0 +1,5 @@
+import Vue from 'vue';
+import App from './index';
+
+const app = new Vue(App);
+app.$mount();

+ 8 - 0
src/pages/myPackage/main.json

@@ -0,0 +1,8 @@
+{
+  "navigationBarTitleText": "我的套餐",
+  "usingComponents": {
+    "van-loading": "../../../static/vant/loading/index",
+    "van-collapse": "../../../static/vant/collapse/index",
+    "van-collapse-item": "../../../static/vant/collapse-item/index"
+  }
+}

+ 86 - 25
src/pages/orderDetail/index.vue

@@ -7,18 +7,21 @@
       </div>
       <div class="content">
         <div class="product-img" @click="toDetail">
-          <img class="img" :src="bundle.icon2" alt="">
+          <img v-if="bundle.icon2" class="img" :src="bundle.icon2" alt="">
+          <div v-else class="center-con">
+            <img class="img" src="/static/img/ic_shop_title_06.png" alt="">
+          </div>
         </div>
         <div class="product-info">
           <div @click="toDetail">
-            <div class="title">{{bundle.name}}</div>
-            <div class="desc">{{bundle.tag}}</div>
+            <div class="title">{{detailData ? detailData.bundleName : ''}}</div>
+            <div class="desc">{{bundle.tag ? bundle.tag : ''}}</div>
           </div>
-          <div>
+          <!-- <div>
             <div class="price">
-              ¥{{bundle.price}}
+              ¥{{bundle.price ? bundle.price : 0}}
             </div>
-          </div>
+          </div> -->
         </div>
       </div>
       <div class="package-info" v-if="orderBundle.orderFlag === 'PAED'">
@@ -26,10 +29,10 @@
           <!-- <form @submit="formSubmit" class="formId"  report-submit="true">
             <button form-type="submit"></button>
           </form> -->
-          <van-cell :title="item.itemName" v-for="item in customerBundleItemList" :key="item.id" :id='item.id' is-link @click="subscribeMessage">
+          <van-cell :title="item.itemName" :label="item.expiryDateStr" v-for="item in customerBundleItemList" :key="item.id" :id='item.id' is-link @click="subscribeMessage">
             <div class="package-qr">
               <span>剩余{{item.remainTimes}}次</span>
-              <van-icon class="icon-qr" size="1.5em" name="qr" color="#f44" />
+              <van-icon class="icon-qr" size="1.5em" name="qr" color="#ff5500" />
             </div>
           </van-cell>
         </van-cell-group>
@@ -37,6 +40,10 @@
           请将对应服务的二维码出示给门店进行消费
         </div>
       </div>
+      <!-- 已支付 -->
+      <div class="look-record" v-if="orderBundle.orderFlag === 'PAED'" @click="goPage">
+        查看使用记录
+      </div>
       <div class="order-infos">
         <van-cell-group>
           <van-cell title="订单编号" :value="orderBundle.number" class="order-number">
@@ -55,7 +62,7 @@
             <span class="price">¥-{{orderBundle.couponAmount}}</span>
           </van-cell>
 
-          <van-cell title="实付款" v-if="orderBundle.orderFlag === 'PAED'">
+          <van-cell title="实付款" v-if="orderBundle.orderFlag === 'PAED'||orderBundle.orderFlag === 'RUND'">
             <span class="price">¥{{orderBundle.payedAmount}}</span>
           </van-cell>
           <van-cell title="待付款" v-else>
@@ -65,18 +72,19 @@
       </div>
       <div class="order-control" v-if="orderBundle.orderFlag === 'UNPA'">
         <van-button class="btn" plain size="large" @click="cancelHandler">取消订单</van-button>
-        <van-button class="btn" size="large" type="danger" :disabled="payLoading" :loading="payLoading" @click="toPay">立即支付</van-button>
+        <!-- <van-button class="btn" size="large" type="danger" :disabled="payLoading" :loading="payLoading" @click="toPay">立即支付</van-button> -->
       </div>
-      <div class="order-control" v-if="orderBundle.orderFlag === 'CAEL' || orderBundle.orderFlag === 'SYCA'">
+      <!-- <div class="order-control" v-if="orderBundle.orderFlag === 'CAEL' || orderBundle.orderFlag === 'SYCA'">
         <van-button class="btn" size="large" type="danger" @click="rePay">重新购买</van-button>
-      </div>
-      <div class="order-control" v-if="orderBundle.orderFlag === 'PAED'">
+      </div> -->
+      <!-- <div class="order-control" v-if="orderBundle.orderFlag === 'PAED'">
         <van-button class="btn" size="large" type="danger" @click="rePay">再次购买</van-button>
-      </div>
+      </div> -->
     </div>
     <van-popup :show="showQRcodePopup" @close="closePopup">
       <div class="qrcode-panel">
         <canvas class="qrcode-img" canvas-id="mycanvas" />
+        <p class="qrcode-des">二维码有效期24小时</p>
       </div>
     </van-popup>
   </div>
@@ -89,17 +97,22 @@ import { subscribePayMessage, subscribeHxMessage } from '@/utils/index.js';
 export default {
   components: {},
   name: 'package',
-
   data() {
     return {
       payLoading: false,
       finished: false,
       showQRcodePopup: false,
-      bundle: {},
+      bundle: {
+        icon2: null,
+        name: '',
+        tag: null,
+        price: 0
+      },
       coupon: undefined,
       orderBundle: {},
       customerBundleItemList: [],
-      formId:null
+      formId:null,
+      detailData: null
     };
   },
   computed: {
@@ -119,7 +132,8 @@ export default {
         'INPA': '支付中',
         'PAED': '已支付',
         'CAEL': '已取消',
-        'SYCA': '已取消'
+        'SYCA': '已取消',
+        'RUND': '已退款'
       };
       return dict[this.orderBundle.orderFlag];
     }
@@ -191,10 +205,23 @@ export default {
       const _this = this;
       orderDetail({ id: id}).then(res => {
         if (res.status === '200') {
-          _this.bundle = res.data.bundle;
+          _this.detailData = res.data || null
+          _this.bundle = res.data.bundle || {icon2: null, name: '', tag: null, price: 0};
           _this.coupon = res.data.coupon;
           _this.orderBundle = res.data.orderBundle;
-          _this.customerBundleItemList = res.data.customerBundleItemList;
+          res.data.customerBundleItemList.map(item => {
+            if((item.expiryDate && (item.expiryDate.substr(0,10) != '2099-01-01')) && item.cycleFlag== 0){
+              item.expiryDateStr = '过期时间:' + item.expiryDate
+            }else{
+              item.expiryDateStr = '过期时间:' + '--'
+            }
+            // if(item.expiryDate && (item.expiryDate.substr(0,10) != '2099-01-01') && item.cycleFlag== 0){
+            //   item.expiryDateStr = '过期时间:' + item.expiryDate
+            // }else{
+            //   item.expiryDateStr = '过期时间:' + '--'
+            // }
+          })
+          _this.customerBundleItemList = res.data.customerBundleItemList
         } else {
           wx.showToast({
             title: res.message,
@@ -220,6 +247,12 @@ export default {
     	  }
     	});
     },
+    //  查看使用记录
+    goPage(){
+      wx.navigateTo({
+        url: `/pages/pagesA/usageRecord/main?billNo=${this.detailData.orderBundleNo}`
+      })
+    },
     // 去支付
     toPay() {
       let _this = this
@@ -259,7 +292,6 @@ export default {
 	  })
     }
   },
-
   onShow() {
     wx.showLoading({
       mask: true,
@@ -272,10 +304,16 @@ export default {
     wx.hideLoading();
     this.finished = false;
     this.showQRcodePopup = false;
-    this.bundle = {};
+    this.bundle = {
+      icon2: null,
+      name: '',
+      tag: null,
+      price: 0
+    };
     this.coupon = undefined;
     this.orderBundle = {};
     this.customerBundleItemList = [];
+    this.detailData = null
   }
 };
 </script>
@@ -294,6 +332,14 @@ export default {
   border:none;
   padding:0;
 }
+.look-record{
+  margin: 10rpx 0;
+  font-size: 28rpx;
+  font-weight: bold;
+  background-color: #fff;
+  line-height: 72rpx;
+  text-align center;
+}
 .order-detail-panel {
   font-size: 30rpx;
 
@@ -304,7 +350,7 @@ export default {
     padding: 15rpx 0;
 
     .title {
-      color: #f44;
+      color: #ff5500;
       font-weight: bold;
       font-size: 1.2em;
       padding-bottom: 10rpx;
@@ -331,10 +377,19 @@ export default {
         width: 100%;
         height: 100%;
       }
+      .center-con{
+        text-align: center;
+        height: 100%;
+        img{
+          display: inline-block;
+          width: 204rpx;
+          height: 100%;
+        }
+      }
     }
 
     .product-info {
-      padding-left: 10%;
+      padding-left: 1em;
       box-sizing: border-box;
       font-size: 25rpx;
       flex: 1;
@@ -389,7 +444,7 @@ export default {
     margin-top: 10rpx;
 
     .price {
-      color: #f44;
+      color: #ff5500;
       font-weight: bold;
     }
   }
@@ -414,6 +469,12 @@ export default {
   height: 75vw;
   background-color: #fff;
 }
+.qrcode-des{
+  text-align: center;
+  font-size: 26rpx;
+  padding: 25rpx 0;
+  background-color: #f4f4f5;
+}
 
 .order-number {
   /deep/ .van-cell__value {

+ 207 - 0
src/pages/packageDetail/index.vue

@@ -0,0 +1,207 @@
+<template>
+    <view class="content">
+       <view class="header-cont">
+       	{{bundleName}}
+       </view>
+		<view class="list-container">
+      <scroll-view scroll-y>
+        <template v-if="packageData.orderItemList">
+          <view  class="list-item-title border-bottom-solid">
+              <view class="list-item-cont">
+                <view class="name">
+                  <text >服务名称</text>
+                </view>
+
+                <view class="num">
+                  <text >使用次数</text>
+                </view>
+                <view class="time">
+                  <text >使用时间</text>
+                </view>
+              </view>
+
+          </view>
+
+          <view class="list-item " v-for="(item,index) in packageData.orderItemList" :key="index">
+            <view class="list-item-cont" :class="index != (packageData.orderItemList.length-1) ?'border-bottom-dashed':'' ">
+              <view class="name">
+                <text>{{item.itemName}}</text>
+              </view>
+              <view class="num">
+                <text >{{item.time}}次</text>
+              </view>
+              <text class="time">{{item.orderDate}}</text>
+            </view>
+
+          </view>
+          <!-- 分割区域 -->
+          <view v-if="packageData.orderPartList" class="list-br">
+
+          </view>
+        </template>
+
+        <template v-if="packageData.orderPartList">
+          <view  class="list-item-title border-bottom-solid">
+              <view class="list-item-cont">
+                <view class="name">
+                  <text >配件名称</text>
+                </view>
+
+                <view class="num">
+                  <text >使用数量</text>
+                </view>
+                <view class="time">
+                  <text >使用时间</text>
+                </view>
+              </view>
+
+          </view>
+
+          <view class="list-item " v-for="(item,index) in packageData.orderPartList" :key="index">
+            <view class="list-item-cont " :class="index != (packageData.orderPartList.length-1) ?'border-bottom-dashed':'' ">
+              <view class="name">
+                <text>{{item.partName}}</text>
+              </view>
+              <view class="num">
+                <text >{{item.quantity}} {{item.unit?item.unit:''}}</text>
+              </view>
+              <text class="time">{{item.orderDate}}</text>
+            </view>
+
+          </view>
+        </template>
+      </scroll-view>
+      <no-data :options="!packageData.orderItemList && !packageData.orderPartList" name="暂无套餐使用明细"/>
+		</view>
+    </view>
+</template>
+
+<script>
+  import { getPackageDetail } from '@/api/packageRequest.js'
+  import NoData from '@/components/NoData';
+    export default {
+        components: {
+          'no-data': NoData
+        },
+        data() {
+            return {
+            bundleName:'', //套餐名称
+            packageData: {},
+          }
+        },
+        methods: {
+
+        },
+        onLoad:function(option){
+        	console.log(option,"option")
+        	wx.showLoading({
+        	    title: '加载中'
+        	});
+        	let id = option.customerBundleId
+        	this.bundleName = option.bundleName
+        	console.log(id,'id')
+        	getPackageDetail({id:id}).then(res => {
+        		wx.hideLoading();
+        		if(res.status == 200){
+        			this.packageData = res.data
+        			console.log(_this.packageData.orderItemList,"_this.packageData")
+        		}else{
+        			wx.showToast({
+        			    title: res.message,
+        			    duration: 2000
+        			})
+        		}
+        	})
+
+        },
+        onReady() {
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+	.content{
+		padding:0 20rpx;
+		background: rgb(245,245,245);
+		color: rgb(40,40,40);
+		font-size: 30rpx;
+    height: calc(100vh);
+    overflow: hidden;
+    overflow-y: scroll;
+	}
+	.header-cont{
+		height: 110rpx;
+		background-color: #fff;
+		margin-bottom: 20rpx;
+		border-radius: 10rpx;
+		text-align: center;
+		line-height: 110rpx;
+		font-weight: 600;
+		font-size: 32rpx;
+
+	}
+	.no-data{
+		font-size: 36rpx;
+		background: rgb(245,245,245);
+		width: 100%;
+		text-align: center;
+		line-height: 600rpx;
+		color: #999;
+
+	}
+	.list-container{
+		width: 100%;
+		background-color: #fff;
+		display:flex;
+		flex-direction:column;
+		align-items:center;
+		border-radius:10rpx;
+		font-size: 30rpx;
+	}
+  .list-br{
+  	height: 20rpx;
+  	width: 100%;
+  	background: rgb(245,245,245);
+  	margin: 10rpx 0;
+  }
+  .list-item-title{
+  	width: 100%;
+  	padding:0 30rpx;
+  	box-sizing:border-box;
+  }
+  .list-item-cont{
+  	padding: 30rpx 0;
+  	display: flex;
+  	align-items: center;
+  	justify-content: space-between;
+  }
+  .name{
+  	width: 40%;
+  }
+  .num{
+  	width: 30%;
+  	text-align: center;
+  }
+  .time{
+  	width: 30%;
+  	text-align: right;
+  }
+
+  .border-bottom-solid{
+  	border-bottom: 1px solid rgb(228,228,228);
+
+  }
+  .border-bottom-dashed{
+  	border-bottom: 1px dashed rgb(228,228,228);
+
+  }
+  .list-item{
+  	width: 100%;
+    padding:0 30rpx;
+    box-sizing:border-box;
+  	font-size: 26rpx;
+  }
+
+
+</style>

+ 0 - 0
src/pages/creatShareImage/main.js → src/pages/packageDetail/main.js


+ 3 - 0
src/pages/packageDetail/main.json

@@ -0,0 +1,3 @@
+{
+  "navigationBarTitleText": "套餐使用明细"
+}

+ 1 - 1
src/pages/creatShareImage/index.vue → src/pages/pagesA/creatShareImage/index.vue

@@ -172,7 +172,7 @@ export default {
       _this.creatBg()
     }else{
       wx.navigateTo({
-        url: `/pages/login/main?lanuch=false&path=` + encodeURIComponent(`/pages/creatShareImage/main`)
+        url: `/pages/login/main?lanuch=false&path=` + encodeURIComponent(`/pages/pagesA/creatShareImage/main`)
       });
     }
   }

+ 0 - 0
src/pages/h5Page/main.js → src/pages/pagesA/creatShareImage/main.js


+ 0 - 0
src/pages/creatShareImage/main.json → src/pages/pagesA/creatShareImage/main.json


+ 7 - 4
src/pages/h5Page/index.vue → src/pages/pagesA/h5Page/index.vue

@@ -19,17 +19,20 @@ export default {
   },
   onHide() {
   },
-  onUnload() {
+  onShareAppMessage: function (res) {
+  },
+  onShareTimeline: function(res) {
   },
   onShow() {
+    wx.show
   },
   onLoad(options) {
      wx.showLoading({
        title: '加载中',
      })
-     console.log(options.src)
-     this.src = options.src
-
+     // 获取页面地址
+     this.src =  wx.getStorageSync('webviewUrl') + '&win=mini'
+     console.log(this.src)
      setTimeout(function() {
        wx.hideLoading()
      }, 3000);

+ 12 - 0
src/pages/pagesA/h5Page/main.js

@@ -0,0 +1,12 @@
+import Vue from 'vue';
+import App from './index';
+
+// add this to handle exception
+// Vue.config.errorHandler = function (err) {
+//   if (console && console.error) {
+//     console.error(err)
+//   }
+// }
+
+const app = new Vue(App);
+app.$mount();

+ 0 - 0
src/pages/h5Page/main.json → src/pages/pagesA/h5Page/main.json


+ 138 - 0
src/pages/pagesA/usageRecord/index.vue

@@ -0,0 +1,138 @@
+<template>
+  <div class="usage-record-container">
+    <div class="usage-record-header grey" v-if="listData.length>0">
+      <div class="header-item">服务内容</div>
+      <div class="header-item">使用门店</div>
+      <div class="header-item">使用时间</div>
+    </div>
+    <scroll-view scroll-y class="usage-record-content" @scrolltolower="scrolltolower" v-if="listData.length>0">
+      <div class="usage-record-con">
+        <div v-for="(item,index) in listData" :key="index" :class="['usage-record-item', index%2==1 ? 'grey' : '']">
+          <div class="item-con">{{item.itemName}}</div>
+          <div class="item-con">{{item.usedType==2 ? '周卡自动过期' : item.usedStoreName}}</div>
+          <div class="item-con">{{item.usedTime}}</div>
+        </div>
+      </div>
+    </scroll-view>
+    <no-data v-if="listData.length==0" :options="listData" name="暂无数据"/>
+  </div>
+</template>
+
+<script>
+import NoData from '@/components/NoData';
+import { queryByOrderList } from '@/api/bundle'
+export default {
+  components: { 'no-data': NoData },
+  name: 'UsageRecord',
+  data() {
+    return {
+      listData: [],
+      pageNo: 1,  //  页码
+      pageSize: 20,  //  每页多少条
+      isLastPage: false,  //  是否最后一页
+      billNo: '',  //  订单编号
+      doneLoading: false  //  数据请求反馈状态
+    };
+  },
+  methods: {
+    getList() {
+      const _this = this
+      wx.showLoading({
+        mask: true,
+        title: '加载中'
+      })
+      if(_this.doneLoading){  //  防止多次请求同一页的数据
+        return
+      }
+      _this.doneLoading = true
+      queryByOrderList({billNo: _this.billNo, pageNo: _this.pageNo, pageSize: _this.pageSize}).then(res => {
+        _this.doneLoading = false
+        wx.hideLoading()
+        if(res.status == 200){
+          res.data.list.map(item => {
+            item.usedTime = item.usedTime.substr(0,10)
+          })
+          if ( _this.pageNo == 1) {
+            _this.listData = res.data.list
+          } else {
+            _this.listData = _this.listData.concat(res.data.list)
+          }
+          if(_this.listData.length>=res.data.count){
+            if(_this.pageNo!=1){
+              wx.showToast({
+                icon: 'none',
+                title: '已经是最后一页'
+              })
+            }
+            _this.isLastPage = true
+          }else{
+            _this.isLastPage = false
+            _this.pageNo++
+          }
+        }
+      })
+    },
+    // 监听用户上拉触底事件
+    scrolltolower() {
+    	if(!this.isLastPage){
+    		this.getList()
+    	}
+    }
+  },
+  onShow() {},
+  onLoad(options){
+    this.billNo = options.billNo
+    this.pageNo = 1
+    this.listData = []
+    this.isLastPage = false
+    this.doneLoading = false
+    this.getList()
+  }
+};
+</script>
+
+<style lang="stylus" scoped>
+.usage-record-container {
+  height: 100%;
+  padding: 0 20rpx 20rpx;
+  box-sizing: border-box;
+  overflow: hidden;
+  .usage-record-header{
+    font-size: 28rpx;
+    color: #333;
+    display: flex;
+    align-items: center;
+    flex-direction: row;
+    padding: 20rpx 10rpx;
+    .header-item{
+      flex-grow: 1;
+      width: 40%;
+    }
+    .header-item:last-child{
+      width: 20%;
+    }
+  }
+  .usage-record-content{
+    height: calc(100vh - 50px);
+    .usage-record-con{
+      font-size: 24rpx;
+      color: #5a5a5a;
+      .usage-record-item{
+        display: flex;
+        align-items: center;
+        padding: 20rpx 10rpx;
+        .item-con{
+          flex-grow: 1;
+          width: 40%;
+        }
+        .item-con:last-child{
+          width: 20%;
+        }
+      }
+    }
+  }
+  .grey{
+    background-color: #f2f2f2;
+  }
+}
+</style>

+ 12 - 0
src/pages/pagesA/usageRecord/main.js

@@ -0,0 +1,12 @@
+import Vue from 'vue';
+import App from './index';
+
+// add this to handle exception
+// Vue.config.errorHandler = function (err) {
+//   if (console && console.error) {
+//     console.error(err)
+//   }
+// }
+
+const app = new Vue(App);
+app.$mount();

+ 4 - 0
src/pages/pagesA/usageRecord/main.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "使用记录",
+  "usingComponents": {}
+}

+ 1 - 1
src/pages/paySuccess/index.vue

@@ -10,7 +10,7 @@
         </div>
       </div>
       <div class="pay-desc">
-        您可以在章鱼养车平台合作门店进行消费</br>
+        您可以在丘比养车平台合作门店进行消费</br>
         消费是请将"我的订单"中的二维码出示给门店进行核销
       </div>
 

+ 22 - 3
src/pages/placeOrder/index.vue

@@ -34,7 +34,7 @@
       </div>
     </div>
 
-    <van-submit-bar custom-class="price-bar" :price="price" button-text="去付款" :loading="payLoading" @submit="toPay"></van-submit-bar>
+    <!-- <van-submit-bar custom-class="price-bar" :price="price" button-text="去付款" :loading="payLoading" @submit="toPay"></van-submit-bar> -->
 
     <van-action-sheet overlay :show="showCoupons" @close="showCoupons = false">
       <div class="title-bar">
@@ -51,6 +51,10 @@
               <div class="coupon-item" v-for="item in couponList.canUse" :key="item.id">
                 <v-coupon :options="item" @use="useCoupon" :canUse="true" />
               </div>
+              <div class="noData-con" v-if="couponList.canUse.length==0">
+                <img class="logo-img" src="/static/img/empty-icon.png">
+                <p>暂无数据</p>
+              </div>
             </scroll-view>
           </van-tab>
           <van-tab title="不可用优惠券">
@@ -58,6 +62,10 @@
               <div class="coupon-item" v-for="item in couponList.notUse" :key="item.id">
                 <v-coupon :options="item" @use="useCoupon" :status="false" />
               </div>
+              <div class="noData-con" v-if="couponList.notUse.length==0">
+                <img class="logo-img" src="/static/img/empty-icon.png">
+                <p>暂无数据</p>
+              </div>
             </scroll-view>
           </van-tab>
         </van-tabs>
@@ -363,7 +371,7 @@ export default {
     }
 
     .text-red {
-      color: #f44;
+      color: #ff5500;
     }
   }
 
@@ -372,8 +380,19 @@ export default {
     width: 100vw;
     overflow: auto;
     box-sizing: border-box;
-  }
 
+  }
+  .noData-con{
+    margin-top: 70rpx;
+    text-align center;
+    font-size: 26rpx;
+    img{
+      display: inline-block;
+      width: 196rpx;
+      height: 128rpx;
+      margin: 20rpx 0 10rpx;
+    }
+  }
   .select-coupon-tab {
     height: 60vh;
   }

+ 1 - 1
src/pages/rankingList/index.vue

@@ -59,7 +59,7 @@ export default {
   },
   methods: {
     toPage (){
-      wx.navigateTo({ url: '/pages/creatShareImage/main' });
+      wx.navigateTo({ url: '/pages/pagesA/creatShareImage/main' });
     },
     fiterMobile (arr){
       arr.map(item => {

+ 2 - 2
src/pages/shareActivity/index.vue

@@ -68,7 +68,7 @@ export default {
       authPhone: false,
       isLogin: false,
       isUserinfo: false,
-      userName: '章鱼养车',
+      userName: '丘比养车',
       userId: '',
       coupons: [],
       info: {}
@@ -96,7 +96,7 @@ export default {
     // 生成美图
     creatShareImage (){
       wx.navigateTo({
-        url: `/pages/creatShareImage/main`
+        url: `/pages/pagesA/creatShareImage/main`
       });
     },
     couponClickHandle(item) {

+ 15 - 14
src/pages/store/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="container store-page" >
-    <div v-if="selectVal" @click="selectVal=''" class= 'modal-page'></div>
+    <div v-if="selectVal" @click="selectVal=''" class='modal-page'></div>
     <div class="store-toolbar">
       <div class="toolbar">
         <div class="item item1" @click="selectItem()">
@@ -12,7 +12,7 @@
           <van-icon class="icon" :name="selectVal==='area' ? 'arrow-up': 'arrow-down' " />
         </div>
         <div>
-          <van-icon name="search" @click="openSearch" style="font-size: 30px; font-weight: 600;" />
+          <van-icon name="search" @click="openSearch" style="font-size: 26px; font-weight: 600;" />
         </div>
       </div>
       <div class="toolbar-detail" :class="{'show': showBar}" v-show="selectVal !== ''">
@@ -25,7 +25,7 @@
           <van-button class="select-button" @click="openCitySelect" size="small" plain hairline type="info">选择其它城市</van-button>
           <van-radio-group class="checkbox-group radio-group" :value="selectKey" @change="areaChangeHandle">
             <van-radio class="radiobox-item" checked-color="red" :name="area.addrDistrict" v-for="area in areaList" :key="area.addrDistrict">
-             <van-icon v-if="currentCode && currentCode== area.addrDistrict" name="location" style="color: red; font-size: 20px;" />
+             <van-icon v-if="currentCode && currentCode== area.addrDistrict" name="location" style="color: #ff8811; font-size: 16px;" />
              {{area.addrDistrictName}}({{area.storeSum}})
             </van-radio>
           </van-radio-group>
@@ -35,7 +35,6 @@
           <van-button block class="btn" type="danger" @click="searchHandle">确定</van-button>
         </div>
       </div>
-
     </div>
     <scroll-view scroll-y class="store-content">
       <v-card style="height:auto" :thumb="item.icon" v-for="(item, index) in storeList" :key="item.id">
@@ -44,7 +43,7 @@
           <div class="content">
             <div class="left">
               <div class="desc">
-                <van-rate :value="item.star" size="10" color="#f44" allow-half void-color="#eee" void-icon="star" />
+                <van-rate :value="item.star" size="10" color="#ff8811" allow-half void-color="#eee" void-icon="star" />
                 <span class="rate-num">{{item.star}}</span>
               </div>
               <div class="phone">
@@ -63,12 +62,12 @@
             </div>
           </div>
           <div>
-            <div class="">
-              {{item.addrProvinceName + item.addrCityName + item.addrDistrictName}}
+            <div>
+              {{item.addrProvinceName + item.addrCityName + item.addrDistrictName + item.addrDetail}}
             </div>
             <div class="tags">
               <div class="tag" v-for="(tag, index2) in item.storeBizList" :key="tag.id">{{tag.bizTypeName}}</div>
-            </div
+            </div>
           </div>
         </div>
       </v-card>
@@ -160,7 +159,7 @@ export default {
        this.currenCity = city.find(item=>{
          return item.code == code
        })
-       
+
       this.areaTitle = currenArea ? currenArea.name : this.currenCity.name
       // 获取定位或选择城市的所有区
       let arr = []
@@ -495,7 +494,7 @@ export default {
     display: flex;
     justify-content: space-around;
     height: 70rpx;
-
+    align-items: center;
     .item {
       width: 35%;
     }
@@ -504,9 +503,9 @@ export default {
       text-align: right;
     }
   }
-.red-text {
-  color : red;
-}
+  .red-text {
+    color : #ff8811;
+  }
   .toolbar-detail {
     background-color: #fff;
     position: absolute;
@@ -578,7 +577,7 @@ export default {
 
     .tag {
       color: #808695;
-      border: 1rpx solid rgba(255, 0, 0, 0.3);
+      border: 1rpx solid #ff5500;
       padding: 5rpx 10rpx;
     }
 
@@ -610,6 +609,8 @@ export default {
 .radiobox-item {
   width :100%;
   padding :10px 0;
+  display : flex;
+  align-items : center;
   border-bottom :1px solid #9999;
   .van-radio__label{
     flex-grow : 1;

+ 2 - 3
src/pages/storeSearch/index.vue

@@ -4,7 +4,7 @@
       <div class="toolbar">
         <div class="item item1" >
          <van-search
-            value="{{ value }}"
+            :value="value"
             placeholder="请输入搜索关键词"
             show-action
             shape="round"
@@ -22,9 +22,8 @@
           <div class="content">
             <div class="left">
               <div class="desc">
-                <van-rate :value="item.star" size="10" color="#f44" allow-half void-color="#eee" void-icon="star" />
+                <van-rate :value="item.star" size="10" color="#ff5500" allow-half void-color="#eee" void-icon="star" />
                 <span class="rate-num">{{item.star}}</span>
-
               </div>
               <div class="phone">
                 <van-icon name="phone" class="phone-icon" />

+ 1 - 1
src/pages/washCar/index.vue

@@ -6,7 +6,7 @@
           <img :src="shareUser.headImageUrl" class="share-user-img">
         </div>
         <div class="poster-desc">
-          {{shareUser.nickName || '章鱼养车'}}邀请您{{info.title}}
+          {{shareUser.nickName || '丘比养车'}}邀请您{{info.title}}
         </div>
         <div class="receive-btn">
           <van-button v-if="!isLogin" round block type="danger" size="small" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">立即领取</van-button>

BIN
static/img/bgimg.jpg


BIN
static/img/empty-icon.png


BIN
static/img/ic_shop_title_06.png


BIN
static/img/icon1red.png


BIN
static/img/icon2red.png


BIN
static/img/icon3black.png


BIN
static/img/icon3red.png


BIN
static/img/icon4red.png


BIN
static/img/logo-mini.jpg


BIN
static/img/logo.png


BIN
static/img/logos.png


BIN
static/img/noData.jpg


BIN
static/img/ranking/img1.jpg


BIN
static/img/ranking/img2.jpg


BIN
static/img/ranking/img3.jpg


BIN
static/img/ranking/img4.jpg


BIN
static/img/show.png


File diff suppressed because it is too large
+ 0 - 0
static/vant/button/index.wxss


+ 1 - 1
static/vant/tabs/index.wxss

@@ -1 +1 @@
-@import '../common/index.wxss';.van-tabs{position:relative;-webkit-tap-highlight-color:transparent}.van-tabs__wrap{position:absolute;top:0;right:0;left:0;display:-webkit-flex;display:flex;background-color:#fff}.van-tabs__wrap--page-top{position:fixed}.van-tabs__wrap--content-bottom{top:auto;bottom:0}.van-tabs__wrap--scrollable .van-tab{-webkit-flex:0 0 22%;flex:0 0 22%}.van-tabs__scroll--card{border:1px solid #f44;border-radius:2px}.van-tabs__nav{position:relative;display:-webkit-flex;display:flex;-webkit-user-select:none;user-select:none}.van-tabs__nav--line{height:100%}.van-tabs__nav--card{height:30px}.van-tabs__nav--card .van-tab{line-height:30px;color:#f44;border-right:1px solid #f44}.van-tabs__nav--card .van-tab:last-child{border-right:none}.van-tabs__nav--card .van-tab.van-tab--active{color:#fff;background-color:#f44}.van-tabs__line{position:absolute;bottom:0;left:0;z-index:1;height:3px;background-color:#f44;border-radius:3px}.van-tabs--line{padding-top:44px}.van-tabs--line .van-tabs__wrap{height:44px}.van-tabs--card{padding-top:30px;margin:0 15px}.van-tabs--card .van-tabs__wrap{height:30px}.van-tabs__content{overflow:hidden}.van-tab,.van-tabs__track{position:relative}.van-tab{min-width:0;padding:0 5px;font-size:14px;line-height:44px;color:#7d7e80;text-align:center;cursor:pointer;box-sizing:border-box;-webkit-flex:1;flex:1}.van-tab--active{font-weight:500;color:#333}.van-tab--disabled{color:#c9c9c9}.van-tab__title--dot:after{display:inline-block;width:8px;height:8px;vertical-align:middle;background-color:#f44;border-radius:100%;content:""}.van-tab__title__info{position:relative!important;top:-1px!important;display:inline-block;-webkit-transform:translateX(0)!important;transform:translateX(0)!important}
+@import '../common/index.wxss';.van-tabs{position:relative;-webkit-tap-highlight-color:transparent}.van-tabs__wrap{position:absolute;top:0;right:0;left:0;display:-webkit-flex;display:flex;background-color:#fff}.van-tabs__wrap--page-top{position:fixed}.van-tabs__wrap--content-bottom{top:auto;bottom:0}.van-tabs__wrap--scrollable .van-tab{-webkit-flex:0 0 22%;flex:0 0 22%}.van-tabs__scroll--card{border:1px solid #ff5500;border-radius:2px}.van-tabs__nav{position:relative;display:-webkit-flex;display:flex;-webkit-user-select:none;user-select:none}.van-tabs__nav--line{height:100%}.van-tabs__nav--card{height:30px}.van-tabs__nav--card .van-tab{line-height:30px;color:#ff5500;border-right:1px solid #ff5500}.van-tabs__nav--card .van-tab:last-child{border-right:none}.van-tabs__nav--card .van-tab.van-tab--active{color:#fff;background-color:#ff5500}.van-tabs__line{position:absolute;bottom:0;left:0;z-index:1;height:3px;background-color:#ff5500;border-radius:3px}.van-tabs--line{padding-top:44px}.van-tabs--line .van-tabs__wrap{height:44px}.van-tabs--card{padding-top:30px;margin:0 15px}.van-tabs--card .van-tabs__wrap{height:30px}.van-tabs__content{overflow:hidden}.van-tab,.van-tabs__track{position:relative}.van-tab{min-width:0;padding:0 5px;font-size:14px;line-height:44px;color:#7d7e80;text-align:center;cursor:pointer;box-sizing:border-box;-webkit-flex:1;flex:1}.van-tab--active{font-weight:500;color:#333}.van-tab--disabled{color:#c9c9c9}.van-tab__title--dot:after{display:inline-block;width:8px;height:8px;vertical-align:middle;background-color:#ff5500;border-radius:100%;content:""}.van-tab__title__info{position:relative!important;top:-1px!important;display:inline-block;-webkit-transform:translateX(0)!important;transform:translateX(0)!important}

Some files were not shown because too many files changed in this diff