4a09c026dab2e6f854fbc1c13a09ccb2.json 24 KB

1
  1. {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\components\\hotpotModal\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\components\\hotpotModal\\index.vue","mtime":1761185179970},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQppbXBvcnQgQXJlYUJveCBmcm9tICcuL0FyZWFCb3gnOw0KaW1wb3J0IGxpbmthZGRyZXNzIGZyb20gJ0AvY29tcG9uZW50cy9saW5rYWRkcmVzcyc7DQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ09wZXJhdGlvbkZsb29yJywNCiAgY29tcG9uZW50czogew0KICAgIEFyZWFCb3gsDQogICAgbGlua2FkZHJlc3MsDQogIH0sDQogIHByb3BzOiB7DQogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uIOWbvueJh+aVsOaNruWvueixoQ0KICAgICAqIEB0eXBlIHtJbWdEYXRhfQ0KICAgICAqLw0KICAgIGltZ3M6IHsNCiAgICAgIHR5cGU6IFN0cmluZywgLy8g5Zu+54mH57G75Z6LDQogICAgICBkZWZhdWx0OiAoKSA9PiAnJywgLy8g6buY6K6k5YC85Li656m65a2X56ym5LiyDQogICAgfSwNCiAgICAvKioNCiAgICAgKiBAZGVzY3JpcHRpb24g5piv5ZCm5Li654Ot6Zeo5rGk5ZOBDQogICAgICogQHR5cGUge2Jvb2xlYW59DQogICAgICovDQogICAgaXNIb3RQb3Q6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sIC8vIOW4g+WwlOexu+Weiw0KICAgICAgZGVmYXVsdDogKCkgPT4gZmFsc2UsIC8vIOm7mOiupOWAvOS4umZhbHNlDQogICAgfSwNCiAgICAvKioNCiAgICAgKiBAZGVzY3JpcHRpb24g5Zu+54mH5Yy65Z+f5pWw5o2u5a+56LGhDQogICAgICogQHR5cGUge0FyZWFEYXRhW119DQogICAgICovDQogICAgaW1nQXJlYURhdGE6IHsNCiAgICAgIHR5cGU6IEFycmF5LCAvLyDmlbDnu4TnsbvlnosNCiAgICAgIGRlZmF1bHQ6ICgpID0+IFtdLCAvLyDpu5jorqTlgLzkuLrnqbrmlbDnu4QNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEBkZXNjcmlwdGlvbiDpk77mjqXovpPlhaXmoYbmoLflvI/lr7nosaENCiAgICAgKiBAdHlwZSB7TGlua0lucHV0U3R5bGV9DQogICAgICovDQogICAgbGlua0lucHV0U3R5bGU6IHsNCiAgICAgIHR5cGU6IE9iamVjdCwgLy8g5a+56LGh57G75Z6LDQogICAgICBkZWZhdWx0OiAoKSA9PiAoew0KICAgICAgICAvLyDpu5jorqTlgLzkuLrkuIDkuKrljIXlkKt3aWR0aOWxnuaAp+eahOWvueixoQ0KICAgICAgICB3aWR0aDogJzMwMHB4JywNCiAgICAgIH0pLA0KICAgIH0sDQogIH0sDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIC8qKg0KICAgICAgICogQGRlc2NyaXB0aW9uIOWvueivneahhuaYr+WQpuWPr+ingQ0KICAgICAgICogQHR5cGUge2Jvb2xlYW59DQogICAgICAgKi8NCiAgICAgIGRpYWxvZ1Zpc2libGU6IGZhbHNlLA0KICAgICAgLyoqDQogICAgICAgKiBAZGVzY3JpcHRpb24g5byA5aeL55qEeOWdkOaghw0KICAgICAgICogQHR5cGUge251bWJlcn0NCiAgICAgICAqLw0KICAgICAgc3Rhclg6IDAsDQogICAgICAvKioNCiAgICAgICAqIEBkZXNjcmlwdGlvbiDlvIDlp4vnmoR55Z2Q5qCHDQogICAgICAgKiBAdHlwZSB7bnVtYmVyfQ0KICAgICAgICovDQogICAgICBzdGFyWTogMCwNCiAgICAgIC8qKg0KICAgICAgICogQGRlc2NyaXB0aW9uIOWMuuWfn+WuveW6pg0KICAgICAgICogQHR5cGUge251bWJlcn0NCiAgICAgICAqLw0KICAgICAgYXJlYVdpZHRoOiAwLA0KICAgICAgLyoqDQogICAgICAgKiBAZGVzY3JpcHRpb24g5Yy65Z+f6auY5bqmDQogICAgICAgKiBAdHlwZSB7bnVtYmVyfQ0KICAgICAgICovDQogICAgICBhcmVhSGVpZ2h0OiAwLA0KICAgICAgLyoqDQogICAgICAgKiBAZGVzY3JpcHRpb24g5b2T5YmN5pi+56S655qE5Zu+54mH57Si5byVDQogICAgICAgKiBAdHlwZSB7Ym9vbGVhbn0NCiAgICAgICAqLw0KICAgICAgY2FzZVNob3c6IGZhbHNlLA0KICAgICAgLyoqDQogICAgICAgKiBAZGVzY3JpcHRpb24g5b2T5YmN5Zu+54mH55qE5a695bqmDQogICAgICAgKiBAdHlwZSB7bnVsbH0NCiAgICAgICAqLw0KICAgICAgbm93SW1nV2lkdGg6IG51bGwsDQogICAgICAvKioNCiAgICAgICAqIEBkZXNjcmlwdGlvbiDljLrln5/mlbDmja4NCiAgICAgICAqIEB0eXBlIHtBcnJheX0NCiAgICAgICAqLw0KICAgICAgYXJlYURhdGE6IFtdLA0KICAgICAgLyoqDQogICAgICAgKiBAZGVzY3JpcHRpb24g5b2T5YmN5pi+56S655qE5Zu+54mH57yW5Y+3DQogICAgICAgKiBAdHlwZSB7bnVtYmVyfQ0KICAgICAgICovDQogICAgICBpbWdOdW06IDEsDQogICAgICAvKioNCiAgICAgICAqIEBkZXNjcmlwdGlvbiDniLblhYPntKDlrr3luqYNCiAgICAgICAqIEB0eXBlIHtudW1iZXJ9DQogICAgICAgKi8NCiAgICAgIHBhcmVudFdpZHRoOiAwLA0KICAgICAgLyoqDQogICAgICAgKiBAZGVzY3JpcHRpb24g54i25YWD57Sg6auY5bqmDQogICAgICAgKiBAdHlwZSB7bnVtYmVyfQ0KICAgICAgICovDQogICAgICBwYXJlbnRIZWlnaHQ6IDAsDQogICAgICAvKioNCiAgICAgICAqIEBkZXNjcmlwdGlvbiDpu5jorqTlrr3luqYNCiAgICAgICAqIEB0eXBlIHtudW1iZXJ9DQogICAgICAgKi8NCiAgICAgIGRlZmF1bHRXaWR0aDogNzUwLA0KICAgICAgLyoqDQogICAgICAgKiBAZGVzY3JpcHRpb24g5b2T5YmN5pi+56S655qE5Zu+54mH57Si5byVDQogICAgICAgKiBAdHlwZSB7bnVtYmVyfQ0KICAgICAgICovDQogICAgICBpdGVtSW5kZXg6IDAsDQogICAgfTsNCiAgfSwNCiAgY29tcHV0ZWQ6IHt9LA0KICB3YXRjaDogew0KICAgIGltZ0FyZWFEYXRhKHZhbCkgew0KICAgICAgdGhpcy5hcmVhRGF0YSA9IFsuLi52YWxdOw0KICAgIH0sDQogIH0sDQogIG1vdW50ZWQoKSB7DQogICAgdGhpcy5hcmVhRGF0YSA9IFsuLi50aGlzLmltZ0FyZWFEYXRhXTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIG9wZW5Nb2RhbCgpIHsNCiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgICAgY29uc3QgcGFyZW50RGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ltZy1ib3gtY29udGFpbmVyJyk7DQogICAgICAgIC8v6I635Y+W5YWD57Sg55qE5a696auYDQogICAgICAgIHRoaXMucGFyZW50V2lkdGggPSB0aGlzLmRlZmF1bHRXaWR0aDsNCiAgICAgICAgLy8gdGhpcy5wYXJlbnRXaWR0aCA9IHBhcmVudERpdi5jbGllbnRXaWR0aDsNCiAgICAgICAgdGhpcy5wYXJlbnRIZWlnaHQgPSBwYXJlbnREaXYuY2xpZW50SGVpZ2h0Ow0KICAgICAgICAvLyBjb25zb2xlLmxvZygidGhpcy5wYXJlbnRXaWR0aCIsIHRoaXMucGFyZW50V2lkdGgsIHRoaXMucGFyZW50SGVpZ2h0KQ0KICAgICAgfSk7DQogICAgfSwNCiAgICBjbG9zZU1vZGFsKCkgew0KICAgICAgdGhpcy4kY29uZmlybSgn5pyq5L+d5a2Y5YaF5a6577yM5piv5ZCm5Zyo56a75byA5YmN5pS+5byD5L+d5a2Y77yfJywgJ+aPkOekuuS/oeaBrycsIHsNCiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLA0KICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywNCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgfSkNCiAgICAgICAgLnRoZW4oKCkgPT4gew0KICAgICAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKCkgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgdHlwZTogJ2luZm8nLA0KICAgICAgICAgICAgbWVzc2FnZTogJ+W3suWPlua2iCcsDQogICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g57uY55S754Ot5Yy65byA5aeLDQogICAgbW91c2VEb3duKGUpIHsNCiAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgIHRoaXMuY2FzZVNob3cgPSB0cnVlOw0KICAgICAgLy8g6K6w5b2V5ruR5Yqo55qE5Yid5aeL5YC8DQogICAgICB0aGlzLnN0YXJYID0gZS5sYXllclggLTU7DQogICAgICB0aGlzLnN0YXJZID0gZS5sYXllclkgLTU7DQogICAgICAvLyDpvKDmoIfmu5HliqjnmoTov4fnqIsNCiAgICAgIGlmICghZG9jdW1lbnQub25tb3VzZW1vdmUpIHsNCiAgICAgICAgbGV0IG1heFdpZHRoID0gdGhpcy5kZWZhdWx0V2lkdGggLSBlLmxheWVyWDsNCiAgICAgICAgZG9jdW1lbnQub25tb3VzZW1vdmUgPSAoZXYpID0+IHsNCiAgICAgICAgICBpZiAoZXYubGF5ZXJYIC0gdGhpcy5zdGFyWCA8IG1heFdpZHRoKSB7DQogICAgICAgICAgICB0aGlzLmFyZWFXaWR0aCA9IGV2LmxheWVyWCAtIHRoaXMuc3RhclggLSA1Ow0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLmFyZWFXaWR0aCA9IG1heFdpZHRoOw0KICAgICAgICAgIH0NCiAgICAgICAgICB0aGlzLmFyZWFIZWlnaHQgPSBldi5sYXllclkgLSB0aGlzLnN0YXJZIC01Ow0KICAgICAgICB9Ow0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g57uY55S754Ot5Yy657uT5p2fDQogICAgY2hhbmdlU3RvcCgpIHsNCiAgICAgIGRvY3VtZW50Lm9ubW91c2Vtb3ZlID0gbnVsbDsNCiAgICAgIHRoaXMuaW1nTnVtID0gdGhpcy5hcmVhRGF0YS5sZW5ndGggKyAxOw0KICAgICAgaWYgKHRoaXMuY2FzZVNob3cgJiYgdGhpcy5hcmVhV2lkdGggPiAxMCAmJiB0aGlzLmFyZWFIZWlnaHQgPiAxMCkgew0KICAgICAgICBjb25zdCBkYXRhID0gew0KICAgICAgICAgIG51bWJlcjogdGhpcy5pbWdOdW0sDQogICAgICAgICAgc3Rhclg6IHRoaXMuc3RhclgsDQogICAgICAgICAgc3Rhclk6IHRoaXMuc3RhclksDQogICAgICAgICAgYXJlYVdpZHRoOiB0aGlzLmFyZWFXaWR0aCwNCiAgICAgICAgICBhcmVhSGVpZ2h0OiB0aGlzLmFyZWFIZWlnaHQsDQogICAgICAgICAgbm93SW1nV2lkdGg6IHRoaXMuZGVmYXVsdFdpZHRoLA0KICAgICAgICAgIGxpbms6ICcnLA0KICAgICAgICB9Ow0KICAgICAgICB0aGlzLmFyZWFEYXRhLnB1c2goZGF0YSk7DQogICAgICB9DQogICAgICAvLyDliJ3lp4vljJbnu5jlm74NCiAgICAgIHRoaXMuY2FzZVNob3cgPSBmYWxzZTsNCiAgICAgIHRoaXMuc3RhclggPSAwOw0KICAgICAgdGhpcy5zdGFyWSA9IDA7DQogICAgICB0aGlzLmFyZWFXaWR0aCA9IDA7DQogICAgICB0aGlzLmFyZWFIZWlnaHQgPSAwOw0KICAgIH0sDQogICAgLy8g5Yig6Zmk5oyH5a6a54Ot5Yy6DQogICAgZGVsQXJlYUJveChpbmRleCkgew0KICAgICAgLyog5Yig6Zmk5p+Q5Liq54Ot5Yy6ICovDQogICAgICB0aGlzLmFyZWFEYXRhLnNwbGljZShpbmRleCwgMSk7DQogICAgICB0aGlzLiRlbWl0KCdkZWxBcmVhRGF0YScsIHRoaXMuYXJlYURhdGEpOw0KICAgICAgLyog5Yig6Zmk5ZCOIOavj+S4queDreWMuuaMiemhuuW6j+mHjeaWsOe8luWPtyAqLw0KICAgICAgaWYgKHRoaXMuYXJlYURhdGEpIHsNCiAgICAgICAgY29uc3QgYXJyID0gdGhpcy5hcmVhRGF0YS5maWx0ZXIoKGkpID0+IGkubnVtYmVyID4gaW5kZXgpOw0KICAgICAgICBpZiAoIWFycikgcmV0dXJuOw0KICAgICAgICBhcnIuZm9yRWFjaCgoaSkgPT4gaS5udW1iZXItLSk7DQogICAgICAgIGlmICh0aGlzLmFyZWFEYXRhW3RoaXMuYXJlYURhdGEubGVuZ3RoIC0gMV0pIHsNCiAgICAgICAgICB0aGlzLmltZ051bSA9IHRoaXMuYXJlYURhdGFbdGhpcy5hcmVhRGF0YS5sZW5ndGggLSAxXS5udW1iZXIgKyAxOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuaW1nTnVtID0gMTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g5re75Yqg572R5Z2ADQogICAgYWRkVVJMKGluZGV4LCB1cmwpIHsNCiAgICAgIGxldCBvYmogPSB7DQogICAgICAgIC4uLnRoaXMuYXJlYURhdGFbaW5kZXhdLA0KICAgICAgICBsaW5rOiB1cmwsDQogICAgICB9Ow0KICAgICAgdGhpcy4kc2V0KHRoaXMuYXJlYURhdGEsIGluZGV4LCBvYmopOw0KICAgIH0sDQogICAgLy8g5L+d5a2Y54Ot5Yy65L+h5oGvDQogICAgc2F2ZUFyZWFEYXRhKCkgew0KICAgICAgaWYgKCh0aGlzLmFyZWFEYXRhICYmICF0aGlzLmFyZWFEYXRhLmxlbmd0aCkgfHwgIXRoaXMuY2hlY2tEYXRhKHRoaXMuYXJlYURhdGEpKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+eDreWMuuaYr+WQpumFjee9rumTvuaOpeOAgeaYr+WQpuiHs+Wwkea3u+WKoOS4gOS4queDreWMuj8nKTsNCiAgICAgICAgcmV0dXJuOw0KICAgICAgfQ0KICAgICAgdGhpcy4kZW1pdCgnc2F2ZUFyZWFEYXRhJywgdGhpcy5hcmVhRGF0YSk7DQogICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSBmYWxzZTsNCiAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn57yW6L6R5oiQ5YqfIScpOw0KICAgIH0sDQogICAgLyoqDQogICAgICog5qOA5p+l5YiX6KGo5Lit5q+P5Liq5YWD57Sg5piv5ZCm6YO95pyJIGxpbmsg5bGe5oCnDQogICAgICogQHBhcmFtIHtBcnJheX0gbGlzdCAtIOW+heajgOafpeeahOWIl+ihqA0KICAgICAqIEByZXR1cm5zIHtCb29sZWFufSAtIOaYr+WQpuaJgOacieWFg+e0oOmDveaciSBsaW5rIOWxnuaApw0KICAgICAqLw0KICAgIGNoZWNrRGF0YShsaXN0KSB7DQogICAgICBsZXQgaXNDaGVjayA9IHRydWU7DQogICAgICBsaXN0LnNvbWUoKHZhbCkgPT4gew0KICAgICAgICBpZiAoIXZhbC5saW5rKSB7DQogICAgICAgICAgaXNDaGVjayA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICAgIHJldHVybiBpc0NoZWNrOw0KICAgIH0sDQogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uIOiOt+WPlumTvuaOpeWcsOWdgOW5tuaJk+W8gOa3u+WKoOmTvuaOpeeahOaooeaAgeahhg0KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIOW9k+WJjemhueeahOe0ouW8leWAvA0KICAgICAqLw0KICAgIGdldExpbmsoaW5kZXgpIHsNCiAgICAgIC8vIOiuvue9ruW9k+WJjemhueeahOe0ouW8leWAvA0KICAgICAgdGhpcy5pdGVtSW5kZXggPSBpbmRleDsNCiAgICAgIC8vIOaJk+W8gOa3u+WKoOmTvuaOpeeahOaooeaAgeahhg0KICAgICAgdGhpcy4kcmVmcy5saW5rYWRkcmVzLm1vZGFscyA9IHRydWU7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBAZGVzY3JpcHRpb24g5aSE55CG6ZO+5o6l5Zyw5Z2A55qE6L6T5YWl5LqL5Lu2DQogICAgICogQHBhcmFtIHtzdHJpbmd9IGUgLSDpk77mjqXlnLDlnYANCiAgICAgKi8NCiAgICBsaW5rVXJsKGUpIHsNCiAgICAgIC8vIOWwhumTvuaOpeWcsOWdgOWtmOWCqOWIsOWvueW6lOeahOaVsOaNrumhueS4rQ0KICAgICAgdGhpcy5hcmVhRGF0YVt0aGlzLml0ZW1JbmRleF0ubGluayA9IGU7DQogICAgfSwNCiAgfSwNCn07DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AA4EA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":"index.vue","sourceRoot":"src/components/hotpotModal","sourcesContent":["<template>\r\n <div>\r\n <el-dialog title=\"编辑热区\" :visible.sync=\"dialogVisible\" @opened=\"openModal\" fullscreen>\r\n <div class=\"operationFloor\">\r\n <div class=\"imgBox\" @mouseup.left.stop=\"changeStop()\">\r\n <div ref=\"container\" id=\"img-box-container\" class=\"container\">\r\n <img\r\n ref=\"backgroundImg\"\r\n :src=\"imgs\"\r\n ondragstart=\"return false;\"\r\n oncontextmenu=\"return false;\"\r\n onselect=\"document.selection.empty();\"\r\n alt=\"img\"\r\n @mousedown.left.stop=\"mouseDown($event)\"\r\n />\r\n <!--draw hotpot-->\r\n <div\r\n v-show=\"caseShow\"\r\n :style=\"{\r\n width: areaWidth + 'px',\r\n height: areaHeight + 'px',\r\n left: starX + 'px',\r\n top: starY + 'px',\r\n }\"\r\n class=\"area\"\r\n />\r\n <!--be hotpot-->\r\n <AreaBox\r\n v-for=\"(item, index) in areaData\"\r\n :area-data-index=\"index\"\r\n :key=\"'area' + index\"\r\n :link=\"item.link\"\r\n :title=\"item.title\"\r\n :type=\"parseInt(item.type)\"\r\n :area-init.sync=\"item\"\r\n :parent-width=\"parentWidth\"\r\n :parent-height=\"parentHeight\"\r\n @delAreaBox=\"delAreaBox\"\r\n @addURL=\"addURL\"\r\n />\r\n </div>\r\n </div>\r\n <!-- 热区链接配置 -->\r\n <div class=\"form\">\r\n <h2 class=\"mb20\">图片热区</h2>\r\n <el-alert type=\"warning\" :closable=\"false\" show-icon>框选热区范围,双击设置热区信息</el-alert>\r\n\r\n <div v-for=\"(item, index) in areaData\" :key=\"index\" class=\"form-row\">\r\n <div class=\"form-item\">\r\n <span class=\"num\">热区{{ item.number }}</span>\r\n </div>\r\n <div class=\"form-item label\">\r\n <div>\r\n <el-input\r\n icon=\"ios-arrow-forward\"\r\n v-model=\"item.link\"\r\n :style=\"linkInputStyle\"\r\n placeholder=\"选择跳转链接\"\r\n >\r\n <i class=\"el-icon-link\" slot=\"suffix\" @click=\"getLink(index)\" />\r\n </el-input>\r\n </div>\r\n </div>\r\n <i class=\"el-icon-delete\" @click=\"delAreaBox(index)\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div slot=\"footer\">\r\n <el-button class=\"mr20\" type=\"primary\" @click=\"saveAreaData\"> 完成 </el-button>\r\n </div>\r\n </el-dialog>\r\n <linkaddress ref=\"linkaddres\" @linkUrl=\"linkUrl\"></linkaddress>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport AreaBox from './AreaBox';\r\nimport linkaddress from '@/components/linkaddress';\r\n\r\nexport default {\r\n name: 'OperationFloor',\r\n components: {\r\n AreaBox,\r\n linkaddress,\r\n },\r\n props: {\r\n /**\r\n * @description 图片数据对象\r\n * @type {ImgData}\r\n */\r\n imgs: {\r\n type: String, // 图片类型\r\n default: () => '', // 默认值为空字符串\r\n },\r\n /**\r\n * @description 是否为热门汤品\r\n * @type {boolean}\r\n */\r\n isHotPot: {\r\n type: Boolean, // 布尔类型\r\n default: () => false, // 默认值为false\r\n },\r\n /**\r\n * @description 图片区域数据对象\r\n * @type {AreaData[]}\r\n */\r\n imgAreaData: {\r\n type: Array, // 数组类型\r\n default: () => [], // 默认值为空数组\r\n },\r\n /**\r\n * @description 链接输入框样式对象\r\n * @type {LinkInputStyle}\r\n */\r\n linkInputStyle: {\r\n type: Object, // 对象类型\r\n default: () => ({\r\n // 默认值为一个包含width属性的对象\r\n width: '300px',\r\n }),\r\n },\r\n },\r\n data() {\r\n return {\r\n /**\r\n * @description 对话框是否可见\r\n * @type {boolean}\r\n */\r\n dialogVisible: false,\r\n /**\r\n * @description 开始的x坐标\r\n * @type {number}\r\n */\r\n starX: 0,\r\n /**\r\n * @description 开始的y坐标\r\n * @type {number}\r\n */\r\n starY: 0,\r\n /**\r\n * @description 区域宽度\r\n * @type {number}\r\n */\r\n areaWidth: 0,\r\n /**\r\n * @description 区域高度\r\n * @type {number}\r\n */\r\n areaHeight: 0,\r\n /**\r\n * @description 当前显示的图片索引\r\n * @type {boolean}\r\n */\r\n caseShow: false,\r\n /**\r\n * @description 当前图片的宽度\r\n * @type {null}\r\n */\r\n nowImgWidth: null,\r\n /**\r\n * @description 区域数据\r\n * @type {Array}\r\n */\r\n areaData: [],\r\n /**\r\n * @description 当前显示的图片编号\r\n * @type {number}\r\n */\r\n imgNum: 1,\r\n /**\r\n * @description 父元素宽度\r\n * @type {number}\r\n */\r\n parentWidth: 0,\r\n /**\r\n * @description 父元素高度\r\n * @type {number}\r\n */\r\n parentHeight: 0,\r\n /**\r\n * @description 默认宽度\r\n * @type {number}\r\n */\r\n defaultWidth: 750,\r\n /**\r\n * @description 当前显示的图片索引\r\n * @type {number}\r\n */\r\n itemIndex: 0,\r\n };\r\n },\r\n computed: {},\r\n watch: {\r\n imgAreaData(val) {\r\n this.areaData = [...val];\r\n },\r\n },\r\n mounted() {\r\n this.areaData = [...this.imgAreaData];\r\n },\r\n methods: {\r\n openModal() {\r\n this.$nextTick(() => {\r\n const parentDiv = document.querySelector('#img-box-container');\r\n //获取元素的宽高\r\n this.parentWidth = this.defaultWidth;\r\n // this.parentWidth = parentDiv.clientWidth;\r\n this.parentHeight = parentDiv.clientHeight;\r\n // console.log(\"this.parentWidth\", this.parentWidth, this.parentHeight)\r\n });\r\n },\r\n closeModal() {\r\n this.$confirm('未保存内容,是否在离开前放弃保存?', '提示信息', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n })\r\n .then(() => {\r\n this.dialogVisible = false;\r\n })\r\n .catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消',\r\n });\r\n });\r\n },\r\n // 绘画热区开始\r\n mouseDown(e) {\r\n e.preventDefault();\r\n this.caseShow = true;\r\n // 记录滑动的初始值\r\n this.starX = e.layerX -5;\r\n this.starY = e.layerY -5;\r\n // 鼠标滑动的过程\r\n if (!document.onmousemove) {\r\n let maxWidth = this.defaultWidth - e.layerX;\r\n document.onmousemove = (ev) => {\r\n if (ev.layerX - this.starX < maxWidth) {\r\n this.areaWidth = ev.layerX - this.starX - 5;\r\n } else {\r\n this.areaWidth = maxWidth;\r\n }\r\n this.areaHeight = ev.layerY - this.starY -5;\r\n };\r\n }\r\n },\r\n // 绘画热区结束\r\n changeStop() {\r\n document.onmousemove = null;\r\n this.imgNum = this.areaData.length + 1;\r\n if (this.caseShow && this.areaWidth > 10 && this.areaHeight > 10) {\r\n const data = {\r\n number: this.imgNum,\r\n starX: this.starX,\r\n starY: this.starY,\r\n areaWidth: this.areaWidth,\r\n areaHeight: this.areaHeight,\r\n nowImgWidth: this.defaultWidth,\r\n link: '',\r\n };\r\n this.areaData.push(data);\r\n }\r\n // 初始化绘图\r\n this.caseShow = false;\r\n this.starX = 0;\r\n this.starY = 0;\r\n this.areaWidth = 0;\r\n this.areaHeight = 0;\r\n },\r\n // 删除指定热区\r\n delAreaBox(index) {\r\n /* 删除某个热区 */\r\n this.areaData.splice(index, 1);\r\n this.$emit('delAreaData', this.areaData);\r\n /* 删除后 每个热区按顺序重新编号 */\r\n if (this.areaData) {\r\n const arr = this.areaData.filter((i) => i.number > index);\r\n if (!arr) return;\r\n arr.forEach((i) => i.number--);\r\n if (this.areaData[this.areaData.length - 1]) {\r\n this.imgNum = this.areaData[this.areaData.length - 1].number + 1;\r\n } else {\r\n this.imgNum = 1;\r\n }\r\n }\r\n },\r\n // 添加网址\r\n addURL(index, url) {\r\n let obj = {\r\n ...this.areaData[index],\r\n link: url,\r\n };\r\n this.$set(this.areaData, index, obj);\r\n },\r\n // 保存热区信息\r\n saveAreaData() {\r\n if ((this.areaData && !this.areaData.length) || !this.checkData(this.areaData)) {\r\n this.$message.error('热区是否配置链接、是否至少添加一个热区?');\r\n return;\r\n }\r\n this.$emit('saveAreaData', this.areaData);\r\n this.dialogVisible = false;\r\n this.$message.success('编辑成功!');\r\n },\r\n /**\r\n * 检查列表中每个元素是否都有 link 属性\r\n * @param {Array} list - 待检查的列表\r\n * @returns {Boolean} - 是否所有元素都有 link 属性\r\n */\r\n checkData(list) {\r\n let isCheck = true;\r\n list.some((val) => {\r\n if (!val.link) {\r\n isCheck = false;\r\n }\r\n });\r\n return isCheck;\r\n },\r\n /**\r\n * @description 获取链接地址并打开添加链接的模态框\r\n * @param {number} index - 当前项的索引值\r\n */\r\n getLink(index) {\r\n // 设置当前项的索引值\r\n this.itemIndex = index;\r\n // 打开添加链接的模态框\r\n this.$refs.linkaddres.modals = true;\r\n },\r\n /**\r\n * @description 处理链接地址的输入事件\r\n * @param {string} e - 链接地址\r\n */\r\n linkUrl(e) {\r\n // 将链接地址存储到对应的数据项中\r\n this.areaData[this.itemIndex].link = e;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n::v-deep .el-dialog {\r\n border-radius: 0px !important;\r\n .el-alert__icon.is-big {\r\n font-size: 14px;\r\n width: 16px;\r\n }\r\n .el-alert .el-alert__description {\r\n margin: 0;\r\n }\r\n}\r\n.btn {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n padding: 16px 0;\r\n}\r\n.dialog-footer {\r\n text-align: right;\r\n margin-top: 20px;\r\n margin-right: 20px;\r\n}\r\n.operationFloor {\r\n display: flex;\r\n position: relative;\r\n max-height: 80vh;\r\n .header {\r\n .titleBox {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n height: 100px;\r\n .name {\r\n font-size: 13px;\r\n font-weight: bold;\r\n }\r\n }\r\n .textBox {\r\n font-size: 12px;\r\n color: #777;\r\n margin-bottom: 10px;\r\n }\r\n }\r\n .imgBox::-webkit-scrollbar {\r\n display: none; /* Chrome Safari */\r\n }\r\n .imgBox {\r\n display: flex;\r\n justify-content: center;\r\n width: 65%;\r\n overflow-y: scroll;\r\n max-height: 800px;\r\n .container {\r\n position: relative;\r\n border: 1px solid #f5f5f5;\r\n }\r\n\r\n img {\r\n cursor: crosshair;\r\n display: block;\r\n width: 750px;\r\n }\r\n .area {\r\n position: absolute;\r\n width: 200px;\r\n height: 200px;\r\n left: 200px;\r\n top: 300px;\r\n background: rgba(#2980b9, 0.3);\r\n border: 1px dashed #34495e;\r\n }\r\n }\r\n}\r\n.form {\r\n font-size: 12px;\r\n width: 30%;\r\n max-height: 800px;\r\n overflow-y: scroll;\r\n .form-row {\r\n display: flex;\r\n margin: 12px 0;\r\n align-items: center;\r\n .form-item {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n white-space: nowrap;\r\n margin: 0 5px;\r\n font-size: 12px;\r\n .num {\r\n width: 69px;\r\n color: #999;\r\n font-size: 12px;\r\n }\r\n .label {\r\n color: #c7c7c7;\r\n }\r\n }\r\n }\r\n .el-icon-delete {\r\n font-size: 16px;\r\n cursor: pointer;\r\n }\r\n}\r\n</style>\r\n"]}]}