123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- <template>
- <view class="vipGrade">
- <view class="headerBg">
- <view class="header" v-if="info.user">
- <view class="top acea-row row-middle">
- <view class="pictrue">
- <image :src="info.user.avatar"></image>
- </view>
- <view class="text">
- <view class="name acea-row row-middle">
- <view class="nameCon line1">{{info.user.nickname}}</view>
- <view v-if="info.level_info.grade" class="num">lv.{{info.level_info.grade}}</view>
- </view>
- <view class="idNum">ID:{{info.user.uid}}</view>
- </view>
- </view>
- <view class="list acea-row row-around row-middle">
- <view class="item">
- <view class="num">{{info.user.now_money}}</view>
- <view>余额</view>
- </view>
- <!-- <view class="item">
- <view class="num">{{info.user.integral}}</view>
- <view>积分</view>
- </view> -->
- <view class="item">
- <view class="num">{{ info.level_info.discount ? parseFloat(info.level_info.discount)/10 : '0'}}</view>
- <view>折扣</view>
- </view>
- </view>
- </view>
- </view>
- <view class="qrCode">
- <view class="header acea-row row-between-wrapper">
- <view class="title" :class="{'on': codeIndex == index,'onLeft':codeIndex == 1}"
- v-for="(item, index) in codeList" :key="index" @click="tapCode(index)">{{item.name}}</view>
- </view>
- <view class="acea-row row-center-wrapper" style="margin-top: 35rpx;">
- <w-qrcode :options="config.qrc" @generate="hello"></w-qrcode>
- </view>
- </view>
- <view class="store acea-row row-between-wrapper" v-if="storeList.length">
- <view class="title">
- <text class="iconfont icon-mendian1"></text>
- 附近门店
- </view>
- <view class="acea-row" @click="goMap">
- 距 <view class="storeName line1">{{storeList[0].name}}</view> {{storeList[0].range}}km<text class="iconfont icon-gengduo3"></text></view>
- </view>
- <home v-if="navigation"></home>
- </view>
- </template>
- <script>
- import home from '@/components/home/index.vue'
- import colors from "@/mixins/color";
- import {
- getlevelInfo,
- getRandCode
- } from '@/api/user.js';
- import {
- storeListApi
- } from "@/api/store";
- export default {
- components: {
- home
- },
- mixins: [colors],
- data() {
- return {
- info:{},
- codeList: [{
- name: '付款码'
- }, {
- name: '会员码'
- }],
- codeIndex:0,
- config: {
- qrc: {
- code: '',
- size: 380, // 二维码大小
- level: 3, //等级 0~4
- bgColor: '#FFFFFF', //二维码背景色 默认白色
- border: {
- color: ['#eee', '#eee'], //边框颜色支持渐变色
- lineWidth: 1, //边框宽度
- },
- color: ['#333', '#333'], //边框颜色支持渐变色
- }
- },
- user_latitude: 0,
- user_longitude: 0,
- storeList: []
- };
- },
- onLoad() {
- this.levelInfo();
- this.getCode();
- try {
- this.user_latitude = uni.getStorageSync('user_latitude');
- this.user_longitude = uni.getStorageSync('user_longitude');
- } catch (e) {}
- },
- onReady() {},
- onShow() {
- uni.removeStorageSync('form_type_cart');
- },
- mounted() {
- if (this.user_latitude && this.user_longitude) {
- this.getList();
- } else {
- this.selfLocation();
- }
- },
- methods: {
- goMap(){
- uni.navigateTo({
- url: '/pages/store/map/index'
- })
- },
- selfLocation() {
- let self = this
- // #ifdef H5
- if (self.$wechat.isWeixin()) {
- self.$wechat.location().then(res => {
- this.user_latitude = res.latitude;
- this.user_longitude = res.longitude;
- uni.setStorageSync('user_latitude', res.latitude);
- uni.setStorageSync('user_longitude', res.longitude);
- self.getList();
- })
- } else {
- // #endif
- uni.getLocation({
- type: 'wgs84',
- success: (res) => {
- try {
- this.user_latitude = res.latitude;
- this.user_longitude = res.longitude;
- uni.setStorageSync('user_latitude', res.latitude);
- uni.setStorageSync('user_longitude', res.longitude);
- } catch {}
- self.getList();
- },
- complete: function() {
- self.getList();
- }
- });
- // #ifdef H5
- }
- // #endif
- },
- // 获取门店列表数据
- getList: function() {
- let data = {
- latitude: this.user_latitude || "", //纬度
- longitude: this.user_longitude || "", //经度
- page: 1,
- limit: 1
- };
- storeListApi(data)
- .then(res => {
- this.storeList = res.data.list.list;
- })
- .catch(err => {
- this.$util.Tips({
- title: err
- })
- });
- },
- getCode() {
- getRandCode().then(res => {
- let code = res.data.code;
- this.config.qrc.code = code;
- }).catch(err => {
- return this.$util.Tips(err);
- })
- },
- levelInfo(){
- getlevelInfo().then(res=>{
- this.info = res.data;
- }).catch(err=>{
- return this.$util.Tips({
- title: err
- });
- })
- },
- tapCode(index) {
- this.codeIndex = index;
- if (index == 0) {
- this.getCode();
- } else {
- let code = this.info.user.bar_code;
- this.config.qrc.code = code;
- }
- },
- hello(res) {
- },
- },
- onReachBottom() {
- }
- }
- </script>
- <style lang="scss">
- page{
- background: linear-gradient(121deg, #F5EBE1 0%, #FFDFBE 100%);
- }
- .vipGrade{
- .headerBg{
- background: url('../static/big-bg.png') no-repeat;
- background-size: 100% 100%;
- width: 100%;
- height: 476rpx;
- padding-top: 1rpx;
- .header{
- background: url('../static/grade-bg.png') no-repeat;
- background-size: 100% 100%;
- width: 690rpx;
- height: 286rpx;
- margin: 26rpx auto;
- padding: 28rpx 28rpx 0 28rpx;
- .top{
- .pictrue{
- width: 92rpx;
- height: 92rpx;
- border: 1px solid #FFFFFF;
- margin-right: 20rpx;
- border-radius: 50%;
- image{
- border-radius: 50%;
- width:100%;
- height: 100%;
- }
- }
- .text{
- width: 400rpx;
- .name{
- .nameCon{
- color: #EDCAAC;
- font-size: 28rpx;
- max-width: 332rpx;
- margin-right: 10rpx;
- }
- .num{
- border-radius: 4px;
- border: 1px solid #EDCAAC;
- background: rgba(215,177,144,0.2);
- font-size: 20rpx;
- font-weight: 400;
- color: #EDCAAC;
- padding: 0 4rpx;
- }
- }
- .idNum{
- font-weight: 400;
- color: #EDCAAC;
- font-size: 24rpx;
- margin-top: 5rpx;
- }
- }
- }
- }
- .list{
- margin-top: 46rpx;
- .item{
- color: #EDCAAC;
- font-size: 22rpx;
- text-align: center;
- .num{
- font-size: 40rpx;
- margin-bottom: 15rpx;
- }
- }
- }
- }
- .qrCode{
- width: 690rpx;
- height: 700rpx;
- background: #FFFFFF;
- border-radius: 18rpx;
- margin: -134rpx auto 0 auto;
- padding-top: 60rpx;
- .header{
- width: 330rpx;
- height: 60rpx;
- border-radius: 30rpx;
- background: #EEEEEE;
- color: #333333;
- font-size: 30rpx;
- margin: 0 auto;
- .title {
- width: 146rpx;
- height: 100%;
- line-height: 60rpx;
- border-radius: 30rpx;
- text-align: center;
- padding-right: 20rpx;
-
- &.onLeft {
- padding-left: 34rpx;
- }
-
- &.on {
- width: 170rpx;
- background-color: #333 !important;
- color: #fff;
- padding: 0 !important;
- }
- }
- }
- }
- .store{
- width: 690rpx;
- height: 100rpx;
- background: linear-gradient(90deg, #FFAE49 0%, #FCC887 100%);
- border-radius: 18rpx;
- margin: 26rpx auto;
- padding: 0 30rpx;
- color: #fff;
- font-weight: 500;
- font-size: 28rpx;
- .iconfont{
- margin-right: 20rpx;
- font-size: 38rpx;
- }
- .icon-gengduo3{
- font-size: 24rpx;
- margin-left: 5rpx;
- margin-right: 0;
- margin-top: 6rpx;
- }
- .storeName{
- display: inline-block;
- max-width: 284rpx;
- vertical-align: middle;
- }
- }
- }
- </style>
|