Commit 119663b6 by golton_gao

update: 添加云之家依赖替换调cordova的js桥

parent bd802492
......@@ -9,6 +9,7 @@
<meta name="format-detection" content="telephone=no,email=no,adress=no" />
<meta name="mobile-web-app-capable" content="jf">
<title>建发供方系统流程审批</title>
<script src="miniapp://common/js/qing/qing.js"></script>
</head>
<body>
<div id="app"></div>
......
......@@ -28,6 +28,7 @@ export default class CordovaApi extends NativeApi {
if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
var self = this
/*
if (!window.document.getElementById('cordovaJS')) {
var script = window.document.createElement('script')
script.id = 'cordovaJS'
......@@ -45,6 +46,10 @@ export default class CordovaApi extends NativeApi {
}
window.document.body.appendChild(script)
}
*/
window.qing.ready(() => {
self.doReady(self)
})
}
}
......
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import './polyfill/index.js'
import Vue from 'vue'
import App from './App'
import router from './router'
......@@ -11,27 +12,13 @@ Vue.use(nativeApi, Object.assign({debug: true, maxRetryTimes: 10, retrySleepTime
Vue.config.productionTip = false
let VMT
/* eslint-disable no-new */
if (process.env.NODE_ENV === 'production') {
document.addEventListener('deviceready', function () {
VMT = new Vue({
el: '#app',
router,
store,
plugin,
render: h => h(App)
})
})
} else {
VMT = new Vue({
el: '#app',
const VMT = new Vue({
router,
store,
plugin,
render: h => h(App)
})
}
})
window.qing.ready(() => {
VMT.$mount('#app')
})
export default VMT
import './cordova.js'
import './request.js'
import axios from 'axios'
var originAdapter = axios.defaults.adapter
axios.defaults.adapter = function (config) {
if (!/^https?/.test(config.url)) {
return originAdapter(config)
}
return request(config)
}
function isObject (value) {
return value !== null && typeof value === 'object'
}
function isFormData (fd) {
return Object.prototype.toString.call(fd) === '[object FormData]'
}
function formData2obj (fd) {
var data = {}
for (var p of fd.entries()) {
data[p[0]] = p[1]
}
return data
}
function params2object (url) {
var params = {}
if (typeof url === 'object') {
return url
} else if (typeof url === 'string') {
url
.replace(/^.*\?|#.*$/g, '')
.split('&')
.forEach((n) => {
n = n.split('=')
if (n.length === 2) {
params[n[0]] = n[1]
}
})
}
return params
}
function request (opt) {
opt = opt || {}
if (!opt.url) {
return Promise.reject('interface url is required!')
}
// 默认get请求
opt.method = opt.method || 'get'
// 处理params
var urlParams = opt.params || {}
// 合并url和params字段的数据,如果params字段与url中有重名参数,以params中的为准
urlParams = Object.assign(params2object(opt.url), urlParams)
// 处理url
// url如果包含空格,会在iOS中报错
opt.url = opt.url.replace(/^\s+|\s+$/g, '')
// 将params拼接到url中
opt.url =
opt.url.split('?')[0] +
'?' +
Object.keys(urlParams)
.map((key) => {
var val = urlParams[key]
if (isObject(val)) {
val = JSON.stringify(val)
val = encodeURIComponent(val)
} else if (/[^\x00-\xff]/.test(val)) {
val = encodeURIComponent(val)
}
return key + '=' + val
})
.join('&')
// post非json即是form。
if (opt.method.toLowerCase() === 'post') {
var data = opt.data
if (isFormData(data)) {
opt.headers = Object.assign(opt.headers || {}, {
'Content-Type': 'application/x-www-form-urlencoded'
})
opt.data = formData2obj(data)
} else if (isObject(data)) {
opt.headers = Object.assign(opt.headers || {}, {
'Content-Type': 'application/json;charset=UTF-8'
})
}
}
// 处理header
opt.headers = opt.headers || {}
// headers字段值必须是字符串型
Object.keys(opt.headers).forEach(function (key) {
var val = opt.headers[key]
var type = typeof val
if (type === 'undefined') {
delete opt.headers[key]
} else if (type !== 'string') {
opt.headers[key] = val + ''
}
})
return new Promise(function (resolve, reject) {
window.qing.call('request', {
url: opt.url,
method: opt.method,
headers: opt.headers,
header: opt.headers,
data: opt.data || {},
dataType: opt.dataType,
success: function (resp) {
var response = {
data: resp.data,
status: resp.statusCode,
headers: resp.header,
config: opt
}
var validateStatus = response.config.validateStatus
// Note: status is not exposed by XDomainRequest
if (
!response.status ||
!validateStatus ||
validateStatus(response.status)
) {
resolve(response)
} else {
var error = new Error(
'Request failed with status code ' + response.status
)
error.config = response.config
error.response = response
reject(error)
}
},
error: function (e) {
var error = new Error(e)
error.config = opt
reject(error)
}
})
})
}
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