From 7d6fdd87d9cbb948baeacdadf547b19bd26eb232 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期日, 31 三月 2024 23:35:50 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue | 97 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 93 insertions(+), 4 deletions(-) diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue index ea61245..a1188ad 100644 --- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue +++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue @@ -1,12 +1,27 @@ <template> <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid"> - + <div v-if="isError" style="color: #F56C6C">杩欎釜鑷畾涔夐〉闈㈢殑鍦板潃鏍煎紡涓嶆纭�傛帹鑽愪娇鐢╞s=?type=xxx&context=yyy&pparam=zzz杩欑褰㈠紡</div> + <component v-else :is="currentComponent" + :btmType="customOptions.btmType" + :content="customOptions.content" + :inDialog="true" + :key="areasName+'customCom-'+componentVO.oid" + :componentVO="componentVO" + :sourceData="sourceData" + :dataStore="dataStore" + :areasName="areasName" + :paramVOS="customOptions.paramVOS"></component> </div> </template> <script> export default { name: "dynamic-custom", + components:{ + 'UI':()=>import('@/views/base/UIContentViewerInDialog'), + 'test':()=>import('@/views/custom-ui/test'), + 'test2':()=>import('@/views/custom-ui/test2'), + }, props:{ componentVO:{ type:Object, @@ -21,17 +36,91 @@ default:'' }, sourceData:{ - //鑿滃崟婧愭暟鎹垨鑰呭脊绐楁椂鎸夐挳鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁 + //鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁 type:Object, default: {} + }, + dataStore:{ + //寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁 + type:Array, + default: [] }, paramVOS:{ type:Object, default: {} - } + }, + isShow: { + //鎵�鍦ㄥ尯鍩熸槸鍚﹀凡鏄剧ず锛岄拡瀵箃ab鍜宑ollapse + type: Boolean, + default: true + }, }, data() { - return {} + return { + height:'300px', + customClass:this.componentVO.customClass, //bs=?type=xxx&context=yyy¶m=zzz 鎴栬�� bs=缁勪欢name?type=xxx&context=yyy¶m=zzz + isError:false, //璺緞瑙f瀽澶辫触 + currentComponent: 'UI',//缁勪欢name + } + }, + watch:{ + sourceData:{ + handler(newval) { + //婧愭暟鎹湁鍙樺寲鏃跺彉鏇村綋鍓嶅尯鍩熸暟鎹� + console.log(this.areasName); + console.log(newval); + } + } + }, + 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() { + //this.getHeight(this.$parent); + }, + methods:{ + getHeight(el){ + if(el.$el.clientHeight>50){ + this.height=el.$el.clientHeight+'px'; + }else { + this.getHeight(el.$parent); + } + } } } </script> -- Gitblit v1.9.3