From b54e02d98e42ae73071e3c01e59f12671d13d06a Mon Sep 17 00:00:00 2001
From: chengkun <chengkun@ishangstudy.com>
Date: Wed, 06 Aug 2025 17:03:57 +0800
Subject: [PATCH] 提交

---
 public/static/vue/mixin.js |  257 ++++----------------------------------------------
 1 files changed, 23 insertions(+), 234 deletions(-)

diff --git a/public/static/vue/mixin.js b/public/static/vue/mixin.js
index 2a311c5..220d187 100644
--- a/public/static/vue/mixin.js
+++ b/public/static/vue/mixin.js
@@ -1,251 +1,40 @@
-var menu_index = $('#menu_index').val();
+const { createI18n, useI18n } = VueI18n;
+// 通过选项创建 VueI18n 实例
+const i18n = createI18n({
+    locale: localStorage.getItem('changjiang-park-lang') || 'zh-cn',
+    messages,
+    fallbackLocale: 'zh-cn',
+    legacy: false,
+})
 const sharedMixin = {
     data() {
         return {
-            menu_index: '',
-            side_menu_collapse: false,
-            default_aside_width: "250px",
-            el_aside_width: "340px",
-            side_menu_show_type: 1,/////左侧菜单收放状态,1=展开,2=收缩
-            breadcrumbList: [],
-            menuList: [],///菜单列表
-            url: '',
-            lastColumn: 100,
-            currentLang: localStorage.getItem('lang') || 'zh-cn',
-            langPag: {},// 存储加载后的语言包
             languageList: [
                 { id: 1, name_loc: '简体中文', symbol: 'zh-cn' },
                 { id: 2, name_loc: 'English', symbol: 'en-us' },
-                { id: 3, name_loc: 'ar', symbol: 'ar' },
+                // { id: 3, name_loc: 'ar', symbol: 'ar' },
             ],
+            currentLang: '',
+            i18n: i18n.global, // 引入i18n实例
         }
     },
+
+    // 生命周期 - 创建完成(可以访问当前this实例)
     mounted() {
-        setTimeout(() => {
-            this.observeLastColumnWidth();
-        }, 100);
-        this.getLanguage();
-        if (this.currentLang == 'en-us') {
-            this.el_aside_width = this.default_aside_width = "340px"
-        }
-        else if (this.currentLang == 'zh-cn') {
-            this.el_aside_width = this.default_aside_width = "250px";
-        }
-        else {
-            this.el_aside_width = this.default_aside_width = "300px";
-        }
     },
+
+    // 创建生命周期
     created() {
-        this.getMenu();
-        this.changeLang(this.currentLang, false);
+        this.currentLang = this.i18n.locale || 'zh-cn';
     },
+
+    // 方法
     methods: {
-        getLanguage() {
-            const that = this;
-            const url = "/supplier/login/getLanguage.html";
-            postRequest(url, {}).then((res) => {
-                if (res.data.code === 200) {
-                    this.languageList = res.data.list
-                }
-            }).catch((error) => {
-
-            });
-        },
-        // 异步加载语言包的方法
-        async loadLanguage(lang, ifreload) {
-            try {
-                localStorage.setItem('lang', lang);//设置默认语言
-                const response = await fetch(`/static/lang/1/${lang}.json`);
-                this.langPag = await response.json();
-                this.setLanguage(lang, ifreload);
-            } catch (error) {
-                // 回退到中文
-                const zhResponse = await fetch('/static/lang/1/zh-cn.json');
-                this.langPag = await zhResponse.json();
-            }
-        },
-        // 切换语言
-        async changeLang(lang, ifreload) {
-            if (!['zh-cn', 'en-us', 'ar'].includes(lang)) {
-                lang = 'zh-cn';
-            }
-            this.currentLang = lang;
-            await this.loadLanguage(lang, ifreload);
-
-        },
-        // 翻译方法
-        t(key, value = '') {
-            if (value == '') {
-                value = key
-            }
-            return key.split('.').reduce((obj, k) => obj?.[k], this.langPag) || value;
-        },
-        setLanguage(lang, ifreload) {
-            let url = "/supplier/login/setlang.html"
-            postRequest(url, { lang: lang }).then(res => {
-                if (res.data.code == 200) {
-                    if (ifreload) {
-                        window.location.reload();
-                    }
-                }
-            });
-        },
-        /**
-         * 高级替换函数
-         * @param {string} original - 原始文本
-         * @param {string|RegExp} search - 要查找的内容或正则表达式
-         * @param {string|function} replacement - 替换内容或替换函数
-         * @param {boolean} caseSensitive - 是否区分大小写
-         * @returns {string} 替换后的文本
-         */
-        replaceStr(original, search, replacement, caseSensitive = true) {
-            if (!original || !search) return original;
-
-            const flags = caseSensitive ? 'g' : 'gi';
-            const regex = typeof search === 'string'
-                ? new RegExp(search, flags)
-                : search;
-
-            return original.replace(regex, replacement);
-        },
-
-        sharedMethod() {
-            // 共享的方法逻辑
-        },
-
-        /////切换语言/////
-        switchLanguage(type) {
-            /////提交保存到数据库默认语言类型/////
-
-            /////切换语言//////
-            window.switchLanguage(type);
-        },
-
-        /////左侧菜单跳转/////
-        goto_menu(url) {
-            window.location.href = url;
-        },
-
-        /////左侧菜单收放状态
-        show_side_menu() {
-            if (this.side_menu_show_type == 1) {
-                /////设置为收缩状态/////
-                this.el_aside_width = "auto";
-                this.side_menu_show_type = 2;
-                this.side_menu_collapse = true;
-            } else {
-                /////设置为展开状态/////
-                this.el_aside_width = this.default_aside_width;
-                this.side_menu_show_type = 1;
-                this.side_menu_collapse = false;
-            }
-        },
-        getMenu() {
-            let that = this;
-            let url = "/supplier/index/getMenu.html"
-            console.log(menu_index)
-            postRequest(url, { menuindex: menu_index }).then(res => {
-                if (res.data.code == 200) {
-                    that.menuList = res.data.data;
-                    that.menu_index = menu_index
-                    this.url = new URL(window.location.href)
-                    let menus = this.getMenus(that.menuList)
-                    let home = [{ title: that.menuList[0].title, menu_url: '/supplier/index/index.html' }]
-                    if (menus !== undefined) {
-                        if (this.url.pathname !== '/supplier/index/index.html' && this.url.href !== '/supplier/index/index.html') {
-                            menus = home.concat(menus)
-                        }
-                    } else {
-                        menus = home
-                    }
-                    this.breadcrumbList = menus
-                }
-            });
-        },
-        getMenus(menuList, arr, z) {
-            arr = arr || []
-            z = z || 0
-            for (let i = 0; i < menuList.length; i++) {
-                let item = menuList[i]
-                arr[z] = item
-
-                if (menuList[i].menu_url != null && menuList[i].menu_url != '') {
-                    if (this.url.pathname === menuList[i].menu_url || this.url.pathname.includes(menuList[i].menu_url.slice(0, -5))) {
-                        return arr.slice(0, z + 1)
-                    }
-                }
-
-                if (menuList[i].children && menuList[i].children.length) {
-                    let res = this.getMenus(menuList[i].children, arr, z + 1)
-                    if (res) {
-                        return res
-                    }
-                }
-            }
-        },
-        curentTime() {
-            var now = new Date();
-            var year = now.getFullYear();       // 年
-            var month = now.getMonth() + 1;     // 月
-            var day = now.getDate();            // 日
-            var hh = now.getHours();            // 时
-            var mm = now.getMinutes();          // 分
-            var ss = now.getSeconds();          // 秒
-            var clock = year + "-";
-
-            if (month < 10)
-                clock += "0";
-            clock += month + "-";
-            if (day < 10)
-                clock += "0";
-            clock += day + " ";
-            if (hh < 10)
-                clock += "0";
-            clock += hh + ":";
-            if (mm < 10)
-                clock += "0";
-            clock += mm + ":";
-            if (ss < 10)
-                clock += "0";
-            clock += ss;
-            return clock;
-        },
-        //获取表格中最后一列的宽度
-        observeLastColumnWidth() {
-            // 获取表格的 DOM 元素
-            if (typeof this.$refs.tableRef == 'undefined') {
-                return false;
-            }
-            try {
-                const tableHeader = this.$refs.tableRef.$el.querySelector('.el-table__header-wrapper').querySelector('colgroup');
-                if (tableHeader) {
-                    // 获取最后一列的 DOM 元素
-                    const lastColumn = tableHeader.querySelector('col:last-child');
-                    if (lastColumn) {
-                        // 创建 ResizeObserver 实例
-                        const observer = new ResizeObserver((entries) => {
-                            for (const entry of entries) {
-                                const columnWidth = entry.contentRect.width; // 获取列宽
-                                this.lastColumn = columnWidth;
-                            }
-                        });
-                        // 监听最后一列的宽度变化
-                        observer.observe(lastColumn);
-                    }
-                }
-            }
-            catch (error) {
-                return false;
-            }
-
-        },
-        //设置最后一列的对齐方式
-        alignValue(width) {
-            if (this.lastColumn > width) {
-                return 'left';
-            } else {
-                return 'center';
-            }
+        ///// 切换语言 /////
+        changeLanguage(newLang) {
+            this.i18n.locale = newLang;
+            this.i18n.currentLocale = newLang;
+            localStorage.setItem('changjiang-park-lang', newLang);
         },
     }
 }
\ No newline at end of file

--
Gitblit v1.9.0