Commit b42d75da by golton_gao

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

parent cdab3edc
Showing with 129 additions and 22 deletions
;(function (global) { ;(function (global) {
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) { var qingPromise = function (fnName, params) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var originSuccess = params.success var originSuccess = params.success
...@@ -180,6 +191,41 @@ ...@@ -180,6 +191,41 @@
} }
qing.call('request', opt) 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 = { var handlers = {
MIDEACOMMON: { MIDEACOMMON: {
launchExternalAPPByThird: function (params, successFn, failFn) { launchExternalAPPByThird: function (params, successFn, failFn) {
...@@ -208,7 +254,7 @@ ...@@ -208,7 +254,7 @@
}, },
error: function () { error: function () {
failFn('打开应用失败!') failFn('打开应用失败!')
}, }
}) })
}, },
setBounces: function (p, successFn, failFn) { setBounces: function (p, successFn, failFn) {
...@@ -238,9 +284,9 @@ ...@@ -238,9 +284,9 @@
qing.call('localFunction', { qing.call('localFunction', {
name: 'openExtBrowser', name: 'openExtBrowser',
param: { param: {
url: u[0], url: u[0]
}, },
success: successFn, success: successFn
}) })
}, },
language: function (param, successFn, failFn) { language: function (param, successFn, failFn) {
...@@ -252,7 +298,7 @@ ...@@ -252,7 +298,7 @@
// 只取后面的国家代码 // 只取后面的国家代码
lang = lang.replace(/^[a-z]+\-/i, '') lang = lang.replace(/^[a-z]+\-/i, '')
successFn({ successFn({
language: lang.toLowerCase(), language: lang.toLowerCase()
}) })
}, },
vcard: function (uids, successFn, failFn) { vcard: function (uids, successFn, failFn) {
...@@ -266,7 +312,7 @@ ...@@ -266,7 +312,7 @@
.then(function (personInfos) { .then(function (personInfos) {
// 打开人员卡片只有一条信息 // 打开人员卡片只有一条信息
qing.call('personInfo', { qing.call('personInfo', {
openId: personInfos[0].oId, openId: personInfos[0].oId
}) })
successFn(true) successFn(true)
}) })
...@@ -294,13 +340,74 @@ ...@@ -294,13 +340,74 @@
} }
} }
qing.call('gotoLightApp', { qing.call('gotoLightApp', {
urlParam: url, urlParam: url
}) })
}, },
showWidget: function () {}, showWidget: function (params, successFn, failFn) {
getExtra: function (params, successFn, failFn) { if (!Array.isArray(params) || !params[0]) {
successFn(null) 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) {
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: { MIDEAUSER: {
orgChoose: function (p, successFn, failFn) { orgChoose: function (p, successFn, failFn) {
...@@ -328,13 +435,13 @@ ...@@ -328,13 +435,13 @@
mobile: userInfo.email, mobile: userInfo.email,
fullDeptName: userInfo.fullDeptName.replace('!', '_'), fullDeptName: userInfo.fullDeptName.replace('!', '_'),
departmentName: userInfo.deptName, departmentName: userInfo.deptName,
ssoToken: data.ssoToken, ssoToken: data.ssoToken
}) })
}) })
}, },
getUserPassword: function (param, successFn, failFn) { getUserPassword: function (param, successFn, failFn) {
successFn({}) successFn({})
}, }
}, },
MIDEAPDF: { MIDEAPDF: {
showTxt: function (param, successFn, failFn) { showTxt: function (param, successFn, failFn) {
...@@ -357,7 +464,7 @@ ...@@ -357,7 +464,7 @@
fileDownloadUrl: param.url, fileDownloadUrl: param.url,
success: successFn, success: successFn,
fail: failFn, fail: failFn,
error: failFn, error: failFn
} }
if (param.title) { if (param.title) {
qingParam.fileName = param.title qingParam.fileName = param.title
...@@ -374,11 +481,11 @@ ...@@ -374,11 +481,11 @@
fileDownloadUrl: u[0], fileDownloadUrl: u[0],
success: successFn, success: successFn,
fail: failFn, fail: failFn,
error: failFn, error: failFn
}) })
}, },
showRAR: function () {}, showRAR: function () {}
}, }
} }
global.cordova = { global.cordova = {
exec: function (successFn, failFn, module, method, params) { exec: function (successFn, failFn, module, method, params) {
...@@ -401,13 +508,13 @@ ...@@ -401,13 +508,13 @@
} }
} }
var CAMERA = { // var CAMERA = {
PictureSourceType: { // PictureSourceType: {
0: 'photo', // 0: 'photo',
1: 'camera', // 1: 'camera',
2: 'photo' // 2: 'photo'
} // }
} // }
global.navigator.camera = { global.navigator.camera = {
getPicture: function (successFn, failFn, params) { 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