wangting
2024-04-30 f5f8aaedd1d488fb20a293182dd7a40e2e82096e
Source/ProjectWeb/src/actions/base/BaseAction.js
@@ -9,7 +9,44 @@
 * action通用入口
 */
export const doAction = (button,options,callback) => {
  options.paramVOS = paramLow(options.paramVOS)
  options.paramVOS['title']=replaceFreeMarker(options.paramVOS.title,options.dataStore,options.sourceData);
  let isShow = true;
  if (options.paramVOS['initvalue'] && typeof(options.paramVOS.initvalue)=='string') {
    let values = options.paramVOS['initvalue'].split(';');
    let initValues = {}
    values.forEach((item,i) => {
      if(isShow){
        item = item.replace(':', '=');
        if (item.indexOf('${') > -1) {
          if (item.split('=')[1].indexOf('.') > -1) {
            if (options.sourceData.length < 1 || !options.sourceData.oid) {
              isShow = false;
              Vue.prototype.$message.error("请先选择一条来源数据")
              return false;
            }
            let name = item.split('=')[1].split('.')[1].replace('${', '').replace('}', '');
            initValues[item.split('=')[0]] = options.sourceData[name]
          } else {
            if (options.dataStore.length < 1) {
              isShow = false;
              Vue.prototype.$message.error("请先选择一条数据");
              return false;
            }
            let name = item.split('=')[1].replace('${', '').replace('}', '');
            initValues[item.split('=')[0]] = options.dataStore[0][name];
          }
        }
      }
    })
    if(isShow){
      options.paramVOS['initvalue'] = initValues
    }
  }
  if(!isShow){
    return;
  }
  if(button.url && button.url!='null'){
    //有配置action路径,使用路径对应的js
@@ -117,7 +154,7 @@
 * @param preEventName 前置事件名称,默认beforeevent
 */
export const callPreEvent = (options,fnTarget,callback,preEventName) => {
  let beforeEvent = options.paramVOS[preEventName || 'beforeevent'];
  let beforeEvent = options.paramVOS[preEventName || 'prepvent'];
  if(beforeEvent) {
    let buttonParse = parseEventByUrl(beforeEvent,options,true);
    if(validatenull(buttonParse.jsPath)){
@@ -172,10 +209,10 @@
 * @param isBefore 是否为前置事件,否则为后置
 * @returns {{jsPath: js的路径, options: 按钮的配置信息, methodName: (string)方法的名字}}
 */
export const parseEventByUrl = (url,options,isBefore) => {
export const parseEventByUrl = (url,options,isBefore,defalutmethodName) => {
  //根据配置格式化事件
  let jsPath = url;
  let methodName = isBefore?"doBefore":"doAfter";
  let methodName = defalutmethodName || (isBefore?"doBefore":"doAfter");
  let params = {};
  if (url.indexOf("?")) {
    let temp = url.substring(0, url.indexOf("?"));
@@ -211,12 +248,21 @@
      jsPath = url;
    }
  }
  if(!options){
    options={
      paramVOS:{}
    }
  }else if(!options.paramVOS){
    options.paramVOS={}
  }
  for (var key in params) {
    options.paramVOS[key.toLowerCase()] = params[key];
  }
  return {
    jsPath:jsPath,
    methodName:methodName,
    options:options
    options:options,
    params:params
  };
};