mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2026-11-07 17:38:55 +08:00
- 新增 `getStoreById` 接口方法,用于获取包含评分在内的店铺信息 - `Search.vue` 新增搜索建议面板,展示搜索历史和热词,优化搜索体验 - 新增 `SearchSuggest.vue` 组件,用于展示搜索建议和搜索历史 - `App.vue` 根据路由元信息按条件设置页面标题 - 优化多个组件的布局与样式,让整体风格更统一 - 重构多个组件的跳转逻辑,改用路由跳转(`router.push`)替代新开窗口(`window.open`),提升用户体验
41 lines
1011 B
JavaScript
41 lines
1011 B
JavaScript
/**
|
|
* 买家端内部链接跳转(首页装修、列表等共用)
|
|
*
|
|
* 商品详情新开标签,其余站内页面在当前页打开。外链仍新开。
|
|
*/
|
|
|
|
const NEW_TAB_PATHS = ["/goodsDetail", "/pointGoodsDetail"];
|
|
|
|
function isExternalLink(url) {
|
|
return /^https?:\/\//i.test(url) || url.startsWith("//");
|
|
}
|
|
|
|
function normalizeInternal(url) {
|
|
return url.charAt(0) === "/" ? url : `/${url}`;
|
|
}
|
|
|
|
function pathnameOf(url) {
|
|
return normalizeInternal(url).split("?")[0].split("#")[0];
|
|
}
|
|
|
|
export function shouldOpenNewTab(url) {
|
|
if (!url) return false;
|
|
if (isExternalLink(url)) return true;
|
|
const path = pathnameOf(url);
|
|
return NEW_TAB_PATHS.indexOf(path) !== -1;
|
|
}
|
|
|
|
export function openLink(url, router) {
|
|
if (!url) return;
|
|
if (isExternalLink(url)) {
|
|
window.open(url, "_blank");
|
|
return;
|
|
}
|
|
const internal = normalizeInternal(url);
|
|
if (shouldOpenNewTab(internal)) {
|
|
window.open(router.resolve(internal).href, "_blank");
|
|
return;
|
|
}
|
|
return router.push(internal);
|
|
}
|