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 }) } //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' }) } /** * 通过A标签下载文件的通用方法 * @param data--接口返回的数据 * @param fileName --下载文件的名称 */ export function downloadFileByA(data, fileName) { // 当没有返回数据或者返回错误信息的时候,对数据进行解析后提示 if (!data || data.type === 'application/json') { const reader = new FileReader() reader.readAsText(data) // 处理load事件。该事件在读取操作完成时触发 reader.onload = e => { // 解析返回的值 const res = JSON.parse(e.target.result) // 异常信息抛出 if (!res.success) { Vue.prototype['$message'].warning(res.message || '文件下载失败') } } return } // 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对象 } } /** * get请求下载文件 * @param url 文件路径 * @param fileName 文件名 * @param parameter * @returns {*} */ export function downloadFile(url, fileName, parameter) { return downFile(url, parameter).then((data) => { // 调用a标签下载文件的方法 downloadFileByA(data, fileName) }) } /** * post下载文件 * @param url 文件路径 * @param fileName 文件名 * @param parameter * @returns {*} */ export function downloadPostFile(url, fileName, parameter) { return axios({ url: url, data: parameter, method: 'post', responseType: 'blob' }).then((data) => { // 调用a标签下载文件的方法 downloadFileByA(data, fileName) }) } /** * 文件上传 用于富文本上传图片 * @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 } }