@gct-paas/render-web 0.1.4-dev.8 → 0.1.5-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/index.min.css +2 -0
  2. package/dist/loader.esm.min.js +1 -0
  3. package/es/Event/Events.d.ts +21 -0
  4. package/es/Event/Events.mjs +12 -0
  5. package/es/_virtual/_plugin-vue_export-helper.mjs +8 -0
  6. package/es/components/card-view-render/card-view-render.css +71 -0
  7. package/es/components/card-view-render/card-view-render.d.ts +38 -0
  8. package/es/components/card-view-render/card-view-render.mjs +85 -0
  9. package/es/components/design-render/design-render.css +71 -0
  10. package/es/components/design-render/design-render.d.ts +52 -0
  11. package/es/components/design-render/design-render.mjs +126 -0
  12. package/es/components/design-render-item/design-render-item.d.ts +16 -0
  13. package/es/components/design-render-item/design-render-item.mjs +24 -0
  14. package/es/components/form-component/FieldCheckbox.d.ts +43 -0
  15. package/es/components/form-component/FieldCheckbox.mjs +74 -0
  16. package/es/components/form-component/FieldRadio.d.ts +37 -0
  17. package/es/components/form-component/FieldRadio.mjs +64 -0
  18. package/es/components/form-component/FieldSelect.d.ts +82 -0
  19. package/es/components/form-component/FieldSelect.mjs +177 -0
  20. package/es/components/form-component/field-empty-value.d.ts +6 -0
  21. package/es/components/form-component/field-empty-value.mjs +17 -0
  22. package/es/components/form-component/field-label/ref-card-label-render.vue.d.ts +23 -0
  23. package/es/components/form-component/field-label/ref-card-label-render.vue.mjs +6 -0
  24. package/es/components/form-component/field-label/ref-card-label-render.vue_vue_type_script_setup_true_lang.mjs +140 -0
  25. package/es/components/form-component/field-label/ref-card-label-render.vue_vue_type_style_index_0_lang.css +10 -0
  26. package/es/components/form-component/field-label/selectTag.vue.d.ts +5 -0
  27. package/es/components/form-component/field-label/selectTag.vue.mjs +5 -0
  28. package/es/components/form-component/field-label/selectTag.vue_vue_type_script_setup_true_lang.mjs +22 -0
  29. package/es/components/form-component/field-label/tag-label.vue.d.ts +31 -0
  30. package/es/components/form-component/field-label/tag-label.vue.mjs +7 -0
  31. package/es/components/form-component/field-label/tag-label.vue_vue_type_script_setup_true_name_TagLabel_lang.mjs +139 -0
  32. package/es/components/form-component/field-label/tag-label.vue_vue_type_style_index_0_scoped_8b3c7ae1_lang.css +15 -0
  33. package/es/components/form-component/field-label/tag-layout.vue.d.ts +21 -0
  34. package/es/components/form-component/field-label/tag-layout.vue.mjs +7 -0
  35. package/es/components/form-component/field-label/tag-layout.vue_vue_type_script_setup_true_lang.mjs +16 -0
  36. package/es/components/form-component/field-label/tag-layout.vue_vue_type_style_index_0_scoped_85e6a8f5_lang.css +12 -0
  37. package/es/components/form-component/field-label/tag-span.vue.d.ts +21 -0
  38. package/es/components/form-component/field-label/tag-span.vue.mjs +7 -0
  39. package/es/components/form-component/field-label/tag-span.vue_vue_type_script_setup_true_lang.mjs +25 -0
  40. package/es/components/form-component/field-label/tag-span.vue_vue_type_style_index_0_scoped_6c8c4c7a_lang.css +31 -0
  41. package/es/components/form-component/field-readonly.vue.d.ts +21 -0
  42. package/es/components/form-component/field-readonly.vue.mjs +5 -0
  43. package/es/components/form-component/field-readonly.vue_vue_type_script_setup_true_lang.mjs +92 -0
  44. package/es/components/form-component/index.css +40 -0
  45. package/es/components/form-component/index.d.ts +10 -0
  46. package/es/components/form-component/index.mjs +9 -0
  47. package/es/components/index.d.ts +3 -0
  48. package/es/components/index.mjs +11 -0
  49. package/es/hooks/index.d.ts +1 -0
  50. package/es/hooks/index.mjs +1 -0
  51. package/es/hooks/refCardList.d.ts +23 -0
  52. package/es/hooks/refCardList.mjs +56 -0
  53. package/es/index.d.ts +3 -0
  54. package/es/index.mjs +18 -3
  55. package/es/loader.d.ts +1 -0
  56. package/package.json +22 -13
  57. package/dist/index.esm.min.mjs +0 -6
  58. package/dist/index.min.cjs +0 -1
  59. package/dist/index.system.min.js +0 -1
