提交 aa5439cd authored 作者: 龙菲's avatar 龙菲

优化重构新增和编辑逻辑

上级 6187ea81
/**
* 本文件用于处理文物的相关文件上传过程中的函数
* 注意不要使用this可能导致找不到等问题,内部调用内部方法时直接使用fileUploadFuctions
*/
const fileUploadFuctions = { const fileUploadFuctions = {
name: '123', /**
/** * 判断文件是否上传过
* 判断文件是否上传过 * @param {File | Object} file 文件对象,可能是File可能就是普通对象
* @param {File | Object} file 文件对象,可能是File可能就是普通对象 * @returns {Boolean} 文件是否上传过
* @returns {Boolean} 文件是否上传过 */
*/ isFileRaw(file) {
isFileRaw(file) { let isFileRaw = false;
let isFileRaw = false; isFileRaw = file.status && file.status == "ready";
isFileRaw = file.status && file.status == "ready"; return isFileRaw;
return isFileRaw; },
}, /**
/** * 判断formData中是否有数据
* 判断formData中是否有数据 * @param {FormData} formData 文件对象,可能是File可能就是普通对象
* @param {FormData} formData 文件对象,可能是File可能就是普通对象 * @returns {Boolean} formData中是否有数据
* @returns {Boolean} formData中是否有数据 */
*/ isFormDataHasData(formData) {
isFormDataHasData(formData) { const formDataArr = Array.from(formData.entries(), ([key, prop]) => ({
const formDataArr = Array.from(formData.entries(), ([key, prop]) => ({ [key]: {
[key]: { ContentLength: typeof prop === "string" ? prop.length : prop.size,
ContentLength: typeof prop === "string" ? prop.length : prop.size, },
}, }));
})); return formDataArr.length > 0;
return formDataArr.length > 0; },
}, /**
/** * 获取对应媒体下的文件
* 获取对应媒体下的文件 * @param {string} mediaKey 媒体key
* @param {string} mediaKey 媒体key * @returns {Array} 媒体对应的文件
* @returns {Array} 媒体对应的文件 */
*/ getMediaFile($el, mediaKey) {
getMediaFile($el, mediaKey) { return $el.$refs[mediaKey].getFiles();
return $el.$refs[mediaKey].getFiles(); },
},
/** /**
* 获取需要上传的FormData * 获取需要上传的FormData
* @param {Array} mediaKeys 媒体keys数组 * @param {Array} mediaKeys 媒体keys数组
* @returns {FormData} formData 需要上传的formdata * @returns {FormData} formData 需要上传的formdata
*/ */
getNeedUploadFormData($el, mediaKeys) { getNeedUploadFormData($el, mediaKeys) {
const formData = new FormData(); const formData = new FormData();
const self = this; // 保存正确的 this mediaKeys.forEach((mediaKey) => {
mediaKeys.map((mediaKey) => { const currentFileList = fileUploadFuctions.getMediaFile($el, mediaKey);
const currentFileList = self.getMediaFile($el, mediaKey); currentFileList.forEach((file) => {
currentFileList.map((file) => { if (fileUploadFuctions.isFileRaw(file)) {
if (self.isFileRaw(file)) { formData.append(mediaKey, file.raw);
formData.append(mediaKey, file.raw); }
} });
}); });
}); return formData;
return formData; },
},
/** /**
* 获取需要已经存在(数据库已存储的)文件ID对象 * 获取需要已经存在(数据库已存储的)文件ID对象
* @param {Array} mediaKeys 媒体keys数组 * @param {Array} mediaKeys 媒体keys数组
* @returns {Object} 已经存在(数据库已存储的)文件ID对象 * @returns {Object} 已经存在(数据库已存储的)文件ID对象
*/ */
getOldIdsObj(mediaKeys, dialogForm) { getOldIdsObj(mediaKeys, dialogForm) {
let oldFileIdsObj = {}; let oldFileIdsObj = {};
mediaKeys.forEach((key) => { mediaKeys.forEach((key) => {
if (dialogForm[key]) { if (dialogForm[key]) {
oldFileIdsObj[key] = dialogForm[key]; oldFileIdsObj[key] = dialogForm[key];
} else { } else {
oldFileIdsObj[key] = ""; oldFileIdsObj[key] = "";
} }
}); });
return oldFileIdsObj; return oldFileIdsObj;
}, },
/** /**
* 获取返回结果中的文件id对象 * 获取返回结果中的文件id对象
* @param {Array} mediaKeys 媒体keys数组 * @param {Array} mediaKeys 媒体keys数组
* @param {Object} requestRes 上传返回的数据对象 * @param {Object} requestRes 上传返回的数据对象
* @returns {Object} 新上传的文件id对象 * @returns {Object} 新上传的文件id对象
*/ */
getNewIdsObj(mediaKeys, requestRes) { getNewIdsObj(mediaKeys, requestRes) {
let newUploadedFileIdsObj = {}; let newUploadedFileIdsObj = {};
mediaKeys.forEach((key) => { mediaKeys.forEach((key) => {
newUploadedFileIdsObj[key] = this.getResIdStrByMedia(key, requestRes); newUploadedFileIdsObj[key] = fileUploadFuctions.getResIdStrByMedia(
}); key,
return newUploadedFileIdsObj; requestRes
}, );
});
return newUploadedFileIdsObj;
},
/** /**
* 获取上传返回结果中的id字符串 * 获取上传返回结果中的id字符串
* @param {Array} mediaKeys 媒体keys数组 * @param {Array} mediaKeys 媒体keys数组
* @param {Object} requestRes 上传返回的数据对象 * @param {Object} requestRes 上传返回的数据对象
* @returns {string} 新上传的文件id字符串 * @returns {string} 新上传的文件id字符串
*/ */
getResIdStrByMedia(mediaKey, requestRes) { getResIdStrByMedia(mediaKey, requestRes) {
const arr = []; const arr = [];
requestRes.data.forEach((item) => { requestRes.data.forEach((item) => {
if (item.fileKey == mediaKey) { if (item.fileKey == mediaKey) {
arr.push(item.fileId); arr.push(item.fileId);
} }
}); });
const str = arr.length > 0 ? arr.join(",") : ""; const str = arr.length > 0 ? arr.join(",") : "";
return str; return str;
}, },
/** /**
* 获取新旧合并的文件id对象 * 获取新旧合并的文件id对象
* @param {Array} mediaKeys 媒体keys数组 * @param {Array} mediaKeys 媒体keys数组
* @param {Object} oldObj 已经存在的 * @param {Object} oldObj 已经存在的
* @param {Object} newObj 新上传的 * @param {Object} newObj 新上传的
* @returns {string} 新上传的文件id字符串 * @returns {string} 新上传的文件id字符串
*/ */
getMergedIdsObj(oldObj, newObj, mediaKeys) { getMergedIdsObj(oldObj, newObj, mediaKeys) {
const obj = {}; const obj = {};
mediaKeys.forEach((key) => { mediaKeys.forEach((key) => {
newArr = newObj[key].split(","); let newArr = newObj[key].split(",");
oldArr = oldObj[key].split(","); let oldArr = oldObj[key].split(",");
let fullArr = new Set([...newArr, ...oldArr]); let fullArr = [...new Set([...newArr, ...oldArr])];
let fullStr = fullArr.join(","); let fullStr = fullArr.join(",");
obj[key] = fullStr; obj[key] = fullStr.substring(0, fullStr.length - 1);
}); });
return obj; return obj;
}, },
/** /**
* 获取需要被删除的文件ID合集 * 获取需要被删除的文件ID合集
* @param {Array} mediaKeys 媒体keys数组 * @param {Array} mediaKeys 媒体keys数组
* @param {Object} dialogForm 表单对象 * @param {Object} dialogForm 表单对象
* @param {Object} newUploadedFileIdsObj 最新上传之后的 * @param {Object} newUploadedFileIdsObj 最新上传之后的
* @returns {Object} 新上传的文件id对象 * @returns {Object} 新上传的文件id对象
*/ */
getDeleteFileArr(oldObj, newObj, mediaKeys) { getDeleteFileArr(oldObj, newObj, mediaKeys) {
const arr = []; const arr = [];
mediaKeys.forEach((key) => { mediaKeys.forEach((key) => {
newArr = newObj[key].split(","); let newArr = newObj[key].split(",");
oldArr = oldObj[key].split(","); let oldArr = oldObj[key].split(",");
let fullArr = new Set([...newArr, ...oldArr]); let fullArr = [...new Set([...newArr, ...oldArr])];
oldArr.forEach((oldId) => { oldArr.forEach((oldId) => {
if (!fullArr.includes(oldId)) { if (!fullArr.includes(oldId)) {
arr.push(oldId); arr.push(oldId);
} }
}); });
}); });
return arr; return arr;
} },
};
} export default fileUploadFuctions;
export default fileUploadFuctions
\ No newline at end of file
const transformData = {
/**
* 转换服务器的封面数据到前端可用的封面数据
* @param {String} faceImagePressUrl 压缩过得封面
* @param {String} faceImageUrl 封面原图
* @returns {Array} el-upload组件需要的数据
*/
faceImageToClient(faceImagePressUrl, faceImageUrl) {
if (!faceImageUrl) {
return [];
}
const faceImage = [
{
name: "",
url: faceImageUrl || "",
pressUrl: faceImagePressUrl || faceImageUrl || "",
fileId: faceImage || "",
},
];
return faceImage;
},
/**
*
* @param {Array} arr 文献id数组
* @returns {String} 提交给服务器需要的以逗号隔开的字符串
*/
literatureIdArrToStr(arr) {
let str = "";
if (arr.length == 0) {
return "";
}
const result = arr.join(",");
str = result.substring(0, result.length - 1);
return str;
},
/**
*
* @param {Array} literatureVo 文献数组,每个条目是一个文献对象
* @returns {Array} 文献ID集合
*/
literatureListToIds(literatureVo) {
if (!literatureVo || literatureVo.length == 0) {
return [];
} else {
const ids = literatureVo.map((item) => {
return item.ids;
});
return ids;
}
},
/**
* 转换状态从布尔型到数值型
* @param {Boolean} statusBoolean 布尔值的状态
* @returns {Number} 提交给服务器需要的以逗号隔开的数值
*/
statusBoolToNum(statusBoolean) {
const statusNumber = statusBoolean ? 1 : 0;
return statusNumber;
},
/**
* 转换状态从数值型到布尔型
* @param {String} statusString 字符串型的状态
* @returns {Boolean} 组件需要的布尔值
*/
statusStrToBool(statusString) {
const statusBoolean = Boolean(Number(statusString));
return statusBoolean;
},
/**
* 回填馆藏单位
* @param {String} deptId 部门ID
* @param {Object} userInfo 当前用户的信息
* @returns {Array} 符合element-ui使用的数组
*/
getDeptIdArr(deptId, userInfo) {
let deptIdArr = [];
if (deptId) {
deptIdArr = [deptId];
} else if (userInfo) {
deptIdArr = [userInfo.deptId];
}
return deptIdArr;
},
/**
* 回填馆藏单位
* @param {Array} deptArr 部门ID集合
* @returns {String} 部门ID字符串
*/
getDeptIdStr(deptArr) {
let str = "";
if (deptArr.length == 0) {
return "";
}
const result = deptArr.join(",");
str = result.substring(0, result.length - 1);
return str;
},
};
export default transformData;
const checkIntro = (rule, value, callback) => {
if (!value) {
return callback(new Error("请填写馆藏介绍"));
} else {
callback();
}
};
export const rules = {
name: [{ required: true, message: "请输入文物名称", trigger: "blur" }],
deptId: [{ required: true, message: "请填写馆藏单位", trigger: "change" }],
intro: [{ required: true, validator: checkIntro, trigger: "blur" }],
};
...@@ -41,7 +41,8 @@ module.exports = { ...@@ -41,7 +41,8 @@ module.exports = {
proxy: { proxy: {
'/api': { '/api': {
// target: 'http://114.115.157.218:9603/api',//生产 // target: 'http://114.115.157.218:9603/api',//生产
target: 'http://192.168.1.230:9603/api',//公司服务器 target: 'http://222.85.214.245:9603/api',//公司服务器外网
// target: 'http://192.168.1.230:9603/api',//公司服务器
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/api': '' '^/api': ''
...@@ -49,7 +50,8 @@ module.exports = { ...@@ -49,7 +50,8 @@ module.exports = {
}, },
'/files': { '/files': {
// target: 'http://114.115.157.218:9603/files',//生产 // target: 'http://114.115.157.218:9603/files',//生产
target: 'http://192.168.1.230:9603/files',//公司服务器 target: 'http://222.85.214.245:9603/files',//公司服务器外网
// target: 'http://192.168.1.230:9603/files',//公司服务器
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/files': '' '^/files': ''
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论