fl-web-component 2.0.13 → 2.0.15

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-45f83ec2]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-45f83ec2] .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-45f83ec2] .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-45f83ec2] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-45f83ec2] .measure-label-font{word-break:break-all}[data-v-45f83ec2] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-45f83ec2]{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-45f83ec2]{opacity:1;visibility:visible}.loading-content[data-v-45f83ec2]{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-45f83ec2]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-45f83ec2 1s linear infinite;animation:spin-45f83ec2 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-45f83ec2{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-45f83ec2{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-45f83ec2]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-45f83ec2]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-45f83ec2]{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-45f83ec2]{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-5d3a370c]{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.13",
3
+ "version": "2.0.15",
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 };
@@ -368,111 +441,172 @@ export default {
368
441
  //doc.text("Hello world!", 10, 10);
369
442
  //doc.save("a4.pdf");
370
443
  },
371
- toPdfs(list) {
372
- let _this = this;
444
+ toPdfs(list){
445
+
446
+ let _this=this;
373
447
  const pdf = new jsPDF('l', 'px', [konvaStage.width(), konvaStage.height()]);
374
448
  const exportPixelRatio = 2; // 可以 2/3/4 自己调
375
449
 
376
- for (let i = 0; i < list.length; i++) {
377
- let data = list[i];
450
+
451
+
452
+ for(let pageIdx =0;pageIdx <list.length;pageIdx++){
453
+
454
+
455
+
456
+ let data=list[pageIdx];
378
457
  //先绘制图面
379
458
  konvaLayer.destroyChildren();
380
459
  const parser = new DxfParser();
381
460
  let dxf = parser.parse(data);
382
461
  let entities = formatEntity(dxf.entities);
383
462
  let layers = dxf.tables.layer.layers;
384
- for (let key in entities) {
463
+
464
+ //先计算包围
465
+ for(let key in entities) {
385
466
  if (entities[key]) {
386
467
  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;
468
+ let l = entities[key].length
469
+ let layerConfig = recordLayerConfig[key]
470
+ let configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null
391
471
  for (let i = 0; i < l; i++) {
392
472
  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
- );
473
+ handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig)
403
474
  }
404
- if (!konvaLayer) return;
475
+
405
476
  for (let i = 0; i < group.length; i++) {
477
+ let entity = group[i];
478
+ if (entity.type === 'line') {
479
+ let x1 = entity.x1;
480
+ let y1 = entity.y1;
481
+ let x2 = entity.x2;
482
+ let y2 = entity.y2;
483
+ let v1 = {};
484
+ v1.x = x1;
485
+ v1.y = y1;
486
+ let v2 = {};
487
+ v2.x = x2;
488
+ v2.y = y2;
489
+ _this.updateBounds1(v1);
490
+ _this.updateBounds1(v2);
491
+ }
492
+ if (entity.type === "polyline") {
493
+ let flag = false;
494
+ let points = entity.points;
495
+ let closed = entity.closed;
496
+
497
+ for (let j = 0; j < points.length; j++) {
498
+ let index = j % 2;
499
+ if (index === 0) {
500
+ let x = points[j];
501
+ let y = points[j + 1];
502
+ let point = {};
503
+ point.x = x;
504
+ point.y = (y);
505
+ _this.updateBounds1( point);
506
+ }
507
+
508
+ }
509
+ }
510
+ }
511
+ }
512
+ }
513
+
514
+
515
+ console.log("bounds1");
516
+ console.log(_this.bounds1);
517
+
518
+ for (let key in entities) {
519
+
520
+
521
+
522
+ if (entities[key]) {
523
+ let group = [];
524
+ let l = entities[key].length
525
+ let layerConfig = recordLayerConfig[key]
526
+ let configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null
527
+ for (let i = 0; i < l; i++) {
528
+ let type = entities[key][i].type;
529
+ handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig)
530
+ }
531
+ if (!konvaLayer) return
532
+ for(let i = 0; i < group.length;i++) {
406
533
  let entity = group[i];
407
534
  if (entity.type === 'text') {
535
+
408
536
  if (konvaLayer) konvaLayer.add(entity.obj);
409
537
  }
410
538
  }
411
539
 
412
- if (group[0].stroke == undefined) {
540
+
541
+ if( group[0].stroke==undefined){
413
542
  console.log(group);
414
- group[0].stroke = '#000';
543
+ group[0].stroke='#000';
415
544
  }
416
- let customShape = new Konva.Shape({
545
+
546
+
547
+
548
+
549
+
550
+ let customShape = new Konva.Shape({
417
551
  x: 0,
418
552
  y: 0,
419
553
  strokeWidth: 0.2,
420
- name: key.replace(/\s*/g, ''),
554
+ name: key.replace(/\s*/g, ""),
421
555
  entityId: key,
422
556
  stroke: group[0].stroke,
423
- customColor: configParams ? configParams.color : '',
557
+ customColor: configParams ? configParams.color : "",
424
558
  //visible: configParams ? configParams.visible :true,
425
- sceneFunc(context, shape) {
559
+ sceneFunc (context, shape) {
426
560
  context.beginPath();
427
- for (let i = 0; i < group.length; i++) {
561
+ for(let i = 0; i < group.length;i++){
428
562
  let entity = group[i];
429
563
 
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) {
564
+
565
+
566
+ if(entity.type === 'line'){
567
+
568
+
569
+ context.strokeStyle=entity.stroke;
570
+ let x1=entity.x1;
571
+ let y1=entity.y1;
572
+ let x2=entity.x2;
573
+ let y2=entity.y2;
574
+ if(x1!=undefined&&y1!=undefined&&x2!=undefined&&y2!=undefined) {
437
575
  context.moveTo(x1, -parseFloat(y1));
438
576
  context.lineTo(x2, -parseFloat(y2));
439
577
  }
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);
578
+
579
+
580
+
448
581
  }
449
- if (entity.type === 'polyline') {
450
- context.strokeStyle = entity.stroke;
582
+ if(entity.type === "polyline"){
583
+ context.strokeStyle=entity.stroke;
451
584
 
452
- let flag = false;
585
+ let flag=false;
453
586
 
454
- let points = entity.points;
587
+
588
+
589
+ let points=entity.points;
455
590
  let closed = entity.closed;
456
591
 
457
- for (let j = 0; j < points.length; j++) {
592
+
593
+
594
+ for(let j = 0; j < points.length; j++){
458
595
  let index = j % 2;
459
- if (index === 0) {
596
+ if(index === 0){
460
597
  let x = points[j];
461
- let y = points[j + 1];
598
+ let y = points[j+1];
462
599
 
463
- let point = {};
464
- point.x = x;
465
- point.y = y;
466
- _this.updateBounds(point);
467
600
 
468
- if (j === 0) {
601
+
602
+ if(j === 0){
469
603
  context.moveTo(x, y);
470
- } else {
471
- context.lineTo(x, y);
604
+ }else{
605
+ context.lineTo(x,y);
472
606
  }
473
607
  }
474
608
 
475
- if (closed) {
609
+ if(closed) {
476
610
  if (j === points.length - 1) {
477
611
  context.lineTo(points[0], points[1]);
478
612
  }
@@ -482,41 +616,81 @@ export default {
482
616
  }
483
617
  // context.closePath();
484
618
  context.fillStrokeShape(shape);
485
- },
619
+ }
486
620
  });
487
621
  if (konvaLayer) konvaLayer.add(customShape);
488
622
  }
489
623
  }
490
- konvaStage.scale({
491
- x: 2,
492
- y: 2,
493
- });
494
624
 
495
- konvaStage.setX(0);
496
- konvaStage.setY(750); // 750
625
+
626
+
627
+
628
+
629
+ const { scale, x, y } = this.calculateScaleAndPosition(
630
+ _this.bounds1,
631
+ konvaStage.width(),
632
+ konvaStage.height(),
633
+ 0.05 // 5% 边距
634
+ );
635
+ console.log("test1:")
636
+ console.log(this.bounds1);
637
+
638
+ _this.bounds1=null;
639
+
640
+
641
+
642
+
643
+ konvaStage.position({ x: x, y: y });
644
+ konvaStage.scale({ x: scale, y: scale });
645
+
646
+ konvaStage.batchDraw();
497
647
  //添加成功移动视口位置
498
648
 
499
- if (i == 0) {
649
+
650
+
651
+
652
+
653
+
654
+
655
+
656
+ if(pageIdx==0){
500
657
  pdf.addImage(
501
- konvaStage.toDataURL({ pixelRatio: 2 }),
502
- 0,
503
- 0,
504
- konvaStage.width(),
505
- konvaStage.height()
658
+ konvaStage.toDataURL({ pixelRatio: 2 }),
659
+ 0,
660
+ 0,
661
+ konvaStage.width(),
662
+ konvaStage.height()
506
663
  );
507
- } else {
664
+
665
+ }else{
666
+
508
667
  pdf.addPage();
509
668
  pdf.addImage(
510
- konvaStage.toDataURL({ pixelRatio: 2 }),
511
- 0,
512
- 0,
513
- konvaStage.width(),
514
- konvaStage.height()
669
+ konvaStage.toDataURL({ pixelRatio: 2 }),
670
+ 0,
671
+ 0,
672
+ konvaStage.width(),
673
+ konvaStage.height()
515
674
  );
675
+
516
676
  }
677
+
678
+
679
+
680
+
681
+
682
+
683
+
684
+
517
685
  }
686
+ pdf.save("批量导出.pdf");
687
+
688
+
689
+
690
+
691
+
692
+
518
693
 
519
- pdf.save('批量导出.pdf');
520
694
 
521
695
  // var imgData = canvas.toDataURL('image/png');
522
696
  //doc.text("Hello world!", 10, 10);