From 55fdd88d12e656fae07f54e53af60fcf3bb19c8a Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 26 三月 2024 17:12:09 +0800
Subject: [PATCH] 动态按钮封装方法-表格树添加默认新增子级按钮

---
 Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue |   86 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 83 insertions(+), 3 deletions(-)

diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
index 804a731..65f7a43 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
@@ -1,8 +1,19 @@
 <template>
-  <div></div>
+  <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid">
+    <div v-if="isError" style="color: #F56C6C">杩欎釜鑷畾涔夐〉闈㈢殑鍦板潃鏍煎紡涓嶆纭�傛帹鑽愪娇鐢║I:type#content?param=xxx杩欑褰㈠紡</div>
+    <component v-else :is="currentComponent"
+               :customOptions="customOptions"
+               :inDialog="inDialog"
+               :key="areasName+'customCom-'+componentVO.oid"
+               :componentVO="componentVO"
+               :sourceData="sourceData"
+               :areasName="areasName"
+               :paramVOS="paramVOS"></component>
+  </div>
 </template>
 
 <script>
+
 export default {
   name: "dynamic-custom",
   props:{
@@ -26,10 +37,79 @@
     paramVOS:{
       type:Object,
       default: {}
-    }
+    },
+    isShow: {
+      //鎵�鍦ㄥ尯鍩熸槸鍚﹀凡鏄剧ず锛岄拡瀵箃ab鍜宑ollapse
+      type: Boolean,
+      default: true
+    },
+  },
+  components:{
+    'my-dynamic-component': ()=>import('@/views/base/UIContentViewerInDialog')
   },
   data() {
-    return {}
+    return {
+      customClass:this.componentVO.customClass, //UI:type#content?param=xxx鎴栬�� 缁勪欢name:type#content?param=xxx
+      isError:false, //璺緞瑙f瀽澶辫触
+      currentComponent: 'my-dynamic-component',
+      componentPath:'@/views/base/UIContentViewerInDialog' //鑷畾涔変娇鐢ㄧ殑缁勪欢璺緞
+    }
+  },
+  computed:{
+    customOptions() {
+      let componentPath='@/views/base/UIContentViewerInDialog';
+      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() {
+    // debugger;
+    // this.components["my-dynamic-component"] = import(this.componentPath);
   }
 }
 </script>

--
Gitblit v1.9.3