9c4a337a6d353390528c0ac3b7be481a.json 36 KB

1
  1. {"remainingRequest":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/hevue-img-preview/hevue-img-preview.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/hevue-img-preview/hevue-img-preview.vue","mtime":1708395147479},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/cache-loader/dist/cjs.js","mtime":1708395146433},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/babel-loader/lib/index.js","mtime":1708395147257},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/cache-loader/dist/cjs.js","mtime":1708395146433},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js","mtime":1708395147382}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdoZXZ1ZS1pbWctcHJldmlldycsDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIC8vIGltZ1dpZHRoOiAwLA0KICAgICAgLy8gaW1nSGVpZ2h0OiAwLA0KICAgICAgdmlzaWJsZTogZmFsc2UsIC8vIOaPkuS7tuaYvuekuu+8jOm7mOiupOS4umZhbHNlDQogICAgICBpbWdTY2FsZTogMSwNCiAgICAgIGltZ1RvcDogMCwNCiAgICAgIGltZ0xlZnQ6IDAsDQogICAgICBpbWdSb3RhdGU6IDAsDQogICAgICBpc0Z1bGw6IGZhbHNlLA0KICAgICAgbWF4V0g6ICdtYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCU7JywNCiAgICAgIGNsaWVudFg6IDAsDQogICAgICBjbGllbnRZOiAwLA0KICAgICAgaW1nSW5kZXg6IDAsDQogICAgICBjYW5SdW46IHRydWUsDQogICAgICBpbWd1cmw6ICcnLA0KICAgICAgaW1nU3RhdGU6IDEsDQogICAgICBzdGFydDogW3t9LCB7fV0sDQogICAgICBtb2JpbGVTY2FsZTogMCwgLy8g5omL5oyH56a75byA5pe25Zu+54mH55qE57yp5pS+5q+U5L6LDQogICAgICAvLyDku6XkuIvlhoXlrrnkuLrnlKjmiLfkvKDlhaXphY3nva4NCiAgICAgIC8vIHNob3c6IHRydWUsIC8vIOaPkuS7tuaYvuekuu+8jOm7mOiupOS4umZhbHNlDQogICAgICB1cmw6ICcnLCAvLyDpooTop4jlm77niYfnmoTlnLDlnYANCiAgICAgIG5vd0ltZ0luZGV4OiAwLA0KICAgICAgbXVsdGlwbGU6IGZhbHNlLA0KICAgICAgaW1nTGlzdDogW10sDQogICAgICAvLyDku6XkuIvkuLrlj6/lhajlsYDphY3nva4NCiAgICAgIGNvbnRyb2xCYXI6IHRydWUsDQogICAgICBjbG9zZUJ0bjogdHJ1ZSwNCiAgICAgIGFycm93QnRuOiB0cnVlLA0KICAgICAga2V5Ym9hcmQ6IGZhbHNlLA0KICAgICAgY2xpY2tNYXNrQ0xvc2U6IGZhbHNlLCAvLyDmmK/lkKbngrnlh7vpga7nvanlhbPpl63vvIzpu5jorqRmYWxzZQ0KICAgICAgY2xvc2VGbjogbnVsbCwgLy8g5YWz6Zet5Zue6LCD5Ye95pWwDQogICAgICBjaGFuZ2VGbjogbnVsbCwgLy8g5YiH5o2i5Zu+54mH5Zue6LCD5Ye95pWwDQogICAgfQ0KICB9LA0KICBtb3VudGVkKCkgew0KICAgIHRoaXMuaW5pdEltZygpDQogIH0sDQogIHdhdGNoOiB7DQogICAgdXJsKCkgew0KICAgICAgdGhpcy5pbml0SW1nKCkNCiAgICB9LA0KICAgIHZpc2libGU6IHsNCiAgICAgIGhhbmRsZXIobmV3Vikgew0KICAgICAgICBpZiAobmV3Vikgew0KICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgICAgICAgIGxldCBfZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hldnVlLWltZ3ByZXZpZXctd3JhcCcpDQogICAgICAgICAgICBfZG9tLm9ubW91c2V3aGVlbCA9IHRoaXMuc2Nyb2xsRnVuYw0KICAgICAgICAgICAgLy8g54Gr54uQ5rWP6KeI5Zmo5rKh5pyJb25tb3VzZXdoZWVs5LqL5Lu277yM55SoRE9NTW91c2VTY3JvbGzku6Pmm78o5rua6L2u5LqL5Lu2KQ0KICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdET01Nb3VzZVNjcm9sbCcsIHRoaXMuc2Nyb2xsRnVuYykNCiAgICAgICAgICAgIC8vIOemgeatoueBq+eLkOa1j+iniOWZqOS4i+aLluaLveWbvueJh+eahOm7mOiupOS6i+S7tg0KICAgICAgICAgICAgZG9jdW1lbnQub25kcmFnc3RhcnQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgIHJldHVybiBmYWxzZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8g5Yik5pat5piv5ZCm5aSa5Zu+DQogICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkgew0KICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmltZ0xpc3QpICYmIHRoaXMuaW1nTGlzdC5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgdGhpcy5pbWdJbmRleCA9IE51bWJlcih0aGlzLm5vd0ltZ0luZGV4KSB8fCAwDQogICAgICAgICAgICAgICAgLy8gdGhpcy51cmwgPSB0aGlzLmltZ0xpc3RbdGhpcy5pbWdJbmRleF0NCiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVVybCh0aGlzLmltZ0xpc3RbdGhpcy5pbWdJbmRleF0sIHRoaXMuaW1nSW5kZXgpDQogICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcigiaW1nTGlzdCDkuLrnqbrmiJbmoLzlvI/kuI3mraPnoa4iKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmwodGhpcy51cmwpDQogICAgICAgICAgICB9DQogICAgICAgICAgICAvLyDliKTmlq3mmK/lkKblvIDlkK/plK7nm5jkuovku7YNCiAgICAgICAgICAgIGlmICh0aGlzLmtleWJvYXJkKSB7DQogICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleUhhbmRsZURlYm91bmNlKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pDQogICAgICAgIH0NCiAgICAgIH0sDQogICAgICBpbW1lZGlhdGU6IHRydWUsDQogICAgfSwNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIHNob3coKSB7DQogICAgICB0aGlzLnZpc2libGUgPSB0cnVlDQogICAgfSwNCiAgICBjbG9zZShkYXRhKSB7DQogICAgICB0aGlzLmluaXRJbWcoKQ0KICAgICAgLy8gdGhpcy5tYXhXSCA9ICJtYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCU7IjsNCiAgICAgIC8vIHRoaXMuaXNGdWxsID0gZmFsc2U7DQogICAgICAvLyDnp7vpmaTngavni5DmtY/op4jlmajkuIvnmoTpvKDmoIfmu5rliqjkuovku7YNCiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCB0aGlzLnNjcm9sbEZ1bmMpDQogICAgICAvL+aBouWkjeeBq+eLkOWPilNhZmFyaea1j+iniOWZqOS4i+eahOWbvueJh+aLluaLvQ0KICAgICAgZG9jdW1lbnQub25kcmFnc3RhcnQgPSBudWxsDQogICAgICAvLyDnp7vpmaTplK7nm5jkuovku7YNCiAgICAgIGlmICh0aGlzLmtleWJvYXJkKSB7DQogICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleUhhbmRsZURlYm91bmNlKQ0KICAgICAgfQ0KICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2UNCiAgICAgIHRoaXMuY2xvc2VGbiAmJiB0aGlzLmNsb3NlRm4oZGF0YSkNCiAgICB9LA0KICAgIGluaXRJbWcoKSB7DQogICAgICB0aGlzLm1vYmlsZVNjYWxlID0gMQ0KICAgICAgdGhpcy5pbWdTY2FsZSA9IDENCiAgICAgIHRoaXMuaW1nUm90YXRlID0gMA0KICAgICAgdGhpcy5pbWdUb3AgPSAwDQogICAgICB0aGlzLmltZ0xlZnQgPSAwDQogICAgfSwNCiAgICAvKioNCiAgICAgKiDliIfmjaLlm77niYcNCiAgICAgKiB0cnVlIOS4i+S4gOW8oA0KICAgICAqIGZhbHNlIOS4iuS4gOW8oA0KICAgICAqLw0KICAgIHRvb2dsZUltZyhib29sLCB3YXkpIHsNCiAgICAgIGxldCBmcm9tSW5kZXggPSB0aGlzLmltZ0luZGV4DQogICAgICBpZiAoYm9vbCkgew0KICAgICAgICB0aGlzLmltZ0luZGV4KysNCiAgICAgICAgaWYgKHRoaXMuaW1nSW5kZXggPiB0aGlzLmltZ0xpc3QubGVuZ3RoIC0gMSkgew0KICAgICAgICAgIHRoaXMuaW1nSW5kZXggPSAwDQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuaW1nSW5kZXgtLQ0KICAgICAgICBpZiAodGhpcy5pbWdJbmRleCA8IDApIHsNCiAgICAgICAgICB0aGlzLmltZ0luZGV4ID0gdGhpcy5pbWdMaXN0Lmxlbmd0aCAtIDENCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgdGhpcy5jaGFuZ2VGbiAmJg0KICAgICAgICB0aGlzLmNoYW5nZUZuKHsNCiAgICAgICAgICB0eXBlOiBib29sID8gJ25leHQnIDogJ3ByZXYnLA0KICAgICAgICAgIGZyb21JbWdJbmRleDogZnJvbUluZGV4LA0KICAgICAgICAgIGZyb21JbWdVcmw6IHRoaXMuaW1nTGlzdFtmcm9tSW5kZXhdLA0KICAgICAgICAgIHRvSW1nSW5kZXg6IHRoaXMuaW1nSW5kZXgsDQogICAgICAgICAgdG9JbWdVcmw6IHRoaXMuaW1nTGlzdFt0aGlzLmltZ0luZGV4XSwNCiAgICAgICAgICB3YXksDQogICAgICAgIH0pDQogICAgICAvLyB0aGlzLnVybCA9IHRoaXMuaW1nTGlzdFt0aGlzLmltZ0luZGV4XQ0KICAgICAgdGhpcy5jaGFuZ2VVcmwodGhpcy5pbWdMaXN0W3RoaXMuaW1nSW5kZXhdLCB0aGlzLmltZ0luZGV4KQ0KICAgIH0sDQogICAgLy8g5pS55Y+Y5Zu+54mH5Zyw5Z2ADQogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOg0KICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwg6KaB5pi+56S655qE5Zu+54mH55qEdXJsDQogICAgICogQHBhcmFtIHtOdW1iZXJ9IGluZGV4IOW9k+WJjeaYvuekuuW9k+WbvueJh+S4i+agh++8jOmYsuatoueUqOaIt+eCueWHu+WIh+aNouWbvueJh+i/h+W/qw0KICAgICAqIEByZXR1cm4geyp9DQogICAgICovDQogICAgY2hhbmdlVXJsKHVybCwgaW5kZXgpIHsNCiAgICAgIHRoaXMuaW1nU3RhdGUgPSAxDQogICAgICBsZXQgaW1nID0gbmV3IEltYWdlKCkNCiAgICAgIGltZy5zcmMgPSB1cmwNCiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7DQogICAgICAgIC8vIOWmguaenOWKoOi9veWHuuadpeWbvueJh+W9k+S4i+agh+S4jeaYr+W9k+WJjeaYvuekuuWbvueJh+W9k+S4i+agh++8jOWImeS4jeS6iOaYvuekuu+8iOeUqOaIt+eCueWHu+i/h+W/q+W9k+aXtuWAme+8jOS8muWHuueOsOeUqOaIt+eCueWIsOesrOS4ieW8oOS6hu+8jOatpOaXtuesrOS4gOW8oOWbvueJh+aJjeWKoOi9veWujOW9k+aDheWGte+8iQ0KICAgICAgICBpZiAoaW5kZXggIT0gdW5kZWZpbmVkICYmIGluZGV4ID09IHRoaXMuaW1nSW5kZXgpIHsNCiAgICAgICAgICB0aGlzLmltZ1N0YXRlID0gMg0KICAgICAgICAgIHRoaXMuaW1ndXJsID0gdXJsDQogICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgdGhpcy5pbWdTdGF0ZSA9IDINCiAgICAgICAgICB0aGlzLmltZ3VybCA9IHVybA0KICAgICAgICB9DQogICAgICB9DQogICAgICBpbWcub25lcnJvciA9ICgpID0+IHsNCiAgICAgICAgaWYgKGluZGV4ICE9IHVuZGVmaW5lZCAmJiBpbmRleCA9PSB0aGlzLmltZ0luZGV4KSB7DQogICAgICAgICAgdGhpcy5pbWdTdGF0ZSA9IDMNCiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICB0aGlzLmltZ1N0YXRlID0gMw0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICAvLyDml4vovazlm77niYcNCiAgICByb3RhdGVGdW5jKGRlZykgew0KICAgICAgdGhpcy5pbWdSb3RhdGUgKz0gZGVnDQogICAgfSwNCiAgICAvLyDlm77niYfnvKnmlL4NCiAgICBzY2FsZUZ1bmMobnVtLCBib29sKSB7DQogICAgICBpZiAodGhpcy5pbWdTY2FsZSA8PSAwLjIgJiYgbnVtIDwgMCkgcmV0dXJuDQogICAgICBpZiAoYm9vbCkgew0KICAgICAgICB0aGlzLmltZ1NjYWxlID0gbnVtDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmltZ1NjYWxlICs9IG51bQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g5Zu+54mH5Y6f5bC65a+45YiH5o2iDQogICAgaW1nVG9nZ2xlKCkgew0KICAgICAgdGhpcy5pbml0SW1nKCkNCiAgICAgIGlmICh0aGlzLmlzRnVsbCkgew0KICAgICAgICB0aGlzLm1heFdIID0gJ21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJTsnDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLm1heFdIID0gJycNCiAgICAgIH0NCiAgICAgIHRoaXMuaXNGdWxsID0gIXRoaXMuaXNGdWxsDQogICAgfSwNCiAgICAvLyDpvKDmoIfmu5rova7nvKnmlL4NCiAgICBzY3JvbGxGdW5jKGUpIHsNCiAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudA0KICAgICAgLy8gZS5yZXR1cm5WYWx1ZSA9IGZhbHNlIC8vIGllDQogICAgICAvLyDngavni5DkuIvmsqHmnIl3aGVlbERlbHRh77yM55SoZGV0YWls5Luj5pu/77yM55Sx5LqOZGV0YWls5YC855qE5q2j6LSf5ZKMd2hlZWxEZWx0YeebuOWPje+8jOaJgOS7peWPluWPjQ0KICAgICAgZS5kZWx0YSA9IGUud2hlZWxEZWx0YSB8fCAtZS5kZXRhaWwNCg0KICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpDQogICAgICBpZiAoZS5kZWx0YSA+IDApIHsNCiAgICAgICAgLy/lvZPmu5Hova7lkJHkuIrmu5rliqjml7YNCiAgICAgICAgdGhpcy5zY2FsZUZ1bmMoMC4wNSkNCiAgICAgIH0NCiAgICAgIGlmIChlLmRlbHRhIDwgMCkgew0KICAgICAgICAvL+W9k+a7kei9ruWQkeS4i+a7muWKqOaXtg0KICAgICAgICB0aGlzLnNjYWxlRnVuYygtMC4wNSkNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOm8oOagh+aMieS4iw0KICAgIGFkZE1vdmUoZSkgew0KICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50DQogICAgICB0aGlzLmNsaWVudFggPSBlLmNsaWVudFgNCiAgICAgIHRoaXMuY2xpZW50WSA9IGUuY2xpZW50WQ0KICAgICAgdGhpcy4kcmVmcy5oZUltZy5vbm1vdXNlbW92ZSA9IHRoaXMubW92ZUZ1bmMNCiAgICB9LA0KICAgIC8vIOaJi+aMh+aMieS4i+S6i+S7tg0KICAgIGFkZE1vdmVNb2JpbGUoZSkgew0KICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpDQogICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQNCiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID4gMSkgew0KICAgICAgICB0aGlzLnN0YXJ0ID0gZS50b3VjaGVzDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmNsaWVudFggPSBlLnRvdWNoZXNbMF0ucGFnZVgNCiAgICAgICAgdGhpcy5jbGllbnRZID0gZS50b3VjaGVzWzBdLnBhZ2VZDQogICAgICB9DQogICAgICAvLyDmt7vliqDmiYvmjIfmi5bliqjkuovku7YNCiAgICAgIHRoaXMuJHJlZnMuaGVJbWcub250b3VjaG1vdmUgPSB0aGlzLm1vdmVGdW5jTW9iaWxlDQogICAgfSwNCiAgICAvLyDpvKDmoIfmi5bliqgNCiAgICBtb3ZlRnVuYyhlKSB7DQogICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQNCiAgICAgIGUucHJldmVudERlZmF1bHQoKQ0KICAgICAgbGV0IG1vdmVtZW50WCA9IGUuY2xpZW50WCAtIHRoaXMuY2xpZW50WA0KICAgICAgbGV0IG1vdmVtZW50WSA9IGUuY2xpZW50WSAtIHRoaXMuY2xpZW50WQ0KICAgICAgLy8gZXZlbnQuY2xpZW50WTsNCiAgICAgIHRoaXMuaW1nTGVmdCArPSBtb3ZlbWVudFggKiAyDQogICAgICB0aGlzLmltZ1RvcCArPSBtb3ZlbWVudFkgKiAyDQogICAgICB0aGlzLmNsaWVudFggPSBlLmNsaWVudFgNCiAgICAgIHRoaXMuY2xpZW50WSA9IGUuY2xpZW50WQ0KICAgIH0sDQogICAgLy8g5omL5oyH5ouW5YqoDQogICAgbW92ZUZ1bmNNb2JpbGUoZSkgew0KICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50DQogICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+IDEpIHsNCiAgICAgICAgdmFyIG5vdyA9IGUudG91Y2hlcw0KICAgICAgICB2YXIgc2NhbGUgPQ0KICAgICAgICAgIHRoaXMuZ2V0RGlzdGFuY2Uobm93WzBdLCBub3dbMV0pIC8NCiAgICAgICAgICB0aGlzLmdldERpc3RhbmNlKHRoaXMuc3RhcnRbMF0sIHRoaXMuc3RhcnRbMV0pDQogICAgICAgIC8vIOWIpOaWreaYr+WQpuaJi+aMh+e8qeaUvui/h++8jOWmguaenOe8qeaUvui/h++8jOimgeWcqOS4iuasoee8qeaUvueahOavlOS+i+WfuuehgOS4iui/m+ihjOe8qeaUvg0KICAgICAgICBpZiAodGhpcy5tb2JpbGVTY2FsZSkgew0KICAgICAgICAgIGlmIChzY2FsZSA+IDEpIHsNCiAgICAgICAgICAgIC8vIOaUvuWkpw0KICAgICAgICAgICAgdGhpcy5zY2FsZUZ1bmMoc2NhbGUgKyB0aGlzLm1vYmlsZVNjYWxlIC0gMSwgdHJ1ZSkNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgLy8g57yp5bCPDQogICAgICAgICAgICB0aGlzLnNjYWxlRnVuYyhzY2FsZSAqIHRoaXMubW9iaWxlU2NhbGUsIHRydWUpDQogICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuc2NhbGVGdW5jKHNjYWxlLCB0cnVlKQ0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBsZXQgdG91Y2ggPSBlLnRvdWNoZXNbMF0NCiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpDQogICAgICAgIGxldCBtb3ZlbWVudFggPSB0b3VjaC5wYWdlWCAtIHRoaXMuY2xpZW50WA0KICAgICAgICBsZXQgbW92ZW1lbnRZID0gdG91Y2gucGFnZVkgLSB0aGlzLmNsaWVudFkNCiAgICAgICAgLy8gZXZlbnQuY2xpZW50WTsNCiAgICAgICAgdGhpcy5pbWdMZWZ0ICs9IG1vdmVtZW50WCAqIDINCiAgICAgICAgdGhpcy5pbWdUb3AgKz0gbW92ZW1lbnRZICogMg0KICAgICAgICB0aGlzLmNsaWVudFggPSB0b3VjaC5wYWdlWA0KICAgICAgICB0aGlzLmNsaWVudFkgPSB0b3VjaC5wYWdlWQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g56e76Zmk5ouW5Yqo5LqL5Lu2DQogICAgcmVtb3ZlTW92ZSh0eXBlKSB7DQogICAgICBpZiAodHlwZSA9PT0gJ3BjJykgew0KICAgICAgICB0aGlzLiRyZWZzLmhlSW1nLm9ubW91c2Vtb3ZlID0gbnVsbA0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5tb2JpbGVTY2FsZSA9IHRoaXMuaW1nU2NhbGUNCiAgICAgICAgdGhpcy4kcmVmcy5oZUltZy5vbnRvdWNobW92ZSA9IG51bGwNCiAgICAgIH0NCiAgICB9LA0KICAgIGtleUhhbmRsZURlYm91bmNlKGUpIHsNCiAgICAgIGlmICh0aGlzLmNhblJ1bikgew0KICAgICAgICAvLyDlpoLmnpx0aGlzLmNhblJ1buS4unRydWXor4HmmI7lvZPliY3lj6/ku6XmiafooYzlh73mlbANCiAgICAgICAgdGhpcy5rZXlIYW5kbGUoZSkNCiAgICAgICAgdGhpcy5jYW5SdW4gPSBmYWxzZSAvLyDmiafooYzlh73mlbDlkI7kuIDmrrXml7bpl7TlhoXkuI3lj6/lho3mrKHmiafooYwNCiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7DQogICAgICAgICAgdGhpcy5jYW5SdW4gPSB0cnVlIC8vIOetieWIsOS6huaIkeS7rOiuvuWumueahOaXtumXtOS5i+WQju+8jOaKinRoaXMuY2FuUnVu5pS55Li6dHJ1Ze+8jOWPr+S7peWGjeasoeaJp+ihjOWHveaVsA0KICAgICAgICB9LCAzMDApDQogICAgICB9DQogICAgfSwNCiAgICAvLyDplK7nm5jkuovku7YNCiAgICBrZXlIYW5kbGUoZSkgew0KICAgICAgZSA9IHdpbmRvdy5ldmVudCB8fCBlDQogICAgICB2YXIga2V5ID0gZS5rZXlDb2RlIHx8IGUud2hpY2ggfHwgZS5jaGFyQ29kZQ0KICAgICAgc3dpdGNoIChrZXkpIHsNCiAgICAgICAgY2FzZSAyNzogLy8gZXNjDQogICAgICAgICAgdGhpcy5jbG9zZSh7IHdheTogJ2VzYycgfSkNCiAgICAgICAgICBicmVhaw0KICAgICAgICBjYXNlIDY1OiAvLyBh6ZSuLeS4iuS4gOW8oA0KICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7DQogICAgICAgICAgICB0aGlzLnRvb2dsZUltZyhmYWxzZSwgJ2tleS1hJykNCiAgICAgICAgICB9DQogICAgICAgICAgYnJlYWsNCiAgICAgICAgY2FzZSA2ODogLy8gZOmUri3kuIvkuIDlvKANCiAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkgew0KICAgICAgICAgICAgdGhpcy50b29nbGVJbWcodHJ1ZSwgJ2tleS1kJykNCiAgICAgICAgICB9DQogICAgICAgICAgYnJlYWsNCiAgICAgICAgY2FzZSA4NzogLy8gd+mUri3mlL7lpKcNCiAgICAgICAgICB0aGlzLnNjYWxlRnVuYygwLjE1KQ0KICAgICAgICAgIGJyZWFrDQogICAgICAgIGNhc2UgODM6IC8vIHPplK4t57yp5bCPDQogICAgICAgICAgdGhpcy5zY2FsZUZ1bmMoLTAuMTUpDQogICAgICAgICAgYnJlYWsNCiAgICAgICAgY2FzZSA4MTogLy8gcemUri3pgIbml7bpkojml4vovawNCiAgICAgICAgICB0aGlzLnJvdGF0ZUZ1bmMoLTkwKQ0KICAgICAgICAgIGJyZWFrDQogICAgICAgIGNhc2UgNjk6IC8vIGXplK4t6aG65pe26ZKI5peL6L2sDQogICAgICAgICAgdGhpcy5yb3RhdGVGdW5jKDkwKQ0KICAgICAgICAgIGJyZWFrDQogICAgICAgIGNhc2UgODI6IC8vIHLplK4t5aSN5L2N6ZSuDQogICAgICAgICAgdGhpcy5pbml0SW1nKCkNCiAgICAgICAgICBicmVhaw0KDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgYnJlYWsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOeCueWHu+mBrue9qeWxgg0KICAgIGNsaWNrTWFzaygpIHsNCiAgICAgIGlmICh0aGlzLmNsaWNrTWFza0NMb3NlKSB7DQogICAgICAgIHRoaXMuY2xvc2UoeyB3YXk6ICdtYXNrJyB9KQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy/nvKnmlL4g5Yu+6IKh5a6a55CG5pa55rOVLeaxguS4pOeCueS5i+mXtOeahOi3neemuw0KICAgIGdldERpc3RhbmNlKHAxLCBwMikgew0KICAgICAgdmFyIHggPSBwMi5wYWdlWCAtIHAxLnBhZ2VYLA0KICAgICAgICB5ID0gcDIucGFnZVkgLSBwMS5wYWdlWQ0KICAgICAgcmV0dXJuIE1hdGguc3FydCh4ICogeCArIHkgKiB5KQ0KICAgIH0sDQogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOg0KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBpbWdzcmMNCiAgICAgKiBAcGFyYW0geyp9IG5hbWUNCiAgICAgKiBAcmV0dXJuIHsqfQ0KICAgICAqLw0KICAgIGRvd25sb2FkSWFtZ2UoKSB7DQogICAgICAvL+S4i+i9veWbvueJh+WcsOWdgOWSjOWbvueJh+WQjQ0KICAgICAgbGV0IGltYWdlID0gbmV3IEltYWdlKCkNCiAgICAgIC8vIOino+WGs+i3qOWfnyBDYW52YXMg5rGh5p+T6Zeu6aKYDQogICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJ2Fub255bW91cycpDQogICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIGxldCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKQ0KICAgICAgICBjYW52YXMud2lkdGggPSBpbWFnZS53aWR0aA0KICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0DQogICAgICAgIGxldCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykNCiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQpDQogICAgICAgIGxldCB1cmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKSAvL+W+l+WIsOWbvueJh+eahGJhc2U2NOe8lueggeaVsOaNrg0KICAgICAgICBsZXQgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSAvLyDnlJ/miJDkuIDkuKph5YWD57SgDQogICAgICAgIGxldCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdjbGljaycpIC8vIOWIm+W7uuS4gOS4quWNleWHu+S6i+S7tg0KICAgICAgICBhLmRvd25sb2FkID0gJ3Bob3RvJyArICtuZXcgRGF0ZSgpIC8vIOiuvue9ruWbvueJh+WQjeensA0KICAgICAgICBhLmhyZWYgPSB1cmwgLy8g5bCG55Sf5oiQ55qEVVJM6K6+572u5Li6YS5ocmVm5bGe5oCnDQogICAgICAgIGEuZGlzcGF0Y2hFdmVudChldmVudCkgLy8g6Kem5Y+RYeeahOWNleWHu+S6i+S7tg0KICAgICAgfQ0KICAgICAgaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHsNCiAgICAgICAgY29uc29sZS5sb2coJ+WbvueJh+S/oeaBr+S4jeato+ehruaIluWbvueJh+acjeWKoeWZqOemgeatouiuv+mXricpDQogICAgICAgIGNvbnNvbGUubG9nKGVycikNCiAgICAgIH0NCiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7DQogICAgICAgIGltYWdlLnNyYyA9IHRoaXMuaW1nTGlzdFt0aGlzLmltZ0luZGV4XQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgaW1hZ2Uuc3JjID0gdGhpcy51cmwNCiAgICAgIH0NCiAgICB9LA0KICB9LA0KfQ0K"},{"version":3,"sources":["hevue-img-preview.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"hevue-img-preview.vue","sourceRoot":"node_modules/hevue-img-preview","sourcesContent":["<!--\r\n * @Author: 贺永胜\r\n * @Date: 2021-04-19 16:39:30\r\n * @email: 1378431028@qq.com\r\n * @LastEditors: 贺永胜\r\n * @LastEditTime: 2023-03-28 16:28:25\r\n * @Description: file content\r\n-->\r\n\r\n<!--\r\n * __----~~~~~~~~~~~------___\r\n * . . ~~//====...... __--~ ~~\r\n * -. \\_|// |||\\\\ ~~~~~~::::... /~\r\n * ___-==_ _-~o~ \\/ ||| \\\\ _/~~-\r\n * __---~~~.==~||\\=_ -_--~/_-~|- |\\\\ \\\\ _/~\r\n * _-~~ .=~ | \\\\-_ '-~7 /- / || \\ /\r\n * .~ .~ | \\\\ -_ / /- / || \\ /\r\n * / ____ / | \\\\ ~-_/ /|- _/ .|| \\ /\r\n * |~~ ~~|--~~~~--_ \\ ~==-/ | \\~--===~~ .\\\r\n * ' ~-| /| |-~\\~~ __--~~\r\n * |-~~-_/ | | ~\\_ _-~ /\\\r\n * / \\ \\__ \\/~ \\__\r\n * _--~ _/ | .-~~____--~-/ ~~==.\r\n * ((->/~ '.|||' -_| ~~-/ , . _||\r\n * -_ ~\\ ~~---l__i__i__i--~~_/\r\n * _-~-__ ~) \\--______________--~~\r\n * //.-~~~-~_--~- |-------~~~~~~~~\r\n * //.-~~~--\\\r\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n * \r\n * 神兽保佑 永无BUG\r\n -->\r\n\r\n<template>\r\n <transition name=\"fade\">\r\n <div\r\n class=\"hevue-imgpreview-wrap\"\r\n id=\"hevue-imgpreview-wrap\"\r\n v-if=\"visible\"\r\n ref=\"heImg\"\r\n @mouseup=\"removeMove('pc')\"\r\n @touchend=\"removeMove('mobile')\"\r\n @click.stop=\"clickMask\"\r\n >\r\n <div class=\"he-img-wrap\">\r\n <div\r\n class=\"heimgfont hevue-img-status-icon rotate-animation\"\r\n v-show=\"imgState === 1\"\r\n >\r\n &#xe6b1;\r\n </div>\r\n <!-- <div class=\"heimgfont loading\">&#xe6b1;</div> -->\r\n <img\r\n :src=\"imgurl\"\r\n ref=\"heImView\"\r\n @click.stop=\"\"\r\n v-show=\"imgState === 2\"\r\n class=\"he-img-view\"\r\n :style=\"\r\n 'transform: scale(' +\r\n imgScale +\r\n ') rotate(' +\r\n imgRotate +\r\n 'deg);margin-top:' +\r\n imgTop +\r\n 'px;margin-left:' +\r\n imgLeft +\r\n 'px;' +\r\n maxWH\r\n \"\r\n @mousedown=\"addMove\"\r\n @touchstart=\"addMoveMobile\"\r\n />\r\n <!-- 图片加载失败 -->\r\n <div class=\"heimgfont hevue-img-status-icon\" v-show=\"imgState === 3\">\r\n &#xec0d;\r\n </div>\r\n <!-- 关闭按钮 -->\r\n <div\r\n class=\"heimgfont he-close-icon\"\r\n @click.stop=\"close({ way: 'closeBtn' })\"\r\n v-if=\"closeBtn\"\r\n >\r\n &#xe608;\r\n </div>\r\n <!-- 左箭头 -->\r\n <div\r\n class=\"arrow arrow-left heimgfont\"\r\n @click.stop=\"toogleImg(false, 'btn')\"\r\n v-if=\"arrowBtn && multiple\"\r\n >\r\n &#xe620;\r\n </div>\r\n <!-- 右箭头 -->\r\n <div\r\n class=\"arrow arrow-right heimgfont\"\r\n @click.stop=\"toogleImg(true, 'btn')\"\r\n v-if=\"arrowBtn && multiple\"\r\n >\r\n &#xe60d;\r\n </div>\r\n <!-- 控制条 -->\r\n <div class=\"he-control-bar-wrap\" v-if=\"controlBar\">\r\n <div class=\"he-control-bar\" @click.stop>\r\n <!-- 缩小 -->\r\n <div\r\n class=\"he-control-btn heimgfont\"\r\n @click.stop=\"scaleFunc(-0.15)\"\r\n >\r\n &#xe65e;\r\n </div>\r\n <!-- 放大 -->\r\n <div class=\"he-control-btn heimgfont\" @click.stop=\"scaleFunc(0.15)\">\r\n &#xe65d;\r\n </div>\r\n <!-- 复位 -->\r\n <div\r\n class=\"he-control-btn heimgfont\"\r\n v-show=\"isFull\"\r\n @click.stop=\"imgToggle\"\r\n >\r\n &#xe698;\r\n </div>\r\n <!-- 复位 -->\r\n <div\r\n class=\"he-control-btn heimgfont\"\r\n v-show=\"!isFull\"\r\n @click.stop=\"imgToggle\"\r\n >\r\n &#xe86b;\r\n </div>\r\n <!-- 左转 -->\r\n <div class=\"he-control-btn heimgfont\" @click.stop=\"rotateFunc(-90)\">\r\n &#xe670;\r\n </div>\r\n <!-- 右转 -->\r\n <div class=\"he-control-btn heimgfont\" @click.stop=\"rotateFunc(90)\">\r\n &#xe66f;\r\n </div>\r\n <!-- 下载 -->\r\n <!-- <div class=\"he-control-btn heimgfont\" @click.stop=\"downloadIamge\">\r\n &#xe694;\r\n </div> -->\r\n </div>\r\n </div>\r\n <!-- 页码指示器 -->\r\n <div class=\"he-control-num\" v-if=\"controlBar && multiple\">\r\n {{ imgIndex + 1 }} / {{ imgList.length }}\r\n </div>\r\n </div>\r\n </div>\r\n </transition>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'hevue-img-preview',\r\n data() {\r\n return {\r\n // imgWidth: 0,\r\n // imgHeight: 0,\r\n visible: false, // 插件显示,默认为false\r\n imgScale: 1,\r\n imgTop: 0,\r\n imgLeft: 0,\r\n imgRotate: 0,\r\n isFull: false,\r\n maxWH: 'max-width:100%;max-height:100%;',\r\n clientX: 0,\r\n clientY: 0,\r\n imgIndex: 0,\r\n canRun: true,\r\n imgurl: '',\r\n imgState: 1,\r\n start: [{}, {}],\r\n mobileScale: 0, // 手指离开时图片的缩放比例\r\n // 以下内容为用户传入配置\r\n // show: true, // 插件显示,默认为false\r\n url: '', // 预览图片的地址\r\n nowImgIndex: 0,\r\n multiple: false,\r\n imgList: [],\r\n // 以下为可全局配置\r\n controlBar: true,\r\n closeBtn: true,\r\n arrowBtn: true,\r\n keyboard: false,\r\n clickMaskCLose: false, // 是否点击遮罩关闭,默认false\r\n closeFn: null, // 关闭回调函数\r\n changeFn: null, // 切换图片回调函数\r\n }\r\n },\r\n mounted() {\r\n this.initImg()\r\n },\r\n watch: {\r\n url() {\r\n this.initImg()\r\n },\r\n visible: {\r\n handler(newV) {\r\n if (newV) {\r\n this.$nextTick(() => {\r\n let _dom = document.getElementById('hevue-imgpreview-wrap')\r\n _dom.onmousewheel = this.scrollFunc\r\n // 火狐浏览器没有onmousewheel事件,用DOMMouseScroll代替(滚轮事件)\r\n document.body.addEventListener('DOMMouseScroll', this.scrollFunc)\r\n // 禁止火狐浏览器下拖拽图片的默认事件\r\n document.ondragstart = function () {\r\n return false\r\n }\r\n // 判断是否多图\r\n if (this.multiple) {\r\n if (Array.isArray(this.imgList) && this.imgList.length > 0) {\r\n this.imgIndex = Number(this.nowImgIndex) || 0\r\n // this.url = this.imgList[this.imgIndex]\r\n this.changeUrl(this.imgList[this.imgIndex], this.imgIndex)\r\n } else {\r\n // console.error(\"imgList 为空或格式不正确\");\r\n }\r\n } else {\r\n this.changeUrl(this.url)\r\n }\r\n // 判断是否开启键盘事件\r\n if (this.keyboard) {\r\n document.addEventListener('keydown', this.keyHandleDebounce)\r\n }\r\n })\r\n }\r\n },\r\n immediate: true,\r\n },\r\n },\r\n methods: {\r\n show() {\r\n this.visible = true\r\n },\r\n close(data) {\r\n this.initImg()\r\n // this.maxWH = \"max-width:100%;max-height:100%;\";\r\n // this.isFull = false;\r\n // 移除火狐浏览器下的鼠标滚动事件\r\n document.body.removeEventListener('DOMMouseScroll', this.scrollFunc)\r\n //恢复火狐及Safari浏览器下的图片拖拽\r\n document.ondragstart = null\r\n // 移除键盘事件\r\n if (this.keyboard) {\r\n document.removeEventListener('keydown', this.keyHandleDebounce)\r\n }\r\n this.visible = false\r\n this.closeFn && this.closeFn(data)\r\n },\r\n initImg() {\r\n this.mobileScale = 1\r\n this.imgScale = 1\r\n this.imgRotate = 0\r\n this.imgTop = 0\r\n this.imgLeft = 0\r\n },\r\n /**\r\n * 切换图片\r\n * true 下一张\r\n * false 上一张\r\n */\r\n toogleImg(bool, way) {\r\n let fromIndex = this.imgIndex\r\n if (bool) {\r\n this.imgIndex++\r\n if (this.imgIndex > this.imgList.length - 1) {\r\n this.imgIndex = 0\r\n }\r\n } else {\r\n this.imgIndex--\r\n if (this.imgIndex < 0) {\r\n this.imgIndex = this.imgList.length - 1\r\n }\r\n }\r\n this.changeFn &&\r\n this.changeFn({\r\n type: bool ? 'next' : 'prev',\r\n fromImgIndex: fromIndex,\r\n fromImgUrl: this.imgList[fromIndex],\r\n toImgIndex: this.imgIndex,\r\n toImgUrl: this.imgList[this.imgIndex],\r\n way,\r\n })\r\n // this.url = this.imgList[this.imgIndex]\r\n this.changeUrl(this.imgList[this.imgIndex], this.imgIndex)\r\n },\r\n // 改变图片地址\r\n /**\r\n * @description:\r\n * @param {String} url 要显示的图片的url\r\n * @param {Number} index 当前显示当图片下标,防止用户点击切换图片过快\r\n * @return {*}\r\n */\r\n changeUrl(url, index) {\r\n this.imgState = 1\r\n let img = new Image()\r\n img.src = url\r\n img.onload = () => {\r\n // 如果加载出来图片当下标不是当前显示图片当下标,则不予显示(用户点击过快当时候,会出现用户点到第三张了,此时第一张图片才加载完当情况)\r\n if (index != undefined && index == this.imgIndex) {\r\n this.imgState = 2\r\n this.imgurl = url\r\n } else if (index == undefined) {\r\n this.imgState = 2\r\n this.imgurl = url\r\n }\r\n }\r\n img.onerror = () => {\r\n if (index != undefined && index == this.imgIndex) {\r\n this.imgState = 3\r\n } else if (index == undefined) {\r\n this.imgState = 3\r\n }\r\n }\r\n },\r\n // 旋转图片\r\n rotateFunc(deg) {\r\n this.imgRotate += deg\r\n },\r\n // 图片缩放\r\n scaleFunc(num, bool) {\r\n if (this.imgScale <= 0.2 && num < 0) return\r\n if (bool) {\r\n this.imgScale = num\r\n } else {\r\n this.imgScale += num\r\n }\r\n },\r\n // 图片原尺寸切换\r\n imgToggle() {\r\n this.initImg()\r\n if (this.isFull) {\r\n this.maxWH = 'max-width:100%;max-height:100%;'\r\n } else {\r\n this.maxWH = ''\r\n }\r\n this.isFull = !this.isFull\r\n },\r\n // 鼠标滚轮缩放\r\n scrollFunc(e) {\r\n e = e || window.event\r\n // e.returnValue = false // ie\r\n // 火狐下没有wheelDelta,用detail代替,由于detail值的正负和wheelDelta相反,所以取反\r\n e.delta = e.wheelDelta || -e.detail\r\n\r\n e.preventDefault()\r\n if (e.delta > 0) {\r\n //当滑轮向上滚动时\r\n this.scaleFunc(0.05)\r\n }\r\n if (e.delta < 0) {\r\n //当滑轮向下滚动时\r\n this.scaleFunc(-0.05)\r\n }\r\n },\r\n // 鼠标按下\r\n addMove(e) {\r\n e = e || window.event\r\n this.clientX = e.clientX\r\n this.clientY = e.clientY\r\n this.$refs.heImg.onmousemove = this.moveFunc\r\n },\r\n // 手指按下事件\r\n addMoveMobile(e) {\r\n e.preventDefault()\r\n e = e || window.event\r\n if (e.touches.length > 1) {\r\n this.start = e.touches\r\n } else {\r\n this.clientX = e.touches[0].pageX\r\n this.clientY = e.touches[0].pageY\r\n }\r\n // 添加手指拖动事件\r\n this.$refs.heImg.ontouchmove = this.moveFuncMobile\r\n },\r\n // 鼠标拖动\r\n moveFunc(e) {\r\n e = e || window.event\r\n e.preventDefault()\r\n let movementX = e.clientX - this.clientX\r\n let movementY = e.clientY - this.clientY\r\n // event.clientY;\r\n this.imgLeft += movementX * 2\r\n this.imgTop += movementY * 2\r\n this.clientX = e.clientX\r\n this.clientY = e.clientY\r\n },\r\n // 手指拖动\r\n moveFuncMobile(e) {\r\n e = e || window.event\r\n if (e.touches.length > 1) {\r\n var now = e.touches\r\n var scale =\r\n this.getDistance(now[0], now[1]) /\r\n this.getDistance(this.start[0], this.start[1])\r\n // 判断是否手指缩放过,如果缩放过,要在上次缩放的比例基础上进行缩放\r\n if (this.mobileScale) {\r\n if (scale > 1) {\r\n // 放大\r\n this.scaleFunc(scale + this.mobileScale - 1, true)\r\n } else {\r\n // 缩小\r\n this.scaleFunc(scale * this.mobileScale, true)\r\n }\r\n } else {\r\n this.scaleFunc(scale, true)\r\n }\r\n } else {\r\n let touch = e.touches[0]\r\n e.preventDefault()\r\n let movementX = touch.pageX - this.clientX\r\n let movementY = touch.pageY - this.clientY\r\n // event.clientY;\r\n this.imgLeft += movementX * 2\r\n this.imgTop += movementY * 2\r\n this.clientX = touch.pageX\r\n this.clientY = touch.pageY\r\n }\r\n },\r\n // 移除拖动事件\r\n removeMove(type) {\r\n if (type === 'pc') {\r\n this.$refs.heImg.onmousemove = null\r\n } else {\r\n this.mobileScale = this.imgScale\r\n this.$refs.heImg.ontouchmove = null\r\n }\r\n },\r\n keyHandleDebounce(e) {\r\n if (this.canRun) {\r\n // 如果this.canRun为true证明当前可以执行函数\r\n this.keyHandle(e)\r\n this.canRun = false // 执行函数后一段时间内不可再次执行\r\n setTimeout(() => {\r\n this.canRun = true // 等到了我们设定的时间之后,把this.canRun改为true,可以再次执行函数\r\n }, 300)\r\n }\r\n },\r\n // 键盘事件\r\n keyHandle(e) {\r\n e = window.event || e\r\n var key = e.keyCode || e.which || e.charCode\r\n switch (key) {\r\n case 27: // esc\r\n this.close({ way: 'esc' })\r\n break\r\n case 65: // a键-上一张\r\n if (this.multiple) {\r\n this.toogleImg(false, 'key-a')\r\n }\r\n break\r\n case 68: // d键-下一张\r\n if (this.multiple) {\r\n this.toogleImg(true, 'key-d')\r\n }\r\n break\r\n case 87: // w键-放大\r\n this.scaleFunc(0.15)\r\n break\r\n case 83: // s键-缩小\r\n this.scaleFunc(-0.15)\r\n break\r\n case 81: // q键-逆时针旋转\r\n this.rotateFunc(-90)\r\n break\r\n case 69: // e键-顺时针旋转\r\n this.rotateFunc(90)\r\n break\r\n case 82: // r键-复位键\r\n this.initImg()\r\n break\r\n\r\n default:\r\n break\r\n }\r\n },\r\n // 点击遮罩层\r\n clickMask() {\r\n if (this.clickMaskCLose) {\r\n this.close({ way: 'mask' })\r\n }\r\n },\r\n //缩放 勾股定理方法-求两点之间的距离\r\n getDistance(p1, p2) {\r\n var x = p2.pageX - p1.pageX,\r\n y = p2.pageY - p1.pageY\r\n return Math.sqrt(x * x + y * y)\r\n },\r\n /**\r\n * @description:\r\n * @param {String} imgsrc\r\n * @param {*} name\r\n * @return {*}\r\n */\r\n downloadIamge() {\r\n //下载图片地址和图片名\r\n let image = new Image()\r\n // 解决跨域 Canvas 污染问题\r\n image.setAttribute('crossOrigin', 'anonymous')\r\n image.onload = function () {\r\n let canvas = document.createElement('canvas')\r\n canvas.width = image.width\r\n canvas.height = image.height\r\n let context = canvas.getContext('2d')\r\n context.drawImage(image, 0, 0, image.width, image.height)\r\n let url = canvas.toDataURL('image/png') //得到图片的base64编码数据\r\n let a = document.createElement('a') // 生成一个a元素\r\n let event = new MouseEvent('click') // 创建一个单击事件\r\n a.download = 'photo' + +new Date() // 设置图片名称\r\n a.href = url // 将生成的URL设置为a.href属性\r\n a.dispatchEvent(event) // 触发a的单击事件\r\n }\r\n image.onerror = function (err) {\r\n console.log('图片信息不正确或图片服务器禁止访问')\r\n console.log(err)\r\n }\r\n if (this.multiple) {\r\n image.src = this.imgList[this.imgIndex]\r\n } else {\r\n image.src = this.url\r\n }\r\n },\r\n },\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n@import './iconfont/iconfont.css';\r\n@import './css/default.css';\r\n</style>\r\n"]}]}