HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

eportJSException >>>> exception function:createInstanceContext,

真机运行 Android uniapp

需求:uniapp开发项目最终运行在Android真机;
操作:uniapp开发过程中全程在chrome浏览器中运行,开发完成后在Android真机运行,之后出现如下错误

这里重点关注划线区域,具体的错误就是这里
> Cannot read property 'http' of undefined

参考这篇文章找到解决方案:关于Vue3中调试APP触发异常
我的修改如下:

就是把const http = uni.$uv.http 放在了函数中,至此问题解决。

最后吐槽一下,这个问题编辑面板真的难用

继续阅读 »

需求:uniapp开发项目最终运行在Android真机;
操作:uniapp开发过程中全程在chrome浏览器中运行,开发完成后在Android真机运行,之后出现如下错误

这里重点关注划线区域,具体的错误就是这里
> Cannot read property 'http' of undefined

参考这篇文章找到解决方案:关于Vue3中调试APP触发异常
我的修改如下:

就是把const http = uni.$uv.http 放在了函数中,至此问题解决。

最后吐槽一下,这个问题编辑面板真的难用

收起阅读 »

为什么发布tm还要我登录啊,紧接着就是登录、验证、手机绑定验证、到最后发布,跟我说什么该应用不属于我,我真的会谢

为什么发布tm还要我登录啊,紧接着就是登录、验证、手机绑定验证、到最后发布,跟我说什么该应用不属于我,我真的会谢

国产,你这样玩,我还用你干嘛

为什么发布tm还要我登录啊,紧接着就是登录、验证、手机绑定验证、到最后发布,跟我说什么该应用不属于我,我真的会谢

国产,你这样玩,我还用你干嘛

uni.onBLECharacteristicValueChange 遇到的问题

问题:uni.onBLECharacteristicValueChange 无法监听到第二次 uni.writeBLECharacteristicValue 特征值写入。
ps:代码就不描述了,写一下流程
描述:初始化蓝牙->启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值->监听蓝牙特征值变化->writeBLECharacteristicValue 下发参数给设备
->onBLECharacteristicValueChange 正常监听到特征值变化,成功获取报文->此时获取到成功报文后我又执行了,启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值(此时的uuid,服务id,特征值id,都应需求原因不予第一次获取的一致)->未调用蓝牙特征值变化方法,因为第一次已经调用(后续试过再次调用结果也一致,失败)
->onBLECharacteristicValueChange 未监听到特征值变化,无报文。
解决:在onBLECharacteristicValueChange 中获取到第一次成功报文后,断开与低功耗蓝牙设备的连接uni.closeBLEConnection,再次初始化蓝牙->启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值->监听蓝牙特征值变化->writeBLECharacteristicValue 下发参数给设备 -> 又可以成功获取到 onBLECharacteristicValueChange 特征值变化,成功获取报文。

继续阅读 »

问题:uni.onBLECharacteristicValueChange 无法监听到第二次 uni.writeBLECharacteristicValue 特征值写入。
ps:代码就不描述了,写一下流程
描述:初始化蓝牙->启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值->监听蓝牙特征值变化->writeBLECharacteristicValue 下发参数给设备
->onBLECharacteristicValueChange 正常监听到特征值变化,成功获取报文->此时获取到成功报文后我又执行了,启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值(此时的uuid,服务id,特征值id,都应需求原因不予第一次获取的一致)->未调用蓝牙特征值变化方法,因为第一次已经调用(后续试过再次调用结果也一致,失败)
->onBLECharacteristicValueChange 未监听到特征值变化,无报文。
解决:在onBLECharacteristicValueChange 中获取到第一次成功报文后,断开与低功耗蓝牙设备的连接uni.closeBLEConnection,再次初始化蓝牙->启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值->监听蓝牙特征值变化->writeBLECharacteristicValue 下发参数给设备 -> 又可以成功获取到 onBLECharacteristicValueChange 特征值变化,成功获取报文。

收起阅读 »

Ai绘图系统搭建教程

ai

应用名称:Aai绘图工具

支持Ai功能:文生图、图生图、艺术二维码、Ai消除去水印、局部重绘、老照片修复、高清放大、图片转漫画、图片扩展、Ai抠图

绘图费用

一般生图费用:0.09/张,包含高清修复的:0.15/张
如果用量较多可以拿到半价:0.045/张,包含高清修复的:0.075/张
如果用量更多,联系开发者可以拿到更低价

支持平台(支持uniCloud阿里云空间)

