@gct-paas/render-web 0.1.4-dev.9 → 0.1.5-dev.1
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.
- package/dist/index.min.css +2 -0
- package/dist/loader.esm.min.js +1 -0
- package/es/Event/Events.d.ts +21 -0
- package/es/Event/Events.mjs +12 -0
- package/es/_virtual/_plugin-vue_export-helper.mjs +8 -0
- package/es/components/card-view-render/card-view-render.css +71 -0
- package/es/components/card-view-render/card-view-render.d.ts +38 -0
- package/es/components/card-view-render/card-view-render.mjs +85 -0
- package/es/components/design-render/design-render.css +71 -0
- package/es/components/design-render/design-render.d.ts +52 -0
- package/es/components/design-render/design-render.mjs +126 -0
- package/es/components/design-render-item/design-render-item.d.ts +16 -0
- package/es/components/design-render-item/design-render-item.mjs +24 -0
- package/es/components/form-component/FieldCheckbox.d.ts +43 -0
- package/es/components/form-component/FieldCheckbox.mjs +74 -0
- package/es/components/form-component/FieldRadio.d.ts +37 -0
- package/es/components/form-component/FieldRadio.mjs +64 -0
- package/es/components/form-component/FieldSelect.d.ts +82 -0
- package/es/components/form-component/FieldSelect.mjs +177 -0
- package/es/components/form-component/field-empty-value.d.ts +6 -0
- package/es/components/form-component/field-empty-value.mjs +17 -0
- package/es/components/form-component/field-label/ref-card-label-render.vue.d.ts +23 -0
- package/es/components/form-component/field-label/ref-card-label-render.vue.mjs +6 -0
- package/es/components/form-component/field-label/ref-card-label-render.vue_vue_type_script_setup_true_lang.mjs +140 -0
- package/es/components/form-component/field-label/ref-card-label-render.vue_vue_type_style_index_0_lang.css +10 -0
- package/es/components/form-component/field-label/selectTag.vue.d.ts +5 -0
- package/es/components/form-component/field-label/selectTag.vue.mjs +5 -0
- package/es/components/form-component/field-label/selectTag.vue_vue_type_script_setup_true_lang.mjs +22 -0
- package/es/components/form-component/field-label/tag-label.vue.d.ts +31 -0
- package/es/components/form-component/field-label/tag-label.vue.mjs +7 -0
- package/es/components/form-component/field-label/tag-label.vue_vue_type_script_setup_true_name_TagLabel_lang.mjs +139 -0
- package/es/components/form-component/field-label/tag-label.vue_vue_type_style_index_0_scoped_8b3c7ae1_lang.css +15 -0
- package/es/components/form-component/field-label/tag-layout.vue.d.ts +21 -0
- package/es/components/form-component/field-label/tag-layout.vue.mjs +7 -0
- package/es/components/form-component/field-label/tag-layout.vue_vue_type_script_setup_true_lang.mjs +16 -0
- package/es/components/form-component/field-label/tag-layout.vue_vue_type_style_index_0_scoped_85e6a8f5_lang.css +12 -0
- package/es/components/form-component/field-label/tag-span.vue.d.ts +21 -0
- package/es/components/form-component/field-label/tag-span.vue.mjs +7 -0
- package/es/components/form-component/field-label/tag-span.vue_vue_type_script_setup_true_lang.mjs +25 -0
- package/es/components/form-component/field-label/tag-span.vue_vue_type_style_index_0_scoped_6c8c4c7a_lang.css +31 -0
- package/es/components/form-component/field-readonly.vue.d.ts +21 -0
- package/es/components/form-component/field-readonly.vue.mjs +5 -0
- package/es/components/form-component/field-readonly.vue_vue_type_script_setup_true_lang.mjs +92 -0
- package/es/components/form-component/index.css +40 -0
- package/es/components/form-component/index.d.ts +10 -0
- package/es/components/form-component/index.mjs +9 -0
- package/es/components/index.d.ts +3 -0
- package/es/components/index.mjs +11 -0
- package/es/hooks/index.d.ts +1 -0
- package/es/hooks/index.mjs +1 -0
- package/es/hooks/refCardList.d.ts +23 -0
- package/es/hooks/refCardList.mjs +56 -0
- package/es/index.d.ts +3 -1
- package/es/index.mjs +18 -5
- package/es/loader.d.ts +1 -0
- package/package.json +18 -15
- package/dist/index.esm.min.mjs +0 -29007
- package/dist/index.min.cjs +0 -37
- package/dist/index.system.min.js +0 -37
- package/es/Event/EventsPc.d.ts +0 -16
- package/es/Event/EventsPc.mjs +0 -10
|
@@ -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;
|