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