wangting
2024-04-02 b38eb035c3782025257d9b582e5a0db45f7881b8
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
@@ -2,15 +2,15 @@
  <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid">
    <div v-if="isError" style="color: #F56C6C">这个自定义页面的地址格式不正确。推荐使用bs=?type=xxx&context=yyy&pparam=zzz这种形式</div>
    <component v-else :is="currentComponent"
               :btmType="customOptions.btmType"
               :content="customOptions.content"
               :btmType="btmType"
               :content="content"
               :inDialog="true"
               :key="areasName+'customCom-'+componentVO.oid"
               :componentVO="componentVO"
               :sourceData="sourceData"
               :dataStore="dataStore"
               :areasName="areasName"
               :paramVOS="customOptions.paramVOS"></component>
               :paramVOS="urlParams"></component>
  </div>
</template>
@@ -57,6 +57,9 @@
  },
  data() {
    return {
      btmType:'',
      content:'',
      urlParams:{},
      height:'300px',
      customClass:this.componentVO.customClass, //bs=?type=xxx&context=yyy&param=zzz  或者 bs=组件name?type=xxx&context=yyy&param=zzz
      isError:false, //路径解析失败
@@ -73,46 +76,45 @@
    }
  },
  computed:{
    customOptions() {
      if(this.customClass.indexOf("bs=") <0){
        this.isError=true;
        return ;
      }
      this.customClass=this.componentVO.customClass.split("bs=")[1];
      if(this.customClass.indexOf("?") <0 || this.customClass.indexOf("type=") <0 || this.customClass.indexOf("context=") <0){
        this.isError=true;
        return ;
      }
      if(this.customClass.split('?')[0]!='' && this.customClass.split('?')[0]!='UI' && this.customClass.split('?')[0]!='ui'){
        this.currentComponent=this.customClass.split('?')[0];
      }
      this.customClass=this.componentVO.customClass.split("?")[1].split('&');
      let urlParams={};
      let btmType=''
      let content=''
      this.customClass.forEach(item=>{
        var preParam =item.split("=");
        if(preParam[0]=='type'){
          btmType=preParam[1];
        }else if(preParam[0]=='context'){
          content=preParam[1];
        }else{
          urlParams[preParam[0]] = preParam[1];
        }
      })
      return {
        btmType:btmType,
        content:content,
        paramVOS:Object.assign(this.paramVOS,urlParams)
      }
    }
  },
  created() {
  },
  mounted() {
    if(this.customClass.indexOf("bs=") <0){
      this.isError=true;
      return ;
    }
    this.customClass=this.componentVO.customClass.split("bs=")[1];
    if(this.customClass.indexOf("?") <0 || this.customClass.indexOf("type=") <0 || this.customClass.indexOf("context=") <0){
      this.isError=true;
      return ;
    }
    if(this.customClass.split('?')[0]!='' && this.customClass.split('?')[0]!='UI' && this.customClass.split('?')[0]!='ui'){
      this.currentComponent=this.customClass.split('?')[0];
    }
    this.customClass=this.componentVO.customClass.split("?")[1].split('&');
    let urlParams={};
    let btmType=''
    let content=''
    this.customClass.forEach(item=>{
      var preParam =item.split("=");
      if(preParam[0]=='type'){
        btmType=preParam[1];
      }else if(preParam[0]=='context'){
        content=preParam[1];
      }else{
        urlParams[preParam[0]] = preParam[1];
      }
    })
      this.btmType=btmType,
      this.content=content,
      this.urlParams=Object.assign(this.paramVOS,urlParams)
    //this.getHeight(this.$parent);
  },
 },
  methods:{
    getHeight(el){
      if(el.$el.clientHeight>50){