From 634c73113c02df4e29a5a0c678030ec70a352a67 Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期三, 10 四月 2024 15:16:43 +0800 Subject: [PATCH] 路由解析 --- Source/ProjectWeb/src/actions/base/AddAction.js | 0 /dev/null | 52 ---------- Source/ProjectWeb/src/actions/base/BaseAction.js | 175 +++++++++++++++++++++++++++++++++++ Source/ProjectWeb/src/router/avue-router.js | 16 +- Source/ProjectWeb/src/page/index/top/index.vue | 4 Source/ProjectWeb/src/store/modules/user.js | 4 Source/ProjectWeb/src/permission.js | 1 7 files changed, 187 insertions(+), 65 deletions(-) diff --git a/Source/ProjectWeb/src/actions/BaseAction.js b/Source/ProjectWeb/src/actions/BaseAction.js deleted file mode 100644 index a0005bc..0000000 --- a/Source/ProjectWeb/src/actions/BaseAction.js +++ /dev/null @@ -1,52 +0,0 @@ -import {validatenull} from "@/util/validate"; -import {findArray} from "@/util/util"; - -/** - * 鎸夐挳鐨勫熀纭�鏈嶅姟 - */ - -/** - * 鏇挎崲鏂囨湰涓殑${xxx} - * @param text 鏂囨湰 - * @param dataStore 閫夋嫨鐨勬暟鎹� - * @param sourceData 鏉ユ簮鏁版嵁 - * @returns 鏇挎崲鍚庣殑鍊�,瀛楃涓� - */ -export const replaceFreeMarker = (text,dataStore,sourceData) => { - //鏇挎崲琛ㄨ揪寮� - if (!sourceData) { - sourceData = {}; - } - if (!dataStore) { - dataStore = []; - } - let replaceData = dataStore.length > 0 ? dataStore[0] : {}; - if (text && text.indexOf("${") > -1 && text.indexOf("}")) { - //js鍙兘浣跨敤${xxx}杩欑鐨勬柟寮� - let reg = "root.${"; - while (text.indexOf(reg) > -1) { - let temp = text.substring(0, text.indexOf(reg)); - let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); - let end = text.substring(text.indexOf("}") + 1); - field = replaceData[field] || sourceData[field] || ''; - text = temp + field + end; - } - reg = "sourceData.${"; - while (text.indexOf(reg) > -1) { - let temp = text.substring(0, text.indexOf(reg)); - let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); - let end = text.substring(text.indexOf("}") + 1); - field = replaceData[field] || sourceData[field] || ''; - text = temp + field + end; - } - reg = "${"; - while (text.indexOf(reg) > -1) { - let temp = text.substring(0, text.indexOf(reg)); - let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); - let end = text.substring(text.indexOf("}") + 1); - field = replaceData[field] || sourceData[field] || ''; - text = temp + field + end; - } - } - return text; -}; diff --git a/Source/ProjectWeb/src/actions/AddAction.js b/Source/ProjectWeb/src/actions/base/AddAction.js similarity index 100% rename from Source/ProjectWeb/src/actions/AddAction.js rename to Source/ProjectWeb/src/actions/base/AddAction.js diff --git a/Source/ProjectWeb/src/actions/base/BaseAction.js b/Source/ProjectWeb/src/actions/base/BaseAction.js new file mode 100644 index 0000000..528dbe4 --- /dev/null +++ b/Source/ProjectWeb/src/actions/base/BaseAction.js @@ -0,0 +1,175 @@ +import {validatenull} from "@/util/validate"; +import {findArray} from "@/util/util"; + +/** + * 鎸夐挳鐨勫熀纭�鏈嶅姟 + */ + +/** + * 鏇挎崲鏂囨湰涓殑${xxx} + * @param text 鏂囨湰 + * @param dataStore 閫夋嫨鐨勬暟鎹� + * @param sourceData 鏉ユ簮鏁版嵁 + * @returns 鏇挎崲鍚庣殑鍊�,瀛楃涓� + */ +export const replaceFreeMarker = (text,dataStore,sourceData) => { + //鏇挎崲琛ㄨ揪寮� + if (!sourceData) { + sourceData = {}; + } + if (!dataStore) { + dataStore = []; + } + let replaceData = dataStore.length > 0 ? dataStore[0] : {}; + if (text && text.indexOf("${") > -1 && text.indexOf("}")) { + //js鍙兘浣跨敤${xxx}杩欑鐨勬柟寮� + let reg = "root.${"; + while (text.indexOf(reg) > -1) { + let temp = text.substring(0, text.indexOf(reg)); + let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); + let end = text.substring(text.indexOf("}") + 1); + field = replaceData[field] || sourceData[field] || ''; + text = temp + field + end; + } + reg = "sourceData.${"; + while (text.indexOf(reg) > -1) { + let temp = text.substring(0, text.indexOf(reg)); + let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); + let end = text.substring(text.indexOf("}") + 1); + field = replaceData[field] || sourceData[field] || ''; + text = temp + field + end; + } + reg = "${"; + while (text.indexOf(reg) > -1) { + let temp = text.substring(0, text.indexOf(reg)); + let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); + let end = text.substring(text.indexOf("}") + 1); + field = replaceData[field] || sourceData[field] || ''; + text = temp + field + end; + } + } + return text; +}; + +/** + * 鍙傛暟杞崲涓哄皬鍐� + * @param paramsVOs 鍙傛暟 + * @returns 灏忓啓鍚庣殑鍙傛暟瀵硅薄 + */ +export const paramLow = (paramsVOs) => { + // + if (!paramsVOs) { + paramsVOs = {}; + } + var params = {}; + for (var key in paramsVOs) { + params[key.toLowerCase()] = paramsVOs[key]; + } + return params; +}; +/** + * 鎵ц鍓嶇疆浜嬩欢 + * @param options 鎸夐挳鐨勯厤缃俊鎭紝鍓嶇疆浜嬩欢閲岄厤缃殑鍙傛暟浼氭浛鎹㈣繖涓噷鐨勫弬鏁扮殑淇℃伅 + * @param buttonTarget 鎸夐挳js鎵�鍦ㄧ殑瀵硅薄 + * @param callback 鍥炶皟锛屽鏋滃瓨鍦ㄥ墠缃簨浠讹紝浼氬湪鎵ц瀹屾垚鍚庢墽琛屽洖璋冿紝鍚﹀垯鐩存帴鍥炶皟 + * @param preEventName 鍓嶇疆浜嬩欢鍚嶇О锛岄粯璁eforeevent + */ +export const callPreEvent = (options,buttonTarget,callback,preEventName) => { + const params = paramLow(options.paramVOS); + options.paramVOS = params; + let beforeEvent = params[preEventName || 'beforeevent']; + if(beforeEvent) { + let buttonParse = parseEventByUrl(beforeEvent,options,true); + buttonParse.options.callback = callback; + if(validatenull(buttonParse)){ + buttonTarget[buttonParse.methodName](buttonParse); + }else{ + layui.use(buttonParse.jsPath,function () { + layui[buttonParse.jsPath][buttonParse.methodName](options); + }); + } + }else{ + if(callback){ + callback(options); + } + } +}; +/** + * 鎵ц鍚庣疆鏃堕棿 + * @param options 鎸夐挳鐨勯厤缃俊鎭紝鍚庣疆浜嬩欢閲岄厤缃殑鍙傛暟浼氭浛鎹㈣繖涓噷鐨勫弬鏁扮殑淇℃伅 + * @param buttonTarget 鎸夐挳Js鎵�鍦ㄧ殑瀵硅薄 + */ +export const callPostEvent = (options,buttonTarget,callback,postEventName)=>{ + const params = paramLow(options.paramVOS); + options.paramVOS = params; + var afterEvent = params[postEventName || 'afterevent']; + if(afterEvent) { + var buttonParse = parseEventByUrl(afterEvent,options,false); + if(validatenull(buttonParse)){ + buttonTarget[buttonParse.methodName](buttonParse); + }else{ + layui.use(buttonParse.jsPath,function () { + layui[buttonParse.jsPath][buttonParse.methodName](options); + }); + } + }else{ + if(callback){ + callback(options); + } + } +}; +/** + * 浣跨敤url鑾峰彇浜嬩欢鐨勪俊鎭� + * @param url 璺緞,鏍煎紡濡俲sPath#methodName?param=aaa¶m1=bbb + * @param options 鎸夐挳鐨勯厤缃俊鎭紝浼氳嚜鍔ㄨ鐩栫浉鍚屽睘鎬х殑鍙傛暟 + * @param isBefore 鏄惁涓哄墠缃簨浠讹紝鍚﹀垯涓哄悗缃� + * @returns {{jsPath: js鐨勮矾寰�, options: 鎸夐挳鐨勯厤缃俊鎭�, methodName: (string)鏂规硶鐨勫悕瀛梷} + */ +export const parseEventByUrl = (url,options,isBefore) => { + //鏍规嵁閰嶇疆鏍煎紡鍖栦簨浠� + var jsPath = url; + var methodName = isBefore?"doBefore":"doAfter"; + var params = {}; + if (url.indexOf("?")) { + var temp = url.substring(0, url.indexOf("?")); + if (temp.indexOf("#") > -1) { + var array = temp.split("#"); + if(array.length == 1){ + jsPath = array[0]; + }else{ + jsPath = array[0]; + methodName = array[1]; + } + }else{ + jsPath = temp; + } + var paramArray = url.substring(url.indexOf("?") + 1).split("&"); + layui.each(paramArray, function (_index, _item) { + if (_item.indexOf("=") < 0) { + this.$message.error(isBefore?"鍓嶇疆浜嬩欢":"鍚庣疆浜嬩欢" + "鐨勫弬鏁伴厤缃敊璇紝闇�瑕佽xxx=yyy&zzz=a鐨勬柟寮�"); + return true; + } + params[_item.split("=")[0]] = _item.split("=")[1]; + }); + }else{ + if (url.indexOf("#") > -1) { + var array = url.split("#"); + if(array.length == 1){ + jsPath = array[0]; + }else{ + jsPath = array[0]; + methodName = array[1]; + } + }else{ + jsPath = url; + } + } + for (var key in params) { + options.paramVOS[key.toLowerCase()] = params[key]; + } + return { + jsPath:jsPath, + methodName:methodName, + options:options + }; +}; diff --git a/Source/ProjectWeb/src/page/index/top/index.vue b/Source/ProjectWeb/src/page/index/top/index.vue index 6b99b79..8430d37 100644 --- a/Source/ProjectWeb/src/page/index/top/index.vue +++ b/Source/ProjectWeb/src/page/index/top/index.vue @@ -242,10 +242,10 @@ cancelButtonText: this.$t("cancelText"), type: "warning" }).then(() => { - this.$store.dispatch("LogOut").then(() => { + //this.$store.dispatch("LogOut").then(() => { resetRouter(); this.$router.push({path: "/login"}); - }); + //}); }); } } diff --git a/Source/ProjectWeb/src/permission.js b/Source/ProjectWeb/src/permission.js index 116b150..3af463c 100644 --- a/Source/ProjectWeb/src/permission.js +++ b/Source/ProjectWeb/src/permission.js @@ -11,7 +11,6 @@ NProgress.configure({showSpinner: false}); const lockPage = store.getters.website.lockPage; //閿佸睆椤� router.beforeEach((to, from, next) => { - // debugger; const meta = to.meta || {}; const isMenu = meta.menu === undefined ? to.query.menu : meta.menu; store.commit('SET_IS_MENU', isMenu === undefined); diff --git a/Source/ProjectWeb/src/router/avue-router.js b/Source/ProjectWeb/src/router/avue-router.js index fb9f9e2..dd431b5 100644 --- a/Source/ProjectWeb/src/router/avue-router.js +++ b/Source/ProjectWeb/src/router/avue-router.js @@ -1,3 +1,5 @@ +import {validatenull} from "@/util/validate"; + let RouterPlugin = function () { this.$router = null; this.$store = null; @@ -131,22 +133,18 @@ } else { parts = path; // 涓嶅瓨鍦� '?' 鏁存潯璺緞灏辨槸 parts } - - // 濡傛灉闂彿鍓嶉潰閮ㄥ垎涓嶅湪 ['ui', 'UI', 'base'] 涓紝鍒欐槸鑷畾涔夌粍浠� - if (!['ui', 'UI', 'base'].includes(parts)) { - component = `views/custom-ui/${parts}`; + if(validatenull(parts)){ + parts='UI'; } - - // 濡傛灉闂彿鍓嶉潰绛変簬绌猴紝鍒欓粯璁や负UI寮曟搸 - if (!parts) { - component = 'views/base/UIContentViewer'; + // 濡傛灉闂彿鍓嶉潰閮ㄥ垎涓嶅湪 ['ui', 'UI', 'base'] 涓紝鍒欐槸鑷畾涔夌粍浠� + if (!['ui', 'UI', 'base','bs'].includes(parts)) { + component = `views/custom-ui/${parts}`; } // 濡傛灉闂彿鍓嶉潰绛変簬 UI銆乽i 鍒欎负UI寮曟搸 if (['UI', 'ui'].includes(parts)) { component = 'views/base/UIContentViewer'; } - let name = oMenu[propsDefault.label], icon = oMenu[propsDefault.icon], children = oMenu[propsDefault.children], diff --git a/Source/ProjectWeb/src/store/modules/user.js b/Source/ProjectWeb/src/store/modules/user.js index a5bf964..3b04ff9 100644 --- a/Source/ProjectWeb/src/store/modules/user.js +++ b/Source/ProjectWeb/src/store/modules/user.js @@ -37,7 +37,9 @@ item.pathValue = item.path; item.path = '/' + item.code; item.query = {}; // 鍒濆鍖� item.query - item.query = queryStringToObject(item.pathValue) + if(item.pathValue.indexOf('?')!=-1) { + item.query = queryStringToObject(item.pathValue) + } if (item.children && item.children.length > 0) { updateCode(item.children); } -- Gitblit v1.9.3