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({