1
0
mirror of https://gitee.com/bookshelfplus/bookshelfplus synced 2025-09-12 19:51:39 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee

新增”添加网盘链接“功能

This commit is contained in:
2022-04-23 22:14:59 +08:00
parent 89a93009d5
commit c95a581aaf
14 changed files with 2841 additions and 826 deletions

View File

@@ -138,7 +138,7 @@ router.get('/dashboard/:group/:page/:subpage?', function (req, res) {
},
"object-detail": {
title: "文件对象详情",
baseTemplate: "blank",
baseTemplate: "form",
pageTemplate: "FileManage_ObjectManage_Detail",
},
"upload": {

View File

@@ -431,14 +431,14 @@
}
function getLinkDOM(fileObjectInfo) {
// 获取文件下载链接DOM
var iconSrc = "/assets/image/svg/direct_link.svg", title = fileObjectInfo.storageMedium, content = "", downloadLink = "";
var iconSrc = "/assets/image/svg/direct_link.svg", title = fileObjectInfo.storageMediumForDisplay, content = "", downloadLink = "";
if(fileObjectInfo.fileShareCode != "" && fileObjectInfo.fileShareCode != null) {
content = `<span>提取码: <span class="click2copy" style="user-select: all; cursor: pointer;">${fileObjectInfo.fileShareCode}</span>&nbsp;</span>`; // 最后一个 &nbsp; 是为了保证选中时不会选中后面的回车
downloadLink = `<a class="baiduNetdiskLink" share-code="${fileObjectInfo.fileShareCode}" share-link="${fileObjectInfo.filePath}" style="cursor: pointer;" title="复制提取码并前往">前往</a>`;
} else {
downloadLink = `<a href="${fileObjectInfo.filePath}" target="_blank">前往</a>`;
}
switch (fileObjectInfo.storageMedium) {
switch (fileObjectInfo.storageMediumForDisplay) {
case "腾讯云对象存储":
title = "直链下载";
if (!localStorageUtils.getLoginStatus()) {
@@ -455,7 +455,7 @@
iconSrc = "/assets/image/svg/aliyun_drive.svg";
break;
default:
title = fileObjectInfo.storageMedium;
title = fileObjectInfo.storageMediumForDisplay;
downloadLink = `<a href="${fileObjectInfo.filePath}" target="_blank">前往</a>`;
break;
}

View File

@@ -77,8 +77,9 @@
${new Date(element.fileCreateAt).toLocaleString()}
</span>`,
管理: `<span style="margin: 0 auto;">
<a href="<%= pageUrl %>detail?id=${element.id}">详情</a>
<a href="javascript:deleteFile(${element.id});">删除(TODO)</a>
<a href="<%= pageUrl %>detail?id=${element.id}">详情</a>
<a href="<%= pageUrl %>object-detail?fileId=${element.id}">添加网盘链接</a><br>
<a href="javascript:deleteFile(${element.id});">删除(TODO)</a>
</span>`,
})
});

View File

@@ -83,7 +83,8 @@
var item = data[i];
items.push(`<tr>
<td>${item.id}</td>
<td>${item.storageMedium}</td>
<td>${item.storageMediumForDisplay}</td>
<td style="font-size: 12px;">${item.filePath}</td>
<td>${item.filePwd}</td>
<td>${item.fileShareCode}</td>
<td>${(item.uploadStatus ? item.uploadStatus : "<span style='color: grey; font-weight: bold;'>未知</span>")
@@ -93,10 +94,12 @@
</tr>`);
}
document.getElementById("file-object-container").innerHTML =
`<table border="1" style="margin: 0 auto;">
`<a href="<%= pageUrl %>../object-detail?fileId=${fileId}">添加网盘链接</a><br>
<table border="1" style="margin: 0 auto;">
<tr>
<th>文件对象Id</th>
<th>存储介质</th>
<th>链接</th>
<th>文件密码</th>
<th>提取码</th>
<th>状态</th>

View File

@@ -1,3 +1,10 @@
<style>
/* 限制 来源 列的宽度 */
tr>*:nth-child(3),
td>*:nth-child(3) {
max-width: 100px;
}
</style>
<p>
<a href="<%= pageUrl %>../">返回上一级</a>
&nbsp;
@@ -26,12 +33,15 @@
ID: ${element.fileId}
<a href="<%= pageUrl %>../detail?id=${element.fileId}">查看</a>
</span>`,
链接: `<span class="overflow-omit" style="font-size: 12px; line-height: 1.2em; display: block;">
${element.filePath}
</span>`,
密码: `<span class="overflow-omit" style="font-size: 12px; line-height: 1.2em; display: block;"><nobr>
文件密码: ${element.filePwd}<br>
提取码: ${element.fileShareCode}
</nobr></span>`,
存储介质: `<span class="overflow-omit" style="font-size: 12px; line-height: 1.2em; display: block;"><nobr>
${element.storageMedium}
${element.storageMediumForDisplay}
</nobr></span>`,
状态: `${(element.uploadStatus ? element.uploadStatus : "<span style='color: grey; font-weight: bold;'>未知</span>")
.replace("SUCCESS", "<span style='color: green; font-weight: bold;'>成功</span>")

View File

@@ -0,0 +1,197 @@
<script>
// 如果传入了 id 那么就是修改文件对象,否则就是添加文件对象
var params = getParams()
var fileObjectId = params.id;
var fileId = params.fileId;
if (!fileId) {
alert("未传入 fileId ");
history.go(-1);
}
var isModify = fileObjectId ? true : false;
if (!isModify) {
// 新增文件对象
fileObjectId = 0;
} else {
// 修改文件对象
}
// 点击提交按钮
function btnSubmitClick() {
formSubmit({
type: 'POST',
url: '/file/object/detail',
data: { id: fileObjectId },
success: function (data) {
console.log(data);
alert(isModify ? "修改成功!" : "添加成功!");
history.go(-1);
}
});
}
// 如果是修改文件对象,则需要获取文件对象详情
async function getFileObjectDetail(fileObjectId) {
var responseData = await getRequest("/file/object/get", { id: fileObjectId });
var axiosData = responseData.data;
var status = axiosData.status;
var data = axiosData.data;
if (status === "success") {
console.log(data)
return data;
} else {
alert(`出错啦!${data.errMsg} (错误码: ${data.errCode}) `);
// 回到上一页
history.go(-1);
}
}
async function getControlsProfile(getValidateUtils) {
// 修改文件对象: 获取文件对象详情
var fileObjectDetail = {};
if (isModify) {
fileObjectDetail = await getFileObjectDetail(fileObjectId);
} else {
console.log("新增文件对象无需获取文件对象详情");
}
var filePathDisabledAttr = {};
var modifyDisabledAttr = {};
if (fileObjectDetail.storageMediumForDisplay == "腾讯云对象存储") {
filePathDisabledAttr.disabled = "true";
if (isModify) {
modifyDisabledAttr.disabled = "true";
}
}
return [
// 必须设置 id, name
// 只有设置了 id 才会使用 validate 校验取值
{
"tag": "select",
"attr": {
"id": "storageMedium",
"name": "storageMedium",
"value": fileObjectDetail.storageMedium || "",
...modifyDisabledAttr
},
"label": {
"value": "存储位置",
},
"required": true,
"children": [
{
"tag": "option",
"attr": { "value": "QCLOUD_COS" },
"innerHTML": "腾讯云对象存储",
},
{
"tag": "option",
"attr": { "value": "BAIDU_NETDISK" },
"innerHTML": "百度网盘",
},
{
"tag": "option",
"attr": { "value": "ALIYUN_DRIVE" },
"innerHTML": "阿里云盘",
},
],
"innerHTML": "",
"validate": (val) => {
if (val == "QCLOUD_COS") {
return {
result: false,
msg: "腾讯云对象存储请使用上传文件功能上传"
};
} else {
return { result: true };
}
}
},
{
"tag": "input",
"attr": {
"id": "filePath",
"name": "filePath",
"placeholder": "文件对象链接或路径",
"value": fileObjectDetail.filePath || "",
...filePathDisabledAttr // 如果是对象存储,那么就不允许编辑
},
"label": {
"value": "文件链接",
},
"required": true,
"innerHTML": "",
"validate": (val) => getValidateUtils().setValue(val)
.notString("传入的值为非字符串类型")
.notEmptyAfterTrim("文件链接不能为空,请输入文件链接")
.length(0, 150, "文件链接不能超过 150 个字符")
.isValid()
},
{
"tag": "input",
"attr": {
"id": "fileId",
"name": "fileId",
"placeholder": "关联文件Id",
"value": fileId || "",
"disabled": true,
},
"label": {
"value": "关联文件Id",
},
"required": true,
"innerHTML": "",
"validate": (val) => getValidateUtils().setValue(val)
.notPositiveInteger("关联文件id需要为正整数")
.isValid()
},
{
"tag": "input",
"attr": {
"id": "filePwd",
"name": "filePwd",
"placeholder": "文件密码",
"value": fileObjectDetail.filePwd || "",
},
"label": {
"value": "文件密码",
},
"required": false,
"innerHTML": "",
"validate": (val) => getValidateUtils().setValue(val)
.notString("传入的值为非字符串类型")
.isValid()
},
{
"tag": "input",
"attr": {
"id": "fileShareCode",
"name": "fileShareCode",
"placeholder": "提取码",
"value": fileObjectDetail.fileShareCode || "",
},
"label": {
"value": "提取码",
},
"required": false,
"innerHTML": "",
"validate": (val) => getValidateUtils().setValue(val)
.notString("传入的值为非字符串类型")
.isValid()
},
// {
// "tag": "span",
// "attr": {
// },
// "innerHTML": fileObjectDetail.uploadStatus || "",
// "label": {
// "value": "上传状态",
// },
// "required": false,
// },
];
}
</script>