Commit 49a3a7eb by golton_gao

update: 更新showWidget和getExtra这2个js桥

parent e2cdff7e
Showing with 164 additions and 12 deletions
......@@ -8,8 +8,8 @@
"dev": "node build/dev-server.js",
"start": "npm run dev",
"build": "npm run build:vtest",
"build:vtest": "cross-env PACK_ENV=prod PACK_VENV=vtest node build/build.js",
"build:vprod": "cross-env PACK_ENV=prod PACK_VENV=vprod node build/build.js"
"build:test": "cross-env PACK_ENV=prod PACK_VENV=vtest node build/build.js",
"build:prod": "cross-env PACK_ENV=prod PACK_VENV=vprod node build/build.js"
},
"dependencies": {
"animate.css": "^3.5.2",
......
;(function (global) {
var qingjs = global.qing
var qing = global.qing
var appMap = {
'com.jffc.gc-bak': '500000106',
'com.jffc.gc': '500000113',
'com.jffc.supplier': '500000112'
}
function isObject (value) {
return value !== null && typeof value === 'object'
}
var qingPromise = function (fnName, params) {
return new Promise(function (resolve, reject) {
var originSuccess = params.success
......@@ -181,8 +191,86 @@
}
qing.call('request', opt)
}
function openAppWithData (appName, data, url) {
var val = ''
if (isObject(data)) {
data = JSON.stringify(data)
// 针对json数据格式化来的字符串添加特殊标识,方便后续还原
data = '__json__=' + data
}
if (typeof data === 'string') {
// IOS有个奇葩的设计,把双引号转单引号输出了,所以需要将单引号,双引号在保存前特殊处理,然后再还原。
val = data.replace(/'/gm, '∆∆').replace(/"/gm, 'åå')
}
val = encodeURIComponent(val)
return new Promise(function (resolve, reject) {
qing.call('storage.setItem', {
shared: true,
key: appName,
value: val,
success: function (res) {
if (String(res.success).toLowerCase() === 'true') {
qing.call('gotoLightApp', {
urlParam: url
})
resolve(true)
} else {
reject(res.error)
}
},
error: function (e) {
reject(e)
}
})
})
}
var handlers = {
MIDEACOMMON: {
launchExternalAPPByThird: function (params, successFn, failFn) {
params = params || []
if (!params.length) {
failFn('未检测到要打开应用的包名!')
return
}
let scheme = params[0]
if (!scheme) {
failFn('未检测到要打开应用的包名!')
return
}
// 针对scheme可能丢失尾部的://的情况进行追加
scheme = `${scheme}://`
scheme = scheme.replace('://://', '://')
qing.call('gotoApp', {
data: `${scheme}p?`,
success: function (result) {
const success = (result || {}).success || false
if (`${success}`.toLowerCase() === 'true') {
successFn(true)
} else {
failFn('打开应用失败!')
}
},
error: function () {
failFn('打开应用失败!')
}
})
},
setBounces: function (p, successFn, failFn) {
p = p || [0]
var enable = p[0]
var map = {
'0': 0,
'1': 1
}
qing.call('setBounce', {
enable: map[`${enable}`] || 0
})
successFn('success')
},
exit: function (p, successFn, failFn) {
qing.call('closeWebView')
successFn('success')
......@@ -255,9 +343,70 @@
urlParam: url
})
},
showWidget: function () {},
showWidget: function (params, successFn, failFn) {
if (!Array.isArray(params) || !params[0]) {
failFn('未检测到要打开的应用地址!')
return
}
var appName = params[0]
var appId = appMap[appName]
if (!appId) {
failFn('未检测到要打开的应用!')
return
}
var data = params[1] || ''
openAppWithData(
encodeURIComponent(appName),
data,
'cloudhub://miniapp?appid=' + appId + '&path=index.html'
).then(successFn, failFn)
},
getExtra: function (params, successFn, failFn) {
successFn(null)
if (Array.isArray(params)) {
var appName = params[0]
if (appName) {
qing.call('storage.getItem', {
key: encodeURIComponent(appName),
shared: true,
success: function (res) {
if (String(res.success).toLowerCase() === 'true') {
try {
var data = (res.data || {}).value || ''
data = decodeURIComponent(data)
if (data) {
// IOS有个奇葩的设计,把双引号转单引号输出了,所以需要将单引号,双引号在保存前特殊处理,然后再还原。
data = data.replace(/∆∆/gm, "'").replace(/åå/gm, '"')
// 将json数据反编译回object
if (data.indexOf('__json__=') === 0) {
data = data.replace(/^__json__=/, '')
data = JSON.parse(data)
}
successFn({
result: true,
msg: '成功',
widgetId: appName,
extra: {
showWidgetKey: data
}
})
} else {
successFn({})
}
} catch (error) {
console.error('getExtra error:', error)
failFn()
}
} else {
failFn()
}
}
})
} else {
failFn()
}
} else {
failFn()
}
}
},
MIDEAUSER: {
......@@ -289,6 +438,9 @@
ssoToken: data.ssoToken
})
})
},
getUserPassword: function (param, successFn, failFn) {
successFn({})
}
},
MIDEAPDF: {
......@@ -356,13 +508,13 @@
}
}
var CAMERA = {
PictureSourceType: {
0: 'photo',
1: 'camera',
2: 'photo'
}
}
// var CAMERA = {
// PictureSourceType: {
// 0: 'photo',
// 1: 'camera',
// 2: 'photo'
// }
// }
global.navigator.camera = {
getPicture: function (successFn, failFn, params) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment