Commit e69a3153 by golton_gao

update: 更新代码

parent 1b7f754e
......@@ -28,7 +28,8 @@ var webpackConfig = merge(baseWebpackConfig, {
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
'process.env': env,
'process.env.PACK_ENV': JSON.stringify(process.env.PACK_ENV)
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
......
......@@ -2,5 +2,5 @@ var merge = require('webpack-merge')
var prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"provt"'
NODE_ENV: '"production"'
})
......@@ -7,7 +7,8 @@
"scripts": {
"dev": "node build/dev-server.js",
"build": "node build/build.js",
"build:prod": "node build/vt-build.js"
"build:test": "cross-env PACK_ENV=test && node build/vt-build.js",
"build:prod": "cross-env PACK_ENV=prod && node build/vt-build.js"
},
"dependencies": {
"axios": "^0.16.2",
......
......@@ -10,7 +10,7 @@
export default {
name: 'app',
created () {
if (process.env.NODE_ENV === 'provt') {
if (process.env.NODE_ENV === 'production') {
// 兼容V+模块
console.log('当前环境:', process.env.NODE_ENV)
// todo:1、获取V+用户信息 this.$nativeApi.account.getUser()
......
......@@ -7,8 +7,8 @@ let URL_API = {};
// API接口
let API = {
// 服务器host
Host: 'http://csm.cndrealty.com/csm/staticfactionReport',
TestHost: 'http://csmtest.cndrealty.com/csm/staticfactionReport',
Host: 'https://csm.cndrealty.com/csm/staticfactionReport',
TestHost: 'https://csmtest.cndservice.com/csm/staticfactionReport',
// 2. 公共模块
// 2.1. 登录
......
......@@ -13,7 +13,7 @@ import Dialog from '@/base/plugins/dialog'
// 全局axios默认配置
// axios.defaults.baseURL = APIPath.HOST
axios.defaults.baseURL = APIPath.TESTHOST
axios.defaults.baseURL = process.env.PACK_ENV === 'prod' ? APIPath.HOST : APIPath.TESTHOST
Vue.prototype.$axios = axios
// 获取屏幕宽高
......@@ -28,7 +28,7 @@ Vue.prototype.getViewportSize = function () {
import nativeApi from './base/NativeApi/cordova'
Vue.use(nativeApi, Object.assign({ debug: true, maxRetryTimes: 10, retrySleepTime: 100 }))
// 判断是否V+模块
Vue.prototype.$vPlusModule = process.env.NODE_ENV === 'provt'
Vue.prototype.$vPlusModule = window.qing.isSupportNativeJsBridge
Vue.config.productionTip = false
......@@ -36,13 +36,13 @@ Vue.component('title-bar', TitleBar) // 全局注册标题栏
Vue.component('page', BasePage)
Vue.prototype.$dialog = Dialog // 全局的对话框
const VMT = new Vue({
const vm = new Vue({
router,
store,
render: (h) => h(App)
})
window.qing.ready(() => {
VMT.$mount('#app')
vm.$mount('#app')
})
export default VMT
export default vm
......@@ -12,6 +12,10 @@ function isObject (value) {
return value !== null && typeof value === 'object'
}
function isString (fd) {
return Object.prototype.toString.call(fd) === '[object String]'
}
function isFormData (fd) {
return Object.prototype.toString.call(fd) === '[object FormData]'
}
......@@ -35,7 +39,7 @@ function params2object (url) {
.forEach((n) => {
n = n.split('=')
if (n.length === 2) {
params[n[0]] = n[1]
params[n[0]] = decodeURIComponent(n[1])
}
})
}
......@@ -43,6 +47,7 @@ function params2object (url) {
}
function request (opt) {
let serializer = opt.serializer || 'form'
opt = opt || {}
if (!opt.url) {
return Promise.reject('interface url is required!')
......@@ -78,35 +83,52 @@ function request (opt) {
// 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'
})
const headers = opt.headers
const contentType = headers['content-type'] || headers['Content-Type'] || headers['CONTENT-TYPE'] || ''
if (contentType.indexOf('application/json') !== -1) {
serializer = 'json'
}
if ((serializer === 'form') && isFormData(data)) {
opt.data = formData2obj(data)
} else if (isObject(data)) {
opt.headers = Object.assign(opt.headers || {}, {
'Content-Type': 'application/json;charset=UTF-8'
})
} else if (isString(data)) {
if (serializer === 'json') {
try {
opt.data = JSON.parse(data)
} catch (error) {
opt.data = {}
}
} else {
opt.data = params2object(data)
}
}
}
// 处理header
opt.headers = opt.headers || {}
const headers = {}
// headers字段值必须是字符串型
Object.keys(opt.headers).forEach(function (key) {
var val = opt.headers[key]
if (val) {
var type = typeof val
if (type === 'undefined') {
delete opt.headers[key]
} else if (type !== 'string') {
opt.headers[key] = val + ''
if (type !== 'string') {
val = val + ''
}
// 因content-type可能存在大小写不规范,这里先过滤掉,后面根据serializer统一添加
var _key = key.toLowerCase()
if (_key !== 'content-type') {
headers[_key] = val
}
}
})
// 根据serializer统一添加content-type
headers['content-type'] = serializer === 'json' ? 'application/json' : 'application/x-www-form-urlencoded'
opt.headers = headers
return new Promise(function (resolve, reject) {
window.qing.call('request', {
url: opt.url,
method: opt.method,
method: opt.method.toUpperCase(),
headers: opt.headers,
header: opt.headers,
data: opt.data || {},
......
......@@ -9,10 +9,11 @@ import axios from 'axios';
// 全局axios默认配置
// axios.defaults.baseURL = APIPath.HOST
// axios.defaults.baseURL = APIPath.TESTHOST
// 'Authorization': 'Basic c21zc2VydmljZXVzZXI6ZmRjVXNlcjY1NCNAIQ=='// 正式环境 账号 smsserviceuser 密码 fdcUser654#@!
// 'Authorization': 'Basic bGl1eW1AZWhvbWVvbC5jbjppdGFk' // 测试环境
axios.defaults.headers = {
'X-Requested-With': 'XMLHttpRequest',
'Authorization': 'Basic c21zc2VydmljZXVzZXI6ZmRjVXNlcjY1NCNAIQ=='// 正式环境 账号 smsserviceuser 密码 fdcUser654#@! // todo 获取登录后的账号密码进行封装 'Basic c21zc2VydmljZXVzZXI6ZmRjVXNlcjY1NCNAIQ=='
// 'Authorization': 'Basic bGl1eW1AZWhvbWVvbC5jbjppdGFk' // 测试环境
'Authorization': process.env.PACK_ENV === 'prod' ? 'Basic c21zc2VydmljZXVzZXI6ZmRjVXNlcjY1NCNAIQ==' : 'Basic c21zc2VydmljZXVzZXI6amZmY0AxMjM='
}
axios.defaults.timeout = 60 * 1000
// 传json格式参数,不需要
......
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