352 lines
8.4 KiB
Java
352 lines
8.4 KiB
Java
import Vue from 'vue'
|
||
import { axios } from '@/utils/request'
|
||
import store from '@/store'
|
||
import JLoadingOne from '../components/jero/JLoadingOne'
|
||
import { Modal } from 'ant-design-vue'
|
||
import { ACCESS_TOKEN, TENANT_ID } from '@/store/mutation-types'
|
||
|
||
const showDrawer = {}
|
||
|
||
const DrawerConstructor = Vue.extend(JLoadingOne)
|
||
let currentMsg
|
||
const initInstance = () => {
|
||
currentMsg = new DrawerConstructor({})
|
||
document.body.appendChild(currentMsg.$mount().$el)
|
||
}
|
||
let index = {
|
||
showDrawer(options) {
|
||
if (!currentMsg) {
|
||
initInstance()
|
||
}
|
||
if (typeof options === 'object') {
|
||
Object.assign(currentMsg, options)
|
||
}
|
||
}
|
||
}
|
||
const api = {
|
||
user: '/mock/api/user',
|
||
role: '/mock/api/role',
|
||
service: '/mock/api/service',
|
||
permission: '/mock/api/permission',
|
||
permissionNoPager: '/mock/api/permission/no-pager'
|
||
}
|
||
|
||
export default api
|
||
|
||
//post
|
||
export function postAction(url, parameter) {
|
||
return axios({
|
||
url: url,
|
||
method: 'post',
|
||
data: parameter
|
||
})
|
||
}
|
||
|
||
//post method= {post | put}
|
||
export function httpAction(url, parameter, method) {
|
||
return axios({
|
||
url: url,
|
||
method: method,
|
||
data: parameter
|
||
})
|
||
}
|
||
|
||
//put
|
||
export function putAction(url, parameter) {
|
||
return axios({
|
||
url: url,
|
||
method: 'put',
|
||
data: parameter
|
||
})
|
||
}
|
||
|
||
//get
|
||
export function getAction(url, parameter) {
|
||
return axios({
|
||
url: url,
|
||
method: 'get',
|
||
params: parameter
|
||
})
|
||
}
|
||
|
||
//deleteAction
|
||
export function deleteAction(url, parameter) {
|
||
return axios({
|
||
url: url,
|
||
method: 'delete',
|
||
params: parameter
|
||
})
|
||
}
|
||
|
||
export function getUserList(parameter) {
|
||
return axios({
|
||
url: api.user,
|
||
method: 'get',
|
||
params: parameter
|
||
})
|
||
}
|
||
|
||
export function getRoleList(parameter) {
|
||
return axios({
|
||
url: api.role,
|
||
method: 'get',
|
||
params: parameter
|
||
})
|
||
}
|
||
|
||
export function getServiceList(parameter) {
|
||
return axios({
|
||
url: api.service,
|
||
method: 'get',
|
||
params: parameter
|
||
})
|
||
}
|
||
|
||
export function getPermissions(parameter) {
|
||
return axios({
|
||
url: api.permissionNoPager,
|
||
method: 'get',
|
||
params: parameter
|
||
})
|
||
}
|
||
|
||
// id == 0 add post
|
||
// id != 0 update put
|
||
export function saveService(parameter) {
|
||
return axios({
|
||
url: api.service,
|
||
method: parameter.id == 0 ? 'post' : 'put',
|
||
data: parameter
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 下载文件 用于excel导出
|
||
* @param url
|
||
* @param parameter
|
||
* @returns {*}
|
||
*/
|
||
export function downFile(url, parameter) {
|
||
return axios({
|
||
url: url,
|
||
params: parameter,
|
||
method: 'get',
|
||
responseType: 'blob'
|
||
})
|
||
}
|
||
export function downFilePost(url, parameter) {
|
||
return axios({
|
||
url: url,
|
||
data: parameter,
|
||
method: 'post',
|
||
responseType: 'blob'
|
||
})
|
||
}
|
||
/**
|
||
* 下载文件
|
||
* @param url 文件路径
|
||
* @param fileName 文件名
|
||
* @param parameter
|
||
* @returns {*}
|
||
*/
|
||
export function downloadFile(url, fileName, parameter, callback) {
|
||
let langCn = localStorage.language
|
||
// 默认中文
|
||
let isTrue
|
||
if (langCn == 'en-us') {
|
||
isTrue = true
|
||
} else if (langCn == 'zh-cn') {
|
||
isTrue = false
|
||
}
|
||
index.showDrawer({
|
||
loading: true,
|
||
isTrue: isTrue
|
||
})
|
||
return downFile(url, parameter).then((data) => {
|
||
let fileReader = new FileReader()
|
||
fileReader.onload = function(event) {
|
||
try {
|
||
let jsonData = JSON.parse(event.target.result)
|
||
if (jsonData.message.includes('token')) {
|
||
index.showDrawer({
|
||
loading: false,
|
||
isTrue: isTrue
|
||
})
|
||
Modal.error({
|
||
title: '登录已过期',
|
||
content: '很抱歉,登录已过期,请重新登录',
|
||
okText: '重新登录',
|
||
mask: false,
|
||
onOk: () => {
|
||
store.dispatch('Logout').then(() => {
|
||
Vue.ls.remove(ACCESS_TOKEN)
|
||
try {
|
||
let path = window.document.location.pathname
|
||
if (path != '/' && path.indexOf('/user/login') == -1) {
|
||
window.location.reload()
|
||
}
|
||
} catch (e) {
|
||
window.location.reload()
|
||
}
|
||
})
|
||
}
|
||
})
|
||
} else {
|
||
if (!jsonData.success) {
|
||
index.showDrawer({
|
||
loading: false,
|
||
isTrue: isTrue
|
||
})
|
||
Vue.prototype['$message'].warning(jsonData.message)
|
||
}
|
||
}
|
||
} catch (e) {
|
||
if (!data || data.size === 0) {
|
||
index.showDrawer({
|
||
loading: false,
|
||
isTrue: isTrue
|
||
})
|
||
Vue.prototype['$message'].warning('文件下载失败')
|
||
return
|
||
}
|
||
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
||
window.navigator.msSaveBlob(new Blob([data]), fileName)
|
||
} else {
|
||
let url = window.URL.createObjectURL(new Blob([data]))
|
||
let link = document.createElement('a')
|
||
link.style.display = 'none'
|
||
link.href = url
|
||
link.setAttribute('download', fileName)
|
||
document.body.appendChild(link)
|
||
link.click()
|
||
document.body.removeChild(link) //下载完成移除元素
|
||
window.URL.revokeObjectURL(url) //释放掉blob对象
|
||
}
|
||
index.showDrawer({
|
||
loading: false,
|
||
isTrue: isTrue
|
||
})
|
||
callback && callback()
|
||
}
|
||
}
|
||
fileReader.readAsText(data)
|
||
})
|
||
}
|
||
|
||
export function downloadFilePost(url, fileName, parameter, callback) {
|
||
let langCn = localStorage.language
|
||
// 默认中文
|
||
let isTrue
|
||
if (langCn == 'en-us') {
|
||
isTrue = true
|
||
} else if (langCn == 'zh-cn') {
|
||
isTrue = false
|
||
}
|
||
index.showDrawer({
|
||
loading: true,
|
||
isTrue: isTrue
|
||
})
|
||
return downFilePost(url, parameter).then((data) => {
|
||
let fileReader = new FileReader()
|
||
fileReader.onload = function(event) {
|
||
try {
|
||
let jsonData = JSON.parse(event.target.result)
|
||
if (jsonData.message.includes('token')) {
|
||
index.showDrawer({
|
||
loading: false,
|
||
isTrue: isTrue
|
||
})
|
||
Modal.error({
|
||
title: '登录已过期',
|
||
content: '很抱歉,登录已过期,请重新登录',
|
||
okText: '重新登录',
|
||
mask: false,
|
||
onOk: () => {
|
||
store.dispatch('Logout').then(() => {
|
||
Vue.ls.remove(ACCESS_TOKEN)
|
||
try {
|
||
let path = window.document.location.pathname
|
||
if (path != '/' && path.indexOf('/user/login') == -1) {
|
||
window.location.reload()
|
||
}
|
||
} catch (e) {
|
||
window.location.reload()
|
||
}
|
||
})
|
||
}
|
||
})
|
||
} else {
|
||
if (!jsonData.success) {
|
||
index.showDrawer({
|
||
loading: false,
|
||
isTrue: isTrue
|
||
})
|
||
Vue.prototype['$message'].warning(jsonData.message)
|
||
}
|
||
}
|
||
} catch (e) {
|
||
if (!data || data.size === 0) {
|
||
Vue.prototype['$message'].warning('文件下载失败')
|
||
return
|
||
}
|
||
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
||
window.navigator.msSaveBlob(new Blob([data]), fileName)
|
||
} else {
|
||
let url = window.URL.createObjectURL(new Blob([data]))
|
||
let link = document.createElement('a')
|
||
link.style.display = 'none'
|
||
link.href = url
|
||
link.setAttribute('download', fileName)
|
||
document.body.appendChild(link)
|
||
link.click()
|
||
document.body.removeChild(link) //下载完成移除元素
|
||
window.URL.revokeObjectURL(url) //释放掉blob对象
|
||
}
|
||
index.showDrawer({
|
||
loading: false,
|
||
isTrue: isTrue
|
||
})
|
||
callback && callback()
|
||
}
|
||
}
|
||
fileReader.readAsText(data)
|
||
})
|
||
}
|
||
/**
|
||
* 文件上传 用于富文本上传图片
|
||
* @param url
|
||
* @param parameter
|
||
* @returns {*}
|
||
*/
|
||
export function uploadAction(url, parameter) {
|
||
return axios({
|
||
url: url,
|
||
data: parameter,
|
||
method: 'post',
|
||
headers: {
|
||
'Content-Type': 'multipart/form-data' // 文件上传
|
||
}
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取文件服务访问路径
|
||
* @param avatar
|
||
* @param subStr
|
||
* @returns {*}
|
||
*/
|
||
export function getFileAccessHttpUrl(avatar, subStr) {
|
||
if (!subStr) subStr = 'http'
|
||
try {
|
||
if (avatar && avatar.startsWith(subStr)) {
|
||
return avatar
|
||
} else {
|
||
if (avatar && avatar.length > 0 && avatar.indexOf('[') == -1) {
|
||
return window._CONFIG['staticDomainURL'] + '/' + avatar
|
||
}
|
||
}
|
||
} catch (err) {
|
||
return
|
||
}
|
||
}
|