From a9bbbe822377536e6f3374b05e2b64b12b2f188c Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期一, 27 五月 2024 10:25:43 +0800
Subject: [PATCH] action文档

---
 Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue |   93 +++++++++++++++++++++++++++++++---------------
 1 files changed, 62 insertions(+), 31 deletions(-)

diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
index c15d92f..360191b 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
@@ -2,15 +2,16 @@
   <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid">
     <el-alert
       class="alert"
+      :closable="false"
       v-if="isError"
       title="鑷畾涔夌粍浠堕厤缃俊鎭敊璇紒"
       type="error"
       show-icon
-      description="杩欎釜鑷畾涔夐〉闈㈢殑鍦板潃鏍煎紡涓嶆纭�傛帹鑽愪娇鐢╞s=缁勪欢name?type=xxx&context=yyy&pparam=zzz杩欑褰㈠紡">
+      description="杩欎釜鑷畾涔夐〉闈㈢殑鍦板潃鏍煎紡涓嶆纭�傛帹鑽愪娇鐢ㄢ�滅粍浠秐ame?param=xxx鈥濓紙鑷畾涔夌粍浠讹級鎴栬�呪��?type=xxx&context=yyy&pparam=zzz鈥濓紙UI寮曟搸锛夎繖2绉嶅舰寮�">
     </el-alert>
     <component v-else :is="currentComponent"
                :btmType="btmType"
-               :content="content"
+               :context="context"
                :inDialog="true"
                :key="areasName+'customCom-'+componentVO.oid"
                :componentVO="componentVO"
@@ -23,14 +24,18 @@
 
 <script>
 import {queryStringToObject} from '@/util/util'
+import {validatenull} from "@/util/validate";
 export default {
   name: "dynamic-custom",
-  components: {
-    'UI': () => import('@/views/base/UIContentViewerInDialog'),
-    'test': () => import('@/views/custom-ui/test'),
-    'test2': () => import('@/views/custom-ui/test2'),
-  },
   props: {
+    //ui涓婁笅鏂囩殑涓氬姟绫诲瀷锛堟垨閾炬帴绫诲瀷锛�
+    uiBtmType: {
+      type: String
+    },
+    //ui涓婁笅鏂�
+    uiContext:{
+      type: String
+    },
     componentVO: {
       type: Object,
       default: {}
@@ -38,6 +43,11 @@
     inDialog: {
       type: Boolean,
       default: false
+    },
+    canEdit:{
+      //鍐呭鏄惁鍙紪杈�
+      type:Boolean,
+      default:false
     },
     areasName: {
       type: String,
@@ -66,12 +76,13 @@
   data() {
     return {
       btmType: '',
-      content: '',
+      context: '',
       urlParams: {},
       height: '300px',
-      customClass: this.componentVO.customClass, //bs=?type=xxx&context=yyy&param=zzz  鎴栬�� bs=缁勪欢name?type=xxx&context=yyy&param=zzz
+      customClass: '', //?type=xxx&context=yyy&param=zzz  鎴栬�� 缁勪欢name?type=xxx&context=yyy&param=zzz
       isError: false, //璺緞瑙f瀽澶辫触
-      currentComponent: 'UI',//缁勪欢name
+      ComponentUrl:'base/UIContentViewerInDialog',
+      currentComponent: null
     }
   },
   watch: {
@@ -80,37 +91,57 @@
         //婧愭暟鎹湁鍙樺寲鏃跺彉鏇村綋鍓嶅尯鍩熸暟鎹�
         console.log(this.areasName);
         console.log(newval);
-      }
+      },
+      deep: true,
+      immediate: true
     }
   },
   computed: {},
   created() {
+    this.customClass=this.componentVO.customClass;
+    this.componentVO.customClass.split(';').forEach(item=>{
+      if(item.indexOf('web=')==0){
+        this.customClass=item.split('web=')[1];
+      }
+    })
+    let urlParams = {};
+    // 濡傛灉璺緞涓瓨鍦� '?'锛屽垯鍙栭棶鍙峰墠闈㈤儴鍒嗙粰 parts
+    if (this.customClass.includes('?')) {
+      this.ComponentUrl = this.customClass.split("?")[0];
+      urlParams = queryStringToObject(this.customClass);
+    } else {
+      this.ComponentUrl = this.customClass; // 涓嶅瓨鍦� '?' 鏁存潯璺緞灏辨槸 parts
+    }
+    if(validatenull(this.ComponentUrl) || ['ui', 'UI', 'base','bs'].includes(this.ComponentUrl)){
+      this.ComponentUrl='views/base/UIContentViewerInDialog';
+    }else if(this.ComponentUrl.indexOf('views/')===-1){
+      this.ComponentUrl='views/custom-ui/'+this.ComponentUrl;
+    }
 
+    if (this.ComponentUrl=='base/UIContentViewerInDialog' && (!urlParams.type || !urlParams.context)) {
+      this.isError = true;
+      return;
+    }
+
+    this.btmType = urlParams.type;
+    this.context = urlParams.context;
+    this.urlParams = Object.assign({},this.paramVOS, urlParams)
+    this.loadCompoent();
   },
   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];
-    }
-    let urlParams = queryStringToObject(this.customClass);
-    let btmType = urlParams.type;
-    let content = urlParams.context;
-
-    this.btmType = btmType;
-    this.content = content;
-    this.urlParams = Object.assign(this.paramVOS, urlParams)
-
     //this.getHeight(this.$parent);
   },
   methods: {
+    loadCompoent(){
+      // 鍔ㄦ�佸鍏ョ粍浠�
+      import(`@/${this.ComponentUrl}.vue`).then((module) => {
+        // 鎴愬姛瀵煎叆鍚庯紝灏嗙粍浠舵敞鍐屽埌Vue瀹炰緥涓�
+        this.currentComponent = module.default;
+      }).catch((error) => {
+        // 澶勭悊瀵煎叆澶辫触鐨勬儏鍐�
+        console.error('缁勪欢鍔犺浇澶辫触:', error);
+      });
+    },
     getHeight(el) {
       if (el.$el.clientHeight > 50) {
         this.height = el.$el.clientHeight + 'px';

--
Gitblit v1.9.3