From 2ce3a2a3db456837001901f044ac85fc7ce1d140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Sun, 26 Dec 2021 18:28:09 +0800 Subject: [PATCH] =?UTF-8?q?vue=20=E5=A2=9E=E5=8A=A0=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Vue/src/plugins/index.js | 20 +++++++++++ ZR.Vue/src/plugins/tab.js | 66 +++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 ZR.Vue/src/plugins/index.js create mode 100644 ZR.Vue/src/plugins/tab.js diff --git a/ZR.Vue/src/plugins/index.js b/ZR.Vue/src/plugins/index.js new file mode 100644 index 0000000..7add4cd --- /dev/null +++ b/ZR.Vue/src/plugins/index.js @@ -0,0 +1,20 @@ +import tab from './tab' +// import auth from './auth' +// import cache from './cache' +// import modal from './modal' +// import download from './download' + +export default { + install(Vue) { + // 页签操作 + Vue.prototype.$tab = tab + // 认证对象 + // Vue.prototype.$auth = auth + // 缓存对象 + // Vue.prototype.$cache = cache + // 模态框对象 + // Vue.prototype.$modal = modal + // 下载文件 + // Vue.prototype.$download = download + } +} diff --git a/ZR.Vue/src/plugins/tab.js b/ZR.Vue/src/plugins/tab.js new file mode 100644 index 0000000..011897c --- /dev/null +++ b/ZR.Vue/src/plugins/tab.js @@ -0,0 +1,66 @@ +import store from '@/store' +import router from '@/router'; + +export default { + // 刷新当前tab页签 + refreshPage(obj) { + const { path, matched } = router.currentRoute; + if (obj === undefined) { + matched.forEach((m) => { + if (m.components && m.components.default && m.components.default.name) { + if (!['Layout', 'ParentView'].includes(m.components.default.name)) { + obj = { name: m.components.default.name, path: path }; + } + } + }); + } + return store.dispatch('tagsView/delCachedView', obj).then(() => { + const { path } = obj + router.replace({ + path: '/redirect' + path + }) + }) + }, + // 关闭当前tab页签,打开新页签 + closeOpenPage(obj) { + store.dispatch("tagsView/delView", router.currentRoute); + if (obj !== undefined) { + return router.push(obj); + } + }, + // 关闭指定tab页签 + closePage(obj) { + if (obj === undefined) { + return store.dispatch('tagsView/delView', router.currentRoute).then(({ lastPath }) => { + return router.push(lastPath || '/'); + }); + } + return store.dispatch('tagsView/delView', obj); + }, + // 关闭所有tab页签 + closeAllPage() { + return store.dispatch('tagsView/delAllViews'); + }, + // 关闭左侧tab页签 + closeLeftPage(obj) { + return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute); + }, + // 关闭右侧tab页签 + closeRightPage(obj) { + return store.dispatch('tagsView/delRightTags', obj || router.currentRoute); + }, + // 关闭其他tab页签 + closeOtherPage(obj) { + return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute); + }, + // 添加tab页签 + openPage(title, url) { + var obj = { path: url, meta: { title: title } } + store.dispatch('tagsView/addView', obj); + return router.push(url); + }, + // 修改tab页签 + updatePage(obj) { + return store.dispatch('tagsView/updateVisitedView', obj); + } +}