1:支持微信H5公众号版 PC电脑版。(需要已认证的微信公众号)
2:支持微信小程序。(上架需申请Ai绘图类目,可使用第三方合同申请Ai类目,使用第三个合同比较简单,开发者可指导协作完成)
3:支持支付宝小程序。(无需Ai类目,工具类目即可上架)
4:支持抖音小程序。(必须深度算法合成备案才能上架)

应用演示

1:H5客户端体验地址(手机版更优) [http://www.msshequ.cn/ai/](http://www.msshequ.cn/ai/#/)

2:微信小程序
微信小程序

3:支付宝小程序
支付宝小程序

源码下载

客户端(ai-image):https://ext.dcloud.net.cn/plugin?id=12217
ai-image可打包成 H5、微信小程序、支付宝小程序、抖音小程序 并发布

管理端(ai-image-admin):https://ext.dcloud.net.cn/plugin?id=12211
ai-image-admin可打包成H5发布,用于管理配置客户端,或者说是站长的控制台,站长自己用不要对外开放

开通uniCloud阿里云服务空间

开通地址:https://unicloud.dcloud.net.cn/
建议按量付费,请使用阿里云服务,其他服务可能不兼容
下载HBuilder开发工具:https://www.dcloud.io/hbuilderx.html

如果图片不显示无法看到截图教程请看

csdn文章教程:https://blog.csdn.net/weixin_43197263/article/details/142580962
掘金文章教程:https://juejin.cn/post/7418548134593396745

小程序域名白名单

请求域名:api.next.bspapp.com、sd-json.oss-cn-hongkong.aliyuncs.com
下载域名:sd-json.oss-cn-hongkong.aliyuncs.com
除了阿里云自带的请求域名外,请求和下载还要额外添加:sd-json.oss-cn-hongkong.aliyuncs.com,该域名是Ai绘图回调的文件地址,
Ai回调有些是JSON数据,有些是图片地址,所有需要把该域名添加到请求域名,和下载域名

  • 同时你unicloud的上传域名,和下载域名也要添加,unicloud空间查看域名

安装教程

先安装ai-image-admin,导入HBuilder 后关联阿里云空间,HBuilder下载地址:https://www.dcloud.io/hbuilderx.html

初始化云数据库

如果弹窗窗口直接覆盖

等待初始化完成

上传所有云函数及公共模块

如果弹出窗口直接替换

等待上传完成

再安装ai-image,必须一起安装完在测试使用,步骤与上面都差不多
导入HBuilder后关联阿里云空间

初始化云数据库

如果弹出询问窗直接覆盖

等待初始化完成

上传所有云函数及公共模块

如果弹出询问窗直接替换

等待上传完成

发布管理端(ai-image-admin)得先发布管理端完成小程序配置才能发布小程序端

ai-image-admin发行 网站-PC,并关联你的uniCloud阿里云空间一般会自动上传

如果无法自动上传,需要手动上传,先等待打包完成

打开打包完成的目录地址,把web改成admin,方便上传,因为打包的H5运行路径(会改的话可以自己改路径)就是admin,所有要用admin

上传文件到云空间,这里上传的是unicloud,如果你用其他云空间托管也可以上传其他云空间,记得配置跨域



配置跨域


访问管理端,在默认域名后面添加目录/admin

管理端初始化账号:admin
管理端初始化密码:112233

添加一个小程序,获取mymp_id,这里以支付宝小程序为例

在ai-image客户端配置mymp_id,就可以运行或者打包ai-image项目了

不用全部配置,要发布支付宝小程序,就修改mp-alipay的参数,要上架哪个平台就修改对应平台的mymp_id就行

发布到支付宝小程序

注意:是ai-image项目。建议先运行测试没问题在打包发布,不会运行测试的直接打包发布应该也没问题(开发者已经测试好没问题了)

继续阅读 »

应用名称:Aai绘图工具

支持Ai功能:文生图、图生图、艺术二维码、Ai消除去水印、局部重绘、老照片修复、高清放大、图片转漫画、图片扩展、Ai抠图

绘图费用

一般生图费用:0.09/张,包含高清修复的:0.15/张
如果用量较多可以拿到半价:0.045/张,包含高清修复的:0.075/张
如果用量更多,联系开发者可以拿到更低价

支持平台(支持uniCloud阿里云空间)

1:支持微信H5公众号版 PC电脑版。(需要已认证的微信公众号)
2:支持微信小程序。(上架需申请Ai绘图类目,可使用第三方合同申请Ai类目,使用第三个合同比较简单,开发者可指导协作完成)
3:支持支付宝小程序。(无需Ai类目,工具类目即可上架)
4:支持抖音小程序。(必须深度算法合成备案才能上架)

应用演示

1:H5客户端体验地址(手机版更优) [http://www.msshequ.cn/ai/](http://www.msshequ.cn/ai/#/)

2:微信小程序
微信小程序

3:支付宝小程序
支付宝小程序

源码下载

客户端(ai-image):https://ext.dcloud.net.cn/plugin?id=12217
ai-image可打包成 H5、微信小程序、支付宝小程序、抖音小程序 并发布

管理端(ai-image-admin):https://ext.dcloud.net.cn/plugin?id=12211
ai-image-admin可打包成H5发布,用于管理配置客户端,或者说是站长的控制台,站长自己用不要对外开放

开通uniCloud阿里云服务空间

开通地址:https://unicloud.dcloud.net.cn/
建议按量付费,请使用阿里云服务,其他服务可能不兼容
下载HBuilder开发工具:https://www.dcloud.io/hbuilderx.html

如果图片不显示无法看到截图教程请看

csdn文章教程:https://blog.csdn.net/weixin_43197263/article/details/142580962
掘金文章教程:https://juejin.cn/post/7418548134593396745

小程序域名白名单

请求域名:api.next.bspapp.com、sd-json.oss-cn-hongkong.aliyuncs.com
下载域名:sd-json.oss-cn-hongkong.aliyuncs.com
除了阿里云自带的请求域名外,请求和下载还要额外添加:sd-json.oss-cn-hongkong.aliyuncs.com,该域名是Ai绘图回调的文件地址,
Ai回调有些是JSON数据,有些是图片地址,所有需要把该域名添加到请求域名,和下载域名

  • 同时你unicloud的上传域名,和下载域名也要添加,unicloud空间查看域名

安装教程

先安装ai-image-admin,导入HBuilder 后关联阿里云空间,HBuilder下载地址:https://www.dcloud.io/hbuilderx.html

初始化云数据库

如果弹窗窗口直接覆盖

等待初始化完成

上传所有云函数及公共模块

如果弹出窗口直接替换

等待上传完成

再安装ai-image,必须一起安装完在测试使用,步骤与上面都差不多
导入HBuilder后关联阿里云空间

初始化云数据库

如果弹出询问窗直接覆盖

等待初始化完成

上传所有云函数及公共模块

如果弹出询问窗直接替换

等待上传完成

发布管理端(ai-image-admin)得先发布管理端完成小程序配置才能发布小程序端

ai-image-admin发行 网站-PC,并关联你的uniCloud阿里云空间一般会自动上传

如果无法自动上传,需要手动上传,先等待打包完成

打开打包完成的目录地址,把web改成admin,方便上传,因为打包的H5运行路径(会改的话可以自己改路径)就是admin,所有要用admin

上传文件到云空间,这里上传的是unicloud,如果你用其他云空间托管也可以上传其他云空间,记得配置跨域



配置跨域


访问管理端,在默认域名后面添加目录/admin

管理端初始化账号:admin
管理端初始化密码:112233

添加一个小程序,获取mymp_id,这里以支付宝小程序为例

在ai-image客户端配置mymp_id,就可以运行或者打包ai-image项目了

不用全部配置,要发布支付宝小程序,就修改mp-alipay的参数,要上架哪个平台就修改对应平台的mymp_id就行

发布到支付宝小程序

注意:是ai-image项目。建议先运行测试没问题在打包发布,不会运行测试的直接打包发布应该也没问题(开发者已经测试好没问题了)

收起阅读 »

智慧社区管理系统平台:城市管理好助手(附源码)

智慧社区:构建未来生活的新篇章

在信息化与智能化浪潮的推动下,智慧社区作为一种全新的社区治理模式正悄然兴起。它深度融合大数据、云计算、人工智能等前沿技术,整合社区各类服务资源,旨在打造一个安全、便捷、高效的居住环境。本文将从智慧安防、智慧服务、智慧物业、智慧生活四个方面,深入剖析智慧社区的建设实践及其带来的变革。

一、智慧社区的核心功能

社区信息管理:作为智慧社区的基础,社区信息管理涵盖了小区院落、人员信息、组织机构等多个方面。通过构建全面的社区数据库,实现对社区内各类信息的集中管理和实时更新,为社区管理和居民服务提供有力支撑。

人房关系管理:智慧社区通过人房关系管理系统,能够清晰地掌握社区内居民与房屋之间的对应关系。这不仅有助于提升社区管理的精准度,还能在紧急情况下迅速定位到相关人员,确保社区安全。

居民信息审核:为了保障社区的安全与秩序,智慧社区对居民信息进行严格的审核与管理。通过线上提交、线下审核的方式,确保居民信息的真实性和准确性,为社区提供更加可靠的居民服务。

组织机构管理:智慧社区还注重组织机构的管理与协调。通过构建完善的组织机构管理体系,明确各职能部门的职责与权限,实现社区管理的规范化和高效化。

二、智慧物业:高效管理的创新实践

智慧物业是智慧社区的重要组成部分。通过引入智能化管理系统,物业公司能够实现对社区设施、环境、人员等要素的精细化管理。利用物联网技术,对社区内的照明、安防、消防等设备进行远程监控和智能控制,降低能耗和维护成本。同时,建立居民反馈机制,及时收集和处理居民的意见和建议,提升物业服务质量和效率。智慧物业不仅减轻了物业公司的管理负担,还提高了居民对物业服务的满意度和信任度。

代码示例:

//智慧社区大屏Jenkinsfile
pipeline {
    agent any

    stages {

        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }

        stage('npm install') {
            steps {
                sh 'npm install'
            }
        }
        stage('npm build') {
            steps {
                sh 'npm run build'
            }
        }
        stage('tar and rsync') {
            steps {
                sh 'tar zcvf dist.tar.gz dist/'
                sh 'rsync -avzt dist.tar.gz rsync@192.168.201.73::zhsq-dp --password-file=/etc/rsync.pass'
                sh 'rsync -avzt dist.tar.gz rsync@192.168.201.74::zhsq-dp --password-file=/etc/rsync.pass'
            }
        }

    }
}
联系我们

继续阅读 »

智慧社区:构建未来生活的新篇章

在信息化与智能化浪潮的推动下,智慧社区作为一种全新的社区治理模式正悄然兴起。它深度融合大数据、云计算、人工智能等前沿技术,整合社区各类服务资源,旨在打造一个安全、便捷、高效的居住环境。本文将从智慧安防、智慧服务、智慧物业、智慧生活四个方面,深入剖析智慧社区的建设实践及其带来的变革。

一、智慧社区的核心功能

社区信息管理:作为智慧社区的基础,社区信息管理涵盖了小区院落、人员信息、组织机构等多个方面。通过构建全面的社区数据库,实现对社区内各类信息的集中管理和实时更新,为社区管理和居民服务提供有力支撑。

人房关系管理:智慧社区通过人房关系管理系统,能够清晰地掌握社区内居民与房屋之间的对应关系。这不仅有助于提升社区管理的精准度,还能在紧急情况下迅速定位到相关人员,确保社区安全。

居民信息审核:为了保障社区的安全与秩序,智慧社区对居民信息进行严格的审核与管理。通过线上提交、线下审核的方式,确保居民信息的真实性和准确性,为社区提供更加可靠的居民服务。

组织机构管理:智慧社区还注重组织机构的管理与协调。通过构建完善的组织机构管理体系,明确各职能部门的职责与权限,实现社区管理的规范化和高效化。

二、智慧物业:高效管理的创新实践

智慧物业是智慧社区的重要组成部分。通过引入智能化管理系统,物业公司能够实现对社区设施、环境、人员等要素的精细化管理。利用物联网技术,对社区内的照明、安防、消防等设备进行远程监控和智能控制,降低能耗和维护成本。同时,建立居民反馈机制,及时收集和处理居民的意见和建议,提升物业服务质量和效率。智慧物业不仅减轻了物业公司的管理负担,还提高了居民对物业服务的满意度和信任度。

代码示例:

//智慧社区大屏Jenkinsfile
pipeline {
    agent any

    stages {

        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }

        stage('npm install') {
            steps {
                sh 'npm install'
            }
        }
        stage('npm build') {
            steps {
                sh 'npm run build'
            }
        }
        stage('tar and rsync') {
            steps {
                sh 'tar zcvf dist.tar.gz dist/'
                sh 'rsync -avzt dist.tar.gz rsync@192.168.201.73::zhsq-dp --password-file=/etc/rsync.pass'
                sh 'rsync -avzt dist.tar.gz rsync@192.168.201.74::zhsq-dp --password-file=/etc/rsync.pass'
            }
        }

    }
}
联系我们

