Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
540e825e
U
uni-app
项目概览
DCloud
/
uni-app
3 个月 前同步成功
通知
725
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
540e825e
编写于
12月 13, 2018
作者:
郭
郭胜强
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev' of github.com:dcloudio/uni-app into dev
# Conflicts: # src/platforms/mp-alipay/service/api/protocols.js
上级
3cf3ae3c
8e3d0cd5
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
372 addition
and
46 deletion
+372
-46
packages/uni-mp-baidu/dist/index.js
packages/uni-mp-baidu/dist/index.js
+101
-27
src/core/helpers/promise.js
src/core/helpers/promise.js
+5
-0
src/core/runtime/wrapper.js
src/core/runtime/wrapper.js
+12
-9
src/core/service/plugins/app/create-app.js
src/core/service/plugins/app/create-app.js
+16
-2
src/core/service/plugins/app/router-guard.js
src/core/service/plugins/app/router-guard.js
+1
-1
src/platforms/h5/helpers/get-window-offset.js
src/platforms/h5/helpers/get-window-offset.js
+8
-3
src/platforms/h5/view/components/map/index.vue
src/platforms/h5/view/components/map/index.vue
+4
-2
src/platforms/mp-alipay/service/api/protocols.js
src/platforms/mp-alipay/service/api/protocols.js
+167
-1
src/platforms/mp-baidu/service/api/protocols.js
src/platforms/mp-baidu/service/api/protocols.js
+58
-1
未找到文件。
packages/uni-mp-baidu/dist/index.js
浏览文件 @
540e825e
...
...
@@ -19,8 +19,13 @@ function hasOwn (obj, key) {
const
SYNC_API_RE
=
/hideKeyboard|upx2px|canIUse|^create|Sync$|Manager$/
;
const
CONTEXT_API_RE
=
/^create|Manager$/
;
const
CALLBACK_API_RE
=
/^on/
;
function
isContextApi
(
name
)
{
return
CONTEXT_API_RE
.
test
(
name
)
}
function
isSyncApi
(
name
)
{
return
SYNC_API_RE
.
test
(
name
)
}
...
...
@@ -112,68 +117,137 @@ function upx2px (number, newDeviceWidth) {
return
number
}
var
protocols
=
{};
// 不支持的 API 列表
const
TODOS
=
[
'
hideKeyboard
'
];
function
createTodoMethod
(
contextName
,
methodName
)
{
return
function
unsupported
()
{
console
.
error
(
`百度小程序
${
contextName
}
暂不支持
${
methodName
}
`
);
}
}
// 需要做转换的 API 列表
const
protocols
=
{
request
:
{
args
(
fromArgs
)
{
// TODO
// data 不支持 ArrayBuffer
// method 不支持 TRACE, CONNECT
// dataType 可取值为 string/json
return
fromArgs
}
},
connectSocket
:
{
args
:
{
method
:
false
}
},
previewImage
:
{
args
:
{
indicator
:
false
,
loop
:
false
}
},
getRecorderManager
:
{
returnValue
(
fromRet
)
{
fromRet
.
onFrameRecorded
=
createTodoMethod
(
'
RecorderManager
'
,
'
onFrameRecorded
'
);
}
},
getBackgroundAudioManager
:
{
returnValue
(
fromRet
)
{
fromRet
.
onPrev
=
createTodoMethod
(
'
BackgroundAudioManager
'
,
'
onPrev
'
);
fromRet
.
onNext
=
createTodoMethod
(
'
BackgroundAudioManager
'
,
'
onNext
'
);
}
},
createInnerAudioContext
:
{
returnValue
:
{
buffered
:
false
}
},
createVideoContext
:
{
returnValue
:
{
playbackRate
:
false
}
},
scanCode
:
{
onlyFromCamera
:
false
,
scanType
:
false
}
};
TODOS
.
forEach
(
todoApi
=>
{
protocols
[
todoApi
]
=
false
;
});
const
CALLBACKS
=
[
'
success
'
,
'
fail
'
,
'
cancel
'
,
'
complete
'
];
function
processCallback
(
method
,
returnValue
)
{
function
processCallback
(
method
Name
,
method
,
returnValue
)
{
return
function
(
res
)
{
return
method
(
processReturnValue
(
res
,
returnValue
))
return
method
(
processReturnValue
(
methodName
,
res
,
returnValue
))
}
}
function
processArgs
(
fromArgs
,
argsOption
=
{},
returnValue
=
{}
)
{
function
processArgs
(
methodName
,
fromArgs
,
argsOption
=
{},
returnValue
=
{},
keepFromArgs
=
false
)
{
if
(
isPlainObject
(
fromArgs
))
{
// 一般 api 的参数解析
const
toArgs
=
{};
Object
.
keys
(
fromArgs
).
forEach
(
key
=>
{
const
toArgs
=
keepFromArgs
===
true
?
fromArgs
:
{};
// returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值
if
(
isFn
(
argsOption
))
{
argsOption
=
argsOption
(
fromArgs
,
toArgs
)
||
{};
}
for
(
let
key
in
fromArgs
)
{
if
(
hasOwn
(
argsOption
,
key
))
{
let
keyOption
=
argsOption
[
key
];
if
(
isFn
(
keyOption
))
{
keyOption
=
keyOption
(
fromArgs
[
key
],
fromArgs
);
keyOption
=
keyOption
(
fromArgs
[
key
],
fromArgs
,
toArgs
);
}
if
(
!
keyOption
)
{
// 不支持的参数
console
.
warn
(
`
${
百度小程序
}
${
n
ame
}
暂不支持
${
key
}
`
);
console
.
warn
(
`
百度小程序
${
methodN
ame
}
暂不支持
${
key
}
`
);
}
else
if
(
isStr
(
keyOption
))
{
// 重写参数 key
toArgs
[
keyOption
]
=
fromArgs
[
key
];
}
else
if
(
isPlainObject
(
keyOption
))
{
// {name:newName,value:value}可重新指定参数 key:value
toArgs
[
keyOption
.
name
?
keyOption
.
name
:
key
]
=
keyOption
.
value
;
}
}
else
if
(
CALLBACKS
.
includes
(
key
))
{
toArgs
[
key
]
=
processCallback
(
fromArgs
[
key
],
returnValue
);
toArgs
[
key
]
=
processCallback
(
methodName
,
fromArgs
[
key
],
returnValue
);
}
else
{
toArgs
[
key
]
=
fromArgs
[
key
];
if
(
!
keepFromArgs
)
{
toArgs
[
key
]
=
fromArgs
[
key
];
}
}
}
);
}
return
toArgs
}
else
if
(
isFn
(
fromArgs
))
{
fromArgs
=
processCallback
(
fromArgs
,
returnValue
);
fromArgs
=
processCallback
(
methodName
,
fromArgs
,
returnValue
);
}
return
fromArgs
}
function
processReturnValue
(
res
,
returnValue
)
{
return
processArgs
(
res
,
returnValue
)
function
processReturnValue
(
methodName
,
res
,
returnValue
,
keepReturnValue
=
false
)
{
if
(
isFn
(
protocols
.
returnValue
))
{
// 处理通用 returnValue
res
=
protocols
.
returnValue
(
methodName
,
res
);
}
return
processArgs
(
methodName
,
res
,
returnValue
,
{},
keepReturnValue
)
}
function
wrapper
(
n
ame
,
method
)
{
if
(
hasOwn
(
protocols
,
n
ame
))
{
const
protocol
=
protocols
[
n
ame
];
function
wrapper
(
methodN
ame
,
method
)
{
if
(
hasOwn
(
protocols
,
methodN
ame
))
{
const
protocol
=
protocols
[
methodN
ame
];
if
(
!
protocol
)
{
// 暂不支持的 api
return
function
()
{
throw
new
Error
(
`
${
百度小程序
}
暂不支持
${
name
}
`
)
console
.
error
(
`百度小程序 暂不支持
${
methodName
}
`
);
}
}
return
function
(
arg1
,
arg2
)
{
// 目前 api 最多两个参数
return
function
(
arg1
,
arg2
)
{
// 目前 api 最多两个参数
let
options
=
protocol
;
if
(
isFn
(
protocol
))
{
options
=
protocol
(
arg1
);
}
arg1
=
processArgs
(
arg1
,
options
.
args
,
options
.
returnValue
);
arg1
=
processArgs
(
methodName
,
arg1
,
options
.
args
,
options
.
returnValue
);
const
returnValue
=
swan
[
options
.
name
||
n
ame
](
arg1
,
arg2
);
if
(
isSyncApi
(
n
ame
))
{
// 同步 api
return
processReturnValue
(
returnValue
,
options
.
returnValue
)
const
returnValue
=
swan
[
options
.
name
||
methodN
ame
](
arg1
,
arg2
);
if
(
isSyncApi
(
methodN
ame
))
{
// 同步 api
return
processReturnValue
(
methodName
,
returnValue
,
options
.
returnValue
,
isContextApi
(
methodName
)
)
}
return
returnValue
}
...
...
@@ -183,7 +257,7 @@ function wrapper (name, method) {
const
todoApis
=
Object
.
create
(
null
);
const
TODOS
=
[
const
TODOS
$1
=
[
'
subscribePush
'
,
'
unsubscribePush
'
,
'
onPush
'
,
...
...
@@ -204,7 +278,7 @@ function createTodoApi (name) {
}
}
TODOS
.
forEach
(
function
(
name
)
{
TODOS
$1
.
forEach
(
function
(
name
)
{
todoApis
[
name
]
=
createTodoApi
(
name
);
});
...
...
@@ -265,7 +339,7 @@ if (typeof Proxy !== 'undefined') {
if
(
todoApis
[
name
])
{
return
promisify
(
name
,
todoApis
[
name
])
}
if
(
!
swan
.
hasOwnProperty
(
name
))
{
if
(
!
hasOwn
(
swan
,
name
)
&&
!
hasOwn
(
protocols
,
name
))
{
return
}
return
promisify
(
name
,
wrapper
(
name
,
swan
[
name
]))
...
...
@@ -287,7 +361,7 @@ if (typeof Proxy !== 'undefined') {
});
Object
.
keys
(
swan
).
forEach
(
name
=>
{
if
(
swan
.
hasOwnProperty
(
name
))
{
if
(
hasOwn
(
swan
,
name
)
||
hasOwn
(
protocols
,
name
))
{
uni$1
[
name
]
=
promisify
(
name
,
wrapper
(
name
,
swan
[
name
]));
}
});
...
...
src/core/helpers/promise.js
浏览文件 @
540e825e
...
...
@@ -4,10 +4,15 @@ import {
const
SYNC_API_RE
=
/hideKeyboard|upx2px|canIUse|^create|Sync$|Manager$/
const
CONTEXT_API_RE
=
/^create|Manager$/
const
TASK_APIS
=
[
'
request
'
,
'
downloadFile
'
,
'
uploadFile
'
,
'
connectSocket
'
]
const
CALLBACK_API_RE
=
/^on/
export
function
isContextApi
(
name
)
{
return
CONTEXT_API_RE
.
test
(
name
)
}
export
function
isSyncApi
(
name
)
{
return
SYNC_API_RE
.
test
(
name
)
}
...
...
src/core/runtime/wrapper.js
浏览文件 @
540e825e
...
...
@@ -6,7 +6,8 @@ import {
}
from
'
uni-shared
'
import
{
isSyncApi
isSyncApi
,
isContextApi
}
from
'
../helpers/promise
'
import
protocols
from
'
uni-platform/service/api/protocols
'
...
...
@@ -19,13 +20,13 @@ function processCallback (methodName, method, returnValue) {
}
}
function
processArgs
(
methodName
,
fromArgs
,
argsOption
=
{},
returnValue
=
{})
{
function
processArgs
(
methodName
,
fromArgs
,
argsOption
=
{},
returnValue
=
{}
,
keepFromArgs
=
false
)
{
if
(
isPlainObject
(
fromArgs
))
{
// 一般 api 的参数解析
const
toArgs
=
{}
const
toArgs
=
keepFromArgs
===
true
?
fromArgs
:
{}
// returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值
if
(
isFn
(
argsOption
))
{
argsOption
=
argsOption
(
fromArgs
,
toArgs
)
||
{}
}
Object
.
keys
(
fromArgs
).
forEach
(
key
=>
{
for
(
let
key
in
fromArgs
)
{
if
(
hasOwn
(
argsOption
,
key
))
{
let
keyOption
=
argsOption
[
key
]
if
(
isFn
(
keyOption
))
{
...
...
@@ -41,9 +42,11 @@ function processArgs (methodName, fromArgs, argsOption = {}, returnValue = {}) {
}
else
if
(
CALLBACKS
.
includes
(
key
))
{
toArgs
[
key
]
=
processCallback
(
methodName
,
fromArgs
[
key
],
returnValue
)
}
else
{
toArgs
[
key
]
=
fromArgs
[
key
]
if
(
!
keepFromArgs
)
{
toArgs
[
key
]
=
fromArgs
[
key
]
}
}
}
)
}
return
toArgs
}
else
if
(
isFn
(
fromArgs
))
{
fromArgs
=
processCallback
(
methodName
,
fromArgs
,
returnValue
)
...
...
@@ -51,11 +54,11 @@ function processArgs (methodName, fromArgs, argsOption = {}, returnValue = {}) {
return
fromArgs
}
function
processReturnValue
(
methodName
,
res
,
returnValue
)
{
function
processReturnValue
(
methodName
,
res
,
returnValue
,
keepReturnValue
=
false
)
{
if
(
isFn
(
protocols
.
returnValue
))
{
// 处理通用 returnValue
res
=
protocols
.
returnValue
(
methodName
,
res
)
}
return
processArgs
(
methodName
,
res
,
returnValue
)
return
processArgs
(
methodName
,
res
,
returnValue
,
{},
keepReturnValue
)
}
export
default
function
wrapper
(
methodName
,
method
)
{
...
...
@@ -76,7 +79,7 @@ export default function wrapper (methodName, method) {
const
returnValue
=
__GLOBAL__
[
options
.
name
||
methodName
](
arg1
,
arg2
)
if
(
isSyncApi
(
methodName
))
{
// 同步 api
return
processReturnValue
(
methodName
,
returnValue
,
options
.
returnValue
)
return
processReturnValue
(
methodName
,
returnValue
,
options
.
returnValue
,
isContextApi
(
methodName
)
)
}
return
returnValue
}
...
...
src/core/service/plugins/app/create-app.js
浏览文件 @
540e825e
...
...
@@ -8,10 +8,15 @@ export function getApp () {
export
function
getCurrentPages
(
isAll
=
false
)
{
const
pages
=
[]
const
childrenVm
=
appVm
.
$children
[
0
]
const
app
=
getApp
()
if
(
!
app
)
{
console
.
error
(
'
app is not ready
'
)
return
[]
}
const
childrenVm
=
app
.
$children
[
0
]
if
(
childrenVm
&&
childrenVm
.
$children
.
length
)
{
const
tabBarVm
=
childrenVm
.
$children
.
find
(
vm
=>
vm
.
$options
.
name
===
'
TabBar
'
)
const
app
=
getApp
()
childrenVm
.
$children
.
forEach
(
vm
=>
{
if
(
tabBarVm
!==
vm
&&
vm
.
$children
.
length
&&
vm
.
$children
[
0
].
$options
.
name
===
'
Page
'
&&
vm
.
$children
[
0
].
$slots
.
page
)
{
// vm.$children[0]=Page->PageBody->RealPage
...
...
@@ -39,6 +44,15 @@ export function getCurrentPages (isAll = false) {
}
})
}
// 当页面返回过程中,请求 getCurrentPages 时,可能会获取到前一个已经准备销毁的 page
const
length
=
pages
.
length
if
(
length
>
1
)
{
const
currentPage
=
pages
[
length
-
1
]
if
(
currentPage
.
$page
.
path
!==
app
.
$route
.
path
)
{
// 删除已经准备销毁的上个页面
pages
.
splice
(
length
-
1
,
1
)
}
}
return
pages
}
...
...
src/core/service/plugins/app/router-guard.js
浏览文件 @
540e825e
...
...
@@ -97,7 +97,7 @@ function afterEach (to, from) {
const
fromId
=
from
.
params
.
__id__
const
toId
=
to
.
params
.
__id__
const
fromVm
=
getCurrentPages
().
find
(
pageVm
=>
pageVm
.
$page
.
id
===
fromId
)
const
fromVm
=
getCurrentPages
(
true
).
find
(
pageVm
=>
pageVm
.
$page
.
id
===
fromId
)
switch
(
to
.
type
)
{
case
'
navigateTo
'
:
// 前一个页面触发 onHide
...
...
src/platforms/h5/helpers/get-window-offset.js
浏览文件 @
540e825e
...
...
@@ -7,19 +7,24 @@ export default function getWindowOffset () {
if
(
uni
.
canIUse
(
'
css.var
'
))
{
const
style
=
document
.
documentElement
.
style
return
{
top
:
parseInt
(
style
.
getPropertyValue
(
'
--window-top
'
)),
bottom
:
parseInt
(
style
.
getPropertyValue
(
'
--window-bottom
'
))
top
:
parseInt
(
style
.
getPropertyValue
(
'
--window-top
'
))
||
0
,
bottom
:
parseInt
(
style
.
getPropertyValue
(
'
--window-bottom
'
))
||
0
}
}
let
top
=
0
let
bottom
=
0
const
pages
=
getCurrentPages
()
if
(
pages
.
length
)
{
const
pageVm
=
pages
[
pages
.
length
-
1
].
$parent
.
$parent
top
=
pageVm
.
showNavigationBar
&&
pageVm
.
navigationBar
.
type
!==
'
transparent
'
?
NAVBAR_HEIGHT
:
0
}
const
app
=
getApp
()
if
(
app
)
{
bottom
=
app
.
$children
[
0
].
showTabBar
?
TABBAR_HEIGHT
:
0
}
return
{
top
,
bottom
:
getApp
().
$children
[
0
].
showTabBar
?
TABBAR_HEIGHT
:
0
bottom
}
}
src/platforms/h5/view/components/map/index.vue
浏览文件 @
540e825e
...
...
@@ -598,7 +598,9 @@ export default {
}
}
}
img
.
src
=
option
.
iconPath
||
console
.
log
(
option
.
iconPath
)
console
.
log
(
this
.
$getRealPath
(
option
.
iconPath
))
img
.
src
=
this
.
$getRealPath
(
option
.
iconPath
)
||
'
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABQCAYAAABFyhZTAAANDElEQVR4nNWce4hc133Hv+fc92MeuytpV5ZXll2XuvTlUBTSP1IREsdNiKGEEAgE3EBLaBtK/2hNoQTStISUosiGOqVpQ+qkIdAax1FiG+oYIxyD4xi3uKlEXSFFke3d1e5od+a+H+ec/nHvmbkzs6ud2bmjTX7wY3b3zr3nfM7vd37n8Tt3CW6DiDP3EABSd/0KAEEuXBHzrsteFTiwVOBo+amUP9PK34ZuAcD30NoboTZgceYeCaQAUEvVAKiZ0lpiiv0Lgmi/imFLF5YV2SWFR1e0fGcDQF5qVn4y1Ag/E3DFmhJSB2Dk1D2Squ0HBdT3C0JPE6oco6oKqmm7PodnGXieQ3DWIYL/iCB/UWO95zTW2wCQlpqhgJ8J/MDApUUVFFY0AFiRdvwMJ8bvCaKcUW3bUE0DimGAKMpkz2QMLEnBkhhZEHICfoHy+AkrW3seQAwgQQHPyIUr/CD1nhq4tCpFAWoCsGNt5X2MWo9Qw/p1zXGgWiZAZu8teRQhCwLwOLpEefKolb3zDIAQBXyGAnwqa09Vq4pVDQBOqrTuTmn7c9S0H9QdB6ptT/O4iSWPY2S+DxYHFzTW+5zBti8BCFBYfCprTwxcwmoALABupK48lFPri0az1dSbjWkZDiSp5yPpdn2Vh39m5evPAPABRACySaH3Ba64sA7ABtD0tdXPUqvxKd1xoJrmDAjTSx7HCDsdroj0nJO99TiAHgprZwD4fi5+S+AKrAHA5UQ7EijH/05rND9sNJsglNaEMZ3wPEfq+8i97vdstv4IFdkWBi5+S2h1n2dL2IYAXQqU449pjdYHzFaruDr3edEelVJUmK02YpCPBD454uRrf0BFtlleTlAMX7vfu9eFSp91ALR95cRfq27zA2ariXK+cOhqtprQnOZ7AmXlLIA2ABeAXtZ9cuDSlVUUfbYVKCsPq27zo1arddiMY2q2WlCd5gd95fhnALTKOmslw/7A5RcVFGNsI6ILpzNi/rnu2IdPt4caDRc5Mf4opEu/DaBR1l3dDXo3CxMUEdkRoO2UuJ+3Wy1VUbXD5tpTKVVgt9s0I85fcahLKLqhvhvf0B/KFpFjbdOnRz+pOY17f5atK1W3LWiue8KnR38fQLNkGLPyaAvI8dZl0Jcz6J82bPuwWSZW03GRQ3s4JdYqigBmoOie48CVQGUBcAO68AnTbTQUVQWE+LlQSimsRsOKSPthFG49ZmU6Aq8DsAWomwnt4+bPgSuPqunYyIX6uwzqIoqIPdSXacW6clFgB6T9Xs0wFylVDrv+UyshFIZlOSFpP1ACG1Ury5mWdGcTgJkJ/UO2ZZVPqU+EqiL9xV8GWzoGAFC2t6C/eQkkS2stR7cs+KH2OwDOo2AKUcy1hQTur28FiJVDOa0bRm283HHhPfQxhL91BsIYXmyQLIX1yktofvdJ0N5OLeVpug4G5TcY1IaCvIuCLQHAq8A6ACOCe5+qag1CSBEMZpT01L3Y/vSfgi0e2fW60HSE730/4vtPY/Erj0J/8+LMZRIAmq7rUeLe75KdTRTACoCcVvqvBsBIhXG/qumoo0Plx5Zx80/+Yk/YqvBGE53PPILsxGotZWuahkxov4bCkDoARZy5h1S3UjUAKhf0pKrWE6x2Hv5DcMedwCaFCMPEzqf+GCB05rIVVQUHOVlySQuPAzNB7lAUBbOOickv/QrSe++bGFZKtnoK0f2nZy5foRRc0Dsw2C5WANDRvWRFAIv9/juDxr/5nqlhpcTvevfM5VNKwYHFijEVAEStWFgBQIWASQkKv5hBstVTM947W/mEABDCxMCgFBXgfkpECGgAmbW8seFnqntNc+byiSDggqgYSfPIKVc/2SUgcsH57C7V3T5wZWmvO3P5QnAAPMdwnotU59KkaBkR1AGs/fTqgYG1n16dHZhzQCAea8zKz4UTEdFl/EBZjCGxXn354Pe+8tLM5TPGAPAxN5PAQioR7CdZls1u4auXYf3wB1NX1Pjv/4Rx8Y2Zy8/zHAR8reTiko9W/sAAcIWwt+oAhhBofeMrUDfWJoZVtjtof/Xvayk7TTMo4D/BSL55FJiZNPvfNE1rKZT2ulj64mehX/m/fWG169ew9IW/hHJzqx7gLIVO00slWy6B1QpsBoC5SnR1O7K3GecLSg2ZBaWziSOffwTB+x5E8MGHkB8/MXx9cwPuf3wX9gvPgeT5zOUBgBACcZKmR63of1CwycS6UFFYeCjjrhD2WhTHD7iWVUsFwBic7z8L5/vPgh1dBneL5BsJg6lcflKJ4hgKYT8iENXTBAzl8lBgYOEMALOV9IUgDB9w55AoU26sQ7mxXvtzq+KHISyavogBV4oCXNAy8cSrF9pa+EaSJmtpWk/wup2a5zmiONle0MMflpD94xLkwhUhOykrL8TlJzNo9lQvDHHYe1TTai8MYSjZd0p3zjA4LcCB4XFYXowB5EeM4HkvDDpxmh4+xYSa5hm6fuAt6cH3Sp5kV+Aye55XvpAqRCSOmv5LLwgO3U0n1V4QwFLSf9UoD0tPjSrAomphoHDrBINDI/kxM3wxTMIf7/j+ocPsp90ggBcFV5bN8LnSeHHJIs+BjAFLt45QZNNjAOyIET3a8XwvTNLD9tg9NU4zbPa8dEmPzxIipKeGpabSnYeAyxbIS2BfftnVsrWmnjzWDQPkLD98uhHlgqMbBnC19PGmnl4rAUMMDrzk1SMQo1MpXt4QAPDKG7OjZvwKy4Ov3/R/9vrzVs9DmgZPrljRCyg8NCzr7o9adwx4xMpeqTEAdqcT/nuY+M9v9rxDh5S62fMQxP7Lq27wBIoYFJd17mFwnElUGXc71CLKlgowvONnrbrhl6/2sEoJuW/JcXa59fbJzTDATuRfu7sRfgmDgCthpXXF6H1jq4OyRWRr+QC65WeiEJEet+O/7fj+thfHOKx+6ycxtjy/u2Ilf6NSISdLsq59r9zt+NKuy6EKdFS2WBeFxVNHY5sLRnr27Z0dzhi77W7MGMNb2zu8ZaTnGnq+hoE37mDgynuewdxz/VdORuTDuqUWQcxO/8tU+ZObfnDbDbzpBzBV9m/LdvraCGzfKLc6hnjLBW8F2q88NATATjaib3pxcLFzG2dim74PLw5eP9mIv4U9PHC/M5eTrPCrQ5XszzElyFac9OwN3/P8NMG8TeslMbZCf/tEIzlHSX8m5VXqlGBkCDoQ8C5BrH+Ys6GzjZaRP3YzDCHmaFnOOW6GERaM/Jyt8u0SLijrcssgNTXwLtAy9AcAsjvc7JWMxc9seP7cDHzDD8B49NSKk72OwUyqV+rEsBMDl9DVICZbNgLATjXTf96OgiudMKzdup0wxHYcvHlXM/sGxvttiCnOSk8FXIrsz8PjMxXpspOffcfz8rTG+XbCcqx5Xrri5OcUKuQGRbXssaljrcC36M/posWuuTr/+lYY1ebKnTCCq/MnFkx2HYPAKWdSQ8u+uQCPQEvX6qFwrfyuVvadnTi4uFmDa28GAXbi4Men2tl5FPN7uSiYKkjNDFxCy/4sg0d/qLqjwR5b9/04Znue0d5X4jzHehDEJxrsUYwHy6n7bVVm2WnnKNxqyLXbJn/b1fkTswSwrSiCq/OvtUy+juHl6sTjbe3AFdeW0DJqZ3e182d3kujNThxh2o7biSJ0k+ji3Qv5sxj2Ig8H7LdVmSmXUhY8VilKkB1z2Jev9zzOuZiYl3GB656XL7vsHzC85Os35qzvH9bxWorAsNsFANKjDr9saeL82hRz7fUggKWJp4/Y/CoGw1//mWVZM8nMwLdw7fxUm31zKwo7vXT/s5S9NMVWFK7ds8C+heG9NR8zROVRqeXFoxHXlhZJDBXBoi0e34yi/YehKMKiLf5JU/p7yUONV9d7xHW+aSWhhzYAV1v81SBPLm7FY8ct+rIVxwjz5I3VFn8V4w1XiytLqQ24sgEoXbvviiuu+Me9rCyEwDXP48uu+CqGZ3G1urKUWt+l28W1QwDpMVdcZsgvrIXh2D0bUQRDxUvHXHEZw8GvVleWMo+XB6sbBnIznJ1s8a+9EwQ5rxyJ4pzjbd/P72xyuc1aTQLMNMHYS2oHrri2dM0QQNI0sWnrOL8eRf3vrkcRbB3n2xY2MEiP9NM88/ivD/N6PbTq2rIv5qtt8dRaGKaccwgh8E4Y5ne2xNMYb6B+tq9umQvwyDIyKDVxddw0VfH8jTjGZhzDVMWLDQNbGGzZzNW6wPwsXM05V7OR+fEmvn09CPiNKMKyi29jYN0Ag0BVe9+Vst/7w7OKnIEFKF6pMRdtrL3VxctMMOOoi2q2r5/LnWeF5vqK90gAGyTaXTy5ZAtpXRms5jIMjcq8LQwMnywIAVgrDVwuD+9K68oZ1dxcWcrcX+IfScHKwBRWfu9H8Xn2XSm3w8LAYHfEQ5F6TVGYWM6qYsy570q5Lf+mYSRH1QFwA8AGgJsooOXe7tzl/wGchYFKtBMCwAAAAABJRU5ErkJggg==
'
},
removeMarkers
(
markers
)
{
...
...
@@ -720,7 +722,7 @@ export default {
style
.
top
=
(
position
.
top
||
0
)
+
'
px
'
style
.
maxWidth
=
'
initial
'
}
img
.
src
=
option
.
iconPath
img
.
src
=
this
.
$getRealPath
(
option
.
iconPath
)
onTap
(
img
,
$event
=>
{
if
(
option
.
clickable
)
{
this
.
$trigger
(
'
controltap
'
,
$event
,
{
...
...
src/platforms/mp-alipay/service/api/protocols.js
浏览文件 @
540e825e
...
...
@@ -6,15 +6,46 @@ const TODOS = [ // 不支持的 API 列表
'
setTabBarItem
'
,
'
setTabBarStyle
'
,
'
showTabBar
'
,
'
showTabBarRedDot
'
'
showTabBarRedDot
'
,
'
startPullDownRefresh
'
,
'
saveImageToPhotosAlbum
'
,
'
getRecorderManager
'
,
'
getBackgroundAudioManager
'
,
'
createInnerAudioContext
'
,
'
chooseVideo
'
,
'
saveVideoToPhotosAlbum
'
,
'
createVideoContext
'
,
'
openDocument
'
,
'
startAccelerometer
'
,
'
startCompass
'
,
'
addPhoneContact
'
,
'
createIntersectionObserver
'
]
function
_handleNetworkInfo
(
result
)
{
switch
(
result
.
networkType
)
{
case
'
NOTREACHABLE
'
:
result
.
networkType
=
'
none
'
break
case
'
WWAN
'
:
// TODO ?
result
.
networkType
=
'
3g
'
break
default
:
result
.
networkType
=
result
.
networkType
.
toLowerCase
()
break
}
return
{}
}
const
protocols
=
{
// 需要做转换的 API 列表
returnValue
(
methodName
,
res
)
{
// 通用 returnValue 解析
if
(
res
.
error
||
res
.
errorMessage
)
{
res
.
errMsg
=
`
${
methodName
}
:fail
${
res
.
errorMessage
||
res
.
error
}
`
delete
res
.
error
delete
res
.
errorMessage
}
else
{
res
.
errMsg
=
`
${
methodName
}
:ok`
}
return
res
},
...
...
@@ -116,6 +147,141 @@ const protocols = { // 需要做转换的 API 列表
returnValue
:
{
index
:
'
tapIndex
'
}
},
showLoading
:
{
args
:
{
title
:
'
content
'
,
mask
:
false
}
},
uploadFile
:
{
args
:
{
name
:
'
fileName
'
}
// 从测试结果看,是有返回对象的,文档上没有说明。
},
downloadFile
:
{
returnValue
:
{
apFilePath
:
'
tempFilePath
'
}
},
connectSocket
:
{
args
:
{
method
:
false
,
protocols
:
false
}
// TODO 有没有返回值还需要测试下
},
chooseImage
:
{
returnValue
:
{
apFilePaths
:
'
tempFilePaths
'
}
},
previewImage
:
{
args
(
fromArgs
)
{
// 支付宝小程序的 current 是索引值,而非图片地址。
if
(
fromArgs
.
current
&&
Array
.
isArray
(
fromArgs
.
urls
))
{
const
index
=
fromArgs
.
urls
.
indexOf
(
fromArgs
.
current
)
fromArgs
.
current
=
~
index
?
index
:
0
}
return
{
indicator
:
false
,
loop
:
false
}
}
},
saveFile
:
{
args
:
{
tempFilePath
:
'
apFilePath
'
},
returnValue
:
{
apFilePath
:
'
savedFilePath
'
}
},
getSavedFileInfo
:
{
args
:
{
filePath
:
'
apFilePath
'
},
returnValue
(
result
)
{
if
(
result
.
fileList
&&
result
.
fileList
.
length
)
{
result
.
fileList
.
forEach
(
file
=>
{
file
.
filePath
=
file
.
apFilePath
delete
file
.
apFilePath
})
}
return
{}
}
},
removeSavedFile
:
{
args
:
{
filePath
:
'
apFilePath
'
}
},
getLocation
:
{
args
:
{
type
:
false
,
altitude
:
false
}
// returnValue: {
// speed: false,
// altitude: false,
// verticalAccuracy: false
// }
},
openLocation
:
{
args
:
{
// TODO address 参数在阿里上是必传的
}
},
getSystemInfo
:
{
// returnValue: {
// brand: false,
// statusBarHeight: false,
// SDKVersion: false
// }
},
getSystemInfoSync
:
{
// returnValue: {
// brand: false,
// statusBarHeight: false,
// SDKVersion: false
// }
},
getNetworkType
:
{
returnValue
:
_handleNetworkInfo
},
onNetworkStatusChange
:
{
returnValue
:
_handleNetworkInfo
},
stopAccelerometer
:
{
name
:
'
offAccelerometerChange
'
},
stopCompass
:
{
name
:
'
offCompassChange
'
},
scanCode
:
{
name
:
'
scan
'
,
args
:
{
onlyFromCamera
:
'
hideAlbum
'
,
scanType
:
false
}
},
setClipboardData
:
{
name
:
'
setClipboard
'
,
args
:
{
data
:
'
text
'
}
},
getClipboardData
:
{
name
:
'
getClipboard
'
,
returnValue
:
{
text
:
'
data
'
}
},
pageScrollTo
:
{
args
:
{
duration
:
false
}
}
}
...
...
src/platforms/mp-baidu/service/api/protocols.js
浏览文件 @
540e825e
export
default
{}
// 不支持的 API 列表
const
TODOS
=
[
'
hideKeyboard
'
]
function
createTodoMethod
(
contextName
,
methodName
)
{
return
function
unsupported
()
{
console
.
error
(
`__PLATFORM_TITLE__
${
contextName
}
暂不支持
${
methodName
}
`
)
}
}
// 需要做转换的 API 列表
const
protocols
=
{
request
:
{
args
(
fromArgs
)
{
// TODO
// data 不支持 ArrayBuffer
// method 不支持 TRACE, CONNECT
// dataType 可取值为 string/json
return
{
method
:
'
method
'
}
}
},
connectSocket
:
{
args
:
{
method
:
false
}
},
previewImage
:
{
args
:
{
indicator
:
false
,
loop
:
false
}
},
getRecorderManager
:
{
returnValue
(
fromRet
)
{
fromRet
.
onFrameRecorded
=
createTodoMethod
(
'
RecorderManager
'
,
'
onFrameRecorded
'
)
}
},
getBackgroundAudioManager
:
{
returnValue
(
fromRet
)
{
fromRet
.
onPrev
=
createTodoMethod
(
'
BackgroundAudioManager
'
,
'
onPrev
'
)
fromRet
.
onNext
=
createTodoMethod
(
'
BackgroundAudioManager
'
,
'
onNext
'
)
}
},
scanCode
:
{
args
:
{
onlyFromCamera
:
false
,
scanType
:
false
}
}
}
TODOS
.
forEach
(
todoApi
=>
{
protocols
[
todoApi
]
=
false
})
export
default
protocols
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录