From 1216ce3b526a5ba081a0206183b25a0f8c937f37 Mon Sep 17 00:00:00 2001 From: "meilin.huang" <954537473@qq.com> Date: Wed, 12 Jan 2022 16:00:31 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=201.=E5=89=8D=E7=AB=AF=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=8D=87=E7=BA=A7=202.redis=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=94=AF=E6=8C=81string,hash,set=E7=9A=84?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/logger/logger.go | 13 +- mayfly_go_web/package.json | 34 +- .../src/common/utils/getStyleSheets.ts | 27 +- .../src/components/iconSelector/index.vue | 295 ++++++++++++------ .../src/components/svgIcon/index.vue | 24 ++ mayfly_go_web/src/main.ts | 23 +- .../src/store/modules/themeConfig.ts | 2 +- mayfly_go_web/src/theme/element.scss | 120 ++++--- mayfly_go_web/src/views/gateway/api.ts | 15 + .../src/views/gateway/service/ApiEdit.vue | 192 ++++++++++++ .../src/views/gateway/service/ApiList.vue | 239 ++++++++++++++ .../src/views/gateway/service/ServiceList.vue | 223 +++++++++++++ .../src/views/layout/component/main.vue | 2 +- .../src/views/layout/main/defaults.vue | 2 +- .../layout/navBars/breadcrumb/breadcrumb.vue | 14 +- .../layout/navBars/breadcrumb/search.vue | 7 +- .../views/layout/navBars/breadcrumb/user.vue | 40 ++- .../layout/navBars/tagsView/tagsView.vue | 32 +- .../src/views/layout/navMenu/subItem.vue | 10 +- .../src/views/layout/navMenu/vertical.vue | 8 +- .../src/views/login/component/Account.vue | 8 +- .../views/ops/component/ProjectEnvSelect.vue | 2 +- mayfly_go_web/src/views/ops/db/DbEdit.vue | 8 +- mayfly_go_web/src/views/ops/db/DbList.vue | 26 +- mayfly_go_web/src/views/ops/db/SqlExec.vue | 26 +- .../src/views/ops/machine/FileManage.vue | 35 ++- .../src/views/ops/machine/MachineEdit.vue | 2 +- .../src/views/ops/machine/MachineList.vue | 43 +-- .../src/views/ops/machine/ScriptEdit.vue | 2 +- .../src/views/ops/machine/ServiceManage.vue | 22 +- .../src/views/ops/project/ProjectList.vue | 75 ++--- .../src/views/ops/redis/DataEdit.vue | 271 ++++++++++++++++ .../src/views/ops/redis/DataOperation.vue | 177 ++++++++--- .../src/views/ops/redis/RedisEdit.vue | 6 +- .../src/views/ops/redis/RedisList.vue | 18 +- .../src/views/ops/redis/ValueDialog.vue | 4 +- mayfly_go_web/src/views/ops/redis/api.ts | 3 +- .../src/views/system/account/AccountEdit.vue | 6 +- .../src/views/system/account/AccountList.vue | 30 +- .../src/views/system/account/RoleEdit.vue | 8 +- .../views/system/resource/ResourceEdit.vue | 36 +-- .../views/system/resource/ResourceList.vue | 154 ++++----- .../src/views/system/role/ResourceEdit.vue | 4 +- .../src/views/system/role/RoleEdit.vue | 8 +- .../src/views/system/role/RoleList.vue | 32 +- mayfly_go_web/vite.config.ts | 24 ++ server/devops/api/db.go | 12 +- server/devops/api/form/redis.go | 22 +- server/devops/api/redis.go | 52 ++- server/devops/api/vo/redis.go | 2 +- server/devops/router/db.go | 2 +- server/devops/router/redis.go | 11 +- 52 files changed, 1808 insertions(+), 645 deletions(-) create mode 100644 mayfly_go_web/src/components/svgIcon/index.vue create mode 100644 mayfly_go_web/src/views/gateway/api.ts create mode 100644 mayfly_go_web/src/views/gateway/service/ApiEdit.vue create mode 100644 mayfly_go_web/src/views/gateway/service/ApiList.vue create mode 100644 mayfly_go_web/src/views/gateway/service/ServiceList.vue create mode 100644 mayfly_go_web/src/views/ops/redis/DataEdit.vue diff --git a/base/logger/logger.go b/base/logger/logger.go index c844bad0..5ce24435 100644 --- a/base/logger/logger.go +++ b/base/logger/logger.go @@ -54,18 +54,9 @@ func (l *LogFormatter) Format(entry *logrus.Entry) ([]byte, error) { timestamp := time.Now().Local().Format("2006-01-02 15:04:05.000") level := entry.Level logMsg := fmt.Sprintf("%s [%s]", timestamp, strings.ToUpper(level.String())) - // 如果存在调用信息,且为error级别以上记录文件及行号 + // 如果存在调用信息,记录方法信息及行号 if caller := entry.Caller; caller != nil { - var fp string - // 全路径切割,只获取项目相关路径, - // 即/Users/hml/Desktop/project/go/mayfly-go/server/test.go只获取/server/test.go - ps := strings.Split(caller.File, "mayfly-go/") - if len(ps) >= 2 { - fp = ps[1] - } else { - fp = ps[0] - } - logMsg = logMsg + fmt.Sprintf(" [%s:%d]", fp, caller.Line) + logMsg = logMsg + fmt.Sprintf(" [%s:%d]", caller.Function, caller.Line) } for k, v := range entry.Data { logMsg = logMsg + fmt.Sprintf(" [%s=%v]", k, v) diff --git a/mayfly_go_web/package.json b/mayfly_go_web/package.json index 5eb1ba9b..52762f5c 100644 --- a/mayfly_go_web/package.json +++ b/mayfly_go_web/package.json @@ -7,29 +7,29 @@ "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/" }, "dependencies": { - "@types/lodash": "^4.14.178", - "axios": "^0.21.1", + "axios": "^0.24.0", "codemirror": "^5.61.0", "core-js": "^3.6.5", "countup.js": "^2.0.7", "cropperjs": "^1.5.11", "echarts": "^5.1.1", - "echarts-wordcloud": "^2.0.0", - "element-plus": "^1.0.2-beta.44", + "element-plus": "^1.3.0-beta.2", + "@element-plus/icons-vue": "^0.2.4", "jsonlint": "^1.6.3", "lodash": "^4.17.21", - "mitt": "^2.1.0", + "mitt": "^3.0.0", "nprogress": "^0.2.0", "screenfull": "^5.1.0", "sortablejs": "^1.13.0", - "sql-formatter": "^2.3.3", - "vue": "^3.0.5", - "vue-router": "^4.0.2", - "vuex": "^4.0.0-rc.2", - "xterm": "^4.9.0", - "xterm-addon-fit": "^0.4.0" + "sql-formatter": "^4.0.2", + "vue": "^3.2.20", + "vue-router": "^4.0.12", + "vuex": "^4.0.2", + "xterm": "^4.16.0", + "xterm-addon-fit": "^0.5.0" }, "devDependencies": { + "@types/lodash": "^4.14.178", "@types/axios": "^0.14.0", "@types/clipboard": "^2.0.1", "@types/node": "^15.6.0", @@ -40,14 +40,14 @@ "@vitejs/plugin-vue": "^1.2.2", "@vue/compiler-sfc": "^3.0.11", "dotenv": "^10.0.0", - "eslint": "^7.27.0", - "eslint-plugin-vue": "^7.9.0", + "eslint": "^8.5.0", + "eslint-plugin-vue": "^8.2.0", "prettier": "^2.3.0", - "sass": "^1.34.0", - "sass-loader": "^11.1.1", + "sass": "^1.45.1", + "sass-loader": "^12.4.0", "typescript": "^4.2.4", - "vite": "^2.3.2", - "vue-eslint-parser": "^7.6.0" + "vite": "^2.7.4", + "vue-eslint-parser": "^8.0.1" }, "browserslist": [ "> 1%", diff --git a/mayfly_go_web/src/common/utils/getStyleSheets.ts b/mayfly_go_web/src/common/utils/getStyleSheets.ts index 819619a5..67e0a78c 100644 --- a/mayfly_go_web/src/common/utils/getStyleSheets.ts +++ b/mayfly_go_web/src/common/utils/getStyleSheets.ts @@ -1,4 +1,5 @@ import { nextTick } from 'vue'; +import * as svg from '@element-plus/icons-vue'; // 获取阿里字体图标 const getAlicdnIconfont = () => { @@ -30,22 +31,16 @@ const getAlicdnIconfont = () => { // 初始化获取 css 样式,获取 element plus 自带图标 const elementPlusIconfont = () => { return new Promise((resolve, reject) => { - nextTick(() => { - const styles: any = document.styleSheets; - let sheetsIconList = []; - for (let i = 0; i < styles.length; i++) { - for (let j = 0; j < styles[i].cssRules.length; j++) { - if (styles[i].cssRules[j].selectorText && styles[i].cssRules[j].selectorText.indexOf('.el-icon-') === 0) { - sheetsIconList.push( - `${styles[i].cssRules[j].selectorText.substring(1, styles[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}` - ); - } - } - } - if (sheetsIconList.length > 0) resolve(sheetsIconList); - else reject('未获取到值,请刷新重试'); - }); - }); + nextTick(() => { + const icons = svg as any; + const sheetsIconList = []; + for (const i in icons) { + sheetsIconList.push(`${icons[i].name}`); + } + if (sheetsIconList.length > 0) resolve(sheetsIconList); + else reject('未获取到值,请刷新重试'); + }); + }); }; // 初始化获取 css 样式,这里使用 fontawesome 的图标 diff --git a/mayfly_go_web/src/components/iconSelector/index.vue b/mayfly_go_web/src/components/iconSelector/index.vue index 9cfa78ff..14eb011d 100644 --- a/mayfly_go_web/src/components/iconSelector/index.vue +++ b/mayfly_go_web/src/components/iconSelector/index.vue @@ -1,57 +1,71 @@ + \ No newline at end of file diff --git a/mayfly_go_web/src/components/svgIcon/index.vue b/mayfly_go_web/src/components/svgIcon/index.vue new file mode 100644 index 00000000..26309383 --- /dev/null +++ b/mayfly_go_web/src/components/svgIcon/index.vue @@ -0,0 +1,24 @@ + \ No newline at end of file diff --git a/mayfly_go_web/src/main.ts b/mayfly_go_web/src/main.ts index db7ed593..6a286067 100644 --- a/mayfly_go_web/src/main.ts +++ b/mayfly_go_web/src/main.ts @@ -7,14 +7,33 @@ import { globalComponentSize } from '@/common/utils/componentSize.ts'; import { dateStrFormat } from '@/common/utils/date.ts' import ElementPlus from 'element-plus'; -import 'element-plus/lib/theme-chalk/index.css'; +import 'element-plus/dist/index.css'; import '@/theme/index.scss'; import mitt from 'mitt'; import { ElMessage } from 'element-plus'; import locale from 'element-plus/lib/locale/lang/zh-cn' +import * as svg from '@element-plus/icons-vue'; +import SvgIcon from '@/components/svgIcon/index.vue'; + const app = createApp(App); +/** + * 导出全局注册 element plus svg 图标 + * @param app vue 实例 + * @description 使用:https://element-plus.gitee.io/zh-CN/component/icon.html + */ + function elSvg(app: any) { + const icons = svg as any; + for (const i in icons) { + app.component(`${icons[i].name}`, icons[i]); + } + app.component('SvgIcon', SvgIcon); +} + +elSvg(app) +directive(app); + app.use(router) .use(store, key) .use(ElementPlus, { size: globalComponentSize, locale: locale }) @@ -42,5 +61,3 @@ app.config.errorHandler = function (err: any, vm, info) { } app.config.globalProperties.mittBus = mitt(); - -directive(app); diff --git a/mayfly_go_web/src/store/modules/themeConfig.ts b/mayfly_go_web/src/store/modules/themeConfig.ts index 1589e7e8..df788c46 100644 --- a/mayfly_go_web/src/store/modules/themeConfig.ts +++ b/mayfly_go_web/src/store/modules/themeConfig.ts @@ -119,7 +119,7 @@ const themeConfigModule: Module = { globalViceTitle: 'mayfly', // 默认初始语言,可选值"",默认 zh-cn globalI18n: 'zh-cn', - // 默认全局组件大小,可选值"<|medium|small|mini>",默认 '' + // 默认全局组件大小,可选值"<|large|default|small>",默认 '' globalComponentSize: '', }, }, diff --git a/mayfly_go_web/src/theme/element.scss b/mayfly_go_web/src/theme/element.scss index e8233424..a01a6edb 100644 --- a/mayfly_go_web/src/theme/element.scss +++ b/mayfly_go_web/src/theme/element.scss @@ -1,12 +1,10 @@ @import 'mixins/function.scss'; @import 'mixins/element-mixins.scss'; +@import 'mixins/mixins.scss'; /* Button 按钮 ------------------------------- */ // text -.el-button { - font-weight: 500; -} .el-button--text { color: set-color(primary); &:focus, @@ -749,9 +747,14 @@ // 默认样式修改 .el-menu { border-right: none !important; + width: 220px; +} +// 修复点击左侧菜单折叠再展开时,宽度不跟随问题 +.el-menu--collapse { + width: 64px !important; } .el-menu-item, -.el-submenu__title { +.el-sub-menu__title { height: 50px !important; line-height: 50px !important; color: var(--bg-menuBarColor); @@ -759,31 +762,31 @@ } // horizontal 水平方向时 .el-menu--horizontal > .el-menu-item.is-active, -.el-menu--horizontal > .el-submenu.is-active .el-submenu__title { +.el-menu--horizontal > .el-sub-menu.is-active .el-sub-menu__title { border-bottom: 3px solid !important; border-bottom-color: set-color(primary); - color: set-color(primary); + color: set-color(primary) !important; } .el-menu--horizontal .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal .el-menu-item:not(.is-disabled):hover, -.el-menu--horizontal > .el-submenu:focus .el-submenu__title, -.el-menu--horizontal > .el-submenu:hover .el-submenu__title, +.el-menu--horizontal > .el-sub-menu:focus .el-sub-menu__title, +.el-menu--horizontal > .el-sub-menu:hover .el-sub-menu__title, .el-menu--horizontal .el-menu .el-menu-item.is-active, -.el-menu--horizontal .el-menu .el-submenu.is-active > .el-submenu__title { - color: set-color(primary); +.el-menu--horizontal .el-menu .el-sub-menu.is-active > .el-sub-menu__title { + color: set-color(primary) !important; } .el-menu.el-menu--horizontal { border-bottom: none !important; } .el-menu--horizontal > .el-menu-item, -.el-menu--horizontal > .el-submenu .el-submenu__title { +.el-menu--horizontal > .el-sub-menu .el-sub-menu__title { color: var(--bg-topBarColor); } // 外部链接时 .el-menu-item a, .el-menu-item a:hover, .el-menu-item i, -.el-submenu__title i { +.el-sub-menu__title i { color: inherit; text-decoration: none; } @@ -793,22 +796,23 @@ } // 默认 hover 时 .el-menu-item:hover, -.el-submenu__title:hover { +.el-sub-menu__title:hover { color: set-color(primary) !important; background-color: transparent !important; i { color: set-color(primary); } } -// 高亮时 -.el-menu-item.is-active { +// 高亮时/菜单收起时 +.el-menu-item.is-active, +.el-menu--collapse .el-sub-menu.is-active i { color: set-color(primary); } .el-active-extend { - color: #ffffff !important; + color: var(--color-whites) !important; background-color: set-color(primary) !important; i { - color: #ffffff !important; + color: var(--color-whites) !important; } } #add-is-active { @@ -819,34 +823,37 @@ } // 菜单收起时且是a链接 .el-popper.is-dark a { - color: #ffffff !important; + color: var(--color-whites) !important; text-decoration: none; } // 菜单收起时鼠标经过背景颜色/字体颜色 .el-popper.is-light { .el-menu--vertical { - background: var(--bg-menuBar); + .el-menu { + background: var(--bg-menuBar); + } } .el-menu--horizontal { background: var(--bg-topBar); + .el-menu, .el-menu-item, - .el-submenu__title { + .el-sub-menu__title { color: var(--bg-topBarColor); + background: var(--bg-topBar); } } } // 第三方图标字体间距/大小设置 -.el-menu-item .iconfont, -.el-submenu .iconfont { - font-size: 14px !important; - display: inline-block; - vertical-align: middle; - margin-right: 5px; - width: 24px; - text-align: center; -} +// .el-menu-item .iconfont, +// .el-sub-menu .iconfont { +// @include generalIcon; +// } +// .el-menu-item .fa, +// .el-sub-menu .fa { +// @include generalIcon; +// } // element plus 本身字体图标 -.el-submenu [class^='el-icon-'] { +.el-sub-menu .el-icon { font-size: 14px !important; } // 去掉离开浏览器时,菜单的默认高亮 @@ -888,6 +895,9 @@ color: set-color(primary); background-color: set-color(primary-light-9); } +.el-dropdown-menu .el-dropdown-menu__item { + white-space: nowrap; +} /* Steps 步骤条 ------------------------------- */ @@ -931,18 +941,25 @@ color: set-color(primary); } .el-overlay { - display: flex; - align-items: center; - justify-content: center; - .el-dialog { - margin: 0 auto !important; - .el-dialog__body { - padding: 20px !important; + overflow: hidden; + .el-overlay-dialog { + display: flex; + align-items: center; + justify-content: center; + position: unset !important; + width: 100%; + height: 100%; + .el-dialog { + margin: 0 auto !important; + position: absolute; + .el-dialog__body { + padding: 20px !important; + } } } } .el-dialog__body { - max-height: 70vh !important; + max-height: calc(90vh - 111px) !important; overflow-y: auto; overflow-x: hidden; } @@ -998,6 +1015,9 @@ /* scrollbar ------------------------------- */ +.el-scrollbar__bar { + z-index: 4; +} .el-scrollbar__wrap { overflow-x: hidden !important; max-height: 100%; /*防止页面切换时,滚动条高度不变的问题(滚动条高度非滚动条滚动高度)*/ @@ -1008,13 +1028,27 @@ .el-select-dropdown__wrap { max-height: 274px !important; /*修复Select 选择器高度问题*/ } +.el-cascader-menu__wrap.el-scrollbar__wrap { + height: 204px !important; /*修复Cascader 级联选择器高度问题*/ +} /* Drawer 抽屉 ------------------------------- */ -.el-drawer__body { - width: 100%; - height: 100%; - overflow: auto; +.el-drawer { + --el-drawer-padding-primary: unset !important; + .el-drawer__header { + padding: 0 15px !important; + height: 50px; + display: flex; + align-items: center; + margin-bottom: 0 !important; + border-bottom: 1px solid rgb(230, 230, 230); + } + .el-drawer__body { + width: 100%; + height: 100%; + overflow: auto; + } } .el-drawer-fade-enter-active .el-drawer.rtl { animation: rtl-drawer-animation 0.3s ease-in reverse !important; @@ -1027,4 +1061,4 @@ } .el-drawer-fade-leave-active .el-drawer.ltr { animation: ltr-drawer-animation 0.3s ease !important; -} +} \ No newline at end of file diff --git a/mayfly_go_web/src/views/gateway/api.ts b/mayfly_go_web/src/views/gateway/api.ts new file mode 100644 index 00000000..121896ff --- /dev/null +++ b/mayfly_go_web/src/views/gateway/api.ts @@ -0,0 +1,15 @@ +import Api from '@/common/Api'; + +export const serviceApi = { + services: Api.create("/gw/services", 'get'), + saveService: Api.create("/gw/services", 'post'), + syncService: Api.create("/gw/services/{id}/sync", 'post'), + // 获取服务下的api信息 + serviceApis: Api.create("/gw/services/{serviceId}/apis", 'get'), + saveServiceApi: Api.create("/gw/services/{serviceId}/apis", 'post'), + syncServiceApi: Api.create("/gw/services/{id}/apis/{apiId}/sync", 'post'), + // 获取项目下的成员信息 + projectMems: Api.create("/gw/projects/{projectId}/members", 'get'), + saveProjectMem: Api.create("/gw/projects/{projectId}/members", 'post'), + deleteProjectMem: Api.create("/gw/projects/{projectId}/members/{accountId}", 'delete'), +} \ No newline at end of file diff --git a/mayfly_go_web/src/views/gateway/service/ApiEdit.vue b/mayfly_go_web/src/views/gateway/service/ApiEdit.vue new file mode 100644 index 00000000..84409f30 --- /dev/null +++ b/mayfly_go_web/src/views/gateway/service/ApiEdit.vue @@ -0,0 +1,192 @@ + + + + diff --git a/mayfly_go_web/src/views/gateway/service/ApiList.vue b/mayfly_go_web/src/views/gateway/service/ApiList.vue new file mode 100644 index 00000000..f3ac4189 --- /dev/null +++ b/mayfly_go_web/src/views/gateway/service/ApiList.vue @@ -0,0 +1,239 @@ + + + + diff --git a/mayfly_go_web/src/views/gateway/service/ServiceList.vue b/mayfly_go_web/src/views/gateway/service/ServiceList.vue new file mode 100644 index 00000000..d615b346 --- /dev/null +++ b/mayfly_go_web/src/views/gateway/service/ServiceList.vue @@ -0,0 +1,223 @@ + + + + diff --git a/mayfly_go_web/src/views/layout/component/main.vue b/mayfly_go_web/src/views/layout/component/main.vue index 59660f40..92e4579a 100644 --- a/mayfly_go_web/src/views/layout/component/main.vue +++ b/mayfly_go_web/src/views/layout/component/main.vue @@ -83,7 +83,7 @@ export default defineComponent({ () => route.path, () => { initCurrentRouteMeta(route.meta); - proxy.$refs.layoutScrollbarRef.wrap.scrollTop = 0; + proxy.$refs.layoutScrollbarRef.wrap$.scrollTop = 0; } ); return { diff --git a/mayfly_go_web/src/views/layout/main/defaults.vue b/mayfly_go_web/src/views/layout/main/defaults.vue index e7f7974a..9775973f 100644 --- a/mayfly_go_web/src/views/layout/main/defaults.vue +++ b/mayfly_go_web/src/views/layout/main/defaults.vue @@ -33,7 +33,7 @@ export default { watch( () => route.path, () => { - proxy.$refs.layoutDefaultsScrollbarRef.wrap.scrollTop = 0; + proxy.$refs.layoutDefaultsScrollbarRef.wrap$.scrollTop = 0; } ); return { diff --git a/mayfly_go_web/src/views/layout/navBars/breadcrumb/breadcrumb.vue b/mayfly_go_web/src/views/layout/navBars/breadcrumb/breadcrumb.vue index 7f0e914e..3bacb281 100644 --- a/mayfly_go_web/src/views/layout/navBars/breadcrumb/breadcrumb.vue +++ b/mayfly_go_web/src/views/layout/navBars/breadcrumb/breadcrumb.vue @@ -1,20 +1,16 @@ - + @@ -70,7 +82,7 @@ import UserNews from '@/views/layout/navBars/breadcrumb/userNews.vue'; import Search from '@/views/layout/navBars/breadcrumb/search.vue'; export default { name: 'layoutBreadcrumbUser', - components: { UserNews, Search }, + components: { UserNews, SearchMenu: Search }, setup() { const { proxy } = getCurrentInstance() as any; const router = useRouter(); @@ -159,7 +171,7 @@ export default { removeLocal('themeConfig'); getThemeConfig.value.globalComponentSize = size; setLocal('themeConfig', getThemeConfig.value); - proxy.$ELEMENT.size = size; + // proxy.$ELEMENT.size = size; initComponentSize(); window.location.reload(); }; @@ -169,14 +181,14 @@ export default { case '': state.disabledSize = ''; break; - case 'medium': - state.disabledSize = 'medium'; + case 'default': + state.disabledSize = 'default'; break; case 'small': state.disabledSize = 'small'; break; - case 'mini': - state.disabledSize = 'mini'; + case 'large': + state.disabledSize = 'large'; break; } }; diff --git a/mayfly_go_web/src/views/layout/navBars/tagsView/tagsView.vue b/mayfly_go_web/src/views/layout/navBars/tagsView/tagsView.vue index f2f22f0c..56c02181 100644 --- a/mayfly_go_web/src/views/layout/navBars/tagsView/tagsView.vue +++ b/mayfly_go_web/src/views/layout/navBars/tagsView/tagsView.vue @@ -17,21 +17,31 @@ " > - + {{ v.meta.title }} - + @click.stop="closeCurrentTagsView(getThemeConfig.isShareTagsView ? v.path : v.url)" + /> @@ -240,7 +250,7 @@ export default { // 最后 li let liLast: any = tagsRefs.value[tagsRefs.value.length - 1]; // 当前滚动条的值 - let scrollRefs = proxy.$refs.scrollbarRef.$refs.wrap; + let scrollRefs = proxy.$refs.scrollbarRef.$refs.wrap$; // 当前滚动条滚动宽度 let scrollS = scrollRefs.scrollWidth; // 当前滚动条偏移宽度 diff --git a/mayfly_go_web/src/views/layout/navMenu/subItem.vue b/mayfly_go_web/src/views/layout/navMenu/subItem.vue index 65c67d19..7a152832 100644 --- a/mayfly_go_web/src/views/layout/navMenu/subItem.vue +++ b/mayfly_go_web/src/views/layout/navMenu/subItem.vue @@ -1,20 +1,20 @@