@@ -0,0 +1,2 @@
1
+ .gct-design-render{background-color:#f7f8fa;width:100%;height:100%;position:relative;overflow:hidden auto}.tag[data-v-6c8c4c7a]{padding:4px 6px;line-height:1}.tag+.tag[data-v-6c8c4c7a]{margin-left:5px}.tag-radius[data-v-6c8c4c7a]{background:var(--v2ae1b805);border-radius:4px}.tag-linear_radius[data-v-6c8c4c7a]{border:1px solid var(--v2ae1b805);border-radius:4px}.tag-big_radius[data-v-6c8c4c7a]{background:var(--v2ae1b805);border-radius:100px}.tag-linear_big_radius[data-v-6c8c4c7a]{border:1px solid var(--v2ae1b805);border-radius:100px}.tag-dashed_radius[data-v-6c8c4c7a]{border:1px dashed var(--v2ae1b805);border-radius:4px}.tag-status[data-v-6c8c4c7a]{background:var(--v2ae1b805);border-radius:14px 4px 4px}.tag-label-disabled[data-v-85e6a8f5]{opacity:.5}.label-ellipsis[data-v-85e6a8f5]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-wrap[data-v-85e6a8f5]{word-break:break-all;white-space:wrap}.tag-label-disabled[data-v-8b3c7ae1]{opacity:.5}.label-ellipsis[data-v-8b3c7ae1]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-wrap[data-v-8b3c7ae1]{word-break:break-all;white-space:wrap}.select-text[data-v-8b3c7ae1]{min-width:16px}.gct-card-view-render{position:relative}.gct-card-view-render .gct-design-render{width:auto;height:auto}.gct-ref-card-popover{overflow-y:auto;box-shadow:0 2px 6px #0000001a}.gct-ref-card-popover .ant-popover-inner-content{padding:0}.gct-ref-card-popover .ant-popover-arrow{display:none}.field-radio-group .ant-radio-wrapper.ant-radio-wrapper-disabled .ant-radio-checked.ant-radio-disabled .ant-radio-inner{background-color:#fff;border:1px solid var(--ant-primary-3)!important}.field-radio-group .ant-radio-wrapper.ant-radio-wrapper-disabled .ant-radio-checked.ant-radio-disabled .ant-radio-inner:after{background:var(--ant-primary-3)}.field-radio-group--readonly .ant-radio-wrapper{pointer-events:none}.field-radio-group--readonly .ant-radio-wrapper .ant-radio-checked .ant-radio-inner{background-color:#fff;border:1px solid var(--ant-primary-4)!important}.field-radio-group--readonly .ant-radio-wrapper .ant-radio-checked .ant-radio-inner:after{background:var(--ant-primary-4)}.field-checkbox-group .ant-checkbox-wrapper.ant-checkbox-wrapper-disabled .ant-checkbox-checked.ant-checkbox-disabled .ant-checkbox-inner{background-color:var(--ant-primary-3);border:1px solid var(--ant-primary-3)!important}.field-checkbox-group .ant-checkbox-wrapper.ant-checkbox-wrapper-disabled .ant-checkbox-checked.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:#fff}.field-checkbox-group .ant-checkbox-wrapper.ant-checkbox-wrapper-disabled .ant-checkbox-checked.ant-checkbox-disabled:after{border:1px solid var(--ant-primary-3)!important}.field-checkbox-group--readonly .ant-checkbox-wrapper{pointer-events:none}.field-checkbox-group--readonly .ant-checkbox-wrapper .ant-checkbox-checked .ant-checkbox-inner{background-color:var(--ant-primary-4);border:1px solid var(--ant-primary-4)!important}.field-checkbox-group--readonly .ant-checkbox-wrapper .ant-checkbox-checked .ant-checkbox-inner:after{border-color:#fff}.field-checkbox-group--readonly .ant-checkbox-wrapper .ant-checkbox-checked:after{border:1px solid var(--ant-primary-4)!important}
2
+ /*$vite$:1*/
@@ -0,0 +1 @@
1
+ import{CARD_TRIGGER_ENUM as e,EntityModelCategoryEnum as l,FIELD_TYPE as t,FormComponents as a,TagTypeEnum as o,calcStyle as r,cssLoader as n,gctMemoizeAsync as i,useNamespace as d}from"@gct-paas/core";import{DesignRenderViewPrefix as s,RenderNodeRegister as u,schemaToStyle as p,transformDataToDict as c,useDesignRenderController as v}from"@gct-paas/render";import{Fragment as y,computed as g,createBlock as m,createCommentVNode as b,createElementBlock as f,createElementVNode as x,createTextVNode as h,createVNode as C,defineComponent as S,h as w,inject as _,isVNode as E,mergeProps as T,nextTick as N,normalizeClass as k,normalizeStyle as O,openBlock as P,provide as B,reactive as L,ref as I,renderList as R,renderSlot as W,resolveComponent as M,toDisplayString as A,toRef as F,unref as K,useCssVars as V,watch as D,withCtx as j,withModifiers as q}from"vue";import{DesignNodeMode as U}from"@gct-paas/schema";import{IconNext as $,transformUrl as z}from"@gct-paas/core-web";import{Avatar as G,Checkbox as H,CheckboxGroup as J,Radio as Y,RadioGroup as Q,Select as X}from"ant-design-vue";import{isString as Z,pick as ee}from"lodash-es";var le=Symbol("PAGE_EVENT"),te=e=>B(le,e),ae=()=>{const e=_(le);if(!e)throw new Error("PAGE_EVENT not provided");return e},oe=/* @__PURE__ */S({name:"DesignRenderItem",props:{model:{type:Object,required:!0}},setup:e=>({ns:d("design-render-item"),style:r(e.model.data)}),render(){var e,l;return C("div",{class:this.ns.b(),style:this.style},[null===(e=(l=this.$slots).default)||void 0===e?void 0:e.call(l)])}}),re=/* @__PURE__ */S({name:"DesignRender",props:{model:{type:Object,required:!0},prefix:{type:String,default:""},preview:{type:Boolean,default:!1},context:{type:Object,default:()=>({})}},setup(e){const l=d("design-render"),t=v();t.prefix=e.prefix,t.preview=e.preview,t.setNodes(e.model.nodes),t.setTree(e.model.tree),D(()=>e.context,()=>{t.state.context=e.context},{immediate:!0});const a=g(()=>e.model.pageNode?r(e.model.pageNode.data):{}),o=t.getNodes();return{ns:l,c:t,style:a,rootNodes:o,renderNode:function l(a,o){const r=u.get(a.type,t.prefix);if(!r)return console.warn(`未找到节点类型为${a.type}的渲染器`),null;let n=null;return n=r.mode===U.CONTAINER?function(a,o){const r=u.get(a.type,t.prefix),n=t.getNodes(a.id),i=t.getController(a.id);return w(M(r.component),{key:a.id,c:i,model:a,parent:o,preview:e.preview,context:t.state.context,pageModel:e.model.pageNode},n.map(e=>l(e,a)))}(a,o):r.mode===U.ITEM?function(l,a){const o=u.get(l.type,t.prefix),r=t.getController(l.id);return w(M(o.component),{key:l.id,c:r,model:l,parent:a,preview:e.preview,context:t.state.context,pageModel:e.model.pageNode})}(a,o):C("div",null,[h("未支持的适配器模式["),r.mode,h("]")]),C(oe,{model:a},{default:()=>n})},renderPageNode:function(l){if(!e.model.pageNode)return l;const a=u.get(e.model.pageNode.type,t.prefix);if(!a)return console.warn(`未找到页面节点类型为${e.model.pageNode.type}的渲染器`),l;const o=t.getController(e.model.pageNode.id);return w(M(a.component),{key:e.model.pageNode.id,c:o,model:e.model.pageNode,parent:void 0,preview:e.preview,context:t.state.context},l)}}},render(){return C("div",{class:this.ns.b(),style:this.style},[this.renderPageNode(this.rootNodes.map(e=>this.renderNode(e)))])}}),ne=(e,l)=>{const t=e.__vccOpts||e;for(const[a,o]of l)t[a]=o;return t},ie=/* @__PURE__ */ne(/* @__PURE__ */S({__name:"tag-span",props:{tagStyle:{}},setup(e){V(e=>({v2ae1b805:a.value}));const l=e,t=F(()=>{var e;return(null===(e=l.tagStyle)||void 0===e?void 0:e.tagType)||o.RADIUS}),a=F(()=>{var e;return(null===(e=l.tagStyle)||void 0===e?void 0:e.color)||"#f0f0f0"}),r=F(()=>`tag-${t.value}`);return(e,l)=>(P(),f("span",{class:k(["tag cursor-pointer",r.value])},[W(e.$slots,"default",{},void 0,!0)],2))}}),[["__scopeId","data-v-6c8c4c7a"]]),de=/* @__PURE__ */ne(/* @__PURE__ */S({__name:"tag-layout",props:{labelLayout:{},disabled:{type:Boolean}},setup:e=>(l,t)=>{var a,o,r,n;return P(),f("span",{class:k([e.disabled?"tag-label-disabled":null,!(null===(a=e.labelLayout)||void 0===a?void 0:a.hasLabelWidth)||"left"!==(null===(o=e.labelLayout)||void 0===o?void 0:o.layout.label)&&"horizontal"!=(null===(r=e.labelLayout)||void 0===r?void 0:r.layout)?"":"ellipsis"==(null===(n=e.labelLayout)||void 0===n?void 0:n.overLabelDisplay)?"label-ellipsis":"label-wrap"])},[W(l.$slots,"default",{},void 0,!0)],2)}}),[["__scopeId","data-v-85e6a8f5"]]),se={class:"select-text"},ue={class:"select-text"},pe={key:0},ce=/* @__PURE__ */ne(/* @__PURE__ */S({__name:"tag-label",props:{tagWidgetStyle:{},type:{},disabled:{type:Boolean},label:{},isDesign:{type:Boolean},closable:{type:Boolean},showTagStyle:{type:Boolean,default:!0},avatar:{},iconExtraProps:{},iconProps:{}},emits:["on-close"],setup(e){const l=e,a=_gct.platformStore.themeSetting,o=_("labelLayout",{}),r=F(()=>{var e;let a=l.label??"";return l.showTagStyle&&(null===(e=l.tagWidgetStyle)||void 0===e?void 0:e.tagStyleOpen)||l.type===t.ENUM_MULTI||l.type===t.ENUM?a?Z(a)?a.split(","):a:[]:a instanceof Array?a.join(","):a+""}),n=F(()=>{var e;const t=null===(e=l.tagWidgetStyle)||void 0===e?void 0:e.contentFont;return t?p(t):{}}),i=(e="")=>{var t,a;const o=(null===(t=l.iconExtraProps)||void 0===t?void 0:t[e])||{},r={};return(null==o?void 0:o.textColor)&&Object.assign(r,{color:null==o?void 0:o.textColor}),(null===(a=n.value)||void 0===a?void 0:a.color)?n.value:{wordBreak:"break-all",...n.value,...r}},d={render:({$attrs:e})=>{if(e.labelName){var t;const o=(null===(t=l.iconExtraProps)||void 0===t?void 0:t[e.labelName])||l.iconProps||{};if(!(null==o?void 0:o.icon))return;return w($,{size:16,value:null==o?void 0:o.icon,color:(null==o?void 0:o.iconColor)||a.themeColor,style:"vertical-align: text-bottom; margin-right: 3px"})}}};return(a,n)=>{var s;return e.showTagStyle&&(null===(s=e.tagWidgetStyle)||void 0===s?void 0:s.tagStyleOpen)?(P(),m(de,{key:0,disabled:!!e.disabled,"label-layout":K(o)},{default:j(()=>[(P(!0),f(y,null,R(r.value,(t,o)=>(P(),m(ie,{key:o,"tag-style":e.tagWidgetStyle.tagStyle,style:O(i(t))},{default:j(()=>[l.avatar?(P(),m(K(G),{key:0,src:K(z)(l.avatar),size:20,style:{"margin-top":"-5px"},class:"mr4px"},null,8,["src"])):b("",!0),C(d,{"label-name":t},null,8,["label-name"]),x("span",se,A(t),1),e.closable?(P(),m(K($),{key:1,size:15,value:"icon-park:close-small",style:{verticalAlign:"text-bottom","--color":"rgba(0,0,0,.45)",lineHeight:"1",marginLeft:"2px"},onClick:n[0]||(n[0]=q(e=>a.$emit("on-close"),["prevent","stop"]))})):b("",!0)]),_:2},1032,["tag-style","style"]))),128))]),_:1},8,["disabled","label-layout"])):e.type===K(t).ENUM_MULTI||e.type===K(t).ENUM?(P(),m(de,{key:1,disabled:!!e.disabled,"label-layout":K(o)},{default:j(()=>[(P(!0),f(y,null,R(r.value,(l,t)=>{var a;return P(),f("span",{key:t,style:O(i(l)),class:"mr-5px"},[C(d,{"label-name":l},null,8,["label-name"]),x("span",ue,A(l)+A(!(null===(a=e.tagWidgetStyle)||void 0===a?void 0:a.tagStyleOpen)&&t<r.value.length-1?",":""),1)],4)}),128)),r.value.length?b("",!0):(P(),f("span",pe," "))]),_:1},8,["disabled","label-layout"])):(P(),m(de,{key:2,style:O(i(r.value)),disabled:!!e.disabled,"label-layout":K(o),class:"select-text leading-none ell"},{default:j(()=>[h(A(r.value||" "),1)]),_:1},8,["style","disabled","label-layout"]))}}}),[["__scopeId","data-v-8b3c7ae1"]]),ve=/* @__PURE__ */S({__name:"selectTag",props:{tagWidgetStyle:{}},setup(e){const l=e,t=F(()=>{return l.tagWidgetStyle.tagStyleOpen?l.tagWidgetStyle:{tagStyleOpen:!0,contentFont:null===(e=l.tagWidgetStyle)||void 0===e?void 0:e.contentFont};var e});return(e,l)=>(P(),m(ce,{"tag-widget-style":t.value},null,8,["tag-widget-style"]))}}),ye=i(_api.apaas.commonInfoCard.getGetById),ge=/* @__PURE__ */S({name:"CardViewRender",props:{id:{type:String,required:!0},modelKey:{type:String,required:!0},fetch:{type:Function},preview:{type:Boolean,default:!1}},emits:["mounted"],setup(e,{emit:l}){const t=d("card-view-render"),a=I(!1),o=I(!1),r=I(null),n=I({}),i=g(()=>{var e;return r.value?{width:(null===(e=r.value.pageNode)||void 0===e?void 0:e.data.width)?`${r.value.pageNode.data.width}px`:""}:{}});return async function(){if(e.id){try{a.value=!0,await async function(){const l=await ye({id:e.id,modelKey:e.modelKey,type:"CARD"});l&&l.designerJson&&(r.value=JSON.parse(decodeURIComponent(l.designerJson)))}(),!0!==e.preview&&e.fetch&&(n.value=await e.fetch()||{})}catch(t){console.error(t)}finally{a.value=!1}o.value=!0,await N(),setTimeout(()=>{var e;l("mounted",null===(e=r.value)||void 0===e||null===(e=e.pageNode)||void 0===e?void 0:e.data)})}}(),()=>C("div",{class:t.b(),style:i.value},[a.value?C(M("a-spin"),null,null):null,r.value&&o.value?C(re,{context:{data:n.value,id:e.id,modelKey:e.modelKey},model:{nodes:r.value.nodes,pageNode:r.value.pageNode,tree:r.value.tree,type:s.CARD_VIEW},prefix:s.CARD_VIEW,preview:e.preview},null):null])}}),me=["onMouseup"],be={key:1},fe=/* @__PURE__ */S({__name:"ref-card-label-render",props:{tagWidgetStyle:{},disabled:{type:Boolean},values:{},label:{},showTagStyle:{type:Boolean,default:!0},trigger:{},getCardData:{},modelKey:{},refCardId:{}},setup(l){const t=l,a=t.trigger===e.HOVER?"primary-gct-hover":"primary-gct",o=_("labelLayout",{}),r=L({}),n=g(()=>{var e;const l=("string"==typeof t.label?(t.label??"").split(","):t.label)??[];return(null===(e=t.values)||void 0===e?void 0:e.filter((e,t)=>l[t]).map((e,t)=>({value:e,label:l[t]})))??[]}),i=F(()=>{var e;const l=null===(e=t.tagWidgetStyle)||void 0===e?void 0:e.contentFont;return l?p(l):{}}),d=F(()=>{var e;return(null===(e=i.value)||void 0===e?void 0:e.color)?i.value:{wordBreak:"break-all",...i.value}}),s=async(e,l)=>{r[l.value]=e};function u(e){s(!0,e)}function c(e){return t.getCardData.bind(null,e)}return(e,t)=>{const i=M("a-popover");return n.value.length?(P(),m(de,{key:0,disabled:!!l.disabled,"label-layout":K(o)},{default:j(()=>{var e;return[l.showTagStyle&&(null===(e=l.tagWidgetStyle)||void 0===e?void 0:e.tagStyleOpen)?(P(!0),f(y,{key:0},R(n.value,(e,t)=>(P(),m(i,{key:t,trigger:l.trigger,visible:!!r[e.value],placement:"bottomLeft",color:"#fff","overlay-class-name":"gct-ref-card-popover min-w100px min-h30px max-h96vh",onVisibleChange:l=>s(l,e)},{content:j(()=>[C(K(ge),{id:l.refCardId,"model-key":l.modelKey,fetch:c(e.value)},null,8,["id","model-key","fetch"])]),default:j(()=>[C(ie,{"tag-style":l.tagWidgetStyle.tagStyle,onMouseup:l=>u(e)},{default:j(()=>[x("span",{class:k(["select-text cursor-pointer",K(a)]),style:O(d.value)},A(e.label),7)]),_:2},1032,["tag-style","onMouseup"])]),_:2},1032,["trigger","visible","onVisibleChange"]))),128)):(P(!0),f(y,{key:1},R(n.value,(e,o)=>(P(),f(y,{key:o},[x("span",null,A(o?",":""),1),C(i,{"overlay-class-name":"gct-ref-card-popover min-w100px min-h30px max-h96vh",visible:!!r[e.value],trigger:l.trigger,color:"#fff",placement:"bottomLeft",onVisibleChange:l=>s(l,e)},{content:j(()=>[C(K(ge),{id:l.refCardId,"model-key":l.modelKey,fetch:c(e.value)},null,8,["id","model-key","fetch"])]),default:j(()=>[x("span",{class:k(["select-text cursor-pointer",K(a)]),style:O(d.value),onClick:t[0]||(t[0]=q(()=>{},["stop"])),onMouseup:l=>u(e)},A(e.label),47,me)]),_:2},1032,["visible","trigger","onVisibleChange"])],64))),128))]}),_:1},8,["disabled","label-layout"])):(P(),f("span",be," "))}}});function xe(e){const{fieldType:l,refCard:a,refCardId:o,readonly:r}=e.widget.props;(l===t.REF||l===t.REF_MULTI||l===t.RDO_REF)&&a&&o&&r&&B("refCardValues",{refCardValues:F(()=>{const l=e.modelValue??[];return l instanceof Array?l:l.split(",")}),widget:e.widget})}function he(){var e;const l=_("refCardValues");if(!l)return{};const{fieldType:t,bindModelKey:a,refCardId:o,cardTrigger:r}=(null==l||null===(e=l.widget)||void 0===e?void 0:e.props)||{};return{refCardValues:null==l?void 0:l.refCardValues,trigger:r,getCardData:i(Ce,{fieldType:t,modelKey:a}),modelKey:a,refCardId:o}}async function Ce({fieldType:e,modelKey:a},o){if(e===t.RDO_REF){const{data:e={},dict:t={}}=await _api.apaas.modelComprehensive.postBizServiceGeneralModelCategoryModelKeyBsKey({modelKey:a,bsKey:"rdoGetVersionByRefId",modelCategory:l.ENTITY},{foreignFields:[]},{includeDeleted:1,refId:o});return c(e,t)}{const{data:e={},dict:t={}}=await _api.apaas.modelComprehensive.postBizServiceGeneralModelCategoryModelKeyBsKey({modelKey:a,bsKey:"getOne",modelCategory:l.ENTITY},{query:{"id_.eq":o},foreignFields:[]},{includeDeleted:1});return c(e,t)}}var Se={key:0,class:"w100% ell"},we={key:0,class:"gct-custom-tag ml8px"},_e=/* @__PURE__ */S({__name:"field-readonly",props:{isTooltip:{type:Boolean},label:{},type:{},modelValue:{},tagWidgetStyle:{},disabled:{type:Boolean},iconExtraProps:{}},setup(e){const l=e,a=I(!1),o=g(()=>Array.isArray(l.label)?l.label.join(","):l.label),{refCardValues:r,trigger:n,getCardData:i,modelKey:d,refCardId:s}=he(),u=g(()=>{var e;return(null==r||null===(e=r.value)||void 0===e?void 0:e.length)?w(fe,{values:r.value,trigger:n,getCardData:i,modelKey:d,refCardId:s}):ce});function p(e){var t;if(!l.isTooltip)return;const o=null===(t=e.target)||void 0===t?void 0:t.parentNode;o.scrollWidth>o.clientWidth&&(a.value=!0)}function c(){a.value=!1}return(r,n)=>{const i=M("a-tooltip");return P(),m(i,{placement:"topLeft",visible:a.value},{title:j(()=>[h(A(o.value),1)]),default:j(()=>{var a;return[l.type===K(t).RDO_REF?(P(),f("div",Se,[C(K(u),T(r.$attrs,{label:e.label,"tag-widget-style":l.tagWidgetStyle,disabled:l.disabled,"icon-extra-props":l.iconExtraProps,onMouseenter:p,onMouseleave:c}),null,16,["label","tag-widget-style","disabled","icon-extra-props"]),l.type===K(t).RDO_REF&&l.modelValue&&!(null===(a=l.modelValue)||void 0===a?void 0:a.includes(":"))?(P(),f("span",we," 默认 ")):b("",!0)])):(P(),m(K(u),T({key:1},r.$attrs,{label:e.label,"tag-widget-style":l.tagWidgetStyle,disabled:l.disabled,"icon-extra-props":l.iconExtraProps,onMouseenter:p,onMouseleave:c}),null,16,["label","tag-widget-style","disabled","icon-extra-props"]))]}),_:1},8,["visible"])}}}),Ee=/* @__PURE__ */S({name:"FieldSelect",props:{design:Boolean,disabled:Boolean,readonly:Boolean,selectExtraProps:Object,fieldType:{type:String,required:!0},type:{type:String,required:!0},tagStyle:{type:Object,required:!0},options:Array,value:[String,Number,Array],maxTagCount:{type:[Number,String],default:5},maxTagTextLength:{type:Number,default:6},selectOptionLabel:{type:String}},setup(e,{emit:l}){const t=g({get:()=>e.value,set(e){l("update:value",e)}}),o=(l,{name:t,iconExtraProps:a,otherParams:o={}})=>w(l,{tagWidgetStyle:e.tagStyle,type:e.fieldType,label:t,disabled:e.disabled,iconExtraProps:a,...o}),r=g(()=>(e.options??[]).map(l=>{var t;const{iconColor:a,icon:r,textColor:n}=l._item||{};return{...l,[(null===(t=e.selectExtraProps)||void 0===t?void 0:t.optionLabelProp)||"titleLabel"]:o(ce,{name:l.label,iconExtraProps:{[l.label]:{icon:r,iconColor:a,textColor:n}}})}}));function n(e,l){var t;const{_DICT:a={}}=e,o=e[l];return(null===(t=a[l])||void 0===t||null===(t=t[o])||void 0===t?void 0:t.join(","))??o??e.id_}const i=g(()=>{if(e.readonly){var l;const a=(null===(l=r.value)||void 0===l?void 0:l.filter(l=>{var a;if("multiple"===(null===(a=e.selectExtraProps)||void 0===a?void 0:a.mode))return Array.isArray(t.value)&&t.value.includes(l.value)}))??[],o=Object.fromEntries((null==a?void 0:a.map(e=>[e.label,ee((null==e?void 0:e._item)||{},["iconColor","icon","textColor"])]))??[]);return{labels:a.map(e=>e.label),icons:o}}return{}}),d={option:l=>{const{label:t,_item:r={}}=l;return e.type===a.Userpicker?C("div",{class:"flex items-center"},[C(G,{size:30,style:"margin: 0 8px;min-width:32px",src:z(r.avatar)},null),C("div",{style:"width:calc(100% - 35px)"},[C("div",{class:" w100% ell",title:t},[t]),C("div",{class:"text-[#8F8F8F] text-[12px] mt2px"},[r.masterOrgName])])]):o(ce,{name:e.selectOptionLabel?n(r,e.selectOptionLabel):t,iconExtraProps:{[t]:ee(r,["iconColor","icon","textColor"])},otherParams:{showTagStyle:!1}})}},s=l=>{var t;const{label:a,option:o,closable:r,onClose:n}=l,{_item:i={}}=o||{};return(({name:l,title:t,iconExtraProps:a,avatar:o,otherParams:r={}})=>C(ve,T({tagWidgetStyle:e.tagStyle,type:e.fieldType,label:l,avatar:o,title:(null==t?void 0:t.length)>e.maxTagTextLength?t:null,disabled:e.disabled,iconExtraProps:a},r),null))({name:a,title:null==o?void 0:o.label,avatar:null==o||null===(t=o._item)||void 0===t?void 0:t.avatar,iconExtraProps:{[a]:ee(i,["iconColor","icon","textColor"])},otherParams:{closable:r,"onOn-close":n,style:"margin-right: 4px"}})};return()=>{var l,a,n,u;return e.readonly?o(_e,{name:null===(l=i.value)||void 0===l?void 0:l.labels,iconExtraProps:null===(a=i.value)||void 0===a?void 0:a.icons}):C(X,T({class:["field-select","w100%"],value:t.value,"onUpdate:value":e=>t.value=e,options:r.value,disabled:e.disabled,optionLabelProp:"titleLabel",tagRender:s,showArrow:!0,maxTagCount:e.maxTagCount,maxTagTextLength:e.maxTagTextLength,dropdownMatchSelectWidth:180,dropdownClassName:"multiple"===(null===(n=e.selectExtraProps)||void 0===n?void 0:n.mode)?"gct-project-select-dropdown gct-project-select-multiple vxe-table--ignore-clear":"gct-project-select-dropdown vxe-table--ignore-clear"},e.selectExtraProps),(null===(u=e.selectExtraProps)||void 0===u?void 0:u.optionNoStyle)?null:d)}}}),Te=/* @__PURE__ */S({name:"FieldRadio",props:{design:Boolean,disabled:Boolean,readonly:Boolean,fieldType:{type:Object,required:!0},tagStyle:{type:Object,required:!0},options:Array,value:[String,Number]},setup(e,{emit:l}){const t=g({get:()=>e.value,set(e){l("update:value",e)}});return()=>{let l;return C(Q,{value:t.value,"onUpdate:value":e=>t.value=e,disabled:e.disabled,class:["field-radio-group",e.readonly?"field-radio-group--readonly":""]},"function"==typeof(a=l=(e.options??[]).map(l=>{const t=l,{icon:a,iconColor:o,textColor:r}=(null==t?void 0:t._item)||{};return C(Y,{key:t.value,value:t.value},{default:()=>[C(_e,{tagWidgetStyle:e.tagStyle,type:e.fieldType,label:t.label,disabled:e.disabled,iconExtraProps:{[t.label]:{icon:a,iconColor:o,textColor:r}}},null)]})}))||"[object Object]"===Object.prototype.toString.call(a)&&!E(a)?l:{default:()=>[l]});var a}}}),Ne=/* @__PURE__ */S({name:"FieldCheckbox",props:{design:Boolean,disabled:Boolean,readonly:Boolean,fieldType:{type:Object,required:!0},tagStyle:{type:Object,required:!0},options:Array,value:{type:[String,Array],required:!0}},setup(e,{emit:l}){const a=e.fieldType===t.BOOLEAN,o=g({get:()=>a?[e.value]:Array.isArray(e.value)?e.value:e.value?e.value.split(","):void 0,set(e){if(a){const t=null==e?void 0:e[0];l("update:value",null==t||"boolean"!=typeof t?Boolean(t):!!t)}else l("update:value",e)}}),r=g(()=>a?(e.options??[]).filter(e=>e.value):e.options??[]);return()=>C(J,{value:o.value,"onUpdate:value":e=>o.value=e,disabled:e.disabled,class:["field-checkbox-group",e.readonly?"field-checkbox-group--readonly":""]},{default:()=>{var l;return[null===(l=r.value)||void 0===l?void 0:l.map(l=>{const t=l,{icon:a,iconColor:o,textColor:r}=(null==t?void 0:t._item)||{};return C(H,{key:t.value,value:t.value},{default:()=>[C(_e,{tagWidgetStyle:e.tagStyle,type:e.fieldType,label:t.label,disabled:e.disabled,iconExtraProps:{[t.label]:{icon:a,iconColor:o,textColor:r}}},null)]})})]}})}});function ke(e,l){const t=[],a=e.props.fieldType,o=g(()=>e.props.readonly&&a&&!t.includes(a)&&(void 0===l.value||""===l.value||null===l.value));return{RenderEmptyValue:/* @__PURE__ */S((e,l)=>()=>_gct.store.getEmptyDisplay),isEmpty:o}}function Oe(){console.log("Hello World!")}var Pe=new URL("./index.min.css",import.meta.url);n.load(Pe.href);export{re as DesignRender,Ne as FieldCheckbox,Te as FieldRadio,Ee as FieldSelect,ie as Tag,ke as emptyValueDisplay,_e as fieldReadonly,Ce as getDataByModelType,fe as refCardLabelRender,Oe as run,ve as selectTag,te as setupPageEvent,ce as taglabel,he as useGetRefCard,ae as usePageEvent,xe as useRefCardData};
@@ -0,0 +1,21 @@
1
+ import { Context, Events } from '@gct-paas/render';
2
+ export interface ContextPcType extends Context {
3
+ /**建模追溯 */
4
+ $modelingTraceability: Fn;
5
+ /** 电子签名 */
6
+ $modelingElectronicSignature: Fn;
7
+ /** 单据打印预览弹框 */
8
+ $documentPrint: Fn;
9
+ /** 在线表单信息弹框 */
10
+ $onlineFormModal: Fn;
11
+ /** eDHR填报全屏弹框 */
12
+ $eDHRFillFullScreenModal: Fn;
13
+ /** 表单填报弹框 */
14
+ $openDocumentFillingModal: Fn;
15
+ /** 签名确认弹框 */
16
+ $modelingSignatureConfirm: Fn;
17
+ $usageInformation: Fn;
18
+ }
19
+ export type EventsPC = Events<ContextPcType>;
20
+ export declare const setupPageEvent: (event: IObject) => void;
21
+ export declare const usePageEvent: () => EventsPC;
@@ -0,0 +1,12 @@
1
+ import "@gct-paas/render";
2
+ import { inject, provide } from "vue";
3
+ //#region src/Event/Events.ts
4
+ var PAGE_EVENT = Symbol("PAGE_EVENT");
5
+ var setupPageEvent = (event) => provide(PAGE_EVENT, event);
6
+ var usePageEvent = () => {
7
+ const event = inject(PAGE_EVENT);
8
+ if (!event) throw new Error("PAGE_EVENT not provided");
9
+ return event;
10
+ };
11
+ //#endregion
12
+ export { setupPageEvent, usePageEvent };
@@ -0,0 +1,8 @@
1
+ //#region \0plugin-vue:export-helper
2
+ var _plugin_vue_export_helper_default = (sfc, props) => {
3
+ const target = sfc.__vccOpts || sfc;
4
+ for (const [key, val] of props) target[key] = val;
5
+ return target;
6
+ };
7
+ //#endregion
8
+ export { _plugin_vue_export_helper_default as default };
@@ -0,0 +1,71 @@
1
+ @charset "UTF-8";
2
+ /* stylelint-disable scss/no-global-function-names */
3
+ /* bem('block', 'element', 'modifier') => 'ibiz-block__element--modifier' */
4
+ /**
5
+ * 定义 Block 块
6
+ * @param {String} $block - Block 块名称
7
+ * @example
8
+ * @include b('button') {
9
+ * padding: 10px;
10
+ * }
11
+ */
12
+ /**
13
+ * 定义 Element 元素
14
+ * @param {String|List} $element - Element 元素名称,支持单个或多个
15
+ * @example
16
+ * @include b('button') {
17
+ * @include e('text') {
18
+ * color: #000;
19
+ * }
20
+ * }
21
+ * // 或传入多个元素
22
+ * @include b('button') {
23
+ * @include e(('text', 'icon')) {
24
+ * margin: 5px;
25
+ * }
26
+ * }
27
+ */
28
+ /**
29
+ * 定义 Modifier 修饰符
30
+ * @param {String|List} $modifier - Modifier 修饰符名称,支持单个或多个
31
+ * @example
32
+ * @include b('button') {
33
+ * @include m('primary') {
34
+ * background: blue;
35
+ * }
36
+ * }
37
+ * // 或传入多个修饰符
38
+ * @include b('button') {
39
+ * @include m(('primary', 'large')) {
40
+ * background: blue;
41
+ * font-size: 16px;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * 定义状态选择器
47
+ * @param {String} $state - 状态名称
48
+ * @example
49
+ * @include b('button') {
50
+ * @include when('disabled') {
51
+ * opacity: 0.5;
52
+ * }
53
+ * }
54
+ */
55
+ /**
56
+ * 深色主题样式
57
+ * @param {String} $block - Block 块名称
58
+ * @example
59
+ * @include dark('button') {
60
+ * background: #333;
61
+ * color: #fff;
62
+ * }
63
+ */
64
+ /* stylelint-disable scss/no-global-function-names */
65
+ .gct-card-view-render {
66
+ position: relative;
67
+ }
68
+ .gct-card-view-render .gct-design-render {
69
+ width: auto;
70
+ height: auto;
71
+ }
@@ -0,0 +1,38 @@
1
+ import { PropType } from 'vue';
2
+ export declare const CardViewRender: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
3
+ id: {
4
+ type: StringConstructor;
5
+ required: true;
6
+ };
7
+ modelKey: {
8
+ type: StringConstructor;
9
+ required: true;
10
+ };
11
+ fetch: {
12
+ type: PropType<() => Promise<IObject>>;
13
+ };
14
+ preview: {
15
+ type: BooleanConstructor;
16
+ default: boolean;
17
+ };
18
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "mounted"[], "mounted", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
19
+ id: {
20
+ type: StringConstructor;
21
+ required: true;
22
+ };
23
+ modelKey: {
24
+ type: StringConstructor;
25
+ required: true;
26
+ };
27
+ fetch: {
28
+ type: PropType<() => Promise<IObject>>;
29
+ };
30
+ preview: {
31
+ type: BooleanConstructor;
32
+ default: boolean;
33
+ };
34
+ }>> & Readonly<{
35
+ onMounted?: ((...args: any[]) => any) | undefined;
36
+ }>, {
37
+ preview: boolean;
38
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,85 @@
1
+ import { DesignRender } from "../design-render/design-render.mjs";
2
+ import './card-view-render.css';/* empty css */
3
+ import { DesignRenderViewPrefix } from "@gct-paas/render";
4
+ import { computed, createVNode, defineComponent, nextTick, ref, resolveComponent } from "vue";
5
+ import { gctMemoizeAsync, useNamespace } from "@gct-paas/core";
6
+ //#region src/components/card-view-render/card-view-render.tsx
7
+ var loadModelAsync = gctMemoizeAsync(_api.apaas.commonInfoCard.getGetById);
8
+ var CardViewRender = /* @__PURE__ */ defineComponent({
9
+ name: "CardViewRender",
10
+ props: {
11
+ id: {
12
+ type: String,
13
+ required: true
14
+ },
15
+ modelKey: {
16
+ type: String,
17
+ required: true
18
+ },
19
+ fetch: { type: Function },
20
+ preview: {
21
+ type: Boolean,
22
+ default: false
23
+ }
24
+ },
25
+ emits: ["mounted"],
26
+ setup(props, { emit }) {
27
+ const ns = useNamespace("card-view-render");
28
+ const isLoading = ref(false);
29
+ const isLoaded = ref(false);
30
+ const json = ref(null);
31
+ const data = ref({});
32
+ const style = computed(() => {
33
+ if (json.value) return { width: json.value.pageNode?.data.width ? `${json.value.pageNode.data.width}px` : "" };
34
+ return {};
35
+ });
36
+ async function loadModel() {
37
+ const res = await loadModelAsync({
38
+ id: props.id,
39
+ modelKey: props.modelKey,
40
+ type: "CARD"
41
+ });
42
+ if (res && res.designerJson) json.value = JSON.parse(decodeURIComponent(res.designerJson));
43
+ }
44
+ async function onInit() {
45
+ if (!props.id) return;
46
+ try {
47
+ isLoading.value = true;
48
+ await loadModel();
49
+ if (props.preview !== true && props.fetch) data.value = await props.fetch() || {};
50
+ } catch (error) {
51
+ console.error(error);
52
+ } finally {
53
+ isLoading.value = false;
54
+ }
55
+ isLoaded.value = true;
56
+ await nextTick();
57
+ setTimeout(() => {
58
+ emit("mounted", json.value?.pageNode?.data);
59
+ });
60
+ }
61
+ onInit();
62
+ return () => {
63
+ return createVNode("div", {
64
+ "class": ns.b(),
65
+ "style": style.value
66
+ }, [isLoading.value ? createVNode(resolveComponent("a-spin"), null, null) : null, !json.value || !isLoaded.value ? null : createVNode(DesignRender, {
67
+ "context": {
68
+ data: data.value,
69
+ id: props.id,
70
+ modelKey: props.modelKey
71
+ },
72
+ "model": {
73
+ nodes: json.value.nodes,
74
+ pageNode: json.value.pageNode,
75
+ tree: json.value.tree,
76
+ type: DesignRenderViewPrefix.CARD_VIEW
77
+ },
78
+ "prefix": DesignRenderViewPrefix.CARD_VIEW,
79
+ "preview": props.preview
80
+ }, null)]);
81
+ };
82
+ }
83
+ });
84
+ //#endregion
85
+ export { CardViewRender };
@@ -0,0 +1,71 @@
1
+ @charset "UTF-8";
2
+ /* stylelint-disable scss/no-global-function-names */
3
+ /* bem('block', 'element', 'modifier') => 'ibiz-block__element--modifier' */
4
+ /**
5
+ * 定义 Block 块
6
+ * @param {String} $block - Block 块名称
7
+ * @example
8
+ * @include b('button') {
9
+ * padding: 10px;
10
+ * }
11
+ */
12
+ /**
13
+ * 定义 Element 元素
14
+ * @param {String|List} $element - Element 元素名称,支持单个或多个
15
+ * @example
16
+ * @include b('button') {
17
+ * @include e('text') {
18
+ * color: #000;
19
+ * }
20
+ * }
21
+ * // 或传入多个元素
22
+ * @include b('button') {
23
+ * @include e(('text', 'icon')) {
24
+ * margin: 5px;
25
+ * }
26
+ * }
27
+ */
28
+ /**
29
+ * 定义 Modifier 修饰符
30
+ * @param {String|List} $modifier - Modifier 修饰符名称,支持单个或多个
31
+ * @example
32
+ * @include b('button') {
33
+ * @include m('primary') {
34
+ * background: blue;
35
+ * }
36
+ * }
37
+ * // 或传入多个修饰符
38
+ * @include b('button') {
39
+ * @include m(('primary', 'large')) {
40
+ * background: blue;
41
+ * font-size: 16px;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * 定义状态选择器
47
+ * @param {String} $state - 状态名称
48
+ * @example
49
+ * @include b('button') {
50
+ * @include when('disabled') {
51
+ * opacity: 0.5;
52
+ * }
53
+ * }
54
+ */
55
+ /**
56
+ * 深色主题样式
57
+ * @param {String} $block - Block 块名称
58
+ * @example
59
+ * @include dark('button') {
60
+ * background: #333;
61
+ * color: #fff;
62
+ * }
63
+ */
64
+ /* stylelint-disable scss/no-global-function-names */
65
+ .gct-design-render {
66
+ position: relative;
67
+ width: 100%;
68
+ height: 100%;
69
+ overflow: hidden auto;
70
+ background-color: #f7f8fa;
71
+ }
@@ -0,0 +1,52 @@
1
+ import { PropType, VNode } from 'vue';
2
+ import { IDesignData, IDesignNode } from '@gct-paas/schema';
3
+ export declare const DesignRender: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ model: {
5
+ type: PropType<IDesignData>;
6
+ required: true;
7
+ };
8
+ prefix: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ preview: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ context: {
17
+ type: PropType<IContext>;
18
+ default: () => {};
19
+ };
20
+ }>, {
21
+ ns: import('@gct-paas/core').Namespace;
22
+ c: import('node_modules/@gct-paas/render/es/interface').IDesignRenderController;
23
+ style: import('vue').ComputedRef<IObject>;
24
+ rootNodes: IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
25
+ renderNode: (node: IDesignNode, parent?: IDesignNode) => import("vue/jsx-runtime").JSX.Element | null;
26
+ renderPageNode: (child: VNode[]) => VNode<import('vue').RendererNode, import('vue').RendererElement, {
27
+ [key: string]: any;
28
+ }> | VNode<import('vue').RendererNode, import('vue').RendererElement, {
29
+ [key: string]: any;
30
+ }>[];
31
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
32
+ model: {
33
+ type: PropType<IDesignData>;
34
+ required: true;
35
+ };
36
+ prefix: {
37
+ type: StringConstructor;
38
+ default: string;
39
+ };
40
+ preview: {
41
+ type: BooleanConstructor;
42
+ default: boolean;
43
+ };
44
+ context: {
45
+ type: PropType<IContext>;
46
+ default: () => {};
47
+ };
48
+ }>> & Readonly<{}>, {
49
+ prefix: string;
50
+ preview: boolean;
51
+ context: IContext;
52
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,126 @@
1
+ import { DesignRenderItem } from "../design-render-item/design-render-item.mjs";
2
+ import './design-render.css';/* empty css */
3
+ import { RenderNodeRegister, useDesignRenderController } from "@gct-paas/render";
4
+ import { computed, createTextVNode, createVNode, defineComponent, h, resolveComponent, watch } from "vue";
5
+ import { calcStyle, useNamespace } from "@gct-paas/core";
6
+ import { DesignNodeMode } from "@gct-paas/schema";
7
+ //#region src/components/design-render/design-render.tsx
8
+ var DesignRender = /* @__PURE__ */ defineComponent({
9
+ name: "DesignRender",
10
+ props: {
11
+ model: {
12
+ type: Object,
13
+ required: true
14
+ },
15
+ prefix: {
16
+ type: String,
17
+ default: ""
18
+ },
19
+ preview: {
20
+ type: Boolean,
21
+ default: false
22
+ },
23
+ context: {
24
+ type: Object,
25
+ default: () => {
26
+ return {};
27
+ }
28
+ }
29
+ },
30
+ setup(props) {
31
+ const ns = useNamespace("design-render");
32
+ const c = useDesignRenderController();
33
+ c.prefix = props.prefix;
34
+ c.preview = props.preview;
35
+ c.setNodes(props.model.nodes);
36
+ c.setTree(props.model.tree);
37
+ watch(() => props.context, () => {
38
+ c.state.context = props.context;
39
+ }, { immediate: true });
40
+ const style = computed(() => {
41
+ if (props.model.pageNode) return calcStyle(props.model.pageNode.data);
42
+ return {};
43
+ });
44
+ const rootNodes = c.getNodes();
45
+ function renderNodeItem(node, parent) {
46
+ const provider = RenderNodeRegister.get(node.type, c.prefix);
47
+ const itemC = c.getController(node.id);
48
+ return h(resolveComponent(provider.component), {
49
+ key: node.id,
50
+ c: itemC,
51
+ model: node,
52
+ parent,
53
+ preview: props.preview,
54
+ context: c.state.context,
55
+ pageModel: props.model.pageNode
56
+ });
57
+ }
58
+ function renderNodeContainer(node, parent) {
59
+ const provider = RenderNodeRegister.get(node.type, c.prefix);
60
+ const items = c.getNodes(node.id);
61
+ const itemC = c.getController(node.id);
62
+ return h(resolveComponent(provider.component), {
63
+ key: node.id,
64
+ c: itemC,
65
+ model: node,
66
+ parent,
67
+ preview: props.preview,
68
+ context: c.state.context,
69
+ pageModel: props.model.pageNode
70
+ }, items.map((_) => {
71
+ return renderNode(_, node);
72
+ }));
73
+ }
74
+ function renderNode(node, parent) {
75
+ const provider = RenderNodeRegister.get(node.type, c.prefix);
76
+ if (!provider) {
77
+ console.warn(`未找到节点类型为${node.type}的渲染器`);
78
+ return null;
79
+ }
80
+ let content = null;
81
+ if (provider.mode === DesignNodeMode.CONTAINER) content = renderNodeContainer(node, parent);
82
+ else if (provider.mode === DesignNodeMode.ITEM) content = renderNodeItem(node, parent);
83
+ else content = createVNode("div", null, [
84
+ createTextVNode("未支持的适配器模式["),
85
+ provider.mode,
86
+ createTextVNode("]")
87
+ ]);
88
+ return createVNode(DesignRenderItem, { "model": node }, { default: () => content });
89
+ }
90
+ function renderPageNode(child) {
91
+ if (!props.model.pageNode) return child;
92
+ const provider = RenderNodeRegister.get(props.model.pageNode.type, c.prefix);
93
+ if (!provider) {
94
+ console.warn(`未找到页面节点类型为${props.model.pageNode.type}的渲染器`);
95
+ return child;
96
+ }
97
+ const itemC = c.getController(props.model.pageNode.id);
98
+ return h(resolveComponent(provider.component), {
99
+ key: props.model.pageNode.id,
100
+ c: itemC,
101
+ model: props.model.pageNode,
102
+ parent: void 0,
103
+ preview: props.preview,
104
+ context: c.state.context
105
+ }, child);
106
+ }
107
+ return {
108
+ ns,
109
+ c,
110
+ style,
111
+ rootNodes,
112
+ renderNode,
113
+ renderPageNode
114
+ };
115
+ },
116
+ render() {
117
+ return createVNode("div", {
118
+ "class": this.ns.b(),
119
+ "style": this.style
120
+ }, [this.renderPageNode(this.rootNodes.map((node) => {
121
+ return this.renderNode(node);
122
+ }))]);
123
+ }
124
+ });
125
+ //#endregion
126
+ export { DesignRender };
@@ -0,0 +1,16 @@
1
+ import { PropType } from 'vue';
2
+ import { IDesignNode } from '@gct-paas/schema';
3
+ export declare const DesignRenderItem: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ model: {
5
+ type: PropType<IDesignNode>;
6
+ required: true;
7
+ };
8
+ }>, {
9
+ ns: import('@gct-paas/core').Namespace;
10
+ style: IObject;
11
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
12
+ model: {
13
+ type: PropType<IDesignNode>;
14
+ required: true;
15
+ };
16
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,24 @@
1
+ import { createVNode, defineComponent } from "vue";
2
+ import { calcStyle, useNamespace } from "@gct-paas/core";
3
+ //#region src/components/design-render-item/design-render-item.tsx
4
+ var DesignRenderItem = /* @__PURE__ */ defineComponent({
5
+ name: "DesignRenderItem",
6
+ props: { model: {
7
+ type: Object,
8
+ required: true
9
+ } },
10
+ setup(props) {
11
+ return {
12
+ ns: useNamespace("design-render-item"),
13
+ style: calcStyle(props.model.data)
14
+ };
15
+ },
16
+ render() {
17
+ return createVNode("div", {
18
+ "class": this.ns.b(),
19
+ "style": this.style
20
+ }, [this.$slots.default?.()]);
21
+ }
22
+ });
23
+ //#endregion
24
+ export { DesignRenderItem };
@@ -0,0 +1,43 @@
1
+ import { PropType } from 'vue';
2
+ import { CheckboxGroupProps } from 'ant-design-vue';
3
+ import { FIELD_TYPE } from '@gct-paas/core';
4
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
5
+ design: BooleanConstructor;
6
+ disabled: BooleanConstructor;
7
+ readonly: BooleanConstructor;
8
+ fieldType: {
9
+ type: PropType<FIELD_TYPE>;
10
+ required: true;
11
+ };
12
+ tagStyle: {
13
+ type: ObjectConstructor;
14
+ required: true;
15
+ };
16
+ options: PropType<CheckboxGroupProps["options"]>;
17
+ value: {
18
+ type: (StringConstructor | ArrayConstructor)[];
19
+ required: true;
20
+ };
21
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
22
+ design: BooleanConstructor;
23
+ disabled: BooleanConstructor;
24
+ readonly: BooleanConstructor;
25
+ fieldType: {
26
+ type: PropType<FIELD_TYPE>;
27
+ required: true;
28
+ };
29
+ tagStyle: {
30
+ type: ObjectConstructor;
31
+ required: true;
32
+ };
33
+ options: PropType<CheckboxGroupProps["options"]>;
34
+ value: {
35
+ type: (StringConstructor | ArrayConstructor)[];
36
+ required: true;
37
+ };
38
+ }>> & Readonly<{}>, {
39
+ disabled: boolean;
40
+ readonly: boolean;
41
+ design: boolean;
42
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
43
+ export default _default;