From 98c31d9998342f50a6e108a033cf6f423c44e83e Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 12 四月 2024 17:24:06 +0800
Subject: [PATCH] 处理action
---
Source/ProjectWeb/src/actions/base/BaseAction.js | 122 ++++++++++++++++++++++++++++------------
1 files changed, 85 insertions(+), 37 deletions(-)
diff --git a/Source/ProjectWeb/src/actions/base/BaseAction.js b/Source/ProjectWeb/src/actions/base/BaseAction.js
index 528dbe4..0e9b377 100644
--- a/Source/ProjectWeb/src/actions/base/BaseAction.js
+++ b/Source/ProjectWeb/src/actions/base/BaseAction.js
@@ -1,9 +1,52 @@
import {validatenull} from "@/util/validate";
-import {findArray} from "@/util/util";
+import Vue from 'vue';
/**
* 鎸夐挳鐨勫熀纭�鏈嶅姟
*/
+
+/**
+ * action閫氱敤鍏ュ彛
+ */
+export const doAction = (button,options) => {
+ options.paramVOS['title']=replaceFreeMarker(options.paramVOS.title,options.dataStore,options.sourceData);
+
+ if(button.url && button.url!='null'){
+ //鏈夐厤缃產ction璺緞锛屼娇鐢ㄨ矾寰勫搴旂殑js
+ let buttonParse = parseEventByUrl(button.url,options,false);
+ import("../"+buttonParse.jsPath+".js").then(module => {
+ module.doAction(options);
+ })
+ }else {
+ //閫氱敤action
+ const handlers = {
+ //鏌ョ湅
+ view: () => {},
+ //鍒涘缓
+ add: () => {import("@/actions/base/AddAction").then(module => {
+ module.doAction(options);
+ })},
+ //淇敼
+ edit: () => {import("@/actions/base/EditAction").then(module => {
+ module.doAction(options);
+ })},
+ //鍒犻櫎
+ delete: () => {import("@/actions/base/DeleteAction").then(module => {
+ module.doAction(options);
+ })},
+ };
+ if(validatenull(options.paramVOS.context)) {
+ options.paramVOS.context = options.paramVOS.content;
+ }
+ if(handlers[button.actionVO.id.toLowerCase()]){
+ handlers[button.actionVO.id.toLowerCase()]()
+ }else{
+ Vue.prototype.$message.error('鏈壘鍒板搴攁ction锛岃閲嶆柊閰嶇疆鎸夐挳锛�');
+ }
+ }
+
+};
+
/**
* 鏇挎崲鏂囨湰涓殑${xxx}
@@ -28,7 +71,7 @@
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] || '';
+ field = sourceData[field] || '';
text = temp + field + end;
}
reg = "sourceData.${";
@@ -36,7 +79,7 @@
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] || '';
+ field = sourceData[field] || '';
text = temp + field + end;
}
reg = "${";
@@ -44,7 +87,7 @@
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] || '';
+ field = replaceData[field] || '';
text = temp + field + end;
}
}
@@ -70,23 +113,24 @@
/**
* 鎵ц鍓嶇疆浜嬩欢
* @param options 鎸夐挳鐨勯厤缃俊鎭紝鍓嶇疆浜嬩欢閲岄厤缃殑鍙傛暟浼氭浛鎹㈣繖涓噷鐨勫弬鏁扮殑淇℃伅
- * @param buttonTarget 鎸夐挳js鎵�鍦ㄧ殑瀵硅薄
+ * @param fnTarget 鎵ц鏂规硶
* @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'];
+export const callPreEvent = (options,fnTarget,callback,preEventName) => {
+ let beforeEvent = options.paramVOS[preEventName || 'beforeevent'];
if(beforeEvent) {
let buttonParse = parseEventByUrl(beforeEvent,options,true);
- buttonParse.options.callback = callback;
- if(validatenull(buttonParse)){
- buttonTarget[buttonParse.methodName](buttonParse);
+ if(validatenull(buttonParse.jsPath)){
+ fnTarget(buttonParse,callback);
}else{
- layui.use(buttonParse.jsPath,function () {
- layui[buttonParse.jsPath][buttonParse.methodName](options);
- });
+ try {
+ import("../"+buttonParse.jsPath).then(module => {
+ module[buttonParse.methodName](options,callback);
+ })
+ } catch (error) {
+ Vue.prototype.$message.error('鏈壘鍒板墠缃簨浠舵墽琛宩s');
+ }
}
}else{
if(callback){
@@ -95,22 +139,26 @@
}
};
/**
- * 鎵ц鍚庣疆鏃堕棿
+ * 鎵ц鍚庣疆浜嬩欢
* @param options 鎸夐挳鐨勯厤缃俊鎭紝鍚庣疆浜嬩欢閲岄厤缃殑鍙傛暟浼氭浛鎹㈣繖涓噷鐨勫弬鏁扮殑淇℃伅
- * @param buttonTarget 鎸夐挳Js鎵�鍦ㄧ殑瀵硅薄
+ * @param fnTarget 鎵ц鏂规硶
+ * @param callback 鍥炶皟锛屽鏋滃瓨鍦ㄥ悗缃簨浠讹紝浼氬湪鎵ц瀹屾垚鍚庢墽琛屽洖璋冿紝鍚﹀垯鐩存帴鍥炶皟
+ * @param preEventName 鍚庣疆浜嬩欢鍚嶇О锛岄粯璁� afterevent
*/
-export const callPostEvent = (options,buttonTarget,callback,postEventName)=>{
- const params = paramLow(options.paramVOS);
- options.paramVOS = params;
- var afterEvent = params[postEventName || 'afterevent'];
+export const callPostEvent = (options,fnTarget,callback,postEventName)=>{
+ let afterEvent = options.paramVOS[postEventName || 'afterevent'];
if(afterEvent) {
- var buttonParse = parseEventByUrl(afterEvent,options,false);
- if(validatenull(buttonParse)){
- buttonTarget[buttonParse.methodName](buttonParse);
+ let buttonParse = parseEventByUrl(afterEvent,options,false);
+ if(validatenull(buttonParse.jsPath)){
+ fnTarget(buttonParse,callback);
}else{
- layui.use(buttonParse.jsPath,function () {
- layui[buttonParse.jsPath][buttonParse.methodName](options);
- });
+ try {
+ import("../"+buttonParse.jsPath).then(module => {
+ module[buttonParse.methodName](options,callback);
+ })
+ } catch (error) {
+ Vue.prototype.$message.error('鏈壘鍒板悗缃簨浠舵墽琛宩s');
+ }
}
}else{
if(callback){
@@ -127,13 +175,13 @@
*/
export const parseEventByUrl = (url,options,isBefore) => {
//鏍规嵁閰嶇疆鏍煎紡鍖栦簨浠�
- var jsPath = url;
- var methodName = isBefore?"doBefore":"doAfter";
- var params = {};
+ let jsPath = url;
+ let methodName = isBefore?"doBefore":"doAfter";
+ let params = {};
if (url.indexOf("?")) {
- var temp = url.substring(0, url.indexOf("?"));
+ let temp = url.substring(0, url.indexOf("?"));
if (temp.indexOf("#") > -1) {
- var array = temp.split("#");
+ let array = temp.split("#");
if(array.length == 1){
jsPath = array[0];
}else{
@@ -143,17 +191,17 @@
}else{
jsPath = temp;
}
- var paramArray = url.substring(url.indexOf("?") + 1).split("&");
- layui.each(paramArray, function (_index, _item) {
+ let paramArray = url.substring(url.indexOf("?") + 1).split("&");
+ paramArray.forEach(_item=>{
if (_item.indexOf("=") < 0) {
- this.$message.error(isBefore?"鍓嶇疆浜嬩欢":"鍚庣疆浜嬩欢" + "鐨勫弬鏁伴厤缃敊璇紝闇�瑕佽xxx=yyy&zzz=a鐨勬柟寮�");
+ Vue.prototype.$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("#");
+ let array = url.split("#");
if(array.length == 1){
jsPath = array[0];
}else{
--
Gitblit v1.9.3