liujie 5 years ago
parent
commit
818e8cdef0
8 changed files with 167 additions and 116 deletions
  1. 2 2
      config/index.js
  2. BIN
      dist_ksh.zip
  3. 2 2
      src/components/Index.vue
  4. 1 1
      src/components/Login.vue
  5. 5 5
      src/main.js
  6. 3 3
      src/pages/EquipList.vue
  7. 148 97
      src/pages/Monitor.vue
  8. 6 6
      src/router/index.js

+ 2 - 2
config/index.js

@@ -12,8 +12,8 @@ module.exports = {
     assetsPublicPath: '/',
     assetsPublicPath: '/',
     proxyTable: {
     proxyTable: {
       '/api': {
       '/api': {
-        // target: 'http://192.168.1.8:8000/',
-        target: 'http://192.168.1.4:8000/',
+        target: 'http://192.168.1.8:8000/',
+        // target: 'http://192.168.1.4:8000/',
         changeOrigin: true,
         changeOrigin: true,
         pathRewrite: {
         pathRewrite: {
           '^/api': '' //重写接口
           '^/api': '' //重写接口

BIN
dist_ksh.zip


+ 2 - 2
src/components/Index.vue

@@ -30,7 +30,7 @@
         >
         >
           <el-menu-item index="/index/list1">
           <el-menu-item index="/index/list1">
             <i :class="iconObj[22]"></i>
             <i :class="iconObj[22]"></i>
-            <span slot="title">监控列表</span>
+            <span slot="title">设备列表</span>
           </el-menu-item>
           </el-menu-item>
           <el-menu-item index="/index/monitor1">
           <el-menu-item index="/index/monitor1">
             <i :class="iconObj[20]"></i>
             <i :class="iconObj[20]"></i>
@@ -68,7 +68,7 @@ export default {
     getUserInfo() {
     getUserInfo() {
       this.$axios({
       this.$axios({
         method: "POST",
         method: "POST",
-        url: "/api/logoheader",
+        url: "logoheader",
       }).then((res) => {
       }).then((res) => {
         this.header = res.data.header;
         this.header = res.data.header;
         this.logo = res.data.logo;
         this.logo = res.data.logo;

+ 1 - 1
src/components/Login.vue

@@ -71,7 +71,7 @@ export default {
 			}
 			}
 			this.$axios({
 			this.$axios({
 				method: 'POST',
 				method: 'POST',
-				url: '/api/login',
+				url: 'login',
 				data: this.qs.stringify({
 				data: this.qs.stringify({
 					username: this.username,
 					username: this.username,
 					password: this.pass
 					password: this.pass

+ 5 - 5
src/main.js

@@ -14,11 +14,11 @@ Vue.prototype.qs = qs //全局注册,使用方法为:this.qs
 
 
 Vue.use(ElementUI);
 Vue.use(ElementUI);
 
 
-// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
-// axios.defaults.timeout = 30000;
-// axios.defaults.baseURL = 'http://47.104.218.216:8006/' //线下杨明明
-// axios.defaults.withCredentials = true //axios请求时携带session
-// axios.defaults.crossDomain = true 
+axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
+axios.defaults.timeout = 30000;
+axios.defaults.baseURL = 'http://39.106.113.84:8000/' //线下杨明明
+axios.defaults.withCredentials = true //axios请求时携带session
+axios.defaults.crossDomain = true 
 
 
 Vue.config.productionTip = false
 Vue.config.productionTip = false
 
 

+ 3 - 3
src/pages/EquipList.vue

@@ -25,7 +25,7 @@
         <el-card class="box-card pad0">
         <el-card class="box-card pad0">
           <div class="img-box">
           <div class="img-box">
             <img src="@/assets/images/monitor/jkIconOn.png" />
             <img src="@/assets/images/monitor/jkIconOn.png" />
-            <p>监控设备</p>
+            <p>可视农业设备</p>
           </div>
           </div>
           <div class="detail">
           <div class="detail">
             <p>
             <p>
@@ -87,7 +87,7 @@ export default {
     getList() {
     getList() {
       this.$axios({
       this.$axios({
         method: "POST",
         method: "POST",
-        url: "/api/list_camera",
+        url: "list_camera",
         data: this.qs.stringify({
         data: this.qs.stringify({
           f_id: this.queryInfo.f_id,
           f_id: this.queryInfo.f_id,
           page: this.queryInfo.page,
           page: this.queryInfo.page,
@@ -116,7 +116,7 @@ export default {
           if (value) {
           if (value) {
             this.$axios({
             this.$axios({
               method: "POST",
               method: "POST",
-              url: "/api/equiplist",
+              url: "equiplist",
               data: this.qs.stringify({
               data: this.qs.stringify({
                 req: "rename",
                 req: "rename",
                 eid: id,
                 eid: id,

+ 148 - 97
src/pages/Monitor.vue

@@ -105,7 +105,9 @@
             v-for="(item, index) in Idlist"
             v-for="(item, index) in Idlist"
             :key="index"
             :key="index"
             :class="{ active: activeIndex == index }"
             :class="{ active: activeIndex == index }"
-            @click="selectEquip(item.device_id, item.jktype, index)"
+            @click="
+              selectEquip(item.device_id, item.jktype, index, item.videotape)
+            "
           >
           >
             <span
             <span
               :class="['dot', item.status == 1 ? 'onLine' : 'outLine']"
               :class="['dot', item.status == 1 ? 'onLine' : 'outLine']"
@@ -167,11 +169,11 @@
             ></span>
             ></span>
           </div>
           </div>
           <div
           <div
-            v-show="jktype == 1"
+            v-show="videotape == 1"
             class="playBack"
             class="playBack"
             @click="playBackDialogVisible = true"
             @click="playBackDialogVisible = true"
           ></div>
           ></div>
-          <div @click="addEquip()" class="addequip"></div>
+          <div @click="addEquipDialogVisible = true" class="addequip"></div>
           <div @click="fScreenFun()" class="fSBtn1"></div>
           <div @click="fScreenFun()" class="fSBtn1"></div>
         </div>
         </div>
       </div>
       </div>
@@ -212,11 +214,18 @@
           </el-date-picker>
           </el-date-picker>
         </el-form-item>
         </el-form-item>
         <el-form-item label="通道" prop="aisle">
         <el-form-item label="通道" prop="aisle">
-          <el-select v-model="backForm.aisle" placeholder="请选择">
-            <el-option label="通道一" value="1"> </el-option>
-            <el-option label="通道二" value="2"> </el-option>
-            <el-option label="通道三" value="3"> </el-option>
-            <el-option label="通道四" value="4"> </el-option>
+          <el-select
+            style="width: 400px"
+            v-model="backForm.aisle"
+            placeholder="请选择"
+          >
+            <el-option
+              v-for="item in Number(jktype)"
+              :key="item"
+              :label="'通道' + item"
+              :value="item"
+            >
+            </el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
         <el-form-item>
         <el-form-item>
@@ -230,10 +239,44 @@
         <div id="playWind"></div>
         <div id="playWind"></div>
       </div>
       </div>
     </el-dialog>
     </el-dialog>
+    <!-- 添加设备 -->
+    <el-dialog
+      title="添加设备"
+      :visible.sync="addEquipDialogVisible"
+      width="400px"
+    >
+      <el-form
+        ref="addEquipFormRef"
+        :model="addEquipForm"
+        :rules="addEquipFormRules"
+        label-width="80px"
+      >
+        <el-form-item label="设备id" prop="device_id">
+          <el-input
+            style="width: 217px"
+            v-model="addEquipForm.device_id"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="通道" prop="jk_type">
+          <el-select v-model="addEquipForm.jk_type" placeholder="请选择">
+            <el-option
+              v-for="item in 12"
+              :key="item"
+              :label="'通道' + item"
+              :value="item"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="addEquipDialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="addEquipSubm">确定</el-button>
+      </div>
+    </el-dialog>
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-// import "@/plugin/ezuikit.js";
 export default {
 export default {
   data() {
   data() {
     return {
     return {
@@ -242,7 +285,8 @@ export default {
       id: "", //监控选中状态selected,右侧菜单控制的ID
       id: "", //监控选中状态selected,右侧菜单控制的ID
       oneId: "", //单个监控全屏时的监控id
       oneId: "", //单个监控全屏时的监控id
       activeIndex: null, //控制设备列表选中状态
       activeIndex: null, //控制设备列表选中状态
-      jktype: "", //为1有回放,否则无回放
+      jktype: "", //设备的通道数
+      videotape: "", //0是不支持回放,1支持
       divNum: 1, //默认分屏数量
       divNum: 1, //默认分屏数量
       hlsHdSrc: "",
       hlsHdSrc: "",
       rtmpHdSrc: "",
       rtmpHdSrc: "",
@@ -255,6 +299,7 @@ export default {
       html: "", //插件播放内容
       html: "", //插件播放内容
       picUrl: "", //视频拍照地址
       picUrl: "", //视频拍照地址
       playBackDialogVisible: false,
       playBackDialogVisible: false,
+      addEquipDialogVisible: false,
       fScreen: false, //默认多个监控非全屏
       fScreen: false, //默认多个监控非全屏
       oneFScreen: false, //单个监控全屏状态
       oneFScreen: false, //单个监控全屏状态
       btnFlag: true, //全屏按钮显示控制
       btnFlag: true, //全屏按钮显示控制
@@ -270,17 +315,27 @@ export default {
         ],
         ],
         aisle: [{ required: true, message: "请选择通道", trigger: "change" }],
         aisle: [{ required: true, message: "请选择通道", trigger: "change" }],
       },
       },
+      addEquipFormRules: {
+        device_id: [
+          { required: true, message: "请填写设备id", trigger: "blur" },
+        ],
+        jk_type: [{ required: true, message: "请选择通道", trigger: "change" }],
+      },
       playback: {}, //回放
       playback: {}, //回放
       videoObj: {},
       videoObj: {},
+      addEquipForm: {
+        device_id: "",
+        jk_type: "",
+      },
     };
     };
   },
   },
   filters: {
   filters: {
     formatName: function (value) {
     formatName: function (value) {
       //设备名字
       //设备名字
       if (value.device_name) {
       if (value.device_name) {
-        return value.device_name;
+        return `${value.device_name}-${value.jktype}`;
       } else {
       } else {
-        return "设备" + value.device_id;
+        return `${value.device_id}-${value.jktype}`;
       }
       }
     },
     },
   },
   },
@@ -292,7 +347,7 @@ export default {
     getJkList() {
     getJkList() {
       this.$axios({
       this.$axios({
         method: "POST",
         method: "POST",
-        url: "/api/list_camera",
+        url: "list_camera",
         data: this.qs.stringify({ page: this.currPage }),
         data: this.qs.stringify({ page: this.currPage }),
       }).then((res) => {
       }).then((res) => {
         this.Idlist = res.data.data;
         this.Idlist = res.data.data;
@@ -303,7 +358,7 @@ export default {
     getJkList2() {
     getJkList2() {
       this.$axios({
       this.$axios({
         method: "POST",
         method: "POST",
-        url: "/api/list_camera",
+        url: "list_camera",
         data: this.qs.stringify({ page: this.currPage }),
         data: this.qs.stringify({ page: this.currPage }),
       }).then((res) => {
       }).then((res) => {
         this.Idlist = res.data.data;
         this.Idlist = res.data.data;
@@ -331,7 +386,7 @@ export default {
         if (ctrl == "takephoto") {
         if (ctrl == "takephoto") {
           this.$axios({
           this.$axios({
             method: "POST",
             method: "POST",
-            url: "/api/camera_takephoto",
+            url: "camera_takephoto",
             data: this.qs.stringify({
             data: this.qs.stringify({
               device_id: id,
               device_id: id,
               ctrl: ctrl,
               ctrl: ctrl,
@@ -349,7 +404,7 @@ export default {
           //上下左右、放大、缩小
           //上下左右、放大、缩小
           this.$axios({
           this.$axios({
             method: "POST",
             method: "POST",
-            url: "/api/ctrl_camera",
+            url: "ctrl_camera",
             data: this.qs.stringify({
             data: this.qs.stringify({
               device_id: id,
               device_id: id,
               ctrl: ctrl,
               ctrl: ctrl,
@@ -372,7 +427,7 @@ export default {
       if (id != "") {
       if (id != "") {
         this.$axios({
         this.$axios({
           method: "POST",
           method: "POST",
-          url: "/api/ctrl_camera",
+          url: "ctrl_camera",
           data: this.qs.stringify({
           data: this.qs.stringify({
             device_id: id,
             device_id: id,
             ctrl: "stop",
             ctrl: "stop",
@@ -388,9 +443,12 @@ export default {
         if (this.Idlist[item]) {
         if (this.Idlist[item]) {
           //避免右侧监控数量少于divNum
           //避免右侧监控数量少于divNum
           this.$axios({
           this.$axios({
-            url: "/api/addr_camera",
+            url: "addr_camera",
             method: "POST",
             method: "POST",
-            data: this.qs.stringify({ device_id: this.Idlist[item].device_id }),
+            data: this.qs.stringify({
+              device_id: this.Idlist[item].device_id,
+              jk_type: this.Idlist[item].jktype,
+            }),
           }).then((res) => {
           }).then((res) => {
             var data = eval("(" + res.data + ")");
             var data = eval("(" + res.data + ")");
             var hlsHdSrc = data.hlsHd;
             var hlsHdSrc = data.hlsHd;
@@ -413,8 +471,7 @@ export default {
       }
       }
     },
     },
     //选中右侧菜单设备
     //选中右侧菜单设备
-    selectEquip(device_id, jktype, index) {
-      console.log(jktype);
+    selectEquip(device_id, jktype, index, videotape) {
       if (this.selected !== "") {
       if (this.selected !== "") {
         //判断是否选中左侧监控
         //判断是否选中左侧监控
         document
         document
@@ -424,11 +481,12 @@ export default {
         this.jktype = jktype;
         this.jktype = jktype;
         this.activeIndex = index; //菜单选中状态
         this.activeIndex = index; //菜单选中状态
         this.id = device_id; //保存选中的设备id
         this.id = device_id; //保存选中的设备id
+        this.videotape = videotape;
         console.log(this.divName);
         console.log(this.divName);
         this.$axios({
         this.$axios({
-          url: "/api/addr_camera",
+          url: "addr_camera",
           method: "POST",
           method: "POST",
-          data: this.qs.stringify({ device_id: device_id }),
+          data: this.qs.stringify({ device_id: device_id, jk_type: jktype }),
         }).then((res) => {
         }).then((res) => {
           var data = eval("(" + res.data + ")");
           var data = eval("(" + res.data + ")");
           let hlsHdSrc = data.hlsHd;
           let hlsHdSrc = data.hlsHd;
@@ -477,32 +535,6 @@ export default {
         message: "手动复制,在浏览器打开,另存为",
         message: "手动复制,在浏览器打开,另存为",
       });
       });
     },
     },
-    //添加设备
-    addEquip() {
-      this.$prompt("添加设备id", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-      })
-        .then(({ value }) => {
-          this.$axios({
-            method: "POST",
-            url: "/api/add_camera",
-            data: this.qs.stringify({ device_id: value }),
-          }).then((res) => {
-            if (res.data == 1) {
-              this.getJkList();
-            } else {
-              this.$message.error(res.data);
-            }
-          });
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: "取消添加",
-          });
-        });
-    },
     fScreenFun() {
     fScreenFun() {
       this.fScreen = !this.fScreen;
       this.fScreen = !this.fScreen;
     },
     },
@@ -527,54 +559,54 @@ export default {
         if (!valid) {
         if (!valid) {
           return false;
           return false;
         }
         }
-      });
-      let start = new Date(this.backForm.time[0]);
-      let end = new Date(this.backForm.time[1]);
-      let beginVal = "";
-      let endVal = "";
-      function checked(num) {
-        if (num < 10) {
-          num = "0" + num;
-        }
-        return num;
-      }
-      beginVal =
-        beginVal +
-        start.getFullYear() +
-        checked(start.getMonth() + 1) +
-        checked(start.getDate()) +
-        checked(start.getHours()) +
-        checked(start.getMinutes()) +
-        checked(start.getSeconds());
-      endVal =
-        endVal +
-        end.getFullYear() +
-        checked(end.getMonth() + 1) +
-        checked(end.getDate()) +
-        checked(end.getHours()) +
-        checked(end.getMinutes()) +
-        checked(end.getSeconds());
-      this.$axios({
-        method: "POST",
-        url: "/api/nvr_view",
-        data: this.qs.stringify({
-          e_id: this.id,
-        }),
-      }).then((res) => {
-        if (!document.getElementById("playWind")) {
-          document.getElementById("videoBack").innerHTML =
-            '<div id="playWind"></div>';
-        }
-        let accessToken = res.data.jk_token;
-        let url = `ezopen://open.ys7.com/${this.id}/${this.backForm.aisle}.local.rec?begin=${beginVal}&end=${endVal}`;
-        this.playback = new EZUIKit.EZUIPlayer({
-          id: "playWind",
-          autoplay: true,
-          url: url,
-          accessToken: accessToken,
-          decoderPath: "static/js/",
-          width: 560,
-          height: 460,
+        let start = new Date(this.backForm.time[0]);
+        let end = new Date(this.backForm.time[1]);
+        let beginVal = "";
+        let endVal = "";
+        function checked(num) {
+          if (num < 10) {
+            num = "0" + num;
+          }
+          return num;
+        }
+        beginVal =
+          beginVal +
+          start.getFullYear() +
+          checked(start.getMonth() + 1) +
+          checked(start.getDate()) +
+          checked(start.getHours()) +
+          checked(start.getMinutes()) +
+          checked(start.getSeconds());
+        endVal =
+          endVal +
+          end.getFullYear() +
+          checked(end.getMonth() + 1) +
+          checked(end.getDate()) +
+          checked(end.getHours()) +
+          checked(end.getMinutes()) +
+          checked(end.getSeconds());
+        this.$axios({
+          method: "POST",
+          url: "nvr_view",
+          data: this.qs.stringify({
+            e_id: this.id,
+          }),
+        }).then((res) => {
+          if (!document.getElementById("playWind")) {
+            document.getElementById("videoBack").innerHTML =
+              '<div id="playWind"></div>';
+          }
+          let accessToken = res.data.jk_token;
+          let url = `ezopen://open.ys7.com/${this.id}/${this.backForm.aisle}.local.rec?begin=${beginVal}&end=${endVal}`;
+          this.playback = new EZUIKit.EZUIPlayer({
+            id: "playWind",
+            autoplay: true,
+            url: url,
+            accessToken: accessToken,
+            decoderPath: "static/js/",
+            width: 560,
+            height: 460,
+          });
         });
         });
       });
       });
     },
     },
@@ -583,6 +615,25 @@ export default {
       this.playback.stop();
       this.playback.stop();
       document.getElementById("videoBack").innerHTML = "";
       document.getElementById("videoBack").innerHTML = "";
     },
     },
+    addEquipSubm() {
+      this.$refs.addEquipFormRef.validate((valid) => {
+        if (!valid) {
+          return false;
+        }
+        this.$axios({
+          method: "POST",
+          url: "add_camera",
+          data: this.qs.stringify(this.addEquipForm),
+        }).then((res) => {
+          if (res.data == 1) {
+            this.addEquipDialogVisible=false
+            this.getJkList();
+          } else {
+            this.$message.error(res.data);
+          }
+        });
+      });
+    },
   },
   },
   destroyed() {
   destroyed() {
     for (let item in this.videoObj) {
     for (let item in this.videoObj) {

+ 6 - 6
src/router/index.js

@@ -1,6 +1,6 @@
 import Vue from 'vue'
 import Vue from 'vue'
 import Router from 'vue-router'
 import Router from 'vue-router'
-const Login = () => import('@/components/Login')
+// const Login = () => import('@/components/Login')
 const Index = () => import('@/components/Index')
 const Index = () => import('@/components/Index')
 const Monitor = () => import('@/pages/Monitor')
 const Monitor = () => import('@/pages/Monitor')
 const EquipList = () => import('@/pages/EquipList')
 const EquipList = () => import('@/pages/EquipList')
@@ -9,12 +9,12 @@ Vue.use(Router)
 export default new Router({
 export default new Router({
   routes: [{
   routes: [{
       path: '',
       path: '',
-      redirect: '/index/list'
-    },
-    {
-      path: '/login',
-      component: Login
+      redirect: '/index/list1'
     },
     },
+    // {
+    //   path: '/login',
+    //   component: Login
+    // },
     {
     {
       path: '/index',
       path: '/index',
       component: Index,
       component: Index,