fl-web-component 2.0.14 → 2.0.16

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.
@@ -1 +1 @@
1
- @charset "UTF-8";.fl-model-containor[data-v-3e15de76]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-3e15de76] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-3e15de76] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-3e15de76] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-3e15de76] .measure-label-font{word-break:break-all}[data-v-3e15de76] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-3e15de76]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-3e15de76]{opacity:1;visibility:visible}.loading-content[data-v-3e15de76]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-3e15de76]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-3e15de76 1s linear infinite;animation:spin-3e15de76 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-3e15de76{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-3e15de76{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-3e15de76]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-3e15de76]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-3e15de76]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-3e15de76]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}#konva-container[data-v-21bcf2d9]{z-index:3;width:100%;height:100%;cursor:pointer;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{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}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
1
+ @charset "UTF-8";.fl-model-containor[data-v-3e15de76]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-3e15de76] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-3e15de76] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-3e15de76] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-3e15de76] .measure-label-font{word-break:break-all}[data-v-3e15de76] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-3e15de76]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-3e15de76]{opacity:1;visibility:visible}.loading-content[data-v-3e15de76]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-3e15de76]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-3e15de76 1s linear infinite;animation:spin-3e15de76 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-3e15de76{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-3e15de76{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-3e15de76]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-3e15de76]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-3e15de76]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-3e15de76]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}#konva-container[data-v-b313ab6c]{z-index:3;width:100%;height:100%;cursor:pointer;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{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}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fl-web-component",
3
- "version": "2.0.14",
3
+ "version": "2.0.16",
4
4
  "scripts": {
5
5
  "postinstall": "patch-package",
6
6
  "tip1": "仅调试本组件不涉及业务组件,请执行dev",
@@ -55,6 +55,8 @@ export default {
55
55
  data() {
56
56
  return {
57
57
  bounds: null,
58
+ bounds1:null,
59
+
58
60
  };
59
61
  },
60
62
  created() {
@@ -118,33 +120,61 @@ export default {
118
120
  };
119
121
  konvaStage.position(newPos);
120
122
  });
121
- konvaStage.on('pointerdblclick', e => {
123
+ //双击鼠标滚轮
124
+ konvaStage.on("pointerdblclick", (e) => {
125
+ /*
122
126
  konvaStage.scale({
123
127
  x: 1,
124
128
  y: 1,
125
129
  });
126
- let x = -parseFloat(this.bounds.minX);
127
- let y = -parseFloat(this.bounds.minY);
130
+ let x=-parseFloat(this.bounds.minX);
131
+ let y =-parseFloat(this.bounds.minY);
128
132
 
129
133
  konvaStage.setX(x);
130
134
  konvaStage.setY(y); // 750
131
135
 
132
136
  //算一下舞台中点
133
- let width = konvaStage.width();
134
- let height = konvaStage.height();
135
- let x1 = width / 2;
136
- let y1 = height / 2;
137
+ let width=konvaStage.width();
138
+ let height=konvaStage.height()
139
+ let x1=width/2;
140
+ let y1=height/2;
137
141
 
138
142
  //算包围盒宽高
139
143
 
140
- let boundsWidth = this.bounds.maxX - this.bounds.minX;
141
- let boundsHeight = Math.abs(Math.abs(this.bounds.maxY) - Math.abs(this.bounds.minY));
144
+ let boundsWidth=this.bounds.maxX-this.bounds.minX;
145
+ let boundsHeight=Math.abs(Math.abs(this.bounds.maxY)-Math.abs(this.bounds.minY));
146
+
147
+ let x2=x+x1-(boundsWidth/2);
148
+ let y2=y+y1-(boundsHeight/2)
149
+
142
150
 
143
- let x2 = x + x1 - boundsWidth / 2;
144
- let y2 = y + y1 - boundsHeight / 2;
145
151
 
146
152
  konvaStage.setX(x2);
147
153
  konvaStage.setY(y2); // 750
154
+
155
+
156
+
157
+
158
+ */
159
+
160
+
161
+
162
+ const { scale, x, y } = this.calculateScaleAndPosition(
163
+ this.bounds,
164
+ konvaStage.width(),
165
+ konvaStage.height(),
166
+ 0.05 // 5% 边距
167
+ );
168
+
169
+ console.log("test2:");
170
+ console.log(this.bounds)
171
+
172
+
173
+ konvaStage.position({ x: x, y: y });
174
+ konvaStage.scale({ x: scale, y: scale });
175
+
176
+ konvaStage.batchDraw();
177
+
148
178
  });
149
179
  });
150
180
 
@@ -153,6 +183,49 @@ export default {
153
183
  //销毁方法
154
184
 
155
185
  methods: {
186
+ calculateScaleAndPosition(contentBounds, stageWidth, stageHeight, padding = 0.1) {
187
+ // 1. 计算内容的实际宽高
188
+ const contentWidth = contentBounds.maxX - contentBounds.minX;
189
+ const contentHeight = contentBounds.maxY - contentBounds.minY;
190
+
191
+ // 2. 处理空内容或零宽高的边界情况
192
+ if (contentWidth <= 0 || contentHeight <= 0) {
193
+ return {
194
+ scale: 1,
195
+ x: stageWidth / 2,
196
+ y: stageHeight / 2
197
+ };
198
+ }
199
+
200
+ // 3. 计算可用区域(留出边距)
201
+ const availableWidth = stageWidth * (1 - padding * 2);
202
+ const availableHeight = stageHeight * (1 - padding * 2);
203
+
204
+ // 4. 计算缩放比例(取较小的那个,确保完全显示)
205
+ const scaleX = availableWidth / contentWidth;
206
+ const scaleY = availableHeight / contentHeight;
207
+ const scale = Math.min(scaleX, scaleY);
208
+
209
+ // 5. 计算缩放后的内容尺寸
210
+ const scaledWidth = contentWidth * scale;
211
+ const scaledHeight = contentHeight * scale;
212
+
213
+ // 6. 计算居中偏移量
214
+ // 内容中心点在缩放后的位置
215
+ const contentCenterX = (contentBounds.minX + contentBounds.maxX) / 2;
216
+ const contentCenterY = (contentBounds.minY + contentBounds.maxY) / 2;
217
+
218
+ // 画布中心点
219
+ const stageCenterX = stageWidth / 2;
220
+ const stageCenterY = stageHeight / 2;
221
+
222
+ // 偏移量 = 画布中心 - 内容中心 * 缩放
223
+ const x = stageCenterX - contentCenterX * scale;
224
+ const y = stageCenterY - contentCenterY * scale;
225
+
226
+ return { scale, x, y };
227
+ },
228
+
156
229
  updateBounds(v) {
157
230
  if (this.bounds === null) {
158
231
  this.bounds = { minX: v.x, maxX: v.x, minY: v.y, maxY: v.y };
@@ -169,6 +242,23 @@ export default {
169
242
  }
170
243
  }
171
244
  },
245
+ updateBounds1(v) {
246
+ if (this.bounds1 === null) {
247
+ this.bounds1 = { minX: v.x, maxX: v.x, minY: v.y, maxY: v.y }
248
+ } else {
249
+ if (v.x < this.bounds1.minX) {
250
+ this.bounds1.minX = v.x
251
+ } else if (v.x > this.bounds1.maxX) {
252
+ this.bounds1.maxX = v.x
253
+ }
254
+ if (v.y < this.bounds1.minY) {
255
+ this.bounds1.minY = v.y
256
+ } else if (v.y > this.bounds1.maxY) {
257
+ this.bounds1.maxY = v.y
258
+ }
259
+ }
260
+
261
+ },
172
262
  //思路是计算居中包围盒,然后排除脏数据。
173
263
  loadDxf(data) {
174
264
  let _this = this;
@@ -368,111 +458,172 @@ export default {
368
458
  //doc.text("Hello world!", 10, 10);
369
459
  //doc.save("a4.pdf");
370
460
  },
371
- toPdfs(list) {
372
- let _this = this;
461
+ toPdfs(list){
462
+
463
+ let _this=this;
373
464
  const pdf = new jsPDF('l', 'px', [konvaStage.width(), konvaStage.height()]);
374
465
  const exportPixelRatio = 2; // 可以 2/3/4 自己调
375
466
 
376
- for (let i = 0; i < list.length; i++) {
377
- let data = list[i];
467
+
468
+
469
+ for(let pageIdx =0;pageIdx <list.length;pageIdx++){
470
+
471
+
472
+
473
+ let data=list[pageIdx];
378
474
  //先绘制图面
379
475
  konvaLayer.destroyChildren();
380
476
  const parser = new DxfParser();
381
477
  let dxf = parser.parse(data);
382
478
  let entities = formatEntity(dxf.entities);
383
479
  let layers = dxf.tables.layer.layers;
384
- for (let key in entities) {
480
+
481
+ //先计算包围
482
+ for(let key in entities) {
385
483
  if (entities[key]) {
386
484
  let group = [];
387
- let l = entities[key].length;
388
- let layerConfig = recordLayerConfig[key];
389
- let configParams =
390
- layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null;
485
+ let l = entities[key].length
486
+ let layerConfig = recordLayerConfig[key]
487
+ let configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null
391
488
  for (let i = 0; i < l; i++) {
392
489
  let type = entities[key][i].type;
393
- handleFn(
394
- type,
395
- dxf,
396
- entities[key][i],
397
- group,
398
- key,
399
- configParams,
400
- konvaLayer,
401
- recordLayerConfig
402
- );
490
+ handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig)
403
491
  }
404
- if (!konvaLayer) return;
492
+
405
493
  for (let i = 0; i < group.length; i++) {
494
+ let entity = group[i];
495
+ if (entity.type === 'line') {
496
+ let x1 = entity.x1;
497
+ let y1 = entity.y1;
498
+ let x2 = entity.x2;
499
+ let y2 = entity.y2;
500
+ let v1 = {};
501
+ v1.x = x1;
502
+ v1.y = y1;
503
+ let v2 = {};
504
+ v2.x = x2;
505
+ v2.y = y2;
506
+ _this.updateBounds1(v1);
507
+ _this.updateBounds1(v2);
508
+ }
509
+ if (entity.type === "polyline") {
510
+ let flag = false;
511
+ let points = entity.points;
512
+ let closed = entity.closed;
513
+
514
+ for (let j = 0; j < points.length; j++) {
515
+ let index = j % 2;
516
+ if (index === 0) {
517
+ let x = points[j];
518
+ let y = points[j + 1];
519
+ let point = {};
520
+ point.x = x;
521
+ point.y = (y);
522
+ _this.updateBounds1( point);
523
+ }
524
+
525
+ }
526
+ }
527
+ }
528
+ }
529
+ }
530
+
531
+
532
+ console.log("bounds1");
533
+ console.log(_this.bounds1);
534
+
535
+ for (let key in entities) {
536
+
537
+
538
+
539
+ if (entities[key]) {
540
+ let group = [];
541
+ let l = entities[key].length
542
+ let layerConfig = recordLayerConfig[key]
543
+ let configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null
544
+ for (let i = 0; i < l; i++) {
545
+ let type = entities[key][i].type;
546
+ handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig)
547
+ }
548
+ if (!konvaLayer) return
549
+ for(let i = 0; i < group.length;i++) {
406
550
  let entity = group[i];
407
551
  if (entity.type === 'text') {
552
+
408
553
  if (konvaLayer) konvaLayer.add(entity.obj);
409
554
  }
410
555
  }
411
556
 
412
- if (group[0].stroke == undefined) {
557
+
558
+ if( group[0].stroke==undefined){
413
559
  console.log(group);
414
- group[0].stroke = '#000';
560
+ group[0].stroke='#000';
415
561
  }
416
- let customShape = new Konva.Shape({
562
+
563
+
564
+
565
+
566
+
567
+ let customShape = new Konva.Shape({
417
568
  x: 0,
418
569
  y: 0,
419
570
  strokeWidth: 0.2,
420
- name: key.replace(/\s*/g, ''),
571
+ name: key.replace(/\s*/g, ""),
421
572
  entityId: key,
422
573
  stroke: group[0].stroke,
423
- customColor: configParams ? configParams.color : '',
574
+ customColor: configParams ? configParams.color : "",
424
575
  //visible: configParams ? configParams.visible :true,
425
- sceneFunc(context, shape) {
576
+ sceneFunc (context, shape) {
426
577
  context.beginPath();
427
- for (let i = 0; i < group.length; i++) {
578
+ for(let i = 0; i < group.length;i++){
428
579
  let entity = group[i];
429
580
 
430
- if (entity.type === 'line') {
431
- context.strokeStyle = entity.stroke;
432
- let x1 = entity.x1;
433
- let y1 = entity.y1;
434
- let x2 = entity.x2;
435
- let y2 = entity.y2;
436
- if (x1 != undefined && y1 != undefined && x2 != undefined && y2 != undefined) {
581
+
582
+
583
+ if(entity.type === 'line'){
584
+
585
+
586
+ context.strokeStyle=entity.stroke;
587
+ let x1=entity.x1;
588
+ let y1=entity.y1;
589
+ let x2=entity.x2;
590
+ let y2=entity.y2;
591
+ if(x1!=undefined&&y1!=undefined&&x2!=undefined&&y2!=undefined) {
437
592
  context.moveTo(x1, -parseFloat(y1));
438
593
  context.lineTo(x2, -parseFloat(y2));
439
594
  }
440
- let v1 = {};
441
- v1.x = x1;
442
- v1.y = y1;
443
- let v2 = {};
444
- v2.x = x2;
445
- v2.y = y2;
446
- _this.updateBounds(v1);
447
- _this.updateBounds(v2);
595
+
596
+
597
+
448
598
  }
449
- if (entity.type === 'polyline') {
450
- context.strokeStyle = entity.stroke;
599
+ if(entity.type === "polyline"){
600
+ context.strokeStyle=entity.stroke;
601
+
602
+ let flag=false;
603
+
451
604
 
452
- let flag = false;
453
605
 
454
- let points = entity.points;
606
+ let points=entity.points;
455
607
  let closed = entity.closed;
456
608
 
457
- for (let j = 0; j < points.length; j++) {
609
+
610
+
611
+ for(let j = 0; j < points.length; j++){
458
612
  let index = j % 2;
459
- if (index === 0) {
613
+ if(index === 0){
460
614
  let x = points[j];
461
- let y = points[j + 1];
615
+ let y = points[j+1];
462
616
 
463
- let point = {};
464
- point.x = x;
465
- point.y = y;
466
- _this.updateBounds(point);
467
617
 
468
- if (j === 0) {
618
+
619
+ if(j === 0){
469
620
  context.moveTo(x, y);
470
- } else {
471
- context.lineTo(x, y);
621
+ }else{
622
+ context.lineTo(x,y);
472
623
  }
473
624
  }
474
625
 
475
- if (closed) {
626
+ if(closed) {
476
627
  if (j === points.length - 1) {
477
628
  context.lineTo(points[0], points[1]);
478
629
  }
@@ -482,41 +633,81 @@ export default {
482
633
  }
483
634
  // context.closePath();
484
635
  context.fillStrokeShape(shape);
485
- },
636
+ }
486
637
  });
487
638
  if (konvaLayer) konvaLayer.add(customShape);
488
639
  }
489
640
  }
490
- konvaStage.scale({
491
- x: 2,
492
- y: 2,
493
- });
494
641
 
495
- konvaStage.setX(0);
496
- konvaStage.setY(750); // 750
642
+
643
+
644
+
645
+
646
+ const { scale, x, y } = this.calculateScaleAndPosition(
647
+ _this.bounds1,
648
+ konvaStage.width(),
649
+ konvaStage.height(),
650
+ 0.05 // 5% 边距
651
+ );
652
+ console.log("test1:")
653
+ console.log(this.bounds1);
654
+
655
+ _this.bounds1=null;
656
+
657
+
658
+
659
+
660
+ konvaStage.position({ x: x, y: y });
661
+ konvaStage.scale({ x: scale, y: scale });
662
+
663
+ konvaStage.batchDraw();
497
664
  //添加成功移动视口位置
498
665
 
499
- if (i == 0) {
666
+
667
+
668
+
669
+
670
+
671
+
672
+
673
+ if(pageIdx==0){
500
674
  pdf.addImage(
501
- konvaStage.toDataURL({ pixelRatio: 2 }),
502
- 0,
503
- 0,
504
- konvaStage.width(),
505
- konvaStage.height()
675
+ konvaStage.toDataURL({ pixelRatio: 2 }),
676
+ 0,
677
+ 0,
678
+ konvaStage.width(),
679
+ konvaStage.height()
506
680
  );
507
- } else {
681
+
682
+ }else{
683
+
508
684
  pdf.addPage();
509
685
  pdf.addImage(
510
- konvaStage.toDataURL({ pixelRatio: 2 }),
511
- 0,
512
- 0,
513
- konvaStage.width(),
514
- konvaStage.height()
686
+ konvaStage.toDataURL({ pixelRatio: 2 }),
687
+ 0,
688
+ 0,
689
+ konvaStage.width(),
690
+ konvaStage.height()
515
691
  );
692
+
516
693
  }
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
517
702
  }
703
+ pdf.save("批量导出.pdf");
704
+
705
+
706
+
707
+
708
+
709
+
518
710
 
519
- pdf.save('批量导出.pdf');
520
711
 
521
712
  // var imgData = canvas.toDataURL('image/png');
522
713
  //doc.text("Hello world!", 10, 10);