From eb8f647c5e39fe25f638d401e17816ef3233b261 Mon Sep 17 00:00:00 2001 From: jmal <zhushilun084@gmail.com> Date: Thu, 6 Jun 2024 13:41:22 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=BE=8E=E5=8C=96=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E9=93=BE=E6=8E=A5URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 2 +- src/components/ShareDialog/index.vue | 13 ++++++++----- src/permission.js | 13 +++++++++++-- src/router/index.js | 15 ++------------- src/views/public/share/shareList.vue | 27 +++++++++++++++++++-------- 5 files changed, 41 insertions(+), 29 deletions(-) diff --git a/src/App.vue b/src/App.vue index ac2e9c08..e9d41229 100644 --- a/src/App.vue +++ b/src/App.vue @@ -6,7 +6,7 @@ <script> const pcList = ['/', '/s'] -const mobileList = ['/_m', '/_m/', '/s_m', '/s_m/'] +const mobileList = ['/_m', '/_m/'] export default { name: 'App', components: {}, diff --git a/src/components/ShareDialog/index.vue b/src/components/ShareDialog/index.vue index 7820ac3c..988cab07 100644 --- a/src/components/ShareDialog/index.vue +++ b/src/components/ShareDialog/index.vue @@ -264,7 +264,7 @@ export default { showSharedPage(shareObject) { this.shareOptionConfig.shared = true this.shareOptionConfig.linkLabel = '分享链接' - this.setShareLink(this.getShareLink(shareObject.shareId)) + this.setShareLink(this.getShareLink(shareObject.shareId, shareObject.shortId)) this.shareOption.isPrivacy = shareObject.isPrivacy this.shareOption.operationPermissionList = shareObject.operationPermissionList || [] if (shareObject.expireDate) { @@ -339,8 +339,11 @@ export default { timeFormat(time) { return moment(time).format("yyyy-MM-DD HH:mm") }, - getShareLink(shareId) { - return window.location.origin + '/s?s=' + shareId + getShareLink(shareId, shortId) { + if (!shortId) { + shortId = shareId + } + return `${window.location.origin}/s/${shortId}` }, createShare(update) { this.generateShareLinkLoading = true @@ -368,8 +371,8 @@ export default { operationPermissionList: this.shareOption.operationPermissionList }).then(res => { if (res.data) { - let {shareId, extractionCode, operationPermissionList} = res.data - this.setShareLink(this.getShareLink(shareId)) + let {shareId, shortId, extractionCode, operationPermissionList} = res.data + this.setShareLink(this.getShareLink(shareId, shortId)) this.shareId = shareId this.generateShareLinkLoading = false this.shareOptionConfig.shared = true diff --git a/src/permission.js b/src/permission.js index 964681b7..1a0a3e82 100644 --- a/src/permission.js +++ b/src/permission.js @@ -7,7 +7,7 @@ import getPageTitle from '@/utils/get-page-title' NProgress.configure({ showSpinner: false }) // NProgress配置 -const whiteList = ['/login','/s','/s/','/s_m','/s_m/'] // 白名单 +const whiteList = ['/login','/s','/s/'] // 白名单 router.beforeEach(async(to, from, next) => { // 开始进度条 @@ -51,7 +51,7 @@ router.beforeEach(async(to, from, next) => { } } else { // 没有登录的情况 - if (whiteList.indexOf(to.path) !== -1) { + if (hasWhiteList(to.path)) { // 没有token但是在白名单中,直接进入 next() } else { @@ -65,6 +65,15 @@ router.beforeEach(async(to, from, next) => { } }) +function hasWhiteList(path) { + for (let i = 0; i < whiteList.length; i++) { + if (path.indexOf(whiteList[i]) !== -1) { + return true + } + } + return false +} + function setMenuList(next, to){ if(store.getters.menuList.length === 0){ store.dispatch('user/setMenuList').then((res) => { diff --git a/src/router/index.js b/src/router/index.js index 9b07fa8b..43f4eed1 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -47,12 +47,12 @@ export const constantRoutes = [ hidden: true }, { - path: '/s', + path: '/s/:id', component: Layout, children: [ { path: '', - name: 's', + name: 'share', component: () => import('@/views/public/share/shareList'), } ] @@ -85,17 +85,6 @@ export const dynamicRouters = [ meta: { title: '文件传输' } }] }, - { - path: '/s_m', - component: Layout, - children: [ - { - path: '', - name: 's_m', - component: () => import('@/views/public/share/shareList'), - } - ] - }, { path: '/tag', component: Layout, diff --git a/src/views/public/share/shareList.vue b/src/views/public/share/shareList.vue index 02200837..f708f7c0 100644 --- a/src/views/public/share/shareList.vue +++ b/src/views/public/share/shareList.vue @@ -223,7 +223,7 @@ </van-grid> </van-checkbox-group> </div> - <div v-if="linkFailed && !showShareCode" class="share-header"> + <div v-if="linkFailed && !showShareCode" class="share-header-prompt"> <p v-if="prompt !== ''">温馨提示:</p> <p>{{ prompt }}</p> </div> @@ -401,7 +401,8 @@ export default { shareLink: '', shareFileName: '', generateShareLinkLoading: true, - shareId: this.$route.query.s, + shareId: '', + shortId: this.$route.params.id, currentDirName: '', linkFailed: true, textPreviewVisible: false, @@ -584,7 +585,7 @@ export default { if (index === 0) { this.pathList.splice(this.pathList.findIndex((v, i) => i === index + 1), this.pathList.length - (index + 1)) this.getFileList(null, true); - this.$router.push(`/s?s=${this.shareId}&vmode=${this.vmode}`) + this.pushRouter() } if (item && item.fileId) { this.accessShareOpenDir(item.fileId) @@ -598,8 +599,7 @@ export default { if (this.grid) { this.vmode = 'grid' } - let f = '' - this.$router.push(`/s?s=${this.shareId}&vmode=${this.vmode}`) + this.pushRouter() }, accessShareOpenDir(fileId) { this.tableLoading = true @@ -627,7 +627,7 @@ export default { getFileList(pagination, overload) { this.tableLoading = true api.accessShare({ - share: this.shareId, + share: this.shortId, pageIndex: this.pagination.pageIndex, pageSize: this.pagination.pageSize, showFolderSize: true @@ -689,10 +689,11 @@ export default { }) }, getSharer() { - api.getSharer({shareId: this.shareId}).then(res => { + api.getSharer({shareId: this.shortId}).then(res => { this.sharer = res.data this.setLoginTitle() if (res.data) { + this.shareId = res.data.shareId this.sharerAvatarUrl = window.location.origin + this.imageUrl + res.data.avatar if (this.sharer.netdiskName) { this.netdiskName = this.sharer.netdiskName @@ -1046,6 +1047,9 @@ export default { clipboard.destroy() }) }, + pushRouter() { + this.$router.push(`/s/${this.shortId}/?vmode=${this.vmode}`) + }, // 点击文件或文件夹 fileClick(row) { window.shareId = this.shareId @@ -1057,7 +1061,7 @@ export default { item['index'] = this.pathList.length this.pathList.push(item) this.pagination.pageIndex = 1 - this.$router.push(`?s=${this.shareId}&vmode=${this.vmode}`) + this.pushRouter() this.accessShareOpenDir(row.id) } else { if (row.contentType.startsWith('image')) { @@ -1133,6 +1137,13 @@ export default { padding: 0 15px; } +.share-header-prompt { + text-align: center; + font-size: 18px; + font-weight: 500; + margin-bottom: 10px; +} + .share-header { text-align: center; font-size: 18px;