forked from ard/ruoyi-api

zhangjian
2023-05-30 2d38bc50529f2f2c567b01825ff7d820a606279e
1
{"remainingRequest":"D:\\workspace\\idea\\ruoyi-api\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\workspace\\idea\\ruoyi-api\\ruoyi-ui\\src\\views\\device\\cameras\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\workspace\\idea\\ruoyi-api\\ruoyi-ui\\src\\views\\device\\cameras\\index.vue","mtime":1683257485884},{"path":"D:\\workspace\\idea\\ruoyi-api\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1683257226511},{"path":"D:\\workspace\\idea\\ruoyi-api\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1683257224897},{"path":"D:\\workspace\\idea\\ruoyi-api\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1683257226511},{"path":"D:\\workspace\\idea\\ruoyi-api\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1683257451742}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQge2xpc3RDYW1lcmFzLCBnZXRDYW1lcmFzLCBkZWxDYW1lcmFzLCBhZGRDYW1lcmFzLCB1cGRhdGVDYW1lcmFzfSBmcm9tICJAL2FwaS9kZXZpY2UvY2FtZXJhcyI7DQppbXBvcnQgeyBkZXB0VHJlZVNlbGVjdCB9IGZyb20gIkAvYXBpL3N5c3RlbS91c2VyIjsNCmltcG9ydCBUcmVlc2VsZWN0IGZyb20gIkByaW9waGFlL3Z1ZS10cmVlc2VsZWN0IjsNCmltcG9ydCAiQHJpb3BoYWUvdnVlLXRyZWVzZWxlY3QvZGlzdC92dWUtdHJlZXNlbGVjdC5jc3MiOw0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAiQ2FtZXJhcyIsDQogIGRpY3RzOiBbImNhbWVyYV90eXBlIiwiVHJlZXNlbGVjdCJdLA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICAvLyDpga7nvanlsYINCiAgICAgIGxvYWRpbmc6IHRydWUsDQogICAgICAvLyDpgInkuK3mlbDnu4QNCiAgICAgIGlkczogW10sDQogICAgICAvLyDpnZ7ljZXkuKrnpoHnlKgNCiAgICAgIHNpbmdsZTogdHJ1ZSwNCiAgICAgIC8vIOmdnuWkmuS4quemgeeUqA0KICAgICAgbXVsdGlwbGU6IHRydWUsDQogICAgICAvLyDmmL7npLrmkJzntKLmnaHku7YNCiAgICAgIHNob3dTZWFyY2g6IHRydWUsDQogICAgICAvLyDmgLvmnaHmlbANCiAgICAgIHRvdGFsOiAwLA0KICAgICAgLy8g55u45py66K6+5aSH6KGo5qC85pWw5o2uDQogICAgICBjYW1lcmFzTGlzdDogW10sDQogICAgICAvLyDlvLnlh7rlsYLmoIfpopgNCiAgICAgIHRpdGxlOiAiIiwNCiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxgg0KICAgICAgb3BlbjogZmFsc2UsDQogICAgICAvLyDmn6Xor6Llj4LmlbANCiAgICAgIHF1ZXJ5UGFyYW1zOiB7DQogICAgICAgIHBhZ2VOdW06IDEsDQogICAgICAgIHBhZ2VTaXplOiAxMCwNCiAgICAgICAgbmFtZTogbnVsbCwNCiAgICAgICAgaXA6IG51bGwsDQogICAgICAgIHBvcnQ6IG51bGwsDQogICAgICAgIHVzZXJuYW1lOiBudWxsLA0KICAgICAgICBwYXNzd29yZDogbnVsbCwNCiAgICAgICAgZ2R0eXBlOiBudWxsLA0KICAgICAgICBjaGFubmVsOiBudWxsLA0KICAgICAgICBwYW46IG51bGwsDQogICAgICAgIHRpbHQ6IG51bGwsDQogICAgICAgIGxvbmdpdHVkZTogbnVsbCwNCiAgICAgICAgbGF0aXR1ZGU6IG51bGwsDQogICAgICAgIGFsdGl0dWRlOiBudWxsDQogICAgICB9LA0KICAgICAgLy8g6KGo5Y2V5Y+C5pWwDQogICAgICBmb3JtOiB7fSwNCiAgICAgIC8vIOihqOWNleagoemqjA0KICAgICAgcnVsZXM6IHt9LA0KICAgICAgLy8g6YOo6Zeo5qCR6YCJ6aG5DQogICAgICBkZXB0T3B0aW9uczogdW5kZWZpbmVkLA0KICAgICAgLy8g6YOo6Zeo5ZCN56ewDQogICAgICBkZXB0TmFtZTogdW5kZWZpbmVkLA0KICAgIH07DQogIH0sDQogIHdhdGNoOiB7DQogICAgLy8g5qC55o2u5ZCN56ew562b6YCJ6YOo6Zeo5qCRDQogICAgZGVwdE5hbWUodmFsKSB7DQogICAgICB0aGlzLiRyZWZzLnRyZWUuZmlsdGVyKHZhbCk7DQogICAgfQ0KICB9LA0KICBjcmVhdGVkKCkgew0KICAgIHRoaXMuZ2V0TGlzdCgpOw0KICAgIHRoaXMuZ2V0RGVwdFRyZWUoKTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIC8qKiDmn6Xor6Lnm7jmnLrorr7lpIfliJfooaggKi8NCiAgICBnZXRMaXN0KCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgIGxpc3RDYW1lcmFzKHRoaXMucXVlcnlQYXJhbXMpLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICB0aGlzLmNhbWVyYXNMaXN0ID0gcmVzcG9uc2Uucm93czsNCiAgICAgICAgdGhpcy50b3RhbCA9IHJlc3BvbnNlLnRvdGFsOw0KICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g5Y+W5raI5oyJ6ZKuDQogICAgY2FuY2VsKCkgew0KICAgICAgdGhpcy5vcGVuID0gZmFsc2U7DQogICAgICB0aGlzLnJlc2V0KCk7DQogICAgfSwNCiAgICAvLyDooajljZXph43nva4NCiAgICByZXNldCgpIHsNCiAgICAgIHRoaXMuZm9ybSA9IHsNCiAgICAgICAgaWQ6IG51bGwsDQogICAgICAgIG5hbWU6IG51bGwsDQogICAgICAgIGlwOiBudWxsLA0KICAgICAgICBwb3J0OiBudWxsLA0KICAgICAgICB1c2VybmFtZTogbnVsbCwNCiAgICAgICAgcGFzc3dvcmQ6IG51bGwsDQogICAgICAgIGdkdHlwZTogbnVsbCwNCiAgICAgICAgY2hhbm5lbDogbnVsbCwNCiAgICAgICAgcGFuOiBudWxsLA0KICAgICAgICB0aWx0OiBudWxsLA0KICAgICAgICBsb25naXR1ZGU6IG51bGwsDQogICAgICAgIGxhdGl0dWRlOiBudWxsLA0KICAgICAgICBhbHRpdHVkZTogbnVsbA0KICAgICAgfTsNCiAgICAgIHRoaXMucmVzZXRGb3JtKCJmb3JtIik7DQogICAgfSwNCiAgICAvKiog5pCc57Si5oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlUXVlcnkoKSB7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSAxOw0KICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgfSwNCiAgICAvKiog6YeN572u5oyJ6ZKu5pON5L2cICovDQogICAgcmVzZXRRdWVyeSgpIHsNCiAgICAgIHRoaXMucmVzZXRGb3JtKCJxdWVyeUZvcm0iKTsNCiAgICAgIHRoaXMuaGFuZGxlUXVlcnkoKTsNCiAgICB9LA0KICAgIC8vIOWkmumAieahhumAieS4reaVsOaNrg0KICAgIGhhbmRsZVNlbGVjdGlvbkNoYW5nZShzZWxlY3Rpb24pIHsNCiAgICAgIHRoaXMuaWRzID0gc2VsZWN0aW9uLm1hcChpdGVtID0+IGl0ZW0uaWQpDQogICAgICB0aGlzLnNpbmdsZSA9IHNlbGVjdGlvbi5sZW5ndGggIT09IDENCiAgICAgIHRoaXMubXVsdGlwbGUgPSAhc2VsZWN0aW9uLmxlbmd0aA0KICAgIH0sDQogICAgLyoqIOaWsOWinuaMiemSruaTjeS9nCAqLw0KICAgIGhhbmRsZUFkZCgpIHsNCiAgICAgIHRoaXMucmVzZXQoKTsNCiAgICAgIHRoaXMub3BlbiA9IHRydWU7DQogICAgICB0aGlzLnRpdGxlID0gIua3u+WKoOebuOacuuiuvuWkhyI7DQogICAgfSwNCiAgICAvKiog5L+u5pS55oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlVXBkYXRlKHJvdykgew0KICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgY29uc3QgaWQgPSByb3cuaWQgfHwgdGhpcy5pZHMNCiAgICAgIGdldENhbWVyYXMoaWQpLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICB0aGlzLmZvcm0gPSByZXNwb25zZS5kYXRhOw0KICAgICAgICB0aGlzLm9wZW4gPSB0cnVlOw0KICAgICAgICB0aGlzLnRpdGxlID0gIuS/ruaUueebuOacuuiuvuWkhyI7DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8qKiDmj5DkuqTmjInpkq4gKi8NCiAgICBzdWJtaXRGb3JtKCkgew0KICAgICAgdGhpcy4kcmVmc1siZm9ybSJdLnZhbGlkYXRlKHZhbGlkID0+IHsNCiAgICAgICAgaWYgKHZhbGlkKSB7DQogICAgICAgICAgaWYgKHRoaXMuZm9ybS5pZCAhPSBudWxsKSB7DQogICAgICAgICAgICB1cGRhdGVDYW1lcmFzKHRoaXMuZm9ybSkudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgICAgICAgIHRoaXMuJG1vZGFsLm1zZ1N1Y2Nlc3MoIuS/ruaUueaIkOWKnyIpOw0KICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgYWRkQ2FtZXJhcyh0aGlzLmZvcm0pLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICAgICAgICB0aGlzLiRtb2RhbC5tc2dTdWNjZXNzKCLmlrDlop7miJDlip8iKTsNCiAgICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7DQogICAgICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8qKiDliKDpmaTmjInpkq7mk43kvZwgKi8NCiAgICBoYW5kbGVEZWxldGUocm93KSB7DQogICAgICBjb25zdCBpZHMgPSByb3cuaWQgfHwgdGhpcy5pZHM7DQogICAgICB0aGlzLiRtb2RhbC5jb25maXJtKCfmmK/lkKbnoa7orqTliKDpmaTnm7jmnLrorr7lpIfnvJblj7fkuLoiJyArIGlkcyArICci55qE5pWw5o2u6aG577yfJykudGhlbihmdW5jdGlvbiAoKSB7DQogICAgICAgIHJldHVybiBkZWxDYW1lcmFzKGlkcyk7DQogICAgICB9KS50aGVuKCgpID0+IHsNCiAgICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgICAgIHRoaXMuJG1vZGFsLm1zZ1N1Y2Nlc3MoIuWIoOmZpOaIkOWKnyIpOw0KICAgICAgfSkuY2F0Y2goKCkgPT4gew0KICAgICAgfSk7DQogICAgfSwNCiAgICAvKiog5a+85Ye65oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlRXhwb3J0KCkgew0KICAgICAgdGhpcy5kb3dubG9hZCgnc2Nob29sL2NhbWVyYXMvZXhwb3J0Jywgew0KICAgICAgICAuLi50aGlzLnF1ZXJ5UGFyYW1zDQogICAgICB9LCBgY2FtZXJhc18ke25ldyBEYXRlKCkuZ2V0VGltZSgpfS54bHN4YCkNCiAgICB9LA0KICAgIC8qKiDmn6Xor6Lpg6jpl6jkuIvmi4nmoJHnu5PmnoQgKi8NCiAgICBnZXREZXB0VHJlZSgpIHsNCiAgICAgIGRlcHRUcmVlU2VsZWN0KCkudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKQ0KICAgICAgICB0aGlzLmRlcHRPcHRpb25zID0gcmVzcG9uc2UuZGF0YTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g562b6YCJ6IqC54K5DQogICAgZmlsdGVyTm9kZSh2YWx1ZSwgZGF0YSkgew0KICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRydWU7DQogICAgICByZXR1cm4gZGF0YS5sYWJlbC5pbmRleE9mKHZhbHVlKSAhPT0gLTE7DQogICAgfSwNCiAgICAvLyDoioLngrnljZXlh7vkuovku7YNCiAgICBoYW5kbGVOb2RlQ2xpY2soZGF0YSkgew0KICAgICAgY29uc29sZS5sb2coZGF0YSkNCiAgICAgIHRoaXMucXVlcnlQYXJhbXMuZGVwdElkID0gZGF0YS5pZDsNCiAgICAgIHRoaXMuaGFuZGxlUXVlcnkoKTsNCiAgICB9LA0KICB9DQp9Ow0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/device/cameras","sourcesContent":["<template>\r\n  <div class=\"app-container\">\r\n    <el-card id=\"left-card\" class=\"left-card\" :style=\"{width: leftWidth, height: viewerHeight}\">\r\n      <!--部门数据-->\r\n      <div v-if=\"!open\">\r\n        <el-row :gutter=\"20\">\r\n          <el-col :span=\"5\" :xs=\"24\">\r\n            <div class=\"head-container\">\r\n              <el-input\r\n                v-model=\"deptName\"\r\n                placeholder=\"请输入部门名称\"\r\n                clearable\r\n                size=\"small\"\r\n                prefix-icon=\"el-icon-search\"\r\n                style=\"margin-bottom: 20px\"\r\n              />\r\n            </div>\r\n            <div class=\"head-container\">\r\n              <el-tree\r\n                :data=\"deptOptions\"\r\n                :props=\"defaultProps\"\r\n                :expand-on-click-node=\"false\"\r\n                :filter-node-method=\"filterNode\"\r\n                ref=\"tree\"\r\n                node-key=\"id\"\r\n                default-expand-all\r\n                highlight-current\r\n                @node-click=\"handleNodeClick\"\r\n              />\r\n            </div>\r\n          </el-col>\r\n          <el-col :span=\"19\" :xs=\"24\">\r\n            <el-form :model=\"queryParams\" ref=\"queryForm\" size=\"small\" :inline=\"true\" v-show=\"showSearch\"\r\n                     label-width=\"68px\">\r\n              <el-form-item label=\"名称\" prop=\"name\">\r\n                <el-input\r\n                  v-model=\"queryParams.name\"\r\n                  placeholder=\"请输入名称\"\r\n                  clearable\r\n                  @keyup.enter.native=\"handleQuery\"\r\n                />\r\n              </el-form-item>\r\n              <el-form-item label=\"ip\" prop=\"ip\">\r\n                <el-input\r\n                  v-model=\"queryParams.ip\"\r\n                  placeholder=\"请输入ip\"\r\n                  clearable\r\n                  @keyup.enter.native=\"handleQuery\"\r\n                />\r\n              </el-form-item>\r\n              <el-form-item label=\"用户名\" prop=\"username\">\r\n                <el-input\r\n                  v-model=\"queryParams.username\"\r\n                  placeholder=\"请输入用户名\"\r\n                  clearable\r\n                  @keyup.enter.native=\"handleQuery\"\r\n                />\r\n              </el-form-item>\r\n              <el-form-item label=\"密码\" prop=\"password\">\r\n                <el-input\r\n                  v-model=\"queryParams.password\"\r\n                  placeholder=\"请输入密码\"\r\n                  clearable\r\n                  @keyup.enter.native=\"handleQuery\"\r\n                />\r\n              </el-form-item>\r\n              <el-form-item label=\"光电类型\" prop=\"gdtype\">\r\n                <el-select v-model=\"queryParams.gdtype\" placeholder=\"请选择光电类型\" clearable>\r\n                  <el-option\r\n                    v-for=\"dict in dict.type.camera_type\"\r\n                    :key=\"dict.value\"\r\n                    :label=\"dict.label\"\r\n                    :value=\"dict.value\"\r\n                  />\r\n                </el-select>\r\n              </el-form-item>\r\n              <el-form-item>\r\n                <el-button type=\"primary\" icon=\"el-icon-search\" size=\"mini\" @click=\"handleQuery\">搜索</el-button>\r\n                <el-button icon=\"el-icon-refresh\" size=\"mini\" @click=\"resetQuery\">重置</el-button>\r\n              </el-form-item>\r\n            </el-form>\r\n\r\n            <el-row :gutter=\"10\" class=\"mb8\">\r\n              <el-col :span=\"1.5\">\r\n                <el-button\r\n                  type=\"primary\"\r\n                  plain\r\n                  icon=\"el-icon-plus\"\r\n                  size=\"mini\"\r\n                  @click=\"handleAdd\"\r\n                  v-hasPermi=\"['school:cameras:add']\"\r\n                >新增\r\n                </el-button>\r\n              </el-col>\r\n              <el-col :span=\"1.5\">\r\n                <el-button\r\n                  type=\"success\"\r\n                  plain\r\n                  icon=\"el-icon-edit\"\r\n                  size=\"mini\"\r\n                  :disabled=\"single\"\r\n                  @click=\"handleUpdate\"\r\n                  v-hasPermi=\"['school:cameras:edit']\"\r\n                >修改\r\n                </el-button>\r\n              </el-col>\r\n              <el-col :span=\"1.5\">\r\n                <el-button\r\n                  type=\"danger\"\r\n                  plain\r\n                  icon=\"el-icon-delete\"\r\n                  size=\"mini\"\r\n                  :disabled=\"multiple\"\r\n                  @click=\"handleDelete\"\r\n                  v-hasPermi=\"['school:cameras:remove']\"\r\n                >删除\r\n                </el-button>\r\n              </el-col>\r\n              <el-col :span=\"1.5\">\r\n                <el-button\r\n                  type=\"warning\"\r\n                  plain\r\n                  icon=\"el-icon-download\"\r\n                  size=\"mini\"\r\n                  @click=\"handleExport\"\r\n                  v-hasPermi=\"['school:cameras:export']\"\r\n                >导出\r\n                </el-button>\r\n              </el-col>\r\n              <right-toolbar :showSearch.sync=\"showSearch\" @queryTable=\"getList\"></right-toolbar>\r\n            </el-row>\r\n\r\n            <el-table v-loading=\"loading\" :data=\"camerasList\" @selection-change=\"handleSelectionChange\">\r\n              <el-table-column type=\"selection\" width=\"55\" align=\"center\"/>\r\n              <el-table-column label=\"id\" align=\"center\" prop=\"id\">\r\n              </el-table-column>\r\n              <el-table-column label=\"名称\" align=\"center\" prop=\"name\">\r\n              </el-table-column>\r\n              <el-table-column label=\"ip\" align=\"center\" prop=\"ip\">\r\n              </el-table-column>\r\n              <el-table-column label=\"端口\" align=\"center\" prop=\"port\">\r\n              </el-table-column>\r\n              <el-table-column label=\"用户名\" align=\"center\" prop=\"username\">\r\n              </el-table-column>\r\n              <el-table-column label=\"密码\" align=\"center\" prop=\"password\">\r\n              </el-table-column>\r\n              <el-table-column label=\"光电类型\" align=\"center\" prop=\"gdtype\">\r\n                <template slot-scope=\"scope\">\r\n                  <dict-tag :options=\"dict.type.camera_type\" :value=\"scope.row.gdtype\"/>\r\n                </template>\r\n              </el-table-column>\r\n              <el-table-column label=\"通道号\" align=\"center\" prop=\"channel\">\r\n              </el-table-column>\r\n              <el-table-column label=\"水平角\" align=\"center\" prop=\"pan\">\r\n              </el-table-column>\r\n              <el-table-column label=\"俯仰角\" align=\"center\" prop=\"tilt\">\r\n              </el-table-column>\r\n              <el-table-column label=\"焦距\" align=\"center\" prop=\"zoom\">\r\n              </el-table-column>\r\n              <el-table-column label=\"经度\" align=\"center\" prop=\"longitude\">\r\n              </el-table-column>\r\n              <el-table-column label=\"纬度\" align=\"center\" prop=\"latitude\">\r\n              </el-table-column>\r\n              <el-table-column label=\"高度\" align=\"center\" prop=\"altitude\">\r\n              </el-table-column>\r\n              <el-table-column label=\"操作\" align=\"center\" class-name=\"small-padding fixed-width\">\r\n                <template slot-scope=\"scope\">\r\n                  <el-button\r\n                    size=\"mini\"\r\n                    type=\"text\"\r\n                    icon=\"el-icon-edit\"\r\n                    @click=\"handleUpdate(scope.row)\"\r\n                    v-hasPermi=\"['school:cameras:edit']\"\r\n                  >修改\r\n                  </el-button>\r\n                  <el-button\r\n                    size=\"mini\"\r\n                    type=\"text\"\r\n                    icon=\"el-icon-delete\"\r\n                    @click=\"handleDelete(scope.row)\"\r\n                    v-hasPermi=\"['school:cameras:remove']\"\r\n                  >删除\r\n                  </el-button>\r\n                </template>\r\n              </el-table-column>\r\n            </el-table>\r\n\r\n            <pagination\r\n              v-show=\"total>0\"\r\n              :total=\"total\"\r\n              :page.sync=\"queryParams.pageNum\"\r\n              :limit.sync=\"queryParams.pageSize\"\r\n              @pagination=\"getList\"\r\n            />\r\n          </el-col>\r\n        </el-row>\r\n      </div>\r\n      <!-- 添加或修改相机设备对话框 -->\r\n      <el-dialog :title=\"title\" :visible.sync=\"open\" width=\"500px\" append-to-body>\r\n        <el-form ref=\"form\" :model=\"form\" :rules=\"rules\" label-width=\"80px\">\r\n          <el-form-item label=\"名称\" prop=\"name\">\r\n            <el-input v-model=\"form.name\" placeholder=\"请输入名称\"/>\r\n          </el-form-item>\r\n          <el-form-item label=\"ip\" prop=\"ip\">\r\n            <el-input v-model=\"form.ip\" placeholder=\"请输入ip\"/>\r\n          </el-form-item>\r\n          <el-form-item label=\"端口\" prop=\"port\">\r\n            <el-input v-model=\"form.port\" placeholder=\"请输入port\"/>\r\n          </el-form-item>\r\n          <el-form-item label=\"用户名\" prop=\"username\">\r\n            <el-input v-model=\"form.username\" placeholder=\"请输入用户名\"/>\r\n          </el-form-item>\r\n          <el-form-item label=\"密码\" prop=\"password\">\r\n            <el-input v-model=\"form.password\" placeholder=\"请输入密码\"/>\r\n          </el-form-item>\r\n          <el-form-item label=\"经度\" prop=\"longitude\">\r\n            <el-input v-model=\"form.longitude\" placeholder=\"请输入经度\"/>\r\n          </el-form-item>\r\n          <el-form-item label=\"纬度\" prop=\"latitude\">\r\n            <el-input v-model=\"form.latitude\" placeholder=\"请输入纬度\"/>\r\n          </el-form-item>\r\n          <el-form-item label=\"高度\" prop=\"altitude\">\r\n            <el-input v-model=\"form.altitude\" placeholder=\"请输入高度\"/>\r\n          </el-form-item>\r\n          <el-form-item label=\"光电类型\" prop=\"gdtype\">\r\n            <el-select v-model=\"form.gdtype\" placeholder=\"请选择光电类型\">\r\n              <el-option\r\n                v-for=\"dict in dict.type.camera_type\"\r\n                :key=\"dict.value\"\r\n                :label=\"dict.label\"\r\n                :value=\"dict.value\"\r\n              ></el-option>\r\n            </el-select>\r\n          </el-form-item>\r\n        </el-form>\r\n        <div slot=\"footer\" class=\"dialog-footer\">\r\n          <el-button type=\"primary\" @click=\"submitForm\">确 定</el-button>\r\n          <el-button @click=\"cancel\">取 消</el-button>\r\n        </div>\r\n      </el-dialog>\r\n    </el-card>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport {listCameras, getCameras, delCameras, addCameras, updateCameras} from \"@/api/device/cameras\";\r\nimport { deptTreeSelect } from \"@/api/system/user\";\r\nimport Treeselect from \"@riophae/vue-treeselect\";\r\nimport \"@riophae/vue-treeselect/dist/vue-treeselect.css\";\r\nexport default {\r\n  name: \"Cameras\",\r\n  dicts: [\"camera_type\",\"Treeselect\"],\r\n  data() {\r\n    return {\r\n      // 遮罩层\r\n      loading: true,\r\n      // 选中数组\r\n      ids: [],\r\n      // 非单个禁用\r\n      single: true,\r\n      // 非多个禁用\r\n      multiple: true,\r\n      // 显示搜索条件\r\n      showSearch: true,\r\n      // 总条数\r\n      total: 0,\r\n      // 相机设备表格数据\r\n      camerasList: [],\r\n      // 弹出层标题\r\n      title: \"\",\r\n      // 是否显示弹出层\r\n      open: false,\r\n      // 查询参数\r\n      queryParams: {\r\n        pageNum: 1,\r\n        pageSize: 10,\r\n        name: null,\r\n        ip: null,\r\n        port: null,\r\n        username: null,\r\n        password: null,\r\n        gdtype: null,\r\n        channel: null,\r\n        pan: null,\r\n        tilt: null,\r\n        longitude: null,\r\n        latitude: null,\r\n        altitude: null\r\n      },\r\n      // 表单参数\r\n      form: {},\r\n      // 表单校验\r\n      rules: {},\r\n      // 部门树选项\r\n      deptOptions: undefined,\r\n      // 部门名称\r\n      deptName: undefined,\r\n    };\r\n  },\r\n  watch: {\r\n    // 根据名称筛选部门树\r\n    deptName(val) {\r\n      this.$refs.tree.filter(val);\r\n    }\r\n  },\r\n  created() {\r\n    this.getList();\r\n    this.getDeptTree();\r\n  },\r\n  methods: {\r\n    /** 查询相机设备列表 */\r\n    getList() {\r\n      this.loading = true;\r\n      listCameras(this.queryParams).then(response => {\r\n        this.camerasList = response.rows;\r\n        this.total = response.total;\r\n        this.loading = false;\r\n      });\r\n    },\r\n    // 取消按钮\r\n    cancel() {\r\n      this.open = false;\r\n      this.reset();\r\n    },\r\n    // 表单重置\r\n    reset() {\r\n      this.form = {\r\n        id: null,\r\n        name: null,\r\n        ip: null,\r\n        port: null,\r\n        username: null,\r\n        password: null,\r\n        gdtype: null,\r\n        channel: null,\r\n        pan: null,\r\n        tilt: null,\r\n        longitude: null,\r\n        latitude: null,\r\n        altitude: null\r\n      };\r\n      this.resetForm(\"form\");\r\n    },\r\n    /** 搜索按钮操作 */\r\n    handleQuery() {\r\n      this.queryParams.pageNum = 1;\r\n      this.getList();\r\n    },\r\n    /** 重置按钮操作 */\r\n    resetQuery() {\r\n      this.resetForm(\"queryForm\");\r\n      this.handleQuery();\r\n    },\r\n    // 多选框选中数据\r\n    handleSelectionChange(selection) {\r\n      this.ids = selection.map(item => item.id)\r\n      this.single = selection.length !== 1\r\n      this.multiple = !selection.length\r\n    },\r\n    /** 新增按钮操作 */\r\n    handleAdd() {\r\n      this.reset();\r\n      this.open = true;\r\n      this.title = \"添加相机设备\";\r\n    },\r\n    /** 修改按钮操作 */\r\n    handleUpdate(row) {\r\n      this.reset();\r\n      const id = row.id || this.ids\r\n      getCameras(id).then(response => {\r\n        this.form = response.data;\r\n        this.open = true;\r\n        this.title = \"修改相机设备\";\r\n      });\r\n    },\r\n    /** 提交按钮 */\r\n    submitForm() {\r\n      this.$refs[\"form\"].validate(valid => {\r\n        if (valid) {\r\n          if (this.form.id != null) {\r\n            updateCameras(this.form).then(response => {\r\n              this.$modal.msgSuccess(\"修改成功\");\r\n              this.open = false;\r\n              this.getList();\r\n            });\r\n          } else {\r\n            addCameras(this.form).then(response => {\r\n              this.$modal.msgSuccess(\"新增成功\");\r\n              this.open = false;\r\n              this.getList();\r\n            });\r\n          }\r\n        }\r\n      });\r\n    },\r\n    /** 删除按钮操作 */\r\n    handleDelete(row) {\r\n      const ids = row.id || this.ids;\r\n      this.$modal.confirm('是否确认删除相机设备编号为\"' + ids + '\"的数据项?').then(function () {\r\n        return delCameras(ids);\r\n      }).then(() => {\r\n        this.getList();\r\n        this.$modal.msgSuccess(\"删除成功\");\r\n      }).catch(() => {\r\n      });\r\n    },\r\n    /** 导出按钮操作 */\r\n    handleExport() {\r\n      this.download('school/cameras/export', {\r\n        ...this.queryParams\r\n      }, `cameras_${new Date().getTime()}.xlsx`)\r\n    },\r\n    /** 查询部门下拉树结构 */\r\n    getDeptTree() {\r\n      deptTreeSelect().then(response => {\r\n        console.log(response)\r\n        this.deptOptions = response.data;\r\n      });\r\n    },\r\n    // 筛选节点\r\n    filterNode(value, data) {\r\n      if (!value) return true;\r\n      return data.label.indexOf(value) !== -1;\r\n    },\r\n    // 节点单击事件\r\n    handleNodeClick(data) {\r\n      console.log(data)\r\n      this.queryParams.deptId = data.id;\r\n      this.handleQuery();\r\n    },\r\n  }\r\n};\r\n</script>\r\n"]}]}