guanqb
2023-02-21 78ccbb258925d8cd35aaf7c6692123cc316bb452
Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs
17 files modified
1 files deleted
3 files added
531 ■■■■ changed files
prod.env.js 34 ●●●●● patch | view | raw | blame | history
public/config.js 32 ●●●●● patch | view | raw | blame | history
public/index.html 4 ●●● patch | view | raw | blame | history
src/api/home/index.js 19 ●●●●● patch | view | raw | blame | history
src/api/police/index.js 17 ●●●● patch | view | raw | blame | history
src/api/user/index.js 27 ●●●●● patch | view | raw | blame | history
src/api/video/index.js 28 ●●●● patch | view | raw | blame | history
src/components/map/index.vue 4 ●●●● patch | view | raw | blame | history
src/main.js 3 ●●●● patch | view | raw | blame | history
src/router/axios.js 23 ●●●● patch | view | raw | blame | history
src/store/modules/user.js 41 ●●●●● patch | view | raw | blame | history
src/styles/media/index.scss 15 ●●●●● patch | view | raw | blame | history
src/utils/auth.js 14 ●●●●● patch | view | raw | blame | history
src/utils/date.js 58 ●●●●● patch | view | raw | blame | history
src/utils/store.js 53 ●●●● patch | view | raw | blame | history
src/views/home/components/leftContainer.vue 3 ●●●●● patch | view | raw | blame | history
src/views/home/components/rightContainer.vue 5 ●●●●● patch | view | raw | blame | history
src/views/home/index.vue 54 ●●●● patch | view | raw | blame | history
src/views/house/index.vue 18 ●●●● patch | view | raw | blame | history
src/views/layout/index.vue 56 ●●●● patch | view | raw | blame | history
src/views/video/list.vue 23 ●●●●● patch | view | raw | blame | history
prod.env.js
File was deleted
public/config.js
New file
@@ -0,0 +1,32 @@
window.BASE_URL_CONFIG = {
    // 丰图数据
    // 本地开发
    VUE_APP_OUTER_NET: 'http://192.168.0.112:18080',
    // 内网部署
    VUE_APP_INTRANET: 'http://10.141.11.11:18080',
    // 大搜
    // 本地开发
    VUE_APP_OUTER_NET_SEARCH: 'http://192.168.0.112:9091',
    // 内网部署
    VUE_APP_INTRANET_SEARCH: 'http://10.141.11.11:9091',
    // 视频监控平台
    // 本地开发
    VUE_APP_OUTER_NET_VIDEO: 'http://192.168.0.126:18185/api',
    // VUE_APP_OUTER_NET_VIDEO: 'http://192.168.0.129:18185/api',
    // 内网部署
    VUE_APP_INTRANET_VIDEO: 'http://10.141.11.11:18185/api',
    // 设备通道号
    VUE_APP_OUTER_NET_EQUIPMENT: '34020000002000000003',
    VUE_APP_INTRANET_EQUIPMENT: '36110000002009999000',
    // 模型地址
    VUE_APP_OUTER_NET_TILEURL: 'http://192.168.0.112:18080',
    VUE_APP_INTRANET_TILEURL: 'http://10.141.11.11:18080',
    // 后台管理跳转地址
    VUE_APP_OUTER_NET_HTURL: 'http://192.168.0.109:1888',
    VUE_APP_INTRANET_HTURL: 'http://10.141.11.11:8081'
}
public/index.html
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-09-07 09:34:58
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-06 17:01:58
 * @LastEditTime: 2023-02-20 10:09:19
 * @FilePath: \srs-police-affairs\public\index.html
 * @Description: 
 * 
@@ -20,6 +20,8 @@
        信州公安VR指挥平台
    </title>
    <script src="./config.js"></script>
    <script src="./depend/vue.min.js"></script>
    <script src="./depend/vue-router.min.js"></script>
src/api/home/index.js
@@ -10,6 +10,15 @@
 */
