From 2800fa4f32f3900509cb4d6eefaf2bfaf54efdd7 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Mon, 21 Apr 2025 18:29:09 +0800
Subject: [PATCH] fix: 天气显示
---
src/router/avue-router.js | 324 +++++++++++++++++++++++++++---------------------------
1 files changed, 162 insertions(+), 162 deletions(-)
diff --git a/src/router/avue-router.js b/src/router/avue-router.js
index 4797812..e0fa674 100644
--- a/src/router/avue-router.js
+++ b/src/router/avue-router.js
@@ -1,171 +1,171 @@
-import website from '@/config/website';
+import website from '@/config/website'
-const modules = import.meta.glob('../**/**/*.vue');
+const modules = import.meta.glob('../**/**/*.vue')
function isURL(s) {
- return /^http[s]?:\/\/.*/.test(s);
+ return /^http[s]?:\/\/.*/.test(s)
}
let RouterPlugin = function () {
- this.$router = null;
- this.$store = null;
-};
+ this.$router = null
+ this.$store = null
+}
RouterPlugin.install = function (option = {}) {
- this.$router = option.router;
- this.$store = option.store;
- let i18n = option.i18n.global;
- this.$router.$avueRouter = {
- safe: this,
- // 设置标题
- setTitle: title => {
- const defaultTitle = i18n.t('title');
- title = title ? `${title} | ${defaultTitle}` : defaultTitle;
- document.title = title;
- },
- closeTag: value => {
- let tag = value || this.$store.getters.tag;
- if (typeof value === 'string') {
- tag = this.$store.getters.tagList.find(ele => ele.fullPath === value);
- }
- this.$store.commit('DEL_TAG', tag);
- },
- generateTitle: (item, props = {}) => {
- let query = item[props.query || 'query'] || {};
- let title = query.name || item[props.label || 'label'];
- let meta = item[props.meta || 'meta'] || {};
- let key = meta.i18n;
- if (key) {
- const hasKey = i18n.te('route.' + key);
- if (hasKey) return i18n.t('route.' + key);
- }
- return title ? title.split(',')[0] : title;
- },
- //动态路由
- formatRoutes: function (aMenu = [], first) {
- const aRouter = [];
- const propsDefault = website.menu;
+ this.$router = option.router
+ this.$store = option.store
+ let i18n = option.i18n.global
+ this.$router.$avueRouter = {
+ safe: this,
+ // 设置标题
+ setTitle: title => {
+ const defaultTitle = i18n.t('title')
+ title = title ? `${title} | ${defaultTitle}` : defaultTitle
+ document.title = title
+ },
+ closeTag: value => {
+ let tag = value || this.$store.getters.tag
+ if (typeof value === 'string') {
+ tag = this.$store.getters.tagList.find(ele => ele.fullPath === value)
+ }
+ this.$store.commit('DEL_TAG', tag)
+ },
+ generateTitle: (item, props = {}) => {
+ let query = item[props.query || 'query'] || {}
+ let title = query.name || item[props.label || 'label']
+ let meta = item[props.meta || 'meta'] || {}
+ let key = meta.i18n
+ if (key) {
+ const hasKey = i18n.te('route.' + key)
+ if (hasKey) return i18n.t('route.' + key)
+ }
+ return title ? title.split(',')[0] : title
+ },
+ //动态路由
+ formatRoutes: function (aMenu = [], first) {
+ const aRouter = []
+ const propsDefault = website.menu
- if (aMenu && aMenu.length === 0) return;
- for (let i = 0; i < aMenu.length; i++) {
- const oMenu = aMenu[i];
- let path = oMenu[propsDefault.path],
- isComponent = true,
- component = oMenu.component,
- name = oMenu[propsDefault.label] + ',' + oMenu.id,
- icon = oMenu[propsDefault.icon],
- children = oMenu[propsDefault.children],
- query = oMenu[propsDefault.query],
- meta = oMenu[propsDefault.meta];
- if (option.keepAlive) {
- meta.keepAlive = option.keepAlive;
- }
- const isChild = !!(children && children.length !== 0);
- const oRouter = {
- path: path,
- component: (() => {
- // 判断是否为首路由
- if (first) {
- return modules[
- option.store.getters.isMacOs || !website.setting.menu
- ? '../page/index/layout.vue'
- : '../page/index/index.vue'
- ];
- // 判断是否为多层路由
- } else if (isChild && !first) {
- return modules['../page/index/layout.vue'];
- // 判断是否为最终的页面视图
- } else {
- let result = modules[`../${component}.vue`];
- if (result) result().then(mod => (mod.default.name = path));
- else {
- isComponent = false;
- }
- return result;
- }
- })(),
- name,
- icon,
- meta,
- query,
- redirect: (() => {
- if (!isChild && first) return `${path}`;
- else return '';
- })(),
- // 处理是否为一级路由
- children: !isChild
- ? (() => {
- if (first) {
- oMenu[propsDefault.path] = `${path}`;
- let result = modules[`../${component}.vue`];
- if (result) result().then(mod => (mod.default.name = path));
- else {
- isComponent = false;
- }
- return [
- {
- component: result,
- icon: icon,
- name: name,
- meta: meta,
- query: query,
- path: '',
- },
- ];
- }
- return [];
- })()
- : (() => {
- return this.formatRoutes(children, false);
- })(),
- };
- if (!isURL(path) && isComponent) aRouter.push(oRouter);
- }
- if (first) {
- aRouter.forEach(ele => this.safe.$router.addRoute(ele));
- } else {
- return aRouter;
- }
- },
- };
-};
+ if (aMenu && aMenu.length === 0) return
+ for (let i = 0; i < aMenu.length; i++) {
+ const oMenu = aMenu[i]
+ let path = oMenu[propsDefault.path],
+ isComponent = true,
+ component = oMenu.component,
+ name = oMenu[propsDefault.label] + ',' + oMenu.id,
+ icon = oMenu[propsDefault.icon],
+ children = oMenu[propsDefault.children],
+ query = oMenu[propsDefault.query],
+ meta = oMenu[propsDefault.meta]
+ if (option.keepAlive) {
+ meta.keepAlive = option.keepAlive
+ }
+ const isChild = !!(children && children.length !== 0)
+ const oRouter = {
+ path: path,
+ component: (() => {
+ // 判断是否为首路由
+ if (first) {
+ return modules[
+ option.store.getters.isMacOs || !website.setting.menu
+ ? '../page/index/layout.vue'
+ : '../page/index/index.vue'
+ ]
+ // 判断是否为多层路由
+ } else if (isChild && !first) {
+ return modules['../page/index/layout.vue']
+ // 判断是否为最终的页面视图
+ } else {
+ let result = modules[`../${component}.vue`]
+ if (result) result().then(mod => (mod.default.name = path))
+ else {
+ isComponent = false
+ }
+ return result
+ }
+ })(),
+ name,
+ icon,
+ meta,
+ query,
+ redirect: (() => {
+ if (!isChild && first) return `${path}`
+ else return ''
+ })(),
+ // 处理是否为一级路由
+ children: !isChild
+ ? (() => {
+ if (first) {
+ oMenu[propsDefault.path] = `${path}`
+ let result = modules[`../${component}.vue`]
+ if (result) result().then(mod => (mod.default.name = path))
+ else {
+ isComponent = false
+ }
+ return [
+ {
+ component: result,
+ icon: icon,
+ name: name,
+ meta: meta,
+ query: query,
+ path: '',
+ },
+ ]
+ }
+ return []
+ })()
+ : (() => {
+ return this.formatRoutes(children, false)
+ })(),
+ }
+ if (!isURL(path) && isComponent) aRouter.push(oRouter)
+ }
+ if (first) {
+ aRouter.forEach(ele => this.safe.$router.addRoute(ele))
+ } else {
+ return aRouter
+ }
+ },
+ }
+}
export const formatPath = (ele, first) => {
- const propsDefault = website.menu;
- const icon = ele[propsDefault.icon];
- ele[propsDefault.icon] = !icon ? propsDefault.iconDefault : icon;
- ele.meta = {
- keepAlive: ele.isOpen === 2,
- };
- const iframeComponent = 'components/iframe/main';
- const iframeSrc = href => {
- return href.replace(/&/g, '#');
- };
- const isChild = !!(ele[propsDefault.children] && ele[propsDefault.children].length !== 0);
- if (!isChild && first) {
- ele.component = 'views' + ele[propsDefault.path];
- if (isURL(ele[propsDefault.href])) {
- let href = ele[propsDefault.href];
- ele.component = iframeComponent;
- ele[propsDefault.query] = {
- url: iframeSrc(href),
- };
- }
- } else {
- ele[propsDefault.children] &&
- ele[propsDefault.children].forEach(child => {
- child.component = 'views' + child[propsDefault.path];
- child.meta = {
- keepAlive: child.isOpen === 2,
- };
- if (isURL(child[propsDefault.href])) {
- let href = child[propsDefault.href];
- child[propsDefault.path] = ele[propsDefault.path] + '/' + child.code;
- child.component = iframeComponent;
- child[propsDefault.query] = {
- url: iframeSrc(href),
- };
- }
- formatPath(child);
- });
- }
-};
-export default RouterPlugin;
+ const propsDefault = website.menu
+ const icon = ele[propsDefault.icon]
+ ele[propsDefault.icon] = !icon ? propsDefault.iconDefault : icon
+ ele.meta = {
+ keepAlive: ele.isOpen === 2,
+ }
+ const iframeComponent = 'components/iframe/main'
+ const iframeSrc = href => {
+ return href.replace(/&/g, '#')
+ }
+ const isChild = !!(ele[propsDefault.children] && ele[propsDefault.children].length !== 0)
+ if (!isChild && first) {
+ ele.component = 'views' + ele[propsDefault.path]
+ if (isURL(ele[propsDefault.href])) {
+ let href = ele[propsDefault.href]
+ ele.component = iframeComponent
+ ele[propsDefault.query] = {
+ url: iframeSrc(href),
+ }
+ }
+ } else {
+ ele[propsDefault.children] &&
+ ele[propsDefault.children].forEach(child => {
+ child.component = 'views' + child[propsDefault.path]
+ child.meta = {
+ keepAlive: child.isOpen === 2,
+ }
+ if (isURL(child[propsDefault.href])) {
+ let href = child[propsDefault.href]
+ child[propsDefault.path] = ele[propsDefault.path] + '/' + child.code
+ child.component = iframeComponent
+ child[propsDefault.query] = {
+ url: iframeSrc(href),
+ }
+ }
+ formatPath(child)
+ })
+ }
+}
+export default RouterPlugin
--
Gitblit v1.9.3