收起阅读 »

生鲜配送系统软件推荐:鲜橙生鲜配送系统(附源码)


一、解决传统痛点,提升运营效率

传统生鲜配送模式面临着诸多痛点:人工分拣效率低下、数据记录易出错、仓储物流管理复杂等。这些问题不仅增加了企业的运营成本,还严重影响了客户体验。而一款优秀的生鲜配送系统,能够全面解决这些痛点。通过自动化、智能化的技术手段,系统能够大幅提升分拣效率,减少人为错误,实现数据的实时同步与精准管理。同时,系统还能优化仓储布局和物流配送路线,降低物流成本,提升整体运营效率。

二、功能全面,满足多元化需求

一款优秀的生鲜配送系统,其功能应当全面而强大,以满足企业多元化的需求。从商品管理到价格管理,从采购管理到库存管理,再到财务管理和数据分析,系统应涵盖生鲜配送的各个环节。具体而言,系统应支持商品多规格管理、价格差异化设置、自动化采购单汇总、库存实时监控等功能;

三、灵活定制,适应企业发展

每个生鲜企业都有其独特的发展阶段和业务模式,因此一款优秀的生鲜配送系统应具备高度的灵活性和可定制性。系统应能够根据企业的实际需求进行个性化定制,以适应不同规模、不同业态的生鲜企业。无论是初创型企业还是成熟的大型企业,都能在系统中找到适合自己的解决方案。