import request from "@/router/axios.js"
let equipmentNum = ''
if (process.env.NODE_ENV == 'development') {
    // 开发
    equipmentNum = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_EQUIPMENT
} else {
    // 部署
    equipmentNum = window.BASE_URL_CONFIG.VUE_APP_INTRANET_EQUIPMENT
}
/**
 * 获取值班列表
@@ -120,10 +129,7 @@
// 获取设备分页数据 
export const getEquipmentPaging = (params) => {
    return request({
        // 内网
        url: `/device/query/devices/36110000002009999000/channelsCar`,
        // 外网
        // url: `/device/query/devices/34020000002000000003/channelsCar`,
        url: `/device/query/devices/${equipmentNum}/channelsCar`,
        method: 'get',
        requestBaseUrl: 'outside',
        params: {
@@ -139,10 +145,7 @@
        method: 'get',
        params: {
            ...params,
            // 内网
            deviceId: '36110000002009999000'
            // 外网
            // deviceId: '34020000002000000003'
            deviceId: equipmentNum
        }
    })
}
src/api/police/index.js
@@ -2,13 +2,23 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-15 15:10:41
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-09 10:46:18
 * @LastEditTime: 2023-02-20 10:18:05
 * @FilePath: \srs-police-affairs\src\api\police\index.js
 * @Description: 
 * 
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved. 
 */
import request from "@/router/axios.js"
let equipmentNum = ''
if (process.env.NODE_ENV == 'development') {
    // 开发
    equipmentNum = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_EQUIPMENT
} else {
    // 部署
    equipmentNum = window.BASE_URL_CONFIG.VUE_APP_INTRANET_EQUIPMENT
}
/**
 * 获取设备历史轨迹
@@ -17,10 +27,7 @@
 */
