田源
2024-03-22 e88c8eb524bc477ec8a3cac2902c55a4e0982ce7
Merge remote-tracking branch 'origin/master'
已修改5个文件
129 ■■■■■ 文件已修改
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/router/page/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/views/base/uiDefineVO.js 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
@@ -1,6 +1,14 @@
<template>
  <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid">
    <div v-if="isError" style="color: #F56C6C">这个自定义页面的地址格式不正确。推荐使用UI:type#content?param=xxx这种形式</div>
    <component v-else :is="asyncComponent"
               :customOptions="customOptions"
               :inDialog="inDialog"
               :key="areasName+'customCom-'+componentVO.oid"
               :componentVO="componentVO"
               :sourceData="sourceData"
               :areasName="areasName"
               :paramVOS="paramVOS"></component>
  </div>
</template>
@@ -35,8 +43,70 @@
      default: true
    },
  },
  components:{
  },
  data() {
    return {}
    return {
      customClass:this.componentVO.customClass, //UI:type#content?param=xxx或者 组件name:type#content?param=xxx
      isError:false, //路径解析失败
      componentPath:'@/views/base/UIContentViewer' //自定义使用的组件路径
    }
  },
  computed:{
    customOptions() {
      let componentPath='@/views/base/UIContentViewer';
      if(this.customClass.indexOf(":") <0){
        this.isError=true;
        return ;
      }
      if(this.customClass.split(':')[0]!='UI' && this.customClass.split(':')[0]!='ui'){
        componentPath='@/views/custom/'+this.customClass.split(':')[0];
      }
      let urlParams={};
      let btmType=''
      let content=''
      if(this.customClass.split(':')[1].indexOf("?") <0){
        btmType=this.customClass.split(':')[1].split('#')[0];
        content=this.customClass.split(':')[1].split('#')[1];
      }else {
        let split1 = this.customClass.split(':')[1].split('?')[0];
        let split2 = this.customClass.split(':')[1].split('?')[1];
        btmType=split1.split('#')[0];
        content=split1.split('#')[1];
        let paramsArray = split2.split("&");
        paramsArray.forEach(item=>{
          var preParam =item.split("=");
          if(preParam[0]=='btmname'){
            urlParams['btmType']=preParam[1];
          }else if(preParam[0]=='imagetype'){
            urlParams['imageType']=preParam[1];
            if(preParam[1]=='fileobject'){
            }
          }else{
            urlParams[preParam[0]] = preParam[1];
          }
        })
      }
      this.componentPath=componentPath;
      return {
        btmType:btmType,
        content:content,
        urlParams: urlParams,
        uiComponentType: this.componentVO.uiComponentType,
        uiComponentTypeText: this.componentVO.uiComponentTypeText,
        uiParseClass: this.componentVO.uiParseClass
      }
    },
    asyncComponent() {
      return import(this.componentPath);
    }
  },
  created() {
  }
}
</script>
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue
@@ -57,7 +57,8 @@
    isShow:{
      handler(newval) {
        if(newval) {
          console.log(this.$el.clientHeight)}
          //console.log(this.$el.clientHeight)
        }
      }
    }
  },
Source/ProjectWeb/src/components/dynamic-components/index.vue
@@ -28,7 +28,7 @@
                :paramVOS="paramVOS"
                :isShow="isShow">
  </dynamic-tree>
  <dynamic-custom v-else-if="componentVO.uiComponentType=='custom'"  :inDialog="inDialog"
  <dynamic-custom v-else-if="componentVO.uiComponentType=='customer'"  :inDialog="inDialog"
                  :key="areasName+'custom-'+componentVO.oid"
                  :componentVO="componentVO"
                  :sourceData="sourceData"
Source/ProjectWeb/src/router/page/index.js
@@ -84,7 +84,7 @@
    children: [
      {
        path: '',
        component: () => import("@/views/base/UIContentVIewer"),
        component: () => import("@/views/base/UIContentViewer"),
        props: true
      }
    ]
Source/ProjectWeb/src/views/base/uiDefineVO.js
@@ -1639,6 +1639,54 @@
          "versionSeq": 0,
          "versionValue": null
        },
        {
          "btmname": null,
          "buttons": [],
          "checkInBy": null,
          "checkInTime": null,
          "checkOutBy": null,
          "checkOutTime": null,
          "copyFromVersion": null,
          "createTime": null,
          "creator": null,
          "customClass": "UI:processreview#DepartmentProcessReview_web?param=xxx",
          "data": null,
          "description": "",
          "extendAttr": "",
          "firstR": null,
          "firstV": null,
          "formDefineVO": null,
          "id": null,
          "lastModifier": null,
          "lastModifyTime": null,
          "lastR": null,
          "lastV": null,
          "lcStatus": null,
          "lcStatusText": null,
          "lctid": null,
          "name": "自定义显示",
          "nameOid": null,
          "oid": "A05C554A-5589-F964-2004-15CB05CBEE6D",
          "orderNum": 2,
          "owner": null,
          "pkLayout": "C08F5364-F23D-9602-2165-2487E3DD9E0C",
          "revisionOid": null,
          "revisionRule": null,
          "revisionSeq": 0,
          "revisionValue": null,
          "secretGrade": null,
          "secretGradeText": null,
          "tableDefineVO": null,
          "treeDefineVO": null,
          "treeTableDefineVO": null,
          "ts": null,
          "uiComponentType": "customer",
          "uiComponentTypeText": "自定义模板",
          "uiParseClass": "",
          "versionRule": null,
          "versionSeq": 0,
          "versionValue": null
        }
      ],
      "copyFromVersion": null,
      "createTime": "2022-02-08 10:40:50.000",