From cb86cba389844cdae871b1bf393bfe1157c3792c Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Mon, 26 Jan 2026 18:17:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(components):=20=E6=96=B0=E5=A2=9E=E5=8F=AF?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E7=9A=84diy-tab=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E5=A4=9A=E7=A7=8D=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=92=8C=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加一个高度可配置的tab组件,支持顶部、底部、左侧、右侧四种布局方式 提供默认、下划线和卡片三种tab样式,支持自定义颜色、间距、指示器等样式 组件包含导航栏和内容区域,支持动态切换和动画效果 - 添加自定义样式配置功能,允许通过 customStyles 完全覆盖组件样式 - 重构代码结构,使用计算属性合并默认值和传入值 - 优化样式处理逻辑,增加 mixin 复用 - 完善注释和文档说明 - 改进响应式动画效果 - 新增 getTabTitle 方法,支持根据当前语言环境显示对应的标签标题。该方法处理对象形式的标题(按语言键值匹配)和字符串形式的标题(支持国际化键翻译),提升组件的多语言适配能力。 --- common/js/golbalConfig.js | 2 +- common/js/lang.js | 30 +- components-diy/diy-group.vue | 12 + components-diy/diy-tab.vue | 803 +++++++++++++++++++++++++++++ components/hover-nav/hover-nav.vue | 2 +- 5 files changed, 837 insertions(+), 12 deletions(-) create mode 100644 components-diy/diy-tab.vue diff --git a/common/js/golbalConfig.js b/common/js/golbalConfig.js index d412a07..c38a69f 100644 --- a/common/js/golbalConfig.js +++ b/common/js/golbalConfig.js @@ -7,7 +7,7 @@ export default { computed: { // 是否是英文环境 isEnEnv() { - return uni.getStorageSync('lang') === 'en-us'; + return this.$langConfig.getCurrentLocale() === 'en-us'; }, themeStyle() { return this.$store.state.themeStyle; diff --git a/common/js/lang.js b/common/js/lang.js index c8ca741..e62032a 100644 --- a/common/js/lang.js +++ b/common/js/lang.js @@ -56,15 +56,24 @@ function loadLangPackSync(lang, path) { export default { langList: langConfig.langList, + + /** + * 获得当前本地语言 + * @returns + */ + getCurrentLocale() { + return uni.getStorageSync('lang') || "zh-cn"; + }, + /** * * 解析多语言 * @param {Object} field */ lang(field) { - let _this = getCurrentPages()[getCurrentPages().length - 1]; - if (!_this) return; + let _page = getCurrentPages()[getCurrentPages().length - 1]; + if (!_page) return; - const locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言 + const locale = this.getCurrentLocale(); // 获得当前本地语言 let value = ''; // 存放解析后的语言值 let langPath = ''; // 存放当前页面语言包路径 @@ -74,7 +83,7 @@ export default { var lang = loadLangPackSync(locale, 'common'); //当前页面语言包(同步加载) - let route = _this.route; + let route = _page.route; langPath = processRoutePath(route); // 加载当前页面语言包 @@ -128,11 +137,11 @@ export default { * @param {String} url 切换后跳转的页面url */ change(value, url = '/pages_tool/member/index') { - let _this = getCurrentPages()[getCurrentPages().length - 1]; - if (!_this) return; + let _page = getCurrentPages()[getCurrentPages().length - 1]; + if (!_page) return; uni.setStorageSync("lang", value); - const locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言 + const locale = this.getCurrentLocale(); // 清空已加载的语言包缓存 for (let key in loadedLangPacks) { @@ -149,9 +158,10 @@ export default { }, //刷新标题、tabbar refresh() { - let _this = getCurrentPages()[getCurrentPages().length - 1]; - if (!_this) return; - const locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言 + let _page = getCurrentPages()[getCurrentPages().length - 1]; + if (!_page) return; + + const locale = this.getCurrentLocale(); this.title(this.lang("title")); diff --git a/components-diy/diy-group.vue b/components-diy/diy-group.vue index 6de5241..8149d33 100644 --- a/components-diy/diy-group.vue +++ b/components-diy/diy-group.vue @@ -251,6 +251,11 @@ + +