export const getHistoricalTrack = (params, requestBaseUrl = 'outside') => {
    return request({
        // 内网
        url: `/position/history/36110000002009999000`,
        // 外网
        // url: `/position/history/34020000002000000003`,
        url: `/position/history/${equipmentNum}`,
        method: 'get',
        requestBaseUrl,
        params: params
src/api/user/index.js
New file
@@ -0,0 +1,27 @@
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-02-20 14:16:37
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-20 14:23:06
 * @FilePath: \srs-police-affairs\src\api\user\index.js
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
 */
import request from "@/router/axios.js"
export const refreshToken = (refresh_token, tenantId) => request({
    url: '/api/blade-auth/oauth/token',
    method: 'post',
    headers: {
        'Tenant-Id': tenantId,
        'Dept-Id': '',
        'Role-Id': ''
    },
    params: {
        tenantId,
        refresh_token,
        grant_type: "refresh_token",
        scope: "all",
    }
})
src/api/video/index.js
@@ -2,13 +2,24 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-15 15:10:41
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-17 10:34:10
 * @LastEditTime: 2023-02-20 10:18:43
 * @FilePath: \srs-police-affairs\src\api\video\index.js
 * @Description: 
 * 
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved. 
 */
import request from "@/router/axios.js"
let equipmentNum = ''
if (process.env.NODE_ENV == 'development') {
    // 开发
    equipmentNum = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_EQUIPMENT
} else {
    // 部署
    equipmentNum = window.BASE_URL_CONFIG.VUE_APP_INTRANET_EQUIPMENT
}
/**
 * 获取设备列表
@@ -20,10 +31,7 @@
 */
export const getVideoList = (page, count, query, params = {}) => {
    return request({
        // 内网
        url: '/device/query/devices/36110000002009999000/channels',
        // 外网
        // url: '/device/query/devices/34020000002000000003/channels',
        url: `/device/query/devices/${equipmentNum}/channels`,
        method: 'get',
        requestBaseUrl: 'outside',
        params: {
@@ -42,10 +50,7 @@
 */
export const getDevices = (channelId) => {
    return request({
        // 内网
        url: `/play/start/36110000002009999000/${channelId}`,
        // 外网
        // url: `/play/start/34020000002000000003/${channelId}`,
        url: `/play/start/${equipmentNum}/${channelId}`,
        method: 'get',
        requestBaseUrl: 'outside'
    })
@@ -172,10 +177,7 @@
        url: '/api/deviceChannel/deviceChannel/getDeviceChannelByMileage',
        method: 'get',
        params: {
            // 内网
            deviceId: '36110000002009999000',
            // 外网
            // deviceId: '34020000002000000003',
            deviceId: equipmentNum,
            ...params
        }
    })
src/components/map/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 17:00:30
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-17 08:48:00
 * @LastEditTime: 2023-02-20 09:01:16
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -610,7 +610,7 @@
                    fillColor: global.DC.Color.CRIMSON,
                    style: global.DC.Namespace.Cesium.LabelStyle.FILL_AND_OUTLINE,
                    outlineColor: global.DC.Color.WHITE, // 边框颜色
                    outlineWidth: 4, // 边框大小,
                    outlineWidth: params.outW || 4, // 边框大小,
                    font: '16px sans-serif',
                    pixelOffset: { x: 0, y: -30 },
                    distanceDisplayCondition: distanceDisplayCondition
src/main.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-09-07 09:34:58
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-11-12 10:02:24
 * @LastEditTime: 2023-02-20 09:52:16
 * @FilePath: \srs-police-affairs\src\main.js
 * @Description: 
 * 
@@ -12,7 +12,6 @@
import App from './App.vue'
import router from './router/page'
import store from './store'
import '../prod.env'
import { EventBus } from '@/eventBus/event-bus'
src/router/axios.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-07-29 15:19:13
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-16 15:43:03
 * @LastEditTime: 2023-02-20 15:59:57
 * @FilePath: \srs-police-affairs\src\router\axios.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
@@ -21,7 +21,6 @@
import { Base64 } from 'js-base64'
import * as auth from '@/utils/auth'
import prodEnv from "../../prod.env"
let defaultApi = ''
let searchAllApi = ''
@@ -29,14 +28,14 @@
if (process.env.NODE_ENV == 'development') {
    // 开发
    defaultApi = prodEnv.VUE_APP_OUTER_NET
    searchAllApi = prodEnv.VUE_APP_OUTER_NET_SEARCH
    videoApi = prodEnv.VUE_APP_OUTER_NET_VIDEO
    defaultApi = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET
    searchAllApi = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_SEARCH
    videoApi = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_VIDEO
} else {
    // 部署
    defaultApi = prodEnv.VUE_APP_INTRANET
    searchAllApi = prodEnv.VUE_APP_INTRANET_SEARCH
    videoApi = prodEnv.VUE_APP_INTRANET_VIDEO
    defaultApi = window.BASE_URL_CONFIG.VUE_APP_INTRANET
    searchAllApi = window.BASE_URL_CONFIG.VUE_APP_INTRANET_SEARCH
    videoApi = window.BASE_URL_CONFIG.VUE_APP_INTRANET_VIDEO
}
// 调用后台管理的
@@ -71,10 +70,10 @@
        }
        //headers判断是否需要
        // const authorization = config.authorization === false
        // if (!authorization) {
        //     config.headers["Authorization"] = `Basic ${Base64.encode("saber:saber_secret")}`
        // }
        const authorization = config.authorization === false
        if (!authorization) {
            config.headers["Authorization"] = `Basic ${Base64.encode("saber:saber_secret")}`
        }
        //让每个请求携带token
        //headers中配置text请求
src/store/modules/user.js
@@ -2,22 +2,27 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-12-27 09:33:01
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-09 10:21:05
 * @LastEditTime: 2023-02-20 15:53:27
 * @FilePath: \srs-police-affairs\src\store\modules\user.js
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
 */
import { loginByUsername, logout } from "@/api/login/login"
import { Message } from 'element-ui'
import md5 from "js-md5"
import * as auth from '@/utils/auth'
import { setStore, getStore } from '@/utils/store'
import { refreshToken } from '@/api/user'
import { validatenull } from '@/utils/validate'
const user = {
    state: {
        tenantId: getStore({ name: 'tenantId' }) || '',
        userInfo: getStore({ name: 'userInfo' }) || [],
        token: getStore({ name: 'token' }) || '',
        refreshToken: getStore({ name: 'refreshToken' }) || '',
    },
    actions: {
        //根据用户名登录
@@ -46,6 +51,8 @@
                        } else {
                            commit("SET_TOKEN", data.access_token)
                            commit('SET_USER_INFO', data)
                            commit('SET_REFRESH_TOKEN', data.refresh_token)
                            commit('SET_TENANT_ID', data.tenant_id)
                        }
                        resolve()
                    })
@@ -61,6 +68,25 @@
                    commit('SET_TOKEN', '')
                    auth.removeToken()
                    auth.removeUserInfo()
                    auth.removeRefreshToken()
                    resolve()
                }).catch(error => {
                    reject(error)
                })
            })
        },
        //刷新token
        refreshToken ({ state, commit }, userInfo) {
            window.console.log('handle refresh token')
            return new Promise((resolve, reject) => {
                refreshToken(state.refreshToken, state.tenantId,
                    !validatenull(userInfo) ? userInfo.deptId : state.userInfo.dept_id,
                    !validatenull(userInfo) ? userInfo.roleId : state.userInfo.role_id
                ).then(res => {
                    const data = res.data
                    commit('SET_TOKEN', data.access_token)
                    commit('SET_REFRESH_TOKEN', data.refresh_token)
                    commit('SET_USER_INFO', data)
                    resolve()
                }).catch(error => {
                    reject(error)
@@ -71,12 +97,25 @@
    mutations: {
        SET_TOKEN: (state, token) => {
            auth.setToken(token)
            state.token = token
            setStore({ name: 'store-token', content: state.token })
        },
        SET_USER_INFO: (state, userInfo) => {
            state.userInfo = userInfo
            auth.setUserInfo(state.userInfo)
            setStore({ name: 'userInfo', content: state.userInfo })
        },
        SET_REFRESH_TOKEN: (state, refreshToken) => {
            auth.setRefreshToken(refreshToken)
            state.refreshToken = refreshToken
            setStore({ name: 'refreshToken', content: state.refreshToken })
        },
        SET_TENANT_ID: (state, tenantId) => {
            state.tenantId = tenantId
            setStore({ name: 'tenantId', content: state.tenantId })
        },
    }
}
src/styles/media/index.scss
@@ -1948,6 +1948,21 @@
                        .header input {
                            font-size: countSizeVh(14);
                        }
                        .status-box {
                            display: inline-block;
                            margin: auto;
                            width: countSizeVh(10);
                            height: countSizeVh(10);
                            text-align: center;
                            border-radius: 50%;
                            background-color: #adadad;
                        }
                        .online {
                            background-color: #4ccc7d;
                        }
                    }
                    .land-details-box {
src/utils/auth.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-07-28 17:50:14
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-12-26 14:31:40
 * @LastEditTime: 2023-02-20 14:39:25
 * @FilePath: \srs-police-affairs\src\utils\auth.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
@@ -18,6 +18,18 @@
    return window.sessionStorage.removeItem('token')
}
export function getRefreshToken () {
    return window.sessionStorage.getItem('refresh-token')
}
export function setRefreshToken (token) {
    return window.sessionStorage.setItem('refresh-token', token)
}
export function removeRefreshToken () {
    return window.sessionStorage.removeItem('refresh-token')
}
export const getUserInfo = () => {
    return window.sessionStorage.getItem('userInfo')
}
src/utils/date.js
New file
@@ -0,0 +1,58 @@
export const calcDate = (date1, date2) => {
  let date3 = date2 - date1;
  let days = Math.floor(date3 / (24 * 3600 * 1000))
  let leave1 = date3 % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
  let hours = Math.floor(leave1 / (3600 * 1000))
  let leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
  let minutes = Math.floor(leave2 / (60 * 1000))
  let leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
  let seconds = Math.round(date3 / 1000)
  return {
    leave1,
    leave2,
    leave3,
    days: days,
    hours: hours,
    minutes: minutes,
    seconds: seconds,
  }
}
/**
 * 日期格式化
 */
export function dateFormat(date, format) {
  format = format || 'yyyy-MM-dd hh:mm:ss';
  if (date !== 'Invalid Date') {
    let o = {
      "M+": date.getMonth() + 1, //month
      "d+": date.getDate(), //day
      "h+": date.getHours(), //hour
      "m+": date.getMinutes(), //minute
      "s+": date.getSeconds(), //second
      "q+": Math.floor((date.getMonth() + 3) / 3), //quarter
      "S": date.getMilliseconds() //millisecond
    }
    if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (let k in o)
      if (new RegExp("(" + k + ")").test(format))
        format = format.replace(RegExp.$1,
          RegExp.$1.length === 1 ? o[k] :
            ("00" + o[k]).substr(("" + o[k]).length));
    return format;
  }
  return '';
}
/**
 * 当前时间戳
 */
export function dateNow() {
  return dateFormat(new Date(), "yyyyMMddhhmmss");
}
src/utils/store.js
@@ -1,6 +1,6 @@
import {
    validatenull
} from '@/utils/validate';
} from '@/utils/validate'
/**
 * 存储localStorage
@@ -10,15 +10,15 @@
        name,
        content,
        type,
    } = params;
    } = params
    let obj = {
        dataType: typeof (content),
        content: content,
        type: type,
        datetime: new Date().getTime()
    }
    if (type) window.sessionStorage.setItem(name, JSON.stringify(obj));
    else window.localStorage.setItem(name, JSON.stringify(obj));
    if (type) window.sessionStorage.setItem(name, JSON.stringify(obj))
    else window.localStorage.setItem(name, JSON.stringify(obj))
}
/**
 * 获取localStorage
@@ -28,30 +28,31 @@
    let {
        name,
        debug
    } = params;
    } = params
    let obj = {},
        content;
    obj = window.sessionStorage.getItem(name);
    if (validatenull(obj)) obj = window.localStorage.getItem(name);
    if (validatenull(obj)) return;
        content
    obj = window.sessionStorage.getItem(name)
    console.log(obj, 456)
    if (validatenull(obj)) obj = window.localStorage.getItem(name)
    if (validatenull(obj)) return
    try {
        obj = JSON.parse(obj);
    } catch{
        return obj;
        obj = JSON.parse(obj)
    } catch {
        return obj
    }
    if (debug) {
        return obj;
        return obj
    }
    if (obj.dataType == 'string') {
        content = obj.content;
        content = obj.content
    } else if (obj.dataType == 'number') {
        content = Number(obj.content);
        content = Number(obj.content)
    } else if (obj.dataType == 'boolean') {
        content = eval(obj.content);
        content = eval(obj.content)
    } else if (obj.dataType == 'object') {
        content = obj.content;
        content = obj.content
    }
    return content;
    return content
}
/**
 * 删除localStorage
@@ -60,11 +61,11 @@
    let {
        name,
        type
    } = params;
    } = params
    if (type) {
        window.sessionStorage.removeItem(name);
        window.sessionStorage.removeItem(name)
    } else {
        window.localStorage.removeItem(name);
        window.localStorage.removeItem(name)
    }
}
@@ -73,10 +74,10 @@
 * 获取全部localStorage
 */
export const getAllStore = (params = {}) => {
    let list = [];
    let list = []
    let {
        type
    } = params;
    } = params
    if (type) {
        for (let i = 0; i <= window.sessionStorage.length; i++) {
            list.push({
@@ -98,7 +99,7 @@
        }
    }
    return list;
    return list
}
@@ -106,9 +107,9 @@
 * 清空全部localStorage
 */
export const clearStore = (params = {}) => {
    let { type } = params;
    let { type } = params
    if (type) {
        window.sessionStorage.clear();
        window.sessionStorage.clear()
    } else {
        window.localStorage.clear()
    }
src/views/home/components/leftContainer.vue
@@ -940,6 +940,9 @@
                        countArr.push({ value: item.count, id: item.id })
                    })
                    landData = [nameArr, countArr]
                    this.$emit('createCyLinder', res.data.data)
                } else if (type == 1) {
                    // this.areaNum = res.data.data.areaNum
                    // this.villageNum = res.data.data.villageNum
src/views/home/components/rightContainer.vue
@@ -724,6 +724,11 @@
            eventchangemychart = null
        }
        if (timer) {
            clearInterval(timer)
            timer = null
        }
        if (rightTiming != null) {
            clearInterval(rightTiming)
            rightTiming = null
src/views/home/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-17 16:43:28
 * @LastEditTime: 2023-02-20 09:19:10
 * @FilePath: \srs-police-affairs\src\views\home\index.vue
 * @Description: 小区-栋-层-房屋
 *
@@ -13,6 +13,7 @@
    <div class="home-page container">
        <left-container
            class="left-container"
            @createCyLinder="createCyLinder"
            @showpeopledetail="showpeopledetail"
            @showlanddetail="showlanddetail"
            @showkeypersondetail="showkeypersondetail"
@@ -159,7 +160,13 @@
                    </template>
                </el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="realName" label="姓名"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="address" label="地址"></el-table-column>
                <el-table-column
                    :show-overflow-tooltip="true"
                    prop="address"
                    label="地址"
                    min-width="240%"
                ></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="phone" label="电话"></el-table-column>
                <el-table-column
                    :show-overflow-tooltip="true"
@@ -220,7 +227,12 @@
                </el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="zdryxl" label="重点人员类型"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="realName" label="姓名"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="address" label="地址"></el-table-column>
                <el-table-column
                    :show-overflow-tooltip="true"
                    prop="address"
                    label="地址"
                    min-width="240%"
                ></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="phone" label="电话"></el-table-column>
                <el-table-column
                    :show-overflow-tooltip="true"
@@ -272,12 +284,28 @@
                        <span>{{(currentPage - 1) * pagesize + scope.$index + 1}}</span>
                    </template>
                </el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="channelId" label="通道编号"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="deviceId" label="设备编号"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="name" label="设备名称"></el-table-column>
                <el-table-column
                    :show-overflow-tooltip="true"
                    prop="name"
                    label="设备名称"
                    min-width="320%"
                ></el-table-column>
                <el-table-column
                    :show-overflow-tooltip="true"
                    prop="channelId"
                    label="通道编号"
                    min-width="160%"
                ></el-table-column>
                <el-table-column
                    :show-overflow-tooltip="true"
                    prop="policeStationName"
                    label="所属派出所"
                    min-width="140%"
                ></el-table-column>
                <el-table-column label="设备状态">
                    <template slot-scope="scope">
                        <span>{{ scope.row.status == 0 ? '离线' : '在线' }}</span>
                        <i class="status-box" :class="{ online: Number(scope.row.status) === 1 }"></i>
                    </template>
                </el-table-column>
                <el-table-column label="操作">
@@ -1042,6 +1070,11 @@
            return [center.geometry.coordinates[0], center.geometry.coordinates[1]]
        },
        /**
         * @description: 小区是否展示
         * @param {*} e
         * @return {*}
         */
        houseChange (e) {
            if (e == true) {
                this.houseList.forEach(item => {
@@ -1058,6 +1091,10 @@
                    type: 'VectorLayer'
                })
            }
        },
        createCyLinder (res) {
            console.log(res, 9599999)
        },
        houseSiteClick (e) {
@@ -1427,7 +1464,8 @@
                            lng: center[0],
                            lat: center[1],
                            alt: 1,
                            text: item.name
                            text: item.name,
                            outW: 20
                        },
                        distanceDisplayCondition: { "near": 0, "far": 200000 }
                    })
