From a004ec3b106ccb7c45390115dcb18657fffc766f Mon Sep 17 00:00:00 2001
From: Gao xiaosong <704041637@qq.com>
Date: Sun, 13 Sep 2020 20:09:48 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=A2=9E=E5=8A=A0=E8=AE=A2?=
 =?UTF-8?q?=E9=98=85=E5=8A=9F=E8=83=BD,=E5=A2=9E=E5=8A=A0=E6=B5=B7?=
 =?UTF-8?q?=E6=8A=A5=E7=94=9F=E6=88=90=E4=BC=A0=E9=80=92from=E7=B1=BB?=
 =?UTF-8?q?=E5=9E=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/store.js                            |   4 +-
 components/StorePoster.vue              | 343 +++++------
 config/index.js                         |   4 -
 libs/order.js                           |  28 +-
 libs/wechat.js                          |  19 +-
 pages/activity/Poster/index.vue         | 128 +++--
 pages/order/OrderSubmission/index.vue   | 735 ++++++++++++------------
 pages/shop/StoreList/index.vue          |   6 +-
 pages/user/Recharge/index.vue           | 609 +++++++++++---------
 pages/user/address/AddAddress/index.vue |  25 +-
 pages/user/promotion/Poster/index.vue   | 253 ++++----
 store/index.js                          |  12 +-
 12 files changed, 1116 insertions(+), 1050 deletions(-)

