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