**Jeecg-Boot 低代码开发平台

当前最新版本: 3.2.0(发布日期:20220425)

后端技术架构

基础框架:Spring Boot 2.6.6
持久层框架:Mybatis-plus 3.5.1
安全框架:Apache Shiro 1.8.0,Jwt 3.11.0
数据库连接池:阿里巴巴Druid 1.1.22
缓存框架:redis
日志打印:logback
其他:fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。

开发环境

语言:Java 8
IDE(JAVA): Eclipse安装lombok插件 或者 IDEA
依赖管理:Maven
数据库:MySQL5.7+  &  Oracle 11g & SqlServer & postgresql & 国产等更多数据库
缓存:Redis

代码示例:

    @GetMapping(value = "/list")
    public Result<IPage<JeecgDemo>> list(JeecgDemo jeecgDemo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, 
                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
            HttpServletRequest req) {
        Result<IPage<JeecgDemo>> result = new Result<IPage<JeecgDemo>>();

        //调用QueryGenerator的initQueryWrapper
        QueryWrapper<JeecgDemo> queryWrapper = QueryGenerator.initQueryWrapper(jeecgDemo, req.getParameterMap());

        Page<JeecgDemo> page = new Page<JeecgDemo>(pageNo, pageSize);
        IPage<JeecgDemo> pageList = jeecgDemoService.page(page, queryWrapper);
        result.setSuccess(true);
        result.setResult(pageList);
        return result;
    }**

