Liuyi
2024-10-12 5c2531930dc7c87d0c39d116c84f87b507394eb9
添加附近站点,添加消费记录,重写用户申请位置权限
已修改24个文件
已删除2个文件
920 ■■■■ 文件已修改
App.vue 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/index.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/addCard/index.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/balanceRecord/index.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/facilityList/index.vue 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/index.vue 164 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/recharge/index.vue 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/sendWater/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/userInfo/index.vue 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/images/index/card1.png 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/api/index.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/app.js 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/app.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/common/assets.js 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/config/baseUrl.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/addCard/index.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/addCard/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/address/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/index/index.js 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/index/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/index/index.wxss 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/recharge/index.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/recharge/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/pages/sendWater/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
unpackage/dist/dev/mp-weixin/static/images/index/card1.png 补丁 | 查看 | 原始文档 | blame | 历史
App.vue
@@ -1,7 +1,9 @@
<script setup>
    import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
    import { wxLoginApi } from './api/index.js'
    onLaunch(() => {
    //用户打开小程序默认授权
    function wxLogin(){
        uni.removeStorageSync('openId');
        if(!uni.getStorageSync('openId')){
            wx.login({
@@ -14,10 +16,83 @@
                  })
                },
                fail:(e) =>{
                    uni.showToast({
                        title: '登录失败,请退出重试!',
                        duration: 2000
                    });
                    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()
                    }
                },
            });
        }
    }
    onLaunch(async() => {
        await wxLogin()
        await getUserLocation()
    });
    onShow(() => {
      console.log("App Show");
api/index.js
@@ -38,8 +38,28 @@
export function setAddressDefaultApi(id){
    return request(`/userAddress/editDefault?id=${id}`,{},'GET')
}
//获取设备站点列表
//获取设备列表
export function searchFacilityApi(data){
    return request('/waterFacility/search',data,'POST')
}
//获取设备站点、营业网点列表
export function siteApi(data){
    return request('/waterDrinkingSite/getSearchList',data,'POST')
}
//修改用户信息
export function editUserInfoApi(data){
    return request('/userArchives/modify',data,'POST')
}
//微信支付
export function wxPayApi(data){
    return request('/pay/service/wxPay',data,'POST')
}
//余额记录
export function balanceChangeApi(data){
    return request('/userCapitalChange/search',data,'POST')
}
//消费记录
export function paymentChangeApi(date){
    return request(`/paymentRecords/getListByUser?date=${date}`,{},'GET')
}
pages.json
@@ -25,6 +25,12 @@
            }
        },
        {
            "path" : "pages/paymentRecord/index",
            "style": {
                "navigationStyle":"custom"
            }
        },
        {
            "path" : "pages/scanWater/index",
            "style": {
                "navigationStyle":"custom"
@@ -77,6 +83,12 @@
            "style": {
                "navigationStyle":"custom"
            }
        },
        {
            "path" : "pages/station/index",
            "style": {
                "navigationStyle":"custom"
            }
        }
    ],
    "globalStyle": {
pages/addCard/index.vue
@@ -8,11 +8,21 @@
    userPhone:'',
    remark:'',
})
function toScan(){
    // 调用二维码扫描接口
    uni.scanCode({
        scanType: ['qrCode'],
        success: function (res) {
            console.log('条码内容:' + res.result);
            form.value.waterCardNumber = res.result
        }
    });
}
async function submit(){
    await creatUserArchive(form.value).then((res) =>{
        if(res.code == 200){
            uni.showToast({
                title: '绑定成功',
                title: '添加成功!',
                image: '../../static/images/other/success.svg',
                duration:500     
            })
@@ -33,7 +43,7 @@
                    <view class="form-item card-item">
                        <text>卡号:</text>
                        <input v-model="form.waterCardNumber" placeholder="请输入卡号"/>
                        <image src="../../static/images/addCard/code.png" alt=""></image>
                        <image @click="toScan()" src="../../static/images/addCard/code.png" alt=""></image>
                    </view>
                    <view class="form-item">
                        <text>姓名:</text>
@@ -43,14 +53,6 @@
                        <text>联系方式:</text>
                        <input v-model="form.userPhone" placeholder="请输入手机号"/>
                    </view>
                    <!-- <view class="form-item">
                        <text>区域:</text>
                        <input v-model="form.waterCardNumber" placeholder="请选择区域"/>
                    </view>
                    <view class="form-item">
                        <text>地址:</text>
                        <input v-model="form.waterCardNumber" placeholder="请输入地址"/>
                    </view> -->
                    <view class="form-item">
                        <text>备注:</text>
                        <input v-model="form.remark" placeholder="请输入内容"/>
pages/balanceRecord/index.vue
@@ -1,9 +1,17 @@
<script setup>
    import { ref } from 'vue'
    import { balanceChangeApi } from '../../api/index.js'
    //返回
    function navBackTo(){
        uni.navigateBack()
    }
    async function getBalanceList(){
        await balanceChangeApi().then((res) =>{
            if(res.code == 200){
                // banlanceList.value = res.data.list
            }
        })
    }
    const banlanceList = ref([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
</script>
<template>
pages/facilityList/index.vue
@@ -10,7 +10,7 @@
                        </view>
                        <view class="item-info">
                            <view class="info-name">{{item.facilityName}}</view>
                            <view class="info-addr">
                            <view class="info-addr" @click="openMap(item.lat,item.lon)">
                                <text class="addr-text">地址:{{item.address}}</text>
                                <view>
                                    <image src="../../static/images/index/icon22.png" alt=''></image>
@@ -28,47 +28,52 @@
<script setup>
    import { onMounted, ref } from 'vue'
    import { searchFacilityApi } from '../../api/index.js'
    const deviceList = ref([
        {facilityName:'清源直饮水',address:'重庆市北碚区蔡家岗街道工业互联网产业园',distance:'30.12'},
        {facilityName:'清源直饮水',address:'重庆市北碚区蔡家岗街道',distance:'30.12'},
        {facilityName:'清源直饮水',address:'重庆市北碚区蔡家岗街道',distance:'30.12'},
    ])
    const latitudeUser = ref()
    const longitudeUser = ref()
    // 根据经纬度计算距离,根据经纬度计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度
    function getDistances(lat1, lng1, lat2, lng2) {
    const deviceList = ref([])
    const userLocation = ref()
    //获取设备信息
    async function getFacilityList(){
        await searchFacilityApi({limit:20,page:1}).then((res1) =>{
            if(res1.code == 200){
                deviceList.value = []
                res1.data.list.forEach((item) =>{
                    //计算用户与饮水设备距离
                    let preDistance = getDistances(userLocation.value.lat,userLocation.value.lon,item.latitude,item.longitude)
                    deviceList.value.push({
                        facilityName:item.facilityName,
                        address:item.address,
                        distance:preDistance.km,
                        lat:item.latitude,
                        lon:item.longitude,
                    })
                })
                console.log('deviceList.value',deviceList.value)
            }
        })
    }
    // 根据经纬度计算距离,根据经纬度计算距离,参数分别为第一点的纬度,经度(用户);第二点的纬度,经度(设备)
    function getDistances(lat1, lon1, lat2, lon2) {
        let EARTH_RADIUS = 6378.137;// 地球半径
        let radLat1 = lat1 * Math.PI / 180.0; //lat1 * Math.PI / 180.0=>弧度计算
        let radLat2 = lat2 * Math.PI / 180.0;
        let a = radLat1 - radLat2;
        let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
        let b = lon1 * Math.PI / 180.0 - lon2 * Math.PI / 180.0;
        let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
        s = s * EARTH_RADIUS; 
        s = Math.round(s * 10000) / 10000;// 输出为公里
        return { m: s * 1000, km: Number(s.toFixed(2)) }
    }
    onMounted(async() =>{
        uni.getLocation({type: 'gcj02'}).then(async(res) =>{
            console.log('位置',res)
            latitudeUser.value = res.latitude
            longitudeUser.value = res.longitude
            await searchFacilityApi({limit:20,page:1}).then((res) =>{
                if(res.code == 200){
                    // deviceList.value = []
                    res.data.list.forEach((item) =>{
                        let preDistance = getDistances(latitudeUser.value,106.4003121,item.latitude,item.longitude)
                        deviceList.value.push({
                            facilityName:item.facilityName,
                            address:item.address,
                            distance:preDistance.km
                        })
                    })
                    console.log('deviceList.value',deviceList.value)
                }
            })
    //打开地图导航
    function openMap(lat,lon){
        uni.openLocation({
            latitude: parseFloat(lat),
            longitude: parseFloat(lon),
            scale:18
        })
    }
    onMounted(async() =>{
        userLocation.value = JSON.parse(uni.getStorageSync('userLocation'))
        console.log('storage',userLocation.value)
        await getFacilityList()
    })
</script>
pages/index/index.vue
@@ -14,6 +14,7 @@
     * 会员卡相关
     */
    const cardInfo = ref({
        id:'',
        userName:'',
        headImg:'',
        
@@ -26,23 +27,26 @@
    //获取会员卡信息
    async function getInfo(){
        let res = await getUserInfo()
        console.log('res',res.data)
        cardInfo.value.userName = res.data.userInfo.userName
        cardInfo.value.headImg = res.data.userInfo.headImg
        cardInfo.value.userPhone = res.data.userInfo.userPhone
        if(res.data.userInfo.waterCardNumber){
            let res1 = await getVipInfoApi()
            cardInfo.value.waterCardNumber = res1.data.cardNumber
            if(res1.data.cardType == 1){
                cardInfo.value.balance = res1.data.balance
            }else if(res1.data.cardType == 2){
                cardInfo.value.count = res1.data.count
        if(res.code == 200){
            console.log('res',res.data)
            cardInfo.value.userName = res.data.userInfo.userName
            cardInfo.value.headImg = res.data.userInfo.headImg
            cardInfo.value.userPhone = res.data.userInfo.userPhone
            cardInfo.value.id = res.data.userInfo.id
            if(res.data.userInfo.waterCardNumber){
                let res1 = await getVipInfoApi()
                cardInfo.value.waterCardNumber = res1.data.cardNumber
                if(res1.data.cardType == 1){
                    cardInfo.value.balance = res1.data.balance
                }else if(res1.data.cardType == 2){
                    cardInfo.value.count = res1.data.count
                }
                isVip.value = true
            }else{
                isVip.value = false
            }
            isVip.value = true
        }else{
            isVip.value = false
            uni.setStorageSync('userInfo',JSON.stringify(cardInfo.value))
        }
        uni.setStorageSync('userInfo',JSON.stringify(cardInfo.value))
    }
    /**
     * 扫码取水相关
@@ -52,7 +56,6 @@
        uni.scanCode({
            scanType: ['qrCode'],
            success: function (res) {
                console.log('条码类型:' + res.scanType);
                console.log('条码内容:' + res.result);
                uni.navigateTo({
                    url:'/pages/scanWater/index'
@@ -65,7 +68,7 @@
     */
    const functionList = ref([
        {text:'余额记录',icon:'../../static/images/index/icon31.png',url:'/pages/balanceRecord/index'},
        {text:'消费记录',icon:'../../static/images/index/icon32.png',url:''},
        {text:'消费记录',icon:'../../static/images/index/icon32.png',url:'/pages/paymentRecord/index'},
        {text:'充值记录',icon:'../../static/images/index/icon33.png',url:''},
        {text:'账户共享',icon:'../../static/images/index/icon34.png',url:''},
        {text:'优惠卷',icon:'../../static/images/index/icon35.png',url:''},
@@ -80,26 +83,8 @@
            })
        }
    }
    //获取用户地理位置
    async function getUserLocation(){
        wx.getLocation({
            type: 'wgs84',
            success(res){
            const latitude = res.latitude
            const longitude = res.longitude
            const speed = res.speed
            const accuracy = res.accuracy
            },
            fail(e){
                console.log('e',e)
            }
        })
        console.log('location')
    }
    onMounted( async() =>{
        getTopHeight()
        // await getInfo()
        // await getUserLocation()
    })
    onShow(async() =>{
        await getInfo()
@@ -114,8 +99,13 @@
                    <image class="user-img" src='../../static/images/index/hend1.png' alt=''></image>
                    <text>{{cardInfo.userName}}</text>
                    <image class="user-more"src="../../static/images/index/back.png"></image>
                    <view class="user-add-card" @click="navTo('/pages/addCard/index')">
                        <image src='../../static/images/index/vip-add.png' alt=''></image>
                        <text>添加会员卡</text>
                    </view>
                </view>
                <view class="card">
                    <image class="card-bg" src="../../static/images/index/card11.png" alt=""></image>
                    <view class="card-content">
                        <view class="card-left">
                            <view class="left-top">
@@ -129,17 +119,14 @@
                        </view>
                        <view class="card-right">
                            <view class="card-right-top">
                                <view @click="navTo('/pages/addCard/index')">
                                <!-- <view @click="navTo('/pages/addCard/index')">
                                    <image src='../../static/images/index/vip-add.png' alt=''></image>
                                    <span>添加会员卡</span>
                                </view>
                                <span>金额卡</span>
                                    <text>添加会员卡</text>
                                </view> -->
                                <text>金额卡</text>
                                <text>{{cardInfo.balance}}元</text>
                            </view>
                            <view @click="navTo('/pages/recharge/index')">
                                <span>余额:</span>
                                <span class="card-balance">{{cardInfo.balance}}</span>
                                <span>元</span>
                            </view>
                            <view class="card-right-bottom" @click="navTo('/pages/recharge/index')">充值</view>
                        </view>
                    </view>
                </view>
@@ -181,7 +168,7 @@
            <view class="service-box">
                <view class="service-title"><text>服务指南</text></view>
                <view class="service-content">
                    <view class="service-bg">
                    <view class="service-bg" @click="navTo('/pages/station/index')">
                        <view>
                            <image src="../../static/images/index/icon51.png" alt=""></image>
                            <text>附近站点</text>
@@ -206,24 +193,6 @@
                </view>
            </view>
        </view>
        <!-- 微信授权弹窗 -->
        <!-- <uni-popup ref="popupRef" background-color="#fff">
            <view class="popup-content">
                <text class="popup-title">微信登录</text>
                <view class="hr"></view>
                <view class="img-box"><img src="../../static/images/login/logo.png" alt="" class="img"/></view>
                <view class="info-box">
                    <view class="info-text1">青源直饮水平台申请获取以下权限:</view>
                    <view class="hr2"></view>
                    <view class="info-text2">· 获得你的公开信息(昵称、头像、地区及性别)</view>
                    <view class="button-box">
                        <button  class="button1" @click="popupRef.close('bottom')">取消</button>
                        <button  class="button2" @click="wxLoginFn()">确定</button>
                    </view>
                </view>
            </view>
        </uni-popup> -->
    </view>
</template>
<style lang="scss" scoped>
@@ -250,6 +219,8 @@
                    padding-left:15rpx;
                    box-sizing: border-box;
                    margin-bottom: 14rpx;
                    display:flex;
                    position:relative;
                    .user-img{
                        width:90rpx;
                        height:90rpx;
@@ -263,13 +234,35 @@
                        width: 12rpx;
                        height: 28rpx;
                    }
                    .user-add-card{
                        display:flex;
                        align-items:center;
                        height:40rpx;
                        font-size:22rpx;
                        background:linear-gradient(to right,#B1D9FD,#65A7FD);
                        border-radius:50rpx;
                        padding: 0 8rpx;
                        position: absolute;
                        bottom:0;
                        right:0;
                        image{
                            width:28rpx;
                            height:28rpx;
                            margin-right:10rpx;
                        }
                    }
                }
                .card{
                    width: 100%;
                    height: 290rpx;
                    background-image: url("../../static/images/index/card1.png");
                    background-repeat: no-repeat;
                    background-size: 100% 100%;
                    position:relative;
                    .card-bg{
                        height:290rpx;
                        width:100%;
                        top:0;
                        position: absolute;
                        z-index:1;
                    }
                    .card-content{
                        width: 100%;
                        height: 100%;
@@ -280,12 +273,14 @@
                        font-weight: 300;
                        font-size: 30rpx;
                        color: #FFFFFF;
                        z-index:100;
                        .card-left{
                            height:100%;
                            display: flex;
                            justify-content:space-between;
                            flex-direction:column;
                            align-items:flex-start;
                            z-index:100;
                            .left-top{
                                display: flex;
                                flex-direction: column;
@@ -297,13 +292,15 @@
                                        height:70rpx;
                                    }
                                    text{
                                        font-weight: 300;
                                        font-weight:400;
                                        font-size: 36rpx;
                                        color: #FFFFFF;
                                    }
                                }
                                view:last-child{
                                    margin-left:10rpx;
                                    font-size: 26rpx;
                                    font-weight:500;
                                }
                            }
                        }
@@ -313,29 +310,26 @@
                            align-items:flex-end;
                            flex-direction: column;
                            height:100%;
                            z-index:100;
                            .card-right-top{
                                align-items: center;
                                align-items:flex-end;
                                display: flex;
                                justify-content: space-between;
                                view{
                                    background-color: #fff;
                                    color: #5EA1FA;
                                    border-radius:20rpx;
                                    padding: 5rpx 8rpx;
                                    align-items: center;
                                    display: flex;
                                    justify-content: space-around;
                                    font-size:24rpx;
                                    margin-right:10rpx;
                                    image{
                                            width:28rpx;
                                            height:28rpx;
                                            margin-right:10rpx;
                                    }
                                flex-direction: column;
                                font-size:34rpx;
                                text:last-child{
                                    font-weight:500;
                                }
                            }
                            .card-balance{
                                font-weight:600;
                            .card-right-bottom{
                                width:137rpx;
                                height:56rpx;
                                background:linear-gradient(to right,#65A7FD ,#B1D9FD);
                                border-radius:50rpx;
                                text-align: center;
                                line-height: 56rpx;
                                color:#212DDE;
                                font-weight: 400;
                            }
                        }
                    }
pages/recharge/index.vue
@@ -1,5 +1,6 @@
<script setup>
    import{ ref ,onMounted} from 'vue'
    import { wxPayApi } from '../../api/index.js'
    
    const choosedMoney = ref()
    const disabled = ref(true)
@@ -38,26 +39,51 @@
    const payMethod = ref()
    const payList = ref([
        // {text:"支付宝支付",value:1,checked:true,img:'../../static/images/recharge/pay.png'},
        {text:"微信支付",value:2,checked:false,img:'../../static/images/recharge/wx.png'},
        {text:"余额",value:3,checked:false,img:'../../static/images/recharge/balance.png'},
        {text:"微信支付",value:2,checked:true,img:'../../static/images/recharge/wx.png'},
        // {text:"余额",value:3,checked:false,img:'../../static/images/recharge/balance.png'},
    ])
    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
    }
    function submit(){
    // 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
    // }
    async function submit(){
        let money = ''
        if(disabled.value){
            money = choosedMoney.value
        }else{
            money = otherMoney.value
        }
        console.log('money',money)
        await wxPayApi({businessType:1,tradeAmount:money}).then((res) =>{
            console.log('reswxpay',res)
              //调用微信官方支付接口弹出付款界面,输入密码扣款
              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)
                   }else{
                      console.log('支付失败')
                   }
                 },
                 fail (res) {
                   console.log('支付失败', res)
                 }
              })
        })
    }
</script>
<template>
@@ -86,10 +112,10 @@
                    </view>
                </view>
                <view class="pay-methods">
                    <view class="money-title">
                    <!-- <view class="money-title">
                        <view class="title-icon"></view>
                        <view class="title-text">请选择支付方式</view>
                    </view>
                    </view> -->
                    <view class="methods-list">
                        <block v-for="(item,index) in payList">
                            <view class="pay-item">
@@ -97,7 +123,7 @@
                                    <image :src="item.img" alt=""></image>
                                    <view>{{item.text}}</view>
                                </view>
                                <radio :value="item.value" :checked="item.checked" @click="choosePay(index)"/>
                                <radio :value="item.value" :checked="item.checked"/>
                            </view>
                        </block>
                    </view>
pages/sendWater/index.vue
@@ -5,7 +5,7 @@
            url:'/pages/preSendWater/index'
        })
    }
    const isComplete = ref(true)
    const isComplete = ref(false)
    const isActive = ref({borderBottom:`3px solid #226AC9`})
    function swatch(val){
        if((val == 1 && !isComplete.value) || (val == 2 && isComplete.value)){
pages/userInfo/index.vue
@@ -1,7 +1,43 @@
<script setup>
    import { onMounted, ref } from 'vue'
    import { editUserInfoApi,getUserInfo } from '../../api/index.js'
    const isEdit = ref(false)
    const editForm = ref({id:'',userName:'',userPhone:''})
    const userInfo = ref(JSON.parse(uni.getStorageSync('userInfo')))
    function edit(){
        editForm.value.id = userInfo.value.id
        editForm.value.userName = userInfo.value.userName
        editForm.value.userPhone = userInfo.value.userPhone
        isEdit.value = true
    }
    function cancel(){
        isEdit.value = false
        editForm.vlaue = {id:'',userName:'',userPhone:''}
    }
    async function submitEdit(){
        await editUserInfoApi(editForm.value).then(async(res) =>{
            if(res.code == 200){
                uni.showToast({
                    title: '修改成功!',
                    duration: 2000,
                });
                await getUserInfo().then((res) =>{
                    userInfo.value.userName = res.data.userInfo.userName
                    userInfo.value.userPhone = res.data.userInfo.userPhone
                    uni.setStorageSync('userInfo',JSON.stringify(userInfo.value))
                })
            }else{
                uni.showToast({
                    title: '请求错误!请重试',
                    duration: 2000,
                    icon:'none'
                });
            }
            isEdit.value = false
            editForm.vlaue = {id:'',userName:'',userPhone:''}
        })
    }
</script>
<template>
    <view class="container">
@@ -9,13 +45,16 @@
        <view class="content">
            <view class="info-box">
                <view class="info-up">
                    <view>
                    <view class="info-img">
                        <text>头像</text>
                        <image src='../../static/logo.png' alt=''></image>
                    </view>
                    <view>
                    <view class="info-name">
                        <text>用户名称</text>
                        <text class="info-value">{{userInfo.userName}}</text>
                        <view>
                            <input v-if="isEdit" v-model="editForm.userName" placeholder="请输入新用户名"/>
                            <text v-else class="info-value">{{userInfo.userName}}</text>
                        </view>
                    </view>
                </view>
                <view class="info-list">
@@ -26,13 +65,16 @@
                    <view class="item">
                        <text>联系方式</text>
                        <view>
                            <text>{{userInfo.userPhone}}</text>
                            <image class="edit"src="../../static/images//other/more.png" alt=''></image>
                            <input v-if="isEdit" v-model="editForm.userPhone" placeholder="请输入新联系方式"/>
                            <text v-else>{{userInfo.userPhone}}</text>
                            <!-- <image class="edit"src="../../static/images//other/more.png" alt=''></image> -->
                        </view>
                    </view>
                </view>
            </view>
            <view class="subBtn">确认修改</view>
            <view v-if="!isEdit" @click="edit()" class="subBtn">修改</view>
            <view v-if="isEdit" @click="cancel()" class="btn btn1">取消</view>
            <view v-if="isEdit" @click="submitEdit()" class="btn btn2">确认修改</view>
        </view>
    </view>
</template>
@@ -47,17 +89,29 @@
            background:linear-gradient(to top,#FFFFFF,#E8EFFF);  
            padding-top:36rpx;
            position: relative;
            box-sizing: border-box;
            .info-value{
                font-size:32rpx;
                color: #777777;
            }
            .edit{
                margin-left:15rpx;
                width: 20rpx;
                height:28rpx;
            }
            // .edit{
            //     margin-left:15rpx;
            //     width: 20rpx;
            //     height:28rpx;
            // }
            .info-box{
                width: 100%;
                //该页面公用input样式
                input{
                    border-radius: 10rpx;
                    border:1px solid rgba(101, 156, 244, 0.2);
                    padding:5rpx 10rpx;
                    box-shadow: 0 0 12rpx 1rpx rgba(101, 156, 244, 0.2);
                    color: #777777;
                    height:50rpx;
                    line-height:50rpx;
                    width:300rpx;
                }
                .info-up{
                    height:308rpx;
                    width:100%;
@@ -70,7 +124,7 @@
                    box-sizing: border-box;
                    font-size: 32rpx;
                    color: #343434;
                    view:first-child{
                    .info-img{
                        width:100%;
                        display: flex;
                        justify-content:space-between;
@@ -81,7 +135,7 @@
                            border-radius: 50rpx;
                        }
                    }
                    view:last-child{
                    .info-name{
                        width:100%;
                        display: flex;
                        justify-content:space-between;
@@ -135,6 +189,31 @@
                bottom:100rpx;
                left:32rpx;
            }
            .btn{
                    width: 200rpx;
                    height: 70rpx;
                    border-radius: 32rpx;
                    text-align: center;
                    line-height: 70rpx;
                    letter-spacing:3rpx;
                    font-weight: 300;
                    font-size: 36rpx;
                    position: absolute;
                    bottom:100rpx;
            }
            .btn1{
                color:#5EA1FA;
                background:#FFFFFF;
                position: absolute;
                left:130rpx;
                border:2rpx solid #5EA1FA;
            }
            .btn2{
                color: #FFFFFF;
                background:#5EA1FA;
                position: absolute;
                right:130rpx;
            }
        }
    }
</style>
static/images/index/card1.png
Binary files differ
unpackage/dist/dev/mp-weixin/api/index.js
@@ -33,14 +33,30 @@
function searchFacilityApi(data) {
  return util_request.request("/waterFacility/search", data, "POST");
}
function siteApi(data) {
  return util_request.request("/waterDrinkingSite/getSearchList", data, "POST");
}
function editUserInfoApi(data) {
  return util_request.request("/userArchives/modify", data, "POST");
}
function wxPayApi(data) {
  return util_request.request("/pay/service/wxPay", data, "POST");
}
function paymentChangeApi(date) {
  return util_request.request(`/paymentRecords/getListByUser?date=${date}`, {}, "GET");
}
exports.creatUserArchive = creatUserArchive;
exports.deleteAddressApi = deleteAddressApi;
exports.editAddressApi = editAddressApi;
exports.editUserInfoApi = editUserInfoApi;
exports.getAddressApi = getAddressApi;
exports.getRegionApi = getRegionApi;
exports.getUserInfo = getUserInfo;
exports.getVipInfoApi = getVipInfoApi;
exports.paymentChangeApi = paymentChangeApi;
exports.searchAddress = searchAddress;
exports.searchFacilityApi = searchFacilityApi;
exports.setAddressDefaultApi = setAddressDefaultApi;
exports.siteApi = siteApi;
exports.wxLoginApi = wxLoginApi;
exports.wxPayApi = wxPayApi;
unpackage/dist/dev/mp-weixin/app.js
@@ -7,6 +7,7 @@
  "./pages/addCard/index.js";
  "./pages/userInfo/index.js";
  "./pages/balanceRecord/index.js";
  "./pages/paymentRecord/index.js";
  "./pages/scanWater/index.js";
  "./pages/recharge/index.js";
  "./pages/sendWater/index.js";
@@ -16,11 +17,12 @@
  "./pages/addressLocate/index.js";
  "./pages/success/index.js";
  "./pages/facilityList/index.js";
  "./pages/station/index.js";
}
const _sfc_main = {
  __name: "App",
  setup(__props) {
    common_vendor.onLaunch(() => {
    function wxLogin() {
      common_vendor.index.removeStorageSync("openId");
      if (!common_vendor.index.getStorageSync("openId")) {
        common_vendor.wx$1.login({
@@ -32,10 +34,78 @@
            });
          },
          fail: (e) => {
            common_vendor.index.showToast({
              title: "登录失败,请退出重试!",
              duration: 2e3
            });
            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();
    });
    common_vendor.onShow(() => {
      console.log("App Show");
unpackage/dist/dev/mp-weixin/app.json
@@ -4,6 +4,7 @@
    "pages/addCard/index",
    "pages/userInfo/index",
    "pages/balanceRecord/index",
    "pages/paymentRecord/index",
    "pages/scanWater/index",
    "pages/recharge/index",
    "pages/sendWater/index",
@@ -12,7 +13,8 @@
    "pages/addressAdd/index",
    "pages/addressLocate/index",
    "pages/success/index",
    "pages/facilityList/index"
    "pages/facilityList/index",
    "pages/station/index"
  ],
  "window": {
    "navigationStyle": "custom"
unpackage/dist/dev/mp-weixin/common/assets.js
@@ -1,39 +1,41 @@
"use strict";
const _imports_0$6 = "/static/images/index/hend1.png";
const _imports_1$3 = "/static/images/index/back.png";
const _imports_2 = "/static/images/index/code1.png";
const _imports_3 = "/static/images/index/vip-add.png";
const _imports_4 = "/static/images/index/home21.png";
const _imports_1$2 = "/static/images/index/icon22.png";
const _imports_6 = "/static/images/index/icon23.png";
const _imports_7 = "/static/images/index/bg4.png";
const _imports_8 = "/static/images/index/icon51.png";
const _imports_9 = "/static/images/index/more-info5.png";
const _imports_10 = "/static/images/index/notice5.png";
const _imports_0$5 = "/static/images/addCard/code.png";
const _imports_0$4 = "/static/logo.png";
const _imports_1$1 = "/static/images/other/more.png";
const _imports_0$7 = "/static/images/index/hend1.png";
const _imports_1$2 = "/static/images/index/back.png";
const _imports_2 = "/static/images/index/vip-add.png";
const _imports_3 = "/static/images/index/card11.png";
const _imports_4 = "/static/images/index/code1.png";
const _imports_5 = "/static/images/index/home21.png";
const _imports_1$1 = "/static/images/index/icon22.png";
const _imports_7 = "/static/images/index/icon23.png";
const _imports_8 = "/static/images/index/bg4.png";
const _imports_9 = "/static/images/index/icon51.png";
const _imports_10 = "/static/images/index/more-info5.png";
const _imports_11 = "/static/images/index/notice5.png";
const _imports_0$6 = "/static/images/addCard/code.png";
const _imports_0$5 = "/static/logo.png";
const _imports_0$4 = "/static/images/other/more.png";
const _imports_0$3 = "/static/images/address/edit.png";
const _imports_1 = "/static/images/address/delete.png";
const _imports_0$2 = "/static/images/address/expand.png";
const _imports_0$1 = "/static/images/other/success.svg";
const _imports_0 = "/static/images/addCard/back.png";
exports._imports_0 = _imports_0;
exports._imports_0$1 = _imports_0$6;
exports._imports_0$2 = _imports_0$5;
exports._imports_0$3 = _imports_0$4;
exports._imports_0$4 = _imports_0$3;
exports._imports_0$5 = _imports_0$2;
exports._imports_0$6 = _imports_0$1;
exports._imports_1 = _imports_1$3;
exports._imports_1$1 = _imports_1$2;
exports._imports_1$2 = _imports_1$1;
exports._imports_1$3 = _imports_1;
exports._imports_0$1 = _imports_0$7;
exports._imports_0$2 = _imports_0$6;
exports._imports_0$3 = _imports_0$5;
exports._imports_0$4 = _imports_0$4;
exports._imports_0$5 = _imports_0$3;
exports._imports_0$6 = _imports_0$2;
exports._imports_0$7 = _imports_0$1;
exports._imports_1 = _imports_1$2;
exports._imports_1$1 = _imports_1$1;
exports._imports_1$2 = _imports_1;
exports._imports_10 = _imports_10;
exports._imports_11 = _imports_11;
exports._imports_2 = _imports_2;
exports._imports_3 = _imports_3;
exports._imports_4 = _imports_4;
exports._imports_6 = _imports_6;
exports._imports_5 = _imports_5;
exports._imports_7 = _imports_7;
exports._imports_8 = _imports_8;
exports._imports_9 = _imports_9;
unpackage/dist/dev/mp-weixin/config/baseUrl.js
@@ -1,3 +1,3 @@
"use strict";
const BASE_URL = "http://192.168.0.105:8031";
const BASE_URL = "http://113.250.189.120:8031";
exports.BASE_URL = BASE_URL;
unpackage/dist/dev/mp-weixin/pages/addCard/index.js
@@ -19,11 +19,20 @@
      userPhone: "",
      remark: ""
    });
    function toScan() {
      common_vendor.index.scanCode({
        scanType: ["qrCode"],
        success: function(res) {
          console.log("条码内容:" + res.result);
          form.value.waterCardNumber = res.result;
        }
      });
    }
    async function submit() {
      await api_index.creatUserArchive(form.value).then((res) => {
        if (res.code == 200) {
          common_vendor.index.showToast({
            title: "绑定成功",
            title: "添加成功!",
            image: "../../static/images/other/success.svg",
            duration: 500
          });
@@ -40,14 +49,15 @@
        }),
        b: form.value.waterCardNumber,
        c: common_vendor.o(($event) => form.value.waterCardNumber = $event.detail.value),
        d: common_assets._imports_0$2,
        e: form.value.userName,
        f: common_vendor.o(($event) => form.value.userName = $event.detail.value),
        g: form.value.userPhone,
        h: common_vendor.o(($event) => form.value.userPhone = $event.detail.value),
        i: form.value.remark,
        j: common_vendor.o(($event) => form.value.remark = $event.detail.value),
        k: common_vendor.o(($event) => submit())
        d: common_vendor.o(($event) => toScan()),
        e: common_assets._imports_0$2,
        f: form.value.userName,
        g: common_vendor.o(($event) => form.value.userName = $event.detail.value),
        h: form.value.userPhone,
        i: common_vendor.o(($event) => form.value.userPhone = $event.detail.value),
        j: form.value.remark,
        k: common_vendor.o(($event) => form.value.remark = $event.detail.value),
        l: common_vendor.o(($event) => submit())
      };
    };
  }
unpackage/dist/dev/mp-weixin/pages/addCard/index.wxml
@@ -1 +1 @@
<view class="container data-v-4c5e7c86"><view class="content data-v-4c5e7c86"><navbar wx:if="{{a}}" class="data-v-4c5e7c86" u-i="4c5e7c86-0" bind:__l="__l" u-p="{{a}}"></navbar><view class="main data-v-4c5e7c86"><view class="title data-v-4c5e7c86">请填写卡及个人信息</view><view class="form data-v-4c5e7c86"><view class="form-item card-item data-v-4c5e7c86"><text class="data-v-4c5e7c86">卡号:</text><input class="data-v-4c5e7c86" placeholder="请输入卡号" value="{{b}}" bindinput="{{c}}"/><image class="data-v-4c5e7c86" src="{{d}}" alt=""></image></view><view class="form-item data-v-4c5e7c86"><text class="data-v-4c5e7c86">姓名:</text><input class="data-v-4c5e7c86" placeholder="请输入姓名" value="{{e}}" bindinput="{{f}}"/></view><view class="form-item data-v-4c5e7c86"><text class="data-v-4c5e7c86">联系方式:</text><input class="data-v-4c5e7c86" placeholder="请输入手机号" value="{{g}}" bindinput="{{h}}"/></view><view class="form-item data-v-4c5e7c86"><text class="data-v-4c5e7c86">备注:</text><input class="data-v-4c5e7c86" placeholder="请输入内容" value="{{i}}" bindinput="{{j}}"/></view></view><view class="tips data-v-4c5e7c86"><text class="data-v-4c5e7c86">1、完成实名认证,方便遗失挂失及补卡等。</text><text class="data-v-4c5e7c86">2、绑卡后,运营商可以看到您实名时填写的 姓名和电话。</text></view><view class="subBtn data-v-4c5e7c86" bindtap="{{k}}">提交信息</view></view></view></view>
<view class="container data-v-4c5e7c86"><view class="content data-v-4c5e7c86"><navbar wx:if="{{a}}" class="data-v-4c5e7c86" u-i="4c5e7c86-0" bind:__l="__l" u-p="{{a}}"></navbar><view class="main data-v-4c5e7c86"><view class="title data-v-4c5e7c86">请填写卡及个人信息</view><view class="form data-v-4c5e7c86"><view class="form-item card-item data-v-4c5e7c86"><text class="data-v-4c5e7c86">卡号:</text><input class="data-v-4c5e7c86" placeholder="请输入卡号" value="{{b}}" bindinput="{{c}}"/><image class="data-v-4c5e7c86" bindtap="{{d}}" src="{{e}}" alt=""></image></view><view class="form-item data-v-4c5e7c86"><text class="data-v-4c5e7c86">姓名:</text><input class="data-v-4c5e7c86" placeholder="请输入姓名" value="{{f}}" bindinput="{{g}}"/></view><view class="form-item data-v-4c5e7c86"><text class="data-v-4c5e7c86">联系方式:</text><input class="data-v-4c5e7c86" placeholder="请输入手机号" value="{{h}}" bindinput="{{i}}"/></view><view class="form-item data-v-4c5e7c86"><text class="data-v-4c5e7c86">备注:</text><input class="data-v-4c5e7c86" placeholder="请输入内容" value="{{j}}" bindinput="{{k}}"/></view></view><view class="tips data-v-4c5e7c86"><text class="data-v-4c5e7c86">1、完成实名认证,方便遗失挂失及补卡等。</text><text class="data-v-4c5e7c86">2、绑卡后,运营商可以看到您实名时填写的 姓名和电话。</text></view><view class="subBtn data-v-4c5e7c86" bindtap="{{l}}">提交信息</view></view></view></view>
unpackage/dist/dev/mp-weixin/pages/address/index.js
@@ -88,8 +88,8 @@
            h: common_vendor.o(($event) => deleteAddress(item.id))
          };
        }),
        c: common_assets._imports_0$4,
        d: common_assets._imports_1$3,
        c: common_assets._imports_0$5,
        d: common_assets._imports_1$2,
        e: common_vendor.o(($event) => navToAdd())
      };
    };
unpackage/dist/dev/mp-weixin/pages/index/index.js
@@ -12,6 +12,7 @@
      }
    }
    const cardInfo = common_vendor.ref({
      id: "",
      userName: "",
      headImg: "",
      waterCardNumber: "",
@@ -22,29 +23,31 @@
    const isVip = common_vendor.ref(false);
    async function getInfo() {
      let res = await api_index.getUserInfo();
      console.log("res", res.data);
      cardInfo.value.userName = res.data.userInfo.userName;
      cardInfo.value.headImg = res.data.userInfo.headImg;
      cardInfo.value.userPhone = res.data.userInfo.userPhone;
      if (res.data.userInfo.waterCardNumber) {
        let res1 = await api_index.getVipInfoApi();
        cardInfo.value.waterCardNumber = res1.data.cardNumber;
        if (res1.data.cardType == 1) {
          cardInfo.value.balance = res1.data.balance;
        } else if (res1.data.cardType == 2) {
          cardInfo.value.count = res1.data.count;
      if (res.code == 200) {
        console.log("res", res.data);
        cardInfo.value.userName = res.data.userInfo.userName;
        cardInfo.value.headImg = res.data.userInfo.headImg;
        cardInfo.value.userPhone = res.data.userInfo.userPhone;
        cardInfo.value.id = res.data.userInfo.id;
        if (res.data.userInfo.waterCardNumber) {
          let res1 = await api_index.getVipInfoApi();
          cardInfo.value.waterCardNumber = res1.data.cardNumber;
          if (res1.data.cardType == 1) {
            cardInfo.value.balance = res1.data.balance;
          } else if (res1.data.cardType == 2) {
            cardInfo.value.count = res1.data.count;
          }
          isVip.value = true;
        } else {
          isVip.value = false;
        }
        isVip.value = true;
      } else {
        isVip.value = false;
        common_vendor.index.setStorageSync("userInfo", JSON.stringify(cardInfo.value));
      }
      common_vendor.index.setStorageSync("userInfo", JSON.stringify(cardInfo.value));
    }
    function toScan() {
      common_vendor.index.scanCode({
        scanType: ["qrCode"],
        success: function(res) {
          console.log("条码类型:" + res.scanType);
          console.log("条码内容:" + res.result);
          common_vendor.index.navigateTo({
            url: "/pages/scanWater/index"
@@ -54,7 +57,7 @@
    }
    const functionList = common_vendor.ref([
      { text: "余额记录", icon: "../../static/images/index/icon31.png", url: "/pages/balanceRecord/index" },
      { text: "消费记录", icon: "../../static/images/index/icon32.png", url: "" },
      { text: "消费记录", icon: "../../static/images/index/icon32.png", url: "/pages/paymentRecord/index" },
      { text: "充值记录", icon: "../../static/images/index/icon33.png", url: "" },
      { text: "账户共享", icon: "../../static/images/index/icon34.png", url: "" },
      { text: "优惠卷", icon: "../../static/images/index/icon35.png", url: "" },
@@ -80,22 +83,23 @@
        a: common_assets._imports_0$1,
        b: common_vendor.t(cardInfo.value.userName),
        c: common_assets._imports_1,
        d: common_vendor.o(($event) => navTo("/pages/userInfo/index")),
        e: common_assets._imports_2,
        f: common_vendor.t(cardInfo.value.waterCardNumber),
        g: common_vendor.t(cardInfo.value.userPhone),
        h: common_assets._imports_3,
        i: common_vendor.o(($event) => navTo("/pages/addCard/index")),
        j: common_vendor.t(cardInfo.value.balance),
        k: common_vendor.o(($event) => navTo("/pages/recharge/index")),
        l: topHeight.value + "rpx",
        m: common_assets._imports_4,
        n: common_vendor.o(($event) => navTo("/pages/sendWater/index")),
        o: common_assets._imports_1$1,
        p: common_vendor.o(($event) => navTo("/pages/facilityList/index")),
        q: common_assets._imports_6,
        r: common_vendor.o(($event) => toScan()),
        s: common_vendor.f(functionList.value, (item, index, i0) => {
        d: common_assets._imports_2,
        e: common_vendor.o(($event) => navTo("/pages/addCard/index")),
        f: common_vendor.o(($event) => navTo("/pages/userInfo/index")),
        g: common_assets._imports_3,
        h: common_assets._imports_4,
        i: common_vendor.t(cardInfo.value.waterCardNumber),
        j: common_vendor.t(cardInfo.value.userPhone),
        k: common_vendor.t(cardInfo.value.balance),
        l: common_vendor.o(($event) => navTo("/pages/recharge/index")),
        m: topHeight.value + "rpx",
        n: common_assets._imports_5,
        o: common_vendor.o(($event) => navTo("/pages/sendWater/index")),
        p: common_assets._imports_1$1,
        q: common_vendor.o(($event) => navTo("/pages/facilityList/index")),
        r: common_assets._imports_7,
        s: common_vendor.o(($event) => toScan()),
        t: common_vendor.f(functionList.value, (item, index, i0) => {
          return {
            a: item.icon,
            b: common_vendor.t(item.text),
@@ -103,11 +107,12 @@
            d: index
          };
        }),
        t: common_assets._imports_7,
        v: common_assets._imports_8,
        w: common_assets._imports_9,
        x: common_assets._imports_10,
        y: common_assets._imports_9
        y: common_vendor.o(($event) => navTo("/pages/station/index")),
        z: common_assets._imports_11,
        A: common_assets._imports_10
      };
    };
  }
unpackage/dist/dev/mp-weixin/pages/index/index.wxml
@@ -1 +1 @@
<view class="container data-v-1cf27b2a"><view class="content data-v-1cf27b2a"><view class="card-box data-v-1cf27b2a" style="{{'padding-top:' + l}}"><view class="user-info data-v-1cf27b2a" bindtap="{{d}}"><image class="user-img data-v-1cf27b2a" src="{{a}}" alt=""></image><text class="data-v-1cf27b2a">{{b}}</text><image class="user-more data-v-1cf27b2a" src="{{c}}"></image></view><view class="card data-v-1cf27b2a"><view class="card-content data-v-1cf27b2a"><view class="card-left data-v-1cf27b2a"><view class="left-top data-v-1cf27b2a"><view class="data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{e}}" alt=""></image><text class="data-v-1cf27b2a">会员卡</text></view><view class="data-v-1cf27b2a">ID:{{f}}</view></view><view class="left-bottom data-v-1cf27b2a">电话:{{g}}</view></view><view class="card-right data-v-1cf27b2a"><view class="card-right-top data-v-1cf27b2a"><view class="data-v-1cf27b2a" bindtap="{{i}}"><image class="data-v-1cf27b2a" src="{{h}}" alt=""></image><label class="data-v-1cf27b2a">添加会员卡</label></view><label class="data-v-1cf27b2a">金额卡</label></view><view class="data-v-1cf27b2a" bindtap="{{k}}"><label class="data-v-1cf27b2a">余额:</label><label class="card-balance data-v-1cf27b2a">{{j}}</label><label class="data-v-1cf27b2a">元</label></view></view></view></view></view><view class="function-box1 data-v-1cf27b2a"><view class="box1-bg box1-one data-v-1cf27b2a" bindtap="{{n}}"><image class="data-v-1cf27b2a" src="{{m}}" alt=""></image><view class="data-v-1cf27b2a">送水到家</view></view><view bindtap="{{p}}" class="box1-bg box1-two data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{o}}" alt=""></image><view class="data-v-1cf27b2a">附近设备</view></view><view class="box1-bg box1-three data-v-1cf27b2a" bindtap="{{r}}"><image class="data-v-1cf27b2a" src="{{q}}" alt=""></image><view class="data-v-1cf27b2a">扫码取水</view></view></view><view class="function-box2 data-v-1cf27b2a"><view class="box2-title data-v-1cf27b2a"><text class="data-v-1cf27b2a">功能列表</text></view><view class="box2-content data-v-1cf27b2a"><block wx:for="{{s}}" wx:for-item="item" wx:key="d"><view class="box2-item data-v-1cf27b2a" bindtap="{{item.c}}"><image class="data-v-1cf27b2a" src="{{item.a}}" alt=""></image><view class="box2-item-text data-v-1cf27b2a">{{item.b}}</view></view></block></view></view><view class="advertisement-box data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{t}}" alt=""></image></view><view class="service-box data-v-1cf27b2a"><view class="service-title data-v-1cf27b2a"><text class="data-v-1cf27b2a">服务指南</text></view><view class="service-content data-v-1cf27b2a"><view class="service-bg data-v-1cf27b2a"><view class="data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{v}}" alt=""></image><text class="data-v-1cf27b2a">附近站点</text></view><view class="service-info data-v-1cf27b2a">蔡家供水服务中心正在营业中……</view><view class="data-v-1cf27b2a"><text class="data-v-1cf27b2a">查看更多</text><image class="data-v-1cf27b2a" src="{{w}}" alt=""></image></view></view><view class="service-bg data-v-1cf27b2a"><view class="data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{x}}" alt=""></image><text class="data-v-1cf27b2a">公示公告</text></view><view class="service-info data-v-1cf27b2a">停水公告的部分摘要的内容展示……</view><view class="data-v-1cf27b2a"><text class="data-v-1cf27b2a">查看更多</text><image class="data-v-1cf27b2a" src="{{y}}" alt=""></image></view></view></view></view></view></view>
<view class="container data-v-1cf27b2a"><view class="content data-v-1cf27b2a"><view class="card-box data-v-1cf27b2a" style="{{'padding-top:' + m}}"><view class="user-info data-v-1cf27b2a" bindtap="{{f}}"><image class="user-img data-v-1cf27b2a" src="{{a}}" alt=""></image><text class="data-v-1cf27b2a">{{b}}</text><image class="user-more data-v-1cf27b2a" src="{{c}}"></image><view class="user-add-card data-v-1cf27b2a" bindtap="{{e}}"><image class="data-v-1cf27b2a" src="{{d}}" alt=""></image><text class="data-v-1cf27b2a">添加会员卡</text></view></view><view class="card data-v-1cf27b2a"><image class="card-bg data-v-1cf27b2a" src="{{g}}" alt=""></image><view class="card-content data-v-1cf27b2a"><view class="card-left data-v-1cf27b2a"><view class="left-top data-v-1cf27b2a"><view class="data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{h}}" alt=""></image><text class="data-v-1cf27b2a">会员卡</text></view><view class="data-v-1cf27b2a">ID:{{i}}</view></view><view class="left-bottom data-v-1cf27b2a">电话:{{j}}</view></view><view class="card-right data-v-1cf27b2a"><view class="card-right-top data-v-1cf27b2a"><text class="data-v-1cf27b2a">金额卡</text><text class="data-v-1cf27b2a">{{k}}元</text></view><view class="card-right-bottom data-v-1cf27b2a" bindtap="{{l}}">充值</view></view></view></view></view><view class="function-box1 data-v-1cf27b2a"><view class="box1-bg box1-one data-v-1cf27b2a" bindtap="{{o}}"><image class="data-v-1cf27b2a" src="{{n}}" alt=""></image><view class="data-v-1cf27b2a">送水到家</view></view><view bindtap="{{q}}" class="box1-bg box1-two data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{p}}" alt=""></image><view class="data-v-1cf27b2a">附近设备</view></view><view class="box1-bg box1-three data-v-1cf27b2a" bindtap="{{s}}"><image class="data-v-1cf27b2a" src="{{r}}" alt=""></image><view class="data-v-1cf27b2a">扫码取水</view></view></view><view class="function-box2 data-v-1cf27b2a"><view class="box2-title data-v-1cf27b2a"><text class="data-v-1cf27b2a">功能列表</text></view><view class="box2-content data-v-1cf27b2a"><block wx:for="{{t}}" wx:for-item="item" wx:key="d"><view class="box2-item data-v-1cf27b2a" bindtap="{{item.c}}"><image class="data-v-1cf27b2a" src="{{item.a}}" alt=""></image><view class="box2-item-text data-v-1cf27b2a">{{item.b}}</view></view></block></view></view><view class="advertisement-box data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{v}}" alt=""></image></view><view class="service-box data-v-1cf27b2a"><view class="service-title data-v-1cf27b2a"><text class="data-v-1cf27b2a">服务指南</text></view><view class="service-content data-v-1cf27b2a"><view class="service-bg data-v-1cf27b2a" bindtap="{{y}}"><view class="data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{w}}" alt=""></image><text class="data-v-1cf27b2a">附近站点</text></view><view class="service-info data-v-1cf27b2a">蔡家供水服务中心正在营业中……</view><view class="data-v-1cf27b2a"><text class="data-v-1cf27b2a">查看更多</text><image class="data-v-1cf27b2a" src="{{x}}" alt=""></image></view></view><view class="service-bg data-v-1cf27b2a"><view class="data-v-1cf27b2a"><image class="data-v-1cf27b2a" src="{{z}}" alt=""></image><text class="data-v-1cf27b2a">公示公告</text></view><view class="service-info data-v-1cf27b2a">停水公告的部分摘要的内容展示……</view><view class="data-v-1cf27b2a"><text class="data-v-1cf27b2a">查看更多</text><image class="data-v-1cf27b2a" src="{{A}}" alt=""></image></view></view></view></view></view></view>
unpackage/dist/dev/mp-weixin/pages/index/index.wxss
@@ -48,6 +48,8 @@
  padding-left: 15rpx;
  box-sizing: border-box;
  margin-bottom: 14rpx;
  display: flex;
  position: relative;
}
.container .content .card-box .user-info .user-img.data-v-1cf27b2a {
  width: 90rpx;
@@ -62,12 +64,34 @@
  width: 12rpx;
  height: 28rpx;
}
.container .content .card-box .user-info .user-add-card.data-v-1cf27b2a {
  display: flex;
  align-items: center;
  height: 40rpx;
  font-size: 22rpx;
  background: linear-gradient(to right, #B1D9FD, #65A7FD);
  border-radius: 50rpx;
  padding: 0 8rpx;
  position: absolute;
  bottom: 0;
  right: 0;
}
.container .content .card-box .user-info .user-add-card image.data-v-1cf27b2a {
  width: 28rpx;
  height: 28rpx;
  margin-right: 10rpx;
}
.container .content .card-box .card.data-v-1cf27b2a {
  width: 100%;
  height: 290rpx;
  background-image: url("data:image/png;base64,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");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  position: relative;
}
.container .content .card-box .card .card-bg.data-v-1cf27b2a {
  height: 290rpx;
  width: 100%;
  top: 0;
  position: absolute;
  z-index: 1;
}
.container .content .card-box .card .card-content.data-v-1cf27b2a {
  width: 100%;
@@ -79,6 +103,7 @@
  font-weight: 300;
  font-size: 30rpx;
  color: #FFFFFF;
  z-index: 100;
}
.container .content .card-box .card .card-content .card-left.data-v-1cf27b2a {
  height: 100%;
@@ -86,6 +111,7 @@
  justify-content: space-between;
  flex-direction: column;
  align-items: flex-start;
  z-index: 100;
}
.container .content .card-box .card .card-content .card-left .left-top.data-v-1cf27b2a {
  display: flex;
@@ -100,12 +126,14 @@
  height: 70rpx;
}
.container .content .card-box .card .card-content .card-left .left-top view:first-child text.data-v-1cf27b2a {
  font-weight: 300;
  font-weight: 400;
  font-size: 36rpx;
  color: #FFFFFF;
}
.container .content .card-box .card .card-content .card-left .left-top view.data-v-1cf27b2a:last-child {
  margin-left: 10rpx;
  font-size: 26rpx;
  font-weight: 500;
}
.container .content .card-box .card .card-content .card-right.data-v-1cf27b2a {
  display: flex;
@@ -113,30 +141,27 @@
  align-items: flex-end;
  flex-direction: column;
  height: 100%;
  z-index: 100;
}
.container .content .card-box .card .card-content .card-right .card-right-top.data-v-1cf27b2a {
  align-items: center;
  align-items: flex-end;
  display: flex;
  justify-content: space-between;
  flex-direction: column;
  font-size: 34rpx;
}
.container .content .card-box .card .card-content .card-right .card-right-top view.data-v-1cf27b2a {
  background-color: #fff;
  color: #5EA1FA;
  border-radius: 20rpx;
  padding: 5rpx 8rpx;
  align-items: center;
  display: flex;
  justify-content: space-around;
  font-size: 24rpx;
  margin-right: 10rpx;
.container .content .card-box .card .card-content .card-right .card-right-top text.data-v-1cf27b2a:last-child {
  font-weight: 500;
}
.container .content .card-box .card .card-content .card-right .card-right-top view image.data-v-1cf27b2a {
  width: 28rpx;
  height: 28rpx;
  margin-right: 10rpx;
}
.container .content .card-box .card .card-content .card-right .card-balance.data-v-1cf27b2a {
  font-weight: 600;
.container .content .card-box .card .card-content .card-right .card-right-bottom.data-v-1cf27b2a {
  width: 137rpx;
  height: 56rpx;
  background: linear-gradient(to right, #65A7FD, #B1D9FD);
  border-radius: 50rpx;
  text-align: center;
  line-height: 56rpx;
  color: #212DDE;
  font-weight: 400;
}
.container .content .function-box1.data-v-1cf27b2a {
  width: 100%;
unpackage/dist/dev/mp-weixin/pages/recharge/index.js
@@ -1,5 +1,6 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const api_index = require("../../api/index.js");
if (!Array) {
  const _easycom_navbar2 = common_vendor.resolveComponent("navbar");
  _easycom_navbar2();
@@ -42,29 +43,46 @@
      }
    }
    const otherMoney = common_vendor.ref();
    const payMethod = common_vendor.ref();
    common_vendor.ref();
    const payList = common_vendor.ref([
      // {text:"支付宝支付",value:1,checked:true,img:'../../static/images/recharge/pay.png'},
      { text: "微信支付", value: 2, checked: false, img: "../../static/images/recharge/wx.png" },
      { text: "余额", value: 3, checked: false, img: "../../static/images/recharge/balance.png" }
      { text: "微信支付", value: 2, checked: true, img: "../../static/images/recharge/wx.png" }
      // {text:"余额",value:3,checked:false,img:'../../static/images/recharge/balance.png'},
    ]);
    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;
    }
    function submit() {
    async function submit() {
      let money = "";
      if (disabled.value) {
        money = choosedMoney.value;
      } else {
        money = otherMoney.value;
      }
      console.log("money", money);
      await api_index.wxPayApi({ businessType: 1, tradeAmount: money }).then((res) => {
        console.log("reswxpay", res);
        common_vendor.wx$1.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(res2) {
            if (res2.errMsg == "requestPayment:ok") {
              console.log("支付成功", res2);
            } else {
              console.log("支付失败");
            }
          },
          fail(res2) {
            console.log("支付失败", res2);
          }
        });
      });
    }
    return (_ctx, _cache) => {
      return {
@@ -88,8 +106,7 @@
            a: item.img,
            b: common_vendor.t(item.text),
            c: item.value,
            d: item.checked,
            e: common_vendor.o(($event) => choosePay(index))
            d: item.checked
          };
        }),
        h: common_vendor.o(($event) => submit())
unpackage/dist/dev/mp-weixin/pages/recharge/index.wxml
@@ -1 +1 @@
<view class="container data-v-f06186df"><navbar wx:if="{{a}}" class="data-v-f06186df" u-i="f06186df-0" bind:__l="__l" u-p="{{a}}"></navbar><view class="content data-v-f06186df"><view class="main data-v-f06186df"><view class="money data-v-f06186df"><view class="money-title data-v-f06186df"><view class="title-icon data-v-f06186df"></view><view class="title-text data-v-f06186df">充值金额</view></view><view class="money-list data-v-f06186df"><block wx:for="{{b}}" wx:for-item="item" wx:key="d"><view class="money-box data-v-f06186df" style="{{item.b}}" bindtap="{{item.c}}">¥{{item.a}}</view></block></view></view><view class="other-money data-v-f06186df"><view class="money-title data-v-f06186df"><view class="title-icon data-v-f06186df"></view><view class="title-text data-v-f06186df">其他金额</view></view><view class="money-input data-v-f06186df"><input class="data-v-f06186df" disabled="{{c}}" focus="{{d}}" placeholder="请输入其他金额" value="{{e}}" bindinput="{{f}}"/></view></view><view class="pay-methods data-v-f06186df"><view class="money-title data-v-f06186df"><view class="title-icon data-v-f06186df"></view><view class="title-text data-v-f06186df">请选择支付方式</view></view><view class="methods-list data-v-f06186df"><block wx:for="{{g}}" wx:for-item="item"><view class="pay-item data-v-f06186df"><view class="pay-item-right data-v-f06186df"><image class="data-v-f06186df" src="{{item.a}}" alt=""></image><view class="data-v-f06186df">{{item.b}}</view></view><radio class="data-v-f06186df" value="{{item.c}}" checked="{{item.d}}" bindtap="{{item.e}}"/></view></block></view></view></view><view class="submit-btn data-v-f06186df" bindtap="{{h}}">立即充值</view></view></view>
<view class="container data-v-f06186df"><navbar wx:if="{{a}}" class="data-v-f06186df" u-i="f06186df-0" bind:__l="__l" u-p="{{a}}"></navbar><view class="content data-v-f06186df"><view class="main data-v-f06186df"><view class="money data-v-f06186df"><view class="money-title data-v-f06186df"><view class="title-icon data-v-f06186df"></view><view class="title-text data-v-f06186df">充值金额</view></view><view class="money-list data-v-f06186df"><block wx:for="{{b}}" wx:for-item="item" wx:key="d"><view class="money-box data-v-f06186df" style="{{item.b}}" bindtap="{{item.c}}">¥{{item.a}}</view></block></view></view><view class="other-money data-v-f06186df"><view class="money-title data-v-f06186df"><view class="title-icon data-v-f06186df"></view><view class="title-text data-v-f06186df">其他金额</view></view><view class="money-input data-v-f06186df"><input class="data-v-f06186df" disabled="{{c}}" focus="{{d}}" placeholder="请输入其他金额" value="{{e}}" bindinput="{{f}}"/></view></view><view class="pay-methods data-v-f06186df"><view class="methods-list data-v-f06186df"><block wx:for="{{g}}" wx:for-item="item"><view class="pay-item data-v-f06186df"><view class="pay-item-right data-v-f06186df"><image class="data-v-f06186df" src="{{item.a}}" alt=""></image><view class="data-v-f06186df">{{item.b}}</view></view><radio class="data-v-f06186df" value="{{item.c}}" checked="{{item.d}}"/></view></block></view></view></view><view class="submit-btn data-v-f06186df" bindtap="{{h}}">立即充值</view></view></view>
unpackage/dist/dev/mp-weixin/pages/sendWater/index.js
@@ -16,7 +16,7 @@
        url: "/pages/preSendWater/index"
      });
    }
    const isComplete = common_vendor.ref(true);
    const isComplete = common_vendor.ref(false);
    const isActive = common_vendor.ref({ borderBottom: `3px solid #226AC9` });
    function swatch(val) {
      if (val == 1 && !isComplete.value || val == 2 && isComplete.value)
unpackage/dist/dev/mp-weixin/static/images/index/card1.png
Binary files differ