src/views/house/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-17 14:18:40
 * @LastEditTime: 2023-02-20 10:40:21
 * @FilePath: \srs-police-affairs\src\views\house\index.vue
 * @Description: 小区-栋-层-房屋
 * 
@@ -658,6 +658,17 @@
</template>
<script>
let tile3DUrl = ''
if (process.env.NODE_ENV == 'development') {
    // 开发
    tile3DUrl = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_TILEURL
} else {
    // 部署
    tile3DUrl = window.BASE_URL_CONFIG.VUE_APP_INTRANET_TILEURL
}
let circleLayer = null
let timer = []
@@ -825,10 +836,7 @@
            this.$EventBus.$emit('addMxTileset', {
                titlesetName: 'sdTilesetLayer',
                // 内网
                // titlesetUrl: 'http://10.141.11.11:18080/sf3d/361102/model/wanda/tileset.json',
                // 外网
                titlesetUrl: 'http://192.168.0.112:18080/sf3d/361102/model/wanda/tileset.json',
                titlesetUrl: `${tile3DUrl}/sf3d/361102/model/wanda/tileset.json`,
                incident: that.getAoiByPtStd
            })
src/views/layout/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:24
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-14 10:55:48
 * @LastEditTime: 2023-02-20 16:11:36
 * @FilePath: \srs-police-affairs\src\views\layout\index.vue
 * @Description: 
 * 
