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