
为什么应该在uni-app项目里使用luch-request?
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
项目的开发离不开数据交互,一个好的request请求库可以让我们的开发事半功倍。uni-app也不例外,uni.request只提供基础请求功能,无法达到项目开发的要求,luch-request应运而生。

luch-request是什么?
luch-request 是一个基于Promise 开发的uni-app跨平台、项目级别的请求库,它有更小的体积,易用的api,方便简单的自定义能力。
luch-request诞生于19-05月,至今已迭代20多个版本。DCloud插件市场request类插件下载量第一。支持npm下载。
它能为我们解决什么问题?
- 支持全局挂载
- 支持多个全局配置实例
- 支持自定义验证器
- 支持文件上传/下载
- 支持task 操作
- 支持自定义参数
- 支持多请求拦截器/响应拦截器
- 对参数的处理比uni.request 更强
也许你还不明白这些有什么用。但是他却对应着我们开发中一个一个的痛点。
你的数据获取方式
uni.request({
url: this.$baseUrl + 'api/user?arg1=data1'
method: 'POST',
data: {id:1},
header: {Content-Type: '...', token: '....'}
success: (res) => {},
fail: (err) => {}
})
使用luch-request后
this.$http.post('/api/user', {
id: 1
}, {
params: {
arg1: data1
}
}).then(res => {
...
}).catch(err => {
...
})
它有什么优势?
条件编译开发: 减少代码体积,减少开发中debug时的误导影响。看不到对应终端额外的参数。
极易的自定义能力: 有些插件会把loading、auth等参数加入配置,使其做一些请求之外的操作,这些配置并不是所有人都会使用。request请求库只需专注于请求即可。luch-request对额外操作的处理则更为优雅,增加了custom
配置,使开发者可以做一些自定义操作。
http.setConfig((config) => { /* config 为默认全局配置*/
config.baseURL = 'http://www.quanzhan.co' /* 根域名 */
config.custom = {
loading: true // 默认有loading
}
return config
})
http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */
config.header = {
...config.header,
a: 1 // 演示拦截器header加参
}
// 演示custom 用处
if (config.custom.loading) {
uni.showLoading()
}
return config
}, (config) => {
return Promise.reject(config)
})
http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作 */
// if (response.data.code !== 200) { // 服务端返回的状态码不等于200,则reject()
// return Promise.reject(response)
// }
if (response.config.custom.loading) {
uni.hideLoading()
}
return response
}, (response) => { // 请求错误做点什么。可以使用async await 做异步操作
console.log(response)
if (response.config.custom.loading) {
uni.hideLoading()
}
return Promise.reject(response)
})
// 单接口不想要loading
http.get('user/list', {custom: {loading: false}})
http.post('user/list', {}, {custom: {loading: false}})
易用的api设计: 部分api设计为降低学习成本,参照axios设计。并扩展一些其它的api,入门更加容易。
...
快速上手
npm
npm i luch-request -S
cli 用户使用npm 包需增加以下配置项目根路径下创建vue.config.js 文件,增加以下内容
// vue.config.js
module.exports = {
transpileDependencies: ['luch-request']
}
GitHub
使用DCloud/luch-request 文件夹即可
DCloud插件市场
DCloud插件市场
luch-request官网
更新历史
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
项目的开发离不开数据交互,一个好的request请求库可以让我们的开发事半功倍。uni-app也不例外,uni.request只提供基础请求功能,无法达到项目开发的要求,luch-request应运而生。
luch-request是什么?
luch-request 是一个基于Promise 开发的uni-app跨平台、项目级别的请求库,它有更小的体积,易用的api,方便简单的自定义能力。
luch-request诞生于19-05月,至今已迭代20多个版本。DCloud插件市场request类插件下载量第一。支持npm下载。
它能为我们解决什么问题?
- 支持全局挂载
- 支持多个全局配置实例
- 支持自定义验证器
- 支持文件上传/下载
- 支持task 操作
- 支持自定义参数
- 支持多请求拦截器/响应拦截器
- 对参数的处理比uni.request 更强
也许你还不明白这些有什么用。但是他却对应着我们开发中一个一个的痛点。
你的数据获取方式
uni.request({
url: this.$baseUrl + 'api/user?arg1=data1'
method: 'POST',
data: {id:1},
header: {Content-Type: '...', token: '....'}
success: (res) => {},
fail: (err) => {}
})
使用luch-request后
this.$http.post('/api/user', {
id: 1
}, {
params: {
arg1: data1
}
}).then(res => {
...
}).catch(err => {
...
})
它有什么优势?
条件编译开发: 减少代码体积,减少开发中debug时的误导影响。看不到对应终端额外的参数。
极易的自定义能力: 有些插件会把loading、auth等参数加入配置,使其做一些请求之外的操作,这些配置并不是所有人都会使用。request请求库只需专注于请求即可。luch-request对额外操作的处理则更为优雅,增加了custom
配置,使开发者可以做一些自定义操作。
http.setConfig((config) => { /* config 为默认全局配置*/
config.baseURL = 'http://www.quanzhan.co' /* 根域名 */
config.custom = {
loading: true // 默认有loading
}
return config
})
http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */
config.header = {
...config.header,
a: 1 // 演示拦截器header加参
}
// 演示custom 用处
if (config.custom.loading) {
uni.showLoading()
}
return config
}, (config) => {
return Promise.reject(config)
})
http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作 */
// if (response.data.code !== 200) { // 服务端返回的状态码不等于200,则reject()
// return Promise.reject(response)
// }
if (response.config.custom.loading) {
uni.hideLoading()
}
return response
}, (response) => { // 请求错误做点什么。可以使用async await 做异步操作
console.log(response)
if (response.config.custom.loading) {
uni.hideLoading()
}
return Promise.reject(response)
})
// 单接口不想要loading
http.get('user/list', {custom: {loading: false}})
http.post('user/list', {}, {custom: {loading: false}})
易用的api设计: 部分api设计为降低学习成本,参照axios设计。并扩展一些其它的api,入门更加容易。
...
快速上手
npm
npm i luch-request -S
cli 用户使用npm 包需增加以下配置项目根路径下创建vue.config.js 文件,增加以下内容
// vue.config.js
module.exports = {
transpileDependencies: ['luch-request']
}
GitHub
使用DCloud/luch-request 文件夹即可
DCloud插件市场
DCloud插件市场
luch-request官网
更新历史
收起阅读 »
关于android 应用在手机安装提示存在风险问题的解决方案
首先,DCloud的代码是没有病毒的!不用怀疑!!!!公安部、教育部、工商总局都在用DCloud的引擎做app,他们的应用从来没有被报过毒。案例
不要使用公共测试证书发正式应用。公共测试证书一旦被某个非法app使用过,某些不靠谱的检测平台,就会把所有使用公共测试证书的app都报病毒。请使用自己的证书。
最后,如果你的app确定没有非法内容,比如色情、诈骗。那就去投诉误报病毒的rom厂商。
rom弹风险软件的原理:某个app被确定为非法软件,rom会把它的包名、证书、权限清单列入观察名单,在相似的app安装时弹框提醒用户。
也就是DCloud的某个开发者的app被确定为非法软件后,有的做的不靠谱的风险监测软件会凭借一些他们提取的并不合理的特征符,去给其他DCloud引擎开发的app弹框。
但并非所有使用DCloud引擎的应用都会被误报。DCloud引擎仅在app端就有几十万个活跃应用,被误报的仍然是很少数。
目前接收到的被报病毒都是检测平台误报导致。可按已下步骤操作解决问题。第三方SDK与第三方的uni原生插件可能存在问题也可以按已下步骤进行操作。得到问题具体原因。
检测平台
腾讯手机管家
检测链接 https://m.qq.com/security_lab/scans_online.jsp
申诉链接 https://m.qq.com/complaint
安鉴
国内的审核建议以该平台为主。优先在该平台检测自己的apk
1。去安天
平台安鉴
进行注册. 链接地址:https://dev.avlsec.com/public-pages/home
2。创建项目。并提交apk检测
3。如果您的应用被认为存在风向请申诉。目前已知条件需要企业注册才可以申诉
virustotal
官网:https://www.virustotal.com/gui/home/
由于virustotal属于平台聚合。多数属于静态检测特征极其容易出现误报。目前应用市场下载的apk放到上面去检测多少都会出现几个病毒。均是误报!所以不要过于担心的你应用不安全。对于国内上架影响不大。
以下是申请误报的教程 仅供参考
申报误报 一般1~2个工作日会得到回复,并按邮件说明操作与具体厂商进行沟通。
DCloud并非应用主体,走不了这些检测平台的投诉流程。
需要大家纷纷去投诉,才能让这些检测平台纠正自己的算法。
建议
给开发者一些规避建议:
- 要申请软著,正常上架应用商店。不上架的app尤其容易被误报。而且上架后才能占据包名,避免其他有问题的包和你的包使用相同包名,造成对你的应用的误杀。
- 前端代码要加密,在manifest里可以配置。
- apk要加固,网上很多加固服务。有的应用商店自带加固服务。
- 公共测试证书就是测试用的,商用时使用自己的证书打包。
- 自有证书填写要规范,不要乱填!
- 不要用不可信的原生插件。尤其是私下交易的原生插件。
- 少申请敏感权限,比如不上架的应用又要通讯录权限,很容易被视为裸聊诈骗嫌疑。
- 正正经经做应用,有的应用确实有嫌疑,即便是人工检测,检测员都不敢给你恢复正常。比如有的应用叫红米金融、360网贷,这些擦边球名称看起来就像要搞诈骗的样子。即便运营者此时此刻还没跑路,检测员也不敢给你恢复。
身正不怕影子斜。DCloud的引擎根本不涉及业务,不会触发任何诈骗、色情的嫌疑。开发者只要自己确实清白,那就去正常的上架、投诉。
常见问题
如果检测有病毒。按一下方向检测一下自己的代码及配置:
1、是否使用了公共测试证书
。如果是请更改您的打包证书!!!
2、如果是私有证书,请检测您的证书是否符合规范,相关信息是否全部填写,并填写真实数据。如果不是请更正!!!
3、检测权限配置。如果没有使用相关通能请将相关权限删除。如联系人
、定位
、相机
、音频录音
等敏感权限。容易被误报!!!
4、应用名称过于贴近敏感词汇也会被报风险应用。如“xx币”、“xx赚钱”、“区块链xx” 等。
apk检测不报病毒了,应用安装后还是会报有风险?
请将APK版本升级。如果还是不行将检测的链接与误报相关平台联系。申报误报!!!
HBuilderX更新了公共测试证书详情
如果你还在使用测试证书需要注意!安装时可能被系统弹窗提示有风险。因为签名更换了! 导致系统记录数据与安装apk不符!怀疑你可能是钓鱼系app!
关于apk加固
推荐uni安全加固参考其背后支持对接多个加固服务商,包括腾讯云和蚂蚁小程序云
关于被腾讯检测出A.gray.Bulimia.a病毒
多数是由于应用性质决定的。具体解释权在腾讯!
1、补充隐私协议。参考
2、请去 https://m.qq.com/complaint/ 申诉。。。
关于被腾讯检测出A.gray.Bulimia.b病毒
目前了解到的情况都与签名证书有关联。
1、使用了测试证书。请改为自己私有证书
2、使用了私有证书。但证书信息填写不正规。CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
这种情况也是违规的。请填写真实信息。并及时改正。重新签名打包提交检测。
关于安天
平台检查app存在风险的解决方案
1、去安天
平台安鉴
进行注册并检测自己的app. 链接地址:https://dev.avlsec.com/public-pages/home
2、如果您的应用被认为存在风向请申诉。目前已知条件需要企业注册才可以申诉。
安鉴检测应用集成了极光
官方并未集成极光
SDK。是检测平台误报。
首先,DCloud的代码是没有病毒的!不用怀疑!!!!公安部、教育部、工商总局都在用DCloud的引擎做app,他们的应用从来没有被报过毒。案例
不要使用公共测试证书发正式应用。公共测试证书一旦被某个非法app使用过,某些不靠谱的检测平台,就会把所有使用公共测试证书的app都报病毒。请使用自己的证书。
最后,如果你的app确定没有非法内容,比如色情、诈骗。那就去投诉误报病毒的rom厂商。
rom弹风险软件的原理:某个app被确定为非法软件,rom会把它的包名、证书、权限清单列入观察名单,在相似的app安装时弹框提醒用户。
也就是DCloud的某个开发者的app被确定为非法软件后,有的做的不靠谱的风险监测软件会凭借一些他们提取的并不合理的特征符,去给其他DCloud引擎开发的app弹框。
但并非所有使用DCloud引擎的应用都会被误报。DCloud引擎仅在app端就有几十万个活跃应用,被误报的仍然是很少数。
目前接收到的被报病毒都是检测平台误报导致。可按已下步骤操作解决问题。第三方SDK与第三方的uni原生插件可能存在问题也可以按已下步骤进行操作。得到问题具体原因。
检测平台
腾讯手机管家
检测链接 https://m.qq.com/security_lab/scans_online.jsp
申诉链接 https://m.qq.com/complaint
安鉴
国内的审核建议以该平台为主。优先在该平台检测自己的apk
1。去安天
平台安鉴
进行注册. 链接地址:https://dev.avlsec.com/public-pages/home
2。创建项目。并提交apk检测
3。如果您的应用被认为存在风向请申诉。目前已知条件需要企业注册才可以申诉
virustotal
官网:https://www.virustotal.com/gui/home/
由于virustotal属于平台聚合。多数属于静态检测特征极其容易出现误报。目前应用市场下载的apk放到上面去检测多少都会出现几个病毒。均是误报!所以不要过于担心的你应用不安全。对于国内上架影响不大。
以下是申请误报的教程 仅供参考
申报误报 一般1~2个工作日会得到回复,并按邮件说明操作与具体厂商进行沟通。
DCloud并非应用主体,走不了这些检测平台的投诉流程。
需要大家纷纷去投诉,才能让这些检测平台纠正自己的算法。
建议
给开发者一些规避建议:
- 要申请软著,正常上架应用商店。不上架的app尤其容易被误报。而且上架后才能占据包名,避免其他有问题的包和你的包使用相同包名,造成对你的应用的误杀。
- 前端代码要加密,在manifest里可以配置。
- apk要加固,网上很多加固服务。有的应用商店自带加固服务。
- 公共测试证书就是测试用的,商用时使用自己的证书打包。
- 自有证书填写要规范,不要乱填!
- 不要用不可信的原生插件。尤其是私下交易的原生插件。
- 少申请敏感权限,比如不上架的应用又要通讯录权限,很容易被视为裸聊诈骗嫌疑。
- 正正经经做应用,有的应用确实有嫌疑,即便是人工检测,检测员都不敢给你恢复正常。比如有的应用叫红米金融、360网贷,这些擦边球名称看起来就像要搞诈骗的样子。即便运营者此时此刻还没跑路,检测员也不敢给你恢复。
身正不怕影子斜。DCloud的引擎根本不涉及业务,不会触发任何诈骗、色情的嫌疑。开发者只要自己确实清白,那就去正常的上架、投诉。
常见问题
如果检测有病毒。按一下方向检测一下自己的代码及配置:
1、是否使用了公共测试证书
。如果是请更改您的打包证书!!!
2、如果是私有证书,请检测您的证书是否符合规范,相关信息是否全部填写,并填写真实数据。如果不是请更正!!!
3、检测权限配置。如果没有使用相关通能请将相关权限删除。如联系人
、定位
、相机
、音频录音
等敏感权限。容易被误报!!!
4、应用名称过于贴近敏感词汇也会被报风险应用。如“xx币”、“xx赚钱”、“区块链xx” 等。
apk检测不报病毒了,应用安装后还是会报有风险?
请将APK版本升级。如果还是不行将检测的链接与误报相关平台联系。申报误报!!!
HBuilderX更新了公共测试证书详情
如果你还在使用测试证书需要注意!安装时可能被系统弹窗提示有风险。因为签名更换了! 导致系统记录数据与安装apk不符!怀疑你可能是钓鱼系app!
关于apk加固
推荐uni安全加固参考其背后支持对接多个加固服务商,包括腾讯云和蚂蚁小程序云
关于被腾讯检测出A.gray.Bulimia.a病毒
多数是由于应用性质决定的。具体解释权在腾讯!
1、补充隐私协议。参考
2、请去 https://m.qq.com/complaint/ 申诉。。。
关于被腾讯检测出A.gray.Bulimia.b病毒
目前了解到的情况都与签名证书有关联。
1、使用了测试证书。请改为自己私有证书
2、使用了私有证书。但证书信息填写不正规。CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
这种情况也是违规的。请填写真实信息。并及时改正。重新签名打包提交检测。
关于安天
平台检查app存在风险的解决方案
1、去安天
平台安鉴
进行注册并检测自己的app. 链接地址:https://dev.avlsec.com/public-pages/home
2、如果您的应用被认为存在风向请申诉。目前已知条件需要企业注册才可以申诉。
安鉴检测应用集成了极光
官方并未集成极光
SDK。是检测平台误报。

