feat: 私密分享添加右键"复制下载链接"的选项

This commit is contained in:
jmal 2024-06-15 20:03:34 +08:00
parent 9fc67f6eb0
commit 3aeb9dd5d3
6 changed files with 50 additions and 26 deletions

View File

@ -189,6 +189,14 @@ export default {
data: data
})
},
// 生成shareToken
generateShareToken: function(params) {
return request({
url: '/share/generate/share-token',
method: 'get',
params
})
},
// 取消分享
cancelShareLink: function(params) {
return request({

View File

@ -1056,6 +1056,7 @@ export default {
isJustHideMenus: false,
menusIsMultiple: false,
menus: [],
shareToken: undefined,
contextmenuDisabled: false,
rowContextData: {},
tableLoading: true,
@ -3336,27 +3337,43 @@ export default {
this.menus.splice(index, 1)
}
}
if (row.isShare && !row.isPrivacy) {
// 添加复制下载链接选项
this.menus.splice(-2, 0, {
iconClass: 'menu-fuzhi',
label: '复制下载链接',
operation: 'copyDownloadLink',
})
}
this.setMenusCopyDownLoadLinks(row)
}
this.preliminaryRowData(row)
},
setMenusCopyDownLoadLinks(row) {
if (row.isShare) {
// 获取this.menus中download的索引
const downloadIndex = this.menus.findIndex(
item => item.operation === 'download'
)
this.shareToken = undefined
// 在download之前添加复制下载链接选项
if (row.isPrivacy) {
// 如果是私密分享需要先获取shareToken
api.generateShareToken({fileId: row.id}).then(res => {
this.shareToken = res.data
this.addMenusCopyDownLoadLinks(downloadIndex)
})
} else {
this.addMenusCopyDownLoadLinks(downloadIndex)
}
}
},
addMenusCopyDownLoadLinks(index) {
this.menus.splice(index, 0, {
iconClass: 'menu-fuzhi',
label: '复制下载链接',
operation: 'copyDownloadLink',
})
},
setMenusByPermission(file) {
const reservations = ['open', 'download']
// 删除this.menus中不要的菜单, 仅保留reservations中的菜单
this.menus = this.menus.filter(item =>
reservations.includes(item.operation)
)
if (
file.operationPermissionList &&
file.operationPermissionList.length > 0
) {
if (file.operationPermissionList && file.operationPermissionList.length > 0) {
if (file.operationPermissionList.indexOf('PUT') > -1) {
this.menus.splice(this.menus.length - 1, 0, {
iconClass: 'menu-rename',
@ -3382,6 +3399,7 @@ export default {
})
}
}
this.setMenusCopyDownLoadLinks(file)
},
// 更多操作(单选)
moreClick(row, event) {
@ -3961,16 +3979,9 @@ export default {
},
// 复制下载链接
copyDownloadLink(row) {
let url =
window.location.origin +
fileConfig.previewUrl(
this.$store.getters.name,
row,
undefined,
undefined
)
let url = window.location.origin + fileConfig.previewUrl(this.$store.getters.name, row, undefined, this.shareToken)
if (row.isFolder) {
url = fileConfig.packageDownloadUrl(row.id, row.name + '.zip')
url = fileConfig.packageDownloadUrl(row.id, row.name + '.zip', this.shareToken)
}
let clipboard = new Clipboard('.newFileMenu', {
text: function() {

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718450747239" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6336" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M263.68 337.9712h572.5696v562.8416H302.4896a38.8096 38.8096 0 0 1-38.8096-38.8096z" fill="#2F68CB" p-id="6337"></path><path d="M184.32 255.3856l137.6768-71.68v519.2192L184.32 774.5536z" fill="#93BBFF" p-id="6338"></path><path d="M321.9456 183.7056h417.28a38.8096 38.8096 0 0 1 38.8096 38.8096v479.5392H321.9456z" fill="#478BFF" p-id="6339"></path><path d="M482.56 877.1584c27.0336 0 44.2368-13.2096 44.2368-29.4912 0-14.4384-10.24-20.48-30.4128-20.48h-15.36c-10.9056-0.1024-14.2848-3.328-14.2848-8.448a11.2128 11.2128 0 0 1 4.608-8.9088 29.3888 29.3888 0 0 0 11.8272 2.6112 28.8768 28.8768 0 0 0 31.6416-29.0304 22.8352 22.8352 0 0 0-5.5296-15.36h16.128v-13.312h-29.952a35.2256 35.2256 0 0 0-12.288-2.1504 30.72 30.72 0 0 0-32.6144 30.3104 28.928 28.928 0 0 0 10.9568 22.528v0.6144a20.8384 20.8384 0 0 0-9.3696 15.6672 15.36 15.36 0 0 0 7.68 13.9776v0.768a22.3232 22.3232 0 0 0-12.288 18.432c0 14.7456 14.7456 22.272 35.0208 22.272z m0.6144-76.032a16.4864 16.4864 0 0 1-15.9744-18.2272 16.0768 16.0768 0 0 1 15.9744-17.9712 16.1792 16.1792 0 0 1 15.9744 17.9712 16.4864 16.4864 0 0 1-15.9744 18.2272z m1.9968 64.3584c-14.1312 0-22.5792-4.9152-22.5792-13.2096a15.36 15.36 0 0 1 7.2192-12.288 53.7088 53.7088 0 0 0 11.4688 1.2288h12.7488c10.24 0 15.8208 2.1504 15.8208 9.216s-9.9328 15.0528-24.6784 15.0528z m78.4896-24.2688a28.3648 28.3648 0 0 0 9.7792-1.3824l-2.56-13.3632a12.288 12.288 0 0 1-2.9184 0.3072c-2.1504 0-4.3008-1.6896-4.3008-6.4512V716.8h-17.5104v102.4c0 13.8752 4.7616 22.016 17.5104 22.016z m71.2192 0c19.0464 0 36.4032-16.5888 36.4032-45.6192 0-25.9584-12.1344-43.008-33.4848-43.008a40.3456 40.3456 0 0 0-25.1904 11.0592l0.4608-14.4384V716.8h-17.4592v122.4192h13.6704l1.6896-8.7552h0.4608a35.072 35.072 0 0 0 23.4496 10.752z m-3.328-14.592a28.3136 28.3136 0 0 1-18.432-7.68v-41.1648a29.3888 29.3888 0 0 1 20.1216-10.24c14.1312 0 19.8144 10.9056 19.8144 28.5696 0 19.6096-9.216 30.5152-21.504 30.5152z" fill="#FFFFFF" p-id="6340"></path><path d="M498.2784 401.3056h23.04v90.4704h-23.04z" fill="#FFFFFF" p-id="6341"></path><path d="M498.2784 401.3056h23.04v90.4704h-23.04z" fill="#FFFFFF" p-id="6342"></path><path d="M477.8496 426.9056c-5.12 0-10.9056 7.424-10.9056 17.3568s5.7856 17.3568 10.9056 17.3568 10.9568-7.424 10.9568-17.3568-5.7856-17.3568-10.9568-17.3568m0-25.6a40.1408 40.1408 0 0 1 36.5056 42.9568 40.1408 40.1408 0 0 1-36.5056 42.9568 40.1408 40.1408 0 0 1-36.5056-42.9568 40.1408 40.1408 0 0 1 36.5056-42.9568z" fill="#FFFFFF" p-id="6343"></path><path d="M665.088 499.9168a318.3104 318.3104 0 0 1-59.904 18.5344 324.608 324.608 0 0 1-63.744 5.12 47.9744 47.9744 0 0 1-15.0528 11.9296 192.256 192.256 0 0 1-28.2112 10.752 263.9872 263.9872 0 0 0 92.16-4.2496 205.5168 205.5168 0 0 0 74.752-42.0864z" fill="#FFFFFF" p-id="6344"></path><path d="M647.168 382.6176a197.0176 197.0176 0 0 0-231.2192-22.8352c-114.8416 76.8 6.656 208.0768 77.7216 171.6736a53.4528 53.4528 0 0 0 27.4432-41.7792l-16.4352-14.0288s-8.8576 32-26.3168 34.9696a56.7808 56.7808 0 0 1-49.664-24.1152 78.9504 78.9504 0 0 1-10.24-71.9872c14.2848-37.888 52.8896-49.8688 93.6448-54.784a293.2224 293.2224 0 0 1 135.0656 22.8864z" fill="#FFFFFF" p-id="6345"></path><path d="M539.2896 401.8688h23.04v92.16h-23.04z" fill="#FFFFFF" p-id="6346"></path><path d="M599.1936 401.8688h23.04v92.16h-23.04z" fill="#FFFFFF" p-id="6347"></path><path d="M659.1488 401.8688h23.04v92.16h-23.04z" fill="#FFFFFF" p-id="6348"></path><path d="M576.1536 401.8688h69.1712v23.04h-69.1712z" fill="#FFFFFF" p-id="6349"></path><path d="M659.1488 401.8688h69.1712v23.04h-69.1712z" fill="#FFFFFF" p-id="6350"></path><path d="M659.1488 436.48h58.88v23.04h-58.88z" fill="#FFFFFF" p-id="6351"></path></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -10,7 +10,10 @@ const uuid = generateUUID();
const throttledConnectSSE = _.throttle((username) => {
if (typeof EventSource !== 'undefined') {
connectToSSE(username);
// 判断cookie中是否有token
if (store.getters.name) {
connectToSSE(username);
}
} else {
console.error('EventSource is not supported by the browser');
}

View File

@ -112,7 +112,8 @@ export default {
return window.location.origin + `${this.baseUrl}/public/s/packageDownload?fileIds=${fileIds}${queryShareId}${queryShareToken}`
},
// 文件打包下载Url
packageDownloadUrl: function(fileId, downloadName) {
return window.location.origin + `${this.baseUrl}/public/s/${fileId}/packageDownload/${downloadName}`
packageDownloadUrl: function(fileId, downloadName, shareToken) {
const queryShareToken = shareToken ? `?share-token=${shareToken}` : ''
return window.location.origin + `${this.baseUrl}/public/s/${fileId}/packageDownload/${downloadName}${queryShareToken}`
},
}

View File

@ -88,5 +88,5 @@ iconClass.set('yml','file-yml')
iconClass.set('yaml','file-yml')
iconClass.set('plist','file-plist')
iconClass.set('iso','file-iso')
iconClass.set('glb','glb')
iconClass.set('gltf','glb')
iconClass.set('glb','file-glb')
iconClass.set('gltf','file-glb')