​联系我们:

继续阅读 »


一、解决传统痛点,提升运营效率

传统生鲜配送模式面临着诸多痛点:人工分拣效率低下、数据记录易出错、仓储物流管理复杂等。这些问题不仅增加了企业的运营成本,还严重影响了客户体验。而一款优秀的生鲜配送系统,能够全面解决这些痛点。通过自动化、智能化的技术手段,系统能够大幅提升分拣效率,减少人为错误,实现数据的实时同步与精准管理。同时,系统还能优化仓储布局和物流配送路线,降低物流成本,提升整体运营效率。

二、功能全面,满足多元化需求

一款优秀的生鲜配送系统,其功能应当全面而强大,以满足企业多元化的需求。从商品管理到价格管理,从采购管理到库存管理,再到财务管理和数据分析,系统应涵盖生鲜配送的各个环节。具体而言,系统应支持商品多规格管理、价格差异化设置、自动化采购单汇总、库存实时监控等功能;

三、灵活定制,适应企业发展

每个生鲜企业都有其独特的发展阶段和业务模式,因此一款优秀的生鲜配送系统应具备高度的灵活性和可定制性。系统应能够根据企业的实际需求进行个性化定制,以适应不同规模、不同业态的生鲜企业。无论是初创型企业还是成熟的大型企业,都能在系统中找到适合自己的解决方案。

**Jeecg-Boot 低代码开发平台

当前最新版本: 3.2.0(发布日期:20220425)

后端技术架构

基础框架:Spring Boot 2.6.6
持久层框架:Mybatis-plus 3.5.1
安全框架:Apache Shiro 1.8.0,Jwt 3.11.0
数据库连接池:阿里巴巴Druid 1.1.22
缓存框架:redis
日志打印:logback
其他:fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。

开发环境

语言:Java 8
IDE(JAVA): Eclipse安装lombok插件 或者 IDEA
依赖管理:Maven
数据库:MySQL5.7+  &  Oracle 11g & SqlServer & postgresql & 国产等更多数据库
缓存:Redis

