Browse Source

支付增加订阅功能,增加海报生成传递from类型

master
Gao xiaosong 5 years ago
parent
commit
a004ec3b10
  1. 4
      api/store.js
  2. 47
      components/StorePoster.vue
  3. 4
      config/index.js
  4. 28
      libs/order.js
  5. 19
      libs/wechat.js
  6. 16
      pages/activity/Poster/index.vue
  7. 111
      pages/order/OrderSubmission/index.vue
  8. 6
      pages/shop/StoreList/index.vue
  9. 79
      pages/user/Recharge/index.vue
  10. 13
      pages/user/address/AddAddress/index.vue
  11. 23
      pages/user/promotion/Poster/index.vue
  12. 12
      store/index.js

4
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
});
}

47
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>
@ -50,8 +39,12 @@
<script>
// import html2canvas from "html2canvas";
import { PosterCanvas } from "@/utils";
import { getProductPoster } from "@/api/store";
import {
PosterCanvas
} from "@/utils";
import {
getProductPoster
} from "@/api/store";
export default {
name: "StorePoster",
@ -86,8 +79,13 @@ export default {
savePosterPath: function () {
const that = this;
uni.showLoading({ title: "海报生成中", mask: true });
getProductPoster(this.goodId)
uni.showLoading({
title: "海报生成中",
mask: true
});
getProductPoster(this.goodId, {
from: this.$deviceType == 'weixin' || this.$deviceType == 'weixinh5' ? 'uniappH5' : this.$deviceType
})
.then(res => {
this.canvasStatus = true;
this.posterImage = res.data;
@ -125,6 +123,7 @@ export default {
.poster-first {
overscroll-behavior: contain;
}
.poster-pop {
width: 4.5 * 100rpx;
height: 8 * 100rpx;
@ -135,46 +134,57 @@ export default {
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;
@ -183,6 +193,7 @@ export default {
top: -0.73 * 100rpx;
display: block;
}
.poster-pop .save-poster {
background-color: #df2d0a;
font-size: 0.22 * 100rpx;
@ -193,12 +204,14 @@ export default {
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;

4
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';

28
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) {
// 创建订单时跳转到详情

19
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,
});
}
});
}

16
pages/activity/Poster/index.vue

@ -9,7 +9,10 @@
</view>
</template>
<script>
import { getBargainPoster, getCombinationPoster } from "@/api/activity";
import {
getBargainPoster,
getCombinationPoster
} from "@/api/activity";
export default {
name: "Poster",
@ -36,7 +39,10 @@ export default {
methods: {
getBargainPoster: function () {
var that = this;
getBargainPoster({ bargainId: that.id, from: "wechat" })
getBargainPoster({
bargainId: that.id,
from: "wechat"
})
.then(res => {
that.image = res.data.url;
that.status = false;
@ -52,7 +58,10 @@ export default {
//
getCombinationPoster: function () {
var that = this;
getCombinationPoster({ id: that.id, from: "wechat" })
getCombinationPoster({
id: that.id,
from: this.$deviceType == 'weixin' || this.$deviceType == 'weixinh5' ? 'uniappH5' : this.$deviceType
})
.then(res => {
that.image = res.data.url;
that.status = false;
@ -73,6 +82,7 @@ export default {
page {
background-color: #eb3729;
}
.poster-poster {
height: unset !important;
}

111
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>
<view
class="address acea-row row-between-wrapper"
v-if="shipping_type === 0"
@click="addressTap"
>
<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="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,21 +154,10 @@
</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">
@ -216,11 +174,9 @@
.order-submission .allAddress {
width: 100%;
background-image: linear-gradient(to bottom, #eb3729 0%, #eb3729 100%);
background-image: -webkit-linear-gradient(
to bottom,
background-image: -webkit-linear-gradient(to bottom,
#eb3729 0%,
#eb3729 100%
);
#eb3729 100%);
background-image: -moz-linear-gradient(to bottom, #eb3729 0%, #eb3729 100%);
padding-top: 1 * 100rpx;
}
@ -308,11 +264,25 @@
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 {
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();
@ -546,6 +516,9 @@ export default {
if (this.$deviceType == "app") {
from.from = "app";
}
// #ifdef MP-WEIXIN
subscribeMessage()
// #endif
createOrder(this.orderGroupInfo.orderKey, {
realName: this.contacts,
phone: this.contactsTel,
@ -565,7 +538,7 @@ export default {
})
.then((res) => {
uni.hideLoading();
handleOrderPayResults.call(this, res.data, "create");
handleOrderPayResults.call(this, res.data, "create", this.active);
})
.catch((err) => {
handleErrorMessage(err, "创建订单失败");

6
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,
});
});
}
}

79
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,10 +45,24 @@
</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",
@ -95,8 +102,7 @@ export default {
})
.catch((res) => {
uni.showToast({
title:
err.msg || err.response.data.msg || err.response.data.message,
title: err.msg || err.response.data.msg || err.response.data.message,
icon: "none",
duration: 2000,
});
@ -154,7 +160,7 @@ export default {
}
rechargeWechat({
price: prices,
from: that.from,
from: this.$deviceType == 'weixin' || this.$deviceType == 'weixinh5' ? 'uniappH5' : this.$deviceType,
paid_price: paid_price,
rechar_id: that.rechar_id,
})
@ -170,6 +176,9 @@ export default {
icon: "success",
duration: 2000,
});
// #ifdef MP-WEIXIN
subscribeMessage()
// #endif
this.$yrouter.back();
})
.finally((res) => {
@ -191,8 +200,7 @@ export default {
.catch((err) => {
console.log(err);
uni.showToast({
title:
err.msg || err.response.data.msg || err.response.data.message,
title: err.msg || err.response.data.msg || err.response.data.message,
icon: "none",
duration: 2000,
});
@ -206,17 +214,21 @@ export default {
#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%;
@ -228,32 +240,38 @@ export default {
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 {}
.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;
@ -263,30 +281,38 @@ export default {
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%;
@ -299,25 +325,30 @@ export default {
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;
@ -325,18 +356,22 @@ export default {
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;

13
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>
@ -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() {

23
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>
@ -19,7 +14,9 @@
</template>
<script>
// import { swiper, swiperSlide } from "vue-awesome-swiper";
import { getSpreadImg } from "@/api/user";
import {
getSpreadImg
} from "@/api/user";
export default {
name: "Poster",
@ -64,11 +61,9 @@ export default {
methods: {
getIndex: function () {
let that = this;
let from = {};
if (this.$deviceType == "app") {
from.from = "app";
}
getSpreadImg(from).then(
getSpreadImg({
from: this.$deviceType == 'weixin' || this.$deviceType == 'weixinh5' ? 'uniappH5' : this.$deviceType
}).then(
res => {
that.info = res.data;
},
@ -89,8 +84,7 @@ export default {
if (!wx.saveImageToPhotosAlbum) {
uni.showModal({
title: "提示",
content:
"当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"
content: "当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"
});
that.openDialogVisible = true;
@ -141,6 +135,7 @@ export default {
page {
height: 100%;
}
.distribution-posters {
height: 100%;
}

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

Loading…
Cancel
Save