var menu_index = $('#menu_index').val(); 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' }, ], } }, 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); }, 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'; } }, } }