eoss 0.1.0-alpha.30 → 0.1.0-alpha.32

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 (40) hide show
  1. package/lib/eoss.common.js +503 -324
  2. package/lib/index.js +1 -1
  3. package/lib/lowcode-view.js +194 -113
  4. package/lib/lowcode.js +155 -104
  5. package/lib/main.js +104 -47
  6. package/lib/process-config.js +14 -18
  7. package/lib/process-module.js +9 -12
  8. package/lib/process-rule.js +2 -5
  9. package/lib/tabs.js +4 -0
  10. package/lib/theme-chalk/index.css +1 -1
  11. package/lib/theme-chalk/lowcode-view.css +1 -1
  12. package/lib/theme-chalk/tabs.css +1 -1
  13. package/lib/wujie.js +2 -3
  14. package/package.json +1 -1
  15. package/packages/lowcode/src/attribute/javascript.vue +2 -0
  16. package/packages/lowcode/src/attribute/property.vue +38 -56
  17. package/packages/lowcode/src/attribute.vue +3 -1
  18. package/packages/lowcode/src/lowcode.vue +8 -2
  19. package/packages/lowcode/src/pages.vue +0 -1
  20. package/packages/lowcode/src/render.vue +15 -1
  21. package/packages/lowcode/src/util/source-generator.js +29 -15
  22. package/packages/lowcode/src/util/source-parser.js +35 -3
  23. package/packages/lowcode-view/src/{Modulels.vue → Modules.vue} +63 -74
  24. package/packages/lowcode-view/src/view.vue +54 -14
  25. package/packages/main/src/components/pages.vue +4 -1
  26. package/packages/main/src/components/router-page.vue +29 -1
  27. package/packages/main/src/components/sub-menu.vue +2 -0
  28. package/packages/main/src/early.vue +1 -0
  29. package/packages/main/src/gzw.vue +1 -0
  30. package/packages/main/src/minxs.js +13 -1
  31. package/packages/process-config/src/NodeConfig.vue +0 -1
  32. package/packages/process-config/src/NodeForm.vue +0 -1
  33. package/packages/process-module/src/FormList.vue +0 -1
  34. package/packages/process-module/src/main.vue +0 -2
  35. package/packages/process-rule/src/main.vue +0 -3
  36. package/packages/tabs/src/tabs.vue +5 -1
  37. package/packages/theme-chalk/src/lowcode-view.scss +1 -0
  38. package/packages/theme-chalk/src/tabs.scss +2 -1
  39. package/packages/wujie/src/wujie.vue +0 -1
  40. package/src/index.js +1 -1
