c84164baaeeaa8ba29afa84c9628b43a.json 106 KB

1
  1. {"remainingRequest":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/account/camera/index.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/account/camera/index.vue","mtime":1708395041885},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBnZXRUb2tlbiB9IGZyb20gIkAvdXRpbHMvYXV0aCI7DQppbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAidnVleCI7DQppbXBvcnQgeyBlZGl0QWNjb3VudE1hbmFnZW1lbnQsIHNlcnZpY2VGaWxlb3NzIH0gZnJvbSAiLi4vLi4vLi4vYXBpL3ZpZGVvIjsNCmltcG9ydCB7DQogIGdldENhbWVyYURhdGFMaXN0LA0KICBnZXRMaW5lRGlyLA0KICBnZXRSZWNvcmRpbmcsDQogIGdldFN0YXJ0UmVjb3JkaW5nLA0KICBnZXRMaW5lV2F5TGlzdCwNCiAgZ2V0Q2FtZXJhRGF0YUFkZE5ld2VyLA0KICBnZXREb3duTG9hZExpc3QsDQogIGdldFdvcmtTZXRpb24sDQogIGdldExpbmVEYXRhLA0KICBnZXRDYW1lcmFEYXRhRGVsZXRlLA0KICBnZXRDYW1lcmFGZXRhaWwsDQogIGdldENhbWVyYURhdGFVcExvYWRPdXQsDQogIGdldENhbWVyYURhdGFVcGRhdGUsDQogIGdldERlcHRMaXN0LA0KICBnZXRDYW1lcmFEYXRhVXBMb2FkSW4sDQogIHRvRW5hYkFjY3JhbWUsDQogIGdldERpcmVjdGlvbg0KfSBmcm9tICJAL2FwaS9hY2NvdW50L2NhbWVyYSI7DQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogIkNhcnQiLA0KICBjb21wdXRlZDogew0KICAgIC4uLm1hcEdldHRlcnMoWyJuYW1lIl0pLA0KICB9LA0KICBkYXRhKCkgew0KICAgIHZhciB2YWxpZGF0ZVBhc3N4amJtID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gew0KICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICIiKSB7DQogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcigi6K+36L6T5YWl55u45py657yW56CBIikpOw0KICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPiAxMDApIHsNCiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCLmnIDlpJrlj6/ovpPlhaUxMDDkvY0iKSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBjYWxsYmFjaygpOw0KICAgICAgfQ0KICAgIH07DQogICAgdmFyIHZhbGlkYXRlUGFzc3hqdGQgPSAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSA9PiB7DQogICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gIiIpIHsNCiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCLor7fovpPlhaXnm7jmnLrpgJrpgZMiKSk7DQogICAgICB9IGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA+IDEwMCkgew0KICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuacgOWkmuWPr+i+k+WFpTEwMOS9jSIpKTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIGNhbGxiYWNrKCk7DQogICAgICB9DQogICAgfTsNCiAgICB2YXIgYXpsY3d6ID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gew0KICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICIiKSB7DQogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcigi6K+36L6T5YWl5a6J6KOF6YeM56iL5L2N572uIikpOw0KICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPiAxMCkgew0KICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuacgOWkmuWPr+i+k+WFpTEw5L2NIikpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgY2FsbGJhY2soKTsNCiAgICAgIH0NCiAgICB9Ow0KICAgIHZhciBxc2xjID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gew0KICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICIiKSB7DQogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcigi6K+36L6T5YWl6LW35aeL6YeM56iLIikpOw0KICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPiAxMCkgew0KICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuacgOWkmuWPr+i+k+WFpTEw5L2NIikpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgY2FsbGJhY2soKTsNCiAgICAgIH0NCiAgICB9Ow0KICAgIHZhciBqc2xjID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gew0KICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICIiKSB7DQogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcigi6K+36L6T5YWl57uT5p2f6YeM56iLIikpOw0KICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPiAxMCkgew0KICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuacgOWkmuWPr+i+k+WFpTEw5L2NIikpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgY2FsbGJhY2soKTsNCiAgICAgIH0NCiAgICB9Ow0KICAgIHJldHVybiB7DQogICAgICBwamp3ZDogIiIsDQogICAgICBwakprZnc6ICIiLA0KICAgICAgdXBsb2FkVXJsOiAiaHR0cDovLzEyNC43MC41OC4yMDk6MTg4MTAvc2VydmljZS9maWxlb3NzIiwgLy8g5LiK5Lyg5paH5Lu255qE5o6l5Y+j5Zyw5Z2ADQogICAgICBkaWFsb2dWaXNpYmxlOiBmYWxzZSwNCiAgICAgIC8vIOWvvOWFpQ0KICAgICAgZGF0YUZvcm06IHsNCiAgICAgICAgbmFtZTogIiIsDQogICAgICAgIGZpbGU6IG51bGwsDQogICAgICB9LA0KICAgICAgdmlkZW9Vcmw6ICIiLA0KICAgICAgc2VhcmNoU2hvdzogdHJ1ZSwNCiAgICAgIHN0YXJ0U3RhdHVzOiAiIiwNCiAgICAgIHJ1bGVzOiB7DQogICAgICAgIGNhbWVyYUNvZGU6IFsNCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCB2YWxpZGF0b3I6IHZhbGlkYXRlUGFzc3hqYm0sIHRyaWdnZXI6ICJibHVyIiB9LA0KICAgICAgICBdLA0KICAgICAgICBjaGFubmVsOiBbDQogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgdmFsaWRhdG9yOiB2YWxpZGF0ZVBhc3N4anRkLCB0cmlnZ2VyOiAiYmx1ciIgfSwNCiAgICAgICAgXSwNCiAgICAgICAgcmFpbHdheUNvZGU6IFsNCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6K+36YCJ5oup57q/6LevIiwgdHJpZ2dlcjogImNoYW5nZSIgfSwNCiAgICAgICAgXSwNCiAgICAgICAgZGVwdE5hbWU6IFsNCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6K+36YCJ5oup5omA5bGe5bel5Yqh5q61IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwNCiAgICAgICAgXSwNCiAgICAgICAgbGluZURpck5hbWU6IFsNCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6K+36YCJ5oup6KGM5YirIiwgdHJpZ2dlcjogImNoYW5nZSIgfSwNCiAgICAgICAgXSwNCiAgICAgICAgaW5zdGFsbE1pbGVCRDogWw0KICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIHZhbGlkYXRvcjogYXpsY3d6LCB0cmlnZ2VyOiAiY2hhbmdlIiB9LA0KICAgICAgICBdLA0KICAgICAgICBiZWdpbk1pbGVCRDogW3sgcmVxdWlyZWQ6IHRydWUsIHZhbGlkYXRvcjogcXNsYywgdHJpZ2dlcjogImJsdXIiIH1dLA0KICAgICAgICBlbmRNaWxlQkQ6IFt7IHJlcXVpcmVkOiB0cnVlLCB2YWxpZGF0b3I6IGpzbGMsIHRyaWdnZXI6ICJibHVyIiB9XSwNCiAgICAgICAgLy8gaW5zdGFsbExvbmdpdHVkZTogWw0KICAgICAgICAvLyAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLor7fovpPlhaXnu4/luqYiLCB0cmlnZ2VyOiAiYmx1ciIgfSwNCiAgICAgICAgLy8gXSwNCiAgICAgICAgLy8gaW5zdGFsbExhdGl0dWRlOiBbDQogICAgICAgIC8vICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuivt+i+k+WFpee6rOW6piIsIHRyaWdnZXI6ICJibHVyIiB9LA0KICAgICAgICAvLyBdLA0KICAgICAgICBjYXJkTnVtOiBbDQogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuivt+i+k+WFpeeJqeiBlOe9keWNoeWPtyIsIHRyaWdnZXI6ICJibHVyIiB9LA0KICAgICAgICBdLA0KICAgICAgICBzdGF0aW9uTmFtZTpbDQogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuivt+i+k+WFpea1i+eCueWQjeensCIsIHRyaWdnZXI6ICJibHVyIiB9LA0KICAgICAgICBdDQogICAgICB9LA0KICAgICAgZGlzYWJsZWRTYXZlOiBmYWxzZSwNCiAgICAgIGVudGVyOiAwLA0KICAgICAgcXVlcnlQYXJhbXM6IHsNCiAgICAgICAgc3RhdGlvbk5hbWU6JycsDQogICAgICAgIGNhbWVyYUNvZGU6JycsDQogICAgICAgIGxpbmU6ICIiLA0KICAgICAgICB3b3Jrc1NlY3Rpb246ICIiLA0KICAgICAgICBsaW5lRGlzdGluY3Rpb246ICIiLA0KICAgICAgICBzdGFydE1pbGVhZ2U6ICIiLA0KICAgICAgICBmaW5pc2h0TWlsZWFnZTogIiIsDQogICAgICAgIC8vIHJhaWx3YXlDb2RlOiAiIiwNCiAgICAgICAgZGVwdE5hbWU6ICIiLA0KICAgICAgICBkZXB0SWQ6ICIiLA0KICAgICAgICBsaW5lRGlyOiAiIiwNCiAgICAgICAgYmVnaW5NaWxlQkQ6ICIiLA0KICAgICAgICBlbmRNaWxlQkQ6ICIiLA0KICAgICAgICBwYWdlTnVtOiAxLA0KICAgICAgICBwYWdlU2l6ZTogMTAsDQogICAgICB9LA0KICAgICAgZmlyZWN0aW9uRGF0YTpbXSwNCiAgICAgIGlkczogW10sDQogICAgICB0aXRsZTogIiIsDQogICAgICB1cGxvYWREaWFsb2c6IGZhbHNlLA0KICAgICAgcmFkaW9BcnJheTogWw0KICAgICAgICB7DQogICAgICAgICAgdmFsdWU6ICIxIiwNCiAgICAgICAgICBsYWJlbDogIuaYryIsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB2YWx1ZTogIjIiLA0KICAgICAgICAgIGxhYmVsOiAi5ZCmIiwNCiAgICAgICAgfSwNCiAgICAgIF0sDQogICAgICB4aWFubHU6IFsNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAiMSIsDQogICAgICAgICAgbGFiZWw6ICJ4eHgx57q/6LevIiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAiMiIsDQogICAgICAgICAgbGFiZWw6ICJ4eHgy57q/6LevIiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAiMyIsDQogICAgICAgICAgbGFiZWw6ICJ4eHgz57q/6LevIiwNCiAgICAgICAgfSwNCiAgICAgIF0sDQogICAgICBnb25nd3VkdWFuOiBbDQogICAgICAgIHsNCiAgICAgICAgICB2YWx1ZTogIjEiLA0KICAgICAgICAgIGxhYmVsOiAieHgx5bel5Yqh5q61IiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAiMiIsDQogICAgICAgICAgbGFiZWw6ICJ4eDLlt6XliqHmrrUiLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgdmFsdWU6ICIzIiwNCiAgICAgICAgICBsYWJlbDogInh4M+W3peWKoeautSIsDQogICAgICAgIH0sDQogICAgICBdLA0KICAgICAgLy8gaGFuZ2JpZTogWw0KICAgICAgLy8gICB7DQogICAgICAvLyAgICAgdmFsdWU6ICcxJywNCiAgICAgIC8vICAgICBsYWJlbDogJ+S4iuihjCcNCiAgICAgIC8vICAgfSwNCiAgICAgIC8vICAgew0KICAgICAgLy8gICAgIHZhbHVlOiAnMicsDQogICAgICAvLyAgICAgbGFiZWw6ICfkuIvooYwnDQogICAgICAvLyAgIH0NCiAgICAgIC8vIF0sDQogICAgICBsaWNoZW5nOiBbDQogICAgICAgIHsNCiAgICAgICAgICB2YWx1ZTogIjEiLA0KICAgICAgICAgIGxhYmVsOiAiMWttIiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAiMiIsDQogICAgICAgICAgbGFiZWw6ICIya20iLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgdmFsdWU6ICIzIiwNCiAgICAgICAgICBsYWJlbDogIjNrbSIsDQogICAgICAgIH0sDQogICAgICBdLA0KICAgICAgemhhbmd0YWk6IFsNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAiMSIsDQogICAgICAgICAgbGFiZWw6ICLlt7Lop6PpmaQiLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgdmFsdWU6ICIyIiwNCiAgICAgICAgICBsYWJlbDogIuacquino+mZpCIsDQogICAgICAgIH0sDQogICAgICBdLA0KICAgICAgdGFibGVEYXRhOiBbXSwNCiAgICAgIHRyZWVEYXRhOiBbXSwNCiAgICAgIHdvcmtTZXRpRGF0YTogW10sDQogICAgICBnZXRMaW5lRGF0YTogW10sDQogICAgICB0b3RhbDogMCwNCiAgICAgIGRpYWxvZ0Zvcm1WaXNpYmxlOiBmYWxzZSwNCiAgICAgIGZvcm06IHsNCiAgICAgICAgbGluZURpck5hbWU6ICIiLA0KICAgICAgICByYWlsd2F5Q29kZTogIiIsDQogICAgICAgIGNhbWVyYUNvZGU6ICIiLA0KICAgICAgICBjaGFubmVsOiAiIiwNCiAgICAgICAgZGVwdElkOiAiIiwNCiAgICAgICAgZGVwdE5hbWU6ICIiLA0KICAgICAgICBsaW5lRGlyOiAiIiwNCiAgICAgICAgaW5zdGFsbE1pbGVCRDogIiIsDQogICAgICAgIGJlZ2luTWlsZUJEOiAiIiwNCiAgICAgICAgZW5kTWlsZUJEOiAiIiwNCiAgICAgICAgaW5zdGFsbExvbmdpdHVkZTogIiIsDQogICAgICAgIGluc3RhbGxMYXRpdHVkZTogIiIsDQogICAgICAgIGNhcmROdW06ICIiLA0KICAgICAgICBzdGFydFJlY29yZGluZzogIiIsDQogICAgICAgIHJlbWFyazogIiIsDQogICAgICAgIHN0YXRpb25OYW1lOicnLA0KICAgICAgICBlbmFibGVPck5vdDogMSwNCiAgICAgICAgbW9uaXRvcmluZ0RpcmVjdGlvbjonJywNCiAgICAgICAgbW9uaXRvcmluZ0RpcmVjdGlvbk5hbWU6JycNCiAgICAgIH0sDQogICAgICBkZXRhaWxEaWFsb2c6IGZhbHNlLA0KICAgICAgZGV0YWlsRGF0YToge30sDQogICAgICBsaW5lV2F5RGF0YTogW10sDQogICAgICBpZHM6IFtdLA0KICAgICAgZmlsZUxpc3Q6IFtdLA0KICAgICAgY2FtZXJhQ29kZVZhbHVlOiAiIiwNCiAgICAgIGRpYWxvZ1R5cGU6ICIiLA0KICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBnZXRUb2tlbigpIH0sDQogICAgICBhY3Rpb246DQogICAgICAgICJodHRwOi8vMTI0LjcwLjU4LjIwOToxODgxOS9oYXphcmQvc2VydmljZS9iYXNlQ2FtZXJhTWFuYWdlbWVudC9pbXBvcnRCYXNlQWNjb3VudE1hbmFnZW1lbnQiLA0KICAgIH07DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgLi4ubWFwR2V0dGVycyhbIm5hbWUiXSksDQogIH0sDQogIHdhdGNoOiB7DQogICAgImZvcm0uZGVwdE5hbWUiOiB7DQogICAgICBoYW5kbGVyKHZhbCkgew0KICAgICAgICB0aGlzLiRzZXQodGhpcy5mb3JtLCAiZGVwdE5hbWUiLCB2YWwpOw0KICAgICAgICB0aGlzLm9wdGlvblByb3BzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHsNCiAgICAgICAgICBpZiAodmFsID09IGl0ZW0udmFsdWUpIHsNCiAgICAgICAgICAgIHRoaXMuJHNldCh0aGlzLmZvcm0sICJkZXB0SWQiLCBpdGVtLnZhbHVlKTsNCiAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgICAgfSwNCiAgICAgIGRlZXA6IHRydWUsIC8vIOa3seWxguebkeWQrA0KICAgIH0sDQogICAgJ2Zvcm0uaW5zdGFsbExvbmdpdHVkZSc6IGZ1bmN0aW9uIChuZXd2YWwsIG9sZHZhbCkgeyAgICAgICAgICAgDQoJCQkgIHZhciByZWcgPSAvXihcZHswLDN9KShcLihcZHswLDEzfSkpPyQvZzsNCgkJCQlpZiAoIXJlZy50ZXN0KG5ld3ZhbCkpIHsNCgkJCQkJaWYgKG5ld3ZhbCA9PSB1bmRlZmluZWQgfHwgbmV3dmFsID09IG51bGwgKSB7DQoJCQkJCQkvLyB0aGlzLmZvcm0uaW5zdGFsbExvbmdpdHVkZSA9ICcnOw0KCQkJCQkJcmV0dXJuOw0KCQkJCQl9DQoJCQkJCXRoaXMuZm9ybS5pbnN0YWxsTG9uZ2l0dWRlID0gb2xkdmFsDQoJCQkJfSBlbHNlIHsNCgkJCQkJdGhpcy5mb3JtLmluc3RhbGxMb25naXR1ZGUgPSBuZXd2YWwucmVwbGFjZSgvXlwuL2csICIiKQ0KCQkJCX0JCQkJDQoJCQl9LA0KICAgICAgJ2Zvcm0uaW5zdGFsbExhdGl0dWRlJzogZnVuY3Rpb24gKG5ld3ZhbCwgb2xkdmFsKSB7DQoJCQkgIHZhciByZWcgPSAvXihcZHswLDN9KShcLihcZHswLDEzfSkpPyQvZzsNCgkJCQlpZiAoIXJlZy50ZXN0KG5ld3ZhbCkpIHsNCgkJCQkJaWYgKG5ld3ZhbCA9PSB1bmRlZmluZWQgfHwgbmV3dmFsID09IG51bGwgKSB7DQoJCQkJCQkvLyB0aGlzLmZvcm0uaW5zdGFsbExhdGl0dWRlID0gJyc7DQoJCQkJCQlyZXR1cm47DQoJCQkJCX0NCgkJCQkJdGhpcy5mb3JtLmluc3RhbGxMYXRpdHVkZSA9IG9sZHZhbA0KCQkJCX0gZWxzZSB7DQoJCQkJCXRoaXMuZm9ybS5pbnN0YWxsTGF0aXR1ZGUgPSBuZXd2YWwucmVwbGFjZSgvXlwuL2csICIiKQ0KCQkJCX0JCQkJDQoJCQl9DQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgdGhpcy5nZXRDYW1lcmFMaXN0KCk7DQogICAgdGhpcy5nZXRXb3JrU2V0aW9uKCk7DQogICAgdGhpcy5nZXREZXB0TGlzdCgpOw0KICAgIHRoaXMuZ2V0TGluZVdheUxpc3QoKTsNCiAgICB0aGlzLmdldExpbmVUeXBlTGlzdCgpOw0KICAgIHRoaXMuZ2V0RGlyZWN0aW9uU2VsZWN0KCkNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGhhbmRsZUVuYWJsZUNoYW5nZShyb3cpew0KICAgICAgbGV0IHBhcmFtcz17DQogICAgICAgIGlkOnJvdy5pZCwNCiAgICAgICAgZW5hYmxlT3JOb3Q6cm93LmVuYWJsZU9yTm90DQogICAgICB9DQogICAgICB0b0VuYWJBY2NyYW1lKHBhcmFtcykudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkgew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5tc2csDQogICAgICAgICAgICAgIHR5cGU6ICJzdWNjZXNzIiwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgdGhpcy5nZXRDYW1lcmFMaXN0KCk7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubXNnLA0KICAgICAgICAgICAgICB0eXBlOiAiZXJyb3IiLA0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB0aGlzLmdldENhbWVyYUxpc3QoKTsNCiAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgZ29DbGljaygpIHsNCiAgICAgIGNvbnNvbGUubG9nKHRoaXMucm93KTsNCiAgICAgIGVkaXRBY2NvdW50TWFuYWdlbWVudCh7DQogICAgICAgIGlkOiB0aGlzLnJvdy5pZCwNCiAgICAgICAgY2FtZXJhQ29kZTogdGhpcy5yb3cuY2FtZXJhQ29kZSwNCiAgICAgICAgdXJsOiB0aGlzLnZpZGVvVXJsLA0KICAgICAgfSkudGhlbigocmVzKSA9PiB7DQogICAgICAgIGNvbnNvbGUubG9nKHJlcyk7DQogICAgICB9KTsNCiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IGZhbHNlOw0KICAgIH0sDQogICAgYmVmb3JlVXBsb2FkKGZpbGUpIHsNCiAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7DQogICAgICBmb3JtRGF0YS5hcHBlbmQoImZpbGUiLCBmaWxlKTsgLy8g5bCG5paH5Lu25re75Yqg5YiwRm9ybURhdGHlr7nosaHkuK0NCiAgICAgIHNlcnZpY2VGaWxlb3NzKGZvcm1EYXRhKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgdGhpcy52aWRlb1VybCA9IHJlcy5kYXRhOw0KICAgICAgfSk7DQogICAgfSwNCiAgICBkZXNjSW5wdXQoKSB7DQogICAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm0uY2FtZXJhQ29kZS5sZW5ndGgsICIsLCwsLCwsLCwsLCwsLCwsLCwsIik7DQogICAgfSwNCiAgICBmYWxzZVNob3dVcGxvYWQoKSB7DQogICAgICB0aGlzLnVwbG9hZERpYWxvZyA9IGZhbHNlOw0KICAgICAgdGhpcy5maWxlTGlzdCA9IFtdOw0KICAgIH0sDQogICAgdXBsb2FkRmlsZUxpc3QoZmlsZSkgew0KICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSAicmVhZHkiKSB7DQogICAgICAgIHRoaXMuZmlsZUxpc3QucHVzaChmaWxlKTsNCiAgICAgICAgaWYgKHRoaXMuZmlsZUxpc3QubGVuZ3RoID4gMSkgew0KICAgICAgICAgIHRoaXMuZmlsZUxpc3Quc3BsaWNlKDAsIDEpOw0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICB1cGxvYWRTdWJtaXREaWFsb2coKSB7DQogICAgICBjb25zdCBmaWxlRGF0YSA9IG5ldyBGb3JtRGF0YSgpOw0KICAgICAgZmlsZURhdGEuYXBwZW5kKCJmaWxlIiwgdGhpcy5maWxlTGlzdFswXS5yYXcpOw0KICAgICAgbGV0IGlzSHR0cFJlcXVlc3QgPSB0aGlzLmZpbGVMaXN0WzBdLnJhdy5uYW1lLnNwbGl0KCIuIik7DQogICAgICBpZiAoDQogICAgICAgIGlzSHR0cFJlcXVlc3RbaXNIdHRwUmVxdWVzdC5sZW5ndGggLSAxXSA9PSAieGxzeCIgfHwNCiAgICAgICAgaXNIdHRwUmVxdWVzdFtpc0h0dHBSZXF1ZXN0Lmxlbmd0aCAtIDFdID09ICJ4bHMiDQogICAgICApIHsNCiAgICAgICAgZ2V0Q2FtZXJhRGF0YVVwTG9hZEluKGZpbGVEYXRhKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLA0KICAgICAgICAgICAgICBtZXNzYWdlOiAi5a+85YWl5oiQ5YqfISIsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHRoaXMudXBsb2FkRGlhbG9nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmdldENhbWVyYUxpc3QoKTsNCiAgICAgICAgICAgIHRoaXMuZmlsZUxpc3QgPSBbXTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgIHR5cGU6ICJlcnJvciIsDQogICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5tc2csDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHRoaXMuZ2V0Q2FtZXJhTGlzdCgpOw0KICAgICAgICAgICAgdGhpcy5maWxlTGlzdCA9IFtdOw0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAiZXJyb3IiLA0KICAgICAgICAgIG1lc3NhZ2U6ICLkuIrkvKDnmoTmlofku7blj6rog73mmK94bHPku6Xlj4p4bHN45qC85byPISIsDQogICAgICAgIH0pOw0KICAgICAgICB0aGlzLmZpbGVMaXN0ID0gW107DQogICAgICB9DQogICAgfSwNCiAgICAvLyDpqozor4Hmlofku7bnsbvlnosNCiAgICBiZWZvcmVBdmF0YXJVcGxvYWQoZmlsZSkgew0KICAgICAgY29uc3QgaXNYbHMgPQ0KICAgICAgICBmaWxlLnR5cGUgPT09ICJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiDQogICAgICAgICAgPyB0cnVlDQogICAgICAgICAgOiBmaWxlLnR5cGUgPT09DQogICAgICAgICAgICAiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQiOw0KICAgICAgaWYgKCFpc1hscykgew0KICAgICAgICBhbGVydCgi5LiK5Lyg55qE5paH5Lu25Y+q6IO95piveGxz5Lul5Y+KeGxzeOagvOW8jyEiKTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBpc1hsczsNCiAgICB9LA0KICAgIC8vIOWIpOaWreaWh+S7tuS4quaVsA0KICAgIGhhbmRsZUNoYW5nZShmaWxlLCBmaWxlTGlzdCkgew0KICAgICAgaWYgKGZpbGVMaXN0Lmxlbmd0aCA+PSAyKSB7DQogICAgICAgIHJldHVybjsNCiAgICAgIH0NCiAgICAgIGlmIChmaWxlTGlzdC5sZW5ndGggPT09IDEpIHsNCiAgICAgICAgdGhpcy5oYXNGaWxlID0gdHJ1ZTsNCiAgICAgIH0NCiAgICAgIHRoaXMuZGF0YUZvcm0uZmlsZSA9IGZpbGU7DQogICAgfSwNCiAgICAvLyDlr7zlhaUNCiAgICBodHRwUmVxdWVzdChwYXJhbSkgew0KICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsNCiAgICAgIGZvcm1EYXRhLmFwcGVuZCgiZmlsZSIsIHRoaXMuZGF0YUZvcm0uZmlsZS5yYXcpOw0KICAgICAgY29uc3QgY29uZmlnSGVhZGVycyA9IHsNCiAgICAgICAgaGVhZGVyczogeyAiQ29udGVudC1UeXBlIjogIm11bHRpcGFydC9mb3JtLWRhdGEiIH0sDQogICAgICB9Ow0KICAgICAgY29uc29sZS5sb2coDQogICAgICAgIHRoaXMuZGF0YUZvcm0uZmlsZS5yYXcubmFtZSwNCiAgICAgICAgInRoaXMuZmlsZUxpc3RbMF0ucmF3Lm5hbWV0aGlzLmZpbGVMaXN0WzBdLnJhdy5uYW1ldGhpcy5maWxlTGlzdFswXS5yYXcubmFtZXRoaXMuZmlsZUxpc3RbMF0ucmF3Lm5hbWUiDQogICAgICApOw0KICAgICAgbGV0IGlzSHR0cFJlcXVlc3QgPSB0aGlzLmRhdGFGb3JtLmZpbGUucmF3Lm5hbWUuc3BsaXQoIi4iKTsNCiAgICAgIGlmICgNCiAgICAgICAgaXNIdHRwUmVxdWVzdFtpc0h0dHBSZXF1ZXN0Lmxlbmd0aCAtIDFdID09ICJ4bHN4IiB8fA0KICAgICAgICBpc0h0dHBSZXF1ZXN0W2lzSHR0cFJlcXVlc3QubGVuZ3RoIC0gMV0gPT0gInhscyINCiAgICAgICkgew0KICAgICAgICBnZXRDYW1lcmFEYXRhVXBMb2FkSW4oZm9ybURhdGEpLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsDQogICAgICAgICAgICAgIG1lc3NhZ2U6ICLlr7zlhaXmiJDlip8hIiwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgdGhpcy5nZXRDYW1lcmFMaXN0KHRoaXMuZGF0YSk7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICB0eXBlOiAiZXJyb3IiLA0KICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubXNnLA0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICJlcnJvciIsDQogICAgICAgICAgbWVzc2FnZTogIuS4iuS8oOeahOaWh+S7tuWPquiDveaYr3hsc+S7peWPinhsc3jmoLzlvI8hIiwNCiAgICAgICAgfSk7DQogICAgICB9DQogICAgfSwNCiAgICBjaGFuZ2VWYWx1ZSh2YWwpIHt9LA0KICAgIC8vIOihjOWIq+S4i+aLiQ0KICAgIGdldExpbmVUeXBlTGlzdCgpIHsNCiAgICAgIGdldExpbmVEaXIoe30pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICB0aGlzLmxpbmVEaXIgPSByZXMuZGF0YTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgZ2V0RGlyZWN0aW9uU2VsZWN0KCl7DQogICAgICBnZXREaXJlY3Rpb24oe30pLnRoZW4oKHJlcyk9PnsNCiAgICAgICAgdGhpcy5maXJlY3Rpb25EYXRhPXJlcy5kYXRhDQogICAgICB9KQ0KICAgIH0sDQogICAgaGFuZGxlU3RhdHVzQ2hhbmdlKHJvdykgew0KICAgICAgaWYgKHJvdy5zdGFydFJlY29yZGluZyA9PSAiMiIpIHsNCiAgICAgICAgZ2V0UmVjb3JkaW5nKHJvdy5pZCkudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkgew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgIG1lc3NhZ2U6ICLlhbPpl63miJDlip8iLA0KICAgICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5tc2csDQogICAgICAgICAgICAgIHR5cGU6ICJlcnJvciIsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHRoaXMuZ2V0Q2FtZXJhTGlzdCgpOw0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICB9IGVsc2UgaWYgKHJvdy5zdGFydFJlY29yZGluZyA9PSAiMSIpIHsNCiAgICAgICAgZ2V0U3RhcnRSZWNvcmRpbmcocm93LmlkKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgbWVzc2FnZTogIuW8gOWQr+aIkOWKnyIsDQogICAgICAgICAgICAgIHR5cGU6ICJzdWNjZXNzIiwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLm1zZywNCiAgICAgICAgICAgICAgdHlwZTogImVycm9yIiwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgdGhpcy5nZXRDYW1lcmFMaXN0KCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGhhbmRsZVNlbGVjdGlvbkNoYW5nZSh2YWwpIHsNCiAgICAgIHRoaXMuaWRzID0gdmFsLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCk7ICANCiAgICB9LA0KICAgIGhhbmRsZVF1ZXJ5KCkgew0KICAgICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlTnVtID0gMTsNCiAgICAgIHRoaXMuZ2V0Q2FtZXJhTGlzdCgpOw0KICAgIH0sDQogICAgcmVzZXQoKSB7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmRlcHROYW1lID0gIiI7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmRlcHRJZCA9ICIiOw0KICAgICAgdGhpcy5xdWVyeVBhcmFtcy5yYWlsd2F5Q29kZSA9ICIiOw0KICAgICAgdGhpcy5xdWVyeVBhcmFtcy5saW5lRGlyID0gIiI7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmJlZ2luTWlsZUJEID0gIiI7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmVuZE1pbGVCRCA9ICIiOw0KICAgICAgdGhpcy5xdWVyeVBhcmFtcy5zdGF0aW9uTmFtZSA9ICIiOw0KICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jYW1lcmFDb2RlID0gIiI7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSAxOw0KICAgICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlU2l6ZSA9IDEwOw0KICAgICAgdGhpcy5nZXRDYW1lcmFMaXN0KCk7DQogICAgfSwNCiAgICBnZXRMaW5lV2F5TGlzdCgpIHsNCiAgICAgIGdldExpbmVXYXlMaXN0KHt9KS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgdGhpcy5saW5lV2F5RGF0YSA9IHJlcy5kYXRhOw0KICAgICAgfSk7DQogICAgfSwNCiAgICBoYW5kbGVOb2RlSGFuZGxlQ2xpY2soYSkgew0KICAgICAgdGhpcy5xdWVyeVBhcmFtcy5kZXB0TmFtZSA9IGEubGFiZWw7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmRlcHRJZCA9IGEuaWQ7DQogICAgfSwNCiAgICBoYW5kbGVOb2RlQ2xpY2sodikgew0KICAgICAgdGhpcy5mb3JtLmRlcHRJZCA9IHYuaWQ7DQogICAgICB0aGlzLmZvcm0uZGVwdE5hbWUgPSB2LmxhYmVsOw0KICAgIH0sDQogICAgZ2V0V29ya1NldGlvbjogZnVuY3Rpb24gKCkgew0KICAgICAgZ2V0V29ya1NldGlvbih7fSkudGhlbigocmVzcG9uc2UpID0+IHsNCiAgICAgICAgdGhpcy53b3JrU2V0aURhdGEgPSByZXNwb25zZS5kYXRhOw0KICAgICAgfSk7DQogICAgICBnZXRMaW5lRGF0YSh7fSkudGhlbigocmVzcG9uc2UpID0+IHsNCiAgICAgICAgdGhpcy5nZXRMaW5lRGF0YSA9IHJlc3BvbnNlLmRhdGE7DQogICAgICB9KTsNCiAgICB9LA0KICAgIGdldERlcHRMaXN0KCkgew0KICAgICAgZ2V0RGVwdExpc3Qoe30pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICB0aGlzLnRyZWVEYXRhID0gcmVzLmRhdGE7DQogICAgICB9KTsNCiAgICB9LA0KICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2UodmFsKSB7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSB2YWw7DQogICAgICB0aGlzLmdldENhbWVyYUxpc3QoKTsNCiAgICB9LA0KICAgIGhhbmRsZVNpemVDaGFuZ2UodmFsKSB7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VTaXplID0gdmFsOw0KICAgICAgdGhpcy5nZXRDYW1lcmFMaXN0KCk7DQogICAgfSwNCiAgICBnZXRDYW1lcmFMaXN0KCkgew0KICAgICAgZGVsZXRlIHRoaXMucXVlcnlQYXJhbXMuaWRzOw0KICAgICAgY29uc29sZS5sb2coDQogICAgICAgIHRoaXMucXVlcnlQYXJhbXMsDQogICAgICAgICJ0aGlzLnF1ZXJ5UGFyYW1zdGhpcy5xdWVyeVBhcmFtc3RoaXMucXVlcnlQYXJhbXMiDQogICAgICApOw0KICAgICAgZ2V0Q2FtZXJhRGF0YUxpc3QodGhpcy5xdWVyeVBhcmFtcykudGhlbigocmVzcG9uc2UpID0+IHsNCiAgICAgICAgaWYgKCF0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gfHwgIXRoaXMucXVlcnlQYXJhbXMucGFnZVNpemUpIHsNCiAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSAxOw0KICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZVNpemUgPSAxMDsNCiAgICAgICAgICBnZXRDYW1lcmFEYXRhTGlzdCh0aGlzLnF1ZXJ5UGFyYW1zKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gcmVzLmRhdGEucmVjb3JkczsNCiAgICAgICAgICAgIHRoaXMudG90YWwgPSByZXMuZGF0YS50b3RhbDsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoDQogICAgICAgICAgcmVzcG9uc2UuZGF0YS5yZWNvcmRzLmxlbmd0aCA9PSAwICYmDQogICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlTnVtICE9IDENCiAgICAgICAgKSB7DQogICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlTnVtID0gdGhpcy5xdWVyeVBhcmFtcy5wYWdlTnVtIC0gMTsNCiAgICAgICAgICBnZXRDYW1lcmFEYXRhTGlzdCh0aGlzLnF1ZXJ5UGFyYW1zKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gcmVzLmRhdGEucmVjb3JkczsNCiAgICAgICAgICAgIHRoaXMudG90YWwgPSByZXNwb25zZS5kYXRhLnRvdGFsOw0KICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIHRoaXMudGFibGVEYXRhID0gcmVzcG9uc2UuZGF0YS5yZWNvcmRzOw0KICAgICAgICB0aGlzLnRvdGFsID0gcmVzcG9uc2UuZGF0YS50b3RhbDsNCiAgICAgICAgaWYgKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICBpZiAodGhpcy50YWJsZURhdGFbMF0uaXNTdGFydFJlY29yZGluZyA9PSAxKSB7DQogICAgICAgICAgICB0aGlzLnN0YXJ0U3RhdHVzID0gMTsNCiAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlTnVtID0gMTsNCiAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VTaXplID0gMTA7DQogICAgICAgICAgdGhpcy50b3RhbCA9IHJlc3BvbnNlLmRhdGEudG90YWw7DQogICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgIHRoaXMuc3RhcnRTdGF0dXMgPSAwOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LA0KICAgIGFkZEVxdWlwbWVudDogZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy5mb3JtID0ge307DQoNCiAgICAgIC8vIHRoaXMuJHJlZnNbJ2Zvcm0nXS5yZXNldEZpZWxkcygpDQogICAgICB0aGlzLmRpYWxvZ1R5cGUgPSAxOw0KICAgICAgdGhpcy50aXRsZSA9ICLmlrDlop7orr7lpIciOw0KICAgICAgLy8gYWxlcnQodGhpcy5mb3JtLmVuYWJsZU9yTm90KQ0KICAgICAgLy8gYWxlcnQodGhpcy5mb3JtLmluc3RhbGxMYXRpdHVkZSkNCiAgICAgIHRoaXMuZm9ybS5lbmFibGVPck5vdD0xDQogICAgICB0aGlzLmRpc2FibGVkU2F2ZSA9IGZhbHNlOw0KICAgICAgdGhpcy5kaWFsb2dGb3JtVmlzaWJsZSA9IHRydWU7DQogICAgfSwNCiAgICBjbG9zZURpYSgpIHsNCiAgICAgIHRoaXMuZGlhbG9nRm9ybVZpc2libGUgPSBmYWxzZTsNCiAgICAgIHRoaXMuJHJlZnNbImZvcm0iXS5yZXNldEZpZWxkcygpOw0KICAgICAgdGhpcy5mb3JtID0ge307DQogICAgfSwNCiAgICBDbG9zZUluKCkgew0KICAgICAgdGhpcy5kaWFsb2dGb3JtVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgdGhpcy4kcmVmc1siZm9ybSJdLnJlc2V0RmllbGRzKCk7DQogICAgICB0aGlzLmZvcm0gPSB7fTsNCiAgICB9LA0KICAgIHN1Ym1pbnQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuJHJlZnMuZm9ybS52YWxpZGF0ZSgodmFsaWQpID0+IHsNCiAgICAgICAgaWYgKHZhbGlkKSB7DQogICAgICAgICAgaWYodGhpcy5mb3JtLmJlZ2luTWlsZUJEPnRoaXMuZm9ybS5lbmRNaWxlQkQpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIue7k+adn+mHjOeoi+W/hemhu+Wkp+S6jui1t+Wni+mHjOeoiyIsDQogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJlcnJvciIsDQogICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKHRoaXMuZGlhbG9nVHlwZSA9PSAxKSB7DQogICAgICAgICAgICB0aGlzLmZpcmVjdGlvbkRhdGEuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgICAgICBpZiAoaXRlbS5kaWN0TGFiZWwgPT0gdGhpcy5mb3JtLm1vbml0b3JpbmdEaXJlY3Rpb25OYW1lKSB7DQogICAgICAgICAgICAgICAgdGhpcy5mb3JtLm1vbml0b3JpbmdEaXJlY3Rpb24gPSBpdGVtLmRpY3RWYWx1ZTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB0aGlzLmxpbmVEaXIuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgICAgICBpZiAoaXRlbS5kaWN0TGFiZWwgPT0gdGhpcy5mb3JtLmxpbmVEaXJOYW1lKSB7DQogICAgICAgICAgICAgICAgdGhpcy5mb3JtLmxpbmVEaXIgPSBpdGVtLmRpY3RWYWx1ZTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAvLyBkZWxldGUgdGhpcy5mb3JtLmRlcHROYW1lDQogICAgICAgICAgICB0aGlzLmZvcm0ubW9uaXRvcmluZ0RpcmVjdGlvbiA9IE51bWJlcih0aGlzLmZvcm0ubW9uaXRvcmluZ0RpcmVjdGlvbk5hbWUpOw0KICAgICAgICAgICAgdGhpcy5mb3JtLmxpbmVEaXIgPSBOdW1iZXIodGhpcy5mb3JtLmxpbmVEaXJOYW1lKTsNCiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRTYXZlID0gdHJ1ZTsNCiAgICAgICAgICAgIGdldENhbWVyYURhdGFBZGROZXdlcih0aGlzLmZvcm0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7DQogICAgICAgICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09IDIwMCkgew0KICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuaWsOWinuaIkOWKnyIsDQogICAgICAgICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsDQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgdGhpcy5nZXRDYW1lcmFMaXN0KCk7DQogICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dGb3JtVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIHRoaXMuJHJlZnNbImZvcm0iXS5yZXNldEZpZWxkcygpOw0KICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRTYXZlID0gZmFsc2U7DQogICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tc2csDQogICAgICAgICAgICAgICAgICB0eXBlOiAiZXJyb3IiLA0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGlhbG9nVHlwZSA9PSAyKSB7DQogICAgICAgICAgICBkZWxldGUgdGhpcy5mb3JtLmJlZ2luTWlsZXM7DQogICAgICAgICAgICBkZWxldGUgdGhpcy5mb3JtLmVuZE1pbGVzOw0KICAgICAgICAgICAgZGVsZXRlIHRoaXMuZm9ybS5pbnN0YWxsTWlsZXM7DQogICAgICAgICAgICB0aGlzLmZvcm0ubGluZURpciA9IHRoaXMuZm9ybS5saW5lRGlyTmFtZTsNCiAgICAgICAgICAgIHRoaXMuZm9ybS5tb25pdG9yaW5nRGlyZWN0aW9uID0gTnVtYmVyKHRoaXMuZm9ybS5tb25pdG9yaW5nRGlyZWN0aW9uTmFtZSk7DQogICAgICAgICAgICBpZiAodGhpcy5mb3JtLmxpbmVEaXIgPT0gIuS4iuihjCIpIHsNCiAgICAgICAgICAgICAgdGhpcy5mb3JtLmxpbmVEaXIgPSAxOw0KICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm0ubGluZURpciA9PSAi5LiL6KGMIikgew0KICAgICAgICAgICAgICB0aGlzLmZvcm0ubGluZURpciA9IDI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBnZXRDYW1lcmFEYXRhVXBkYXRlKHRoaXMuZm9ybSkudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLkv67mlLnmiJDlip8iLA0KICAgICAgICAgICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLA0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2FtZXJhTGlzdCgpOw0KICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRm9ybVZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICB0aGlzLiRyZWZzWyJmb3JtIl0ucmVzZXRGaWVsZHMoKTsNCiAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5tc2csDQogICAgICAgICAgICAgICAgICB0eXBlOiAiZXJyb3IiLA0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgIH0sDQogICAgZWRpdEVxdWlwOiBmdW5jdGlvbiAocm93KSB7DQogICAgICB0aGlzLmRpYWxvZ1R5cGUgPSAyOw0KICAgICAgdGhpcy5kaXNhYmxlZFNhdmUgPSBmYWxzZTsNCiAgICAgIHRoaXMudGl0bGUgPSAi5L+u5pS56K6+5aSH5L+h5oGvIjsNCiAgICAgIHRoaXMuZGlhbG9nRm9ybVZpc2libGUgPSB0cnVlOw0KICAgICAgLy8gdGhpcy5mb3JtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyb3cpKQ0KICAgICAgZ2V0Q2FtZXJhRmV0YWlsKHJvdy5pZCkudGhlbigocmVzKSA9PiB7ICAgICAgICANCiAgICAgICAgdGhpcy5mb3JtID0gcmVzLmRhdGE7DQogICAgICAgIHRoaXMubGluZURpci5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgICAgaWYgKGl0ZW0uZGljdFZhbHVlID09IHRoaXMuZm9ybS5saW5lRGlyKSB7DQogICAgICAgICAgICB0aGlzLmZvcm0ubGluZURpck5hbWUgPSBpdGVtLmRpY3RMYWJlbDsNCiAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgICAgICB0aGlzLmZpcmVjdGlvbkRhdGEuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgIGlmIChpdGVtLmRpY3RWYWx1ZSA9PSB0aGlzLmZvcm0ubW9uaXRvcmluZ0RpcmVjdGlvbikgew0KICAgICAgICAgICAgdGhpcy5mb3JtLm1vbml0b3JpbmdEaXJlY3Rpb25OYW1lID0gaXRlbS5kaWN0TGFiZWw7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgZGVsQ2FtZXJhTGlzdCgpIHsNCiAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT0gMCkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAiZXJyb3IiLA0KICAgICAgICAgIG1lc3NhZ2U6ICLor7fpgInmi6npnIDopoHliKDpmaTnmoTmlbDmja4iLA0KICAgICAgICB9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuJGNvbmZpcm0oIuehruWumuimgeWIoOmZpOWQlz8iLCAi5L+h5oGv5o+Q56S6Iiwgew0KICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAi56Gu5a6aIiwNCiAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwNCiAgICAgICAgICB0eXBlOiAid2FybmluZyIsDQogICAgICAgIH0pDQogICAgICAgICAgLnRoZW4oKCkgPT4gew0KICAgICAgICAgICAgZ2V0Q2FtZXJhRGF0YURlbGV0ZSh0aGlzLmlkcykudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICB0aGlzLmdldENhbWVyYUxpc3QoKTsNCiAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgIHR5cGU6ICJzdWNjZXNzIiwNCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLliKDpmaTmiJDlip8hIiwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgIHR5cGU6ICJlcnJvciIsDQogICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubXNnLA0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9KQ0KICAgICAgICAgIC5jYXRjaCgoKSA9PiB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgdHlwZTogImluZm8iLA0KICAgICAgICAgICAgICBtZXNzYWdlOiAi5bey5Y+W5raI5Yig6ZmkIiwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgIH0pOw0KICAgICAgfQ0KICAgIH0sDQogICAgZGVsQ2FtZXJhOiBmdW5jdGlvbiAocm93KSB7DQogICAgICB0aGlzLmlkcyA9IHJvdy5pZDsNCiAgICAgIHRoaXMuJGNvbmZpcm0oIuehruWumuimgeWIoOmZpOWQlz8iLCAi5L+h5oGv5o+Q56S6Iiwgew0KICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsDQogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICLlj5bmtogiLA0KICAgICAgICB0eXBlOiAid2FybmluZyIsDQogICAgICB9KQ0KICAgICAgICAudGhlbigoKSA9PiB7DQogICAgICAgICAgZ2V0Q2FtZXJhRGF0YURlbGV0ZSh0aGlzLmlkcykudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7DQogICAgICAgICAgICAgIHRoaXMuZ2V0Q2FtZXJhTGlzdCgpOw0KICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsDQogICAgICAgICAgICAgICAgbWVzc2FnZTogIuWIoOmZpOaIkOWKnyEiLA0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgIHR5cGU6ICJlcnJvciIsDQogICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLm1zZywNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSk7DQogICAgICAgIH0pDQogICAgICAgIC5jYXRjaCgoKSA9PiB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICB0eXBlOiAiaW5mbyIsDQogICAgICAgICAgICBtZXNzYWdlOiAi5bey5Y+W5raI5Yig6ZmkIiwNCiAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQogICAgfSwNCiAgICB1cGxvYWRPdXQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGRlbGV0ZSB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW07DQogICAgICBkZWxldGUgdGhpcy5xdWVyeVBhcmFtcy5wYWdlU2l6ZTsNCiAgICAgIHRoaXMucXVlcnlQYXJhbXMuaWRzID0gdGhpcy5pZHM7DQogICAgICAvLyBpZih0aGlzLnF1ZXJ5UGFyYW1zLmlkcy5sZW5ndGggPT0gMCkgew0KICAgICAgLy8gICByZXR1cm4gdGhpcy4kbWVzc2FnZSh7DQogICAgICAvLyAgICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqemcgOimgeWvvOWHuueahOaVsOaNricsDQogICAgICAvLyAgICAgICAgICAgdHlwZTogImVycm9yIiwNCiAgICAgIC8vICAgICAgICAgfSk7DQogICAgICAvLyB9DQogICAgICBnZXRDYW1lcmFEYXRhVXBMb2FkT3V0KHRoaXMucXVlcnlQYXJhbXMpLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAvLyB0aGlzLmV4cG9ydEZpbGUocmVzLCAi5pGE5YOP5py65Y+w6LSm5L+h5oGvIik7DQogICAgICAgIA0KICAgICAgICBpZiAocmVzLnR5cGUgPT0gImFwcGxpY2F0aW9uL2pzb24iKSB7DQogICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsgDQogICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQocmVzLCAndXRmLTgnKTsgDQogICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGNvbnN0IG1zZyA9IEpTT04ucGFyc2UocmVhZGVyLnJlc3VsdCk7DQogICAgICAgICAgICBpZihtc2cuY29kZSA9PSAyMDApew0KICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUocmVzLCAi5pGE5YOP5py65Y+w6LSm5L+h5oGvIik7DQogICAgICAgICAgICB9IGVsc2V7DQogICAgICAgICAgICAgIE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsDQogICAgICAgICAgICAgICAgbWVzc2FnZTogbXNnLm1zZw0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0gICAgICANCiAgICAgICAgICB9DQogICAgICAgIH1lbHNlew0KICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZShyZXMsICLmkYTlg4/mnLrlj7DotKbkv6Hmga8iKTsNCiAgICAgICAgfQ0KDQogICAgICB9KTsNCiAgICB9LA0KICAgIGV4cG9ydEZpbGU6IGZ1bmN0aW9uIChvYmosIG5hbWUgPSBEYXRlLm5vdygpLCBzdWZmaXggPSAieGxzeCIpIHsNCiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKA0KICAgICAgICBuZXcgQmxvYihbb2JqXSwgeyB0eXBlOiAiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsIiB9KQ0KICAgICAgKTsNCiAgICAgIGNvbnN0IGFET00gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7DQogICAgICBhRE9NLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICBhRE9NLmhyZWYgPSB1cmw7DQogICAgICBjb25zdCBmaWxlTmFtZSA9IG5hbWUgKyAiLiIgKyBzdWZmaXg7DQogICAgICBhRE9NLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLCBmaWxlTmFtZSk7DQogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFET00pOw0KICAgICAgYURPTS5jbGljaygpOw0KICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhRE9NKTsNCiAgICB9LA0KICAgIGRvd25sb2FkT3V0KCkgew0KICAgICAgZ2V0RG93bkxvYWRMaXN0KHt9KS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgdGhpcy5leHBvcnREb3duRmlsZShyZXMsICLmkYTlg4/mnLrlj7DotKbmqKHmnb8iKTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgZXhwb3J0RG93bkZpbGU6IGZ1bmN0aW9uIChvYmosIG5hbWUgPSBEYXRlLm5vdygpLCBzdWZmaXggPSAieGxzeCIpIHsNCiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKA0KICAgICAgICBuZXcgQmxvYihbb2JqXSwgeyB0eXBlOiAiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsIiB9KQ0KICAgICAgKTsNCiAgICAgIGNvbnN0IGFET00gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7DQogICAgICBhRE9NLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICBhRE9NLmhyZWYgPSB1cmw7DQogICAgICBjb25zdCBmaWxlTmFtZSA9IG5hbWUgKyAiLiIgKyBzdWZmaXg7DQogICAgICBhRE9NLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLCBmaWxlTmFtZSk7DQogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFET00pOw0KICAgICAgYURPTS5jbGljaygpOw0KICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhRE9NKTsNCiAgICB9LA0KICAgIHVwZGF0ZUZpbGVJdGVtKHJvdykgew0KICAgICAgY29uc29sZS5sb2cocm93KTsNCiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7DQogICAgICB0aGlzLnJvdyA9IHJvdzsNCiAgICB9LA0KICAgIGxva0RldGFpbEluZm86IGZ1bmN0aW9uIChyb3cpIHsNCiAgICAgIHRoaXMuZGV0YWlsRGlhbG9nID0gdHJ1ZTsNCiAgICAgIGdldENhbWVyYUZldGFpbChyb3cuaWQpLnRoZW4oKHJlcykgPT4gew0KICAgICAgICByZXMuZGF0YS5pbnN0YWxsTG9uZ2l0dWRlID0gcmVzLmRhdGEuaW5zdGFsbExvbmdpdHVkZXx8JycNCiAgICAgICAgcmVzLmRhdGEuaW5zdGFsbExhdGl0dWRlID0gcmVzLmRhdGEuaW5zdGFsbExhdGl0dWRlfHwnJw0KICAgICAgICB0aGlzLmRldGFpbERhdGEgPSByZXMuZGF0YTsNCiAgICAgICAgdGhpcy5jYW1lcmFDb2RlVmFsdWUgPSB0aGlzLmRldGFpbERhdGEuY2FtZXJhQ29kZTsNCiAgICAgICAgaWYodGhpcy5kZXRhaWxEYXRhLmluc3RhbGxMb25naXR1ZGUhPW51bGwmJnRoaXMuZGV0YWlsRGF0YS5pbnN0YWxsTGF0aXR1ZGUhPW51bGwmJnRoaXMuZGV0YWlsRGF0YS5pbnN0YWxsTG9uZ2l0dWRlIT0nJyYmdGhpcy5kZXRhaWxEYXRhLmluc3RhbGxMYXRpdHVkZSE9Jycpew0KICAgICAgICAgIHRoaXMucGpqd2QgPQ0KICAgICAgICAgIHRoaXMuZGV0YWlsRGF0YS5pbnN0YWxsTG9uZ2l0dWRlICsNCiAgICAgICAgICAi77yMIiArDQogICAgICAgICAgdGhpcy5kZXRhaWxEYXRhLmluc3RhbGxMYXRpdHVkZTsNCiAgICAgICAgfWVsc2V7DQogICAgICAgICAgdGhpcy5wamp3ZD0nJw0KICAgICAgICB9DQogICAgICAgIGlmKHRoaXMuZGV0YWlsRGF0YS5iZWdpbk1pbGVzIT1udWxsJiZ0aGlzLmRldGFpbERhdGEuZW5kTWlsZXMhPW51bGwmJnRoaXMuZGV0YWlsRGF0YS5iZWdpbk1pbGVzIT0nJyYmdGhpcy5kZXRhaWxEYXRhLmVuZE1pbGVzIT0nJyl7DQogICAgICAgICAgdGhpcy5wakprZncgPXRoaXMuZGV0YWlsRGF0YS5iZWdpbk1pbGVzICsgIn4iICsgdGhpcy5kZXRhaWxEYXRhLmVuZE1pbGVzOw0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICB0aGlzLnBqSmtmdyA9JycNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgfSwNCiAgICBkZWxldGVFcXVpcDogZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy4kY29uZmlybSgi5q2k5pON5L2c5bCG5rC45LmF5Yig6Zmk6K+l5paH5Lu2LCDmmK/lkKbnu6fnu60/IiwgIuaPkOekuiIsIHsNCiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICLnoa7lrpoiLA0KICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwNCiAgICAgICAgdHlwZTogIndhcm5pbmciLA0KICAgICAgfSkNCiAgICAgICAgLnRoZW4oKCkgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLA0KICAgICAgICAgICAgbWVzc2FnZTogIuWIoOmZpOaIkOWKnyEiLA0KICAgICAgICAgIH0pOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKCkgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgdHlwZTogImluZm8iLA0KICAgICAgICAgICAgbWVzc2FnZTogIuW3suWPlua2iOWIoOmZpCIsDQogICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgaW1wb3J0TG9hZEluOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLnVwbG9hZERpYWxvZyA9IHRydWU7DQogICAgfSwNCiAgfSwNCn07DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgxBA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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","file":"index.vue","sourceRoot":"src/views/account/camera","sourcesContent":["<template>\r\n <div class=\"dashboard-container\">\r\n <div class=\"dashboard-text\">\r\n <div style=\"padding: 15px; background: #fff; margin-top: -15px\">\r\n <el-row :gutter=\"24\" type=\"flex\" style=\"flex-wrap: wrap\">\r\n <!-- <el-select\r\n v-model=\"queryParams.railwayCode\"\r\n placeholder=\"请选择线路\"\r\n style=\"width: 220px; padding: 0 10px\"\r\n clearable\r\n >\r\n <el-option\r\n v-for=\"item in lineWayData\"\r\n :key=\"item.railwayCode\"\r\n :label=\"item.railwayName\"\r\n :value=\"item.railwayCode\"\r\n />\r\n </el-select> -->\r\n <el-input placeholder=\"请输入摄像机编码\" style=\"width: 220px;padding: 0 10px\" v-model=\"queryParams.cameraCode\"></el-input>\r\n <el-input placeholder=\"请输入测点名称\" style=\"width: 220px;padding: 0 10px\" v-model=\"queryParams.stationName\"></el-input>\r\n <el-select\r\n v-model=\"queryParams.lineDir\"\r\n placeholder=\"请选择行别\"\r\n style=\"width: 220px; padding: 0 10px\"\r\n clearable\r\n >\r\n <el-option\r\n v-for=\"item in lineDir\"\r\n :key=\"item.dictValue\"\r\n :label=\"item.dictLabel\"\r\n :value=\"item.dictValue\"\r\n />\r\n </el-select>\r\n <div :span=\"12\">\r\n <div style=\"display: flex; align-items: center; margin-top: 2px\">\r\n <el-input\r\n v-model=\"queryParams.beginMileBD\"\r\n placeholder=\"请输入起始里程\"\r\n style=\"width: 220px; padding: 0 10px; position: relative\"\r\n clearable\r\n >\r\n <template slot=\"append\">km</template></el-input\r\n >\r\n <div\r\n style=\"\r\n width: 5px;\r\n height: 1px;\r\n background-color: #888;\r\n position: absolute;\r\n left: 880px;\r\n \"\r\n />\r\n <el-input\r\n v-model=\"queryParams.endMileBD\"\r\n placeholder=\"请输入结束里程\"\r\n style=\"width: 220px; padding: 0 10px\"\r\n clearable\r\n >\r\n <template slot=\"append\">km</template></el-input\r\n >\r\n </div>\r\n </div>\r\n <div\r\n :span=\"6\"\r\n justify=\"end\"\r\n style=\"display: flex; margin-top: 2px\"\r\n type=\"flex\"\r\n >\r\n <div\r\n class=\"search_btn\"\r\n style=\"margin-left: 10px; cursor: pointer\"\r\n @click=\"handleQuery\"\r\n >\r\n 查询\r\n </div>\r\n <div\r\n class=\"reset_btn\"\r\n style=\"margin-left: 10px; cursor: pointer\"\r\n @click=\"reset\"\r\n >\r\n 重置\r\n </div>\r\n </div>\r\n </el-row>\r\n </div>\r\n\r\n <div style=\"padding: 20px; background: #fff; margin-top: 15px\">\r\n <div class=\"cardHeadr\">\r\n <div style=\"font-size: 18px; float: right; display: flex\">\r\n <div class=\"addBtn\" @click=\"addEquipment\">\r\n <span class=\"icon font_family\">&#xe604;</span>\r\n 新增\r\n </div>\r\n <div class=\"addBtn\" @click=\"delCameraList\">\r\n <span class=\"icon font_family\">&#xe607;</span>\r\n 批量删除\r\n </div>\r\n <div class=\"addBtn\" @click=\"importLoadIn\">\r\n <span class=\"icon font_family\">&#xe606;</span>\r\n 导入\r\n </div>\r\n <div class=\"addBtn\" @click=\"uploadOut\">\r\n <span class=\"icon font_family\">&#xe605;</span>\r\n 导出\r\n </div>\r\n <div class=\"addBtn\" @click=\"downloadOut\">\r\n <span class=\"icon font_family\">&#xe603;</span>\r\n 下载模板\r\n </div>\r\n </div>\r\n </div>\r\n <el-table\r\n :data=\"tableData\"\r\n style=\"width: 100%\"\r\n @selection-change=\"handleSelectionChange\"\r\n >\r\n <el-table-column type=\"selection\" width=\"35\" />\r\n <el-table-column\r\n prop=\"cameraCode\"\r\n label=\"摄像机编码\"\r\n width=\"175\"\r\n align=\"center\"\r\n fixed=\"left\"\r\n />\r\n <el-table-column\r\n prop=\"installMiles\"\r\n label=\"安装里程位置(km)\"\r\n width=\"175\"\r\n align=\"center\"\r\n fixed=\"left\"\r\n />\r\n <!-- <el-table-column prop=\"railwayName\" label=\"线路\" align=\"center\" /> -->\r\n <el-table-column prop=\"stationName\" label=\"测点名称\" align=\"center\" width=\"160px\"/>\r\n <el-table-column prop=\"lineDir\" label=\"行别\" align=\"center\">\r\n <templats slot-scope=\"scope\">\r\n <span v-if=\"scope.row.lineDir == 1\">上行</span>\r\n <span v-if=\"scope.row.lineDir == 2\">下行</span>\r\n </templats>\r\n </el-table-column>\r\n <el-table-column\r\n prop=\"beginMiles\"\r\n label=\"监控里程范围(km)\"\r\n align=\"center\"\r\n width=\"185\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"scope.row.beginMiles && scope.row.endMiles\"\r\n >{{ scope.row.beginMiles }} ~ {{ scope.row.endMiles }}</span\r\n >\r\n <span v-else />\r\n </template>\r\n </el-table-column>\r\n <!-- v-if=\"this.startStatus == 1\" --> \r\n <!-- <el-table-column\r\n prop=\"startRecording\"\r\n label=\"录像开启状态\"\r\n width=\"175\"\r\n align=\"center\"\r\n v-if=\"this.startStatus == 1\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <el-switch\r\n v-model=\"scope.row.startRecording\"\r\n active-color=\"#006AEA\"\r\n :active-value=\"1\"\r\n :inactive-value=\"2\"\r\n inactive-color=\"#CDCDCD\"\r\n @change=\"handleStatusChange(scope.row)\"\r\n />\r\n </template>\r\n </el-table-column> -->\r\n <el-table-column\r\n prop=\"enableOrNot\"\r\n label=\"摄像机启用状态\"\r\n width=\"175\"\r\n align=\"center\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <el-switch\r\n v-model=\"scope.row.enableOrNot\"\r\n active-color=\"#006AEA\"\r\n :active-value=\"1\"\r\n :inactive-value=\"2\"\r\n inactive-color=\"#CDCDCD\"\r\n @change=\"handleEnableChange(scope.row)\"\r\n />\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n prop=\"installLongitude\"\r\n label=\"经纬度\"\r\n width=\"185\"\r\n align=\"center\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <span\r\n v-if=\"scope.row.installLongitude && scope.row.installLatitude\"\r\n >{{ scope.row.installLongitude }} ,\r\n {{ scope.row.installLatitude }}</span\r\n >\r\n <span v-else />\r\n </template>\r\n </el-table-column>\r\n <!-- <el-table-column\r\n prop=\"versionNum\"\r\n label=\"相机版本号\"\r\n align=\"center\"\r\n width=\"160\"\r\n />\r\n <el-table-column\r\n prop=\"versionName\"\r\n label=\"相机版本名称\"\r\n align=\"center\"\r\n width=\"160\"\r\n /> -->\r\n <!-- <el-table-column\r\n prop=\"remark\"\r\n label=\"备注\"\r\n align=\"center\"\r\n width=\"160\"\r\n show-overflow-tooltip\r\n /> -->\r\n <el-table-column\r\n prop=\"createTime\"\r\n label=\"创建时间\"\r\n align=\"center\"\r\n width=\"155\"\r\n />\r\n <el-table-column\r\n label=\"操作\"\r\n align=\"center\"\r\n fixed=\"right\"\r\n width=\"220\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <div class=\"operateBtn\" style=\"display: flex\">\r\n <div type=\"text\" @click=\"editEquip(scope.row)\">修改</div>\r\n <div type=\"text\" @click=\"delCamera(scope.row)\">\r\n <span>删除</span>\r\n </div>\r\n <div type=\"text\" @click=\"lokDetailInfo(scope.row)\">\r\n 详情查看\r\n </div>\r\n <div type=\"text\" @click=\"updateFileItem(scope.row)\">\r\n <div v-if=\"name==='chengbingxin'\">视频上传</div>\r\n </div>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <el-row type=\"flex\" justify=\"end\" style=\"margin-top: 10px\">\r\n <el-pagination\r\n :page-sizes=\"[10, 15, 20]\"\r\n layout=\"total, sizes, prev, pager, next, jumper\"\r\n :total=\"total\"\r\n @size-change=\"handleSizeChange\"\r\n @current-change=\"handleCurrentChange\"\r\n />\r\n </el-row>\r\n </div>\r\n <!-- 新增编辑弹窗 -->\r\n <el-dialog\r\n v-if=\"dialogFormVisible\"\r\n :title=\"title\"\r\n :visible.sync=\"dialogFormVisible\"\r\n @close=\"CloseIn\"\r\n width=\"836px\"\r\n >\r\n <el-form\r\n ref=\"form\"\r\n :model=\"form\"\r\n :rules=\"rules\"\r\n style=\"padding: 0 10px; margin-left: -20px\"\r\n >\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"相机编码\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"form.cameraCode\"\r\n autocomplete=\"off\"\r\n placeholder=\"请输入相机编码\"\r\n onkeyup=\"this.value\"\r\n @input=\"descInput\"\r\n />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"相机通道\" label-width=\"120px\" prop=\"channel\">\r\n <el-input\r\n v-model=\"form.channel\"\r\n autocomplete=\"off\"\r\n placeholder=\"请输入相机通道\"\r\n />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"线路\" label-width=\"120px\" prop=\"railwayCode\">\r\n <el-select\r\n v-model=\"form.railwayCode\"\r\n placeholder=\"请选择线路\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in lineWayData\"\r\n :key=\"item.railwayCode\"\r\n :label=\"item.railwayName\"\r\n :value=\"item.railwayCode\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"行别\" label-width=\"120px\" prop=\"lineDirName\">\r\n <!-- <el-select v-model=\"form.lineDirName\" @change=\"handleChange\"> -->\r\n <el-select\r\n v-model=\"form.lineDirName\"\r\n style=\"width: 100%\"\r\n placeholder=\"请选择行别\"\r\n @change=\"$forceUpdate()\"\r\n >\r\n <el-option\r\n v-for=\"item in lineDir\"\r\n :key=\"item.dictValue\"\r\n :label=\"item.dictLabel\"\r\n :value=\"item.dictValue\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"安装里程位置\"\r\n label-width=\"120px\"\r\n prop=\"installMileBD\"\r\n >\r\n <el-input\r\n v-model=\"form.installMileBD\"\r\n placeholder=\"请输入安装里程位置\"\r\n autocomplete=\"off\"\r\n oninput=\"value=value.replace(/[^\\d^\\.]+/g,'').replace('.','$#$').replace(/\\./g,'').replace('$#$','.')\"\r\n >\r\n <template slot=\"append\">km</template>\r\n </el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"起始里程\"\r\n label-width=\"120px\"\r\n prop=\"beginMile\"\r\n >\r\n <el-input\r\n v-model=\"form.beginMileBD\"\r\n style=\"width: 99%\"\r\n oninput=\"value=value.replace(/[^\\d^\\.]+/g,'').replace('.','$#$').replace(/\\./g,'').replace('$#$','.')\"\r\n placeholder=\"请输入起始里程\"\r\n >\r\n <template slot=\"append\">km</template>\r\n </el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"结束里程\" label-width=\"120px\" prop=\"endMile\">\r\n <el-input\r\n v-model=\"form.endMileBD\"\r\n style=\"width: 99%\"\r\n oninput=\"value=value.replace(/[^\\d^\\.]+/g,'').replace('.','$#$').replace(/\\./g,'').replace('$#$','.')\"\r\n placeholder=\"请输入结束里程\"\r\n >\r\n <template slot=\"append\">km</template>\r\n </el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"经度\"\r\n label-width=\"120px\" \r\n prop=\"installLongitude\" \r\n >\r\n <el-input\r\n v-model=\"form.installLongitude\"\r\n placeholder=\"请输入经度\" \r\n type=\"number\" max=\"90\" \r\n />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"纬度\"\r\n label-width=\"120px\" \r\n prop=\"installLatitude\" \r\n >\r\n <el-input\r\n v-model=\"form.installLatitude\"\r\n placeholder=\"请输入纬度\"\r\n type=\"number\" max=\"180\" \r\n />\r\n </el-form-item>\r\n </el-col>\r\n <!-- <el-col :span=\"12\">\r\n <el-form-item label=\"状态\" label-width=\"120px\" prop=\"enableOrNot\">\r\n <el-radio v-model=\"form.enableOrNot\" :label=\"1\" @change=\"$forceUpdate()\">启用</el-radio>\r\n <el-radio v-model=\"form.enableOrNot\" :label=\"2\" @change=\"$forceUpdate()\">停用</el-radio>\r\n </el-form-item>\r\n </el-col> -->\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"测点名称\"\r\n label-width=\"120px\" \r\n prop=\"stationName\" \r\n >\r\n <el-input\r\n v-model=\"form.stationName\"\r\n placeholder=\"请输入测点名称\" \r\n />\r\n </el-form-item> \r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"状态\" label-width=\"120px\" prop=\"enableOrNot\">\r\n <el-radio v-model=\"form.enableOrNot\" :label=\"1\" @change=\"$forceUpdate()\">启用</el-radio>\r\n <el-radio v-model=\"form.enableOrNot\" :label=\"2\" @change=\"$forceUpdate()\">停用</el-radio>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"监视方向\" label-width=\"120px\" prop=\"monitoringDirectionName\">\r\n <el-select\r\n v-model=\"form.monitoringDirectionName\"\r\n style=\"width: 100%\"\r\n placeholder=\"请选择监视方向\"\r\n @change=\"$forceUpdate()\"\r\n >\r\n <el-option\r\n v-for=\"item in firectionData\"\r\n :key=\"item.dictValue\"\r\n :label=\"item.dictLabel\"\r\n :value=\"item.dictValue\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\" style=\"text-align: center\">\r\n <el-button\r\n class=\"search_btna\"\r\n style=\"line-heigth: 0\"\r\n :disabled=\"disabledSave\"\r\n @click=\"submint\"\r\n >保存</el-button\r\n >\r\n <el-button @click=\"closeDia\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n <!-- 上传 -->\r\n <el-dialog\r\n :visible.sync=\"uploadDialog\"\r\n title=\"相机导入\"\r\n width=\"620px\"\r\n @close=\"falseShowUpload\"\r\n >\r\n <el-upload\r\n class=\"upload-demo\"\r\n style=\"text-align: center\"\r\n drag\r\n action=\"#\"\r\n :http-request=\"uploadHttpRequest\"\r\n :auto-upload=\"false\"\r\n :file-list=\"fileList\"\r\n :on-change=\"uploadFileList\"\r\n >\r\n <i class=\"el-icon-upload\" />\r\n <div class=\"el-upload__text\">将文件拖到此处,或<em>点击上传</em></div>\r\n <!-- <div class=\"el-upload__tip\">只能上传xls/xlsx文件,且不超过500kb</div> -->\r\n </el-upload>\r\n <div class=\"hxj\">支持扩展名:.xlsx</div>\r\n <div\r\n class=\"hxj\"\r\n style=\"width: 620px; text-align: center; margin-left: -20px\"\r\n >\r\n 请先下载模板,根据模板内容填写,再上传文件\r\n <span class=\"xzmba\" @click=\"downloadOut\">下载模板</span>\r\n </div>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button class=\"search_btna\" @click=\"uploadSubmitDialog\"\r\n >确定</el-button\r\n >\r\n <el-button class=\"reset_btna\" @click=\"falseShowUpload\"\r\n >取 消</el-button\r\n >\r\n </div>\r\n </el-dialog>\r\n <!-- 详情 -->\r\n <el-dialog :visible.sync=\"detailDialog\" title=\"详情查看\" width=\"836px\">\r\n <div class=\"dialog_box\">\r\n <el-form style=\"padding: 0 10px; margin-left: -20px\">\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"相机编码:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.cameraCode\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n <!-- <span>{{ detailData.cameraCode }}</span> -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"相机通道:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.channel\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n <!-- <span>{{ detailData.channel }}</span> -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"线路:\"\r\n label-width=\"120px\"\r\n prop=\"cameraName\"\r\n >\r\n <el-input\r\n v-model=\"detailData.railwayName\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n <!-- <span>{{ detailData.railwayCode }}</span> -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"行别:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.lineDir == 1 ? '上行' : '下行'\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n <!-- <span v-if=\"detailData.lineDir == 1\">上行</span>\r\n <span v-if=\"detailData.lineDir == 2\">下行</span> -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"安装里程位置:\"\r\n label-width=\"120px\"\r\n prop=\"installs\"\r\n >\r\n <el-input\r\n v-model=\"detailData.installMiles\"\r\n autocomplete=\"off\"\r\n disabled\r\n >\r\n <template slot=\"append\">m</template>\r\n </el-input>\r\n <!-- <span>{{ detailData.installs }}</span> -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"监控里程范围:\"\r\n label-width=\"120px\"\r\n prop=\"begins\"\r\n >\r\n <el-input v-model=\"pjJkfw\" autocomplete=\"off\" disabled>\r\n <template slot=\"append\">m</template>\r\n </el-input>\r\n <!-- <span>{{ detailData.begins }}</span> -->\r\n <!-- <span>{{ detailData.beginMiles }}~ {{detailData.endMiles}}</span> -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"经纬度:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input v-model=\"pjjwd\" autocomplete=\"off\" disabled />\r\n <!-- <span\r\n >{{ detailData.installLongitude }},{{\r\n detailData.installLatitude\r\n }}</span\r\n > -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"测点名称:\"\r\n label-width=\"120px\"\r\n prop=\"stationName\"\r\n >\r\n <el-input\r\n v-model=\"detailData.stationName\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n <!-- <span>{{ detailData.railwayCode }}</span> -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"摄像机开启状态:\"\r\n label-width=\"120px\"\r\n prop=\"enableOrNot\"\r\n >\r\n <el-input v-model=\"detailData.enableOrNot==1?'已开启':'未开启'\" autocomplete=\"off\" disabled />\r\n <!-- <span\r\n >{{ detailData.installLongitude }},{{\r\n detailData.installLatitude\r\n }}</span\r\n > -->\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"监视方向\" label-width=\"120px\" prop=\"lineDirName\">\r\n <el-select\r\n v-model=\"detailData.monitoringDirection==1?'上行':detailData.monitoringDirection==2?'下行':detailData.monitoringDirection==3?'双线':''\"\r\n style=\"width: 100%\"\r\n placeholder=\"请选择监视方向\"\r\n @change=\"$forceUpdate()\"\r\n disabled\r\n >\r\n <el-option\r\n v-for=\"item in firectionData\"\r\n :key=\"item.dictValue\"\r\n :label=\"item.dictLabel\"\r\n :value=\"item.dictValue\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <!-- <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"是否开启录像:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.startRecording == 1 ? '开启' : '不开启'\"\r\n autocomplete=\"off\"\r\n disabled\r\n /></el-form-item>\r\n </el-col> -->\r\n <!-- <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"创建者:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.createBy\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n </el-form-item>\r\n </el-col> -->\r\n <!-- <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"创建时间:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.createTime\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n </el-form-item>\r\n </el-col> -->\r\n <!-- <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"更新者:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.updateBy\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n </el-form-item>\r\n </el-col> -->\r\n <!-- <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"更新时间:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.updateTime\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n </el-form-item>\r\n </el-col> -->\r\n <!-- <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"相机版本号:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.versionNum\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n </el-form-item>\r\n </el-col> -->\r\n <!-- <el-col :span=\"12\">\r\n <el-form-item\r\n label=\"相机版本名称:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.versionName\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n </el-form-item>\r\n </el-col> -->\r\n <!-- <el-col :span=\"24\">\r\n <el-form-item\r\n label=\"备注:\"\r\n label-width=\"120px\"\r\n prop=\"cameraCode\"\r\n >\r\n <el-input\r\n v-model=\"detailData.remark\"\r\n type=\"textarea\"\r\n autocomplete=\"off\"\r\n disabled\r\n />\r\n </el-form-item>\r\n </el-col> -->\r\n </el-row>\r\n </el-form>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n \r\n <el-dialog title=\"视频上传\" v-if=\"dialogVisible\" :visible.sync=\"dialogVisible\" width=\"800px\">\r\n <div style=\"text-align: center\">\r\n <el-upload\r\n class=\"upload-demo\"\r\n :limit=\"1\"\r\n drag\r\n :action=\"uploadUrl\"\r\n :multiple=\"true\"\r\n :before-upload=\"beforeUpload\"\r\n >\r\n <i class=\"el-icon-upload\"></i>\r\n <div class=\"el-upload__text\">将文件拖到此处,或<em>点击上传</em></div>\r\n <div style=\"margin-top: 10px; font-size: 12px\" slot=\"tip\">\r\n 请上传视频格式文件\r\n </div>\r\n </el-upload>\r\n </div>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"dialogVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"goClick\">确 定</el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { getToken } from \"@/utils/auth\";\r\nimport { mapGetters } from \"vuex\";\r\nimport { editAccountManagement, serviceFileoss } from \"../../../api/video\";\r\nimport {\r\n getCameraDataList,\r\n getLineDir,\r\n getRecording,\r\n getStartRecording,\r\n getLineWayList,\r\n getCameraDataAddNewer,\r\n getDownLoadList,\r\n getWorkSetion,\r\n getLineData,\r\n getCameraDataDelete,\r\n getCameraFetail,\r\n getCameraDataUpLoadOut,\r\n getCameraDataUpdate,\r\n getDeptList,\r\n getCameraDataUpLoadIn,\r\n toEnabAccrame,\r\n getDirection\r\n} from \"@/api/account/camera\";\r\n\r\nexport default {\r\n name: \"Cart\",\r\n computed: {\r\n ...mapGetters([\"name\"]),\r\n },\r\n data() {\r\n var validatePassxjbm = (rule, value, callback) => {\r\n if (value === undefined || value === \"\") {\r\n callback(new Error(\"请输入相机编码\"));\r\n } else if (value.length > 100) {\r\n callback(new Error(\"最多可输入100位\"));\r\n } else {\r\n callback();\r\n }\r\n };\r\n var validatePassxjtd = (rule, value, callback) => {\r\n if (value === undefined || value === \"\") {\r\n callback(new Error(\"请输入相机通道\"));\r\n } else if (value.length > 100) {\r\n callback(new Error(\"最多可输入100位\"));\r\n } else {\r\n callback();\r\n }\r\n };\r\n var azlcwz = (rule, value, callback) => {\r\n if (value === undefined || value === \"\") {\r\n callback(new Error(\"请输入安装里程位置\"));\r\n } else if (value.length > 10) {\r\n callback(new Error(\"最多可输入10位\"));\r\n } else {\r\n callback();\r\n }\r\n };\r\n var qslc = (rule, value, callback) => {\r\n if (value === undefined || value === \"\") {\r\n callback(new Error(\"请输入起始里程\"));\r\n } else if (value.length > 10) {\r\n callback(new Error(\"最多可输入10位\"));\r\n } else {\r\n callback();\r\n }\r\n };\r\n var jslc = (rule, value, callback) => {\r\n if (value === undefined || value === \"\") {\r\n callback(new Error(\"请输入结束里程\"));\r\n } else if (value.length > 10) {\r\n callback(new Error(\"最多可输入10位\"));\r\n } else {\r\n callback();\r\n }\r\n };\r\n return {\r\n pjjwd: \"\",\r\n pjJkfw: \"\",\r\n uploadUrl: \"http://124.70.58.209:18810/service/fileoss\", // 上传文件的接口地址\r\n dialogVisible: false,\r\n // 导入\r\n dataForm: {\r\n name: \"\",\r\n file: null,\r\n },\r\n videoUrl: \"\",\r\n searchShow: true,\r\n startStatus: \"\",\r\n rules: {\r\n cameraCode: [\r\n { required: true, validator: validatePassxjbm, trigger: \"blur\" },\r\n ],\r\n channel: [\r\n { required: true, validator: validatePassxjtd, trigger: \"blur\" },\r\n ],\r\n railwayCode: [\r\n { required: true, message: \"请选择线路\", trigger: \"change\" },\r\n ],\r\n deptName: [\r\n { required: true, message: \"请选择所属工务段\", trigger: \"change\" },\r\n ],\r\n lineDirName: [\r\n { required: true, message: \"请选择行别\", trigger: \"change\" },\r\n ],\r\n installMileBD: [\r\n { required: true, validator: azlcwz, trigger: \"change\" },\r\n ],\r\n beginMileBD: [{ required: true, validator: qslc, trigger: \"blur\" }],\r\n endMileBD: [{ required: true, validator: jslc, trigger: \"blur\" }],\r\n // installLongitude: [\r\n // { required: true, message: \"请输入经度\", trigger: \"blur\" },\r\n // ],\r\n // installLatitude: [\r\n // { required: true, message: \"请输入纬度\", trigger: \"blur\" },\r\n // ],\r\n cardNum: [\r\n { required: true, message: \"请输入物联网卡号\", trigger: \"blur\" },\r\n ],\r\n stationName:[\r\n { required: true, message: \"请输入测点名称\", trigger: \"blur\" },\r\n ]\r\n },\r\n disabledSave: false,\r\n enter: 0,\r\n queryParams: {\r\n stationName:'',\r\n cameraCode:'',\r\n line: \"\",\r\n worksSection: \"\",\r\n lineDistinction: \"\",\r\n startMileage: \"\",\r\n finishtMileage: \"\",\r\n // railwayCode: \"\",\r\n deptName: \"\",\r\n deptId: \"\",\r\n lineDir: \"\",\r\n beginMileBD: \"\",\r\n endMileBD: \"\",\r\n pageNum: 1,\r\n pageSize: 10,\r\n },\r\n firectionData:[],\r\n ids: [],\r\n title: \"\",\r\n uploadDialog: false,\r\n radioArray: [\r\n {\r\n value: \"1\",\r\n label: \"是\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"否\",\r\n },\r\n ],\r\n xianlu: [\r\n {\r\n value: \"1\",\r\n label: \"xxx1线路\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"xxx2线路\",\r\n },\r\n {\r\n value: \"3\",\r\n label: \"xxx3线路\",\r\n },\r\n ],\r\n gongwuduan: [\r\n {\r\n value: \"1\",\r\n label: \"xx1工务段\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"xx2工务段\",\r\n },\r\n {\r\n value: \"3\",\r\n label: \"xx3工务段\",\r\n },\r\n ],\r\n // hangbie: [\r\n // {\r\n // value: '1',\r\n // label: '上行'\r\n // },\r\n // {\r\n // value: '2',\r\n // label: '下行'\r\n // }\r\n // ],\r\n licheng: [\r\n {\r\n value: \"1\",\r\n label: \"1km\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"2km\",\r\n },\r\n {\r\n value: \"3\",\r\n label: \"3km\",\r\n },\r\n ],\r\n zhangtai: [\r\n {\r\n value: \"1\",\r\n label: \"已解除\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"未解除\",\r\n },\r\n ],\r\n tableData: [],\r\n treeData: [],\r\n workSetiData: [],\r\n getLineData: [],\r\n total: 0,\r\n dialogFormVisible: false,\r\n form: {\r\n lineDirName: \"\",\r\n railwayCode: \"\",\r\n cameraCode: \"\",\r\n channel: \"\",\r\n deptId: \"\",\r\n deptName: \"\",\r\n lineDir: \"\",\r\n installMileBD: \"\",\r\n beginMileBD: \"\",\r\n endMileBD: \"\",\r\n installLongitude: \"\",\r\n installLatitude: \"\",\r\n cardNum: \"\",\r\n startRecording: \"\",\r\n remark: \"\",\r\n stationName:'',\r\n enableOrNot: 1,\r\n monitoringDirection:'',\r\n monitoringDirectionName:''\r\n },\r\n detailDialog: false,\r\n detailData: {},\r\n lineWayData: [],\r\n ids: [],\r\n fileList: [],\r\n cameraCodeValue: \"\",\r\n dialogType: \"\",\r\n headers: { Authorization: getToken() },\r\n action:\r\n \"http://124.70.58.209:18819/hazard/service/baseCameraManagement/importBaseAccountManagement\",\r\n };\r\n },\r\n computed: {\r\n ...mapGetters([\"name\"]),\r\n },\r\n watch: {\r\n \"form.deptName\": {\r\n handler(val) {\r\n this.$set(this.form, \"deptName\", val);\r\n this.optionProps.map((item, index) => {\r\n if (val == item.value) {\r\n this.$set(this.form, \"deptId\", item.value);\r\n }\r\n });\r\n },\r\n deep: true, // 深层监听\r\n },\r\n 'form.installLongitude': function (newval, oldval) { \r\n\t\t\t var reg = /^(\\d{0,3})(\\.(\\d{0,13}))?$/g;\r\n\t\t\t\tif (!reg.test(newval)) {\r\n\t\t\t\t\tif (newval == undefined || newval == null ) {\r\n\t\t\t\t\t\t// this.form.installLongitude = '';\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.form.installLongitude = oldval\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.form.installLongitude = newval.replace(/^\\./g, \"\")\r\n\t\t\t\t}\t\t\t\t\r\n\t\t\t},\r\n 'form.installLatitude': function (newval, oldval) {\r\n\t\t\t var reg = /^(\\d{0,3})(\\.(\\d{0,13}))?$/g;\r\n\t\t\t\tif (!reg.test(newval)) {\r\n\t\t\t\t\tif (newval == undefined || newval == null ) {\r\n\t\t\t\t\t\t// this.form.installLatitude = '';\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.form.installLatitude = oldval\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.form.installLatitude = newval.replace(/^\\./g, \"\")\r\n\t\t\t\t}\t\t\t\t\r\n\t\t\t}\r\n },\r\n created() {\r\n this.getCameraList();\r\n this.getWorkSetion();\r\n this.getDeptList();\r\n this.getLineWayList();\r\n this.getLineTypeList();\r\n this.getDirectionSelect()\r\n },\r\n methods: {\r\n handleEnableChange(row){\r\n let params={\r\n id:row.id,\r\n enableOrNot:row.enableOrNot\r\n }\r\n toEnabAccrame(params).then((res) => {\r\n if (res.code == 200) {\r\n this.$message({\r\n message: res.msg,\r\n type: \"success\",\r\n });\r\n this.getCameraList();\r\n } else {\r\n this.$message({\r\n message: res.msg,\r\n type: \"error\",\r\n });\r\n this.getCameraList();\r\n }\r\n });\r\n },\r\n goClick() {\r\n console.log(this.row);\r\n editAccountManagement({\r\n id: this.row.id,\r\n cameraCode: this.row.cameraCode,\r\n url: this.videoUrl,\r\n }).then((res) => {\r\n console.log(res);\r\n });\r\n this.dialogVisible = false;\r\n },\r\n beforeUpload(file) {\r\n const formData = new FormData();\r\n formData.append(\"file\", file); // 将文件添加到FormData对象中\r\n serviceFileoss(formData).then((res) => {\r\n this.videoUrl = res.data;\r\n });\r\n },\r\n descInput() {\r\n console.log(this.form.cameraCode.length, \",,,,,,,,,,,,,,,,,,,\");\r\n },\r\n falseShowUpload() {\r\n this.uploadDialog = false;\r\n this.fileList = [];\r\n },\r\n uploadFileList(file) {\r\n if (file.status === \"ready\") {\r\n this.fileList.push(file);\r\n if (this.fileList.length > 1) {\r\n this.fileList.splice(0, 1);\r\n }\r\n }\r\n },\r\n uploadSubmitDialog() {\r\n const fileData = new FormData();\r\n fileData.append(\"file\", this.fileList[0].raw);\r\n let isHttpRequest = this.fileList[0].raw.name.split(\".\");\r\n if (\r\n isHttpRequest[isHttpRequest.length - 1] == \"xlsx\" ||\r\n isHttpRequest[isHttpRequest.length - 1] == \"xls\"\r\n ) {\r\n getCameraDataUpLoadIn(fileData).then((res) => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: \"success\",\r\n message: \"导入成功!\",\r\n });\r\n this.uploadDialog = false;\r\n this.getCameraList();\r\n this.fileList = [];\r\n } else {\r\n this.$message({\r\n type: \"error\",\r\n message: res.msg,\r\n });\r\n this.getCameraList();\r\n this.fileList = [];\r\n }\r\n });\r\n } else {\r\n this.$message({\r\n type: \"error\",\r\n message: \"上传的文件只能是xls以及xlsx格式!\",\r\n });\r\n this.fileList = [];\r\n }\r\n },\r\n // 验证文件类型\r\n beforeAvatarUpload(file) {\r\n const isXls =\r\n file.type === \"application/vnd.ms-excel\"\r\n ? true\r\n : file.type ===\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n if (!isXls) {\r\n alert(\"上传的文件只能是xls以及xlsx格式!\");\r\n }\r\n return isXls;\r\n },\r\n // 判断文件个数\r\n handleChange(file, fileList) {\r\n if (fileList.length >= 2) {\r\n return;\r\n }\r\n if (fileList.length === 1) {\r\n this.hasFile = true;\r\n }\r\n this.dataForm.file = file;\r\n },\r\n // 导入\r\n httpRequest(param) {\r\n const formData = new FormData();\r\n formData.append(\"file\", this.dataForm.file.raw);\r\n const configHeaders = {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n };\r\n console.log(\r\n this.dataForm.file.raw.name,\r\n \"this.fileList[0].raw.namethis.fileList[0].raw.namethis.fileList[0].raw.namethis.fileList[0].raw.name\"\r\n );\r\n let isHttpRequest = this.dataForm.file.raw.name.split(\".\");\r\n if (\r\n isHttpRequest[isHttpRequest.length - 1] == \"xlsx\" ||\r\n isHttpRequest[isHttpRequest.length - 1] == \"xls\"\r\n ) {\r\n getCameraDataUpLoadIn(formData).then((res) => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: \"success\",\r\n message: \"导入成功!\",\r\n });\r\n this.getCameraList(this.data);\r\n } else {\r\n this.$message({\r\n type: \"error\",\r\n message: res.msg,\r\n });\r\n }\r\n });\r\n } else {\r\n this.$message({\r\n type: \"error\",\r\n message: \"上传的文件只能是xls以及xlsx格式!\",\r\n });\r\n }\r\n },\r\n changeValue(val) {},\r\n // 行别下拉\r\n getLineTypeList() {\r\n getLineDir({}).then((res) => {\r\n this.lineDir = res.data;\r\n });\r\n },\r\n getDirectionSelect(){\r\n getDirection({}).then((res)=>{\r\n this.firectionData=res.data\r\n })\r\n },\r\n handleStatusChange(row) {\r\n if (row.startRecording == \"2\") {\r\n getRecording(row.id).then((res) => {\r\n if (res.code == 200) {\r\n this.$message({\r\n message: \"关闭成功\",\r\n type: \"success\",\r\n });\r\n } else {\r\n this.$message({\r\n message: res.msg,\r\n type: \"error\",\r\n });\r\n this.getCameraList();\r\n }\r\n });\r\n } else if (row.startRecording == \"1\") {\r\n getStartRecording(row.id).then((res) => {\r\n if (res.code == 200) {\r\n this.$message({\r\n message: \"开启成功\",\r\n type: \"success\",\r\n });\r\n } else {\r\n this.$message({\r\n message: res.msg,\r\n type: \"error\",\r\n });\r\n this.getCameraList();\r\n }\r\n });\r\n }\r\n },\r\n handleSelectionChange(val) {\r\n this.ids = val.map((item) => item.id); \r\n },\r\n handleQuery() {\r\n this.queryParams.pageNum = 1;\r\n this.getCameraList();\r\n },\r\n reset() {\r\n this.queryParams.deptName = \"\";\r\n this.queryParams.deptId = \"\";\r\n this.queryParams.railwayCode = \"\";\r\n this.queryParams.lineDir = \"\";\r\n this.queryParams.beginMileBD = \"\";\r\n this.queryParams.endMileBD = \"\";\r\n this.queryParams.stationName = \"\";\r\n this.queryParams.cameraCode = \"\";\r\n this.queryParams.pageNum = 1;\r\n this.queryParams.pageSize = 10;\r\n this.getCameraList();\r\n },\r\n getLineWayList() {\r\n getLineWayList({}).then((res) => {\r\n this.lineWayData = res.data;\r\n });\r\n },\r\n handleNodeHandleClick(a) {\r\n this.queryParams.deptName = a.label;\r\n this.queryParams.deptId = a.id;\r\n },\r\n handleNodeClick(v) {\r\n this.form.deptId = v.id;\r\n this.form.deptName = v.label;\r\n },\r\n getWorkSetion: function () {\r\n getWorkSetion({}).then((response) => {\r\n this.workSetiData = response.data;\r\n });\r\n getLineData({}).then((response) => {\r\n this.getLineData = response.data;\r\n });\r\n },\r\n getDeptList() {\r\n getDeptList({}).then((res) => {\r\n this.treeData = res.data;\r\n });\r\n },\r\n handleCurrentChange(val) {\r\n this.queryParams.pageNum = val;\r\n this.getCameraList();\r\n },\r\n handleSizeChange(val) {\r\n this.queryParams.pageSize = val;\r\n this.getCameraList();\r\n },\r\n getCameraList() {\r\n delete this.queryParams.ids;\r\n console.log(\r\n this.queryParams,\r\n \"this.queryParamsthis.queryParamsthis.queryParams\"\r\n );\r\n getCameraDataList(this.queryParams).then((response) => {\r\n if (!this.queryParams.pageNum || !this.queryParams.pageSize) {\r\n this.queryParams.pageNum = 1;\r\n this.queryParams.pageSize = 10;\r\n getCameraDataList(this.queryParams).then((res) => {\r\n this.tableData = res.data.records;\r\n this.total = res.data.total;\r\n });\r\n }\r\n if (\r\n response.data.records.length == 0 &&\r\n this.queryParams.pageNum != 1\r\n ) {\r\n this.queryParams.pageNum = this.queryParams.pageNum - 1;\r\n getCameraDataList(this.queryParams).then((res) => {\r\n this.tableData = res.data.records;\r\n this.total = response.data.total;\r\n });\r\n }\r\n this.tableData = response.data.records;\r\n this.total = response.data.total;\r\n if (this.tableData.length > 0) {\r\n if (this.tableData[0].isStartRecording == 1) {\r\n this.startStatus = 1;\r\n }\r\n } else {\r\n this.queryParams.pageNum = 1;\r\n this.queryParams.pageSize = 10;\r\n this.total = response.data.total;\r\n return;\r\n this.startStatus = 0;\r\n }\r\n });\r\n },\r\n addEquipment: function () {\r\n this.form = {};\r\n\r\n // this.$refs['form'].resetFields()\r\n this.dialogType = 1;\r\n this.title = \"新增设备\";\r\n // alert(this.form.enableOrNot)\r\n // alert(this.form.installLatitude)\r\n this.form.enableOrNot=1\r\n this.disabledSave = false;\r\n this.dialogFormVisible = true;\r\n },\r\n closeDia() {\r\n this.dialogFormVisible = false;\r\n this.$refs[\"form\"].resetFields();\r\n this.form = {};\r\n },\r\n CloseIn() {\r\n this.dialogFormVisible = false;\r\n this.$refs[\"form\"].resetFields();\r\n this.form = {};\r\n },\r\n submint: function () {\r\n this.$refs.form.validate((valid) => {\r\n if (valid) {\r\n if(this.form.beginMileBD>this.form.endMileBD) {\r\n return this.$message({\r\n message: \"结束里程必须大于起始里程\",\r\n type: \"error\",\r\n });\r\n }\r\n if (this.dialogType == 1) {\r\n this.firectionData.forEach((item) => {\r\n if (item.dictLabel == this.form.monitoringDirectionName) {\r\n this.form.monitoringDirection = item.dictValue;\r\n }\r\n });\r\n this.lineDir.forEach((item) => {\r\n if (item.dictLabel == this.form.lineDirName) {\r\n this.form.lineDir = item.dictValue;\r\n }\r\n });\r\n // delete this.form.deptName\r\n this.form.monitoringDirection = Number(this.form.monitoringDirectionName);\r\n this.form.lineDir = Number(this.form.lineDirName);\r\n this.disabledSave = true;\r\n getCameraDataAddNewer(this.form).then((response) => {\r\n if (response.code == 200) {\r\n this.$message({\r\n message: \"新增成功\",\r\n type: \"success\",\r\n });\r\n this.getCameraList();\r\n this.dialogFormVisible = false;\r\n this.$refs[\"form\"].resetFields();\r\n } else {\r\n this.disabledSave = false;\r\n this.$message({\r\n message: response.msg,\r\n type: \"error\",\r\n });\r\n }\r\n });\r\n } else if (this.dialogType == 2) {\r\n delete this.form.beginMiles;\r\n delete this.form.endMiles;\r\n delete this.form.installMiles;\r\n this.form.lineDir = this.form.lineDirName;\r\n this.form.monitoringDirection = Number(this.form.monitoringDirectionName);\r\n if (this.form.lineDir == \"上行\") {\r\n this.form.lineDir = 1;\r\n } else if (this.form.lineDir == \"下行\") {\r\n this.form.lineDir = 2;\r\n }\r\n getCameraDataUpdate(this.form).then((res) => {\r\n if (res.code == 200) {\r\n this.$message({\r\n message: \"修改成功\",\r\n type: \"success\",\r\n });\r\n this.getCameraList();\r\n this.dialogFormVisible = false;\r\n this.$refs[\"form\"].resetFields();\r\n } else {\r\n this.$message({\r\n message: res.msg,\r\n type: \"error\",\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n },\r\n editEquip: function (row) {\r\n this.dialogType = 2;\r\n this.disabledSave = false;\r\n this.title = \"修改设备信息\";\r\n this.dialogFormVisible = true;\r\n // this.form = JSON.parse(JSON.stringify(row))\r\n getCameraFetail(row.id).then((res) => { \r\n this.form = res.data;\r\n this.lineDir.forEach((item) => {\r\n if (item.dictValue == this.form.lineDir) {\r\n this.form.lineDirName = item.dictLabel;\r\n }\r\n });\r\n this.firectionData.forEach((item) => {\r\n if (item.dictValue == this.form.monitoringDirection) {\r\n this.form.monitoringDirectionName = item.dictLabel;\r\n }\r\n });\r\n });\r\n },\r\n delCameraList() {\r\n if (this.ids.length == 0) {\r\n this.$message({\r\n type: \"error\",\r\n message: \"请选择需要删除的数据\",\r\n });\r\n } else {\r\n this.$confirm(\"确定要删除吗?\", \"信息提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n getCameraDataDelete(this.ids).then((res) => {\r\n if (res.code == 200) {\r\n this.getCameraList();\r\n this.$message({\r\n type: \"success\",\r\n message: \"删除成功!\",\r\n });\r\n } else {\r\n this.$message({\r\n type: \"error\",\r\n message: res.msg,\r\n });\r\n }\r\n });\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 delCamera: function (row) {\r\n this.ids = row.id;\r\n this.$confirm(\"确定要删除吗?\", \"信息提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n getCameraDataDelete(this.ids).then((res) => {\r\n if (res.code == 200) {\r\n this.getCameraList();\r\n this.$message({\r\n type: \"success\",\r\n message: \"删除成功!\",\r\n });\r\n } else {\r\n this.$message({\r\n type: \"error\",\r\n message: res.msg,\r\n });\r\n }\r\n });\r\n })\r\n .catch(() => {\r\n this.$message({\r\n type: \"info\",\r\n message: \"已取消删除\",\r\n });\r\n });\r\n },\r\n uploadOut: function () {\r\n delete this.queryParams.pageNum;\r\n delete this.queryParams.pageSize;\r\n this.queryParams.ids = this.ids;\r\n // if(this.queryParams.ids.length == 0) {\r\n // return this.$message({\r\n // message: '请选择需要导出的数据',\r\n // type: \"error\",\r\n // });\r\n // }\r\n getCameraDataUpLoadOut(this.queryParams).then((res) => {\r\n // this.exportFile(res, \"摄像机台账信息\");\r\n \r\n if (res.type == \"application/json\") {\r\n const reader = new FileReader(); \r\n reader.readAsText(res, 'utf-8'); \r\n reader.onload = function () {\r\n const msg = JSON.parse(reader.result);\r\n if(msg.code == 200){\r\n this.exportFile(res, \"摄像机台账信息\");\r\n } else{\r\n Message({\r\n type: 'error',\r\n message: msg.msg\r\n });\r\n } \r\n }\r\n }else{\r\n this.exportFile(res, \"摄像机台账信息\");\r\n }\r\n\r\n });\r\n },\r\n exportFile: function (obj, name = Date.now(), suffix = \"xlsx\") {\r\n const url = window.URL.createObjectURL(\r\n new Blob([obj], { type: \"application/vnd.ms-excel\" })\r\n );\r\n const aDOM = document.createElement(\"a\");\r\n aDOM.style.display = \"none\";\r\n aDOM.href = url;\r\n const fileName = name + \".\" + suffix;\r\n aDOM.setAttribute(\"download\", fileName);\r\n document.body.appendChild(aDOM);\r\n aDOM.click();\r\n document.body.removeChild(aDOM);\r\n },\r\n downloadOut() {\r\n getDownLoadList({}).then((res) => {\r\n this.exportDownFile(res, \"摄像机台账模板\");\r\n });\r\n },\r\n exportDownFile: function (obj, name = Date.now(), suffix = \"xlsx\") {\r\n const url = window.URL.createObjectURL(\r\n new Blob([obj], { type: \"application/vnd.ms-excel\" })\r\n );\r\n const aDOM = document.createElement(\"a\");\r\n aDOM.style.display = \"none\";\r\n aDOM.href = url;\r\n const fileName = name + \".\" + suffix;\r\n aDOM.setAttribute(\"download\", fileName);\r\n document.body.appendChild(aDOM);\r\n aDOM.click();\r\n document.body.removeChild(aDOM);\r\n },\r\n updateFileItem(row) {\r\n console.log(row);\r\n this.dialogVisible = true;\r\n this.row = row;\r\n },\r\n lokDetailInfo: function (row) {\r\n this.detailDialog = true;\r\n getCameraFetail(row.id).then((res) => {\r\n res.data.installLongitude = res.data.installLongitude||''\r\n res.data.installLatitude = res.data.installLatitude||''\r\n this.detailData = res.data;\r\n this.cameraCodeValue = this.detailData.cameraCode;\r\n if(this.detailData.installLongitude!=null&&this.detailData.installLatitude!=null&&this.detailData.installLongitude!=''&&this.detailData.installLatitude!=''){\r\n this.pjjwd =\r\n this.detailData.installLongitude +\r\n \",\" +\r\n this.detailData.installLatitude;\r\n }else{\r\n this.pjjwd=''\r\n }\r\n if(this.detailData.beginMiles!=null&&this.detailData.endMiles!=null&&this.detailData.beginMiles!=''&&this.detailData.endMiles!=''){\r\n this.pjJkfw =this.detailData.beginMiles + \"~\" + this.detailData.endMiles;\r\n }else{\r\n this.pjJkfw =''\r\n }\r\n });\r\n },\r\n deleteEquip: function () {\r\n this.$confirm(\"此操作将永久删除该文件, 是否继续?\", \"提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n this.$message({\r\n type: \"success\",\r\n message: \"删除成功!\",\r\n });\r\n })\r\n .catch(() => {\r\n this.$message({\r\n type: \"info\",\r\n message: \"已取消删除\",\r\n });\r\n });\r\n },\r\n importLoadIn: function () {\r\n this.uploadDialog = true;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.dashboard {\r\n &-container {\r\n margin: 45px 30px 30px;\r\n }\r\n\r\n &-text {\r\n font-size: 30px;\r\n line-height: 46px;\r\n }\r\n}\r\n.cardHeadr {\r\n margin-top: -20px;\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n\r\n.search_btn {\r\n cursor: pointer;\r\n background-color: #2766dd;\r\n color: #f7f8fb;\r\n font-size: 14px;\r\n width: 80px;\r\n height: 40px;\r\n text-align: center;\r\n line-height: 40px;\r\n}\r\n.search_btna {\r\n cursor: pointer;\r\n background-color: #2766dd !important;\r\n color: #fff;\r\n font-size: 14px;\r\n width: 80px;\r\n height: 40px;\r\n text-align: center;\r\n}\r\n\r\n.search_btna,\r\n.search_btn:hover {\r\n background-color: #4d85f4;\r\n}\r\n\r\n.reset_btn {\r\n cursor: pointer;\r\n color: #565656;\r\n font-size: 14px;\r\n border: 1px solid #d7d7d7;\r\n width: 80px;\r\n height: 40px;\r\n text-align: center;\r\n line-height: 40px;\r\n}\r\n\r\n.reset_btn:hover {\r\n color: #1f9fff;\r\n border: 1px solid #1f9fff;\r\n background: none;\r\n}\r\n\r\n.addBtn {\r\n margin: 15px 20px 15px 0;\r\n cursor: pointer;\r\n text-align: center;\r\n width: 98px;\r\n height: 34px;\r\n border-radius: 2px;\r\n border: 1px solid #abc7fd;\r\n line-height: 34px;\r\n font-weight: 400;\r\n font-size: 14px;\r\n color: #2250c8;\r\n background-color: #e7eeff;\r\n}\r\n\r\n.addBtn:hover {\r\n color: #ffffff;\r\n background-color: #2250c8;\r\n border: 1px solid #2250c8;\r\n}\r\n.addBtn:active {\r\n color: #ffffff;\r\n background-color: #194da4;\r\n border: 1px solid #194da4;\r\n}\r\n.operateBtn {\r\n display: flex;\r\n justify-content: center;\r\n color: #2866dd;\r\n div {\r\n font-size: 14px;\r\n margin: 0 5px;\r\n cursor: pointer;\r\n }\r\n}\r\n\r\n.el-tooltip__popper {\r\n max-width: 30%;\r\n padding-bottom: 5px !important;\r\n display: -webkit-box;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n -webkit-line-clamp: 15;\r\n -webkit-box-orient: vertical;\r\n}\r\n.el-tooltip__popper,\r\n.el-tooltip__popper.is-dark {\r\n background: rgb(48, 65, 86) !important;\r\n color: #fff !important;\r\n line-height: 24px;\r\n}\r\n.xzmba {\r\n color: #2766dd;\r\n text-decoration: underline;\r\n cursor: pointer;\r\n}\r\n.hxj {\r\n width: 100%;\r\n text-align: center;\r\n padding: 0 !important;\r\n}\r\n::v-deep .el-dialog__header {\r\n padding: 0 20px 10px !important;\r\n}\r\n::v-deep .el-dialog__body {\r\n padding: 20px 20px !important;\r\n}\r\n::v-deep .el-upload__tip {\r\n margin-top: -17px;\r\n}\r\n::v-deep .el-upload-dragger .el-upload__text {\r\n margin-top: -10px;\r\n}\r\n.dialog-footer {\r\n text-align: center;\r\n}\r\n.detailDia {\r\n div {\r\n padding-left: 100px;\r\n }\r\n}\r\n::v-deep .el-input__inner,\r\n.el-input--suffix .el-input__inner {\r\n padding-right: 0 !important;\r\n}\r\n::v-deep .el-input.is-disabled .el-input__inner {\r\n color: #606266;\r\n}\r\n::v-deep .el-textarea .el-input__count {\r\n bottom: -40px;\r\n}\r\n::v-deep .el-input__icon {\r\n line-height: 47px;\r\n}\r\n::v-deep .el-select .el-input .el-select__caret {\r\n line-height: 20px !important;\r\n}\r\n::v-deep .el-dialog__header {\r\n padding: 7px 20px 10px !important;\r\n}\r\n::v-deep .el-dialog__headerbtn {\r\n position: absolute;\r\n top: 12px;\r\n right: 20px;\r\n padding: 0;\r\n background: 0 0;\r\n border: none;\r\n outline: 0;\r\n cursor: pointer;\r\n font-size: 16px;\r\n}\r\n\r\n</style>\r\n"]}]}