You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
km_community/ant-design-vue-jeecg/src/api/manage.js

243 lines
5.4 KiB

import Vue from 'vue'
import { axios } from '@/utils/request'
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
})
}
export function httpPostAction(url, parameter, method) {
return axios({
url: url,
method: method,
params: 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
})
}
// 自定义 getPDF
export function getActionPDF(url, parameter) {
return axios({
url: url,
method: 'get',
params: parameter,
responseType: 'blob',
})
}
//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',
// onDownloadProgress (progress) {
// console.log("progress",progress);
// console.log(Math.round(progress.loaded / progress.total * 100) + '%');
// }
})
}
/**
* 下载文件
* @param url 文件路径
* @param fileName 文件名
* @param parameter
* @returns {*}
*/
export function downloadFile(url, fileName, parameter) {
return downFile(url, parameter).then((data) => {
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对象
Vue.prototype['$message'].success('文件已经下载')
}
})
}
// 自定义下载文件方法
export function downloadFileName(url, parameter) {
return downFile(url, parameter).then((response) => {
var fileName;
// 前提是服务端要在header设置Access-Control-Expose-Headers: Content-Disposition
// 前端才能正常获取到Content-Disposition内容
var temp = response.headers['content-disposition']
var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/
var matches = filenameRegex.exec(temp)
if (matches != null && matches[1]) {
let filename1 = matches[1].replace(/['"]/g, '')
filename1 =filename1.replace(/\+/g,"%20")
fileName=decodeURIComponent(filename1)
}
if (!response.data || response.data.size === 0) {
Vue.prototype['$message'].warning('文件下载失败')
return
}
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([response.data]), fileName)
} else {
let url = window.URL.createObjectURL(new Blob([response.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对象
Vue.prototype['$message'].success('文件已经下载')
}
})
}
/**
* 文件上传 用于富文本上传图片
* @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
}
}