diff --git a/api/store.js b/api/store.js
index 53fcdcf..40beae6 100644
--- a/api/store.js
+++ b/api/store.js
@@ -75,8 +75,8 @@ export function getGroomList(type) {
 /*
  * 获取商品海报
  * */
-export function getProductPoster(id) {
-	return request.get("/product/poster/" + id, {}, {
+export function getProductPoster(id, data) {
+	return request.get("/product/poster/" + id, data, {
 		login: true
 	});
 }
diff --git a/components/StorePoster.vue b/components/StorePoster.vue
index 4575267..1648e83 100644
--- a/components/StorePoster.vue
+++ b/components/StorePoster.vue
@@ -29,19 +29,8 @@
       <view class="save-poster" @click="savePosterPath">生成图片</view>
     </view>-->
     <view class="poster-pop" v-show="canvasStatus">
-      <img
-        src="@/static/images/poster-close.png"
-        class="close"
-        @click="posterImageClose"
-        mode="widthFix"
-      />
-      <image
-        :src="posterImage"
-        alt="tp"
-        class="poster-image"
-        show-menu-by-longpress
-        mode="widthFix"
-      />
+      <img src="@/static/images/poster-close.png" class="close" @click="posterImageClose" mode="widthFix" />
+      <image :src="posterImage" alt="tp" class="poster-image" show-menu-by-longpress mode="widthFix" />
       <view class="keep">长按图片可以保存到手机</view>
     </view>
     <view class="mask"></view>
@@ -49,163 +38,187 @@
 </template>
 
 <script>
-// import html2canvas from "html2canvas";
-import { PosterCanvas } from "@/utils";
-import { getProductPoster } from "@/api/store";
-
-export default {
-  name: "StorePoster",
-  props: {
-    posterImageStatus: Boolean,
-    posterData: Object,
-    goodId: String
-  },
-  data: function() {
-    return {
-      canvasStatus: false,
-      posterImage: ""
-    };
-  },
-  watch: {
-    posterImageStatus: function() {
-      var that = this;
-      if (that.posterImageStatus === true) {
-        that.$nextTick(function() {
-          that.savePosterPath();
-        });
+  // import html2canvas from "html2canvas";
+  import {
+    PosterCanvas
+  } from "@/utils";
+  import {
+    getProductPoster
+  } from "@/api/store";
+
+  export default {
+    name: "StorePoster",
+    props: {
+      posterImageStatus: Boolean,
+      posterData: Object,
+      goodId: String
+    },
+    data: function () {
+      return {
+        canvasStatus: false,
+        posterImage: ""
+      };
+    },
+    watch: {
+      posterImageStatus: function () {
+        var that = this;
+        if (that.posterImageStatus === true) {
+          that.$nextTick(function () {
+            that.savePosterPath();
+          });
+        }
       }
-    }
-  },
-  mounted: function() {},
-  methods: {
-    posterImageClose: function() {
-      this.posterImageStatus = false;
-      this.canvasStatus = false;
-      this.$emit("setPosterImageStatus");
     },
-    savePosterPath: function() {
-      const that = this;
-
-      uni.showLoading({ title: "海报生成中", mask: true });
-      getProductPoster(this.goodId)
-        .then(res => {
-          this.canvasStatus = true;
-          this.posterImage = res.data;
-        })
-        .finally(() => {
-          uni.hideLoading();
+    mounted: function () {},
+    methods: {
+      posterImageClose: function () {
+        this.posterImageStatus = false;
+        this.canvasStatus = false;
+        this.$emit("setPosterImageStatus");
+      },
+      savePosterPath: function () {
+        const that = this;
+
+        uni.showLoading({
+          title: "海报生成中",
+          mask: true
         });
-      // return;
-      // //清空图片重新生成
-      // that.posterImage = "";
-      // uni.showLoading({ title: "海报生成中", mask: true });
-      // console.log(this);
-      // var prodId = that.$yrouter.currentRoute.query.id;
-      // uni.downloadFile({
-      //   url:
-      //     this.$VUE_APP_API_URL +
-      //     "/shareImg/" +
-      //     prodId +
-      //     "?shareImgName=" +
-      //     this.posterData.code,
-      //   fail: function(res) {},
-      //   success: function(res) {
-      //     console.log(res);
-      //     that.canvasStatus = true;
-      //     that.posterImage = res.tempFilePath;
-      //     uni.hideLoading();
-      //   }
-      // });
+        getProductPoster(this.goodId, {
+            from: this.$deviceType == 'weixin' || this.$deviceType == 'weixinh5' ? 'uniappH5' : this.$deviceType
+          })
+          .then(res => {
+            this.canvasStatus = true;
+            this.posterImage = res.data;
+          })
+          .finally(() => {
+            uni.hideLoading();
+          });
+        // return;
+        // //清空图片重新生成
+        // that.posterImage = "";
+        // uni.showLoading({ title: "海报生成中", mask: true });
+        // console.log(this);
+        // var prodId = that.$yrouter.currentRoute.query.id;
+        // uni.downloadFile({
+        //   url:
+        //     this.$VUE_APP_API_URL +
+        //     "/shareImg/" +
+        //     prodId +
+        //     "?shareImgName=" +
+        //     this.posterData.code,
+        //   fail: function(res) {},
+        //   success: function(res) {
+        //     console.log(res);
+        //     that.canvasStatus = true;
+        //     that.posterImage = res.tempFilePath;
+        //     uni.hideLoading();
+        //   }
+        // });
+      }
     }
-  }
-};
+  };
 </script>
 
 <style scoped lang="less" lang="less">
-.poster-first {
-  overscroll-behavior: contain;
-}
-.poster-pop {
-  width: 4.5 * 100rpx;
-  height: 8 * 100rpx;
-  position: fixed;
-  left: 50%;
-  transform: translateX(-50%);
-  z-index: 99;
-  top: 50%;
-  margin-top: -4.6 * 100rpx;
-}
-.poster-pop .canvas {
-  background-color: #ffffff;
-  height: 8 * 100rpx;
-}
-.poster-pop .poster-image {
-  width: 100%;
-  height: auto;
-}
-.poster-pop .canvas .image {
-  width: 4.5 * 100rpx;
-  height: 4.5 * 100rpx;
-  display: block;
-}
-.poster-pop .canvas .text {
-  text-align: center;
-  color: #000000;
-  margin-top: 0.32 * 100rpx;
-}
-.poster-pop .canvas .text.black {
-  height: 0.68 * 100rpx;
-}
-.poster-pop .canvas .text.rad {
-  color: #ff0000;
-}
-.poster-pop .canvas .code {
-  height: 1.4 * 100rpx;
-  display: flex;
-}
-.poster-pop .canvas .code .code-img {
-  width: 33%;
-  padding: 0.06 * 100rpx;
-}
-.poster-pop .canvas .code .code-img image {
-  width: 100%;
-}
-.poster-pop .canvas .code .code-text {
-  width: 60%;
-  font-size: 0.12 * 100rpx;
-  line-height: 1.64 * 100rpx;
-}
-.poster-pop .close {
-  width: 0.46 * 100rpx;
-  height: 0.75 * 100rpx;
-  position: fixed;
-  right: 0;
-  top: -0.73 * 100rpx;
-  display: block;
-}
-.poster-pop .save-poster {
-  background-color: #df2d0a;
-  font-size: 0.22 * 100rpx;
-  color: #fff;
-  text-align: center;
-  height: 0.76 * 100rpx;
-  line-height: 0.76 * 100rpx;
-  width: 100%;
-  margin-top: -0.04 * 100rpx;
-}
-.poster-pop .keep {
-  color: #fff;
-  text-align: center;
-  font-size: 0.25 * 100rpx;
-  margin-top: 0.1 * 100rpx;
-}
-.mask {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  background-color: rgba(0, 0, 0, 0.6);
-  z-index: 9;
-}
+  .poster-first {
+    overscroll-behavior: contain;
+  }
+
+  .poster-pop {
+    width: 4.5 * 100rpx;
+    height: 8 * 100rpx;
+    position: fixed;
+    left: 50%;
+    transform: translateX(-50%);
+    z-index: 99;
+    top: 50%;
+    margin-top: -4.6 * 100rpx;
+  }
+
+  .poster-pop .canvas {
+    background-color: #ffffff;
+    height: 8 * 100rpx;
+  }
+
+  .poster-pop .poster-image {
+    width: 100%;
+    height: auto;
+  }
+
+  .poster-pop .canvas .image {
+    width: 4.5 * 100rpx;
+    height: 4.5 * 100rpx;
+    display: block;
+  }
+
+  .poster-pop .canvas .text {
+    text-align: center;
+    color: #000000;
+    margin-top: 0.32 * 100rpx;
+  }
+
+  .poster-pop .canvas .text.black {
+    height: 0.68 * 100rpx;
+  }
+
+  .poster-pop .canvas .text.rad {
+    color: #ff0000;
+  }
+
+  .poster-pop .canvas .code {
+    height: 1.4 * 100rpx;
+    display: flex;
+  }
+
+  .poster-pop .canvas .code .code-img {
+    width: 33%;
+    padding: 0.06 * 100rpx;
+  }
+
+  .poster-pop .canvas .code .code-img image {
+    width: 100%;
+  }
+
+  .poster-pop .canvas .code .code-text {
+    width: 60%;
+    font-size: 0.12 * 100rpx;
+    line-height: 1.64 * 100rpx;
+  }
+
+  .poster-pop .close {
+    width: 0.46 * 100rpx;
+    height: 0.75 * 100rpx;
+    position: fixed;
+    right: 0;
+    top: -0.73 * 100rpx;
+    display: block;
+  }
+
+  .poster-pop .save-poster {
+    background-color: #df2d0a;
+    font-size: 0.22 * 100rpx;
+    color: #fff;
+    text-align: center;
+    height: 0.76 * 100rpx;
+    line-height: 0.76 * 100rpx;
+    width: 100%;
+    margin-top: -0.04 * 100rpx;
+  }
+
+  .poster-pop .keep {
+    color: #fff;
+    text-align: center;
+    font-size: 0.25 * 100rpx;
+    margin-top: 0.1 * 100rpx;
+  }
+
+  .mask {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background-color: rgba(0, 0, 0, 0.6);
+    z-index: 9;
+  }
 </style>
diff --git a/config/index.js b/config/index.js
index cb07c1d..d55cb76 100644
--- a/config/index.js
+++ b/config/index.js
@@ -1,11 +1,7 @@
 
 // export const VUE_APP_API_URL = 'http://natapp.xinxintuan.co/api';
 // export const VUE_APP_API_URL = 'https://wxapi.yixiang.co/api';
-<<<<<<< HEAD
-export const VUE_APP_API_URL = 'https://h5api.xinxintuan.co/api';
 // export const VUE_APP_API_URL = 'http://192.168.31.223:8008/api';
-=======
 export const VUE_APP_API_URL = 'http://h5api.xinxintuan.co/api';
->>>>>>> 2723cab7364b2e3e5d2ec4f2cd941461a936cb95
 export const VUE_APP_RESOURCES_URL = 'https://wx.yixiang.co/static';
 
diff --git a/libs/order.js b/libs/order.js
index 6e2e024..eb89768 100644
--- a/libs/order.js
+++ b/libs/order.js
@@ -81,7 +81,7 @@ export async function payOrderHandle(orderId, type, from) {
     });
     payOrder(orderId, type, from)
       .then(async res => {
-        await handleOrderPayResults(res.data)
+        await handleOrderPayResults(res.data, type)
         resolve()
       })
       .catch(err => {
@@ -98,7 +98,9 @@ export async function payOrderHandle(orderId, type, from) {
 
 // 处理调用支付接口的逻辑
 // @type create(创建订单)||pay(支付订单)
-export function handleOrderPayResults(data, type) {
+export function handleOrderPayResults(data, type, payType) {
+  console.log(data, type, payType)
+
   console.log(data, type)
   return new Promise((resolve, reject) => {
     uni.hideLoading()
@@ -156,19 +158,37 @@ export function handleOrderPayResults(data, type) {
         weappPay(data.result.jsConfig).finally(() => {
           resolve()
           goOrderDetails(data.result.orderId, type)
-        });
+        }).then(res => {
+          // #ifdef MP-WEIXIN
+          subscribeMessage()
+          // #endif
+        })
         break;
       // APP支付
       case "WECHAT_APP_PAY":
         weappPay(data.result.jsConfig).finally(() => {
           resolve()
           goOrderDetails(data.result.orderId, type)
-        });
+        })
         break;
     }
   })
 }
 
+export function subscribeMessage() {
+  // 调用订阅
+  console.log('调用订阅')
+  uni.requestSubscribeMessage({
+    tmplIds: ['W5r2c2kzhbq8uxStkPAVx_sk-5aapMFCqe7b7KU5jXI', '2CB_1UyQrbnlyjJa5syraqJ3cfztPPDOAHe3DEXpMjg', 'vuztugw9VbKbKJDAAVePkjqPpT5mdoREpd4Aq7EGPRU'],
+    success(res) { 
+      console.log(res)
+    },
+    fail(error){
+      console.log(error)
+    }
+  })
+}
+
 
 export function goOrderDetails(id, type) {
   // 创建订单时跳转到详情
diff --git a/libs/wechat.js b/libs/wechat.js
index d3e7b06..da1849a 100644
--- a/libs/wechat.js
+++ b/libs/wechat.js
@@ -1,3 +1,4 @@
+import { subscribeMessage } from "@/libs/order";
 import { getProvider } from "@/utils";
 import WechatJSSDK from "wechat-jssdk/dist/client.umd";
 import { getWechatConfig, wechatAuth } from "@/api/public";
@@ -9,7 +10,6 @@ import dayjs from "dayjs";
 // 支付模块
 export const weappPay = (option) => {
   return new Promise((resolve, reject) => {
-    console.log(option)
     if (store.state.$deviceType == 'weixinh5') {
       setTimeout(() => {
         location.href = option.mweb_url;
@@ -59,11 +59,16 @@ export const weappPay = (option) => {
           clearTimeout(time)
           resolve(success)
         }, 3000)
+        // #ifdef MP-WEIXIN
+        subscribeMessage()
+        // #endif
       },
       fail: (error) => {
         console.log(error)
         if (error.errMsg == 'requestPayment:fail cancel') {
           uni.showToast({ title: '已取消支付', icon: 'none', duration: 5000 });
+        } else {
+          uni.showToast({ title: error || error.msg, icon: 'none', duration: 5000 });
         }
         reject(error)
       }
@@ -344,12 +349,20 @@ export function wxShowLocation() {
             cancel() {
               cookie.remove(LATITUDE);
               cookie.remove(LONGITUDE);
-              this.$dialog.error("取消获取位置");
+              uni.showToast({
+                title: "取消获取位置",
+                icon: "none",
+                duration: 2000,
+              });
             },
             fail() {
               cookie.remove(LATITUDE);
               cookie.remove(LONGITUDE);
-              this.$dialog.error("授权失败");
+              uni.showToast({
+                title: "授权失败",
+                icon: "none",
+                duration: 2000,
+              });
             }
           });
         }
diff --git a/pages/activity/Poster/index.vue b/pages/activity/Poster/index.vue
index 22a4d49..a199a70 100644
--- a/pages/activity/Poster/index.vue
+++ b/pages/activity/Poster/index.vue
@@ -9,71 +9,81 @@
   </view>
 </template>
 <script>
-import { getBargainPoster, getCombinationPoster } from "@/api/activity";
+  import {
+    getBargainPoster,
+    getCombinationPoster
+  } from "@/api/activity";
 
-export default {
-  name: "Poster",
-  components: {},
-  props: {},
-  data: function() {
-    return {
-      status: true,
-      id: 0,
-      image: ""
-    };
-  },
-  mounted: function() {
-    var that = this;
-    var id = that.$yroute.query.id;
-    var type = that.$yroute.query.type;
-    that.id = id;
-    if (type == 2) {
-      that.getBargainPoster();
-    } else {
-      that.getCombinationPoster();
-    }
-  },
-  methods: {
-    getBargainPoster: function() {
-      var that = this;
-      getBargainPoster({ bargainId: that.id, from: "wechat" })
-        .then(res => {
-          that.image = res.data.url;
-          that.status = false;
-        })
-        .catch(res => {
-          uni.showToast({
-            title: res.msg,
-            icon: "none",
-            duration: 2000
-          });
-        });
+  export default {
+    name: "Poster",
+    components: {},
+    props: {},
+    data: function () {
+      return {
+        status: true,
+        id: 0,
+        image: ""
+      };
     },
-    // 拼团海报
-    getCombinationPoster: function() {
+    mounted: function () {
       var that = this;
-      getCombinationPoster({ id: that.id, from: "wechat" })
-        .then(res => {
-          that.image = res.data.url;
-          that.status = false;
-        })
-        .catch(res => {
-          uni.showToast({
-            title: res.msg,
-            icon: "none",
-            duration: 2000
+      var id = that.$yroute.query.id;
+      var type = that.$yroute.query.type;
+      that.id = id;
+      if (type == 2) {
+        that.getBargainPoster();
+      } else {
+        that.getCombinationPoster();
+      }
+    },
+    methods: {
+      getBargainPoster: function () {
+        var that = this;
+        getBargainPoster({
+            bargainId: that.id,
+            from: "wechat"
+          })
+          .then(res => {
+            that.image = res.data.url;
+            that.status = false;
+          })
+          .catch(res => {
+            uni.showToast({
+              title: res.msg,
+              icon: "none",
+              duration: 2000
+            });
+          });
+      },
+      // 拼团海报
+      getCombinationPoster: function () {
+        var that = this;
+        getCombinationPoster({
+            id: that.id,
+            from: this.$deviceType == 'weixin' || this.$deviceType == 'weixinh5' ? 'uniappH5' : this.$deviceType
+          })
+          .then(res => {
+            that.image = res.data.url;
+            that.status = false;
+          })
+          .catch(res => {
+            uni.showToast({
+              title: res.msg,
+              icon: "none",
+              duration: 2000
+            });
           });
-        });
+      }
     }
-  }
-};
+  };
 </script>
 
 <style scoped lang="less">
-page {
-  background-color: #eb3729;
-}
-.poster-poster {
-  height: unset !important;
-}
+  page {
+    background-color: #eb3729;
+  }
+
+  .poster-poster {
+    height: unset !important;
+  }
 </style>
diff --git a/pages/order/OrderSubmission/index.vue b/pages/order/OrderSubmission/index.vue
index 5d09662..dbeeaa0 100644
--- a/pages/order/OrderSubmission/index.vue
+++ b/pages/order/OrderSubmission/index.vue
@@ -2,24 +2,12 @@
   <view class="order-submission">
     <view class="allAddress" :style="systemStore ? '' : 'padding-top: 0.2*100rpx'">
       <view class="nav acea-row">
-        <view
-          class="item font-color-red"
-          :class="shipping_type === 0 ? 'on' : 'on2'"
-          @click="addressType(0)"
-          v-if="systemStore"
-        ></view>
-        <view
-          class="item font-color-red"
-          :class="shipping_type === 1 ? 'on' : 'on2'"
-          @click="addressType(1)"
-          v-if="systemStore"
-        ></view>
+        <view class="item font-color-red" :class="shipping_type === 0 ? 'on' : 'on2'" @click="addressType(0)"
+          v-if="systemStore"></view>
+        <view class="item font-color-red" :class="shipping_type === 1 ? 'on' : 'on2'" @click="addressType(1)"
+          v-if="systemStore"></view>
       </view>
-      <view
-        class="address acea-row row-between-wrapper"
-        v-if="shipping_type === 0"
-        @click="addressTap"
-      >
+      <view class="address acea-row row-between-wrapper" v-if="shipping_type === 0" @click="addressTap">
         <view class="addressCon" v-if="addressInfo.realName">
           <view class="name">
             {{ addressInfo.realName }}
@@ -35,11 +23,7 @@
         </view>
         <view class="iconfont icon-jiantou"></view>
       </view>
-      <div
-        class="address acea-row row-between-wrapper"
-        v-if="shipping_type === 1"
-        @click="showStoreList"
-      >
+      <div class="address acea-row row-between-wrapper" v-if="shipping_type === 1" @click="showStoreList">
         <div class="addressCon" v-if="storeItems">
           <div class="name">
             {{ storeItems.name }}
@@ -69,10 +53,7 @@
           <text class="iconfont icon-jiantou"></text>
         </view>
       </view>
-      <view
-        class="item acea-row row-between-wrapper"
-        v-if="deduction === false && enableIntegral === true"
-      >
+      <view class="item acea-row row-between-wrapper" v-if="deduction === false && enableIntegral === true">
         <view>积分抵扣</view>
         <view class="discount">
           <view class="select-btn">
@@ -124,33 +105,21 @@
       <view class="item">
         <view>支付方式</view>
         <view class="list">
-          <view
-            class="payItem acea-row row-middle"
-            :class="active === 'weixin' ? 'on' : ''"
-            @click="payItem('weixin')"
-            v-show="isWeixin"
-          >
+          <view class="payItem acea-row row-middle" :class="active === 'weixin' ? 'on' : ''" @click="payItem('weixin')"
+            v-show="isWeixin">
             <view class="name acea-row row-center-wrapper">
               <view class="iconfont icon-weixin2" :class="active === 'weixin' ? 'bounceIn' : ''"></view>微信支付
             </view>
             <view class="tip">微信快捷支付</view>
           </view>
-          <view
-            class="payItem acea-row row-middle"
-            :class="active === 'weixin' ? 'on' : ''"
-            @click="payItem('weixin')"
-            v-show="!isWeixin"
-          >
+          <view class="payItem acea-row row-middle" :class="active === 'weixin' ? 'on' : ''" @click="payItem('weixin')"
+            v-show="!isWeixin">
             <view class="name acea-row row-center-wrapper">
               <view class="iconfont icon-weixin2" :class="active === 'weixin' ? 'bounceIn' : ''"></view>微信支付
             </view>
             <view class="tip">微信快捷支付</view>
           </view>
-          <view
-            class="payItem acea-row row-middle"
-            :class="active === 'yue' ? 'on' : ''"
-            @click="payItem('yue')"
-          >
+          <view class="payItem acea-row row-middle" :class="active === 'yue' ? 'on' : ''" @click="payItem('yue')">
             <view class="name acea-row row-center-wrapper">
               <view class="iconfont icon-icon-test" :class="active === 'yue' ? 'bounceIn' : ''"></view>余额支付
             </view>
@@ -185,392 +154,396 @@
       </view>
       <view class="settlement" @click="createOrder">立即结算</view>
     </view>
-    <CouponListWindow
-      v-on:couponchange="changecoupon($event)"
-      v-model="showCoupon"
-      :price="orderPrice.totalPrice"
-      :checked="usableCoupon.id"
-      @checked="changeCoupon"
-      :cartid="cartid"
-    ></CouponListWindow>
-    <AddressWindow
-      @checked="changeAddress"
-      @redirect="addressRedirect"
-      v-model="showAddress"
-      :checked="addressInfo.id"
-      ref="mychild"
-    ></AddressWindow>
+    <CouponListWindow v-on:couponchange="changecoupon($event)" v-model="showCoupon" :price="orderPrice.totalPrice"
+      :checked="usableCoupon.id" @checked="changeCoupon" :cartid="cartid"></CouponListWindow>
+    <AddressWindow @checked="changeAddress" @redirect="addressRedirect" v-model="showAddress" :checked="addressInfo.id"
+      ref="mychild"></AddressWindow>
   </view>
 </template>
 <style scoped lang="less">
-.order-submission .wrapper .shipping select {
-  color: #999;
-  padding-right: 0.15 * 100rpx;
-}
+  .order-submission .wrapper .shipping select {
+    color: #999;
+    padding-right: 0.15 * 100rpx;
+  }
 
-.order-submission .wrapper .shipping .iconfont {
-  font-size: 0.3 * 100rpx;
-  color: #515151;
-}
+  .order-submission .wrapper .shipping .iconfont {
+    font-size: 0.3 * 100rpx;
+    color: #515151;
+  }
 
-.order-submission .allAddress {
-  width: 100%;
-  background-image: linear-gradient(to bottom, #eb3729 0%, #eb3729 100%);
-  background-image: -webkit-linear-gradient(
-    to bottom,
-    #eb3729 0%,
-    #eb3729 100%
-  );
-  background-image: -moz-linear-gradient(to bottom, #eb3729 0%, #eb3729 100%);
-  padding-top: 1 * 100rpx;
-}
+  .order-submission .allAddress {
+    width: 100%;
+    background-image: linear-gradient(to bottom, #eb3729 0%, #eb3729 100%);
+    background-image: -webkit-linear-gradient(to bottom,
+        #eb3729 0%,
+        #eb3729 100%);
+    background-image: -moz-linear-gradient(to bottom, #eb3729 0%, #eb3729 100%);
+    padding-top: 1 * 100rpx;
+  }
 
-.order-submission .allAddress .nav {
-  margin: 0 auto;
-  padding: 0 30rpx;
-  width: 100%;
-  box-sizing: border-box;
-}
+  .order-submission .allAddress .nav {
+    margin: 0 auto;
+    padding: 0 30rpx;
+    width: 100%;
+    box-sizing: border-box;
+  }
 
-.order-submission .allAddress .nav .item {
-  flex: 1;
-  position: relative;
-}
+  .order-submission .allAddress .nav .item {
+    flex: 1;
+    position: relative;
+  }
 
-.order-submission .allAddress .nav .item.on {
-  position: relative;
-}
+  .order-submission .allAddress .nav .item.on {
+    position: relative;
+  }
 
-.order-submission .allAddress .nav .item.on:before {
-  position: absolute;
-  bottom: 0;
-  content: "快递配送";
-  font-size: 0.28 * 100rpx;
-  display: block;
-  height: 0;
-  left: 0;
-  right: 0;
-  border-width: 0.4 * 100rpx;
-  border-style: solid;
-  border-color: #fff;
-  z-index: 9;
-  text-align: center;
-  line-height: 0.14 * 100rpx;
-}
+  .order-submission .allAddress .nav .item.on:before {
+    position: absolute;
+    bottom: 0;
+    content: "快递配送";
+    font-size: 0.28 * 100rpx;
+    display: block;
+    height: 0;
+    left: 0;
+    right: 0;
+    border-width: 0.4 * 100rpx;
+    border-style: solid;
+    border-color: #fff;
+    z-index: 9;
+    text-align: center;
+    line-height: 0.14 * 100rpx;
+  }
 
-.order-submission .allAddress .nav .item:nth-of-type(2).on:before {
-  content: "到店自提";
-  border-width: 0.4 * 100rpx;
-}
+  .order-submission .allAddress .nav .item:nth-of-type(2).on:before {
+    content: "到店自提";
+    border-width: 0.4 * 100rpx;
+  }
 
-.order-submission .allAddress .nav .item.on2 {
-  position: relative;
-}
+  .order-submission .allAddress .nav .item.on2 {
+    position: relative;
+  }
 
-.order-submission .allAddress .nav .item.on2:before {
-  position: absolute;
-  bottom: 0;
-  content: "到店自提";
-  font-size: 0.28 * 100rpx;
-  display: block;
-  height: 0;
-  left: 0;
-  right: 0;
-  border-width: 0.4 * 100rpx;
-  border-style: solid;
-  border-color: #d5e6e6;
-  text-align: center;
-  line-height: 0.14 * 100rpx;
-}
+  .order-submission .allAddress .nav .item.on2:before {
+    position: absolute;
+    bottom: 0;
+    content: "到店自提";
+    font-size: 0.28 * 100rpx;
+    display: block;
+    height: 0;
+    left: 0;
+    right: 0;
+    border-width: 0.4 * 100rpx;
+    border-style: solid;
+    border-color: #d5e6e6;
+    text-align: center;
+    line-height: 0.14 * 100rpx;
+  }
 
-.order-submission .allAddress .nav .item:nth-of-type(1).on2:before {
-  content: "快递配送";
-  border-width: 0.4 * 100rpx;
-}
+  .order-submission .allAddress .nav .item:nth-of-type(1).on2:before {
+    content: "快递配送";
+    border-width: 0.4 * 100rpx;
+  }
 
-.order-submission .allAddress .address {
-  width: 6.91 * 100rpx;
-  height: 1.5 * 100rpx;
-  margin: 0 auto;
-  box-sizing: border-box;
-}
+  .order-submission .allAddress .address {
+    width: 6.91 * 100rpx;
+    height: 1.5 * 100rpx;
+    margin: 0 auto;
+    box-sizing: border-box;
+  }
 
-.order-submission .allAddress .line {
-  width: 7.1 * 100rpx;
-  margin: 0 auto;
-}
+  .order-submission .allAddress .line {
+    width: 7.1 * 100rpx;
+    margin: 0 auto;
+  }
 
-.order-submission .wrapper .item .discount input::placeholder {
-  color: #ccc;
-}
+  .order-submission .wrapper .item .discount input::placeholder {
+    color: #ccc;
+  }
 </style>
 <script>
-import OrderGoods from "@/components/OrderGoods";
-import CouponListWindow from "@/components/CouponListWindow";
-import AddressWindow from "@/components/AddressWindow";
-import { postOrderConfirm, postOrderComputed, createOrder } from "@/api/order";
-import { mapGetters } from "vuex";
-import { handleOrderPayResults } from "@/libs/order";
-import { weappPay } from "@/libs/wechat";
-import { isWeixin, handleErrorMessage } from "@/utils";
+  import OrderGoods from "@/components/OrderGoods";
+  import CouponListWindow from "@/components/CouponListWindow";
+  import AddressWindow from "@/components/AddressWindow";
+  import {
+    postOrderConfirm,
+    postOrderComputed,
+    createOrder
+  } from "@/api/order";
+  import {
+    mapGetters
+  } from "vuex";
+  import {
+    handleOrderPayResults,
+    subscribeMessage
+  } from "@/libs/order";
+  import {
+    weappPay
+  } from "@/libs/wechat";
+  import {
+    isWeixin,
+    handleErrorMessage
+  } from "@/utils";
 
-const NAME = "OrderSubmission",
-  _isWeixin = isWeixin();
-export default {
-  name: NAME,
-  components: {
-    OrderGoods,
-    CouponListWindow,
-    AddressWindow,
-  },
-  props: {},
-  data: function () {
-    return {
-      offlinePayStatus: 2,
-      from: this.$deviceType,
-      deduction: true,
-      enableIntegral: true,
-      enableIntegralNum: 0,
-      isWeixin: _isWeixin,
-      pinkId: 0,
-      active: _isWeixin ? "weixin" : "yue",
-      showCoupon: false,
-      showAddress: false,
-      addressInfo: {},
-      couponId: 0,
-      orderGroupInfo: {
-        priceGroup: {},
-      },
-      usableCoupon: {},
-      addressLoaded: false,
-      useIntegral: false,
-      orderPrice: {
-        payPrice: "计算中",
-      },
-      mark: "",
-      systemStore: {},
-      shipping_type: 0,
-      contacts: "",
-      contactsTel: "",
-      storeSelfMention: 0,
-      cartid: "",
-    };
-  },
-  computed: mapGetters(["userInfo", "storeItems"]),
-  watch: {
-    useIntegral() {
-      this.computedPrice();
+  const NAME = "OrderSubmission",
+    _isWeixin = isWeixin();
+  export default {
+    name: NAME,
+    components: {
+      OrderGoods,
+      CouponListWindow,
+      AddressWindow,
     },
-    $yroute(n) {
-      if (n.name === NAME) this.getCartInfo();
+    props: {},
+    data: function () {
+      return {
+        offlinePayStatus: 2,
+        from: this.$deviceType,
+        deduction: true,
+        enableIntegral: true,
+        enableIntegralNum: 0,
+        isWeixin: _isWeixin,
+        pinkId: 0,
+        active: _isWeixin ? "weixin" : "yue",
+        showCoupon: false,
+        showAddress: false,
+        addressInfo: {},
+        couponId: 0,
+        orderGroupInfo: {
+          priceGroup: {},
+        },
+        usableCoupon: {},
+        addressLoaded: false,
+        useIntegral: false,
+        orderPrice: {
+          payPrice: "计算中",
+        },
+        mark: "",
+        systemStore: {},
+        shipping_type: 0,
+        contacts: "",
+        contactsTel: "",
+        storeSelfMention: 0,
+        cartid: "",
+      };
     },
-    shipping_type() {
-      this.computedPrice();
-    },
-  },
-  onShow: function () {
-    let that = this;
-    this.$store.dispatch("getUser", true);
-    that.getCartInfo();
-    console.log(that.$yroute);
-    if (that.$yroute.query.pinkid !== undefined) {
-      that.pinkId = that.$yroute.query.pinkid;
-    }
-    if (that.$yroute.query.id !== undefined) {
-      that.cartid = that.$yroute.query.id;
-      console.log(that.cartid);
-    }
-  },
-  methods: {
-    showStoreList() {
-      this.$store.commit("get_to", "orders");
-      this.$yrouter.push({
-        path: "/pages/shop/StoreList/index",
-      });
+    computed: mapGetters(["userInfo", "storeItems"]),
+    watch: {
+      useIntegral() {
+        this.computedPrice();
+      },
+      $yroute(n) {
+        if (n.name === NAME) this.getCartInfo();
+      },
+      shipping_type() {
+        this.computedPrice();
+      },
     },
-    addressType: function (index) {
-      if (index && !this.systemStore.id) {
-        uni.showToast({
-          title: "暂无门店信息,您无法选择到店自提!",
-          icon: "none",
-          duration: 2000,
-        });
-        return;
+    onShow: function () {
+      let that = this;
+      this.$store.dispatch("getUser", true);
+      that.getCartInfo();
+      console.log(that.$yroute);
+      if (that.$yroute.query.pinkid !== undefined) {
+        that.pinkId = that.$yroute.query.pinkid;
+      }
+      if (that.$yroute.query.id !== undefined) {
+        that.cartid = that.$yroute.query.id;
+        console.log(that.cartid);
       }
-      console.log(this);
-      this.shipping_type = index;
-    },
-    changeUseIntegral: function (e) {
-      // this.computedPrice();
-      this.useIntegral = e.mp.detail.value[0];
-    },
-    computedPrice() {
-      let shipping_type = this.shipping_type;
-      postOrderComputed(this.orderGroupInfo.orderKey, {
-        addressId: this.addressInfo.id,
-        useIntegral: this.useIntegral ? 1 : 0,
-        couponId: this.usableCoupon.id || 0,
-        shipping_type: parseInt(shipping_type) + 1,
-      }).then((res) => {
-        const data = res.data;
-        if (data.status === "EXTEND_ORDER") {
-          this.$yrouter.replace({
-            path: "/pages/order/OrderDetails/index",
-            query: {
-              id: data.result.orderId,
-            },
-          });
-        } else {
-          this.orderPrice = data.result;
-        }
-      });
     },
-    getCartInfo() {
-      const cartIds = this.$yroute.query.id;
-      if (!cartIds) {
-        uni.showToast({
-          title: "参数有误",
-          icon: "none",
-          duration: 2000,
+    methods: {
+      showStoreList() {
+        this.$store.commit("get_to", "orders");
+        this.$yrouter.push({
+          path: "/pages/shop/StoreList/index",
         });
-        return this.$yrouter.back();
-      }
-      postOrderConfirm(cartIds)
-        .then((res) => {
-          console.log(res, 999999);
-          console.log(res.data.systemStore || {}, 999999);
-          this.offlinePayStatus = res.data.offline_pay_status;
-          this.orderGroupInfo = res.data;
-          this.deduction = res.data.deduction;
-          this.usableCoupon = res.data.usableCoupon || {};
-          this.addressInfo = res.data.addressInfo || {};
-          // 用来显示到店自提的店铺地址
-          this.systemStore = res.data.systemStore || {};
-          this.storeSelfMention = res.data.storeSelfMention;
-          this.computedPrice();
-        })
-        .catch(() => {
+      },
+      addressType: function (index) {
+        if (index && !this.systemStore.id) {
           uni.showToast({
-            title: "加载订单数据失败",
+            title: "暂无门店信息,您无法选择到店自提!",
             icon: "none",
             duration: 2000,
           });
+          return;
+        }
+        console.log(this);
+        this.shipping_type = index;
+      },
+      changeUseIntegral: function (e) {
+        // this.computedPrice();
+        this.useIntegral = e.mp.detail.value[0];
+      },
+      computedPrice() {
+        let shipping_type = this.shipping_type;
+        postOrderComputed(this.orderGroupInfo.orderKey, {
+          addressId: this.addressInfo.id,
+          useIntegral: this.useIntegral ? 1 : 0,
+          couponId: this.usableCoupon.id || 0,
+          shipping_type: parseInt(shipping_type) + 1,
+        }).then((res) => {
+          const data = res.data;
+          if (data.status === "EXTEND_ORDER") {
+            this.$yrouter.replace({
+              path: "/pages/order/OrderDetails/index",
+              query: {
+                id: data.result.orderId,
+              },
+            });
+          } else {
+            this.orderPrice = data.result;
+          }
         });
-    },
-    addressTap: function () {
-      this.showAddress = true;
-      if (!this.addressLoaded) {
-        this.addressLoaded = true;
-        this.$refs.mychild.getAddressList();
-      }
-    },
-    addressRedirect() {
-      this.addressLoaded = false;
-      this.showAddress = false;
-    },
-    couponTap: function () {
-      this.showCoupon = true;
-    },
-    changeCoupon: function (coupon) {
-      if (!coupon) {
-        this.usableCoupon = {
-          couponTitle: "不使用优惠券",
-          id: 0,
-        };
-      } else {
-        this.usableCoupon = coupon;
-      }
-      this.computedPrice();
-    },
-    payItem: function (index) {
-      this.active = index;
-    },
-    changeAddress(addressInfo) {
-      this.addressInfo = addressInfo;
-      this.computedPrice();
-    },
-    createOrder() {
-      let shipping_type = this.shipping_type;
-      if (!this.active) {
-        uni.showToast({
-          title: "请选择支付方式",
-          icon: "none",
-          duration: 2000,
-        });
-        return;
-      }
-      if (!this.addressInfo.id && !this.shipping_type) {
-        uni.showToast({
-          title: "请选择收货地址",
-          icon: "none",
-          duration: 2000,
-        });
-        return;
-      }
-
-      if (this.shipping_type) {
-        if (
-          (this.contacts === "" || this.contactsTel === "") &&
-          this.shipping_type
-        ) {
+      },
+      getCartInfo() {
+        const cartIds = this.$yroute.query.id;
+        if (!cartIds) {
           uni.showToast({
-            title: "请填写联系人或联系人电话",
+            title: "参数有误",
             icon: "none",
             duration: 2000,
           });
-          return;
+          return this.$yrouter.back();
         }
-
-        if (!/^1(3|4|5|7|8|9|6)\d{9}$/.test(this.contactsTel)) {
+        postOrderConfirm(cartIds)
+          .then((res) => {
+            console.log(res, 999999);
+            console.log(res.data.systemStore || {}, 999999);
+            this.offlinePayStatus = res.data.offline_pay_status;
+            this.orderGroupInfo = res.data;
+            this.deduction = res.data.deduction;
+            this.usableCoupon = res.data.usableCoupon || {};
+            this.addressInfo = res.data.addressInfo || {};
+            // 用来显示到店自提的店铺地址
+            this.systemStore = res.data.systemStore || {};
+            this.storeSelfMention = res.data.storeSelfMention;
+            this.computedPrice();
+          })
+          .catch(() => {
+            uni.showToast({
+              title: "加载订单数据失败",
+              icon: "none",
+              duration: 2000,
+            });
+          });
+      },
+      addressTap: function () {
+        this.showAddress = true;
+        if (!this.addressLoaded) {
+          this.addressLoaded = true;
+          this.$refs.mychild.getAddressList();
+        }
+      },
+      addressRedirect() {
+        this.addressLoaded = false;
+        this.showAddress = false;
+      },
+      couponTap: function () {
+        this.showCoupon = true;
+      },
+      changeCoupon: function (coupon) {
+        if (!coupon) {
+          this.usableCoupon = {
+            couponTitle: "不使用优惠券",
+            id: 0,
+          };
+        } else {
+          this.usableCoupon = coupon;
+        }
+        this.computedPrice();
+      },
+      payItem: function (index) {
+        this.active = index;
+      },
+      changeAddress(addressInfo) {
+        this.addressInfo = addressInfo;
+        this.computedPrice();
+      },
+      createOrder() {
+        let shipping_type = this.shipping_type;
+        if (!this.active) {
           uni.showToast({
-            title: "请填写正确的手机号",
+            title: "请选择支付方式",
             icon: "none",
             duration: 2000,
           });
           return;
         }
-        if (!/^[\u4e00-\u9fa5\w]{2,16}$/.test(this.contacts)) {
+        if (!this.addressInfo.id && !this.shipping_type) {
           uni.showToast({
-            title: "请填写您的真实姓名",
+            title: "请选择收货地址",
             icon: "none",
             duration: 2000,
           });
           return;
         }
-      }
 
-      uni.showLoading({
-        title: "生成订单中",
-      });
-      let from = {};
-      if (this.$deviceType == "app") {
-        from.from = "app";
-      }
-      createOrder(this.orderGroupInfo.orderKey, {
-        realName: this.contacts,
-        phone: this.contactsTel,
-        addressId: this.addressInfo.id,
-        useIntegral: this.useIntegral ? 1 : 0,
-        couponId: this.usableCoupon.id || 0,
-        payType: this.active,
-        pinkId: this.pinkId,
-        seckillId: this.orderGroupInfo.seckill_id,
-        combinationId: this.orderGroupInfo.combination_id,
-        bargainId: this.orderGroupInfo.bargain_id,
-        from: this.from,
-        mark: this.mark || "",
-        shippingType: parseInt(shipping_type) + 1,
-        storeId: this.storeItems ? this.storeItems.id : this.systemStore.id,
-        ...from,
-      })
-        .then((res) => {
-          uni.hideLoading();
-          handleOrderPayResults.call(this, res.data, "create");
-        })
-        .catch((err) => {
-          handleErrorMessage(err, "创建订单失败");
+        if (this.shipping_type) {
+          if (
+            (this.contacts === "" || this.contactsTel === "") &&
+            this.shipping_type
+          ) {
+            uni.showToast({
+              title: "请填写联系人或联系人电话",
+              icon: "none",
+              duration: 2000,
+            });
+            return;
+          }
+
+          if (!/^1(3|4|5|7|8|9|6)\d{9}$/.test(this.contactsTel)) {
+            uni.showToast({
+              title: "请填写正确的手机号",
+              icon: "none",
+              duration: 2000,
+            });
+            return;
+          }
+          if (!/^[\u4e00-\u9fa5\w]{2,16}$/.test(this.contacts)) {
+            uni.showToast({
+              title: "请填写您的真实姓名",
+              icon: "none",
+              duration: 2000,
+            });
+            return;
+          }
+        }
+
+        uni.showLoading({
+          title: "生成订单中",
         });
+        let from = {};
+        if (this.$deviceType == "app") {
+          from.from = "app";
+        }
+        // #ifdef MP-WEIXIN
+        subscribeMessage()
+        // #endif
+        createOrder(this.orderGroupInfo.orderKey, {
+            realName: this.contacts,
+            phone: this.contactsTel,
+            addressId: this.addressInfo.id,
+            useIntegral: this.useIntegral ? 1 : 0,
+            couponId: this.usableCoupon.id || 0,
+            payType: this.active,
+            pinkId: this.pinkId,
+            seckillId: this.orderGroupInfo.seckill_id,
+            combinationId: this.orderGroupInfo.combination_id,
+            bargainId: this.orderGroupInfo.bargain_id,
+            from: this.from,
+            mark: this.mark || "",
+            shippingType: parseInt(shipping_type) + 1,
+            storeId: this.storeItems ? this.storeItems.id : this.systemStore.id,
+            ...from,
+          })
+          .then((res) => {
+            uni.hideLoading();
+            handleOrderPayResults.call(this, res.data, "create", this.active);
+          })
+          .catch((err) => {
+            handleErrorMessage(err, "创建订单失败");
+          });
+      },
     },
-  },
-};
+  };
 </script>
diff --git a/pages/shop/StoreList/index.vue b/pages/shop/StoreList/index.vue
index fa8d7e8..434a77f 100644
--- a/pages/shop/StoreList/index.vue
+++ b/pages/shop/StoreList/index.vue
@@ -107,7 +107,11 @@ export default {
           this.mapKey = res.data.mapKey;
         })
         .catch(err => {
-          this.$dialog.error(err.msg);
+          uni.showToast({
+					title: err.msg,
+					icon: "none",
+					duration: 2000,
+				});
         });
     }
   }
diff --git a/pages/user/Recharge/index.vue b/pages/user/Recharge/index.vue
index 49cfd1e..f69688c 100644
--- a/pages/user/Recharge/index.vue
+++ b/pages/user/Recharge/index.vue
@@ -15,23 +15,16 @@
       </view>
       <view class="info-wrapper">
         <view class="picList acea-row row-between mt-20">
-          <view
-            class="pic-box pic-box-color acea-row row-center-wrapper row-column"
-            :class="activePic === index ? 'pic-box-color-active' : ''"
-            v-for="(item, index) in picList"
-            :key="index"
-            @click="picCharge(index, item)"
-          >
+          <view class="pic-box pic-box-color acea-row row-center-wrapper row-column"
+            :class="activePic === index ? 'pic-box-color-active' : ''" v-for="(item, index) in picList" :key="index"
+            @click="picCharge(index, item)">
             <view class="pic-number-pic">
               <text>
                 {{ item.value.price }}
                 <text class="pic-number">元</text>
               </text>
             </view>
-            <view
-              class="pic-number"
-              v-if="item.value.give_price > 0"
-            >赠送:{{ item.value.give_price }} 元</view>
+            <view class="pic-number" v-if="item.value.give_price > 0">赠送:{{ item.value.give_price }} 元</view>
           </view>
           <!-- <view
             class="pic-box pic-box-color acea-row row-center-wrapper"
@@ -52,293 +45,335 @@
   </view>
 </template>
 <script>
-import { mapGetters } from "vuex";
-import { weappPay } from "@/libs/wechat";
-import { rechargeWechat, getRechargeApi } from "@/api/user";
-import { add, sub } from "@/utils/bc";
+  import {
+    mapGetters
+  } from "vuex";
+  import {
+    weappPay
+  } from "@/libs/wechat";
+  import {
+    rechargeWechat,
+    getRechargeApi
+  } from "@/api/user";
+  import {
+    add,
+    sub
+  } from "@/utils/bc";
+  import {
+    subscribeMessage
+  } from "@/libs/order";
+
 
-export default {
-  name: "Recharge",
-  components: {},
-  props: {},
-  data: function () {
-    return {
-      active: 0,
-      from: this.$deviceType,
-      money: "",
-      now_money: "",
-      picList: [],
-      activePic: 0,
-      numberPic: "",
-      paid_price: "",
-      rechar_id: 0,
-    };
-  },
-  computed: mapGetters(["userInfo"]),
-  mounted: function () {
-    this.now_money = this.userInfo.nowMoney;
-    this.getRecharge();
-  },
-  methods: {
-    /**
-     * 充值额度选择
-     */
-    getRecharge() {
-      getRechargeApi()
-        .then((res) => {
-          this.picList = res.data.recharge_price_ways || [];
-          if (this.picList[0]) {
-            this.rechar_id = this.picList[0].id;
-            this.paid_price = this.picList[0].value.price;
-            this.numberPic = this.picList[0].value.give_price;
-          }
-        })
-        .catch((res) => {
+  export default {
+    name: "Recharge",
+    components: {},
+    props: {},
+    data: function () {
+      return {
+        active: 0,
+        from: this.$deviceType,
+        money: "",
+        now_money: "",
+        picList: [],
+        activePic: 0,
+        numberPic: "",
+        paid_price: "",
+        rechar_id: 0,
+      };
+    },
+    computed: mapGetters(["userInfo"]),
+    mounted: function () {
+      this.now_money = this.userInfo.nowMoney;
+      this.getRecharge();
+    },
+    methods: {
+      /**
+       * 充值额度选择
+       */
+      getRecharge() {
+        getRechargeApi()
+          .then((res) => {
+            this.picList = res.data.recharge_price_ways || [];
+            if (this.picList[0]) {
+              this.rechar_id = this.picList[0].id;
+              this.paid_price = this.picList[0].value.price;
+              this.numberPic = this.picList[0].value.give_price;
+            }
+          })
+          .catch((res) => {
+            uni.showToast({
+              title: err.msg || err.response.data.msg || err.response.data.message,
+              icon: "none",
+              duration: 2000,
+            });
+          });
+      },
+      /**
+       * 选择金额
+       */
+      picCharge(idx, item) {
+        this.activePic = idx;
+        if (idx == this.picList.length) {
+          this.rechar_id = 0;
+          this.paid_price = "";
+          this.numberPic = "";
+        } else {
+          this.money = "";
+          this.rechar_id = item.id;
+          this.paid_price = item.value.give_price;
+          this.numberPic = item.value.price;
+        }
+      },
+      recharge: function () {
+        let that = this,
+          price = Number(this.money);
+        if (this.picList.length == this.activePic && price === 0) {
           uni.showToast({
-            title:
-              err.msg || err.response.data.msg || err.response.data.message,
+            title: "请输入您要充值的金额",
             icon: "none",
             duration: 2000,
           });
-        });
-    },
-    /**
-     * 选择金额
-     */
-    picCharge(idx, item) {
-      this.activePic = idx;
-      if (idx == this.picList.length) {
-        this.rechar_id = 0;
-        this.paid_price = "";
-        this.numberPic = "";
-      } else {
-        this.money = "";
-        this.rechar_id = item.id;
-        this.paid_price = item.value.give_price;
-        this.numberPic = item.value.price;
-      }
-    },
-    recharge: function () {
-      let that = this,
-        price = Number(this.money);
-      if (this.picList.length == this.activePic && price === 0) {
-        uni.showToast({
-          title: "请输入您要充值的金额",
-          icon: "none",
-          duration: 2000,
-        });
-        return;
-      } else if (this.picList.length == this.activePic && price < 0.01) {
-        uni.showToast({
-          title: "充值金额不能低于0.01",
-          icon: "none",
-          duration: 2000,
-        });
-        return;
-      } else if (this.picList.length == this.activePic && price > 99999) {
-        uni.showToast({
-          title: "充值金额不能大于99999",
-          icon: "none",
-          duration: 2000,
-        });
-        return;
-      }
-      let prices = "",
-        paid_price = "";
-      if (price) {
-        prices = price;
-        paid_price = 0;
-      } else {
-        prices = that.numberPic;
-        paid_price = that.paid_price;
-      }
-      rechargeWechat({
-        price: prices,
-        from: that.from,
-        paid_price: paid_price,
-        rechar_id: that.rechar_id,
-      })
-        .then((res) => {
-          console.log(res);
-          var data = res.data.data;
-          weappPay(res.data.data)
-            .then(() => {
-              prices = add(prices, paid_price);
-              that.now_money = add(prices, parseFloat(that.userInfo.nowMoney));
-              uni.showToast({
-                title: "支付成功",
-                icon: "success",
-                duration: 2000,
-              });
-              this.$yrouter.back();
-            })
-            .finally((res) => {
-              //if(typeof(res) == "undefined") return
-              uni.showToast({
-                title: res,
-                icon: "none",
-                duration: 2000,
-              });
-            })
-            .catch(function () {
-              uni.showToast({
-                title: "支付失败",
-                icon: "none",
-                duration: 2000,
-              });
-            });
-        })
-        .catch((err) => {
-          console.log(err);
+          return;
+        } else if (this.picList.length == this.activePic && price < 0.01) {
           uni.showToast({
-            title:
-              err.msg || err.response.data.msg || err.response.data.message,
+            title: "充值金额不能低于0.01",
             icon: "none",
             duration: 2000,
           });
-        });
+          return;
+        } else if (this.picList.length == this.activePic && price > 99999) {
+          uni.showToast({
+            title: "充值金额不能大于99999",
+            icon: "none",
+            duration: 2000,
+          });
+          return;
+        }
+        let prices = "",
+          paid_price = "";
+        if (price) {
+          prices = price;
+          paid_price = 0;
+        } else {
+          prices = that.numberPic;
+          paid_price = that.paid_price;
+        }
+        rechargeWechat({
+            price: prices,
+            from: this.$deviceType == 'weixin' || this.$deviceType == 'weixinh5' ? 'uniappH5' : this.$deviceType,
+            paid_price: paid_price,
+            rechar_id: that.rechar_id,
+          })
+          .then((res) => {
+            console.log(res);
+            var data = res.data.data;
+            weappPay(res.data.data)
+              .then(() => {
+                prices = add(prices, paid_price);
+                that.now_money = add(prices, parseFloat(that.userInfo.nowMoney));
+                uni.showToast({
+                  title: "支付成功",
+                  icon: "success",
+                  duration: 2000,
+                });
+                // #ifdef MP-WEIXIN
+                subscribeMessage()
+                // #endif
+                this.$yrouter.back();
+              })
+              .finally((res) => {
+                //if(typeof(res) == "undefined") return
+                uni.showToast({
+                  title: res,
+                  icon: "none",
+                  duration: 2000,
+                });
+              })
+              .catch(function () {
+                uni.showToast({
+                  title: "支付失败",
+                  icon: "none",
+                  duration: 2000,
+                });
+              });
+          })
+          .catch((err) => {
+            console.log(err);
+            uni.showToast({
+              title: err.msg || err.response.data.msg || err.response.data.message,
+              icon: "none",
+              duration: 2000,
+            });
+          });
+      },
     },
-  },
-};
+  };
 </script>
 
 <style scoped lang="less">
-#iframe {
-  display: none;
-}
-.pic-box-color-active {
-  background-color: #eb3729 !important;
-  color: #fff !important;
-}
-.picList {
-  margin-bottom: 0.3 * 100rpx;
-  margin-top: 0.3 * 100rpx;
-}
-.font-color {
-  color: #e83323;
-}
-.recharge {
-  border-radius: 0.1 * 100rpx;
-  width: 100%;
-  background-color: #fff;
-  margin: 0.2 * 100rpx auto 0 auto;
-  padding: 0.3 * 100rpx;
-  border-top-right-radius: 0.39 * 100rpx;
-  border-top-left-radius: 0.39 * 100rpx;
-  margin-top: -0.45 * 100rpx;
-  box-sizing: border-box;
-}
-.recharge .nav {
-  height: 0.75 * 100rpx;
-  line-height: 0.75 * 100rpx;
-  padding: 0 1 * 100rpx;
-}
-.recharge .nav .item {
-  font-size: 0.3 * 100rpx;
-  color: #333;
-}
-.recharge .nav .item.on {
-  font-weight: bold;
-  border-bottom: 0.04 * 100rpx solid #e83323;
-}
-.recharge .info-wrapper {
-}
-.recharge .info-wrapper .money {
-  margin-top: 0.6 * 100rpx;
-  padding-bottom: 0.2 * 100rpx;
-  border-bottom: 1px dashed #ddd;
-  text-align: center;
-}
-.recharge .info-wrapper .money span {
-  font-size: 0.56 * 100rpx;
-  color: #333;
-  font-weight: bold;
-}
-.recharge .info-wrapper .money input {
-  display: inline-block;
-  width: 3 * 100rpx;
-  font-size: 0.84 * 100rpx;
-  text-align: center;
-  color: #282828;
-  font-weight: bold;
-  padding-right: 0.7 * 100rpx;
-}
-.recharge .info-wrapper .money input::placeholder {
-  color: #ddd;
-}
-.recharge .info-wrapper .money input::-webkit-input-placeholder {
-  color: #ddd;
-}
-.recharge .info-wrapper .money input:-moz-placeholder {
-  color: #ddd;
-}
-.recharge .info-wrapper .money input::-moz-placeholder {
-  color: #ddd;
-}
-.recharge .info-wrapper .money input:-ms-input-placeholder {
-  color: #ddd;
-}
-.tip {
-  font-size: 0.28 * 100rpx;
-  color: #333333;
-  font-weight: 800;
-  margin-bottom: 0.14 * 100rpx;
-}
-.recharge .info-wrapper .tips span {
-  color: #ef4a49;
-}
-.recharge .info-wrapper .pay-btn {
-  display: block;
-  width: 100%;
-  height: 0.86 * 100rpx;
-  margin: 0.5 * 100rpx auto 0 auto;
-  line-height: 0.86 * 100rpx;
-  text-align: center;
-  color: #fff;
-  border-radius: 0.5 * 100rpx;
-  font-size: 0.3 * 100rpx;
-  font-weight: bold;
-}
-.payment-top {
-  width: 100%;
-  height: 3.5 * 100rpx;
-  background-color: #eb3729;
-}
-.payment-top .name {
-  font-size: 0.26 * 100rpx;
-  color: rgba(255, 255, 255, 0.8);
-  margin-top: -0.38 * 100rpx;
-  margin-bottom: 0.3 * 100rpx;
-}
-.payment-top .pic {
-  font-size: 0.32 * 100rpx;
-  color: #fff;
-}
-.payment-top .pic-font {
-  font-size: 0.78 * 100rpx;
-  color: #fff;
-}
-.picList .pic-box {
-  width: 32%;
-  height: auto;
-  border-radius: 0.2 * 100rpx;
-  margin-top: 0.21 * 100rpx;
-  padding: 0.2 * 100rpx 0;
-}
-.pic-box-color {
-  background-color: #f4f4f4;
-  color: #656565;
-}
-.pic-number {
-  font-size: 0.22 * 100rpx;
-}
-.pic-number-pic {
-  font-size: 0.38 * 100rpx;
-  margin-right: 0.1 * 100rpx;
-  text-align: center;
-}
-.pic-box-money {
-  width: 100%;
-  display: block;
-}
+  #iframe {
+    display: none;
+  }
+
+  .pic-box-color-active {
+    background-color: #eb3729 !important;
+    color: #fff !important;
+  }
+
+  .picList {
+    margin-bottom: 0.3 * 100rpx;
+    margin-top: 0.3 * 100rpx;
+  }
+
+  .font-color {
+    color: #e83323;
+  }
+
+  .recharge {
+    border-radius: 0.1 * 100rpx;
+    width: 100%;
+    background-color: #fff;
+    margin: 0.2 * 100rpx auto 0 auto;
+    padding: 0.3 * 100rpx;
+    border-top-right-radius: 0.39 * 100rpx;
+    border-top-left-radius: 0.39 * 100rpx;
+    margin-top: -0.45 * 100rpx;
+    box-sizing: border-box;
+  }
+
+  .recharge .nav {
+    height: 0.75 * 100rpx;
+    line-height: 0.75 * 100rpx;
+    padding: 0 1 * 100rpx;
+  }
+
+  .recharge .nav .item {
+    font-size: 0.3 * 100rpx;
+    color: #333;
+  }
+
+  .recharge .nav .item.on {
+    font-weight: bold;
+    border-bottom: 0.04 * 100rpx solid #e83323;
+  }
+
+  .recharge .info-wrapper {}
+
+  .recharge .info-wrapper .money {
+    margin-top: 0.6 * 100rpx;
+    padding-bottom: 0.2 * 100rpx;
+    border-bottom: 1px dashed #ddd;
+    text-align: center;
+  }
+
+  .recharge .info-wrapper .money span {
+    font-size: 0.56 * 100rpx;
+    color: #333;
+    font-weight: bold;
+  }
+
+  .recharge .info-wrapper .money input {
+    display: inline-block;
+    width: 3 * 100rpx;
+    font-size: 0.84 * 100rpx;
+    text-align: center;
+    color: #282828;
+    font-weight: bold;
+    padding-right: 0.7 * 100rpx;
+  }
+
+  .recharge .info-wrapper .money input::placeholder {
+    color: #ddd;
+  }
+
+  .recharge .info-wrapper .money input::-webkit-input-placeholder {
+    color: #ddd;
+  }
+
+  .recharge .info-wrapper .money input:-moz-placeholder {
+    color: #ddd;
+  }
+
+  .recharge .info-wrapper .money input::-moz-placeholder {
+    color: #ddd;
+  }
+
+  .recharge .info-wrapper .money input:-ms-input-placeholder {
+    color: #ddd;
+  }
+
+  .tip {
+    font-size: 0.28 * 100rpx;
+    color: #333333;
+    font-weight: 800;
+    margin-bottom: 0.14 * 100rpx;
+  }
+
+  .recharge .info-wrapper .tips span {
+    color: #ef4a49;
+  }
+
+  .recharge .info-wrapper .pay-btn {
+    display: block;
+    width: 100%;
+    height: 0.86 * 100rpx;
+    margin: 0.5 * 100rpx auto 0 auto;
+    line-height: 0.86 * 100rpx;
+    text-align: center;
+    color: #fff;
+    border-radius: 0.5 * 100rpx;
+    font-size: 0.3 * 100rpx;
+    font-weight: bold;
+  }
+
+  .payment-top {
+    width: 100%;
+    height: 3.5 * 100rpx;
+    background-color: #eb3729;
+  }
+
+  .payment-top .name {
+    font-size: 0.26 * 100rpx;
+    color: rgba(255, 255, 255, 0.8);
+    margin-top: -0.38 * 100rpx;
+    margin-bottom: 0.3 * 100rpx;
+  }
+
+  .payment-top .pic {
+    font-size: 0.32 * 100rpx;
+    color: #fff;
+  }
+
+  .payment-top .pic-font {
+    font-size: 0.78 * 100rpx;
+    color: #fff;
+  }
+
+  .picList .pic-box {
+    width: 32%;
+    height: auto;
+    border-radius: 0.2 * 100rpx;
+    margin-top: 0.21 * 100rpx;
+    padding: 0.2 * 100rpx 0;
+  }
+
+  .pic-box-color {
+    background-color: #f4f4f4;
+    color: #656565;
+  }
+
+  .pic-number {
+    font-size: 0.22 * 100rpx;
+  }
+
+  .pic-number-pic {
+    font-size: 0.38 * 100rpx;
+    margin-right: 0.1 * 100rpx;
+    text-align: center;
+  }
+
+  .pic-box-money {
+    width: 100%;
+    display: block;
+  }
 </style>
diff --git a/pages/user/address/AddAddress/index.vue b/pages/user/address/AddAddress/index.vue
index 06c97eb..394a268 100644
--- a/pages/user/address/AddAddress/index.vue
+++ b/pages/user/address/AddAddress/index.vue
@@ -13,12 +13,7 @@
         <view class="name">所在地区</view>
         <view class="picker acea-row row-between-wrapper select-value form-control">
           <view class="address">
-            <CitySelect
-              ref="cityselect"
-              :defaultValue="addressText"
-              @callback="result"
-              :items="district"
-            ></CitySelect>
+            <CitySelect ref="cityselect" :defaultValue="addressText" @callback="result" :items="district"></CitySelect>
           </view>
           <view class="iconfont icon-dizhi font-color-red"></view>
         </view>
@@ -47,7 +42,7 @@
 </template>
 
 <script type="text/babel">
-import CitySelect from "@/components/CitySelect";
+  import CitySelect from "@/components/CitySelect";
 import { getAddress, postAddress, getCity } from "@/api/user";
 import attrs, { required, chs_phone } from "@/utils/validate";
 import { validatorDefaultCatch } from "@/utils/dialog";
@@ -89,7 +84,11 @@ export default {
           that.ready = true;
         })
         .catch(err => {
-          that.$dialog.error(err.msg);
+          uni.showToast({
+					title: err.msg,
+					icon: "none",
+					duration: 2000,
+				});
         });
     },
     getUserAddress: function() {
@@ -194,10 +193,10 @@ export default {
 </script>
 
 <style lang="less">
-.address {
-  text {
-    width: 100%;
-    display: block;
+  .address {
+    text {
+      width: 100%;
+      display: block;
+    }
   }
-}
 </style>
diff --git a/pages/user/promotion/Poster/index.vue b/pages/user/promotion/Poster/index.vue
index 81ec453..b27c54c 100644
--- a/pages/user/promotion/Poster/index.vue
+++ b/pages/user/promotion/Poster/index.vue
@@ -4,12 +4,7 @@
       <swiper indicatorDots="true">
         <block v-for="(item, infoIndex) in info" :key="infoIndex">
           <swiper-item>
-            <image
-              class="slide-image"
-              :src="item.wap_poster"
-              mode="widthFix"
-              show-menu-by-longpress
-            />
+            <image class="slide-image" :src="item.wap_poster" mode="widthFix" show-menu-by-longpress />
           </swiper-item>
         </block>
       </swiper>
@@ -18,143 +13,143 @@
   </view>
 </template>
 <script>
-// import { swiper, swiperSlide } from "vue-awesome-swiper";
-import { getSpreadImg } from "@/api/user";
+  // import { swiper, swiperSlide } from "vue-awesome-swiper";
+  import {
+    getSpreadImg
+  } from "@/api/user";
 
-export default {
-  name: "Poster",
-  components: {
-    // swiper,
-    // swiperSlide
-  },
-  props: {},
-  data: function() {
-    return {
-      swiperPosters: {
-        speed: 1000,
-        effect: "coverflow",
-        slidesPerView: "auto",
-        centeredSlides: true,
-        coverflowEffect: {
-          rotate: 0, // 旋转的角度
-          stretch: -20, // 拉伸   图片间左右的间距和密集度
-          depth: 100, // 深度   切换图片间上下的间距和密集度
-          modifier: 3, // 修正值 该值越大前面的效果越明显
-          slideShadows: false // 页面阴影效果
+  export default {
+    name: "Poster",
+    components: {
+      // swiper,
+      // swiperSlide
+    },
+    props: {},
+    data: function () {
+      return {
+        swiperPosters: {
+          speed: 1000,
+          effect: "coverflow",
+          slidesPerView: "auto",
+          centeredSlides: true,
+          coverflowEffect: {
+            rotate: 0, // 旋转的角度
+            stretch: -20, // 拉伸   图片间左右的间距和密集度
+            depth: 100, // 深度   切换图片间上下的间距和密集度
+            modifier: 3, // 修正值 该值越大前面的效果越明显
+            slideShadows: false // 页面阴影效果
+          },
+          observer: true,
+          observeParents: true
         },
-        observer: true,
-        observeParents: true
-      },
-      info: [],
-      activeIndex: 0
-    };
-  },
-  mounted: function() {
-    this.getIndex();
-    let that = this;
-    // this.swiper.on("slideChange", function() {
-    //   that.activeIndex = that.swiper.activeIndex;
-    // });
-  },
-  computed: {
-    swiper() {
-      // return this.$refs.mySwiper.swiper;
-    }
-  },
-  methods: {
-    getIndex: function() {
+        info: [],
+        activeIndex: 0
+      };
+    },
+    mounted: function () {
+      this.getIndex();
       let that = this;
-      let from = {};
-      if (this.$deviceType == "app") {
-        from.from = "app";
+      // this.swiper.on("slideChange", function() {
+      //   that.activeIndex = that.swiper.activeIndex;
+      // });
+    },
+    computed: {
+      swiper() {
+        // return this.$refs.mySwiper.swiper;
       }
-      getSpreadImg(from).then(
-        res => {
-          that.info = res.data;
-        },
-        err => {
-          uni.showToast({
-            title: err.msg || err.response.data.msg|| err.response.data.message,
-            icon: "none",
-            duration: 2000
-          });
-        }
-      );
     },
-    downloadIamge: function(imgsrc, name) {
-      var that = this;
-      this.isDown = true;
-      var downloadUrl = imgsrc;
+    methods: {
+      getIndex: function () {
+        let that = this;
+        getSpreadImg({
+          from: this.$deviceType == 'weixin' || this.$deviceType == 'weixinh5' ? 'uniappH5' : this.$deviceType
+        }).then(
+          res => {
+            that.info = res.data;
+          },
+          err => {
+            uni.showToast({
+              title: err.msg || err.response.data.msg || err.response.data.message,
+              icon: "none",
+              duration: 2000
+            });
+          }
+        );
+      },
+      downloadIamge: function (imgsrc, name) {
+        var that = this;
+        this.isDown = true;
+        var downloadUrl = imgsrc;
 
-      if (!wx.saveImageToPhotosAlbum) {
-        uni.showModal({
-          title: "提示",
-          content:
-            "当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"
-        });
-        that.openDialogVisible = true;
+        if (!wx.saveImageToPhotosAlbum) {
+          uni.showModal({
+            title: "提示",
+            content: "当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"
+          });
+          that.openDialogVisible = true;
 
-        return;
-      }
+          return;
+        }
 
-      // 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.writePhotosAlbum" 这个 scope
-      wx.getSetting({
-        success(res) {
-          if (!res.authSetting["scope.writePhotosAlbum"]) {
-            that.openDialogVisible = true;
+        // 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.writePhotosAlbum" 这个 scope
+        wx.getSetting({
+          success(res) {
+            if (!res.authSetting["scope.writePhotosAlbum"]) {
+              that.openDialogVisible = true;
 
-            // 接口调用询问
-            wx.authorize({
-              scope: "scope.writePhotosAlbum",
-              success() {
-                that.downloadImage(downloadUrl);
-              },
-              fail() {
-                // 用户拒绝了授权
-                // 打开设置页面
-                wx.openSetting({
-                  success: function(data) {},
-                  fail: function(data) {}
-                });
-              }
-            });
-          } else {
-            that.downloadImage(downloadUrl);
+              // 接口调用询问
+              wx.authorize({
+                scope: "scope.writePhotosAlbum",
+                success() {
+                  that.downloadImage(downloadUrl);
+                },
+                fail() {
+                  // 用户拒绝了授权
+                  // 打开设置页面
+                  wx.openSetting({
+                    success: function (data) {},
+                    fail: function (data) {}
+                  });
+                }
+              });
+            } else {
+              that.downloadImage(downloadUrl);
+            }
+          },
+          fail(res) {
+            that.openDialogVisible = true;
           }
-        },
-        fail(res) {
-          that.openDialogVisible = true;
-        }
-      });
-    },
-    saveImg: function() {
-      this.downloadIamge(
-        this.info[this.activeIndex].wap_poster,
-        "poster" + this.activeIndex
-      );
+        });
+      },
+      saveImg: function () {
+        this.downloadIamge(
+          this.info[this.activeIndex].wap_poster,
+          "poster" + this.activeIndex
+        );
+      }
     }
-  }
-};
+  };
 </script>
 
-<style  lang="less">
-page {
-  height: 100%;
-}
-.distribution-posters {
-  height: 100%;
-}
+<style lang="less">
+  page {
+    height: 100%;
+  }
+
+  .distribution-posters {
+    height: 100%;
+  }
 
-.banenr {
-  height: 100%;
-}
+  .banenr {
+    height: 100%;
+  }
 
-.banner swiper {
-  height: 100%;
-}
+  .banner swiper {
+    height: 100%;
+  }
 
-.banner .slide-image {
-  width: 100%;
-  height: auto;
-}
+  .banner .slide-image {
+    width: 100%;
+    height: auto;
+  }
 </style>
diff --git a/store/index.js b/store/index.js
index c502249..c42c3d3 100644
--- a/store/index.js
+++ b/store/index.js
@@ -100,7 +100,11 @@ const vuexStore = new Vuex.Store({
 						reslove(res.data);
 					});
 				}).catch(() => {
-					dialog.error("获取信息失败!");
+					uni.showToast({
+						title: "获取信息失败!",
+						icon: "none",
+						duration: 2000,
+					});
 				});
 			}
 		},
@@ -113,7 +117,11 @@ const vuexStore = new Vuex.Store({
 				});
 			}).catch((error) => {
 				console.log(error)
-				dialog.error("获取信息失败!");
+				uni.showToast({
+					title: "获取信息失败!",
+					icon: "none",
+					duration: 2000,
+				});
 			});
 		},
 		changeLogin({