diff --git a/src/App.vue b/src/App.vue index 793a7ba..213d023 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,7 +16,8 @@ import TopMenu1 from './components/TopMenu1' import TopMenu2 from './components/TopMenu2' import TopMenu3 from './components/TopMenu3' - +import { getVideoTree } from "@/api/common"; +import { mapGetters } from 'vuex' export default { name: 'App', data () { @@ -30,6 +31,7 @@ TopMenu3 }, computed: { + ...mapGetters(['treeCode']), showLoading () { return this.$store.state.showLoading }, @@ -58,6 +60,25 @@ }, methods: { + }, + created() { + console.log("准备获取树资源"); + getVideoTree() + .then(res => { + const treeCode = res.data.list; + // 把数据保存到仓库中 + this.$store.commit('SET_TREE_CODE', treeCode) + // console.log(treeCode, 'treeCode') + // 获取资源数下监控点位列表 + // getVideoPonit({ + // treeCode: treeCode[0].treeCode, + // pageNo: '1', + // pageSize: 50 + // }).then(res => { + // console.log(res.data, '树资源下监控点位列表') + + // }) + }) } } diff --git a/src/App.vue b/src/App.vue index 793a7ba..213d023 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,7 +16,8 @@ import TopMenu1 from './components/TopMenu1' import TopMenu2 from './components/TopMenu2' import TopMenu3 from './components/TopMenu3' - +import { getVideoTree } from "@/api/common"; +import { mapGetters } from 'vuex' export default { name: 'App', data () { @@ -30,6 +31,7 @@ TopMenu3 }, computed: { + ...mapGetters(['treeCode']), showLoading () { return this.$store.state.showLoading }, @@ -58,6 +60,25 @@ }, methods: { + }, + created() { + console.log("准备获取树资源"); + getVideoTree() + .then(res => { + const treeCode = res.data.list; + // 把数据保存到仓库中 + this.$store.commit('SET_TREE_CODE', treeCode) + // console.log(treeCode, 'treeCode') + // 获取资源数下监控点位列表 + // getVideoPonit({ + // treeCode: treeCode[0].treeCode, + // pageNo: '1', + // pageSize: 50 + // }).then(res => { + // console.log(res.data, '树资源下监控点位列表') + + // }) + }) } } diff --git a/src/api/common.js b/src/api/common.js index 65d7537..209aca4 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -1,5 +1,6 @@ import request from '@/utils/request' import config from '@/utils/baseConfig' +import request1 from '@/utils/request1' // 通用接口, 涉及到直接调用大数据平台的调用此接口 // 1130 一卡通个人注册总数 @@ -18,3 +19,54 @@ } }) } + + +// 获取监控树资源 +export function getVideoTree() { + return request1({ + url: '/hik/route/allTreeCode', + method: 'post', + }) +} +// 根据区域编号获取下一级区域列表 -》 +export function getVideoTreeChild(data) { + return request1({ + url: '/hik/route/subRegions', + method: 'post', + data + }) +} +// 根据区域编号获取下级监控点列表 -》 +export function getVideoTreeChildPonit(data) { + return request1({ + url: '/hik/route/cameras', + method: 'post', + data + }) +} +// 获取树资源下的监控点资源 +export function getVideoPonit(data) { + return request1({ + url: '/hik/route/camerasPage', + method: 'post', + data + }) +} +// 获取视频 +export function getRealVideo(data) { + return request1({ + url: '/hik/route/preview', + method: 'post', + data + }) +} +// 获取回放视频 +export function getBackVideo(data) { + return request1({ + url: '/hik/route/playback', + method: 'post', + data + }) +} + + diff --git a/src/App.vue b/src/App.vue index 793a7ba..213d023 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,7 +16,8 @@ import TopMenu1 from './components/TopMenu1' import TopMenu2 from './components/TopMenu2' import TopMenu3 from './components/TopMenu3' - +import { getVideoTree } from "@/api/common"; +import { mapGetters } from 'vuex' export default { name: 'App', data () { @@ -30,6 +31,7 @@ TopMenu3 }, computed: { + ...mapGetters(['treeCode']), showLoading () { return this.$store.state.showLoading }, @@ -58,6 +60,25 @@ }, methods: { + }, + created() { + console.log("准备获取树资源"); + getVideoTree() + .then(res => { + const treeCode = res.data.list; + // 把数据保存到仓库中 + this.$store.commit('SET_TREE_CODE', treeCode) + // console.log(treeCode, 'treeCode') + // 获取资源数下监控点位列表 + // getVideoPonit({ + // treeCode: treeCode[0].treeCode, + // pageNo: '1', + // pageSize: 50 + // }).then(res => { + // console.log(res.data, '树资源下监控点位列表') + + // }) + }) } } diff --git a/src/api/common.js b/src/api/common.js index 65d7537..209aca4 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -1,5 +1,6 @@ import request from '@/utils/request' import config from '@/utils/baseConfig' +import request1 from '@/utils/request1' // 通用接口, 涉及到直接调用大数据平台的调用此接口 // 1130 一卡通个人注册总数 @@ -18,3 +19,54 @@ } }) } + + +// 获取监控树资源 +export function getVideoTree() { + return request1({ + url: '/hik/route/allTreeCode', + method: 'post', + }) +} +// 根据区域编号获取下一级区域列表 -》 +export function getVideoTreeChild(data) { + return request1({ + url: '/hik/route/subRegions', + method: 'post', + data + }) +} +// 根据区域编号获取下级监控点列表 -》 +export function getVideoTreeChildPonit(data) { + return request1({ + url: '/hik/route/cameras', + method: 'post', + data + }) +} +// 获取树资源下的监控点资源 +export function getVideoPonit(data) { + return request1({ + url: '/hik/route/camerasPage', + method: 'post', + data + }) +} +// 获取视频 +export function getRealVideo(data) { + return request1({ + url: '/hik/route/preview', + method: 'post', + data + }) +} +// 获取回放视频 +export function getBackVideo(data) { + return request1({ + url: '/hik/route/playback', + method: 'post', + data + }) +} + + diff --git a/src/store/index.js b/src/store/index.js index bde229b..8bec1dd 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -46,12 +46,16 @@ menuTreeSL: menuTree(), // 1411双屏当前屏幕 doubleScreen: 'baidu', - showLoading: false + showLoading: false, + treeCode: [], }, // 相当于computed getters: { showLoading (state) { return state.showLoading + }, + treeCode() { + return state.treeCode } }, // 方法,改变state状态 @@ -151,6 +155,9 @@ // 切换doubleScreen CHANGE_DOUBLE_SCREEN (state, params) { state.doubleScreen = params + }, + SET_TREE_CODE: (state, data) => { + state.treeCode = data; } }, // 提交 mutation @@ -172,6 +179,9 @@ }, changeDoubleScreen: ({ commit }, params) => { commit('CHANGE_DOUBLE_SCREEN', params) + }, + setTreeCode() { + commit("SET_TREE_CODE", data); } } }) diff --git a/src/App.vue b/src/App.vue index 793a7ba..213d023 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,7 +16,8 @@ import TopMenu1 from './components/TopMenu1' import TopMenu2 from './components/TopMenu2' import TopMenu3 from './components/TopMenu3' - +import { getVideoTree } from "@/api/common"; +import { mapGetters } from 'vuex' export default { name: 'App', data () { @@ -30,6 +31,7 @@ TopMenu3 }, computed: { + ...mapGetters(['treeCode']), showLoading () { return this.$store.state.showLoading }, @@ -58,6 +60,25 @@ }, methods: { + }, + created() { + console.log("准备获取树资源"); + getVideoTree() + .then(res => { + const treeCode = res.data.list; + // 把数据保存到仓库中 + this.$store.commit('SET_TREE_CODE', treeCode) + // console.log(treeCode, 'treeCode') + // 获取资源数下监控点位列表 + // getVideoPonit({ + // treeCode: treeCode[0].treeCode, + // pageNo: '1', + // pageSize: 50 + // }).then(res => { + // console.log(res.data, '树资源下监控点位列表') + + // }) + }) } } diff --git a/src/api/common.js b/src/api/common.js index 65d7537..209aca4 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -1,5 +1,6 @@ import request from '@/utils/request' import config from '@/utils/baseConfig' +import request1 from '@/utils/request1' // 通用接口, 涉及到直接调用大数据平台的调用此接口 // 1130 一卡通个人注册总数 @@ -18,3 +19,54 @@ } }) } + + +// 获取监控树资源 +export function getVideoTree() { + return request1({ + url: '/hik/route/allTreeCode', + method: 'post', + }) +} +// 根据区域编号获取下一级区域列表 -》 +export function getVideoTreeChild(data) { + return request1({ + url: '/hik/route/subRegions', + method: 'post', + data + }) +} +// 根据区域编号获取下级监控点列表 -》 +export function getVideoTreeChildPonit(data) { + return request1({ + url: '/hik/route/cameras', + method: 'post', + data + }) +} +// 获取树资源下的监控点资源 +export function getVideoPonit(data) { + return request1({ + url: '/hik/route/camerasPage', + method: 'post', + data + }) +} +// 获取视频 +export function getRealVideo(data) { + return request1({ + url: '/hik/route/preview', + method: 'post', + data + }) +} +// 获取回放视频 +export function getBackVideo(data) { + return request1({ + url: '/hik/route/playback', + method: 'post', + data + }) +} + + diff --git a/src/store/index.js b/src/store/index.js index bde229b..8bec1dd 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -46,12 +46,16 @@ menuTreeSL: menuTree(), // 1411双屏当前屏幕 doubleScreen: 'baidu', - showLoading: false + showLoading: false, + treeCode: [], }, // 相当于computed getters: { showLoading (state) { return state.showLoading + }, + treeCode() { + return state.treeCode } }, // 方法,改变state状态 @@ -151,6 +155,9 @@ // 切换doubleScreen CHANGE_DOUBLE_SCREEN (state, params) { state.doubleScreen = params + }, + SET_TREE_CODE: (state, data) => { + state.treeCode = data; } }, // 提交 mutation @@ -172,6 +179,9 @@ }, changeDoubleScreen: ({ commit }, params) => { commit('CHANGE_DOUBLE_SCREEN', params) + }, + setTreeCode() { + commit("SET_TREE_CODE", data); } } }) diff --git a/src/utils/fetchAll.js b/src/utils/fetchAll.js new file mode 100644 index 0000000..afba757 --- /dev/null +++ b/src/utils/fetchAll.js @@ -0,0 +1,44 @@ +import request1 from "@/utils/request1"; +async function fetchAllData(total, pageNo1, pageSize, url, data) { + try { + // 如果总条数小于等于每页条数,直接返回第一页数据 + if (Number(total) <= Number(pageSize)) { + return []; + } + + // 2. 计算需要请求的总页数 + const totalPages = Math.ceil(Number(total) / 50); + + // 3. 循环请求剩余页数的数据(从第2页开始) + const fetchPromises = []; + for (let pageNo = pageNo1; pageNo <= totalPages; pageNo++) { + fetchPromises.push( + // fetch(`/api/data?pageNo=${pageNo}&pageSize=50`) + // .then(res => { + // if (!res.ok) { + // throw new Error(`第${pageNo}页请求失败: ${res.status}`); + // } + // return res.json(); + // }) + // .then(data => data.list) + request1({ + url: url, + method: "post", + data: { + ...data, + pageNo: pageNo, + pageSize: pageSize + } + }) + ); + } + + // 4. 等待所有请求完成,合并数据 + const remainingData = await Promise.all(fetchPromises); + return [ ...remainingData.flat()] + } catch (error) { + console.error("获取数据失败:", error); + throw error; // 抛出错误供调用者处理 + } +} +export default fetchAllData; diff --git a/src/App.vue b/src/App.vue index 793a7ba..213d023 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,7 +16,8 @@ import TopMenu1 from './components/TopMenu1' import TopMenu2 from './components/TopMenu2' import TopMenu3 from './components/TopMenu3' - +import { getVideoTree } from "@/api/common"; +import { mapGetters } from 'vuex' export default { name: 'App', data () { @@ -30,6 +31,7 @@ TopMenu3 }, computed: { + ...mapGetters(['treeCode']), showLoading () { return this.$store.state.showLoading }, @@ -58,6 +60,25 @@ }, methods: { + }, + created() { + console.log("准备获取树资源"); + getVideoTree() + .then(res => { + const treeCode = res.data.list; + // 把数据保存到仓库中 + this.$store.commit('SET_TREE_CODE', treeCode) + // console.log(treeCode, 'treeCode') + // 获取资源数下监控点位列表 + // getVideoPonit({ + // treeCode: treeCode[0].treeCode, + // pageNo: '1', + // pageSize: 50 + // }).then(res => { + // console.log(res.data, '树资源下监控点位列表') + + // }) + }) } } diff --git a/src/api/common.js b/src/api/common.js index 65d7537..209aca4 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -1,5 +1,6 @@ import request from '@/utils/request' import config from '@/utils/baseConfig' +import request1 from '@/utils/request1' // 通用接口, 涉及到直接调用大数据平台的调用此接口 // 1130 一卡通个人注册总数 @@ -18,3 +19,54 @@ } }) } + + +// 获取监控树资源 +export function getVideoTree() { + return request1({ + url: '/hik/route/allTreeCode', + method: 'post', + }) +} +// 根据区域编号获取下一级区域列表 -》 +export function getVideoTreeChild(data) { + return request1({ + url: '/hik/route/subRegions', + method: 'post', + data + }) +} +// 根据区域编号获取下级监控点列表 -》 +export function getVideoTreeChildPonit(data) { + return request1({ + url: '/hik/route/cameras', + method: 'post', + data + }) +} +// 获取树资源下的监控点资源 +export function getVideoPonit(data) { + return request1({ + url: '/hik/route/camerasPage', + method: 'post', + data + }) +} +// 获取视频 +export function getRealVideo(data) { + return request1({ + url: '/hik/route/preview', + method: 'post', + data + }) +} +// 获取回放视频 +export function getBackVideo(data) { + return request1({ + url: '/hik/route/playback', + method: 'post', + data + }) +} + + diff --git a/src/store/index.js b/src/store/index.js index bde229b..8bec1dd 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -46,12 +46,16 @@ menuTreeSL: menuTree(), // 1411双屏当前屏幕 doubleScreen: 'baidu', - showLoading: false + showLoading: false, + treeCode: [], }, // 相当于computed getters: { showLoading (state) { return state.showLoading + }, + treeCode() { + return state.treeCode } }, // 方法,改变state状态 @@ -151,6 +155,9 @@ // 切换doubleScreen CHANGE_DOUBLE_SCREEN (state, params) { state.doubleScreen = params + }, + SET_TREE_CODE: (state, data) => { + state.treeCode = data; } }, // 提交 mutation @@ -172,6 +179,9 @@ }, changeDoubleScreen: ({ commit }, params) => { commit('CHANGE_DOUBLE_SCREEN', params) + }, + setTreeCode() { + commit("SET_TREE_CODE", data); } } }) diff --git a/src/utils/fetchAll.js b/src/utils/fetchAll.js new file mode 100644 index 0000000..afba757 --- /dev/null +++ b/src/utils/fetchAll.js @@ -0,0 +1,44 @@ +import request1 from "@/utils/request1"; +async function fetchAllData(total, pageNo1, pageSize, url, data) { + try { + // 如果总条数小于等于每页条数,直接返回第一页数据 + if (Number(total) <= Number(pageSize)) { + return []; + } + + // 2. 计算需要请求的总页数 + const totalPages = Math.ceil(Number(total) / 50); + + // 3. 循环请求剩余页数的数据(从第2页开始) + const fetchPromises = []; + for (let pageNo = pageNo1; pageNo <= totalPages; pageNo++) { + fetchPromises.push( + // fetch(`/api/data?pageNo=${pageNo}&pageSize=50`) + // .then(res => { + // if (!res.ok) { + // throw new Error(`第${pageNo}页请求失败: ${res.status}`); + // } + // return res.json(); + // }) + // .then(data => data.list) + request1({ + url: url, + method: "post", + data: { + ...data, + pageNo: pageNo, + pageSize: pageSize + } + }) + ); + } + + // 4. 等待所有请求完成,合并数据 + const remainingData = await Promise.all(fetchPromises); + return [ ...remainingData.flat()] + } catch (error) { + console.error("获取数据失败:", error); + throw error; // 抛出错误供调用者处理 + } +} +export default fetchAllData; diff --git a/src/utils/request1.js b/src/utils/request1.js new file mode 100644 index 0000000..559b4f2 --- /dev/null +++ b/src/utils/request1.js @@ -0,0 +1,69 @@ +import axios from 'axios' +import store from '@/store' +import router from '@/router' +import { getToken } from '@/utils/auth' + +const service = axios.create({ + baseURL: 'http://11.100.6.149:8083/monitor2/', + // withCredentials: false, // send cookies when cross-domain requests + timeout: 30000 * 10 // request timeout +}) + +// 请求拦截 +service.interceptors.request.use( + config => { + // let url = config.url + // store.dispatch('showloader'); + config.headers['Content-Type'] = 'application/json;charset=UTF-8' + + // let token = getToken(); + // if (config.url.indexOf('/videoService/accounts/authorize') != -1) { + // config.headers['X-Subject-Token'] = token + // } + if (config.method === 'get') { + // config.params = { + // _t: Date.parse(new Date()) / 1000, + // ...config.params + // } + } + return config + }, + error => { + console.log(error) // for debug + return Promise.reject(error) + } +) + +// 响应拦截器 +service.interceptors.response.use( + response => { + store.dispatch('hideloader') + + const res = response.data + switch (res.status) { + case 1000: // 登陆过期 + localStorage.clear() + // Toast.message('登陆失效,请重新登陆'); + router.replace('/login') + break + case 999: // 用户不存在 + localStorage.clear() + router.replace('/login') + // Toast.message(res.msg); + break + case 997: // 用户冻结 + router.replace('/login') + // Toast.message(res.msg); + break + } + return res + }, + error => { + store.dispatch('hideloader') + console.log('err' + error) // for debug + // Toast.message('网络错误'); + return Promise.reject(error) + } +) + +export default service diff --git a/src/App.vue b/src/App.vue index 793a7ba..213d023 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,7 +16,8 @@ import TopMenu1 from './components/TopMenu1' import TopMenu2 from './components/TopMenu2' import TopMenu3 from './components/TopMenu3' - +import { getVideoTree } from "@/api/common"; +import { mapGetters } from 'vuex' export default { name: 'App', data () { @@ -30,6 +31,7 @@ TopMenu3 }, computed: { + ...mapGetters(['treeCode']), showLoading () { return this.$store.state.showLoading }, @@ -58,6 +60,25 @@ }, methods: { + }, + created() { + console.log("准备获取树资源"); + getVideoTree() + .then(res => { + const treeCode = res.data.list; + // 把数据保存到仓库中 + this.$store.commit('SET_TREE_CODE', treeCode) + // console.log(treeCode, 'treeCode') + // 获取资源数下监控点位列表 + // getVideoPonit({ + // treeCode: treeCode[0].treeCode, + // pageNo: '1', + // pageSize: 50 + // }).then(res => { + // console.log(res.data, '树资源下监控点位列表') + + // }) + }) } } diff --git a/src/api/common.js b/src/api/common.js index 65d7537..209aca4 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -1,5 +1,6 @@ import request from '@/utils/request' import config from '@/utils/baseConfig' +import request1 from '@/utils/request1' // 通用接口, 涉及到直接调用大数据平台的调用此接口 // 1130 一卡通个人注册总数 @@ -18,3 +19,54 @@ } }) } + + +// 获取监控树资源 +export function getVideoTree() { + return request1({ + url: '/hik/route/allTreeCode', + method: 'post', + }) +} +// 根据区域编号获取下一级区域列表 -》 +export function getVideoTreeChild(data) { + return request1({ + url: '/hik/route/subRegions', + method: 'post', + data + }) +} +// 根据区域编号获取下级监控点列表 -》 +export function getVideoTreeChildPonit(data) { + return request1({ + url: '/hik/route/cameras', + method: 'post', + data + }) +} +// 获取树资源下的监控点资源 +export function getVideoPonit(data) { + return request1({ + url: '/hik/route/camerasPage', + method: 'post', + data + }) +} +// 获取视频 +export function getRealVideo(data) { + return request1({ + url: '/hik/route/preview', + method: 'post', + data + }) +} +// 获取回放视频 +export function getBackVideo(data) { + return request1({ + url: '/hik/route/playback', + method: 'post', + data + }) +} + + diff --git a/src/store/index.js b/src/store/index.js index bde229b..8bec1dd 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -46,12 +46,16 @@ menuTreeSL: menuTree(), // 1411双屏当前屏幕 doubleScreen: 'baidu', - showLoading: false + showLoading: false, + treeCode: [], }, // 相当于computed getters: { showLoading (state) { return state.showLoading + }, + treeCode() { + return state.treeCode } }, // 方法,改变state状态 @@ -151,6 +155,9 @@ // 切换doubleScreen CHANGE_DOUBLE_SCREEN (state, params) { state.doubleScreen = params + }, + SET_TREE_CODE: (state, data) => { + state.treeCode = data; } }, // 提交 mutation @@ -172,6 +179,9 @@ }, changeDoubleScreen: ({ commit }, params) => { commit('CHANGE_DOUBLE_SCREEN', params) + }, + setTreeCode() { + commit("SET_TREE_CODE", data); } } }) diff --git a/src/utils/fetchAll.js b/src/utils/fetchAll.js new file mode 100644 index 0000000..afba757 --- /dev/null +++ b/src/utils/fetchAll.js @@ -0,0 +1,44 @@ +import request1 from "@/utils/request1"; +async function fetchAllData(total, pageNo1, pageSize, url, data) { + try { + // 如果总条数小于等于每页条数,直接返回第一页数据 + if (Number(total) <= Number(pageSize)) { + return []; + } + + // 2. 计算需要请求的总页数 + const totalPages = Math.ceil(Number(total) / 50); + + // 3. 循环请求剩余页数的数据(从第2页开始) + const fetchPromises = []; + for (let pageNo = pageNo1; pageNo <= totalPages; pageNo++) { + fetchPromises.push( + // fetch(`/api/data?pageNo=${pageNo}&pageSize=50`) + // .then(res => { + // if (!res.ok) { + // throw new Error(`第${pageNo}页请求失败: ${res.status}`); + // } + // return res.json(); + // }) + // .then(data => data.list) + request1({ + url: url, + method: "post", + data: { + ...data, + pageNo: pageNo, + pageSize: pageSize + } + }) + ); + } + + // 4. 等待所有请求完成,合并数据 + const remainingData = await Promise.all(fetchPromises); + return [ ...remainingData.flat()] + } catch (error) { + console.error("获取数据失败:", error); + throw error; // 抛出错误供调用者处理 + } +} +export default fetchAllData; diff --git a/src/utils/request1.js b/src/utils/request1.js new file mode 100644 index 0000000..559b4f2 --- /dev/null +++ b/src/utils/request1.js @@ -0,0 +1,69 @@ +import axios from 'axios' +import store from '@/store' +import router from '@/router' +import { getToken } from '@/utils/auth' + +const service = axios.create({ + baseURL: 'http://11.100.6.149:8083/monitor2/', + // withCredentials: false, // send cookies when cross-domain requests + timeout: 30000 * 10 // request timeout +}) + +// 请求拦截 +service.interceptors.request.use( + config => { + // let url = config.url + // store.dispatch('showloader'); + config.headers['Content-Type'] = 'application/json;charset=UTF-8' + + // let token = getToken(); + // if (config.url.indexOf('/videoService/accounts/authorize') != -1) { + // config.headers['X-Subject-Token'] = token + // } + if (config.method === 'get') { + // config.params = { + // _t: Date.parse(new Date()) / 1000, + // ...config.params + // } + } + return config + }, + error => { + console.log(error) // for debug + return Promise.reject(error) + } +) + +// 响应拦截器 +service.interceptors.response.use( + response => { + store.dispatch('hideloader') + + const res = response.data + switch (res.status) { + case 1000: // 登陆过期 + localStorage.clear() + // Toast.message('登陆失效,请重新登陆'); + router.replace('/login') + break + case 999: // 用户不存在 + localStorage.clear() + router.replace('/login') + // Toast.message(res.msg); + break + case 997: // 用户冻结 + router.replace('/login') + // Toast.message(res.msg); + break + } + return res + }, + error => { + store.dispatch('hideloader') + console.log('err' + error) // for debug + // Toast.message('网络错误'); + return Promise.reject(error) + } +) + +export default service diff --git a/src/views/mapViews/mars3dMap.vue b/src/views/mapViews/mars3dMap.vue index 25c2bf5..98713c2 100644 --- a/src/views/mapViews/mars3dMap.vue +++ b/src/views/mapViews/mars3dMap.vue @@ -16,7 +16,7 @@
- {{value.name}}
+ {{value.name}}
@@ -52,11 +52,21 @@
-
+ + +
+
+ 关闭 + + +
@@ -88,6 +98,8 @@ import buildingPopulation from './components/population/buildingPopulation.vue' import { formatDateDefault } from '../../utils' import mapKey from '../../../static/map.json' +import fetchAllData from '@/utils/fetchAll' +import { getVideoPonit, getRealVideo } from '@/api/common' // 导入必须的样式表 var Cesium = require('../../../node_modules/cesium/Source/Cesium') export default { @@ -109,6 +121,8 @@ videoTimer: null, // 视频定时器 videoCount: 60, // 倒计时 videoShow: false, // 视频的显示 + videoShow1: false, + videoUrl1: '', player: null, // 播放器1 currentPlayer: 'player', // 当前切换palyer layersShow: [false, false, false, false, false, false, false, false], @@ -204,7 +218,8 @@ index: '', name: '视频云', children: [ - {index: '31', name: '智慧交通', children: ['卡口', '电警', 'AR鹰眼']}, + // {index: '31', name: '智慧交通', children: ['卡口', '电警', 'AR鹰眼']}, + {index: '31', name: '智慧交通'}, {index: '32', name: '智慧工地', children: []}, {index: '33', name: '智慧社区', children: []}, {index: '34', name: '智慧园林', children: []}, @@ -378,7 +393,129 @@ {name: '项目地址', value: 'S_DZQC'} ], false) } + // 视频云模块 + // console.log(index, 'index') + this.$nextTick(() => { + const index = value.layersShowRight.findIndex((item) => item === true) + if(index !== -1) { + getVideoPonit({ +treeCode: this.$store.state.treeCode[0].treeCode, + pageNo: index+1, + pageSize: 100 + }).then(res => { + console.log(res, '监控点位列表') + if(res.code === '0') { + console.log(res.data.list, 'list') + for(let i =0; i< res.data.list.length; i++) { + if (!res.data.list[i].longitude || !res.data.list[i].latitude || res.data.list[i].longitude === 'null' || res.data.list[i].longitude === 'null') { + continue + } + var graphic = new mars3d.graphic.BillboardEntity({ + name: res.data.list[i].cameraIndexCode, + position: [Number(res.data.list[i].longitude), Number(res.data.list[i].latitude)], + style: { + image: require('@/assets/images/icon-camera-blu.png'), + scale: 1, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + clampToGround: true + } + }) + // 绑定点击事件 + graphic.on('click', (event) => { + // 执行自定义点击逻辑 + this.videoShow1 = false + // console.log(event.target.options.name, 'event') + getRealVideo({ + cameraIndexCode: event.target.options.name, + protocol: 'ws' + }).then(res => { + // console.log(res.data, '111111111111111') + if(res.data.url) { + this.videoShow1 = true + this.videoUrl1 = `http://11.100.6.149:8083/videoPlayer/#/index?url=${res.data.url}&plugin=hk-player` + } + else { + this.videoShow1 = false + } + }) + }) + var str = ` +
+
` + var items = [{name: '摄像头名称', value: 'name'}, {name: '状态', value: 'statusName'}] + for (let j in items) { + var item = res.data.list[i][items[j].value] + if (typeof item === 'undefined') item = '' + str += `
${item}
` + } + // str += `
` + // if (showbtn) { + // var SSKZQBH = '\'' + this.data.feature[i].SSKZQBH + '\'' + // str += `` + // } + str += `
` + graphic.bindPopup(str) + this.layers.feature.addGraphic(graphic) + if (i === 0) { + this.map.setCameraView({ lat: Number(res.data.list[i].latitude), lng: Number(res.data.list[i].longitude), alt: 20000}) + } + } +// for (let i = 0; i < this.data.feature.length; i++) { +// if (!this.data.feature[i].X || !this.data.feature[i].Y || this.data.feature[i].X + '' === 'null' || this.data.feature[i].Y + '' === 'null') { +// continue +// } +// var graphic = new mars3d.graphic.BillboardEntity({ +// name: value, +// position: [Number(this.data.feature[i].X), Number(this.data.feature[i].Y)], +// style: { +// image: icon, +// scale: 1, +// horizontalOrigin: Cesium.HorizontalOrigin.CENTER, +// verticalOrigin: Cesium.VerticalOrigin.BOTTOM, +// clampToGround: true +// } +// }) +// if (value === '社区分布') { +// // 绑定点击事件 +// graphic.on('click', (event) => { +// // 执行自定义点击逻辑 +// this.handleBillboardClick(value, graphic) +// }) +// } +// var str = ` +//
+//
${value}
` +// for (let j in items) { +// var item = this.data.feature[i][items[j].value] +// if (typeof item === 'undefined') item = '' +// str += `
${item}
` +// } +// if (showbtn) { +// var SSKZQBH = '\'' + this.data.feature[i].SSKZQBH + '\'' +// str += `` +// } +// str += `
` +// graphic.bindPopup(str) +// this.layers.feature.addGraphic(graphic) +// if (i === 0) { +// this.map.setCameraView({ lat: Number(this.data.feature[i].Y), lng: Number(this.data.feature[i].X), alt: 20000}) +// } +// } + } + }) + // console.log(123123) + // fetchAllData(100+ 20*index,index+1, 20,'/hik/route/camerasPage',{ + // + // }).then(res => { + // console.log(res, '11111111111111111111111') + // }) + } + }) }, + initmap () { var mapOptions = { scene: { @@ -599,7 +736,6 @@ // }) }, fetchData ({value}) { - console.log(value, 'value') this.showCommunityInfo = false this.showAreaPopulation = false this.showGridPopulation = false @@ -696,31 +832,31 @@ } else if (value === '交通事件分布') { this.getEventPoints() } else if (value === '卡口') { - this.singleSearch(value, 'B-ZH-0203', 'A0QT21OBL5', require('@/assets/images/icon-camera-blu.png'), - [ {name: '设备名称', value: 'YSMC'}, {name: '路口名称', value: 'SSSJFW'}, {name: '设备地点', value: 'S_DZQC'} ], false) + // this.singleSearch(value, 'B-ZH-0203', 'A0QT21OBL5', require('@/assets/images/icon-camera-blu.png'), + // [ {name: '设备名称', value: 'YSMC'}, {name: '路口名称', value: 'SSSJFW'}, {name: '设备地点', value: 'S_DZQC'} ], false) } else if (value === '电警') { - this.singleSearch(value, 'B-ZH-0202', '6R7A01XHQ0', require('@/assets/images/icon-camera-blu.png'), - [ {name: '设备名称', value: 'YSMC'}, {name: '路口名称', value: 'SSSJFW'}, {name: '设备地点', value: 'S_DZQC'} ], false) + // this.singleSearch(value, 'B-ZH-0202', '6R7A01XHQ0', require('@/assets/images/icon-camera-blu.png'), + // [ {name: '设备名称', value: 'YSMC'}, {name: '路口名称', value: 'SSSJFW'}, {name: '设备地点', value: 'S_DZQC'} ], false) } else if (value === 'AR鹰眼') { - this.singleSearch(value, 'B-ZH-0216', 'G818P6U95C', require('@/assets/images/icon-camera-blu.png'), - [ {name: '设备名称', value: 'YSMC'}, {name: '路口名称', value: 'SSSJFW'}, {name: '设备地点', value: 'S_DZQC'} ], false) + // this.singleSearch(value, 'B-ZH-0216', 'G818P6U95C', require('@/assets/images/icon-camera-blu.png'), + // [ {name: '设备名称', value: 'YSMC'}, {name: '路口名称', value: 'SSSJFW'}, {name: '设备地点', value: 'S_DZQC'} ], false) } else if (value.index === '32') { // 工地 - this.singleSearch('摄像头', 'B-ZH-0403', 'G2YQEM396G', require('@/assets/images/icon-camera-blu.png'), - [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'} ], false) + // this.singleSearch('摄像头', 'B-ZH-0403', 'G2YQEM396G', require('@/assets/images/icon-camera-blu.png'), + // [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'} ], false) } else if (value.index === '33') { // 社区 - this.singleSearch('摄像头', 'B-ZH-1502', '76L47133KX', require('@/assets/images/icon-camera-blu.png'), - [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'} ], true) + // this.singleSearch('摄像头', 'B-ZH-1502', '76L47133KX', require('@/assets/images/icon-camera-blu.png'), + // [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'} ], true) } else if (value.index === '34') { // 园林 // this.singleSearch('摄像头', 'B-ZH-1504', '3LKWWUIX97', require('@/assets/images/icon-camera-blu.png'), // [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'}], true, true) - this.singleSearch('摄像头', 'B-ZH-1504', '3LKWWUIX97', require('@/assets/images/icon-camera-blu.png'), - [ {name: '名称', value: 'name'}, {name: '等级', value: 'levelname'}, {name: '地址', value: 'location'}], true, true) + // this.singleSearch('摄像头', 'B-ZH-1504', '3LKWWUIX97', require('@/assets/images/icon-camera-blu.png'), + // [ {name: '名称', value: 'name'}, {name: '等级', value: 'levelname'}, {name: '地址', value: 'location'}], true, true) } else if (value.index === '35') { // 公安 - this.singleSearch('公安视频', 'B-ZH-0301', 'P5SM5LIPDU', require('@/assets/images/icon-camera-blu.png'), - [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'}], false) + // this.singleSearch('公安视频', 'B-ZH-0301', 'P5SM5LIPDU', require('@/assets/images/icon-camera-blu.png'), + // [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'}], false) } else if (value.index === '36') { // 教育 - this.singleSearch('摄像头', 'B-ZH-1503', '82TO11RNVO', require('@/assets/images/icon-camera-blu.png'), - [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'} ], true) + // this.singleSearch('摄像头', 'B-ZH-1503', '82TO11RNVO', require('@/assets/images/icon-camera-blu.png'), + // [ {name: '设备名称', value: 'YSMC'}, {name: '设备地点', value: 'S_DZQC'}, {name: '设备状态', value: 'BJZT'} ], true) } else if (value.index === 'new01') { this.singleSearch('食堂分布', 'B-ZH-canteen', '05VA87X3PX', require('@/assets/images/icon-canteen.png'), [{name: '食堂名称', value: 'name'}, {name: '食堂地址', value: 'location'}], false, true) @@ -829,7 +965,8 @@ } }) }, - getVideo: function (channelId) { + getVideo: function (video) { + // console.log(video) let params = { 'token': this.videoToken, 'channelId': channelId @@ -850,6 +987,9 @@ } }) }, + getVideoUrlFun: function (video) { + console.log(video, '1111') + }, // 视频播放1 videoPlay1 (videoUrl) { let id = 'player-con' @@ -1345,7 +1485,7 @@ position:absolute; bottom:0; right:0; - z-index:999; + z-index:999999; width:3.8rem; height:2.55rem; background:#000000; @@ -1356,6 +1496,7 @@ width: 100%; height:100%; position:relative; + z-index: 99; } } .videoClose{