HBuilderX2.8+的正式版什么时候能发布?
HBuilderX2.8+的正式版什么时候能发布?等着ios打包呢!Alpha版打包,感觉心里不慎,
HBuilderX2.8+的正式版什么时候能发布?等着ios打包呢!Alpha版打包,感觉心里不慎,

安卓10 gradle版本和sdk最小兼容版本测试
使用官方提供的demo,把gradler版本设置gradle-5.6.4-all.zip,编译版本为3.6.3,当minSdkVersion为22的时候,编译出来项目安卓10跑没问题,当minSdkVersion为23的时候,页面还是空白,只有导航栏
使用官方提供的demo,把gradler版本设置gradle-5.6.4-all.zip,编译版本为3.6.3,当minSdkVersion为22的时候,编译出来项目安卓10跑没问题,当minSdkVersion为23的时候,页面还是空白,只有导航栏

uni-app下载图片(新手上路)
//app端下载图片
this.$h5Util.interaction('保存图片', '是否保存到本地相册').then(res => {
if (res == 1) {
// const downloadTask =
uni.downloadFile({
url: this.str, //这里为图片路径
success: (res) => {
if (res.statusCode === 201) {
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function() {
uni.showToast({
title: '保存成功!',
icon: 'none'
})
},
fail: function() {
uni.showToast({
title: '保存失败,请稍后重试!',
icon: 'none'
})
}
});
}
}
});
// downloadTask.onProgressUpdate((res) => {
// this.bt=true;
// console.log('下载进度' + res.progress);
// console.log('已经下载的数据长度' + res.totalBytesWritten);
// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
// this.br=(res.totalBytesWritten/res.totalBytesExpectedToWrite)*100
// // 测试条件,取消下载任务。
// // if (res.progress > 50) {
// // downloadTask.abort();
// // }
// });
}
})
//pc端测试时H5下载
需要: Base64
import {
pathToBase64, //图片路径转base64
base64ToPath, //base64码转图片
} from '@/js_sdk/gsq-image-tools/image-tools/index.js'
var url;
this.$h5Util.interaction('保存图片', '手机H5点击或长按二维码保存').then(res => {
if (res == 1) {
uni.downloadFile({
url: this.str, //这里为图片路径
success: (res) => {
if (res.statusCode === 201) {
pathToBase64(res.tempFilePath).then(base64 => {
url = base64;
var oA = document.createElement("a");
oA.download =" ";// 设置下载的文件名,默认是'下载'
oA.href = url;
oA.click();
document.body.appendChild(oA);
oA.remove(); // 下载之后把创建的元素删除
})
.catch(error => {
console.error(error)
})
}
}
});
//手机H5端可以点击图片或长按直接保存
//目前只找到这些嘿嘿
//app端下载图片
this.$h5Util.interaction('保存图片', '是否保存到本地相册').then(res => {
if (res == 1) {
// const downloadTask =
uni.downloadFile({
url: this.str, //这里为图片路径
success: (res) => {
if (res.statusCode === 201) {
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function() {
uni.showToast({
title: '保存成功!',
icon: 'none'
})
},
fail: function() {
uni.showToast({
title: '保存失败,请稍后重试!',
icon: 'none'
})
}
});
}
}
});
// downloadTask.onProgressUpdate((res) => {
// this.bt=true;
// console.log('下载进度' + res.progress);
// console.log('已经下载的数据长度' + res.totalBytesWritten);
// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
// this.br=(res.totalBytesWritten/res.totalBytesExpectedToWrite)*100
// // 测试条件,取消下载任务。
// // if (res.progress > 50) {
// // downloadTask.abort();
// // }
// });
}
})
//pc端测试时H5下载
需要: Base64
import {
pathToBase64, //图片路径转base64
base64ToPath, //base64码转图片
} from '@/js_sdk/gsq-image-tools/image-tools/index.js'
var url;
this.$h5Util.interaction('保存图片', '手机H5点击或长按二维码保存').then(res => {
if (res == 1) {
uni.downloadFile({
url: this.str, //这里为图片路径
success: (res) => {
if (res.statusCode === 201) {
pathToBase64(res.tempFilePath).then(base64 => {
url = base64;
var oA = document.createElement("a");
oA.download =" ";// 设置下载的文件名,默认是'下载'
oA.href = url;
oA.click();
document.body.appendChild(oA);
oA.remove(); // 下载之后把创建的元素删除
})
.catch(error => {
console.error(error)
})
}
}
});
//手机H5端可以点击图片或长按直接保存
//目前只找到这些嘿嘿

PDRCore.h里的runInBackgroud是可以用来运行一个在后台运行的 js 逻辑么?
PDRCore.h里的runInBackgroud是可以用来运行一个在后台运行的 js 逻辑么?
也就是说比如我要运行类似 webworker 的类似逻辑,在后台持续自行不断读取网络或者做各种计算,而不需要 UI 展示。
这个方法是可以用来干这个的么? 似乎没有看到相关这个主题的文档。
PDRCore.h里的runInBackgroud是可以用来运行一个在后台运行的 js 逻辑么?
也就是说比如我要运行类似 webworker 的类似逻辑,在后台持续自行不断读取网络或者做各种计算,而不需要 UI 展示。
这个方法是可以用来干这个的么? 似乎没有看到相关这个主题的文档。

源码中,单词是不是拼错了? h5Engine.persentViewController = self;
在 HBuilder-Integrate项目里, HBuilder-Integrate/WebAppController.m 的 46 行 h5Engine.persentViewController = self;
感觉似乎应该是 h5Engine.presentViewController = self;
英文单词意思应该是要表达为:“当前的 viewcontroller” 的意思吧?
在 HBuilder-Integrate项目里, HBuilder-Integrate/WebAppController.m 的 46 行 h5Engine.persentViewController = self;
感觉似乎应该是 h5Engine.presentViewController = self;
英文单词意思应该是要表达为:“当前的 viewcontroller” 的意思吧?

【报Bug】uni.chooseImage({count:a-b, 动态设置count在苹果真机失效
没有积分,先这样发吧,
uni.chooseImage({
count: (this.imgCountTotal - this.imgCount), //动态值,默认6,总限制6
在苹果真机(版本13.5.1;型号iPhone XR;号码MT192CH/A)中,第2次选图开始,count:设置无效,可以选择9张图片,导致出现7/6的情况出现,苹果系统版本如附件图,(安卓真机和模拟器均正常)
第1次选择时,count:设置的6是生效的,选图界面提示不能超过6,第1+n次选择时,选图界面就变成了默认的9张了,
上传面板用的colorui的表单例子中的上传面板,个人认为实际应该和colorui无关,和uni.chooseImage兼容性、跨平台有关,
imgCountTotal: 6, //总限制6张图片
imgCount: 0, //当前已传张数
ChooseImage() {
console.log("this.imgCountTotal - this.imgCount = " + (this.imgCountTotal - this.imgCount));
uni.chooseImage({
count: (this.imgCountTotal - this.imgCount), //总限制6
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: (res) => {
let tempArr = res.tempFilePaths;
let filePaths = tempArr; //简单迭代
for (let i = 0; i < filePaths.length; i++) {
let filePath = filePaths[i];
this.imgCount += 1;
// http上传
}
}
});
},
DelImg(e) {
this.imgList.splice(e.currentTarget.dataset.index, 1);
this.imgServerArr.splice(e.currentTarget.dataset.index, 1);
this.imgCount -= 1;
},
没有积分,先这样发吧,
uni.chooseImage({
count: (this.imgCountTotal - this.imgCount), //动态值,默认6,总限制6
在苹果真机(版本13.5.1;型号iPhone XR;号码MT192CH/A)中,第2次选图开始,count:设置无效,可以选择9张图片,导致出现7/6的情况出现,苹果系统版本如附件图,(安卓真机和模拟器均正常)
第1次选择时,count:设置的6是生效的,选图界面提示不能超过6,第1+n次选择时,选图界面就变成了默认的9张了,
上传面板用的colorui的表单例子中的上传面板,个人认为实际应该和colorui无关,和uni.chooseImage兼容性、跨平台有关,
imgCountTotal: 6, //总限制6张图片
imgCount: 0, //当前已传张数
ChooseImage() {
console.log("this.imgCountTotal - this.imgCount = " + (this.imgCountTotal - this.imgCount));
uni.chooseImage({
count: (this.imgCountTotal - this.imgCount), //总限制6
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: (res) => {
let tempArr = res.tempFilePaths;
let filePaths = tempArr; //简单迭代
for (let i = 0; i < filePaths.length; i++) {
let filePath = filePaths[i];
this.imgCount += 1;
// http上传
}
}
});
},
DelImg(e) {
this.imgList.splice(e.currentTarget.dataset.index, 1);
this.imgServerArr.splice(e.currentTarget.dataset.index, 1);
this.imgCount -= 1;
},
收起阅读 »

缘信IM社交liao tian 即时通讯源码定制
缘信IM社交聊天即时通讯源码出售转让
Android端+iOS端+服务端+PC端+web+H5
全平台源代码,全行业最低价,火爆出售中
支持万人大群,系统并发量大,性能超稳定,已经过上百家客户使用验证
架构成熟,成品稳定系统,可直接上线使用
支持二次开发,大量节约成本,缩短开发周期
独立部署,支持分布式集群,消息加密传输更安全
拓展性强,可与其他系统进行无缝对接
功能齐全,部分功能如下:
支持点对点私聊,多人群聊,消息类型覆盖全面(语音、图片、位置、文件、小视频等基础聊天必备功能)
支持充值(微信、支付宝、Paypal)、提现、绑定银行卡,费率设置等;红包、转账、收付款均具备
支持音视频通话、设置表情、公众号、圈子、附近的人等
支持推荐分享注册,奖励金分配等分销规则,可按需定制
后台可控力度强,冻结账户、冻结群、提现权限等;财务充值提现列表清晰可查
多端消息互通
可联系获取完整功能清单以及体验地址
全行业全平台最低价出售转让,也可按需定制开发
联系 V信:walkway2007
缘信IM社交聊天即时通讯源码出售转让
Android端+iOS端+服务端+PC端+web+H5
全平台源代码,全行业最低价,火爆出售中
支持万人大群,系统并发量大,性能超稳定,已经过上百家客户使用验证
架构成熟,成品稳定系统,可直接上线使用
支持二次开发,大量节约成本,缩短开发周期
独立部署,支持分布式集群,消息加密传输更安全
拓展性强,可与其他系统进行无缝对接
功能齐全,部分功能如下:
支持点对点私聊,多人群聊,消息类型覆盖全面(语音、图片、位置、文件、小视频等基础聊天必备功能)
支持充值(微信、支付宝、Paypal)、提现、绑定银行卡,费率设置等;红包、转账、收付款均具备
支持音视频通话、设置表情、公众号、圈子、附近的人等
支持推荐分享注册,奖励金分配等分销规则,可按需定制
后台可控力度强,冻结账户、冻结群、提现权限等;财务充值提现列表清晰可查
多端消息互通
可联系获取完整功能清单以及体验地址
全行业全平台最低价出售转让,也可按需定制开发
联系 V信:walkway2007

分享一个电商系统-可对接无人零售:Eggjs+Tarojs+AntDesign+React+Graphql+Typescript
演示图:
小程序端:
管理端:
开源地址:https://gitee.com/GlobeCat/youdidao-unmanned-shop
交流群:
联系QQ: 59187993
反馈邮箱: layzhou@foxmail.com
演示图:
小程序端:
管理端:
开源地址:https://gitee.com/GlobeCat/youdidao-unmanned-shop
交流群:
联系QQ: 59187993
反馈邮箱: layzhou@foxmail.com

gradle版本影响小程序的渲染
gradle版本如果是3.5.3,打开wgt小程序正常,如果是3.6.3的话,打开就只能看到导航栏,其他都是空白,仅限与安卓10,10以下正常,每次都是第一次安装重来的方式验证,不知道有谁遇到和我一样的问题,无奈没有积分,请教前辈是否有解决方案
gradle版本如果是3.5.3,打开wgt小程序正常,如果是3.6.3的话,打开就只能看到导航栏,其他都是空白,仅限与安卓10,10以下正常,每次都是第一次安装重来的方式验证,不知道有谁遇到和我一样的问题,无奈没有积分,请教前辈是否有解决方案