@@ -123,6 +123,21 @@
</template>
<script>
let HTUrl = ''
if (process.env.NODE_ENV == 'development') {
    // 开发
    HTUrl = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_HTURL
} else {
    // 部署
    HTUrl = window.BASE_URL_CONFIG.VUE_APP_INTRANET_HTURL
}
import { validatenull } from "@/utils/validate"
import { calcDate } from "@/utils/date.js"
import { getStore } from "@/utils/store.js"
import { getUserInfo, getToken } from '@/utils/auth'
export default {
    provide () {
@@ -181,7 +196,12 @@
            isShowUserDetail: false,
            user: {},
            currentUserInfo: JSON.parse(getUserInfo())
            currentUserInfo: JSON.parse(getUserInfo()),
            //刷新token锁
            refreshLock: false,
            //刷新token的时间
            refreshTime: ""
        }
    },
@@ -193,12 +213,12 @@
            this.menuRightList.push({
                menuName: '运维管理',
                openExternal: true,
                // 内网
                path: 'http://10.141.11.11:8081/#/security/security'
                // 外网
                // path: 'http://192.168.0.109:1888/#/security/security'
                path: HTUrl
            })
        }
        //实时检测刷新token
        this.refreshToken()
    },
    watch: {
@@ -308,6 +328,30 @@
            this.userOn = !this.userOn
            this.isShowUserDetail = !this.isShowUserDetail
        },
        // 定时检测token
        refreshToken () {
            this.refreshTime = setInterval(() => {
                const token = getStore({
                    name: "store-token",
                    debug: true
                }) || {}
                const date = calcDate(token.datetime, new Date().getTime())
                console.log(6688, date, token)
                if (validatenull(date)) return
                if (date.seconds >= 3000 && !this.refreshLock) {
                    this.refreshLock = true
                    this.$store
                        .dispatch("refreshToken")
                        .then(() => {
                            this.refreshLock = false
                        })
                        .catch(() => {
                            this.refreshLock = false
                        })
                }
            }, 10000)
        }
    }
}
</script>
src/views/video/list.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-17 10:06:38
 * @LastEditTime: 2023-02-20 10:43:51
 * @FilePath: \srs-police-affairs\src\views\video\list.vue
 * @Description: 辖区管理
 * 
@@ -142,6 +142,17 @@
</template>
<script>
let equipmentNum = ''
if (process.env.NODE_ENV == 'development') {
    // 开发
    equipmentNum = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_EQUIPMENT
} else {
    // 部署
    equipmentNum = window.BASE_URL_CONFIG.VUE_APP_INTRANET_EQUIPMENT
}
import EntityDraw from "@/utils/EntityDraw.js"
import {
    getDevices,
@@ -276,10 +287,7 @@
                this.searchTreeData = []
                getSearchTreeDevices({
                    // 内网
                    deviceId: '36110000002009999000',
                    // 外网
                    // deviceId: '34020000002000000003',
                    deviceId: equipmentNum,
                    parentId: '361102',
                    deptId: this.userInfo.dept_id,
                    name: this.searchValue.trim()
@@ -575,10 +583,7 @@
            }
            await getTreeDevices({
                // 内网
                deviceId: '36110000002009999000',
                // 外网
                // deviceId: '34020000002000000003',
                deviceId: equipmentNum,
                parentId,
                deptId: this.userInfo.dept_id,
                type,