v***@qq.com
v***@qq.com
  • 发布:2025-06-25 11:55
  • 更新:2025-06-25 18:44
  • 阅读:98

uni.showModal 打包成app后不显示

分类:wap2app

我封装了一个提示工具```javascript
// 提示业务模型
class Tip {

/**  
 * 模态弹框  
 */  
modal(params = {}) {  
    return new Promise((resolve, reject) => {  
        // 模态弹框  
        uni.showModal({  
            title: '温馨提示',  
            confirmColor: '#07C160',  
            content: '您确定要执行此操作吗?',  
            ...params, //       自定义配置  
            // 确定或取消  
            complete(res) {  
                resolve(res)  
            }  

        })  
    })  
}  

/**  
 * loading  
 */  
loading(params = {}) {  
    // loading  
    uni.showLoading({  
        title: '加载中...',  
        mask: true,  
        ...params  
    })  
}  

/**  
 * 消息提示框  
 */  
toast(params = {}) {  
    uni.showToast({  
        title: '成功',  
        icon: 'success',  
        mask: true,  
        position: 'center',  
        ...params  
    })  
}  

}

// 创建实例
const tip = new Tip()

// 导出实例
module.exports = tip

我没有输入任何内容,点击    <my-button @click="submitHandle">  
                <slot></slot>  
            </my-button> 为什么在app端没有显示,h5和微信小程序却有提示```javascript  
<template>  
    <view class="login-form">  
        <my-input-group>  
            <!-- 输入框 -->  
            <my-input placeholder="请输入用户名" v-model="form.username" :maxlength="20" />  
        </my-input-group>  

        <my-input-group>  
            <!-- 输入框 -->  
            <my-input type="password" placeholder="请输入密码" v-model="form.password" :maxlength="16" />  
        </my-input-group>  
        <my-input-group>  
            <!-- 输入框 -->  
            <my-input placeholder="请输入验证码" :maxlength="4" v-model="form.captcha" />  
            <!-- 图形验证码 -->  
            <image :src="captchaImg" class="captcha" @click="getCaptcha" />  
        </my-input-group>  
        <my-input-group>  
            <!-- 登录按钮 -->  
            <my-button @click="submitHandle">  
                <slot></slot>  
            </my-button>  
        </my-input-group>  
    </view>  
</template>  

<script>  
    import {  
        getCaptchaApi  
    } from '@/api/auth/auth.js'  
    // 提示工具  
    import tip from '@/utils/tip.js'  
    // 引入表单验证工具  
    import formValidation from '@/utils/FormValidation.js'  

    export default {  
        name: "my-login-form",  
        data() {  
            return {  
                captchaImg: '',  
                // 表单数据  
                form: {  
                    username: '',  
                    password: '',  
                    captcha: '',  
                    captchaToken: ''  
                }  
            };  
        },  
        methods: {  
            async getCaptcha() {  
                try {  
                    // 发起网络请求  
                    const result = await getCaptchaApi()  
                    // console.log(result)  
                    // 将CaptchaToken保存  
                    this.form.captchaToken = result.data.data.captchaToken  
                    // 将图片url保存  
                    this.captchaImg = result.data.data.image  
                } catch (error) {  
                    //TODO handle the exception  
                    console.log(error)  
                }  
            },  
            // 提交事件  
            async submitHandle() {  
                // 执行验证  
                const validatorResult = await this.validationHandle()  
                // 验证失败  
                if (!validatorResult) return  
                // 将数据返回  
                this.$emit('submit', JSON.parse(JSON.stringify(this.form)))  
            },  
            // 表单数据验证  
            async validationHandle() {  
                // 验证规则  
                const rules = {  
                    // 用户名  
                    username: [  
                        // 非空验证  
                        {  
                            required: true,  
                            message: '用户名不能为空'  
                        },  
                        // 长度验证  
                        {  
                            min: 6,  
                            max: 20,  
                            message: `用户名格式错误: 需以字母或下划线开头: 6-20位字母/数字/下划线`  
                        },  
                        //  自定义验证  
                        {  
                            pattern: /^[a-zA-Z_][a-zA-Z0-9_]{5,20}$/,  
                            message: '用户名格式错误: 需以字母或下划线开头: 6-20位字母/数字/下划线'  
                        }  
                    ],  
                    // 密码  
                    password: [  
                        // 非空验证  
                        {  
                            required: true,  
                            message: '密码不能为空'  
                        },  
                        // 长度验证  
                        {  
                            min: 8,  
                            max: 16,  
                            message: `密码格式错误: 需8-16位, 包含字母或特殊字符, 且不含中文`  
                        },  
                        //  自定义验证  
                        {  
                            pattern: /^(?=.*[a-zA-Z_\-\\!#$%&'()*+,.\/:;<=>?@[\]_{}~])(?!.*[\u4e00-\u9fa5]).{8,16}$/,  
                            message: '密码格式错误: 需8-16位, 包含字母或特殊字符, 且不含中文'  
                        }  
                    ],  
                    // 验证码  
                    captcha: [  
                        // 非空验证  
                        {  
                            required: true,  
                            message: '验证码不能为空'  
                        },  
                        // 长度验证  
                        {  
                            min: 4,  
                            max: 4,  
                            message: `验证码长度为4位`  
                        },  
                        //  自定义验证  
                        {  
                            pattern: /^[A-Za-z0-9]+$/,  
                            message: '验证码只能包含数字和大小写字母'  
                        }  
                    ],  
                    // 验证码  
                    captchaToken: [  
                        // 非空验证  
                        {  
                            required: true,  
                            message: '验证码失效请刷新'  
                        },  
                        // 长度验证  
                        {  
                            min: 32,  
                            max: 32,  
                            message: `验证码长度为4位`  
                        },  
                    ],  
                }  
                // 执行验证方法  
                const validationResult = await formValidation.validation(this.form, rules)  
                // 判断用户输入的值是否符合规则  
                if (validationResult.length) {  
                    // 弹框提示  
                    tip.modal({  
                        showCancel: false,  
                        content: validationResult[0].message  
                    })  
                    // 验证失败  
                    return false  
                }  
                // 验证完成  
                return true  
            }  

        },  
        created() {  
            this.getCaptcha()  
        }  
    }  
</script>  

<style lang="less">  
    .login-form {  
        padding: 120rpx;  

        // 图形验证码  
        .captcha {  
            position: absolute;  
            z-index: 100;  
            top: 0;  
            right: 0;  
            width: 200rpx;  
            height: 80rpx;  
        }  
    }  
</style>
2025-06-25 11:55 负责人:无 分享
已邀请:
蔡cai

蔡cai - 开发的插件:https://ask.dcloud.net.cn/article/41539

你先把return new Promise((resolve, reject) => {相关的代码去掉试试

  • 蔡cai

    感觉是没执行promise的reject导致的,你看下运行到app的控制台有没有报错

    2025-06-25 14:04

DCloud_UNI_HT

DCloud_UNI_HT

逐步排查吧,先不用封装的代码,在调用的位置,直接使用 uni. showModal 看是否显示,然后 在 封装的地方 try/catch ,看看是否有报错。

要回复问题请先登录注册