代码示例:

    @GetMapping(value = "/list")
    public Result<IPage<JeecgDemo>> list(JeecgDemo jeecgDemo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, 
                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
            HttpServletRequest req) {
        Result<IPage<JeecgDemo>> result = new Result<IPage<JeecgDemo>>();

        //调用QueryGenerator的initQueryWrapper
        QueryWrapper<JeecgDemo> queryWrapper = QueryGenerator.initQueryWrapper(jeecgDemo, req.getParameterMap());

        Page<JeecgDemo> page = new Page<JeecgDemo>(pageNo, pageSize);
        IPage<JeecgDemo> pageList = jeecgDemoService.page(page, queryWrapper);
        result.setSuccess(true);
        result.setResult(pageList);
        return result;
    }**

​联系我们:

收起阅读 »

uniapp-x不支持瀑布流列表,望解决

uni_app x uni_app

uniapp-x 希望可以支持最基本,瀑布流,和普通的,一行显示2个或者多个item的情况 这也算最基本的列表功能了吧

uniapp-x 希望可以支持最基本,瀑布流,和普通的,一行显示2个或者多个item的情况 这也算最基本的列表功能了吧

uniapp App map地图组件+subnvues弹窗,路由跳转后再进页面时subnvues弹窗有缓存的问题!

subNVues

hbuildX版本:4.24
uniapp:vue3(默认模板,不包含uniapp-x)

注:只是分享,之前是做pc端的,刚接触uniapp,不清楚这个问题在历代uniapp更新中是否被解决,但是我在开发中遇到了,所以就发出来了。

情景描述:在一个除顶部菜单的全屏地图中,添加自定义控件,因为map地图层级很高,故使用subnvues,进行控件展示,包含两个方形小按钮,一个是定位自己,一个是点击进行弹窗,在弹窗中在进行操作,然后就发现了退出当前路由,再进入时,弹窗会出现重复!

解决办法:反正是困扰了一下午,无意中发现,将地图代码注释之后,再执行退出进入的操作,就不会出现这种情况,经过漫长的时间琢磨,给地图组件加上v-if,一是在subnvues弹窗之前将地图隐掉,执行完弹窗操作后,再显示出来,就只是一瞬,有用,二是,在退出当前页面时提前将地图隐掉,再执行页面跳转,就一个异步执行代码;

//打开菜单弹窗  
const OpenMenuPopu = ()=>{  
    MapIsShow.value = false;  
    ChoiceMenuExample.value = uni.getSubNVueById('MultipleChoiceMenu');  
    ChoiceMenuExample.value.show('slide-in-bottom',600);  
    uni.$emit('FatherCheckboxValue',FatherCheckboxValue.value)  
    MapIsShow.value = true;  
}  

//返回首页  
const GoHome = () => {  
    MapIsShow.value = false;  
    MyAMap.value = null;  

    let time = setTimeout(()=>{  
        uni.redirectTo({  
            url: '/pages/Home/index'  
        });  
        clearTimeout(time);  
    },10)  
    uni.$emit('FatherCheckboxValue',[]);  
    uni.$off('SearchData')  
    uni.$off('FatherCheckboxValue')  
    uni.$off('ControlID')  
    uni.$off('CheckboxValue')  
}  

onBackPress(()=>{  
    GoHome();  
    return true;  
})
继续阅读 »

hbuildX版本:4.24
uniapp:vue3(默认模板,不包含uniapp-x)

注:只是分享,之前是做pc端的,刚接触uniapp,不清楚这个问题在历代uniapp更新中是否被解决,但是我在开发中遇到了,所以就发出来了。

情景描述:在一个除顶部菜单的全屏地图中,添加自定义控件,因为map地图层级很高,故使用subnvues,进行控件展示,包含两个方形小按钮,一个是定位自己,一个是点击进行弹窗,在弹窗中在进行操作,然后就发现了退出当前路由,再进入时,弹窗会出现重复!

解决办法:反正是困扰了一下午,无意中发现,将地图代码注释之后,再执行退出进入的操作,就不会出现这种情况,经过漫长的时间琢磨,给地图组件加上v-if,一是在subnvues弹窗之前将地图隐掉,执行完弹窗操作后,再显示出来,就只是一瞬,有用,二是,在退出当前页面时提前将地图隐掉,再执行页面跳转,就一个异步执行代码;

//打开菜单弹窗  
const OpenMenuPopu = ()=>{  
    MapIsShow.value = false;  
    ChoiceMenuExample.value = uni.getSubNVueById('MultipleChoiceMenu');  
    ChoiceMenuExample.value.show('slide-in-bottom',600);  
    uni.$emit('FatherCheckboxValue',FatherCheckboxValue.value)  
    MapIsShow.value = true;  
}  

