修改bug

This commit is contained in:
zhouyanli
2026-07-28 11:11:39 +08:00
parent ebc8cfa3cb
commit a9a5afaf26
7 changed files with 145 additions and 230 deletions

View File

@@ -1,7 +1,7 @@
let baseUrl = ''; let baseUrl = '';
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
baseUrl = 'http://192.168.1.222:8085'; // 开发环境 // baseUrl = 'http://192.168.1.222:8080'; // 开发环境
// baseUrl = 'http://wuyeapi.ckdzkj.com'; baseUrl = 'https://wuyeapi.ckdzkj.com';
} else { } else {
baseUrl = 'https://wuyeapi.ckdzkj.com'; // 生产环境 baseUrl = 'https://wuyeapi.ckdzkj.com'; // 生产环境
} }

View File

@@ -13,14 +13,7 @@
<uni-easyinput class="input-content" type="number" v-model="phoneNumber" <uni-easyinput class="input-content" type="number" v-model="phoneNumber"
placeholder="请输入手机号" :inputBorder="false" maxlength="11" :placeholderStyle="placeholderStyle"> placeholder="请输入手机号" :inputBorder="false" maxlength="11" :placeholderStyle="placeholderStyle">
</uni-easyinput> </uni-easyinput>
<!-- <input
class="input-content"
type="number"
placeholder="请输入手机号"
v-model="phoneNumber"
maxlength="11"
@input="checkForm"
/> -->
</view> </view>
<!-- 验证码输入框 + 获取验证码按钮 --> <!-- 验证码输入框 + 获取验证码按钮 -->
@@ -277,15 +270,6 @@ const doLogin = () => {
}); });
}) })
// 模拟登录请求
// uni.showLoading({
// title: '登录中...'
// });
// uni.showToast({
// title:"登录成功",
// icon:'success'
// })
// 登录成功后上报推送 CID // 登录成功后上报推送 CID
// #ifdef APP-PLUS // #ifdef APP-PLUS
const cid = uni.getStorageSync('push_cid') const cid = uni.getStorageSync('push_cid')

View File

