ludc
2024-04-09 85c231f769f0167114d01e2588422a5dbc7353bb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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;
};