微信小程序开发tip1(开发过程的问题汇总)

本文解决了在使用底部TabBar时wx.navigateTo方法失效的问题,并详细解释了在不同手机平台上图片轮播显示不一致的原因及解决方案。

1.设置了底部TabBar后 wx.navigateTo方法不可用

答:归根到底还是API没看自己

应该还用下面的

不过两个的效果还是有区别的

2.设置了图片轮播区域,在Android上可以正常显示,但是在Iphone上却不能显示

这里写图片描述
虽然按照上面修改了,但问题的缘由是由于外层class=.container的display:flex布局的支持问题。

const auth = require('../../../utils/auth'); const request = require('../../../utils/request'); Page({ data: { auditList: [], loading: false, statusOptions: ['全部', '待审核', '已通过', '已驳回'], statusIndex: 1, // 默认筛选待审核 statusMap: { 0: 'ALL', 1: 'PENDING', 2: 'APPROVED', 3: 'REJECTED' } }, onLoad() { if (!auth.checkAdmin()) return; this.getAuditList(); // 页面加载时请求默认的“待审核”数据 }, // 获取审核列表(修复:根据筛选状态请求对应接口) // doctor-audit.js getAuditList() { this.setData({ loading: true }); const status = this.data.statusMap[this.data.statusIndex]; // 关键修复:请求后端实际存在的接口 /admin/doctor/audit/list request.get(`/admin/doctor/audit/list?status=${status}`) .then(res => { this.setData({ loading: false }); // 关键:强制转换为 DoctorAuditDTO 数组,确保每个字段存在 const doctorList = (res.data || []).map(item => ({ id: item.id || 0, username: item.username || '未知', fullName: item.fullName || '未知', phone: item.phone || '未知', licenseNumber: item.licenseNumber || '未知', department: item.department || '未知', hospital: item.hospital || '未知', status: item.status || 'PENDING' // 兜底:默认待审核 })); this.setData({ auditList: doctorList }); }) .catch(err => { this.setData({ loading: false }); console.error('接口错误:', err); }); }, // 筛选状态变更(保留逻辑,确保与接口请求匹配) onStatusChange(e) { this.setData({ statusIndex: e.detail.value }); this.getAuditList(); // 变更筛选后重新请求数据 }, // 审核通过/驳回(保留原逻辑,无需修改) approveDoctor(e) { /* 原代码变 */ }, rejectDoctor(e) { /* 原代码变 */ }, auditDoctor(doctorId, result) { /* 原代码变 */ } }); <view class="audit-container"> <!-- 状态筛选(保留,与JS筛选逻辑匹配) --> <view class="filter-bar"> <picker bindchange="onStatusChange" value="{{statusIndex}}" range="{{statusOptions}}" > <view class="filter-text">当前筛选:{{statusOptions[statusIndex]}}</view> </picker> </view> <!-- 审核列表(修复:确保字段绑定正确,状态判断简洁) --> <view class="audit-list"> <block wx:for="{{auditList}}" wx:key="id"> <view class="audit-item"> <!-- 修复1:确保 fullName、username 字段绑定正确(后端返回的是 fullName,非 name) --> <view class="item-header"> <text class="name">{{item.fullName}}({{item.username}})</text> <!-- 修复2:状态判断仅保留关键逻辑,避免冗余 --> <text class="status {{item.status === 'PENDING' ? 'pending' : item.status === 'APPROVED' ? 'approved' : 'rejected'}}"> {{item.status === 'PENDING' ? '待审核' : item.status === 'APPROVED' ? '已通过' : '已驳回'}} </text> </view> <!-- 修复3:确保医院、科室等字段与后端 DoctorAuditDTO 匹配(后端返回 department,非 dept) --> <view class="item-body"> <text class="info">医院:{{item.hospital || '未填写'}}</text> <!-- 兜底:防止字段为空 --> <text class="info">科室:{{item.department || '未填写'}}</text> <text class="info">执业证号:{{item.licenseNumber || '未填写'}}</text> <text class="info">手机号:{{item.phone || '未填写'}}</text> </view> <!-- 修复4:仅待审核数据显示操作按钮(依赖 item.status 字段) --> <view class="item-actions" wx:if="{{item.status === 'PENDING'}}"> <button bindtap="approveDoctor" data-id="{{item.id}}" class="btn approve-btn">通过</button> <button bindtap="rejectDoctor" data-id="{{item.id}}" class="btn reject-btn">驳回</button> </view> </view> </block> <!-- 空数据提示(修复:明确当前筛选状态) --> <view class="empty-tip" wx:if="{{auditList.length === 0 && !loading}}"> 暂无{{statusOptions[statusIndex]}}的医生注册申请 </view> </view> <!-- 加载中遮罩(保留原逻辑) --> <view class="loading-mask" wx:if="{{loading}}"> <text class="loading-text">加载中...</text> </view> </view> const auth = require('../../../utils/auth'); Page({ data: { username: '' }, onLoad() { if (!auth.checkAdmin()) return; // 获取当前管理员用户名 this.setData({ username: auth.getUsername() }); }, // 跳转到医生审核页 goToDoctorAudit() { wx.navigateTo({ url: '/pages/admin/doctor-audit/doctor-audit' }); }, // 跳转到医生管理页 goToDoctorManage() { wx.navigateTo({ url: '/pages/admin/doctor-manage/doctor-manage' }); }, // 跳转到药物类别管理页 goToDrugTypeManage() { wx.navigateTo({ url: '/pages/admin/drug-type-manage/drug-type-manage' }); }, // 跳转到文章管理页 goToArticleManage() { wx.navigateTo({ url: '/pages/admin/article-manage/article-manage' }); }, // 退出登录 logout() { wx.showModal({ title: '确认退出', content: '是否退出管理员账号?', confirmColor: '#ff4d4f', success: (res) => { if (res.confirm) { auth.clearLoginInfo(); wx.redirectTo({ url: '/pages/admin/login/login' }); } } }); } }); <!-- admin/index.wxml 优化后 --> <view class="admin-home"> <view class="user-info"> <text class="welcome">欢迎您,{{username}}</text> <button bindtap="logout" class="logout-btn">退出登录</button> </view> <view class="func-grid"> <view class="func-item" bindtap="goToDoctorAudit"> <image src="/images/func/audit.png" class="func-icon" mode="aspectFit" /> <text class="func-text">医生注册审核</text> </view> <view class="func-item" bindtap="goToDoctorManage"> <image src="/images/func/doctor-manage.png" class="func-icon" mode="aspectFit" /> <text class="func-text">医生账户管理</text> </view> <view class="func-item" bindtap="goToDrugTypeManage"> <image src="/images/func/drug-type.png" class="func-icon" mode="aspectFit" /> <text class="func-text">药物类别管理</text> </view> <view class="func-item" bindtap="goToArticleManage"> <image src="/images/func/article.png" class="func-icon" mode="aspectFit" /> <text class="func-text">科普文章管理</text> </view> </view> </view> const auth = require('../../../utils/auth'); const request = require('../../../utils/request'); Page({ data: { username: 'admin', password: '123456', loading: false }, onInput(e) { const { name, value } = e.currentTarget.dataset; this.setData({ [name]: value.trim() }); }, formSubmit(e) { const { username, password } = e.detail.value; if (!username || !password) { wx.showToast({ title: '请填写账号密码', icon: 'none' }); return; } this.setData({ loading: true }); // 调用后端登录接口 request.post('/auth/login', { username, password }) .then(res => { this.setData({ loading: false }); // 保存管理员登录信息 auth.saveLoginInfo(res.data.token, username, 'ADMIN'); wx.showToast({ title: '登录成功', icon: 'success' }); setTimeout(() => { wx.redirectTo({ url: '/pages/admin/index/index' }); }, 1500); }) .catch(err => { this.setData({ loading: false }); wx.showToast({ title: err.message || '登录失败', icon: 'none' }); }); } }); <view class="login-container"> <view class="login-card"> <text class="login-title">管理员登录</text> <form bindsubmit="formSubmit"> <view class="form-item"> <label class="form-label">账号</label> <input name="username" placeholder="请输入管理员账号" value="admin" bindinput="onInput" maxlength="20" /> </view> <view class="form-item"> <label class="form-label">密码</label> <input name="password" placeholder="请输入密码" value="123456" bindinput="onInput" password maxlength="20" /> </view> <button form-type="submit" class="login-btn" type="primary" loading="{{loading}}" disabled="{{loading}}" > 登录 </button> </form> </view> </view>
11-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值