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';
|
}
|
},
|
}
|
}
|