Liuyi
2024-11-19 440b4ab9d4278d3f9c13b004d2c2289f45254cbc
添加积分记录,修改位置获取
已修改18个文件
已添加7个文件
1529 ■■■■ 文件已修改
App.vue 145 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/index.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/pointNavbar/pointNavbar.vue 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/counterRecharge/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/index.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/pointsMall/index.vue 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/pointsMall/pointsExchangeRecord/index.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/pointsMall/pointsGetRecord/index.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/pointsMall/pointsGoodsDetail/index.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/scanSuccess/index.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/scanWater/index.vue 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/success/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/wxScanWater/index.vue 380 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/images/other/home.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/images/pointMall/noRecord.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/api/index.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/app.js 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/app.json 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/common/assets.js 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/common/vendor.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/addCard/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/address/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/index/index.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
App.vue
@@ -8,91 +8,98 @@
        if(!uni.getStorageSync('openId')){
            wx.login({
                success:async (res1)=>{
                    //存储微信登录的code
                    //存储微信登录的code,调用后端接口传递code参数,返回openid(也就是userId)存储到本地,通过判断本地是否存在openId,存在表示已登录
                    uni.setStorageSync('code',res1.code)
                    await wxLoginApi({code:res1.code}).then((res2) =>{
                        if(res2.code == 200){
                    uni.setStorageSync('openId',res2.data.userId)
                    uni.setStorageSync('token',res2.data.token)
                        }else{
                            console.log('登录接口调用失败')
                        }
                  })
                },
                fail:(e) =>{
                    uni.showToast({
                        title: '登录失败,请退出重试!',
                        duration: 2000
                        title: '微信登录失败,请退出重试!',
                        duration: 2000,
                        icon:'fail'
                    });
                    console.log(e)
                }
            })
        }
    }
    //申请获取用户位置权限
    let userLocation = {
        lat:'',
        lon:'',
    }
    function getUserLocation(){
        // 请求用户授权,第一次进入会有位置授权的提示
        uni.authorize({
          scope: 'scope.userLocation',
          success() {
             console.log("成功授权位置信息1")
             storageLocation()
          },
          fail() {
              console.log("用户拒绝授权位置信息,再次提示用户授权")
              showToast()
          }
        })
        //获取用户位置并存储
        function storageLocation(){
            uni.getLocation({
                type:'gcj02',
                isHighAccuracy:true,
                success:(res) =>{
                    userLocation.lat = res.latitude
                    userLocation.lon = res.longitude
                    uni.setStorageSync('userLocation',JSON.stringify(userLocation))
                },
                fail:() =>{
                    showToast()
                }
            })
        }
        //用户拒绝授权
        function showToast(){
            uni.showModal({
                title: "请求授权当前位置",
                content: "我们需要获取地理位置信息,为您获取附近站点信息!",
                confirmText: "前往设置",
                success: (res) => {
                    if (res.confirm) {
                        uni.openSetting({
                             success:(res1) =>{ //打开设置成功
                                if (res1.authSetting['scope.userLocation']){
                                    console.log('用户二次授权成功')
                                    storageLocation()
                                }else{
                                    showToast()
                                    console.log('用户拒绝授权')
                                }
                            },
                        })
                    }else{
                        uni.showToast({
                            title: '请先授权!',
                            duration: 2000,
                            icon:'none'
                        });
                        showToast()
                    }
                },
            });
        }
    }
    // //申请获取用户位置权限
    // let userLocation = {
    //     lat:'',
    //     lon:'',
    // }
    // function getUserLocation(){
    //     // 请求用户授权,第一次进入会有位置授权的提示
    //     uni.authorize({
    //       scope: 'scope.userLocation',
    //       success() {
    //          console.log("成功授权位置信息1")
    //          storageLocation()
    //       },
    //       fail() {
    //           console.log("用户拒绝授权位置信息,再次提示用户授权")
    //           showToast()
    //       }
    //     })
    //     //获取用户位置并存储
    //     function storageLocation(){
    //         uni.getLocation({
    //             type:'gcj02',
    //             isHighAccuracy:true,
    //             success:(res) =>{
    //                 userLocation.lat = res.latitude
    //                 userLocation.lon = res.longitude
    //                 uni.setStorageSync('userLocation',JSON.stringify(userLocation))
    //             },
    //             fail:() =>{
    //                 showToast()
    //             }
    //         })
    //     }
    //     //用户拒绝授权
    //     function showToast(){
    //         uni.showModal({
    //             title: "请求授权当前位置",
    //             content: "请求获取您的位置,加载您附近饮水设备信息!",
    //             confirmText: "前往设置",
    //             success: (res) => {
    //                 if (res.confirm) {
    //                     uni.openSetting({
    //                          success:(res1) =>{ //打开设置成功
    //                             if (res1.authSetting['scope.userLocation']){
    //                                 console.log('用户二次授权成功')
    //                                 setTimeout(() =>{
    //                                     storageLocation()
    //                                 },1000)
    //                             }else{
    //                                 showToast()
    //                                 console.log('用户拒绝授权')
    //                             }
    //                         },
    //                     })
    //                 }else{
    //                     uni.showToast({
    //                         title: '请先授权!',
    //                         duration: 2000,
    //                         icon:'none'
    //                     });
    //                     showToast()
    //                 }
    //             },
    //         });
    //     }
    // }
    onLaunch(async() => {
        await wxLogin()
        await getUserLocation()
        // await getUserLocation()
        console.log('进入项目启动页APP.vue了')
    });
    onShow(() => {
      console.log("App Show");
api/index.js
@@ -110,6 +110,28 @@
export function rechargeApi(data){
    return request('/rechargeRecords/fees',data,'POST')
}
//积分相关-----------------------------------------------
//积分获取明细
export function pointsSearchApi(data){
    return request('/userIntegralAcquire/search',data,'POST')
}
//积分兑换记录
export function pointsExchangeApi(data){
    return request('/userIntegralConvert/search',data,'POST')
}
//查询积分商品
export function goodsGetApi(id){
    return request(`/shopGoods/getListByCategoryId?categoryId=${id}`,{},'GET')
}
//根据id查商品
export function goodsGetByIdApi(id){
    return request(`/shopGoods/get?id=${id}`,{},'GET')
}
//查询积分商品类型
export function goodsSearchTypeApi(data){
    return request('/shopGoodsCategory/search',data,'POST')
}
components/pointNavbar/pointNavbar.vue
对比新文件
@@ -0,0 +1,52 @@
<template>
    <view class="navbar">
        <image src="../../static/images/pointMall/back.svg" alt="" @click="navBackTo()"></image>
        <text>{{title}}</text>
    </view>
</template>
<script setup>
    import { onMounted, ref ,watch} from 'vue'
    function navBackTo(){
        uni.navigateBack()
    }
    const props = defineProps({
        title:{
            type:String,
            default:''
        }
    })
    const pageTitle = ref(props.title)
    watch(props.title,(New, Old)=>{
            pageTitle.value = New
        },
        {immediate: true},
    )
</script>
<style lang="scss">
   .navbar{
       width:100%;
       height:176rpx;
       background: linear-gradient(to bottom,#fbd1a2 0%,#fef7da 70%,#fef7da 100%);
       display: flex;
       align-items: flex-end;
       box-sizing: border-box;
       position: relative;
       padding:0 32rpx 24rpx;
       image{
           width:40rpx;
           height:40rpx;
       }
       text{
           position:absolute;
           width:200rpx;
           left:calc(50% - 100rpx);
           text-align: center;
           letter-spacing:1rpx;
           color: #e5b25f;
           font-weight:600;
           font-size:36rpx;
       }
   }
</style>
main.js
@@ -1,11 +1,12 @@
import App from './App'
import navbar from './components/navbar/navbar.vue'
import pointNavbar from './components/pointNavbar/pointNavbar.vue'
import DaTree from '@/components/da-tree/index.vue'
import { createSSRApp } from 'vue'
export function createApp() {
    const app = createSSRApp(App)
    app.component('navbar', navbar).component('DaTree', DaTree)
    app.component('navbar', navbar).component('pointNavbar', pointNavbar).component('DaTree', DaTree)
      return {
        app
      }
pages.json
@@ -143,6 +143,30 @@
            "style": {
                "navigationStyle":"custom"
            }
        },
        {
            "path" : "pages/wxScanWater/index",
            "style": {
                "navigationStyle":"custom"
            }
        },
        {
            "path" : "pages/pointsMall/pointsGetRecord/index",
            "style": {
                "navigationStyle":"custom"
            }
        },
        {
            "path" : "pages/pointsMall/pointsExchangeRecord/index",
            "style": {
                "navigationStyle":"custom"
            }
        },
        {
            "path" : "pages/pointsMall/pointsGoodsDetail/index",
            "style": {
                "navigationStyle":"custom"
            }
        }
    ],
    "globalStyle": {
pages/counterRecharge/index.vue
@@ -1,7 +1,7 @@
<template>
    <view class="container">
        <view class="navbar">
            <!-- <image src="../../static/images/index/home21.png" alt="" @click="navTo()"></image> -->
            <image src="../../static/images/other/home.svg" alt="" @click="navTo()"></image>
            <text>柜台充值</text>
        </view>
        <view class="content">
@@ -45,7 +45,7 @@
                        title: '支付成功',
                        duration: 2000,
                      });
                      uni.navigateTo({
                      uni.redirectTo({
                          url:'/pages/success/index'
                      })
                   }else{
@@ -68,7 +68,7 @@
        })
    }
    function navTo(){
        uni.navigateTo({
        uni.redirectTo({
            url:'/pages/index/index'
        })
    }
@@ -90,7 +90,7 @@
               padding-bottom:24rpx;
               box-sizing: border-box;
               image{
                   width:20rpx;
                   width:40rpx;
                   height:40rpx;
                   margin-left:32rpx;
               }
pages/index/index.vue
@@ -35,6 +35,7 @@
     async function getVipInfo(){
        await getVipInfoApi().then((res) =>{
            if(res.code == 200 && res.data.id){
                console.log('获取会员卡返回响应-首页',res)
                cardInfo.value.waterCardNumber = res.data.cardNumber
                cardInfo.value.cardType = res.data.cardType
                //用户信息处理存储
@@ -205,9 +206,77 @@
            icon:'none',
        });
    }
    //申请获取用户位置权限----------------------------------------------------
    let userLocation = {
        lat:'',
        lon:'',
    }
    function getUserLocation(){
        // 请求用户授权,第一次进入首页会有位置授权的提示
        uni.authorize({
          scope: 'scope.userLocation',
          success() {
             console.log("成功授权位置信息1")
             storageLocation()
          },
          fail() {
              console.log("用户拒绝授权位置信息,再次提示用户授权")
              showToast()
          }
        })
        //获取用户位置并存储
        function storageLocation(){
            uni.getLocation({
                type:'gcj02',
                isHighAccuracy:true,
                success:(res) =>{
                    userLocation.lat = res.latitude
                    userLocation.lon = res.longitude
                    uni.setStorageSync('userLocation',JSON.stringify(userLocation))
                },
                fail:() =>{
                    showToast()
                }
            })
        }
        //用户拒绝授权
        function showToast(){
            uni.showModal({
                title: "请求授权当前位置",
                content: "请求获取您的位置,加载附近饮水设备信息!",
                confirmText: "前往设置",
                success: (res) => {
                    if (res.confirm) {
                        uni.openSetting({
                             success:(res1) =>{ //打开设置成功
                                if (res1.authSetting['scope.userLocation']){
                                    console.log('用户二次授权成功')
                                    setTimeout(() =>{
                                        storageLocation()
                                    },1000)
                                }else{
                                    showToast()
                                    console.log('用户拒绝授权')
                                }
                            },
                        })
                    }else{
                        uni.showToast({
                            title: '请先授权!',
                            duration: 2000,
                            icon:'none'
                        });
                        showToast()
                    }
                },
            });
        }
    }
    onMounted( async() =>{
        getTopHeight()
        await getInfo()
        await getUserLocation()
        console.log('进入首页了')
    })
    onShow(async() =>{
        getTopHeight()
@@ -223,8 +292,6 @@
        console.error('分享菜单显示失败', err);
      }
    });
</script>
<template>
pages/pointsMall/index.vue
@@ -1,10 +1,11 @@
<script setup>
    import {ref,onMounted} from 'vue'
    import headImg from '../../static/images/index/head.png'
    import pointsImg from '../../static/images/pointMall/advert/money1.svg'
    function navTo(){
        uni.navigateBack()
    }
    import { goodsGetApi,goodsSearchTypeApi } from '../../api/index.js'
    import { BASE_URL } from '../../config/baseUrl';
    const baseUrl = ref(BASE_URL)
    const typeList = ref([
        {value:'1',name:'全部分类'},
        {value:'2',name:'零食'},
@@ -16,21 +17,47 @@
        {value:'5',name:'其他'},
    ])
    const goodsList = ref([
        {value:'1',name:'商品10号商品占位文字',goodsImage:headImg,pointsImage:pointsImg,points:'1000',stock:102},
        {value:'1',name:'商品占位文字',goodsImage:headImg,pointsImage:pointsImg,points:'1000',stock:102},
        {value:'1',name:'商品占位文字',goodsImage:headImg,pointsImage:pointsImg,points:'1000',stock:102},
        {value:'1',name:'商品占位文字',goodsImage:headImg,pointsImage:pointsImg,points:'1000',stock:102},
        {value:'1',name:'商品占位文字',goodsImage:headImg,pointsImage:pointsImg,points:'1000',stock:102},
        {value:'1',name:'商品占位文字',goodsImage:headImg,pointsImage:pointsImg,points:'1000',stock:102},
        {value:'1',name:'商品占位文字',goodsImage:headImg,pointsImage:pointsImg,points:'1000',stock:102},
        // {id:'1',imageUrl:'',name:'商品名称',price:'50.00',useIntegral:'1000',stock:102},
    ])
    //查询商品类型
    async function getGoodsTypeList(){
        await goodsSearchTypeApi({limit:100,page:1}).then((res) =>{
            typeList.value = res.data.list
            typeList.value.unshift({id:'',name:'全部商品'})
        })
    }
    //查询商品列表
    async function getGoodsList(categoryId){
        await goodsGetApi(categoryId).then((res) =>{
            goodsList.value = res.data
            console.log('132')
        })
    }
    function navBack(){
        uni.navigateBack()
    }
    //页面跳转
    function navTo(itemUrl){
        if(itemUrl){
            uni.navigateTo({
                url:itemUrl
            })
        }
    }
    onMounted(async() =>{
        await getGoodsTypeList()
        await getGoodsList('')
    })
</script>
<template>
    <view class="container">
        <view class="gradual-graph"></view>
        <view class="header">
            <view class="header-title">
                <image src="../../static/images/pointMall/back.svg" @click="navTo('/pages/index/index')"></image>
                <image src="../../static/images/pointMall/back.svg" @click="navBack('/pages/index/index')"></image>
                <text>积分商城</text>
            </view>
            <view class="header-detail">
@@ -72,12 +99,12 @@
                </view>
            </view>
            <view class="nav-box">
                <view class="nav-item">
                <view class="nav-item" @click="navTo('/pages/pointsMall/pointsGetRecord/index')">
                    <text>积分明细</text>
                    <image src="../../static/images/pointMall/nav1.svg"></image>
                </view>
                <view class="nav-item">
                    <text>积分兑换</text>
                <view class="nav-item" @click="navTo('/pages/pointsMall/pointsExchangeRecord/index')">
                    <text>兑换记录</text>
                    <image src="../../static/images/pointMall/nav2.svg"></image>
                </view>
            </view>
@@ -85,22 +112,31 @@
        <view class="content">
            <view class="type-box">
                <scroll-view scroll-x="true">
                    <view v-for="(item,index) in typeList" :key="index" class="type-item">
                    <view v-for="(item,index) in typeList" :key="index" class="type-item" @click="getGoodsList(item.id)">
                        <text>{{item.name}}</text>
                    </view>
                </scroll-view>
            </view>
            <view class="goods-box">
                <view v-for="(item,index) in goodsList" :key="index" class="goods-item">
                    <image class="goods-img" :src="item.goodsImage" mode="widthFix"></image>
                    <image @click="navTo(`/pages/pointsMall/pointsGoodsDetail/index?goodsId=${item.id}`)" class="goods-item-img" :src="baseUrl + '/upload' + item.imageUrl" mode="widthFix"></image>
                    
                    <view class="goods-item-name">
                    <view class="goods-item-name" @click="navTo(`/pages/pointsMall/pointsGoodsDetail/index?goodsId=${item.id}`)">
                        <text>{{item.name}}</text>
                    </view>
                    
                    <view class="goods-item-price" @click="navTo(`/pages/pointsMall/pointsGoodsDetail/index?goodsId=${item.id}`)">
                        <text>{{item.price}}¥</text>
                    </view>
                    <view class="goods-item-points">
                        <image :src="item.pointsImage"></image>
                        <text>{{item.points}}</text>
                        <view class="goods-item-points-left">
                            <text>{{item.useIntegral}}</text>
                            <image src="../../static/images/pointMall/advert/money1.svg"></image>
                        </view>
                        <view class="goods-item-points-right">
                            <text>兑换</text>
                        </view>
                    </view>
                    
                    <view class="goods-item-stock">
@@ -418,8 +454,9 @@
                   padding:40rpx 20rpx;
                   box-sizing: border-box;
                   border-radius: 20rpx;
                   .goods-img{
                       width:90%;
                   position: relative;
                   .goods-item-img{
                       width:80%;
                       margin: 0 auto;
                       margin-bottom:50rpx;
                   }
@@ -427,8 +464,19 @@
                       margin-bottom:10rpx;
                       color: #3d3d3d;
                   }
                   .goods-item-points{
                   .goods-item-price{
                       margin-bottom:10rpx;
                       color: #d3481e;
                       font-size:30rpx;
                   }
                   .goods-item-points{
                       display: flex;
                       align-items: center;
                       width:100%;
                       display: flex;
                       justify-content: space-between;
                       align-items: center;
                       .goods-item-points-left{
                       display: flex;
                       align-items: center;
                       image{
@@ -437,12 +485,26 @@
                       }
                       text{
                           color: #e6980f;
                               font-size:36rpx;
                           }
                       }
                       .goods-item-points-right{
                           width:110rpx;
                           height:40rpx;
                           background:linear-gradient(to right,#ffa260,#ffa260);
                           border-radius:20rpx;
                           color: #fff;
                           font-size:26rpx;
                           display: flex;
                           align-items: center;
                           justify-content: center;
                           letter-spacing:5rpx;
                       }
                   }
                   .goods-item-stock{
                       text{
                           color: #919191;
                           font-size:28rpx;
                           font-size:24rpx;
                       }
                   }
               }
pages/pointsMall/pointsExchangeRecord/index.vue
对比新文件
@@ -0,0 +1,147 @@
<script setup>
    import { onMounted, ref } from 'vue';
    import { pointsExchangeApi } from '../../../api/index.js'
    const pointExchangeList = ref([
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
        {goodsName:'纸巾',integralAmount:1232,receiveStatusName:'已领取',exchangeDate:'2024-11-13 14:46:40',receiveDate:'2024-11-13 14:46:40'},
    ])
    async function searchPoints(){
        await pointsExchangeApi({limit:10000,page:1}).then((res) =>{
            // pointExchangeList.value = res.data.list
        })
    }
    onMounted(async() =>{
        await searchPoints()
    })
</script>
<template>
    <view class="container">
        <point-navbar title='兑换记录'></point-navbar>
        <view class="content">
            <view class="main" v-if="pointExchangeList.length > 0">
                <block v-for="(item,index) in pointExchangeList">
                    <view class="item">
                        <view class="item-left">
                            <text class="item-methods">兑换商品:{{item.goodsName}}</text>
                            <view class="item-status">
                                <text>领取状态:</text>
                                <text>{{item.receiveStatusName}}</text>
                            </view>
                            <text class="item-time">兑换时间:{{item.exchangeDate}}</text>
                            <text class="item-time">领取时间:{{item.receiveDate}}</text>
                        </view>
                        <view class="item-right">
                            <text class="money">-{{item.integralAmount}}</text>
                            <image src="../../../static/images/pointMall/advert/money1.svg"></image>
                        </view>
                    </view>
                </block>
            </view>
            <view v-else class="nodata">
                <image src="../../../static/images/pointMall/noRecord.svg" alt=""></image>
                <text>暂无记录</text>
            </view>
        </view>
    </view>
</template>
<style lang="scss" scoped>
    .container{
       width:100%;
       height:100vh;
       .content{
           width:100%;
           height:calc(100vh - 176rpx);
           background:linear-gradient(to bottom,#fef7da,#FFF);
           padding:50rpx 32rpx 100rpx;
           box-sizing: border-box;
           .main{
                  width:99%;
                  height:calc(100% - 50rpx);
                  background: rgba(255,255,255,0.8);
                  box-shadow: 0 0 6rpx 2rpx #fbd1a2;
                  border-radius:20rpx;
                  margin: 0 auto;
                  padding:28rpx 48rpx;
                  box-sizing: border-box;
                  overflow: scroll;
                  .item{
                      width:100%;
                      height:260rpx;
                      border-bottom:1rpx solid #D8D8D8;
                      box-sizing:border-box;
                      padding-bottom:10rpx;
                      margin-bottom:10rpx;
                      justify-content:space-between;
                      align-items:flex-end;
                      display: flex;
                      .item-left{
                          height:100%;
                          display:flex;
                          flex-direction:column;
                          justify-content:flex-end;
                          align-items: flex-start;
                          font-weight:500;
                          font-size: 32rpx;
                          color: #59544e;
                          .item-methods{
                              margin-bottom:20rpx;
                          }
                          .item-time{
                              font-weight: 300;
                              font-size:26rpx;
                              color: #909090;
                          }
                          .item-status{
                            margin-bottom:20rpx;
                          }
                      }
                      .item-right{
                          height:100%;
                          display:flex;
                          justify-content:flex-end;
                          align-items:flex-end;
                          image{
                            width:40rpx;
                            height:40rpx;
                            margin-left:5rpx;
                          }
                          .money{
                                font-weight: 500;
                                font-size: 32rpx;
                                color: #efab22;
                          }
                      }
                  }
       }
       .nodata{
            width:100%;
            height:1200rpx;
            display: flex;
            justify-content: center;
            align-items: center;
            padding-bottom:400rpx;
            box-sizing: border-box;
            flex-direction: column;
            image{
              width:300rpx;
              height:300rpx;
            }
            text{
              color:#fbd1a2;
            }
       }
    }
}
</style>
pages/pointsMall/pointsGetRecord/index.vue
对比新文件
@@ -0,0 +1,146 @@
<script setup>
    import { onMounted, ref } from 'vue';
    import { pointsSearchApi } from '../../../api/index.js'
    const pointList = ref([
        {ruleName:'充值',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'消费',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'消费',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'充值',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'消费',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'消费',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'消费',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'消费',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'消费',integralAmount:1232,createTime:'2024-11-13 14:46:40'},
        {ruleName:'充值',integralAmount:1232,createTime:'2024-11-13 14:46:40'}
    ])
    async function searchPoints(){
        await pointsSearchApi({limit:10000,page:1}).then((res) =>{
            // pointList.value = res.data.list
        })
    }
    onMounted(async() =>{
        await searchPoints()
    })
</script>
<template>
    <view class="container">
        <point-navbar title='积分明细'></point-navbar>
        <view class="content">
            <view class="main" v-if="pointList.length > 0">
                <block v-for="(item,index) in pointList">
                    <view class="item">
                        <view class="item-left">
                            <text class="methods">积分方式:{{item.ruleName}}</text>
                            <text>{{item.createTime}}</text>
                        </view>
                        <view class="item-right">
                            <text class="money">{{item.integralAmount}}</text>
                            <image src="../../../static/images/pointMall/advert/money1.svg"></image>
                        </view>
                    </view>
                </block>
            </view>
            <view v-else class="nodata">
                <image src="../../../static/images/pointMall/noRecord.svg" alt=""></image>
                <text>暂无记录</text>
            </view>
        </view>
    </view>
</template>
<style lang="scss" scoped>
    .container{
       width:100%;
       height:100vh;
       .content{
           width:100%;
           height:calc(100vh - 176rpx);
           background:linear-gradient(to bottom,#fef7da,#FFF);
           padding:50rpx 32rpx 100rpx;
           box-sizing: border-box;
           .main{
                  width:99%;
                  height:calc(100% - 50rpx);
                  background: rgba(255,255,255,0.8);
                  box-shadow: 0 0 6rpx 2rpx #fbd1a2;
                  border-radius:20rpx;
                  margin: 0 auto;
                  padding:28rpx 48rpx;
                  box-sizing: border-box;
                  overflow: scroll;
                  .item{
                      width:100%;
                      height:130rpx;
                      border-bottom:1rpx solid #D8D8D8;
                      box-sizing:border-box;
                      padding-bottom:10rpx;
                      margin-bottom:10rpx;
                      justify-content:space-between;
                      align-items:flex-end;
                      display: flex;
                      .item-left{
                          height:100%;
                          display:flex;
                          flex-direction:column;
                          justify-content:flex-end;
                          align-items: flex-start;
                          text:first-child{
                            font-weight: 300;
                            font-size: 32rpx;
                            color: #000000;
                            margin-bottom:20rpx;
                          }
                          .methods{
                            font-weight: 300;
                            font-size: 32rpx;
                            color: #474646;
                          }
                          text:last-child{
                              font-weight: 300;
                              font-size: 24rpx;
                              color: #A7A7A7;
                          }
                      }
                      .item-right{
                          height:100%;
                          display:flex;
                          justify-content:flex-end;
                          align-items:flex-end;
                          image{
                            width:40rpx;
                            height:40rpx;
                            margin-left:5rpx;
                          }
                          .money{
                                font-weight: 500;
                                font-size: 32rpx;
                                color: #efab22;
                          }
                      }
                  }
       }
       .nodata{
                  width:100%;
                  height:1200rpx;
                  display: flex;
                  justify-content: center;
                  align-items: center;
                  padding-bottom:400rpx;
                  box-sizing: border-box;
                  flex-direction: column;
                  image{
                      width:300rpx;
                      height:300rpx;
                  }
                  text{
                      color:#fbd1a2;
                  }
       }
    }
}
</style>
pages/pointsMall/pointsGoodsDetail/index.vue
对比新文件
@@ -0,0 +1,64 @@
<script setup>
    import {ref,onMounted} from 'vue'
    import { goodsGetByIdApi } from '../../../api/index.js'
    import { onLoad } from '@dcloudio/uni-app'
    import { BASE_URL } from '../../../config/baseUrl.js';
    const baseUrl = ref(BASE_URL)
    const detailInfo = ref({})
    async function getGoodsDetail(goodsId){
        await goodsGetByIdApi(goodsId).then((res) =>{
            detailInfo.value = res.data
            console.log('detailInfo',detailInfo.value)
        })
    }
    let goodsId
    onLoad(async(option) =>{
        goodsId = option.goodsId
        await getGoodsDetail(goodsId)
    })
</script>
<template>
    <view class="container">
        <point-navbar title='商品详情'></point-navbar>
        <view class="content">
            <view class="image">
                <image :src="baseUrl + '/upload'+ detailInfo.detailsUrl"></image>
            </view>
            <view class="detail">
                <view class="detail-info">
                    <view class="detail-info-text">
                        <view>【{{detailInfo.name}}】</view>
                        <view>
                            <rich-text :nodes='detailInfo.describe'></rich-text>
                        </view>
                    </view>
                    <text>价值{{detailInfo.price}}¥</text>
                </view>
                <view class="detail-exchange">
                    <view class="detail-exchange-points">
                        <!-- <image></image> -->
                        <text>1000</text>
                    </view>
                    <view class="detail-exchange-points">兑换</view>
                </view>
            </view>
        </view>
    </view>
</template>
<style lang="scss" scoped>
.container{
   width:100%;
   height:100vh;
   .content{
       width:100%;
       height:calc(100vh - 176rpx);
       background:linear-gradient(to bottom,#fef7da,#FFF);
       padding:50rpx 32rpx 100rpx;
       box-sizing: border-box;
    }
}
</style>
pages/scanSuccess/index.vue
@@ -1,24 +1,48 @@
<template>
    <view class="container">
        <navbar title ='扫码成功'></navbar>
        <!-- <navbar title ='扫码成功'></navbar> -->
        <view class="navbar"><text>扫码取水</text></view>
        <view class="content">
            <view class="img-box">
                <image class="img" src="../../static/images/other/success.png" alt=""></image>
                <view class="text text1">操作成功~</view>
            </view>
            <view class="text">请在设备上操作</view>
            <view class="back" @click="navBack()">返回首页</view>
            <view class="back" @click="navTo()">返回首页</view>
        </view>
    </view>
</template>
<script setup>
    function navBack(){
        uni.navigateBack()
    function navTo(){
        uni.redirectTo({
            url:'/pages/index/index'
        })
    }
</script>
<style lang="scss">
    .navbar{
           width:100%;
           height:176rpx;
           background: linear-gradient(to bottom,#5EA1FA,#8BC1FC);
           display: flex;
           align-items: flex-end;
           box-sizing: border-box;
           position: relative;
           padding:0 32rpx 24rpx;
           text{
               font-weight: 400;
               font-size: 36rpx;
               color: #000000;
               position:absolute;
               width:200rpx;
               left:calc(50% - 100rpx);
               text-align: center;
               color: #e4ecf9;
               letter-spacing:1rpx;
           }
    }
    .container{
        width: 100%;
        height: 100vh;
pages/scanWater/index.vue
@@ -28,7 +28,7 @@
    const payMethod = ref(2)
    const payList = ref([
        // {text:"支付宝支付",value:1,checked:true,img:'../../static/images/recharge/pay.png'},
        {text:"微信支付",value:2,checked:true,img:'../../static/images/recharge/wx.png'},
        {text:"微信",value:2,checked:true,img:'../../static/images/recharge/wx.png'},
        {text:"余额",value:1,checked:false,img:'../../static/images/recharge/balance.png'},
    ])
    function choosePay(index1){
@@ -42,7 +42,14 @@
        console.log('index',index1,payMethod.value)
    }
    async function submit(){
        //余额支付
        if(payMethod.value == 1){
            if(choosedMoney.value > Number(userBalance.value)){
                uni.showToast({
                    title:'水卡余额不足',
                    icon:'none'
                })
            }else{
            let data = {
                payType:payMethod.value,
                card:JSON.parse(uni.getStorageSync('userInfo')).waterCardNumber,
@@ -56,21 +63,26 @@
                        uni.navigateTo({
                            url:'/pages/scanSuccess/index'
                        })
                        }else if(res.code == 300){
                            uni.showToast({
                                title:res.msg,
                                icon:'none'
                            })
                    }else{
                        uni.showToast({
                            title:'支付失败!',
                                title:'支付失败,联系管理员',
                            icon:'none'
                        })
                    }
            })
            }
            //微信支付
        }else if(payMethod.value == 2){
            let data = {
                businessType:3,
                tradeAmount:choosedMoney.value,
                facilityCode:facilityCode.value,
                }
                console.log('data',data)
            await wxPayApi(data).then((res) =>{
                console.log('微信支付回调',res,'传参',data)
                if(res.code == 200){
@@ -86,16 +98,12 @@
                     success (res) {
                       if (res.errMsg == "requestPayment:ok"){
                          console.log('支付成功', res)
                          uni.showToast({
                            title: '支付成功',
                            duration: 2000,
                          });
                         uni.navigateTo({
                             url:'/pages/scanSuccess/index'
                         })
                       }else{
                          uni.showToast({
                            title: '支付失败',
                            title: '微信支付失败',
                            duration: 2000,
                            icon:'none'
                          });
@@ -109,6 +117,18 @@
                       });
                     }
                    })
                }else if(res.code == 300){
                    uni.showToast({
                        title:res.msg,
                        duration: 2000,
                        icon:'none'
                    });
                }else{
                    uni.showToast({
                        title:'微信支付失败',
                        duration: 2000,
                        icon:'none'
                    });
                }
            })
        }
@@ -116,6 +136,7 @@
    const facilityCode = ref()
    onLoad((option) =>{
        facilityCode.value = option.facilityCode
        console.log('小程序扫码取水','option.facilityCode',option.facilityCode,'facilityCode',facilityCode.value)
    })
    //设置水价及支付方式
    async function getWaterPrice(){
pages/success/index.vue
@@ -13,7 +13,7 @@
<script setup>
    function navTo(){
        uni.navigateTo({
        uni.redirectTo({
            url:'/pages/index/index'
        })
    }
pages/wxScanWater/index.vue
对比新文件
@@ -0,0 +1,380 @@
<script setup>
    import{ ref ,onMounted} from 'vue'
    import { wxPayApi,buyWaterApi,getPriceBySnApi,getVipInfoApi } from '../../api/index.js'
    import { onLoad } from "@dcloudio/uni-app"
    //选中金额
    const choosedMoney = ref(1)
    //金额列表
    const moneyList = ref([
        {value:1,volume:2.5,active:true},
        {value:2,volume:5,active:false},
        {value:3,volume:7.5,active:false},
    ])
    //选择金额样式
    const activeStyle = ref({
        backgroundColor:'rgba(148,201,243)',
        color:'#fff'
    })
    //选中事件
    function chooseMoney(index1){
        moneyList.value.forEach((item,index) =>{
            if(item.active == true){
                item.active = false
            }
        })
        moneyList.value[index1].active = true
        choosedMoney.value = moneyList.value[index1].value
    }
    //支付方式--------------------------------------------
    //1:余额,2:微信
    const payMethod = ref(2)
    const payList = ref([
        {text:"微信支付",value:2,checked:true,img:'../../static/images/recharge/wx.png'},
        {text:"余额支付",value:1,checked:false,img:'../../static/images/recharge/balance.png'},
    ])
    //设置支付选项
    const cardInfo = ref({
        cardNumber:'',
        cardBalance:'',
    })
    async function setPayMethod(){
        await getVipInfoApi().then((res) =>{
            console.log('获取会员卡返回响应-微信扫码取水页',res)
            if(res.code == 200 && res.data.id){
                cardInfo.value.cardNumber = res.data.cardNumber
                cardInfo.value.cardBalance = res.data.balance
            }else{
                console.log('未绑定会员卡')
                payList.value.splice(1,1)
            }
        })
    }
    //选中支付方式事件
    function choosePay(index1){
        payList.value.forEach((item,index) =>{
            if(item.checked == true){
                item.checked = false
            }
        })
        payList.value[index1].checked = true
        payMethod.value = payList.value[index1].value
        console.log('index',index1,payMethod.value)
    }
    async function submit(){
        if(payMethod.value == 1){
            //余额支付,比较金额大小
            if(choosedMoney.value > Number(cardInfo.value.cardBalance)){
                uni.showToast({
                    title:'水卡余额不足',
                    icon:'none'
                })
            }else{
                let data = {
                    payType:payMethod.value,
                    card:cardInfo.value.cardNumber,
                    amount:choosedMoney.value,
                    sn:facilityCode.value
                    }
                    //余额支付
                await buyWaterApi(data).then((res) =>{
                    console.log('余额支付响应',res,'传参',data)
                    if(res.code == 200){
                            uni.navigateTo({
                                url:'/pages/scanSuccess/index'
                            })
                        }else if(res.code == 300){
                            uni.showToast({
                                title:res.msg,
                                icon:'none'
                            })
                        }else{
                            uni.showToast({
                                title:'微信支付失败',
                                icon:'none'
                            })
                        }
                })
            }
        }else if(payMethod.value == 2){
            let data = {
                businessType:3,
                tradeAmount:choosedMoney.value,
                facilityCode:facilityCode.value,
                }
                console.log('data',data)
            await wxPayApi(data).then((res) =>{
                console.log('微信支付响应',res,'传参',data)
                if(res.code == 200){
                    //调用微信官方支付接口弹出付款界面,输入密码扣款
                    wx.requestPayment({
                      //预支付订单信息
                      // appId: res.data.appId,
                      timeStamp: res.data.timeStamp,     //时间戳
                      nonceStr: res.data.nonceStr,      //随机串
                      package: res.data.package,        //prepay_id
                      signType: res.data.signType,        //签名算法MD5
                      paySign: res.data.paySign ,//微信签名
                     success (res) {
                       if (res.errMsg == "requestPayment:ok"){
                          console.log('支付成功', res)
                          uni.showToast({
                            title: '支付成功',
                            duration: 2000,
                          });
                         uni.navigateTo({
                             url:'/pages/scanSuccess/index'
                         })
                       }else{
                          uni.showToast({
                            title: '支付失败',
                            duration: 2000,
                            icon:'none'
                          });
                       }
                     },
                     fail (res) {
                       uni.showToast({
                            title: '微信支付失败',
                            duration: 2000,
                            icon:'none'
                       });
                     }
                    })
                }else if(res.code == 300){
                    uni.showToast({
                        title:res.msg,
                        duration: 2000,
                        icon:'none'
                    });
                }else{
                    uni.showToast({
                        title:'微信支付失败',
                        duration: 2000,
                        icon:'none'
                    });
                }
            })
        }
    }
    const facilityCode = ref()
    onLoad((query) =>{
        let url = decodeURIComponent(query.q)
        facilityCode.value = url.split('=')[1]
        console.log('微信扫码取水','url',url,'facilityCode',facilityCode.value)
    })
    //设置水价
    async function getWaterPrice(){
        await getPriceBySnApi(facilityCode.value).then((res) =>{
            moneyList.value.forEach((item,index) =>{
                item.value = ((index + 1) * res.data.price).toFixed(1)
                item.volume = ((index + 1) * res.data.yield).toFixed(1)
            })
            choosedMoney.value = res.data.price
            console.log('水价设置回调',res,'传参',facilityCode.value)
        })
    }
    function navTo(){
        uni.redirectTo({
            url:'/pages/index/index'
        })
    }
    onMounted(async() =>{
        await getWaterPrice()
        await setPayMethod()
    })
</script>
<template>
    <view class="container">
        <!-- <navbar title="扫码取水"></navbar> -->
        <view class="navbar">
            <image src="../../static/images/other/home.svg" @click="navTo"></image>
            <text>扫码取水</text>
        </view>
        <view class="content">
            <view class="main">
                <view class="money">
                    <view class="money-title">
                        <view class="title-icon"></view>
                        <view class="title-text">选择</view>
                    </view>
                    <view class="money-list">
                        <block v-for="(item,index) in moneyList" :key="index">
                            <view class="money-box" :style="item.active ? activeStyle : ''" @click="chooseMoney(index)">
                                <view>{{item.value}}<span>元</span></view>
                                <view>{{item.volume}}<span>L</span></view>
                            </view>
                        </block>
                    </view>
                </view>
                <view class="pay-methods">
                    <view class="money-title">
                        <view class="title-icon"></view>
                        <view class="title-text">请选择支付方式</view>
                    </view>
                    <view class="methods-list">
                        <block v-for="(item,index) in payList">
                            <view class="pay-item">
                                <view class="pay-item-right">
                                    <image :src="item.img" alt=""></image>
                                    <view>{{item.text}}</view>
                                    <view style="margin-left:10rpx;color:#5EA1FA;" v-if="item.value == 1">({{cardInfo.cardBalance}})</view>
                                </view>
                                <radio :value="item.value" :checked="item.checked" @click="choosePay(index)"/>
                            </view>
                        </block>
                    </view>
                </view>
            </view>
            <view class="submit-btn" @click="submit()">确认支付</view>
        </view>
    </view>
</template>
<style lang="scss" scoped>
    .navbar{
       width:100%;
       height:176rpx;
       background: linear-gradient(to bottom,#5EA1FA,#8BC1FC);
       display: flex;
       align-items: flex-end;
       box-sizing: border-box;
       position: relative;
       padding:0 32rpx 24rpx;
       image{
           width:40rpx;
           height:40rpx;
       }
       text{
           font-weight: 400;
           font-size: 36rpx;
           color: #000000;
           position:absolute;
           width:200rpx;
           left:calc(50% - 100rpx);
           text-align: center;
           color: #e4ecf9;
           letter-spacing:1rpx;
       }
    }
    .container{
        width: 100%;
        height: 100vh;
        .content{
            width: 100%;
            height:calc(100vh - 176rpx);
            background:linear-gradient(to top,#FFFFFF,#E8EFFF);
            overflow-y: scroll;
            .main{
                width: 686rpx;
                height:1262rpx;
                background: #FFFFFF;
                border-top-right-radius: 24rpx;
                border-top-left-radius: 24rpx;
                margin: 20rpx auto 0;
                padding:0 25rpx;
                box-sizing: border-box;
                .money{
                    width: 100%;
                    height:420rpx;
                    padding-top: 58rpx;
                    // background: #65ffb2;
                    box-sizing: border-box;
                    .money-list{
                        margin-top:30rpx;
                        width:100%;
                        height: 290rpx;
                        padding: 0 20rpx;
                        box-sizing: border-box;
                        display: flex;
                        flex-direction: column;
                        justify-content: space-between;
                        align-items: center;
                        .money-box{
                            width:94%;
                            height:86rpx;
                            border:2rpx solid #75C8EB;
                            border:2rpx solid rgba(148,201,243);
                            border-radius: 8rpx;
                            font-weight: 300;
                            font-size: 28rpx;
                            color: #4EB6E3;
                            display: flex;
                            align-items: center;
                            padding: 0 20px;
                            box-sizing: border-box;
                            justify-content:space-between;
                            font-weight:600;
                            letter-spacing:5rpx;
                            font-size:32rpx;
                        }
                    }
                }
                .pay-methods{
                    width: 100%;
                    margin-top:58rpx;
                    .methods-list{
                        margin-top:40rpx;
                        width: 100%;
                        padding: 0 20rpx;
                        box-sizing: border-box;
                        // background: #49B4E3;
                        height:130rpx;
                        display: flex;
                        flex-direction: column;
                        justify-content: space-between;
                        align-items: flex-start;
                        .pay-item{
                            width:100%;
                            display: flex;
                            justify-content:space-between;
                            align-items: center;
                            .pay-item-right{
                                display: flex;
                                image{
                                    width: 42rpx;
                                    height: 42rpx;
                                    margin-right:34rpx;
                                }
                                view{
                                    font-weight: 300;
                                    font-size: 28rpx;
                                    color: #111111;
                                }
                            }
                        }
                    }
                }
            }
        }
        .submit-btn{
            width: 686rpx;
            height: 98rpx;
            background:#5EA1FA;
            border-radius:50rpx;
            text-align: center;
            line-height: 98rpx;
            letter-spacing:3rpx;
            margin:0 auto;
            font-weight: 300;
            font-size: 36rpx;
            color: #FFFFFF;
        }
    }
    .money-title{
        display: flex;
        align-items: center;
        .title-icon{
            width:8rpx;
            height:36rpx;
            background:#49B4E3;
            margin-right:12rpx;
        }
        .title-text{
            font-weight: 300;
            font-size: 28rpx;
            color: #000000;
        }
    }
</style>
static/images/other/home.svg
对比新文件
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731913129081" class="icon" viewBox="0 0 1036 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4245" width="20.234375" height="20" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M1014.628571 504L543.885714 33.6a36.491429 36.491429 0 0 0-51.657143 0L21.485714 504c-13.714286 13.714286-21.485714 32.342857-21.485714 51.771429 0 40.342857 32.8 73.142857 73.142857 73.142857h49.6V964.571429c0 20.228571 16.342857 36.571429 36.571429 36.571428H444.914286V745.142857h128v256h303.885714c20.228571 0 36.571429-16.342857 36.571429-36.571428V628.914286h49.6c19.428571 0 38.057143-7.657143 51.771428-21.485715 28.457143-28.571429 28.457143-74.857143-0.114286-103.428571z" p-id="4246" fill="#4c92ee"></path></svg>
static/images/pointMall/noRecord.svg
对比新文件
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731981413078" class="icon" viewBox="0 0 1429 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5800" width="209.326171875" height="150" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M477.403905 664.64595a14.840551 14.840551 0 0 1 0-20.989486l41.815726-41.815726a14.840551 14.840551 0 1 1 20.989486 20.98454l-41.815726 41.820672a14.840551 14.840551 0 0 1-20.989486 0m359.062186 0a14.830657 14.830657 0 0 0 0-20.989486l-41.815726-41.815726a14.830657 14.830657 0 0 0-20.984539 0 14.830657 14.830657 0 0 0 0 20.98454l41.815726 41.820672a14.830657 14.830657 0 0 0 20.984539 0m149.434455 257.364836h-657.931096a39.574803 39.574803 0 0 1-39.574803-39.574802v44.521653a39.574803 39.574803 0 0 0 39.574803 39.574803h657.931096a39.574803 39.574803 0 0 0 39.574803-39.574803v-44.521653a39.574803 39.574803 0 0 1-39.574803 39.574802m-218.002748-97.94269l-17.403019-30.141159a7.405435 7.405435 0 0 0-12.846971 0l-10.977061 19.010746-10.982007-19.010746a7.415329 7.415329 0 0 0-12.846971 0l-10.977061 19.010746-10.977061-19.010746a7.415329 7.415329 0 0 0-12.851917 0l-10.977061 19.010746-10.977061-19.010746a7.405435 7.405435 0 0 0-12.84697 0l-11.105679 19.233354-11.100732-19.233354a7.425222 7.425222 0 0 0-12.851917 0l-10.977061 19.010746-10.977061-19.010746a7.420276 7.420276 0 0 0-12.851917 0l-17.398073 30.141159a7.415329 7.415329 0 0 0 2.720768 10.136097 7.400488 7.400488 0 0 0 10.126202-2.715821l10.982008-19.010746 10.972114 19.010746c0.049469 0.084096 0.123671 0.138512 0.17314 0.222608 0.247343 0.395748 0.53426 0.761815 0.860752 1.113042 0.103884 0.113778 0.202821 0.237449 0.316598 0.346279 0.410589 0.385854 0.855805 0.737081 1.365331 1.033892l0.029681 0.009894c0.064309 0.039575 0.138512 0.059362 0.207768 0.09399 0.465004 0.252289 0.944848 0.445217 1.439533 0.583728 0.133565 0.039575 0.277024 0.064309 0.420482 0.09399 0.45511 0.108831 0.915167 0.163246 1.375225 0.183034 0.084096 0 0.163246 0.029681 0.247342 0.029681 0.049469 0 0.108831-0.019787 0.1583-0.019788 1.192191-0.029681 2.349754-0.336386 3.393539-0.91022 0.049469-0.029681 0.098937-0.034628 0.148405-0.064309 0.103884-0.059362 0.18798-0.143459 0.286918-0.207768 0.252289-0.158299 0.494685-0.331439 0.727187-0.524366a9.008214 9.008214 0 0 0 0.994317-0.999264 6.480374 6.480374 0 0 0 0.465004-0.648037c0.074203-0.113778 0.17314-0.212715 0.247342-0.336386l10.972114-19.010746 10.982008 19.010746a7.420276 7.420276 0 0 0 6.430905 3.710138c0.034628 0 0.074203-0.014841 0.113778-0.014841l0.118724 0.014841c2.572362 0 5.060628-1.330703 6.430906-3.710138l10.982008-19.010746 10.972114 19.010746c0.074203 0.118724 0.168193 0.217661 0.247342 0.331439 0.148406 0.227555 0.296811 0.450163 0.469951 0.662878a8.162303 8.162303 0 0 0 1.686876 1.498896c0.108831 0.069256 0.197874 0.153352 0.311652 0.222608 0.054415 0.029681 0.113778 0.039575 0.163246 0.069256 1.043785 0.568888 2.196402 0.875593 3.383645 0.905273 0.049469 0 0.103884 0.019787 0.158299 0.019788 0.07915 0 0.158299-0.029681 0.247343-0.029681 0.460057-0.019787 0.925061-0.074203 1.385118-0.183034 0.138512-0.029681 0.272077-0.054415 0.405642-0.09399 0.494685-0.138512 0.979476-0.331439 1.449427-0.583728 0.064309-0.034628 0.138512-0.054415 0.202821-0.09399l0.024734-0.009894c0.509526-0.296811 0.959689-0.648037 1.370278-1.033892 0.108831-0.108831 0.207768-0.232502 0.316598-0.346279 0.321545-0.351226 0.608463-0.717293 0.855805-1.113042 0.054415-0.084096 0.123671-0.138512 0.17314-0.222608l10.982008-19.010746 10.972114 19.010746c0.069256 0.118724 0.163246 0.217661 0.237449 0.331439 0.153352 0.227555 0.301758 0.450163 0.474897 0.657931a10.230087 10.230087 0 0 0 0.999264 0.999264c0.222608 0.18798 0.460057 0.351226 0.697506 0.509525 0.108831 0.069256 0.197874 0.153352 0.306705 0.217662 0.064309 0.039575 0.133565 0.054415 0.197874 0.084096 0.257236 0.143459 0.519419 0.252289 0.791496 0.36112 0.197874 0.07915 0.385854 0.163246 0.593622 0.222609 0.237449 0.074203 0.479844 0.118724 0.732133 0.168193 0.227555 0.044522 0.450163 0.089043 0.682666 0.113777 0.237449 0.024734 0.474898 0.019787 0.712346 0.019788 0.247343 0 0.479844 0.004947 0.712347-0.019788 0.232502-0.024734 0.45511-0.069256 0.682665-0.113777 0.252289-0.049469 0.499632-0.09399 0.742028-0.168193 0.197874-0.059362 0.385854-0.143459 0.578781-0.212715 0.272077-0.113778 0.544154-0.227555 0.806337-0.371014 0.059362-0.029681 0.128618-0.044522 0.18798-0.084096 0.103884-0.059362 0.18798-0.143459 0.286917-0.207768 0.252289-0.158299 0.494685-0.331439 0.722241-0.524366 0.17314-0.138512 0.331439-0.291864 0.494685-0.445217 0.168193-0.178087 0.34628-0.36112 0.504578-0.554047 0.168193-0.207768 0.316598-0.425429 0.465004-0.648037 0.074203-0.113778 0.17314-0.217661 0.247343-0.336386l10.967167-19.010746 10.982008 19.010746c0.049469 0.084096 0.118724 0.138512 0.168193 0.222608 0.252289 0.395748 0.544154 0.761815 0.860752 1.113042 0.108831 0.113778 0.207768 0.237449 0.316598 0.346279 0.410589 0.385854 0.855805 0.737081 1.370278 1.033892l0.019787 0.009894c0.445217 0.252289 0.915167 0.420482 1.395012 0.578781 0.751921 0.242396 1.518683 0.405642 2.285445 0.405642h0.01484c0.766762 0 1.533524-0.163246 2.285445-0.405642 0.479844-0.158299 0.954742-0.326492 1.395012-0.578781l0.024734-0.009894c0.509526-0.296811 0.954742-0.648037 1.365331-1.033892 0.108831-0.108831 0.207768-0.232502 0.316598-0.346279a8.063366 8.063366 0 0 0 0.860752-1.113042c0.049469-0.084096 0.123671-0.138512 0.168193-0.222608l10.982008-19.010746 10.972114 19.010746a7.420276 7.420276 0 1 0 12.851917-7.420276" fill="#F9CEBB" p-id="5801"></path><path d="M1234.920045 166.206257c-1.078413 0-3.042313 1.132829-5.505844 4.422484-10.749506 14.345866-16.952856 48.958978-8.335443 63.369153 2.760342 4.625305 10.957274 3.947587 15.602366 3.126409a64.937304 64.937304 0 0 0 7.702246-1.879803c3.106622-11.956537 3.838756-24.007065 2.191455-36.121901-4.185035-30.685313-11.046317-32.807511-11.338181-32.876768a1.286181 1.286181 0 0 0-0.316599-0.039574m-88.647558 186.595195a4.94685 4.94685 0 0 1-2.250817-9.349548c0.286917-0.148406 29.211151-15.038425 56.206114-40.465235 19.629102-18.471539 33.173578-37.388295 40.564173-56.591968-0.811283 0.178087-1.607726 0.331439-2.394276 0.474897-15.839815 2.760342-22.770352-2.705927-25.812665-7.791289-11.852653-19.822029-2.770236-58.788369 8.904331-74.380842 6.351756-8.469008 12.327551-9.032949 16.225669-8.033685 9.23577 2.399222 15.162096 15.458907 18.659519 41.128114a100.663458 100.663458 0 0 1-1.043785 33.331878C1307.950397 207.893364 1392.289249 125.345273 1415.75216 4.008928a4.94685 4.94685 0 1 1 9.715614 1.874856c-15.547951 80.411052-54.919933 137.413609-85.214444 171.081872-28.518592 31.69447-61.474509 56.191273-87.96984 66.015718-7.326285 23.146313-22.612053 45.916665-45.446714 67.376102-28.01896 26.332084-57.101494 41.276519-58.328312 41.899822a4.857807 4.857807 0 0 1-2.235977 0.544154M78.262338 935.946064c-1.103148 2.127146-6.208297 12.762874-2.493212 22.34987 2.626778 6.767291 9.265451 11.882335 19.718145 15.201671 1.766026 0.558994 3.710138 0.845911 5.753187 0.771708 3.685404-9.547421 3.076941-21.073582-1.845175-34.380609-0.930008-2.295339-4.847913-9.399016-9.774976-10.235034-3.967374-0.717293-8.310709 2.948323-11.357969 6.292394M9.323032 1019.894114c-2.542681 0-4.155354-0.059362-4.551102-0.074203A4.94685 4.94685 0 0 1 0.003166 1014.699921c0.098937-2.735608 2.320073-5.021053 5.124937-4.763817 0.677718 0 67.123812 2.087571 90.527361-26.218306a26.193573 26.193573 0 0 1-3.165984-0.791496c-13.490061-4.279026-22.231145-11.397543-25.970964-21.137892-5.82739-15.137362 3.032419-30.566588 3.413326-31.214626a4.640146 4.640146 0 0 1 0.568888-0.781602c6.876122-7.766555 13.895703-11.115573 20.846028-9.883807 11.204616 1.954006 16.69562 14.949382 17.284295 16.42849 4.862754 13.148728 6.10936 24.961807 3.749712 35.350193 4.432378-1.825388 9.201142-4.58573 14.143045-8.251347 27.356082-20.272193 57.54671-66.911098 57.121281-101.410432a4.94685 4.94685 0 0 1 4.892435-5.011159c2.799917 0.138512 4.971585 2.15188 5.001266 4.887488 0.469951 38.051173-31.229466 87.331696-61.123283 109.483692-8.681722 6.435852-16.972644 10.477429-24.585846 12.050527-0.806337 1.434587-1.706663 2.819705-2.691087 4.180089-21.726567 30.012541-79.050669 32.273252-95.815544 32.273251m516.372026-894.390542l8.449221-8.454167a9.893701 9.893701 0 1 0-13.989693-13.989693l-8.44922 8.44922-8.449221-8.44922a9.893701 9.893701 0 1 0-13.989693 13.989693l8.449221 8.44922-8.449221 8.449221a9.883807 9.883807 0 0 0 6.994847 16.888547 9.844232 9.844232 0 0 0 6.994846-2.898855l8.449221-8.44922 8.44922 8.44922c1.929272 1.934218 4.462059 2.898854 6.994846 2.898855a9.893701 9.893701 0 0 0 6.994847-16.888547l-8.449221-8.449221z" fill="#F9925F" p-id="5802"></path><path d="M140.844942 387.023762l4.590677-4.590677a9.893701 9.893701 0 1 0-13.989693-13.989693l-4.590677 4.590677-4.58573-4.590677a9.893701 9.893701 0 1 0-13.989693 13.989693l4.585731 4.590677-4.585731 4.590677a9.883807 9.883807 0 0 0 6.994847 16.888547c2.527841 0 5.060628-0.969583 6.994846-2.898854l4.58573-4.590677 4.590677 4.590677a9.883807 9.883807 0 0 0 13.989693 0 9.893701 9.893701 0 0 0 0-13.989693l-4.590677-4.590677z" fill="#F9CEBB" p-id="5803"></path><path d="M1289.894393 863.65774a14.840551 14.840551 0 0 0-19.233354-8.409646l-17.066634 6.678248-6.678248-17.066634a14.840551 14.840551 0 0 0-27.638052 10.823709l6.678248 17.066634-17.066634 6.678248a14.850445 14.850445 0 0 0 5.411854 28.666997c1.795707 0 3.626041-0.326492 5.401961-1.023998l17.07158-6.678248 6.683195 17.066634a14.840551 14.840551 0 1 0 27.638053-10.823708l-6.678248-17.066634 17.066634-6.678248a14.845498 14.845498 0 0 0 8.409645-19.233354M315.85956 674.727631c-2.43385 0-4.892435-0.717293-7.044314-2.206295l-128.212468-89.043306a12.372073 12.372073 0 0 1 14.113364-20.321661l128.212468 89.043306a12.372073 12.372073 0 0 1-7.06905 22.527956m682.34875 0a12.372073 12.372073 0 0 1-7.06905-22.527956l128.212468-89.043306a12.367126 12.367126 0 0 1 14.113364 20.321661l-128.212468 89.043306a12.347338 12.347338 0 0 1-7.044314 2.206295" fill="#F9925F" p-id="5804"></path><path d="M740.863261 345.994586h-37.690053l-1.038838 3.87833h37.690052zM738.083131 356.368131h-37.690053l-1.08336 4.03663h37.690053z" fill="#F97628" p-id="5805"></path><path d="M1018.055073 926.962584c0 17.729512-14.425016 32.154527-32.154527 32.154527h-657.931096a32.194102 32.194102 0 0 1-32.154527-32.154527v-383.727182l401.30334-155.528974h254.193905c36.567118 0 66.327369 29.557431 66.742905 66.025611v473.230545zM284.130462 539.802288c-1.33565-1.914431-2.354701-4.323547-3.15609-7.014633v-46.045283c0.45511-2.903801 0.925061-5.565207 1.375224-7.79129l13.465327-2.992844 358.142071-79.476098-358.142071 138.79378-11.684461 4.526368z m-5.688878-67.732275a3.977268 3.977268 0 0 0-0.905273 0.341333l-3.759606 0.836018c-9.809604-11.956537-7.167986-32.060537-5.82739-39.193896 0.247343 0.049469 0.469951 0.17314 0.717293 0.17314a3.715085 3.715085 0 0 0 0.702453-0.069256l11.605311-2.235976 14.840551-2.869173 353.600862-68.222013 33.623742 21.588055L295.814923 468.221364l-14.840551 3.289655-2.532788 0.558994zM260.108557 415.161447c-4.30376-15.434173 7.578575-37.437763 10.883071-43.121694l9.992638-1.780867 14.840551-2.631724 285.166135-50.71511 59.322629 38.080854-344.493711 65.842578-14.840551 2.839492-12.55016 2.394276c-4.229557-2.621831-6.999793-6.183563-8.320602-10.907805z m35.71626-91.714605c0-17.729512 14.420069-32.154527 32.154527-32.154528h213.100419l30.719941 19.718146-275.979834 49.072755v-36.636373z m400.793814 15.740877h54.46977l-8.300815 30.95739h-8.389858l0.742027-2.770236h-37.690053l-0.742027 2.770236h-8.389858l8.295868-30.95739z m-4.056417-12.352285c5.758134-0.237449 11.204616-0.474898 16.359234-0.796443l1.187244-4.427431h-13.539529l0.049468-6.653514c2.265657-1.97874 4.481846-4.358175 6.792026-7.049261h-6.975059l1.954006-7.281764h10.378492c1.038839-1.503843 1.988634-3.017579 2.96811-4.600571l7.875386 1.35049c-0.771709 1.113041-1.464268 2.221136-2.137039 3.250081h17.892757l-1.949059 7.281764h-21.221988c-1.944112 2.532787-3.987161 4.833073-5.985689 6.970112h5.703719l1.207031-4.516475h7.603309l-1.211978 4.516475h11.244191l-1.800654 6.727716h-11.244191l-1.063572 3.957481c3.729925-0.311652 7.276817-0.554047 10.685196-0.865699l-1.780866 6.653513c-3.487529 0.311652-7.08389 0.7074-10.729718 1.028945l-1.399959 5.218927h-7.598362l1.226819-4.58573c-4.912222 0.311652-10.061894 0.633197-15.374811 0.939902l0.880539-7.123465z m70.888366-29.928444l3.744765 6.094519c-6.460587 2.532787-13.969905 4.274079-22.621946 5.228821l-1.672036 6.247872h22.567532l-1.929272 7.212508h-7.286711l-4.288919 15.993167h-7.99411l4.283972-15.993167h-7.835811a54.776474 54.776474 0 0 1-10.996848 16.784663l-4.105886-5.941167a41.810779 41.810779 0 0 0 9.750242-17.180412l3.566679-13.307027c10.724772-1.023998 18.951384-2.770236 24.813402-5.144724zM771.71182 324.698395h25.975911c1.489002-3.809075 2.869173-7.756661 4.155354-11.956537l1.226819-4.600571h-21.855185l2.166721-8.07326h57.957298l-2.161773 8.078207h-27.712256l-1.231766 4.595624a158.071656 158.071656 0 0 1-4.076204 11.956537h34.840667l-2.141987 7.99411h-23.675625l-6.579311 24.546271c-0.677718 2.537734 0.148406 3.878331 2.52784 3.878331h8.469008c1.424693 0 2.705927-0.633197 3.715085-1.736344 1.167457-1.113041 2.676246-4.674774 4.605517-10.690144l7.059156 2.611937c-3.002738 8.548157-5.629516 13.618679-7.796236 15.201671-1.97874 1.503843-4.729189 2.295339-8.053473 2.295339h-12.589734c-6.178616 0-8.375018-3.324283-6.618886-9.893701l7.024528-26.218307h-4.274079c-3.225346 6.727716-6.777185 12.594681-10.704984 17.506903-7.247136 8.706457-16.942962 15.35997-29.102321 19.950648l-2.70098-7.360913c12.268189-4.996319 21.226935-11.244191 27.024644-18.689201a90.428424 90.428424 0 0 0 6.930537-11.40249h-24.546272l2.141987-7.99411z m78.541143-4.511528h18.847499l-8.953799 33.411027c3.081888-2.05789 6.391331-4.353228 9.943169-6.965165l-0.098937 8.632254a176.884528 176.884528 0 0 1-20.6531 12.663937l-1.17735-7.44501c1.746238-1.187244 2.839492-2.611937 3.284709-4.274079l7.529106-28.108003h-10.848443l2.127146-7.914961z m17.135889-22.884129a74.128552 74.128552 0 0 1 9.730455 11.560789l-7.252083 5.777921c-2.028209-3.645829-5.342598-7.524159-9.864019-11.639939l7.385647-5.698771z m15.25114 10.447748l2.127145-7.914961h38.956447l-8.488795 31.669736h-27.633106l-6.618886 24.70457c-0.593622 2.216189 0.197874 3.40838 2.374488 3.561733h15.671622c2.691087 0 4.729189-1.108094 5.916433-3.165984 1.187244-2.05789 2.681193-5.857071 4.501634-11.476693l7.519212 2.691086c-2.982951 8.152409-5.614675 13.539529-7.865492 16.072317-2.146933 2.374488-5.738346 3.640882-10.803921 3.640882h-20.667941c-5.223874 0-7.039368-2.691087-5.614675-7.99411l9.631518-35.953709h27.791405l4.244398-15.834867h-31.041486z m48.548389 30.883186l6.866228-5.223874c3.739819 3.161037 6.777185 6.331968 9.092311 9.497953l-6.826653 5.382173c-1.9639-3.007685-4.996319-6.173669-9.131886-9.656252z m-0.702453-13.935277h46.718055l1.464268-5.46627h-36.107061l1.909484-7.123464h36.112008l1.484055-5.54542h-38.803094l1.99358-7.440062h47.192953l-6.851388 25.575216h13.38123l-2.013368 7.519212h-12.268189l4.872648 5.144725c-5.476163 5.070522-11.22935 9.102205-17.215039 11.956537 4.709402 4.279026 10.517004 8.004004 17.388179 11.328287l-6.148935 7.281764c-9.685933-5.223874-16.957803-11.48164-21.790876-18.8475l-3.398486 12.673831c-1.479108 5.540472-4.699508 8.389858-9.527634 8.389858h-9.265451l0.25229-7.756661c2.770236 0.316598 5.476163 0.544154 8.16725 0.544153 1.187244 0 2.117252-1.098201 2.671299-3.15609l2.78013-10.373546c-9.582049 6.806866-20.405758 12.901386-32.40187 18.367656l-1.266394-7.682459c13.321868-5.382173 25.233884-11.714142 35.938868-19.159151l2.329966-8.711404h-29.611846l2.013368-7.519212z m102.404749 129.033644V323.446842c0-25.911602-21.083476-46.995078-46.995078-46.995079h-442.431454c-0.237449-0.004947-0.469951-0.014841-0.712347 0H327.96945c-25.911602 0-46.995078 21.083476-46.995078 46.995079v31.546064c-9.542474 3.987161-15.444067 11.709195-15.444067 11.709195-0.751921 1.187244-18.417124 29.503015-12.57984 50.438086a25.337767 25.337767 0 0 0 8.271133 12.822236c-0.840965 3.452902-7.529106 33.420921 8.577839 49.973082a3.729925 3.729925 0 0 0 3.462795 1.033892l1.197138-0.262183c-2.750449 14.830657-7.924854 51.951822 5.862018 66.114655 0.18798 0.192927 0.435323 0.296811 0.652984 0.445216v379.695499c0 25.911602 21.083476 46.995078 46.995078 46.995078h657.931096c25.911602 0 46.995078-21.083476 46.995078-46.995078v-135.692105c0.004947-0.128618 0.039575-0.252289 0.039575-0.385855V454.493854c0-0.257236-0.039575-0.499632-0.039575-0.761815z" fill="#F97628" p-id="5806"></path><path d="M984.540162 332.217607h-18.209356l-2.082624 7.756662c1.058626 1.662142 2.300285 3.250081 3.695297 4.833072 5.876858-3.007685 11.437118-7.207561 16.596683-12.589734" fill="#F97628" p-id="5807"></path></svg>
unpackage/dist/dev/mp-weixin/api/index.js
@@ -81,6 +81,21 @@
function rechargeApi(data) {
  return util_request.request("/rechargeRecords/fees", data, "POST");
}
function pointsSearchApi(data) {
  return util_request.request("/userIntegralAcquire/search", data, "POST");
}
function pointsExchangeApi(data) {
  return util_request.request("/userIntegralConvert/search", data, "POST");
}
function goodsGetApi(id) {
  return util_request.request(`/shopGoods/getListByCategoryId?categoryId=${id}`, {}, "GET");
}
function goodsGetByIdApi(id) {
  return util_request.request(`/shopGoods/get?id=${id}`, {}, "GET");
}
function goodsSearchTypeApi(data) {
  return util_request.request("/shopGoodsCategory/search", data, "POST");
}
exports.askShareApi = askShareApi;
exports.askShareListApi = askShareListApi;
exports.balanceChangeApi = balanceChangeApi;
@@ -96,8 +111,13 @@
exports.getRegionApi = getRegionApi;
exports.getUserInfo = getUserInfo;
exports.getVipInfoApi = getVipInfoApi;
exports.goodsGetApi = goodsGetApi;
exports.goodsGetByIdApi = goodsGetByIdApi;
exports.goodsSearchTypeApi = goodsSearchTypeApi;
exports.infoBreakdownApi = infoBreakdownApi;
exports.paymentChangeApi = paymentChangeApi;
exports.pointsExchangeApi = pointsExchangeApi;
exports.pointsSearchApi = pointsSearchApi;
exports.rechargeApi = rechargeApi;
exports.rechargeChangeApi = rechargeChangeApi;
exports.removeCardApi = removeCardApi;
unpackage/dist/dev/mp-weixin/app.js
@@ -27,6 +27,10 @@
  "./pages/scanSuccess/index.js";
  "./pages/counterRecharge/index.js";
  "./pages/pointsMall/index.js";
  "./pages/wxScanWater/index.js";
  "./pages/pointsMall/pointsGetRecord/index.js";
  "./pages/pointsMall/pointsExchangeRecord/index.js";
  "./pages/pointsMall/pointsGoodsDetail/index.js";
}
const _sfc_main = {
  __name: "App",
@@ -37,83 +41,28 @@
          success: async (res1) => {
            common_vendor.index.setStorageSync("code", res1.code);
            await api_index.wxLoginApi({ code: res1.code }).then((res2) => {
              if (res2.code == 200) {
              common_vendor.index.setStorageSync("openId", res2.data.userId);
              common_vendor.index.setStorageSync("token", res2.data.token);
              } else {
                console.log("登录接口调用失败");
              }
            });
          },
          fail: (e) => {
            common_vendor.index.showToast({
              title: "登录失败,请退出重试!",
              duration: 2e3
              title: "微信登录失败,请退出重试!",
              duration: 2e3,
              icon: "fail"
            });
            console.log(e);
          }
        });
      }
    }
    let userLocation = {
      lat: "",
      lon: ""
    };
    function getUserLocation() {
      common_vendor.index.authorize({
        scope: "scope.userLocation",
        success() {
          console.log("成功授权位置信息1");
          storageLocation();
        },
        fail() {
          console.log("用户拒绝授权位置信息,再次提示用户授权");
          showToast();
        }
      });
      function storageLocation() {
        common_vendor.index.getLocation({
          type: "gcj02",
          isHighAccuracy: true,
          success: (res) => {
            userLocation.lat = res.latitude;
            userLocation.lon = res.longitude;
            common_vendor.index.setStorageSync("userLocation", JSON.stringify(userLocation));
          },
          fail: () => {
            showToast();
          }
        });
      }
      function showToast() {
        common_vendor.index.showModal({
          title: "请求授权当前位置",
          content: "我们需要获取地理位置信息,为您获取附近站点信息!",
          confirmText: "前往设置",
          success: (res) => {
            if (res.confirm) {
              common_vendor.index.openSetting({
                success: (res1) => {
                  if (res1.authSetting["scope.userLocation"]) {
                    console.log("用户二次授权成功");
                    storageLocation();
                  } else {
                    showToast();
                    console.log("用户拒绝授权");
                  }
                }
              });
            } else {
              common_vendor.index.showToast({
                title: "请先授权!",
                duration: 2e3,
                icon: "none"
              });
              showToast();
            }
          }
        });
      }
    }
    common_vendor.onLaunch(async () => {
      await wxLogin();
      await getUserLocation();
      console.log("进入项目启动页APP.vue了");
    });
    common_vendor.onShow(() => {
      console.log("App Show");
@@ -126,10 +75,11 @@
  }
};
const navbar = () => "./components/navbar/navbar.js";
const pointNavbar = () => "./components/pointNavbar/pointNavbar.js";
const DaTree = () => "./components/da-tree/index.js";
function createApp() {
  const app = common_vendor.createSSRApp(_sfc_main);
  app.component("navbar", navbar).component("DaTree", DaTree);
  app.component("navbar", navbar).component("pointNavbar", pointNavbar).component("DaTree", DaTree);
  return {
    app
  };
unpackage/dist/dev/mp-weixin/app.json
@@ -23,7 +23,11 @@
    "pages/scanRecharge/index",
    "pages/scanSuccess/index",
    "pages/counterRecharge/index",
    "pages/pointsMall/index"
    "pages/pointsMall/index",
    "pages/wxScanWater/index",
    "pages/pointsMall/pointsGetRecord/index",
    "pages/pointsMall/pointsExchangeRecord/index",
    "pages/pointsMall/pointsGoodsDetail/index"
  ],
  "window": {
    "navigationStyle": "custom"
@@ -38,6 +42,7 @@
  ],
  "usingComponents": {
    "navbar": "/components/navbar/navbar",
    "point-navbar": "/components/pointNavbar/pointNavbar",
    "da-tree": "/components/da-tree/index"
  }
}
unpackage/dist/dev/mp-weixin/common/assets.js
@@ -1,56 +1,62 @@
"use strict";
const headImg = "/static/images/index/head.png";
const _imports_1$6 = "/static/images/index/back.png";
const _imports_0$9 = "/static/images/index/card11.png";
const _imports_0$c = "/static/images/index/head.png";
const _imports_1$7 = "/static/images/index/back.png";
const _imports_0$b = "/static/images/index/card11.png";
const _imports_3$1 = "/static/images/index/code1.png";
const _imports_4$1 = "/static/images/index/vip-add.png";
const _imports_5$1 = "/static/images/index/home21.png";
const _imports_1$5 = "/static/images/index/icon22.png";
const _imports_7$1 = "/static/images/index/icon23.png";
const _imports_1$6 = "/static/images/index/icon22.png";
const _imports_7 = "/static/images/index/icon23.png";
const _imports_8$1 = "/static/images/index/banner2.png";
const _imports_9$1 = "/static/images/index/banner1.png";
const _imports_10 = "/static/images/index/icon51.png";
const _imports_11 = "/static/images/index/more-info5.png";
const _imports_12 = "/static/images/index/notice5.png";
const _imports_0$8 = "/static/images/addCard/code.png";
const _imports_1$4 = "/static/images/other/more.png";
const _imports_0$7 = "/static/images/other/expand.png";
const _imports_1$3 = "/static/images/other/nodata.png";
const _imports_0$6 = "/static/images/other/code-none.png";
const _imports_0$5 = "/static/images/address/edit.png";
const _imports_1$2 = "/static/images/address/delete.png";
const _imports_0$4 = "/static/images/address/expand.png";
const _imports_0$3 = "/static/images/other/success.png";
const _imports_0$2 = "/static/logo.png";
const _imports_1$1 = "/static/images/other/img-add.png";
const _imports_0$1 = "/static/images/pointMall/back.svg";
const _imports_1 = "/static/images/pointMall/points.svg";
const _imports_0$a = "/static/images/addCard/code.png";
const _imports_1$5 = "/static/images/other/more.png";
const _imports_0$9 = "/static/images/other/expand.png";
const _imports_1$4 = "/static/images/other/nodata.png";
const _imports_0$8 = "/static/images/other/code-none.png";
const _imports_0$7 = "/static/images/address/edit.png";
const _imports_1$3 = "/static/images/address/delete.png";
const _imports_0$6 = "/static/images/address/expand.png";
const _imports_0$5 = "/static/images/other/success.png";
const _imports_0$4 = "/static/logo.png";
const _imports_1$2 = "/static/images/other/img-add.png";
const _imports_0$3 = "/static/images/other/home.svg";
const _imports_0$2 = "/static/images/pointMall/back.svg";
const _imports_1$1 = "/static/images/pointMall/points.svg";
const _imports_2 = "/static/images/pointMall/points-icon.svg";
const _imports_3 = "/static/images/pointMall/advert/gift1.svg";
const _imports_4 = "/static/images/pointMall/advert/gift2.svg";
const _imports_5 = "/static/images/pointMall/advert/bag.svg";
const _imports_6 = "/static/images/pointMall/advert/money.svg";
const _imports_7 = "/static/images/pointMall/advert/money1.svg";
const _imports_0$1 = "/static/images/pointMall/advert/money1.svg";
const _imports_8 = "/static/images/pointMall/nav1.svg";
const _imports_9 = "/static/images/pointMall/nav2.svg";
const _imports_1 = "/static/images/pointMall/noRecord.svg";
const _imports_0 = "/static/images/other/navBack.svg";
exports._imports_0 = _imports_0;
exports._imports_0$1 = _imports_0$9;
exports._imports_0$2 = _imports_0$8;
exports._imports_0$3 = _imports_0$7;
exports._imports_0$4 = _imports_0$6;
exports._imports_0$5 = _imports_0$5;
exports._imports_0$6 = _imports_0$4;
exports._imports_0$7 = _imports_0$3;
exports._imports_0$8 = _imports_0$2;
exports._imports_0$9 = _imports_0$1;
exports._imports_1 = _imports_1$5;
exports._imports_1$1 = _imports_1$6;
exports._imports_1$2 = _imports_1$4;
exports._imports_1$3 = _imports_1$3;
exports._imports_1$4 = _imports_1$2;
exports._imports_1$5 = _imports_1$1;
exports._imports_1$6 = _imports_1;
exports._imports_0$1 = _imports_0$2;
exports._imports_0$10 = _imports_0$4;
exports._imports_0$11 = _imports_0$3;
exports._imports_0$12 = _imports_0$1;
exports._imports_0$2 = _imports_0$b;
exports._imports_0$3 = _imports_0$c;
exports._imports_0$4 = _imports_0$a;
exports._imports_0$5 = _imports_0$9;
exports._imports_0$6 = _imports_0$8;
exports._imports_0$7 = _imports_0$7;
exports._imports_0$8 = _imports_0$6;
exports._imports_0$9 = _imports_0$5;
exports._imports_1 = _imports_1$6;
exports._imports_1$1 = _imports_1$7;
exports._imports_1$2 = _imports_1$5;
exports._imports_1$3 = _imports_1$4;
exports._imports_1$4 = _imports_1$3;
exports._imports_1$5 = _imports_1$2;
exports._imports_1$6 = _imports_1$1;
exports._imports_1$7 = _imports_1;
exports._imports_10 = _imports_10;
exports._imports_11 = _imports_11;
exports._imports_12 = _imports_12;
@@ -62,10 +68,8 @@
exports._imports_5 = _imports_5$1;
exports._imports_5$1 = _imports_5;
exports._imports_6 = _imports_6;
exports._imports_7 = _imports_7$1;
exports._imports_7$1 = _imports_7;
exports._imports_7 = _imports_7;
exports._imports_8 = _imports_8$1;
exports._imports_8$1 = _imports_8;
exports._imports_9 = _imports_9$1;
exports._imports_9$1 = _imports_9;
exports.headImg = headImg;
unpackage/dist/dev/mp-weixin/common/vendor.js
@@ -7813,6 +7813,30 @@
    style: {
      navigationStyle: "custom"
    }
  },
  {
    path: "pages/wxScanWater/index",
    style: {
      navigationStyle: "custom"
    }
  },
  {
    path: "pages/pointsMall/pointsGetRecord/index",
    style: {
      navigationStyle: "custom"
    }
  },
  {
    path: "pages/pointsMall/pointsExchangeRecord/index",
    style: {
      navigationStyle: "custom"
    }
  },
  {
    path: "pages/pointsMall/pointsGoodsDetail/index",
    style: {
      navigationStyle: "custom"
    }
  }
];
const globalStyle = {
unpackage/dist/dev/mp-weixin/pages/addCard/index.js
@@ -92,7 +92,7 @@
        b: form.value.waterCardNumber,
        c: common_vendor.o(($event) => form.value.waterCardNumber = $event.detail.value),
        d: common_vendor.o(($event) => toScan()),
        e: common_assets._imports_0$2,
        e: common_assets._imports_0$4,
        f: common_vendor.p({
          label: "卡号:",
          name: "waterCardNumber"
unpackage/dist/dev/mp-weixin/pages/address/index.js
@@ -88,7 +88,7 @@
            h: common_vendor.o(($event) => deleteAddress(item.id))
          };
        }),
        c: common_assets._imports_0$5,
        c: common_assets._imports_0$7,
        d: common_assets._imports_1$4,
        e: common_vendor.o(($event) => navToAdd())
      };
unpackage/dist/dev/mp-weixin/pages/index/index.js
@@ -33,6 +33,7 @@
    async function getVipInfo() {
      await api_index.getVipInfoApi().then((res) => {
        if (res.code == 200 && res.data.id) {
          console.log("获取会员卡返回响应-首页", res);
          cardInfo.value.waterCardNumber = res.data.cardNumber;
          cardInfo.value.cardType = res.data.cardType;
          cardInfo.value.state = res.data.state == 2 ? true : false;
@@ -190,9 +191,73 @@
        icon: "none"
      });
    }
    let userLocation = {
      lat: "",
      lon: ""
    };
    function getUserLocation() {
      common_vendor.index.authorize({
        scope: "scope.userLocation",
        success() {
          console.log("成功授权位置信息1");
          storageLocation();
        },
        fail() {
          console.log("用户拒绝授权位置信息,再次提示用户授权");
          showToast();
        }
      });
      function storageLocation() {
        common_vendor.index.getLocation({
          type: "gcj02",
          isHighAccuracy: true,
          success: (res) => {
            userLocation.lat = res.latitude;
            userLocation.lon = res.longitude;
            common_vendor.index.setStorageSync("userLocation", JSON.stringify(userLocation));
          },
          fail: () => {
            showToast();
          }
        });
      }
      function showToast() {
        common_vendor.index.showModal({
          title: "请求授权当前位置",
          content: "请求获取您的位置,加载附近饮水设备信息!",
          confirmText: "前往设置",
          success: (res) => {
            if (res.confirm) {
              common_vendor.index.openSetting({
                success: (res1) => {
                  if (res1.authSetting["scope.userLocation"]) {
                    console.log("用户二次授权成功");
                    setTimeout(() => {
                      storageLocation();
                    }, 1e3);
                  } else {
                    showToast();
                    console.log("用户拒绝授权");
                  }
                }
              });
            } else {
              common_vendor.index.showToast({
                title: "请先授权!",
                duration: 2e3,
                icon: "none"
              });
              showToast();
            }
          }
        });
      }
    }
    common_vendor.onMounted(async () => {
      getTopHeight();
      await getInfo();
      await getUserLocation();
      console.log("进入首页了");
    });
    common_vendor.onShow(async () => {
      getTopHeight();
@@ -214,13 +279,13 @@
      }, cardInfo.value.headImg ? {
        b: common_vendor.unref(config_baseUrl.BASE_URL) + "/upload" + cardInfo.value.headImg
      } : {
        c: common_assets.headImg
        c: common_assets._imports_0$3
      }, {
        d: common_vendor.t(cardInfo.value.userName),
        e: common_vendor.o(($event) => navTo("/pages/userInfo/index")),
        f: common_vendor.o(($event) => navTo("/pages/userInfo/index")),
        g: common_assets._imports_1$1,
        h: common_assets._imports_0$1,
        h: common_assets._imports_0$2,
        i: isShareCard.value
      }, isShareCard.value ? {
        j: common_vendor.t(cardInfo.value.waterCardNumber)