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.
 
 
 

268 lines
6.6 KiB

import request from '@/utils/request'
import {downloadFileStreamFastDFS, getFileStream} from "@/api/system/upload";
//文件上传(只适合小文件)
export function uploadFile(data){
return request({
url: '/common/file',
method: 'post',
data: data
})
}
// 获取文件
export function getFile(url, img, name) {
const data = { url }
request({
url: '/fastdfs/show?url=' + url,
method: 'post',
data: data,
responseType: "blob"
}).then(res => {
const blob = new Blob([res], {
type: 'application/png;charset=utf-8',
});
const url1 = window.URL.createObjectURL(blob);
img[name] = url1;
}
);
}
// 获取文件
export function showFile(url) {
if (url && url.indexOf("blob:http:") == -1) {
const data = { url }
return request({
url: '/fastdfs/show?url=' + url,
method: 'post',
data: data,
responseType: "blob"
}).then(res => {
const blob = new Blob([res], {
type: 'application/png;charset=utf-8',
});
const url1 = window.URL.createObjectURL(blob);
return url1;
}
);
} else {
return new Promise((result, rej) => {
result(false)
})
}
}
export function html2Escape(sHtml) {
if (sHtml) {
return sHtml.replace(/[<>&"]/g, function (c) { return { '<': '&lt;', '>': '&gt;', '&': '&amp;', '"': '&quot;' }[c]; });
} else {
return "";
}
}
export function escape2Html(str) {
if (str) {
var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"' };
return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function (all, t) { return arrEntities[t]; });
} else {
return "";
}
}
//转换编辑器的文本图片转为后台需要的格式
export function changeFormatToBack(content) {
let str = content
if (!str) {
return "";
}
let imgReg = /<img.*?(?:>|\/>)/gi
let serverReg = /data-server=[\'\"]?([^\'\"]*)[\'\"]?/gi
let arr = str.match(imgReg)
if (arr) {
for (let i = 0; i < arr.length; i++) {
let server = arr[i].match(serverReg)
if (server && server.length > 0) {
let index = server[0].indexOf("group");
let url = server[0].substring(index, server[0].length - 1);
let res = '<img src="' + url + '" data-server="' + url + '">'
str = str.replace(arr[i], res)
}
}
}
let imgReg1 = /<video [^>]*src=['"]([^'"]+)[^>]*>/gi
let serverReg1 = /data-server-video=[\'\"]?([^\'\"]*)[\'\"]?/gi
let arr1 = str.match(imgReg1)
if (arr1) {
for (let i = 0; i < arr1.length; i++) {
let server1 = arr1[i].match(serverReg1)
if (server1 && server1.length > 0) {
let index1 = server1[0].indexOf("group");
let url1 = server1[0].substring(index1, server1[0].length - 1);
let res1 = '<video src="' + url1 + '" data-server-video="' + url1 + '" controls="controls" />'
str = str.replace(arr1[i], res1)
}
}
}
str = html2Escape(str)
return str
}
//转换文本转换为前台需要的格式
export async function changeFormatToFore(content) {
if (!content) {
return "";
}
let imgReg = /<img.*?(?:>|\/>)/gi
let srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/gi
let str = escape2Html(content)
let arr = str.match(imgReg)
if (arr) {
for (let i = 0; i < arr.length; i++) {
let src = arr[i].match(srcReg)
if (!src) {
break
}
var index = src[0].indexOf("group");
if (index != -1) {
let url = src[0].substring(index, src[0].length - 1);
await showFile(url).then((res) => {
let newImg = '<img src="' + res + '" data-server="' + url + '">'
str = str.replace(arr[i], newImg)
});
}
}
}
let imgReg1 = /<video [^>]*src=['"]([^'"]+)[^>]*>/gi
let srcReg1 = /src=[\'\"]?([^\'\"]*)[\'\"]?/gi
let arr1 = str.match(imgReg1)
if (arr1) {
for (let i = 0; i < arr1.length; i++) {
let src1 = arr1[i].match(srcReg1)
var index1 = src1[0].indexOf("group");
if (index1 != -1) {
let url1 = src1[0].substring(index1, src1[0].length - 1);
await showFile(url1).then((res) => {
let newImg1 = '<video src="' + res + '" data-server-video="' + url1 + '" controls />'
str = str.replace(arr1[i], newImg1)
});
}
}
}
return str
}
/**
* 公用下载文件方法
* @param response
* @param deleteFlag 是否删除源文件
* @param fileName 新的文件名称
*/
export function downloadFile(response, deleteFlag, fileName) {
const param = {
'fileName': response.msg,
'delete': deleteFlag
}
getFileStream(param).then(res => {
// 利用a标签自定义下载文件名
const link = document.createElement('a');
// 创建Blob对象,设置文件类型
let blob = new Blob([res]);
link.href = URL.createObjectURL(blob); // 创建URL n
link.setAttribute('download', fileName); // 设置下载文件名称
document.body.appendChild(link);
link.click(); // 下载文件
URL.revokeObjectURL(link.href); // 释放内存
});
}
/**
* 公用 从fastDfs中下载文件
*/
export function downloadFileForFastDFS(fileName, fileUrl) {
downloadFileStreamFastDFS({fileName: fileName, fileUrl: fileUrl})
.then(res => {
// 利用a标签自定义下载文件名
const link = document.createElement('a');
// 创建Blob对象,设置文件类型
let blob = new Blob([res]);
link.href = URL.createObjectURL(blob); // 创建URL n
link.setAttribute('download', fileName); // 设置下载文件名称
document.body.appendChild(link);
link.click(); // 下载文件
URL.revokeObjectURL(link.href); // 释放内存
});
}
// 详情数据
export function info(id) {
return request({
url: '/system/datas/info/' + id,
method: 'get'
})
}
//数据新增/修改
export function saveData(data) {
return request({
url: '/system/datas/saveData',
method: 'post',
data
})
}
// 数据删除
export function dataDelete(data) {
return request({
url: '/system/datas/delete',
method: 'post',
data
})
}
// 数据标注
export function dimension(data) {
return request({
url: '/system/datas/dimension',
method: 'post',
data
})
}
//素材相关实体
export function relationEntity(id) {
return request({
url: '/system/datas/relationEntity/' + id,
method: 'post',
})
}
//实体的关系 实体id 素材id
export function entityRelation(id, materialId) {
return request({
url: '/system/datas/entityRelation/' + id +'/'+ materialId,
method: 'post',
})
}
//素材实体新增
export function materialEntity(data) {
return request({
url: '/system/materialEntity',
method: 'post',
data:data
})
}