From 59765cab961847dfd101e69ae6d8d1d501a5284c Mon Sep 17 00:00:00 2001
From: yuxc <yuxc@vci-tech.com>
Date: 星期二, 04 六月 2024 11:10:28 +0800
Subject: [PATCH] 1、ice配置文件上传
---
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue | 166 ++++++++++++++++++++++++++++++++-----------------------
1 files changed, 97 insertions(+), 69 deletions(-)
diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
index e2e0d21..360191b 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
@@ -1,52 +1,70 @@
<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>
+ <el-alert
+ class="alert"
+ :closable="false"
+ v-if="isError"
+ title="鑷畾涔夌粍浠堕厤缃俊鎭敊璇紒"
+ type="error"
+ show-icon
+ description="杩欎釜鑷畾涔夐〉闈㈢殑鍦板潃鏍煎紡涓嶆纭�傛帹鑽愪娇鐢ㄢ�滅粍浠秐ame?param=xxx鈥濓紙鑷畾涔夌粍浠讹級鎴栬�呪��?type=xxx&context=yyy&pparam=zzz鈥濓紙UI寮曟搸锛夎繖2绉嶅舰寮�">
+ </el-alert>
<component v-else :is="currentComponent"
- :btmType="customOptions.btmType"
- :content="customOptions.content"
+ :btmType="btmType"
+ :context="context"
:inDialog="true"
:key="areasName+'customCom-'+componentVO.oid"
:componentVO="componentVO"
:sourceData="sourceData"
:dataStore="dataStore"
:areasName="areasName"
- :paramVOS="customOptions.paramVOS"></component>
+ :paramVOS="urlParams"></component>
</div>
</template>
<script>
+import {queryStringToObject} from '@/util/util'
+import {validatenull} from "@/util/validate";
export default {
name: "dynamic-custom",
- components:{
- 'UI':()=>import('@/views/base/UIContentViewerInDialog'),
- 'test':()=>import('@/components/custom-ui/test'),
- 'test2':()=>import('@/components/custom-ui/test2'),
- },
- props:{
- componentVO:{
- type:Object,
+ props: {
+ //ui涓婁笅鏂囩殑涓氬姟绫诲瀷锛堟垨閾炬帴绫诲瀷锛�
+ uiBtmType: {
+ type: String
+ },
+ //ui涓婁笅鏂�
+ uiContext:{
+ type: String
+ },
+ componentVO: {
+ type: Object,
default: {}
},
inDialog: {
type: Boolean,
default: false
},
- areasName:{
- type:String,
- default:''
+ canEdit:{
+ //鍐呭鏄惁鍙紪杈�
+ type:Boolean,
+ default:false
},
- sourceData:{
+ areasName: {
+ type: String,
+ default: ''
+ },
+ sourceData: {
//鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁
- type:Object,
+ type: Object,
default: {}
},
- dataStore:{
+ dataStore: {
//寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁
- type:Array,
+ type: Array,
default: []
},
- paramVOS:{
- type:Object,
+ paramVOS: {
+ type: Object,
default: {}
},
isShow: {
@@ -57,67 +75,77 @@
},
data() {
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
+ btmType: '',
+ context: '',
+ urlParams: {},
+ height: '300px',
+ customClass: '', //?type=xxx&context=yyy¶m=zzz 鎴栬�� 缁勪欢name?type=xxx&context=yyy¶m=zzz
+ isError: false, //璺緞瑙f瀽澶辫触
+ ComponentUrl:'base/UIContentViewerInDialog',
+ currentComponent: null
}
},
- watch:{
- sourceData:{
+ watch: {
+ sourceData: {
handler(newval) {
//婧愭暟鎹湁鍙樺寲鏃跺彉鏇村綋鍓嶅尯鍩熸暟鎹�
console.log(this.areasName);
console.log(newval);
- }
+ },
+ deep: true,
+ immediate: true
}
},
- 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)
- }
- }
- },
+ 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() {
//this.getHeight(this.$parent);
},
- methods:{
- getHeight(el){
- if(el.$el.clientHeight>50){
- this.height=el.$el.clientHeight+'px';
- }else {
+ 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';
+ } else {
this.getHeight(el.$parent);
}
}
@@ -125,6 +153,6 @@
}
</script>
-<style scoped>
+<style scoped lang="scss">
</style>
--
Gitblit v1.9.3