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
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 { '<': '<', '>': '>', '&': '&', '"': '"' }[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
|
|
})
|
|
}
|
|
|
|
|
|
|
|
|