wangting
2024-04-16 0c38987f747be590af21e3d4c9700401c04fc347
Source/ProjectWeb/src/views/base/UIContentArea.vue
@@ -84,16 +84,7 @@
        description="该区域没有配置显示的内容">
      </el-alert>
      <el-alert
        v-else-if="Object.keys(newSourceData).length === 0"
        class="alert"
        :closable="false"
        title="源数据为空"
        type="error"
        show-icon
        description="不满足显示表达式条件,没有可显示的内容">
      </el-alert>
      <el-alert
        v-else
        v-else-if="Object.keys(newSourceData).length> 0"
        class="alert"
        :closable="false"
        title=""
@@ -101,7 +92,6 @@
        show-icon
        description="不满足显示表达式条件,没有可显示的内容。">
      </el-alert>
      {{newSourceData}}
    </div>
  </basic-container>
</template>
@@ -156,11 +146,35 @@
  data(){
    return{
      activeName:this.areasName+'-Tab-0',
      collapseActiveNames:[this.areasName+'-collapse-0']
      collapseActiveNames:[this.areasName+'-collapse-0'],
      newAreasData:[]
    }
  },
  computed:{
    newAreasData(){
    newSourceData(){
      if(this.sourceData.attributes && this.sourceData.parentId!=undefined && this.sourceData.parentId !=null){
        //源数据是树节点
        return this.sourceData.attributes
      }
      return this.sourceData;
    }
  },
  watch: {
    'newSourceData':{
      handler(newval) {
        this.getNewAreasData();
      }
    }
  },
  created() {
    this.getNewAreasData();
  },
  mounted() {
    // console.log(this.areasData);
  },
  methods:{
    getNewAreasData(){
      if(Object.keys(this.newSourceData).length> 0){
      let newAreasData = [];
      this.areasData.forEach(areaData => {
        //验证显式表达式
@@ -172,39 +186,36 @@
          newAreasData.push(areaData)
        }
      })
     return newAreasData;
    },
    newSourceData(){
      if(this.sourceData.attributes && this.sourceData.parentId!=undefined && this.sourceData.parentId !=null){
        //源数据是树节点
        return this.sourceData.attributes
      }
      return this.sourceData;
        this.newAreasData = newAreasData;
      }else {
        this.newAreasData=this.areasData;
    }
  },
  created() {
  },
  mounted() {
    // console.log(this.areasData);
  },
  methods:{
    checkDisplayExpression(displayExpressionStr){
      //"${folderbusinesstype}"<>"workunit" and "${folderbusinesstype}"<>"part"  and "${folderbusinesstype}"<>"Terminology" and  "${folderbusinesstype}"<>"AssMaterial" and  "${folderbusinesstype}"<>"resourcelib" and  "${folderbusinesstype}"<>"material"  and "${folderbusinesstype}"<>"machine"
      // "${folderbusinesstype}"="AssMaterial" or "${folderbusinesstype}"="assmaterial"
      //"${folderbusinesstype}"="material"
      //("${btmname}"="产品型号" and "${producttype}"<>"试验件") or "${btmname}"="ppart"or "${btmname}"="工艺零件"or "${btmname}"="part"or "${btmname}"="零件"
      //${folderbusinesstype}为源数据中的属性
      let checkdisplay=false;
      //替换and和or
      let newDisplayExpressionStr=displayExpressionStr.replace(/"\s*and\s*"/g,'" && "').replace(/"\s*AND\s*"/g,'" && "').replace(/"\s*or\s*"/g,'" || "').replace(/"\s*OR\s*"/g,'" || "');
      newDisplayExpressionStr = newDisplayExpressionStr.replace(/\)\s*and\s*"/g, ') && "').replace(/\)\s*AND\s*"/g, ') && "').replace(/\)\s*or\s*"/g, ') || "').replace(/\)\s*OR\s*"/g, ') || "');
      newDisplayExpressionStr = newDisplayExpressionStr.replace(/"\s*and\s*\(/g, '" && (').replace(/"\s*AND\s*\(/g, '" && (').replace(/"\s*or\s*\(/g, '" || (').replace(/"\s*OR\s*\(/g, '" || (');
      newDisplayExpressionStr = newDisplayExpressionStr.replace(/\)\s*and\s*\(/g, ') && (').replace(/\)\s*AND\s*\(/g, ') && (').replace(/\)\s*or\s*\(/g, ') || (').replace(/\)\s*OR\s*\(/g, ') || (');
      //替换符号
      newDisplayExpressionStr=newDisplayExpressionStr.replace(/"\s*<>\s*"/g,'" != "').replace(/"\s*=\s*"/g,'" == "');
      newDisplayExpressionStr=newDisplayExpressionStr.replace(/"\$\{/g,'this.newSourceData.').replace(/\}"/g,'')
      const sandbox = {};
      try {
      if(eval('('+newDisplayExpressionStr+')')){
        checkdisplay=true;
      }
      }catch (e) {
        console.log(displayExpressionStr);
      }
      return checkdisplay;
    },
    tabHandleClick(tab, event) {