//返回首页  
const GoHome = () => {  
    MapIsShow.value = false;  
    MyAMap.value = null;  

    let time = setTimeout(()=>{  
        uni.redirectTo({  
            url: '/pages/Home/index'  
        });  
        clearTimeout(time);  
    },10)  
    uni.$emit('FatherCheckboxValue',[]);  
    uni.$off('SearchData')  
    uni.$off('FatherCheckboxValue')  
    uni.$off('ControlID')  
    uni.$off('CheckboxValue')  
}  

onBackPress(()=>{  
    GoHome();  
    return true;  
})
收起阅读 »

【经验分享】【微信小程序】简单在已有账号系统基础上引入uni-id使用clientDB的权限管理

微信小程序

折腾了一下午,终于给我的小程序成功引入了uni-id,之前每次想到要迁移就头大,今天终于下定决心换到clientDB了,也是为了减少云函数的用量。在这里就简单分享一下校验。

参考:https://en.uniapp.dcloud.io/uniCloud/uni-id.html(这个教程是老的uni-id,对我够用了,不想迁移到新版)

安装uni-id

  1. 导入插件。
  2. 写config-center的配置,复制上面教程的文件只需要改mp-weixin.oauth.weixin内的appid和secret。
  3. 创建uni-id-users和opendb-verify-codes表,后者用于验证码对小程序其实不必要,但我不知道删了能不能跑。

以上几步可以简单的安装好uni-id,然后便是迁移工作了。

迁移

首先我希望我的权限是依赖于openid的,所以我便利了我自己搭建的账号数据库,并逐条写入uni-id-user表,只需要写两个字段_id和wx_openid.mp-weixin,这两个字段同时设置为原先的openid。

登录

之后按照文档的微信登录段,新建一个云函数,内容如下

const uniID = require("uni-id");  
exports.main = async function (event, context) {  
    // const res = await uniID.loginByWeixin(event.code)  
    const res = await uniID.loginByWeixin({  
        code: event.code,  
    });  
    return res;  
};

注意这个云函数要选择公共依赖uni-id,安装的uni-id也需要选择公共依赖uni-open-bridge-common(我不知道为什么默认没选)。
以上是官方文档的,我将其修改为了

'use strict';  
const uniID = require('uni-id');  

const db = uniCloud.database();  
const dbUID = db.collection('uni-id-users');  
exports.main = async function (event) {  
    const res = await uniID.loginByWeixin({ code: event.code });  
    if (res.uid !== res.openid) {  
        await dbUID.doc(res.openid).set((await dbUID.doc(res.uid).field({ _id: false }).get()).data[0]);  
        await dbUID.doc(res.uid).remove();  
        res.uid = res.openid;  
        res.tokenExpired = 0;  
    }  
    return res;  
};

因为默认第一次登录的账户他会新建一条记录,而这条记录的uid不是原有的openid,所以需要手动修改。
同时修改以后原先的token是作废的,所以使用tokenExpired=0来让客户端手动重新二次调用。(每次都需要上传一个只能用一次的code)

然后我客户端用这个云函数取代了我原先用于获取openid的云函数,因为这个也会返回openid,正好还能登录一举两得。

角色

另一方面为了用上uni-id的角色系统,我还在我自己的关于权限变更的云函数里同时变更uni-id-users表的role字段,这样clientDB也可以用角色控制了xd

继续阅读 »

折腾了一下午,终于给我的小程序成功引入了uni-id,之前每次想到要迁移就头大,今天终于下定决心换到clientDB了,也是为了减少云函数的用量。在这里就简单分享一下校验。

参考:https://en.uniapp.dcloud.io/uniCloud/uni-id.html(这个教程是老的uni-id,对我够用了,不想迁移到新版)

安装uni-id

  1. 导入插件。
  2. 写config-center的配置,复制上面教程的文件只需要改mp-weixin.oauth.weixin内的appid和secret。
  3. 创建uni-id-users和opendb-verify-codes表,后者用于验证码对小程序其实不必要,但我不知道删了能不能跑。

以上几步可以简单的安装好uni-id,然后便是迁移工作了。

迁移

首先我希望我的权限是依赖于openid的,所以我便利了我自己搭建的账号数据库,并逐条写入uni-id-user表,只需要写两个字段_id和wx_openid.mp-weixin,这两个字段同时设置为原先的openid。

登录

之后按照文档的微信登录段,新建一个云函数,内容如下

const uniID = require("uni-id");  
exports.main = async function (event, context) {  
    // const res = await uniID.loginByWeixin(event.code)  
    const res = await uniID.loginByWeixin({  
        code: event.code,  
    });  
    return res;  
};

注意这个云函数要选择公共依赖uni-id,安装的uni-id也需要选择公共依赖uni-open-bridge-common(我不知道为什么默认没选)。
以上是官方文档的,我将其修改为了