@@ -1 +1 @@
1
- @charset "UTF-8";.es-lowcode-view{height:100%}.es-lowcode-view .es-scrollbar__view{padding:16px}.es-lowcode-view__edit-switch{position:fixed;top:120px;right:2px;z-index:999}.es-lowcode-view__edit-switch--trigger{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:40px;-webkit-transform:translateX(calc(100% - 4px));transform:translateX(calc(100% - 4px));-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1);cursor:pointer}.es-lowcode-view__edit-switch--trigger:hover{-webkit-transform:translateX(0);transform:translateX(0)}.es-lowcode-view__edit-switch--trigger:hover .es-lowcode-view__edit-switch--strip{opacity:0}.es-lowcode-view__edit-switch--trigger:hover .es-lowcode-view__edit-switch--content{display:-webkit-box;display:-ms-flexbox;display:flex}.es-lowcode-view__edit-switch--strip{width:8px;height:100%;background:#40a9ff;border-radius:2px 0 0 2px;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:opacity .2s;transition:opacity .2s}.es-lowcode-view__edit-switch--content{display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 16px 6px 10px;background:#fff;border-radius:24px 0 0 24px;-webkit-box-shadow:-2px 2px 12px rgba(0,0,0,.12);box-shadow:-2px 2px 12px rgba(0,0,0,.12);white-space:nowrap}.es-lowcode-view__edit-switch--label{font-size:14px;color:#333}.es-lowcode-view__edit-switch.is-edit{right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.es-lowcode-view__edit-switch.is-edit .es-lowcode-view__edit-switch--btn{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 16px 6px 6px;background:#fff;border-radius:24px 0 0 24px;-webkit-box-shadow:-2px 2px 12px rgba(0,0,0,.12);box-shadow:-2px 2px 12px rgba(0,0,0,.12);cursor:pointer;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.es-lowcode-view__edit-switch.is-edit .es-lowcode-view__edit-switch--btn:hover{-webkit-box-shadow:-2px 4px 16px rgba(0,0,0,.18);box-shadow:-2px 4px 16px rgba(0,0,0,.18)}.es-lowcode-view__edit-switch.is-edit .es-lowcode-view__edit-switch--btn.is-confirm{padding-right:20px}.es-lowcode-view__edit-switch.is-edit .es-lowcode-view__edit-switch--btn .es-lowcode-view__edit-switch--label{font-size:14px;color:#333;white-space:nowrap}.es-lowcode-view__edit-switch .es-button{font-size:18px}.es-lowcode-view__waterfall{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}.es-lowcode-view__waterfall>*{min-width:0}.es-lowcode-view .es-lowcode-view-sortable-ghost{opacity:.4}.es-lowcode-view .es-lowcode-view-sortable-ghost .item-content{background-color:#ccc}.es-lowcode-view .es-lowcode-view-sortable-drag{cursor:-webkit-grabbing;cursor:grabbing;opacity:.8}.es-lowcode-view__waterfall-item{position:relative}.es-lowcode-view__waterfall-item::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.3);border:1px dashed #ccc;border-radius:6px}.es-lowcode-view__waterfall-add{background-color:rgba(0,0,0,.3);border-radius:6px;height:100px;border:1px dashed #ccc;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;font-size:14px;color:#666;cursor:pointer}.es-lowcode-view__resize-handle{position:absolute;z-index:100}.es-lowcode-view__resize-handle .es-lowcode__resize-size{position:absolute;font-size:12px}.es-lowcode-view__resize-handle.is-top{top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);height:8px;line-height:8px;cursor:ns-resize}.es-lowcode-view__resize-handle.is-top .es-lowcode__resize-size{top:0;right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.es-lowcode-view__resize-handle.is-bottom{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);height:8px;line-height:8px;cursor:ns-resize}.es-lowcode-view__resize-handle.is-bottom .es-lowcode__resize-size{bottom:0;right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.es-lowcode-view__resize-handle.is-left{left:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:12px;text-align:center;cursor:ew-resize}.es-lowcode-view__resize-handle.is-left .es-lowcode__resize-size{left:0;bottom:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.es-lowcode-view__resize-handle.is-right{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:12px;text-align:center;cursor:ew-resize}.es-lowcode-view__resize-handle.is-right .es-lowcode__resize-size{right:0;bottom:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.es-lowcode-view__modules{height:100%;overflow:hidden}.es-lowcode-view__modules--scrollbar{height:calc(100% - 48px)}.es-lowcode-view__modules--scrollbar.is-full{height:100%}.es-lowcode-view__modules--scrollbar .es-scrollbar__view{padding:16px}.es-lowcode-view__modules--scrollbar .es-checkbox-group{display:block}.es-lowcode-view__modules--scrollbar .es-checkbox{display:block;margin:0;position:absolute}.es-lowcode-view__modules--scrollbar .es-checkbox__input{position:absolute;top:12px;right:12px}.es-lowcode-view__modules--scrollbar .es-checkbox__label{display:block;height:100%;padding:0}.es-lowcode-view__modules--waterfall{position:relative;width:100%}.es-lowcode-view__modules--pagination{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.es-lowcode-view__iframe{border:0;height:100%}.es-lowcode-view__iframe .es-card__header{border:0;padding-bottom:0}.es-lowcode-view__iframe .es-card__header+.es-card__body{height:calc(100% - 43px)}.es-lowcode-view__iframe .es-card__body{height:100%}.es-lowcode-view__iframe--header{line-height:24px}.es-lowcode-view__iframe--header-title-icon{display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;font-size:12px;background-color:#bae7ff;border-radius:3px;color:#096dd9;position:relative;top:-2px}.es-lowcode-view__iframe--header-title{font-family:Alibaba PuHuiTi 2,Alibaba PuHuiTi 20;font-size:16px;color:#121212;margin-left:10px}.es-lowcode-view__iframe--header-right{float:right;cursor:pointer;color:#999}.es-lowcode-view__iframe--header-right .es-icon-shezhi{font-size:16px;position:relative;top:1px}
1
+ @charset "UTF-8";.es-lowcode-view{height:100%}.es-lowcode-view .es-scrollbar__view{padding:16px}.es-lowcode-view__edit-switch{position:fixed;top:120px;right:2px;z-index:999}.es-lowcode-view__edit-switch--trigger{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:40px;-webkit-transform:translateX(calc(100% - 4px));transform:translateX(calc(100% - 4px));-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1);cursor:pointer}.es-lowcode-view__edit-switch--trigger:hover{-webkit-transform:translateX(0);transform:translateX(0)}.es-lowcode-view__edit-switch--trigger:hover .es-lowcode-view__edit-switch--strip{opacity:0}.es-lowcode-view__edit-switch--trigger:hover .es-lowcode-view__edit-switch--content{display:-webkit-box;display:-ms-flexbox;display:flex}.es-lowcode-view__edit-switch--strip{width:8px;height:100%;background:#40a9ff;border-radius:2px 0 0 2px;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:opacity .2s;transition:opacity .2s}.es-lowcode-view__edit-switch--content{display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 16px 6px 10px;background:#fff;border-radius:24px 0 0 24px;-webkit-box-shadow:-2px 2px 12px rgba(0,0,0,.12);box-shadow:-2px 2px 12px rgba(0,0,0,.12);white-space:nowrap}.es-lowcode-view__edit-switch--label{font-size:14px;color:#333}.es-lowcode-view__edit-switch.is-edit{right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.es-lowcode-view__edit-switch.is-edit .es-lowcode-view__edit-switch--btn{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 16px 6px 6px;background:#fff;border-radius:24px 0 0 24px;-webkit-box-shadow:-2px 2px 12px rgba(0,0,0,.12);box-shadow:-2px 2px 12px rgba(0,0,0,.12);cursor:pointer;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.es-lowcode-view__edit-switch.is-edit .es-lowcode-view__edit-switch--btn:hover{-webkit-box-shadow:-2px 4px 16px rgba(0,0,0,.18);box-shadow:-2px 4px 16px rgba(0,0,0,.18)}.es-lowcode-view__edit-switch.is-edit .es-lowcode-view__edit-switch--btn.is-confirm{padding-right:20px}.es-lowcode-view__edit-switch.is-edit .es-lowcode-view__edit-switch--btn .es-lowcode-view__edit-switch--label{font-size:14px;color:#333;white-space:nowrap}.es-lowcode-view__edit-switch .es-button{font-size:18px}.es-lowcode-view__waterfall{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}.es-lowcode-view__waterfall>*{min-width:0}.es-lowcode-view .es-lowcode-view-sortable-ghost{opacity:.4}.es-lowcode-view .es-lowcode-view-sortable-ghost .item-content{background-color:#ccc}.es-lowcode-view .es-lowcode-view-sortable-drag{cursor:-webkit-grabbing;cursor:grabbing;opacity:.8}.es-lowcode-view__waterfall-item{position:relative}.es-lowcode-view__waterfall-item::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.3);border:1px dashed #ccc;border-radius:6px;z-index:99}.es-lowcode-view__waterfall-add{background-color:rgba(0,0,0,.3);border-radius:6px;height:100px;border:1px dashed #ccc;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;font-size:14px;color:#666;cursor:pointer}.es-lowcode-view__resize-handle{position:absolute;z-index:100}.es-lowcode-view__resize-handle .es-lowcode__resize-size{position:absolute;font-size:12px}.es-lowcode-view__resize-handle.is-top{top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);height:8px;line-height:8px;cursor:ns-resize}.es-lowcode-view__resize-handle.is-top .es-lowcode__resize-size{top:0;right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.es-lowcode-view__resize-handle.is-bottom{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);height:8px;line-height:8px;cursor:ns-resize}.es-lowcode-view__resize-handle.is-bottom .es-lowcode__resize-size{bottom:0;right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.es-lowcode-view__resize-handle.is-left{left:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:12px;text-align:center;cursor:ew-resize}.es-lowcode-view__resize-handle.is-left .es-lowcode__resize-size{left:0;bottom:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.es-lowcode-view__resize-handle.is-right{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:12px;text-align:center;cursor:ew-resize}.es-lowcode-view__resize-handle.is-right .es-lowcode__resize-size{right:0;bottom:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.es-lowcode-view__modules{height:100%;overflow:hidden}.es-lowcode-view__modules--scrollbar{height:calc(100% - 48px)}.es-lowcode-view__modules--scrollbar.is-full{height:100%}.es-lowcode-view__modules--scrollbar .es-scrollbar__view{padding:16px}.es-lowcode-view__modules--scrollbar .es-checkbox-group{display:block}.es-lowcode-view__modules--scrollbar .es-checkbox{display:block;margin:0;position:absolute}.es-lowcode-view__modules--scrollbar .es-checkbox__input{position:absolute;top:12px;right:12px}.es-lowcode-view__modules--scrollbar .es-checkbox__label{display:block;height:100%;padding:0}.es-lowcode-view__modules--waterfall{position:relative;width:100%}.es-lowcode-view__modules--pagination{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.es-lowcode-view__iframe{border:0;height:100%}.es-lowcode-view__iframe .es-card__header{border:0;padding-bottom:0}.es-lowcode-view__iframe .es-card__header+.es-card__body{height:calc(100% - 43px)}.es-lowcode-view__iframe .es-card__body{height:100%}.es-lowcode-view__iframe--header{line-height:24px}.es-lowcode-view__iframe--header-title-icon{display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;font-size:12px;background-color:#bae7ff;border-radius:3px;color:#096dd9;position:relative;top:-2px}.es-lowcode-view__iframe--header-title{font-family:Alibaba PuHuiTi 2,Alibaba PuHuiTi 20;font-size:16px;color:#121212;margin-left:10px}.es-lowcode-view__iframe--header-right{float:right;cursor:pointer;color:#999}.es-lowcode-view__iframe--header-right .es-icon-shezhi{font-size:16px;position:relative;top:1px}
@@ -1 +1 @@
1
- @charset "UTF-8";.es-tabs{height:100%}.es-tabs__header{height:50px;padding:0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex}.es-tabs__prepend{line-height:40px;position:relative}.es-tabs__prepend:not(.is-hide)::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#d9e2ec;z-index:1}.es-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#1890ff;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.es-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.es-tabs__new-tab .es-icon-jia{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.es-tabs__new-tab:hover{color:#1890ff}.es-tabs__nav-main{-webkit-box-flex:1;-ms-flex:1;flex:1;position:relative}.es-tabs__nav-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.es-tabs__nav-wrap:not(.is-hide)::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#d9e2ec;z-index:1}.es-tabs__nav-scroll{overflow:hidden}.es-tabs__nav-scroll::after{content:"";display:table;clear:both}.es-tabs__nav-next,.es-tabs__nav-prev{position:absolute;cursor:pointer;line-height:42px;font-size:12px;padding:0 4px;color:#999}.es-tabs__nav-next{right:0}.es-tabs__nav-prev{left:0}.es-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.es-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.es-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.es-tabs__item{padding:0 20px;height:49px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:49px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#333;position:relative}.es-tabs__item:focus,.es-tabs__item:focus:active{outline:0}.es-tabs__item .es-badge__content.is-fixed{right:4px;-webkit-transform:translateY(0) translateX(100%);transform:translateY(0) translateX(100%)}.es-tabs__item .es-icon-guanbi{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px;position:relative;top:1px}.es-tabs__item .es-icon-guanbi:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.es-tabs__item .es-icon-guanbi:hover{background-color:rgba(0,0,0,.25);color:#fff}.es-tabs__item.is-active{color:#1890ff}.es-tabs__item:hover{color:#1890ff;cursor:pointer}.es-tabs__item.is-disabled{color:rgba(0,0,0,.25);cursor:default}.es-tabs__content{overflow:hidden;position:relative;height:calc(100% - 48px)}.es-tabs--card>.es-tabs__header{border-bottom:1px solid #d9e2ec}.es-tabs--card>.es-tabs__header .es-tabs__nav-wrap::after{content:none}.es-tabs--card>.es-tabs__header .es-tabs__nav{border:1px solid #d9e2ec;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.es-tabs--card>.es-tabs__header .es-tabs__active-bar{display:none}.es-tabs--card>.es-tabs__header .es-tabs__item .es-icon-guanbi{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:14px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.es-tabs--card>.es-tabs__header .es-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #d9e2ec;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.es-tabs--card>.es-tabs__header .es-tabs__item:first-child{border-left:none}.es-tabs--card>.es-tabs__header .es-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.es-tabs--card>.es-tabs__header .es-tabs__item.is-closable:hover .es-icon-guanbi{width:14px}.es-tabs--card>.es-tabs__header .es-tabs__item.is-active{border-bottom-color:#fff}.es-tabs--card>.es-tabs__header .es-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.es-tabs--card>.es-tabs__header .es-tabs__item.is-active.is-closable .es-icon-guanbi{width:14px}.es-tabs--border-card{background:#fff;border:1px solid #dfebf6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.es-tabs--border-card>.es-tabs__content{padding:12px}.es-tabs--border-card>.es-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #fff;margin:0}.es-tabs--border-card>.es-tabs__header .es-tabs__nav-wrap::after{content:none}.es-tabs--border-card>.es-tabs__header .es-tabs__item{border:1px solid transparent;color:#999;height:40px;line-height:40px}.es-tabs--border-card>.es-tabs__header .es-tabs__item+.es-tabs__item,.es-tabs--border-card>.es-tabs__header .es-tabs__item:first-child{margin-left:-1px}.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active{color:#1890ff;background-color:#fff;border-right-color:#fff;border-left-color:#fff}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active::after,.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active:before,.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active::after,.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active:before{content:"";width:8px;height:8px;background-color:#f5f5f5;position:absolute}.es-tabs--border-card>.es-tabs__header .es-tabs__item:not(.is-disabled):hover{color:#1890ff}.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-disabled{color:rgba(0,0,0,.25)}.es-tabs--border-card>.es-tabs__header .is-scrollable .es-tabs__item:first-child{margin-left:0}.es-tabs--bottom.es-tabs--border-card>.es-tabs__header .es-tabs__item:nth-child(2),.es-tabs--bottom.es-tabs--card>.es-tabs__header .es-tabs__item:nth-child(2),.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item:nth-child(2),.es-tabs--top.es-tabs--card>.es-tabs__header .es-tabs__item:nth-child(2){padding-left:20px}.es-tabs--bottom.es-tabs--border-card>.es-tabs__header .es-tabs__item:last-child,.es-tabs--bottom.es-tabs--card>.es-tabs__header .es-tabs__item:last-child,.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item:last-child,.es-tabs--top.es-tabs--card>.es-tabs__header .es-tabs__item:last-child{padding-right:20px}.es-tabs--bottom .es-tabs__nav-wrap,.es-tabs--top .es-tabs__nav-wrap{min-width:0}.es-tabs--bottom .es-tabs__nav-wrap.is-scrollable,.es-tabs--top .es-tabs__nav-wrap.is-scrollable{padding:0 20px}.es-tabs--top.es-tabs--border-card>.es-tabs__header{padding-top:9px}.es-tabs--bottom.es-tabs--border-card .es-tabs__nav,.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__nav{padding:0 8px}.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active{border-top-left-radius:8px;border-top-right-radius:8px}.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active:before{border-radius:0 0 8px;bottom:-1px;left:-9px;-webkit-box-shadow:4px 0 0 0 #fff;box-shadow:4px 0 0 0 #fff}.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active::after{border-radius:0 0 0 8px;bottom:-1px;right:-9px;-webkit-box-shadow:-4px 0 0 0 #fff;box-shadow:-4px 0 0 0 #fff}.es-tabs--bottom .es-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.es-tabs--bottom.es-tabs--border-card .es-tabs__header.is-bottom{padding-bottom:9px;border-bottom:0;border-top:1px solid #dfebf6}.es-tabs--bottom.es-tabs--border-card .es-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-bottom{margin:0 -1px -1px}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active:before{border-radius:0 8px 0 0;top:-1px;left:-9px;-webkit-box-shadow:4px 0 0 0 #fff;box-shadow:4px 0 0 0 #fff}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active::after{border-radius:8px 0 0;top:-1px;right:-9px;-webkit-box-shadow:-4px 0 0 0 #fff;box-shadow:-4px 0 0 0 #fff}.es-tabs--left,.es-tabs--right{overflow:hidden}.es-tabs--left .es-tabs__header.is-left,.es-tabs--left .es-tabs__header.is-right,.es-tabs--left .es-tabs__nav-scroll,.es-tabs--left .es-tabs__nav-wrap.is-left,.es-tabs--left .es-tabs__nav-wrap.is-right,.es-tabs--right .es-tabs__header.is-left,.es-tabs--right .es-tabs__header.is-right,.es-tabs--right .es-tabs__nav-scroll,.es-tabs--right .es-tabs__nav-wrap.is-left,.es-tabs--right .es-tabs__nav-wrap.is-right{height:100%}.es-tabs--left .es-tabs__active-bar.is-left,.es-tabs--left .es-tabs__active-bar.is-right,.es-tabs--right .es-tabs__active-bar.is-left,.es-tabs--right .es-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.es-tabs--left .es-tabs__nav-wrap.is-left,.es-tabs--left .es-tabs__nav-wrap.is-right,.es-tabs--right .es-tabs__nav-wrap.is-left,.es-tabs--right .es-tabs__nav-wrap.is-right{margin-bottom:0}.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-next,.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-next,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-next,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-next,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-next i,.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev i,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-next i,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev i,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-next i,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev i,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-next i,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev{left:auto;top:0}.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-next,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-next,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-next,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-next{right:auto;bottom:0}.es-tabs--left .es-tabs__active-bar.is-left,.es-tabs--left .es-tabs__nav-wrap.is-left::after{right:0;left:auto}.es-tabs--left .es-tabs__nav-wrap.is-left.is-scrollable,.es-tabs--left .es-tabs__nav-wrap.is-right.is-scrollable,.es-tabs--right .es-tabs__nav-wrap.is-left.is-scrollable,.es-tabs--right .es-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.es-tabs--left .es-tabs__nav-wrap.is-left::after,.es-tabs--left .es-tabs__nav-wrap.is-right::after,.es-tabs--right .es-tabs__nav-wrap.is-left::after,.es-tabs--right .es-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.es-tabs--left .es-tabs__nav.is-left,.es-tabs--left .es-tabs__nav.is-right,.es-tabs--right .es-tabs__nav.is-left,.es-tabs--right .es-tabs__nav.is-right{float:none}.es-tabs--left .es-tabs__item.is-left,.es-tabs--left .es-tabs__item.is-right,.es-tabs--right .es-tabs__item.is-left,.es-tabs--right .es-tabs__item.is-right{display:block}.es-tabs--left.es-tabs--card .es-tabs__active-bar.is-left,.es-tabs--right.es-tabs--card .es-tabs__active-bar.is-right{display:none}.es-tabs--left .es-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.es-tabs--left .es-tabs__item.is-left{text-align:right}.es-tabs--left.es-tabs--card .es-tabs__item.is-left{border-left:none;border-right:1px solid #d9e2ec;border-bottom:none;border-top:1px solid #d9e2ec;text-align:left}.es-tabs--left.es-tabs--card .es-tabs__item.is-left:first-child{border-right:1px solid #d9e2ec;border-top:none}.es-tabs--left.es-tabs--card .es-tabs__item.is-left.is-active{border:1px solid #d9e2ec;border-right-color:#fff;border-left:none;border-bottom:none}.es-tabs--left.es-tabs--card .es-tabs__item.is-left.is-active:first-child{border-top:none}.es-tabs--left.es-tabs--card .es-tabs__item.is-left.is-active:last-child{border-bottom:none}.es-tabs--left.es-tabs--card .es-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #d9e2ec;border-right:none}.es-tabs--left.es-tabs--card .es-tabs__new-tab{float:none}.es-tabs--left.es-tabs--border-card .es-tabs__header.is-left{border-right:1px solid #dfe4ed}.es-tabs--left.es-tabs--border-card .es-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.es-tabs--left.es-tabs--border-card .es-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.es-tabs--left .es-tabs__content{height:100%}.es-tabs--right .es-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.es-tabs--right .es-tabs__nav-wrap.is-right::after{left:0;right:auto}.es-tabs--right .es-tabs__active-bar.is-right{left:0}.es-tabs--right.es-tabs--card .es-tabs__item.is-right{border-bottom:none;border-top:1px solid #d9e2ec}.es-tabs--right.es-tabs--card .es-tabs__item.is-right:first-child{border-left:1px solid #d9e2ec;border-top:none}.es-tabs--right.es-tabs--card .es-tabs__item.is-right.is-active{border:1px solid #d9e2ec;border-left-color:#fff;border-right:none;border-bottom:none}.es-tabs--right.es-tabs--card .es-tabs__item.is-right.is-active:first-child{border-top:none}.es-tabs--right.es-tabs--card .es-tabs__item.is-right.is-active:last-child{border-bottom:none}.es-tabs--right.es-tabs--card .es-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #d9e2ec;border-left:none}.es-tabs--right.es-tabs--border-card .es-tabs__header.is-right{border-left:1px solid #dfe4ed}.es-tabs--right.es-tabs--border-card .es-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.es-tabs--right.es-tabs--border-card .es-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}
1
+ @charset "UTF-8";.es-tabs__nav-wrap:not(.is-hide)::after,.es-tabs__prepend:not(.is-hide)::after{bottom:0;width:100%;background-color:#d9e2ec;z-index:1;content:"";left:0}.es-tabs{height:100%}.es-tabs__header{height:50px;padding:0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex}.es-tabs__prepend{line-height:40px;position:relative}.es-tabs__prepend:not(.is-hide)::after{position:absolute;height:2px}.es-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#1890ff;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.es-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.es-tabs__new-tab .es-icon-jia{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.es-tabs__new-tab:hover{color:#1890ff}.es-tabs__nav-main{-webkit-box-flex:1;-ms-flex:1;flex:1;position:relative}.es-tabs__nav-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.es-tabs__nav-wrap:not(.is-hide)::after{position:absolute;height:1px}.es-tabs__nav-scroll{overflow:hidden}.es-tabs__nav-scroll::after{content:"";display:table;clear:both}.es-tabs--border-card>.es-tabs__header .es-tabs__nav-wrap::after,.es-tabs--card>.es-tabs__header .es-tabs__nav-wrap::after{content:none}.es-tabs__nav-next,.es-tabs__nav-prev{position:absolute;cursor:pointer;line-height:42px;font-size:12px;padding:0 4px;color:#999}.es-tabs__nav-next{right:0}.es-tabs__nav-prev{left:0}.es-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.es-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.es-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.es-tabs__item{padding:0 20px;height:49px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:49px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#333;position:relative}.es-tabs__item:focus,.es-tabs__item:focus:active{outline:0}.es-tabs__item .es-badge__content.is-fixed{right:4px;-webkit-transform:translateY(0) translateX(100%);transform:translateY(0) translateX(100%)}.es-tabs__item .es-icon-guanbi{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px;position:relative;top:1px}.es-tabs__item .es-icon-guanbi:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.es-tabs__item .es-icon-guanbi:hover{background-color:rgba(0,0,0,.25);color:#fff}.es-tabs__item.is-active{color:#1890ff}.es-tabs__item:hover{color:#1890ff;cursor:pointer}.es-tabs__item.is-disabled{color:rgba(0,0,0,.25);cursor:default}.es-tabs__content{overflow:hidden;position:relative;height:calc(100% - 48px)}.es-tabs--card>.es-tabs__header{border-bottom:1px solid #d9e2ec}.es-tabs--card>.es-tabs__header .es-tabs__nav{border:1px solid #d9e2ec;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.es-tabs--card>.es-tabs__header .es-tabs__active-bar{display:none}.es-tabs--card>.es-tabs__header .es-tabs__item .es-icon-guanbi{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:14px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.es-tabs--card>.es-tabs__header .es-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #d9e2ec;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.es-tabs--card>.es-tabs__header .es-tabs__item:first-child{border-left:none}.es-tabs--card>.es-tabs__header .es-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.es-tabs--card>.es-tabs__header .es-tabs__item.is-closable:hover .es-icon-guanbi{width:14px}.es-tabs--card>.es-tabs__header .es-tabs__item.is-active{border-bottom-color:#fff}.es-tabs--card>.es-tabs__header .es-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.es-tabs--card>.es-tabs__header .es-tabs__item.is-active.is-closable .es-icon-guanbi{width:14px}.es-tabs--border-card{background:#fff;border:1px solid #dfebf6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.es-tabs--border-card>.es-tabs__content{padding:12px}.es-tabs--border-card>.es-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #fff;margin:0}.es-tabs--border-card>.es-tabs__header .es-tabs__item{border:1px solid transparent;color:#999;height:40px;line-height:40px}.es-tabs--border-card>.es-tabs__header .es-tabs__item+.es-tabs__item,.es-tabs--border-card>.es-tabs__header .es-tabs__item:first-child{margin-left:-1px}.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active{color:#1890ff;background-color:#fff;border-right-color:#fff;border-left-color:#fff}.es-tabs--border-card>.es-tabs__header .es-tabs__item:not(.is-disabled):hover{color:#1890ff}.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-disabled{color:rgba(0,0,0,.25)}.es-tabs--border-card>.es-tabs__header .is-scrollable .es-tabs__item:first-child{margin-left:0}.es-tabs--bottom.es-tabs--border-card>.es-tabs__header .es-tabs__item:nth-child(2),.es-tabs--bottom.es-tabs--card>.es-tabs__header .es-tabs__item:nth-child(2),.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item:nth-child(2),.es-tabs--top.es-tabs--card>.es-tabs__header .es-tabs__item:nth-child(2){padding-left:20px}.es-tabs--bottom.es-tabs--border-card>.es-tabs__header .es-tabs__item:last-child,.es-tabs--bottom.es-tabs--card>.es-tabs__header .es-tabs__item:last-child,.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item:last-child,.es-tabs--top.es-tabs--card>.es-tabs__header .es-tabs__item:last-child{padding-right:20px}.es-tabs--bottom .es-tabs__nav-wrap,.es-tabs--top .es-tabs__nav-wrap{min-width:0}.es-tabs--bottom .es-tabs__nav-wrap.is-scrollable,.es-tabs--top .es-tabs__nav-wrap.is-scrollable{padding:0 20px;position:relative}.es-tabs--top.es-tabs--border-card>.es-tabs__header{padding-top:9px}.es-tabs--bottom.es-tabs--border-card .es-tabs__nav,.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__nav{padding:0 8px}.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active{border-top-left-radius:8px;border-top-right-radius:8px}.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active::after,.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active:before{content:"";position:absolute;width:8px;height:8px;background-color:#f5f5f5}.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active:before{border-radius:0 0 8px;bottom:-1px;left:-9px;-webkit-box-shadow:4px 0 0 0 #fff;box-shadow:4px 0 0 0 #fff}.es-tabs--top.es-tabs--border-card>.es-tabs__header .es-tabs__item.is-active::after{border-radius:0 0 0 8px;bottom:-1px;right:-9px;-webkit-box-shadow:-4px 0 0 0 #fff;box-shadow:-4px 0 0 0 #fff}.es-tabs--bottom .es-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.es-tabs--bottom.es-tabs--border-card .es-tabs__header.is-bottom{padding-bottom:9px;border-bottom:0;border-top:1px solid #dfebf6}.es-tabs--bottom.es-tabs--border-card .es-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-bottom{margin:0 -1px -1px}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active::after,.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active:before{content:"";position:absolute;width:8px;height:8px;background-color:#f5f5f5}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active:before{border-radius:0 8px 0 0;top:-1px;left:-9px;-webkit-box-shadow:4px 0 0 0 #fff;box-shadow:4px 0 0 0 #fff}.es-tabs--bottom.es-tabs--border-card .es-tabs__item.is-active::after{border-radius:8px 0 0;top:-1px;right:-9px;-webkit-box-shadow:-4px 0 0 0 #fff;box-shadow:-4px 0 0 0 #fff}.es-tabs--left,.es-tabs--right{overflow:hidden}.es-tabs--left .es-tabs__header.is-left,.es-tabs--left .es-tabs__header.is-right,.es-tabs--left .es-tabs__nav-scroll,.es-tabs--left .es-tabs__nav-wrap.is-left,.es-tabs--left .es-tabs__nav-wrap.is-right,.es-tabs--right .es-tabs__header.is-left,.es-tabs--right .es-tabs__header.is-right,.es-tabs--right .es-tabs__nav-scroll,.es-tabs--right .es-tabs__nav-wrap.is-left,.es-tabs--right .es-tabs__nav-wrap.is-right{height:100%}.es-tabs--left .es-tabs__active-bar.is-left,.es-tabs--left .es-tabs__active-bar.is-right,.es-tabs--right .es-tabs__active-bar.is-left,.es-tabs--right .es-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.es-tabs--left .es-tabs__nav-wrap.is-left,.es-tabs--left .es-tabs__nav-wrap.is-right,.es-tabs--right .es-tabs__nav-wrap.is-left,.es-tabs--right .es-tabs__nav-wrap.is-right{margin-bottom:0}.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-next,.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-next,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-next,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-next,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-next i,.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev i,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-next i,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev i,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-next i,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev i,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-next i,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-prev,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-prev{left:auto;top:0}.es-tabs--left .es-tabs__nav-wrap.is-left>.es-tabs__nav-next,.es-tabs--left .es-tabs__nav-wrap.is-right>.es-tabs__nav-next,.es-tabs--right .es-tabs__nav-wrap.is-left>.es-tabs__nav-next,.es-tabs--right .es-tabs__nav-wrap.is-right>.es-tabs__nav-next{right:auto;bottom:0}.es-tabs--left .es-tabs__active-bar.is-left,.es-tabs--left .es-tabs__nav-wrap.is-left::after{right:0;left:auto}.es-tabs--left .es-tabs__nav-wrap.is-left.is-scrollable,.es-tabs--left .es-tabs__nav-wrap.is-right.is-scrollable,.es-tabs--right .es-tabs__nav-wrap.is-left.is-scrollable,.es-tabs--right .es-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.es-tabs--left .es-tabs__nav-wrap.is-left::after,.es-tabs--left .es-tabs__nav-wrap.is-right::after,.es-tabs--right .es-tabs__nav-wrap.is-left::after,.es-tabs--right .es-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.es-tabs--left .es-tabs__nav.is-left,.es-tabs--left .es-tabs__nav.is-right,.es-tabs--right .es-tabs__nav.is-left,.es-tabs--right .es-tabs__nav.is-right{float:none}.es-tabs--left .es-tabs__item.is-left,.es-tabs--left .es-tabs__item.is-right,.es-tabs--right .es-tabs__item.is-left,.es-tabs--right .es-tabs__item.is-right{display:block}.es-tabs--left.es-tabs--card .es-tabs__active-bar.is-left,.es-tabs--right.es-tabs--card .es-tabs__active-bar.is-right{display:none}.es-tabs--left .es-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.es-tabs--left .es-tabs__item.is-left{text-align:right}.es-tabs--left.es-tabs--card .es-tabs__item.is-left{border-left:none;border-right:1px solid #d9e2ec;border-bottom:none;border-top:1px solid #d9e2ec;text-align:left}.es-tabs--left.es-tabs--card .es-tabs__item.is-left:first-child{border-right:1px solid #d9e2ec;border-top:none}.es-tabs--left.es-tabs--card .es-tabs__item.is-left.is-active{border:1px solid #d9e2ec;border-right-color:#fff;border-left:none;border-bottom:none}.es-tabs--left.es-tabs--card .es-tabs__item.is-left.is-active:first-child{border-top:none}.es-tabs--left.es-tabs--card .es-tabs__item.is-left.is-active:last-child{border-bottom:none}.es-tabs--left.es-tabs--card .es-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #d9e2ec;border-right:none}.es-tabs--left.es-tabs--card .es-tabs__new-tab{float:none}.es-tabs--left.es-tabs--border-card .es-tabs__header.is-left{border-right:1px solid #dfe4ed}.es-tabs--left.es-tabs--border-card .es-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.es-tabs--left.es-tabs--border-card .es-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.es-tabs--left .es-tabs__content{height:100%}.es-tabs--right .es-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.es-tabs--right .es-tabs__nav-wrap.is-right::after{left:0;right:auto}.es-tabs--right .es-tabs__active-bar.is-right{left:0}.es-tabs--right.es-tabs--card .es-tabs__item.is-right{border-bottom:none;border-top:1px solid #d9e2ec}.es-tabs--right.es-tabs--card .es-tabs__item.is-right:first-child{border-left:1px solid #d9e2ec;border-top:none}.es-tabs--right.es-tabs--card .es-tabs__item.is-right.is-active{border:1px solid #d9e2ec;border-left-color:#fff;border-right:none;border-bottom:none}.es-tabs--right.es-tabs--card .es-tabs__item.is-right.is-active:first-child{border-top:none}.es-tabs--right.es-tabs--card .es-tabs__item.is-right.is-active:last-child{border-bottom:none}.es-tabs--right.es-tabs--card .es-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #d9e2ec;border-left:none}.es-tabs--right.es-tabs--border-card .es-tabs__header.is-right{border-left:1px solid #dfe4ed}.es-tabs--right.es-tabs--border-card .es-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.es-tabs--right.es-tabs--border-card .es-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}
package/lib/wujie.js CHANGED
@@ -3549,7 +3549,7 @@ __webpack_require__.d(__webpack_exports__, "preloadApp", function() { return /*
3549
3549
  __webpack_require__.d(__webpack_exports__, "destroyApp", function() { return /* reexport */ destroyApp; });
3550
3550
  __webpack_require__.d(__webpack_exports__, "refreshApp", function() { return /* reexport */ refreshApp; });
3551
3551
 
3552
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/wujie/src/wujie.vue?vue&type=template&id=dd6facc4&
3552
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/wujie/src/wujie.vue?vue&type=template&id=3fa66ad9&
3553
3553
  var render = function () {
3554
3554
  var _vm = this
3555
3555
  var _h = _vm.$createElement
@@ -3601,7 +3601,7 @@ var staticRenderFns = []
3601
3601
  render._withStripped = true
3602
3602
 
3603
3603
 
3604
- // CONCATENATED MODULE: ./packages/wujie/src/wujie.vue?vue&type=template&id=dd6facc4&
3604
+ // CONCATENATED MODULE: ./packages/wujie/src/wujie.vue?vue&type=template&id=3fa66ad9&
3605
3605
 
3606
3606
  // EXTERNAL MODULE: external "vue"
3607
3607
  var external_vue_ = __webpack_require__(2);
@@ -3757,7 +3757,6 @@ var bus = external_wujie_vue2_default.a.bus,
3757
3757
  jsAfterLoaders: [{
3758
3758
  callback: function callback() {
3759
3759
  if (_this.loading) {
3760
- console.log('[wujie] 脚本执行完成,关闭 loading', _this.name);
3761
3760
  _this.loading = false;
3762
3761
  _this._clearTimer();
3763
3762
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eoss",
3
- "version": "0.1.0-alpha.30",
3
+ "version": "0.1.0-alpha.32",
4
4
  "description": "eoss内部业务组件",
5
5
  "main": "lib/eoss.common.js",
6
6
  "files": [
@@ -361,6 +361,8 @@ export default {
361
361
  if (errors.length) {
362
362
  // 修不了的错误展示在底部状态栏,拦截保存
363
363
  this.$refs.editorRef.setErrors(errors);
364
+ // 拦截时给出明确提示,避免「按了保存却没有任何反应」的错觉
365
+ this.$message.warning('校验未通过,保存已拦截:' + errors[0].message);
364
366
  return;
365
367
  }
366
368
  this.$emit('save', value);
@@ -232,6 +232,26 @@ export default {
232
232
  scriptContent
233
233
  );
234
234
  },
235
+ /**
236
+ * 字段值统一格式化为源码输出:对象或可解析的 JSON 字符串换行展开
237
+ * (与整体源码编辑器的 serialize 缩进对齐);不可解析的字符串原样输出
238
+ */
239
+ prettyJson(val) {
240
+ if (val === null || val === undefined || val === '') {
241
+ return '';
242
+ }
243
+ if (typeof val === 'object') {
244
+ return JSON.stringify(val, null, 2);
245
+ }
246
+ if (typeof val === 'string') {
247
+ try {
248
+ return JSON.stringify(JSON.parse(val), null, 2);
249
+ } catch (e) {
250
+ return val;
251
+ }
252
+ }
253
+ return String(val);
254
+ },
235
255
  /**
236
256
  * 构造完整的 Vue 组件源码(template + script + style)
237
257
  * @returns {String} 完整的 Vue 组件源码
@@ -240,36 +260,19 @@ export default {
240
260
  const scriptParts = [];
241
261
 
242
262
  // inject(始终输出,确保源码编辑器中可见)
243
- const injectValue = this.models.inject;
244
- if (injectValue && typeof injectValue === 'object') {
245
- scriptParts.push(` inject: ${JSON.stringify(injectValue, null, 2)}`);
246
- } else if (injectValue && injectValue !== '{}') {
247
- scriptParts.push(` inject: ${injectValue}`);
248
- } else {
249
- scriptParts.push(` inject: {}`);
250
- }
263
+ scriptParts.push(
264
+ ` inject: ${this.prettyJson(this.models.inject) || '{}'}`
265
+ );
251
266
 
252
267
  // provide(始终输出)
253
- const provideValue = this.models.provide;
254
- if (provideValue && typeof provideValue === 'object') {
255
- scriptParts.push(` provide: ${JSON.stringify(provideValue, null, 2)}`);
256
- } else if (provideValue && provideValue !== '{}') {
257
- scriptParts.push(` provide: ${provideValue}`);
258
- } else {
259
- scriptParts.push(` provide: {}`);
260
- }
268
+ scriptParts.push(
269
+ ` provide: ${this.prettyJson(this.models.provide) || '{}'}`
270
+ );
261
271
 
262
272
  // props
263
- const propsValue = this.models.props;
264
- if (propsValue && Object.keys(propsValue).length > 0) {
265
- const propsStr =
266
- typeof propsValue === 'object'
267
- ? JSON.stringify(propsValue, null, 2)
268
- : propsValue;
269
- scriptParts.push(` props: ${propsStr}`);
270
- } else {
271
- scriptParts.push(` props: {}`);
272
- }
273
+ scriptParts.push(
274
+ ` props: ${this.prettyJson(this.models.props) || '{}'}`
275
+ );
273
276
 
274
277
  // data
275
278
  const dataValue = this.models.data;
@@ -300,40 +303,19 @@ export default {
300
303
  }
301
304
 
302
305
  // computed
303
- const computedValue = this.models.computed;
304
- if (computedValue && Object.keys(computedValue).length > 0) {
305
- const computedStr =
306
- typeof computedValue === 'object'
307
- ? JSON.stringify(computedValue, null, 2)
308
- : computedValue;
309
- scriptParts.push(` computed: ${computedStr}`);
310
- } else {
311
- scriptParts.push(` computed: {}`);
312
- }
306
+ scriptParts.push(
307
+ ` computed: ${this.prettyJson(this.models.computed) || '{}'}`
308
+ );
313
309
 
314
310
  // watch
315
- const watchValue = this.models.watch;
316
- if (watchValue && Object.keys(watchValue).length > 0) {
317
- const watchStr =
318
- typeof watchValue === 'object'
319
- ? JSON.stringify(watchValue, null, 2)
320
- : watchValue;
321
- scriptParts.push(` watch: ${watchStr}`);
322
- } else {
323
- scriptParts.push(` watch: {}`);
324
- }
311
+ scriptParts.push(
312
+ ` watch: ${this.prettyJson(this.models.watch) || '{}'}`
313
+ );
325
314
 
326
315
  // methods
327
- const methodsValue = this.models.methods;
328
- if (methodsValue && Object.keys(methodsValue).length > 0) {
329
- const methodsStr =
330
- typeof methodsValue === 'object'
331
- ? JSON.stringify(methodsValue, null, 2)
332
- : methodsValue;
333
- scriptParts.push(` methods: ${methodsStr}`);
334
- } else {
335
- scriptParts.push(` methods: {}`);
336
- }
316
+ scriptParts.push(
317
+ ` methods: ${this.prettyJson(this.models.methods) || '{}'}`
318
+ );
337
319
 
338
320
  // 生命周期钩子
339
321
  const hooks = [
@@ -438,7 +438,9 @@ export default {
438
438
  // 在 children 中查找(HTML 元素)
439
439
  if (this.page.children && this.page.children.length) {
440
440
  const found = this.findInTree(this.page.children, this.selected);
441
- if (found && found.id) return true;
441
+ // 只有原生 HTML 标签才算 HTML 元素(脚本级字段归页面);
442
+ // 业务组件(如 backlog)必须回写自身,否则编辑会误落到 page 上
443
+ if (found && found.id) return this.isNativeHtmlTag(found.name);
442
444
  }
443
445
  return false;
444
446
  },
@@ -40,7 +40,7 @@
40
40
  <es-dialog
41
41
  title="信息完善"
42
42
  width="600px"
43
- height="380px"
43
+ height="442px"
44
44
  :visible.sync="visible"
45
45
  :close-on-click-modal="false"
46
46
  >
@@ -48,6 +48,9 @@
48
48
  <es-form-item label="名称" prop="name">
49
49
  <es-input v-model="form.name" placeholder="请输入名称" />
50
50
  </es-form-item>
51
+ <es-form-item label="编码" prop="code">
52
+ <es-input v-model="form.code" placeholder="请输入编码" />
53
+ </es-form-item>
51
54
  <es-form-item label="描述" prop="description">
52
55
  <es-input
53
56
  type="textarea"
@@ -293,7 +296,10 @@ export default {
293
296
  },
294
297
  rules: {
295
298
  name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
296
- code: [{ required: true, message: '请输入编码', trigger: 'blur' }]
299
+ code: [
300
+ { required: true, message: '请输入编码', trigger: 'blur' },
301
+ { pattern: /^[a-zA-Z_][a-zA-Z0-9_]*$/, trigger: 'blur' }
302
+ ]
297
303
  //title: [{ required: true, message: '请输入页面标题', trigger: 'blur' }],
298
304
  //description: [
299
305
  // { required: true, message: '请输入描述', trigger: 'blur' }
@@ -130,7 +130,6 @@ export default {
130
130
  * @param page 页面对象
131
131
  */
132
132
  handleSelect(data) {
133
- console.log('handleSelect', data);
134
133
  if (data.childrens && data.childrens.length) {
135
134
  return;
136
135
  }
@@ -22,7 +22,7 @@
22
22
  :is="newNode.name"
23
23
  v-bind="cleanProps"
24
24
  v-on="newNode.events"
25
- :key="newNode.id"
25
+ :key="instanceKey"
26
26
  v-show="
27
27
  newNode.directives['show'] !== undefined
28
28
  ? newNode.directives['show']
@@ -238,6 +238,20 @@ export default {
238
238
  }
239
239
  return result;
240
240
  },
241
+ /**
242
+ * 组件实例 key:节点 id + props 签名。
243
+ * 业务组件(如 backlog)在 created 里按 props 拉数据、不 watch prop 变化,
244
+ * 源码视图改完 props 后必须换 key 强制重挂载,画布才会刷新
245
+ */
246
+ instanceKey() {
247
+ let sig = '';
248
+ try {
249
+ sig = JSON.stringify(this.cleanProps);
250
+ } catch (e) {
251
+ sig = '';
252
+ }
253
+ return (this.newNode ? this.newNode.id : '') + ':' + sig;
254
+ },
241
255
  /**
242
256
  * 根据父容器布局类型调整子元素样式
243
257
  * grid 模式下通过 grid-column: span N 控制跨列
@@ -73,6 +73,13 @@ function genStyle(node) {
73
73
  return " :style='{ " + parts.join(', ') + " }'";
74
74
  }
75
75
 
76
+ /** 属性值转义:& 与 " 转实体,解析端统一解码 */
77
+ function escapeAttr(val) {
78
+ return String(val)
79
+ .replace(/&/g, '&amp;')
80
+ .replace(/"/g, '&quot;');
81
+ }
82
+
76
83
  /** 生成节点的 props 属性串 */
77
84
  function genProps(node) {
78
85
  const props = node.props;
@@ -106,8 +113,16 @@ function genProps(node) {
106
113
  if (typeof val === 'number') {
107
114
  return attrs + ' :' + key + '="' + val + '"';
108
115
  }
109
- // 复杂值用绑定语法输出
110
- return attrs + ' :' + key + '="' + serialize(val, 0).replace(/"/g, '&quot;') + '"';
116
+ // 复杂值用绑定语法输出:单引号属性 + 紧凑 JSON(不转实体、不换行),
117
+ // 解析端据此还原为真实数组/对象;值内单引号转 &#39; 避免截断属性
118
+ return (
119
+ attrs +
120
+ ' :' +
121
+ key +
122
+ "='" +
123
+ JSON.stringify(val).replace(/'/g, '&#39;') +
124
+ "'"
125
+ );
111
126
  }, '');
112
127
  }
113
128
 
@@ -216,15 +231,20 @@ export function genNode(node, indent) {
216
231
 
217
232
  // 节点 id 以 data-id 输出,源码编辑后能原样解析回来
218
233
  const idAttr = node.id ? ' data-id="' + node.id + '"' : '';
234
+ // description 是编辑器标签(元信息),以属性承载,不作为插槽文本渲染;
235
+ // 解析端对 description 属性单独识别,旧源码的文本写法仍兼容
236
+ const descAttr = node.description
237
+ ? ' description="' + escapeAttr(node.description) + '"'
238
+ : '';
219
239
  // 输出顺序:HTML 属性 + 组件 props + 指令 + 事件 + 样式
220
- const attrStr = idAttr + genAttrs(node) + genProps(node) + genDirectives(node) + genEvents(node) + genStyle(node);
240
+ const attrStr = idAttr + descAttr + genAttrs(node) + genProps(node) + genDirectives(node) + genEvents(node) + genStyle(node);
221
241
  const children = getChildren(node);
222
242
  const lines = [];
223
243
 
224
244
  // 检查是否有 text 指令
225
245
  const vText = node.directives && node.directives['text'];
226
246
 
227
- if (!children.length && !node.description && !vText) {
247
+ if (!children.length && !vText) {
228
248
  lines.push(pad + '<' + name + attrStr + '></' + name + '>');
229
249
  return lines.join('\n');
230
250
  }
@@ -232,17 +252,11 @@ export function genNode(node, indent) {
232
252
  if (vText) {
233
253
  // v-text 属性转换为 {{xxx}} 形式
234
254
  lines.push(pad + INDENT + '{{' + vText + '}}');
235
- } else {
236
- // 先输出 description(纯文本),再输出 children
237
- if (node.description) {
238
- lines.push(pad + INDENT + node.description);
239
- }
240
- if (children.length) {
241
- // 子节点继续递归下钻
242
- children.forEach((child) => {
243
- lines.push(genNode(child, indent + 1));
244
- });
245
- }
255
+ } else if (children.length) {
256
+ // 子节点继续递归下钻
257
+ children.forEach((child) => {
258
+ lines.push(genNode(child, indent + 1));
259
+ });
246
260
  }
247
261
  lines.push(pad + '</' + name + '>');
248
262
  return lines.join('\n');
@@ -43,7 +43,20 @@ function findBalanced(text, openIndex) {
43
43
  return -1;
44
44
  }
45
45
 
46
- /** 解析标签属性:支持单/双引号,返回 { name, value } 列表 */
46
+ /** 属性值实体解码:与生成端的 escapeAttr / &#39; 转义对应 */
47
+ function decodeEntities(val) {
48
+ if (typeof val !== 'string') {
49
+ return val;
50
+ }
51
+ return val
52
+ .replace(/&quot;/g, '"')
53
+ .replace(/&#39;/g, "'")
54
+ .replace(/&lt;/g, '<')
55
+ .replace(/&gt;/g, '>')
56
+ .replace(/&amp;/g, '&');
57
+ }
58
+
59
+ /** 解析标签属性:支持单/双引号,返回 { name, value, quote } 列表 */
47
60
  function parseAttrs(str) {
48
61
  const attrs = [];
49
62
  const re = /([^\s=/>]+)(?:\s*=\s*("([^"]*)"|'([^']*)'))?/g;
@@ -52,9 +65,13 @@ function parseAttrs(str) {
52
65
  if (!match[1]) {
53
66
  continue;
54
67
  }
55
- const value =
68
+ const raw =
56
69
  match[3] !== undefined ? match[3] : match[4] !== undefined ? match[4] : null;
57
- attrs.push({ name: match[1], value: value });
70
+ attrs.push({
71
+ name: match[1],
72
+ value: raw === null ? null : decodeEntities(raw),
73
+ quote: match[3] !== undefined ? '"' : "'"
74
+ });
58
75
  }
59
76
  return attrs;
60
77
  }
@@ -69,6 +86,11 @@ function applyAttrs(node, attrs) {
69
86
  node.id = String(value);
70
87
  return;
71
88
  }
89
+ if (name === 'description') {
90
+ // 生成器以属性承载编辑器标签(元信息),不作为插槽文本
91
+ node.description = String(value);
92
+ return;
93
+ }
72
94
  if (name === ':style') {
73
95
  // 支持生成器输出的对象字面量形式
74
96
  if (typeof value === 'string' && value.trim().charAt(0) === '{') {
@@ -89,6 +111,16 @@ function applyAttrs(node, attrs) {
89
111
  node.props = node.props || {};
90
112
  const key = name.slice(1);
91
113
  const trimmed = String(value).trim();
114
+ // 单引号且以 [ / { 开头:生成器的复杂值载体(紧凑 JSON),还原为真实数组/对象;
115
+ // 双引号仍按表达式字符串处理,保持历史语义
116
+ if (attr.quote === "'" && /^[[{]/.test(trimmed)) {
117
+ try {
118
+ node.props[key] = new Function('return (' + trimmed + ');')();
119
+ } catch (e) {
120
+ node.props[key] = String(value);
121
+ }
122
+ return;
123
+ }
92
124
  // 数字/布尔直接还原类型,其它保留表达式字符串
93
125
  if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
94
126
  node.props[key] = Number(trimmed);