From ae6d20ec4a30b7e796feb05958bcfc80e55f247b Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 20 七月 2023 15:21:45 +0800
Subject: [PATCH] 整合代码部署

---
 Source/UBCS-WEB/dist/src/router/avue-router.js |  199 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 199 insertions(+), 0 deletions(-)

diff --git a/Source/UBCS-WEB/dist/src/router/avue-router.js b/Source/UBCS-WEB/dist/src/router/avue-router.js
new file mode 100644
index 0000000..0e68bda
--- /dev/null
+++ b/Source/UBCS-WEB/dist/src/router/avue-router.js
@@ -0,0 +1,199 @@
+let RouterPlugin = function () {
+  this.$router = null;
+  this.$store = null;
+
+};
+RouterPlugin.install = function (vue, option = {}) {
+  this.$router = option.router;
+  this.$store = option.store;
+  this.$vue = new vue({ i18n: option.i18n });
+
+  // 杩欎釜鐨勪綔鐢ㄦ槸 涓轰簡妫�鏌ュ嚭缃戦〉閾炬帴锛屽洜涓烘湰椤圭洰鐢ㄥ埌浜� iframe
+  function isURL(s) {
+    if (s.includes('html')) return true;
+    return /^http[s]?:\/\/.*/.test(s)
+  }
+
+  // 灏嗗弬鏁板鐞嗕负鍙傛暟鐨勫舰寮忔嫾鎺�
+  function objToform(obj) {
+    let result = [];
+    Object.keys(obj).forEach(ele => {
+      result.push(`${ele}=${obj[ele]}`);
+    })
+    return result.join('&');
+  }
+
+  this.$router.$avueRouter = {
+    //鍏ㄥ眬閰嶇疆
+    $website: this.$store.getters.website,
+    group: '',
+    meta: {},
+    safe: this,
+    // 璁剧疆鏍囬
+    setTitle: (title) => {
+      const defaultTitle = this.$vue.$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.filter(ele => ele.value === value)[0]
+      }
+      this.$store.commit('DEL_TAG', tag)
+    },
+    generateTitle: (title, key) => {
+      if (!key) return title;
+      const hasKey = this.$vue.$te('route.' + key)
+      if (hasKey) {
+        // $t :this method from vue-i18n, inject in @/lang/index.js
+        const translatedTitle = this.$vue.$t('route.' + key)
+
+        return translatedTitle
+      }
+      return title
+    },
+    //澶勭悊璺敱
+    getPath: function (params) {
+      let {src} = params;
+      let result = src || '/';
+      if (isURL(src)) {
+        result = `/myiframe/urlPath?${objToform(params)}`;
+      }
+      return result;
+    },
+    //姝e垯澶勭悊璺敱
+    vaildPath: function (list, path) {
+      let result = false;
+      list.forEach(ele => {
+        if (new RegExp("^" + ele + ".*", "g").test(path)) {
+          result = true
+        }
+
+      })
+      return result;
+    },
+    //璁剧疆璺敱鍊�
+    getValue: function (route) {
+      let value = "";
+      if (route.query.src) {
+        value = route.query.src;
+      } else {
+        value = route.path;
+      }
+      return value;
+    },
+    //鍔ㄦ�佽矾鐢�
+    // 璺敱鏄笓闂ㄧ殑涓�涓帴鍙h幏鍙�
+      /**
+       * aMenu: 鎺ュ彈鍒扮殑鍔ㄦ�佽矾鐢辨暟鎹� menu鐨勭粨鏋勫灞傛湁鐖剁骇path 閲岄潰鏈変竴涓猚hilden 璁板綍椤甸潰鐨勮矾鐢�
+       * first: 涓轰簡鍖哄垎澶栫晫 璋冪敤formatRoutes 鍜� 褰撳墠鏂囦欢璋冪敤 formatRoutes
+      */
+    formatRoutes: function (aMenu = [], first) {
+      // window.console.log('aMenu')
+      // window.console.log(aMenu)
+      const aRouter = []
+      // 鑾峰彇鍒板叏灞�閰嶇疆涓殑 props
+      const propsConfig = this.$website.menu.props;
+      // 璁剧疆 props榛樿鍊� 浣滅敤灏辨槸灏嗗瓧娈佃缃垚閰嶇疆鐨�
+      const propsDefault = {
+        label: propsConfig.label || 'name',
+        path: propsConfig.path || 'path',
+        icon: propsConfig.icon || 'icon',
+        children: propsConfig.children || 'children',
+        meta: propsConfig.meta || 'meta',
+      }
+      // 濡傛灉娌℃湁鏉冮檺鑿滃崟灏辩粨鏉�
+      if (aMenu.length === 0) return;
+      // 寮�濮嬪鐞唌enu
+      for (let i = 0; i < aMenu.length; i++) {
+        // 鍙栧埌褰撳墠瑕佸鐞嗙殑涓�椤�
+        const oMenu = aMenu[i];
+        // 杩欎竴鍧楃殑璧嬪�� 涔熷氨鏄彇鍒拌繑鍥炵殑鍊�
+        let path = (() => {
+            if (first) {
+              // 灏� '/index' 鏇挎崲涓� ''
+              return oMenu[propsDefault.path].replace('/index', '')
+            } else {
+              return oMenu[propsDefault.path]
+            }
+          })(),
+          //鐗规畩澶勭悊缁勪欢 鎵ц瀹岃繖涓� component 涔熷氨鏄簿纭埌鍏蜂綋鐨勬枃浠朵簡  views鏂囦欢澶逛笅闈㈠氨鏄叿浣撶殑椤甸潰浠g爜
+          component = 'views' + oMenu.path,
+          name = oMenu[propsDefault.label],
+          icon = oMenu[propsDefault.icon],
+          children = oMenu[propsDefault.children],
+          meta = oMenu[propsDefault.meta] || {};
+          // meta涓� keepalive 鐨勫鐞�
+        meta = Object.assign(meta, (function () {
+          if (option.keepAlive === true) {
+            return {
+              keepAlive: true
+            }
+          }
+        })());
+        //鏄惁鏈夊瓙璺敱
+        const isChild = children.length !== 0;
+        const oRouter = {
+          path: path,
+          component(resolve) {
+            // 鍒ゆ柇鏄惁涓洪璺敱
+            if (first) {
+              require(['../page/index'], resolve)
+              return
+              // 鍒ゆ柇鏄惁涓哄灞傝矾鐢�
+            } else if (isChild && !first) {
+              require(['../page/index/layout'], resolve)
+              return
+              // 鍒ゆ柇鏄惁涓烘渶缁堢殑椤甸潰瑙嗗浘
+            } else {
+              require([`../${component}.vue`], resolve)
+            }
+          },
+          name: name,
+          icon: icon,
+          meta: meta,
+          redirect: (() => {
+            // 绗竴娆¤繘鏉ヤ絾鏄病鏈夊瓙璺敱鐨� 闇�瑕佹坊鍔爎edirect
+            if (!isChild && first && !isURL(path)) return `${path}/index`
+            else return '';
+          })(),
+          // 鏁寸悊瀛愯矾鐢辩殑route 閰嶇疆
+          // 澶勭悊鏄惁涓轰竴绾ц矾鐢�
+          children: !isChild ? (() => {
+            if (first) {
+              // 杩欓噷鐨刬sURL鍒ゆ柇锛屽洜涓鸿繖涓綉绔欐湁浣跨敤 iframe銆傛墍浠ラ渶瑕佸垽鏂槸鍚︿负缃戦〉閾炬帴
+              if (!isURL(path)) oMenu[propsDefault.path] = `${path}/index`;
+              return [{
+                component(resolve) {
+                  require([`../${component}.vue`], resolve)
+                },
+                icon: icon,
+                name: name,
+                meta: meta,
+                path: 'index'
+              }]
+            }
+            return [];
+          })() : (() => {
+            /**
+             * 杩欓噷鏄噸鐐癸紝褰撴湁瀛愯矾鐢辩殑鏃跺�� 浼氬啀鍘绘墽琛� formatRoutes 鏂规硶锛岀劧鍚庡張浼氭湁涓�涓柊鐨� aMenu for寰幆銆�
+             * 鏈�鍚庤繑鍥炵殑鏄竴涓暟缁� aRouter 杩欎釜鏁扮粍灏变細浣滀负 childen鐨勫�艰 return
+            */
+            return this.formatRoutes(children, false)
+          })()
+        }
+        aRouter.push(oRouter)
+      }
+      // for寰幆缁撴潫
+      // 杩欎釜first 鍗$殑鍏跺疄灏辨槸棣栬矾鐢�
+      if (first) {
+        this.safe.$router.addRoutes(aRouter)
+      } else {
+        // 杩欓噷杩斿洖鐨勬槸瀛愮粍浠�
+        return aRouter
+      }
+    }
+  }
+}
+export default RouterPlugin;

--
Gitblit v1.9.3