Files
SOP/sop-admin/sop-admin-vue/src/utils/global.js
tanghc 6ab696dfaf - 新增ISV用户平台
- 新增门户网站(portal)
- 新增`C++`,`Rust`语言SDK
2020-11-07 10:55:12 +08:00

136 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
注册全局方法
*/
import Vue from 'vue'
import axios from 'axios'
import { getToken, removeToken } from './auth'
// 创建axios实例
const client = axios.create({
baseURL: process.env.VUE_APP_BASE_API, // api 的 base_url
timeout: 60000 // 请求超时时间,60秒
})
Object.assign(Vue.prototype, {
/**
* 请求接口
* @param uri urigoods.get,goods.get/1.0
* @param data 请求数据
* @param callback 成功时回调
* @param errorCallback 错误时回调
*/
post: function(uri, data, callback, errorCallback) {
const that = this
const paramStr = JSON.stringify(data)
if (!uri.endsWith('/')) {
uri = uri + '/'
}
if (!uri.startsWith('/')) {
uri = '/' + uri
}
client.post(uri, {
data: encodeURIComponent(paramStr),
access_token: getToken()
}).then(function(response) {
const resp = response.data
const code = resp.code
if (!code || code === '-9') {
that.$message.error(resp.msg || '系统错误')
return
}
if (code === '-100' || code === '18' || code === '21') { // 未登录
that.logout()
return
}
if (code === '0') { // 成功
callback && callback.call(that, resp)
} else {
that.$message.error(resp.msg)
}
}).catch(function(error) {
console.error('err' + error) // for debug
errorCallback && errorCallback(error)
that.$message.error(error.message)
})
},
/**
* tip使用方式this.tip('操作成功')this.tip('错误', 'error')
* @param msg 内容
* @param type success / info / warning / error
* @param stay 停留几秒默认3秒
*/
tip: function(msg, type, stay) {
stay = parseInt(stay) || 3
this.$message({
message: msg,
type: type || 'success',
duration: stay * 1000
})
},
/**
* 提醒框
* @param msg 消息
* @param okHandler 成功回调
* @param cancelHandler
*/
confirm: function(msg, okHandler, cancelHandler) {
const that = this
this.$confirm(msg, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
okHandler.call(that, done)
} else if (action === 'cancel') {
if (cancelHandler) {
cancelHandler.call(that, done)
} else {
done()
}
} else {
done()
}
}
}).catch(function() {})
},
/**
* 文件必须放在public下面
* @param path 相对于public文件夹路径如文件在public/static/sign.mdstatic/sign.md
* @param callback 回调函数,函数参数是文件内容
*/
getFile: function(path, callback) {
axios.get(path)
.then(function(response) {
callback.call(this, response.data)
})
},
downloadText(filename, text) {
const element = document.createElement('a')
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text))
element.setAttribute('download', filename)
element.style.display = 'none'
document.body.appendChild(element)
element.click()
document.body.removeChild(element);
},
/**
* 重置表单
* @param formName 表单元素的ref
*/
resetForm(formName) {
const frm = this.$refs[formName]
frm && frm.resetFields()
},
logout: function() {
removeToken()
const fullPath = this.$route.fullPath
if (fullPath.indexOf('login?redirect') === -1) {
this.$router.push({ path: `/login?redirect=${fullPath}` })
}
}
})