1919 </div >
2020 <div class =" model-wrap" >
2121 <div class =" model-groups" >
22- <model-select @model-select =" getModel" :data = " modelDetail " : isShow =" isShow" ></model-select >
22+ <model-select @model-select =" getModel" :isShow =" isShow" ></model-select >
2323 </div >
2424 <div class =" model-parameters" >
25+ <div v-if =" selectedModel?.name" class =" bind-model-info" >
26+ <span class =" bind-info-title"
27+ >当前选中的模型:
28+ <span class =" bind-info-name" >{{ selectedModel?.name }} | {{ selectedModel?.nameEn }}</span >
29+ </span >
30+ </div >
2531 <tiny-grid :data =" selectedModel?.parameters || []" min-height =" 296" max-height =" 560" >
2632 <tiny-grid-column field =" prop" title =" 字段名" show-overflow > </tiny-grid-column >
2733 <tiny-grid-column field =" label" title =" 标签名" show-overflow ></tiny-grid-column >
3844 >已绑定:
3945 <span class =" bind-info-name" >{{ modelDetail?.name }} | {{ modelDetail?.nameEn }}</span >
4046 </span >
41- <svg-icon name =" delete" ></svg-icon >
47+ <svg-icon name =" delete" @click = " unbindModel " ></svg-icon >
4248 </div >
4349 </template >
4450 </tiny-popover >
@@ -186,6 +192,7 @@ import { iconUpWard, iconDownWard, iconClose, iconEdit } from '@opentiny/vue-ico
186192import { defineEmits , defineProps , ref , reactive , nextTick , computed , watch , onMounted } from ' vue'
187193import { VueDraggableNext } from ' vue-draggable-next'
188194import { ButtonGroup } from ' @opentiny/tiny-engine-common'
195+ import { useCanvas , useModal } from ' @opentiny/tiny-engine-meta-register'
189196import MetaListItem from ' ./MetaListItem.vue'
190197import ModelSelect from ' ../model-common/ModelSelect.vue'
191198import MetaChildItem from ' ../operator-group-configurator/MetaChildItem.vue'
@@ -222,7 +229,7 @@ const isShow = ref(false)
222229const searchUnused = ref (' ' )
223230const searchValue = ref (' ' )
224231
225- const selectedModel = ref ()
232+ const selectedModel = ref (null )
226233const originModelData = ref ()
227234
228235const getModel = (data ) => {
@@ -283,10 +290,12 @@ const state = reactive({
283290})
284291
285292const openPopover = () => {
293+ selectedModel .value = modelDetail .value
286294 isShow .value = true
287295}
288296
289297const closePopover = () => {
298+ selectedModel .value = null
290299 isShow .value = false
291300}
292301
@@ -304,6 +313,26 @@ const setModel = async () => {
304313 closePopover ()
305314}
306315
316+ // 解除模型绑定
317+ const unbindModel = () => {
318+ useModal ().confirm ({
319+ title: ' 提示' ,
320+ message: ' 移除绑定将清除所有绑定的模型信息,是否继续?' ,
321+ exec : () => {
322+ const currentSchema = useCanvas ().getCurrentSchema ()
323+ const { clearSelect } = useCanvas ().canvasApi .value
324+ delete currentSchema .props .serviceModel
325+ delete currentSchema .props .modelApis
326+ useCanvas ().operateNode ({
327+ type: ' updateAttributes' ,
328+ id: currentSchema .id ,
329+ value: { props: currentSchema .props }
330+ })
331+ clearSelect ()
332+ }
333+ })
334+ }
335+
307336const editItem = (data ) => {
308337 state .currentIndex = data .index
309338}
@@ -401,21 +430,6 @@ onMounted(() => {
401430 }
402431 .model-name-warp {
403432 border : 1px solid var (--ti-lowcode-component-input-border-color );
404-
405- .bind-model-info {
406- display : flex ;
407- justify-content : space-between ;
408- align-items : center ;
409- gap : 8px ;
410- line-height : 28px ;
411-
412- .bind-info-title {
413- color : var (--te-common-text-secondary );
414- .bind-info-name {
415- font-weight : 600 ;
416- }
417- }
418- }
419433 }
420434 .meta-model-title {
421435 color : #808080 ;
@@ -496,6 +510,21 @@ onMounted(() => {
496510 }
497511 }
498512}
513+
514+ .bind-model-info {
515+ display : flex ;
516+ justify-content : space-between ;
517+ align-items : center ;
518+ gap : 8px ;
519+ line-height : 28px ;
520+
521+ .bind-info-title {
522+ color : var (--te-common-text-secondary );
523+ .bind-info-name {
524+ font-weight : 600 ;
525+ }
526+ }
527+ }
499528.model-title {
500529 display : flex ;
501530 justify-content : space-between ;
@@ -531,6 +560,10 @@ onMounted(() => {
531560 .model-parameters {
532561 width : 280px ;
533562 padding : 12px ;
563+
564+ .tiny-grid {
565+ margin-top : 8px ;
566+ }
534567 }
535568}
536569 </style >
0 commit comments