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&param1=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