'use strict';  
const uniID = require('uni-id');  

const db = uniCloud.database();  
const dbUID = db.collection('uni-id-users');  
exports.main = async function (event) {  
    const res = await uniID.loginByWeixin({ code: event.code });  
    if (res.uid !== res.openid) {  
        await dbUID.doc(res.openid).set((await dbUID.doc(res.uid).field({ _id: false }).get()).data[0]);  
        await dbUID.doc(res.uid).remove();  
        res.uid = res.openid;  
        res.tokenExpired = 0;  
    }  
    return res;  
};

因为默认第一次登录的账户他会新建一条记录,而这条记录的uid不是原有的openid,所以需要手动修改。
同时修改以后原先的token是作废的,所以使用tokenExpired=0来让客户端手动重新二次调用。(每次都需要上传一个只能用一次的code)

然后我客户端用这个云函数取代了我原先用于获取openid的云函数,因为这个也会返回openid,正好还能登录一举两得。

角色

另一方面为了用上uni-id的角色系统,我还在我自己的关于权限变更的云函数里同时变更uni-id-users表的role字段,这样clientDB也可以用角色控制了xd

收起阅读 »

关于 app跳转微信客服报错deeplink custmerservice no permission排查解决

微信

1.准备工作,微信开放平企业认证微信开放平台app认证,企业微信企业认证共计600元

  1. 认证通过后在企业微信中>微信客服 绑定 微信开放平台认证的app
  2. 在manifest.json>app模块配置>share分享填入 开放平台认证的appid
  3. 重新打自定义包(标准基座会报错deeplink custmerservice no permission)
  4. 填写企业微信的id plus中的方法备注的是填写g_开头的不要管他
    附上代码
    openWeixinService(e){  
                let sweixin = null    
                            plus.share.getServices(res=>{    
                                sweixin = res.find(i => i.id === 'weixin')  
                                if(sweixin){    
                                    sweixin.openCustomerServiceChat({    
                                        corpid: '企业微信id',  //获取链接https://work.weixin.qq.com/wework_admin/frame#/profile  
                                        url: '客服链接',  //获取链接https://work.weixin.qq.com/wework_admin/frame#/app/servicer  
                                    },suc=>{    
                                        console.log("success",JSON.stringify(res))    
                                    },err=>{    
                                        console.log("error",JSON.stringify(err))    
                                    })    
                                }else{    
                                    plus.nativeUI.alert('当前环境不支持微信操作!')    
                                }    
                            },function(){    
                                uni.showToast({title: "获取服务失败,不支持该操作。"+JSON.stringify(e), icon: 'error'})    
                            })    
            } 
继续阅读 »

1.准备工作,微信开放平企业认证微信开放平台app认证,企业微信企业认证共计600元

  1. 认证通过后在企业微信中>微信客服 绑定 微信开放平台认证的app
  2. 在manifest.json>app模块配置>share分享填入 开放平台认证的appid
  3. 重新打自定义包(标准基座会报错deeplink custmerservice no permission)
  4. 填写企业微信的id plus中的方法备注的是填写g_开头的不要管他
    附上代码
    openWeixinService(e){  
                let sweixin = null    
                            plus.share.getServices(res=>{    
                                sweixin = res.find(i => i.id === 'weixin')  
                                if(sweixin){    
                                    sweixin.openCustomerServiceChat({    
                                        corpid: '企业微信id',  //获取链接https://work.weixin.qq.com/wework_admin/frame#/profile  
                                        url: '客服链接',  //获取链接https://work.weixin.qq.com/wework_admin/frame#/app/servicer  
                                    },suc=>{    
                                        console.log("success",JSON.stringify(res))    
                                    },err=>{    
                                        console.log("error",JSON.stringify(err))    
                                    })    
                                }else{    
                                    plus.nativeUI.alert('当前环境不支持微信操作!')    
                                }    
                            },function(){    
                                uni.showToast({title: "获取服务失败,不支持该操作。"+JSON.stringify(e), icon: 'error'})    
                            })    
            } 
收起阅读 »

公司团队接单/技术问题咨询/bug修复/二次开发

外包 外包接单 uniapp

uniapp项目开发在线接单,可定制,可二开,时间充裕,保质保量
有需要请联系 vx : shiningshang

uniapp项目开发在线接单,可定制,可二开,时间充裕,保质保量
有需要请联系 vx : shiningshang

解决 隐藏原生tabbar之后,手机屏幕下方会出现白色区域的问题

uniapp

在源码视图中添加"safearea": {"bottom": { "offset": "none" }

在源码视图中添加"safearea": {"bottom": { "offset": "none" }