Files
laws_weilai/jero-web/src/api/manage.js
T
2022-07-12 19:45:03 +08:00

352 lines
8.4 KiB
Java
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 '@/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
}
}