@@ -130,8 +130,11 @@
<text class="label">手机号码</text> <text class="label">手机号码</text>
<input class="input" v-model="form.phone" placeholder="请输入手机号" placeholder-class="ph" <input class="input" v-model="form.phone" placeholder="请输入手机号" placeholder-class="ph"
type="tel" /> type="tel" />
<button class="code-btn" :disabled="cd>0" @click="sendCode"> <!-- <button class="code-btn" :disabled="cd>0" @click="sendCode">
{{ cd > 0 ? cd+'s' : '获取验证码' }} {{ cd > 0 ? cd+'s' : '获取验证码' }}
</button> -->
<button class="get-verify-btn" :disabled=" countDown > 0 || !canGetVerify" @click="getVerifyCode">
{{ countDown > 0 ? `${countDown}s后重新获取` : '获取验证码' }}
</button> </button>
</view> </view>
@@ -237,7 +240,9 @@
import { import {
ref, ref,
onMounted, onMounted,
reactive reactive,
onUnmounted,
computed
} from 'vue' } from 'vue'
import { import {
onReachBottom, onReachBottom,
@@ -350,8 +355,8 @@
const type = ref('') const type = ref('')
const currentStep = ref(0) const currentStep = ref(0)
const showPopup = ref(false) const showPopup = ref(false)
const cd = ref(0) const countDown = ref(0)
const timer = ref(null) let timer = null
const showCardType = ref(false) const showCardType = ref(false)
const showRelation = ref(false) const showRelation = ref(false)
@@ -363,6 +368,54 @@
const idCardBackUpload = useImageUpload({ const idCardBackUpload = useImageUpload({
uploadUrl: '/api/resident/file/uploadImage' uploadUrl: '/api/resident/file/uploadImage'
}) })
// ========== 计算属性 ==========
// 是否可以获取验证码(手机号格式正确)
const canGetVerify = computed(() => {
// 手机号正则11位数字以1开头
const phoneReg = /^1[3-9]\d{9}$/;
return phoneReg.test(form.phone);
});
// 获取验证码
const getVerifyCode = () => {
if (!canGetVerify.value) return;
let params = {
phone:form.phone,
scene:'house_bind'
}
uni.showLoading({ title: '发送中...', mask: true });
getHouseAuthSendSmsCode(params).then(res =>{
if(res.code === 200){
uni.hideLoading();
uni.showToast({
title: '验证码已发送',
icon: 'success'
});
// 开始60秒倒计时
if (timer) clearInterval(timer);
countDown.value = 60;
timer = setInterval(() => {
countDown.value--;
if (countDown.value <= 0) {
clearInterval(timer);
timer = null;
}
}, 1000);
}else{
uni.showToast({
title: '验证码发送失败',
icon: 'none'
});
}
}).catch(err => {
uni.hideLoading();
uni.showToast({
title: err.msg||'网络异常',
icon: 'none'
});
})
};
// ==================== 获取列表数据 ==================== // ==================== 获取列表数据 ====================
const getDetail = async () => { const getDetail = async () => {
@@ -372,7 +425,7 @@
}) })
const data = res const data = res
console.log(data); // console.log('列表返回数据',data);
if (data.code === 200) { if (data.code === 200) {
uni.setStorageSync('communityName', data.data.villageName) uni.setStorageSync('communityName', data.data.villageName)
uni.setStorageSync('buildingName', data.data.buildingName) uni.setStorageSync('buildingName', data.data.buildingName)
@@ -381,7 +434,7 @@
uni.setStorageSync('houseNumberName', data.data.houseNo) uni.setStorageSync('houseNumberName', data.data.houseNo)
uni.setStorageSync('communityId', data.data.villageId) uni.setStorageSync('communityId', data.data.villageId)
uni.setStorageSync('buildingId', data.data.buildingId) uni.setStorageSync('buildingId', data.data.buildingId)
uni.setStorageSync('unitId', data.data.unitNo) uni.setStorageSync('unitId', data.data.unitNoId)
uni.setStorageSync('floorId', data.data.floorNo) uni.setStorageSync('floorId', data.data.floorNo)
uni.setStorageSync('houseNumberId', data.data.houseId) uni.setStorageSync('houseNumberId', data.data.houseId)
uni.setStorageSync('houseStatus', data.data.houseStatus) uni.setStorageSync('houseStatus', data.data.houseStatus)
@@ -491,12 +544,6 @@
} }
const openCardType = () => { const openCardType = () => {
showCardType.value = true showCardType.value = true
} }
@@ -519,42 +566,6 @@
showPopup.value = false; showPopup.value = false;
upDataListNum.value++ upDataListNum.value++
} }
const sendCode = () => {
if (!/^1[3-9]\d{9}$/.test(form.phone)) {
return uni.showToast({
title: '手机号格式错误',
icon: 'none'
})
}
cd.value = 60
timer.value = setInterval(() => {
cd.value--
if (cd.value <= 0) clearInterval(timer)
}, 1000)
let params = {
phone: form.phone,
scene: "house_bind"
}
getHouseAuthSendSmsCode(params).then(res => {
if (res.code === 200) {
uni.showToast({
title: '发送成功',
icon: 'success'
});
} else {
uni.showToast({
title: res.msg,
icon: 'error'
});
}
}).catch(err => {
uni.showToast({
title: err.msg || '发送失败',
icon: 'none'
});
})
}
// 下一步 // 下一步
const goNext = () => { const goNext = () => {
@@ -745,7 +756,7 @@
const updateMethod = async (params) => { const updateMethod = async (params) => {
await upDateMyHouse(params).then(res => { await upDateMyHouse(params).then(res => {
console.log('33333', res) // console.log('33333', res)
if (res.code === 200) { if (res.code === 200) {
uni.hideLoading(); uni.hideLoading();
uni.showToast({ uni.showToast({
@@ -771,9 +782,6 @@
}) })
} }
// 选择项点击事件可替换为picker/弹窗选择) // 选择项点击事件可替换为picker/弹窗选择)
const selectItem = (type) => { const selectItem = (type) => {
console.log(type); console.log(type);
@@ -859,6 +867,13 @@
formData.isDefault = e.detail.value formData.isDefault = e.detail.value
uni.setStorageSync('houseIsDefault', e.detail.value) uni.setStorageSync('houseIsDefault', e.detail.value)
} }
// ========== 生命周期 ==========
// 页面卸载时清除定时器
onUnmounted(() => {
if (timer) {
clearInterval(timer);
}
});
const goBack = () => { const goBack = () => {
uni.removeStorageSync('communityId'); uni.removeStorageSync('communityId');
@@ -1018,6 +1033,32 @@
font-size: 28rpx; font-size: 28rpx;
color: #333; color: #333;
} }
/* 获取验证码按钮 */
.get-verify-btn {
position: absolute;
right: 10rpx;
top: 50%;
transform: translateY(-50%);
width: 200rpx;
height: 70rpx;
line-height: 70rpx;
background-color: #007aff;
color: #fff;
border-radius: 35rpx;
font-size: 28rpx;
padding: 0;
margin: 0;
}
/* 获取验证码按钮禁用状态 */
.get-verify-btn:disabled {
background-color: #ccc;
color: #fff;
border-radius: 50px;
}
.get-verify-btn::after{
border-radius: 50px;
}
/* .item-arrow { /* .item-arrow {
font-size: 40rpx; font-size: 40rpx;

View File

@@ -148,13 +148,13 @@
uni.setStorageSync('houseIsDefault', e.detail.value) uni.setStorageSync('houseIsDefault', e.detail.value)
uni.showToast({ uni.showToast({
title: '设置默认房屋成功', title: '设置默认房屋成功',
icon: 'success' icon: 'none'
}); });
} else { } else {
// uni.hideLoading(); // uni.hideLoading();
uni.showToast({ uni.showToast({
title: `${res.msg}`, title: res.msg,
icon: 'error' icon: 'none'
}); });
} }
} catch (err) { } catch (err) {

View File

@@ -108,12 +108,6 @@
onLoad onLoad
} from '@dcloudio/uni-app' } from '@dcloudio/uni-app'
import {
getPushSingle
} from '/pageSubPack/api/api.js'
import {
getBankMiniProgramParams
} from '/pageSubPack/api/apiSub.js'
// 响应式数据 // 响应式数据
const outstandingPayment = ref(true) const outstandingPayment = ref(true)
@@ -172,14 +166,7 @@
} }
// 立即缴费 — 通过微信拉起日照银行小程序进行支付 // 立即缴费 — 通过微信拉起日照银行小程序进行支付
const handlePay = async () => { const handlePay = () => {
// if (!payNum.value || Number(payNum.value) <= 0) {
// uni.showToast({
// title: '请输入正确的缴费金额',
// icon: 'none'
// })
// return
// }
const amount = arrearsAmount.value const amount = arrearsAmount.value
try { try {
@@ -189,45 +176,25 @@
const deviceTypeMap = { '电费': '1', '水费': '2' } const deviceTypeMap = { '电费': '1', '水费': '2' }
const mappedDeviceType = deviceTypeMap[paymentItem.type] || paymentItem.deviceType || '' const mappedDeviceType = deviceTypeMap[paymentItem.type] || paymentItem.deviceType || ''
const res = await getBankMiniProgramParams({ // 直接从本地参数拼 path 查询字符串传给支付小程序,不走接口
const token = uni.getStorageSync('token') || ''
const params = {
acct: uni.getStorageSync('userId'), acct: uni.getStorageSync('userId'),
orderType: '10', orderType: '20',
orderAmount: String(Math.round(Number(amount) * 100)),
// orderAmount: String(Math.round(Number(arrearsAmount.value) * 100)),
deviceCode: paymentItem.deviceCode || '', deviceCode: paymentItem.deviceCode || '',
deviceType: mappedDeviceType, deviceType: mappedDeviceType,
billId: paymentItem.billId || '', billId: paymentItem.billId || '',
residentUserId: uni.getStorageSync('userId'), residentUserId: uni.getStorageSync('userId'),
goodName: paymentItem.name || switchStatus(paymentItem.type) || '', // goodName: paymentItem.name || switchStatus(paymentItem.type) || '',
remark:'服务费' // remark: '服务费',
}) token: token
}
const queryString = Object.keys(params).map(k =>
encodeURIComponent(k) + '=' + encodeURIComponent(params[k])
).join('&')
uni.hideLoading() uni.hideLoading()
console.log('传入中间小程序的path参数:', queryString)
if (res.code !== 200 || !res.data) {
uni.showToast({ title: res.msg || '获取支付参数失败', icon: 'none' })
return
}
console.log('resres返回数据', res)
// console.log('resres', res.data)
const { appId, path, extraData } = res.data
console.log('navigateToMiniProgram参数:', { appId, path, extraData })
// 校验必要参数
if (!appId) {
console.error('缺少appId无法拉起支付小程序', res.data)
uni.showToast({ title: '获取支付参数失败缺少appId', icon: 'none' })
return
}
// 把支付金额和token拼接到 extraData 查询字符串中传入中间小程序,实现免登录
const token = uni.getStorageSync('token') || ''
const payAmountStr = String(payAmount.value)
const orderAmountStr = String(Math.round(Number(amount) * 100))
const custId = uni.getStorageSync('custId') || ''
const extraDataWithAmount = extraData + '&payAmount=' + encodeURIComponent(payAmountStr) + '&orderAmount=' + encodeURIComponent(orderAmountStr) + '&token=' + encodeURIComponent(token) + '&custId=' + encodeURIComponent(custId)
console.log('传入中间小程序的extraData:', extraDataWithAmount)
// #ifdef APP-PLUS // #ifdef APP-PLUS
// 原生App通过微信SDK拉起小程序 // 原生App通过微信SDK拉起小程序
plus.share.getServices((services) => { plus.share.getServices((services) => {
@@ -241,21 +208,11 @@
return return
} }
weixin.launchMiniProgram({ weixin.launchMiniProgram({
id: 'gh_a765aef0172c', id: 'gh_a765aef0172c',
// appId: 'wx40625124315d2de1', type: 1, // 0 正式版 / 1测试版 / 2预览版
type:1, // 0 正式版 / 1测试版 / 2预览版 path: 'pages/arrearsPayment/arrearsPayment?' + queryString,
path: 'pageSubPack/payment-list/arrearsPayment',
extraData: extraDataWithAmount,
}, (res) => { }, (res) => {
console.log('ress-------------',res)
// if (res.retCode === 'SUCCESS') {
// console.log('成功拉起日照银行小程序App', res.retCode)
// } else {
// console.log('拉起日照银行小程序返回失败App======)', res.retMsg)
// }
console.log('回调---回调结果App', JSON.stringify(res)) console.log('回调---回调结果App', JSON.stringify(res))
}, (err) => { }, (err) => {
console.error('err---拉起失败App', JSON.stringify(err)) console.error('err---拉起失败App', JSON.stringify(err))
@@ -263,27 +220,10 @@
}) })
}) })
// #endif // #endif
// // #ifdef MP-WEIXIN
// // 微信小程序直接navigateToMiniProgram
// uni.navigateToMiniProgram({
// appId: appId,
// path: path || '',
// extraData: extraData,
// envVersion: 'develop',
// success: () => {
// console.log('成功拉起日照银行小程序(微信)')
// },
// fail: (err) => {
// console.error('拉起日照银行小程序失败(微信)', JSON.stringify(err))
// uni.showToast({ title: err.errMsg || err.msg || '拉起支付小程序失败', icon: 'none' })
// }
// })
// // #endif
} catch (err) { } catch (err) {
uni.hideLoading() uni.hideLoading()
console.error('获取支付参数异常', err) console.error('拉起支付小程序异常', err)
uni.showToast({ title: err.msg || '请求异常,请重试', icon: 'none' }) uni.showToast({ title: '请求异常,请重试', icon: 'none' })
} }
} }

View File

@@ -83,9 +83,6 @@
import { import {
getPushSingle getPushSingle
} from '/pageSubPack/api/api.js' } from '/pageSubPack/api/api.js'
import {
getBankMiniProgramParams
} from '/pageSubPack/api/apiSub.js'
// 响应式数据 // 响应式数据
const outstandingPayment = ref(true) const outstandingPayment = ref(true)
@@ -152,8 +149,9 @@
} }
// 立即缴费 — 通过微信拉起日照银行小程序进行支付 // 立即缴费 — 通过微信拉起日照银行小程序进行支付
const handlePay = async () => { const handlePay = () => {
const amount = arrearsAmount.value const amount = arrearsAmount.value
console.log('saaaaaaa', paymentItem)
try { try {
uni.showLoading({ title: '加载中...' }) uni.showLoading({ title: '加载中...' })
@@ -162,46 +160,25 @@
const deviceTypeMap = { '物业费': '3', '车位费': '4', '垃圾处理费': '5' } const deviceTypeMap = { '物业费': '3', '车位费': '4', '垃圾处理费': '5' }
const mappedDeviceType = deviceTypeMap[switchStatus(paymentItem.type)] || paymentItem.deviceType || '' const mappedDeviceType = deviceTypeMap[switchStatus(paymentItem.type)] || paymentItem.deviceType || ''
const res = await getBankMiniProgramParams({ // 直接从本地参数拼 path 查询字符串传给支付小程序,不走接口
const token = uni.getStorageSync('token') || ''
const params = {
acct: uni.getStorageSync('userId'), acct: uni.getStorageSync('userId'),
orderType: '10', orderType: '10',
orderAmount: String(Math.round(Number(amount) * 100)),
deviceCode: paymentItem.deviceCode || '', deviceCode: paymentItem.deviceCode || '',
deviceType: mappedDeviceType, deviceType: mappedDeviceType,
billId: paymentItem.billId || '', billId: paymentItem.id || '',
residentUserId: uni.getStorageSync('userId'), residentUserId: uni.getStorageSync('userId'),
goodName: paymentItem.name || switchStatus(paymentItem.type) || '', // goodName: paymentItem.name || switchStatus(paymentItem.type) || '',
remark:'服务费' // remark: '服务费',
}) token: token
}
const queryString = Object.keys(params).map(k =>
encodeURIComponent(k) + '=' + encodeURIComponent(params[k])
).join('&')
uni.hideLoading() uni.hideLoading()
console.log('传入中间小程序的path参数:', queryString)
if (res.code !== 200 || !res.data) {
uni.showToast({ title: res.msg || '获取支付参数失败', icon: 'none' })
return
}
console.log('resres返回数据', res)
const { appId, path, extraData } = res.data
console.log('navigateToMiniProgram参数:', { appId, path, extraData })
// 校验必要参数
if (!appId) {
console.error('缺少appId无法拉起支付小程序', res.data)
uni.showToast({ title: '获取支付参数失败缺少appId', icon: 'none' })
return
}
// 把 extraData 对象和支付金额、token拼成查询字符串传入中间小程序实现免登录
const token = uni.getStorageSync('token') || ''
const payAmountStr = String(payAmount.value)
const orderAmountStr = String(Math.round(Number(amount) * 100))
// extraData 是对象,先转为 query string 再拼接额外参数
const extraDataStr = typeof extraData === 'object' && extraData !== null
? Object.keys(extraData).map(k => encodeURIComponent(k) + '=' + encodeURIComponent(extraData[k])).join('&')
: (extraData || '')
const extraDataWithAmount = extraDataStr + '&payAmount=' + encodeURIComponent(payAmountStr) + '&orderAmount=' + encodeURIComponent(orderAmountStr) + '&token=' + encodeURIComponent(token)
console.log('传入中间小程序的extraData:', extraDataWithAmount)
// #ifdef APP-PLUS // #ifdef APP-PLUS
// 原生App通过微信SDK拉起小程序 // 原生App通过微信SDK拉起小程序
plus.share.getServices((services) => { plus.share.getServices((services) => {
@@ -215,21 +192,11 @@
return return
} }
weixin.launchMiniProgram({ weixin.launchMiniProgram({
id: 'gh_a765aef0172c', id: 'gh_a765aef0172c',
// appId: 'wx40625124315d2de1', type: 1, // 0 正式版 / 1测试版 / 2预览版
type:1, // 0 正式版 / 1测试版 / 2预览版 path: 'pages/arrearsPayment/arrearsPayment?' + queryString,
path: 'pageSubPack/payment-list/arrearsPayment',
extraData: extraData,
}, (res) => { }, (res) => {
console.log('ress-------------',res)
// if (res.retCode === 'SUCCESS') {
// console.log('成功拉起日照银行小程序App', res.retCode)
// } else {
// console.log('拉起日照银行小程序返回失败App======)', res.retMsg)
// }
console.log('回调---日照银行小程序回调结果App', JSON.stringify(res)) console.log('回调---日照银行小程序回调结果App', JSON.stringify(res))
}, (err) => { }, (err) => {
console.error('拉起日照银行小程序失败App', JSON.stringify(err)) console.error('拉起日照银行小程序失败App', JSON.stringify(err))
@@ -237,27 +204,10 @@
}) })
}) })
// #endif // #endif
// // #ifdef MP-WEIXIN
// // 微信小程序直接navigateToMiniProgram
// uni.navigateToMiniProgram({
// appId: appId,
// path: path || '',
// extraData: extraData,
// envVersion: 'develop',
// success: () => {
// console.log('成功拉起日照银行小程序(微信)')
// },
// fail: (err) => {
// console.error('拉起日照银行小程序失败(微信)', JSON.stringify(err))
// uni.showToast({ title: err.errMsg || err.msg || '拉起支付小程序失败', icon: 'none' })
// }
// })
// // #endif
} catch (err) { } catch (err) {
uni.hideLoading() uni.hideLoading()
console.error('获取支付参数异常', err) console.error('拉起支付小程序异常', err)
uni.showToast({ title: err.msg || '请求异常,请重试', icon: 'none' }) uni.showToast({ title: '请求异常,请重试', icon: 'none' })
} }
} }

View File

@@ -240,14 +240,14 @@
} else { } else {
uni.showToast({ uni.showToast({
title: '获取失败', title: '获取失败',
icon: 'error' icon: 'none'
}) })
} }
} catch (err) { } catch (err) {
const msg = err?.msg || (typeof err === 'string' ? err : '获取失败') const msg = err?.msg || (typeof err === 'string' ? err : '获取失败')
uni.showToast({ uni.showToast({
title: msg, title: msg,
icon: 'error' icon: 'none'
}) })
} }
} }