From 94934f5b80910448cad53a1bb88d54c4e2277910 Mon Sep 17 00:00:00 2001 From: TimSpan Date: Fri, 10 Jan 2025 18:03:17 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=82=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/axios/index.ts | 193 ++++++++++++++++---------------- src/stores/modules/userStore.ts | 2 +- src/views/login.vue | 17 +-- src/views/page/index.vue | 43 +------ 4 files changed, 115 insertions(+), 140 deletions(-) diff --git a/src/axios/index.ts b/src/axios/index.ts index f7de9826..4b7ace97 100644 --- a/src/axios/index.ts +++ b/src/axios/index.ts @@ -1,107 +1,110 @@ -import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from "axios"; -import { message } from 'ant-design-vue'; -import { useUserStore } from "@/stores/modules/userStore"; -import { useLoadingStore } from "@/stores/modules/loadingStore"; -import { useRouter } from "vue-router"; -const router = useRouter(); -import { LOGIN_ROUTER } from "@/configs"; -axios.defaults.withCredentials = false; +import axios, {AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig} from 'axios' +import {message} from 'ant-design-vue' +import {useUserStore} from '@/stores/modules/userStore' +import {useLoadingStore} from '@/stores/modules/loadingStore' +// import { useRouter } from "vue-router"; +// const router = useRouter(); +// import { LOGIN_ROUTER } from "@/configs"; +axios.defaults.withCredentials = false export interface JsonResult { - code: number; - msg: string; - data?: T; - + code: number + msg: string + data?: T } export interface CustomAxiosRequestConfig extends AxiosRequestConfig { - //是否需要全屏禁用 - loading?: boolean, - loadingMessage?: string + //是否需要全屏禁用 + loading?: boolean + loadingMessage?: string } export interface CustomInternalAxiosRequestConfig extends InternalAxiosRequestConfig { - //是否需要全屏禁用 - loading?: boolean, - loadingMessage?: string + //是否需要全屏禁用 + loading?: boolean + loadingMessage?: string } const axiosConfig: AxiosRequestConfig = { - baseURL: import.meta.env.VITE_APP_BASE_API, - timeout: import.meta.env.VITE_APP_ENV === 'production' ? 10000 : 60000, - timeoutErrorMessage: "请求超时......" -}; - -class RequestHttp { - service: AxiosInstance; - public constructor(config: AxiosRequestConfig) { - this.service = axios.create(config); - //1.添加请求拦截 - this.service.interceptors.request.use((config: CustomInternalAxiosRequestConfig) => { - if (config.loading) { - useLoadingStore().showLoading(config.loadingMessage); - } - //默认带上用户token - config.headers.set('Authorization', useUserStore().getToken) - return config; - }, (error: AxiosError): Promise => { - useLoadingStore().hideLoading(); - message.error(error.message).then(() => { - }) - return Promise.reject(error); - }) - //2.添加响应拦截 - this.service.interceptors.response.use(async (response: AxiosResponse): Promise => { - useLoadingStore().hideLoading(); - const jsonResult: JsonResult = response.data; - if (jsonResult.code !== 0) { - //一些特定的错误需要重新登录 - if ([-101].includes(jsonResult.code)) { - //跳转登录页 - await useUserStore().resetUserInfo(); - await message.error(jsonResult.msg) - // alert('??') - location.reload() - // router.push({ - // path: LOGIN_ROUTER.path - // }) - - - } else { - await message.error(jsonResult.msg) - } - return Promise.reject(jsonResult); - } - return Promise.resolve(jsonResult); - }, async (error: AxiosError): Promise => { - useLoadingStore().hideLoading(); - await message.error(error.msg) - return Promise.reject(error); - }) - } - - /** - * 常用请求方法封装 - */ - get(url: string, params?: object, _object: CustomAxiosRequestConfig = {}): Promise> { - return this.service.get(url, { params, ..._object }); - } - - post(url: string, params?: object | object[], _object: CustomAxiosRequestConfig = {}): Promise> { - return this.service.post(url, params, _object); - } - - put(url: string, params?: object | object[], _object: CustomAxiosRequestConfig = {}): Promise> { - return this.service.put(url, params, _object); - } - - delete(url: string, params?: object, _object: CustomAxiosRequestConfig = {}): Promise> { - return this.service.delete(url, { params, ..._object }); - } - - download(url: string, params?: object, _object: CustomAxiosRequestConfig = {}): Promise { - return this.service.post(url, params, { ..._object, responseType: "blob" }); - } + baseURL: import.meta.env.VITE_APP_BASE_API, + timeout: import.meta.env.VITE_APP_ENV === 'production' ? 10000 : 60000, + timeoutErrorMessage: '请求超时......' } -const api = new RequestHttp(axiosConfig); -export default api \ No newline at end of file +class RequestHttp { + service: AxiosInstance + public constructor(config: AxiosRequestConfig) { + this.service = axios.create(config) + //1.添加请求拦截 + this.service.interceptors.request.use( + (config: CustomInternalAxiosRequestConfig) => { + if (config.loading) { + useLoadingStore().showLoading(config.loadingMessage) + } + //默认带上用户token + config.headers.set('Authorization', useUserStore().getToken) + return config + }, + (error: AxiosError): Promise => { + useLoadingStore().hideLoading() + message.error(error.message).then(() => {}) + return Promise.reject(error) + } + ) + //2.添加响应拦截 + this.service.interceptors.response.use( + async (response: AxiosResponse): Promise => { + useLoadingStore().hideLoading() + const jsonResult: JsonResult = response.data + // console.log('🚀 ~ RequestHttp ~ this.service.interceptors.response.use ~ jsonResult:', jsonResult) + if (jsonResult.code !== 0) { + //一些特定的错误需要重新登录 + if ([-101].includes(jsonResult.code)) { + //跳转登录页 + await useUserStore().resetUserInfo() + await message.error(jsonResult.msg) + // alert('??') + location.reload() + // router.push({ + // path: LOGIN_ROUTER.path + // }) + } else { + await message.error(jsonResult.msg) + } + return Promise.reject(jsonResult) + } + return Promise.resolve(jsonResult) + }, + async (error: AxiosError): Promise => { + useLoadingStore().hideLoading() + await message.error(error.msg) + return Promise.reject(error) + } + ) + } + + /** + * 常用请求方法封装 + */ + get(url: string, params?: object, _object: CustomAxiosRequestConfig = {}): Promise> { + return this.service.get(url, {params, ..._object}) + } + + post(url: string, params?: object | object[], _object: CustomAxiosRequestConfig = {}): Promise> { + return this.service.post(url, params, _object) + } + + put(url: string, params?: object | object[], _object: CustomAxiosRequestConfig = {}): Promise> { + return this.service.put(url, params, _object) + } + + delete(url: string, params?: object, _object: CustomAxiosRequestConfig = {}): Promise> { + return this.service.delete(url, {params, ..._object}) + } + + download(url: string, params?: object, _object: CustomAxiosRequestConfig = {}): Promise { + return this.service.post(url, params, {..._object, responseType: 'blob'}) + } +} + +const api = new RequestHttp(axiosConfig) +export default api diff --git a/src/stores/modules/userStore.ts b/src/stores/modules/userStore.ts index d9e59f05..61d0c37e 100644 --- a/src/stores/modules/userStore.ts +++ b/src/stores/modules/userStore.ts @@ -1,5 +1,5 @@ import { defineStore } from "pinia"; -import jwtDecode from "jwt-decode"; +// import jwtDecode from "jwt-decode"; import api from "@/axios"; import { useTabsStore } from "@/stores/modules/tabsStore"; diff --git a/src/views/login.vue b/src/views/login.vue index 6bacba34..45461bc5 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -59,7 +59,7 @@ const loginParams = ref<{ passWord: string code: string }>({ - userNameOrTelephone: import.meta.env.VITE_APP_ENV === 'development' ? 'test001' : '', + userNameOrTelephone: import.meta.env.VITE_APP_ENV === 'development' ? 'test002' : '', passWord: import.meta.env.VITE_APP_ENV === 'development' ? '123456' : '', code: import.meta.env.VITE_APP_ENV === 'development' ? '1234' : '' }) @@ -80,22 +80,25 @@ const login = async () => { loading: true } ) - - //保存用户信息 + userStore.saveUserInfo(resp.data) + // console.log('登录',resp.data,loginParams.value.userNameOrTelephone) + localStorage.setItem('loginname', loginParams.value.userNameOrTelephone) + localStorage.setItem('geoCode', resp.data.geoCode) + console.log(111) + // 保存用户信息 api .post('/common/client/user/org/tree4', { name: loginParams.value.userNameOrTelephone }) .then((res) => { + console.log(222) + if (res.code == 0) { localStorage.setItem('tree4data', JSON.stringify(res.data)) } else { } }) - userStore.saveUserInfo(resp.data) - // console.log('登录',resp.data,loginParams.value.userNameOrTelephone) - localStorage.setItem('loginname', loginParams.value.userNameOrTelephone) - localStorage.setItem('geoCode', resp.data.geoCode) + api .post('multialarm/system/alarm/total', { name: loginParams.value.userNameOrTelephone, diff --git a/src/views/page/index.vue b/src/views/page/index.vue index 1554387d..2713d45c 100644 --- a/src/views/page/index.vue +++ b/src/views/page/index.vue @@ -450,7 +450,6 @@ const qhzty2 = (data: any) => { watch( () => useUserStore().getsoketData, (newValue: any) => { - // console.log('newValue', newValue) if (newValue != undefined) { jinbao.value.push(newValue) } @@ -505,7 +504,7 @@ const lock = (data: any) => { message: '锁定成功', type: 'success' }) - // console.log('listindex',listindex.value,jinbao.value) + getdayline() let city = JSON.parse(localStorage.getItem('user-stores'))['userInfo']['levelvalue'] api @@ -527,6 +526,8 @@ const lock = (data: any) => { } const printLeafs = (tree: any, jirearr: any) => { + // console.log('🚀 ~ printLeafs ~ tree:', tree) + // console.log('🚀 ~ printLeafs ~ list:', jirearr) if (tree.children === null) { if (tree.hasOwnProperty('stationId')) { tree.code = tree?.stationId @@ -535,12 +536,7 @@ const printLeafs = (tree: any, jirearr: any) => { jirearr.forEach((x: any) => { if (tree.stationId == x.stationId) { tree.children.push(x) - //加入报警的 } - // 添加测试数据:往文艺路 下面的 长沙市芙蓉高级中学 添加 育英小学的数据 - // if (tree.stationId === 'eead2a15-d6ca-433d-ba44-998f87c6092f' && x.stationId === '917ae0e4-d2cb-434b-a859-b6eb8abda036') { - // tree.children.push(x) - // } }) } else { tree.children.forEach((child: any) => { @@ -600,9 +596,7 @@ const scrollToMatchedNode = (searchValue: string) => { }) } const treedataall = ref([]) - const treeRef = ref() // 创建一个 ref 用来引用 a-tree 组件 -// checkKeyExists___验证 key 方法 const checkKeyExists = (nodes: any, key: string): boolean => { return nodes.some((node: any) => { if (node.code === key) return true @@ -630,11 +624,12 @@ const gettree4 = (data: any) => { ele.code = ele.pointId //为什么是pointId,因为key需要唯一 }) let data = [res.data] + console.log('🚀 ~ .then ~ data:', data) data.forEach((tree) => { - // console.log('tree______', tree) tree.children.reverse() // 长沙市排在前 printLeafs(tree, res1.data) }) + treedataall.value = [...data] console.log('🚀 ~ .then ~ treedataall.value:', treedataall.value) options.value = [...data] @@ -715,7 +710,6 @@ const clickKz = (dat2a: any) => { }) .then((res) => { if (res.code == 0) { - // console.log('ress', res) ingrssddata.value = res.data } }) @@ -749,12 +743,6 @@ var _renderClusterMarker = function (context: any) { } var _renderMarker = function (context: any) { - // console.log('🚀 ~ context:', context) - // var offsetX = (Math.random() - 0.5) * 30 - // var offsetY = (Math.random() - 0.5) * 30 - // var offsetX = (Math.random() - 0.5) * 10 - // var offsetY = (Math.random() - 0.5) * 10 - // var offset = new AMap.Pixel(offsetX, offsetY) // 应用随机偏移 var offset = new AMap.Pixel(-9, -9) context.marker.setIcon( new AMap.Icon({ @@ -777,7 +765,6 @@ var _renderMarker = function (context: any) { } const createCluster = () => { - // cluster = null if (cluster) cluster.setMap(null) // 避免重复创建 // @ts-ignore cluster = new AMap.MarkerCluster(state.map, points, { @@ -810,12 +797,9 @@ const treedata = () => { count = points.length console.log('points___________________________', points) createCluster() // 初始化聚合点 - // 在点击聚合点时创建Marker cluster.on('click', function (e: any) { - // console.log('🚀 ~ e:', e) const {clusterData, lnglat} = e let currentZoom = state.map.getZoom() - // console.log('🚀 ~ currentZoom:_____________________________', currentZoom) if (clusterData?.length > 0) { state.map.setZoomAndCenter(currentZoom + 1, lnglat) // 放大1级,聚焦到点击位置 } @@ -836,7 +820,6 @@ const getdayline = () => { }) .then((res: JsonResult) => { if (res.code == 0) { - // console.log('当日报警列表', res) jinbao.value = res.data if (res.data.length > 0) { res.data.map((x: any) => { @@ -947,7 +930,6 @@ const handleScroll = throttle(async (event: any) => { showLoading.value = true pageIndex.value++ await getAi() - // console.log(aiCount.value, AIyujing.value.length) } if (aiCount.value === AIyujing.value.length) return } @@ -967,7 +949,6 @@ const gettotal = () => { }) .then((res) => { if (res.code == 0) { - // console.log('??', res) total.value = res.data } }) @@ -978,7 +959,6 @@ const selectA = (selectedKeys: any, e: any) => { console.log('selectedKeys___________________________', selectedKeys, 'e______________________', e) if (selectedKeys[0].length >= 13) { let targetLangLat = [e.selectedNodes[0].longitude == null ? 0 : e.selectedNodes[0].longitude, e.selectedNodes[0].latitude == null ? 0 : e.selectedNodes[0].latitude] - deviceInfoWindow.value = new AMap.InfoWindow({ isCustom: true, //使用自定义窗体 content: createSubstanceInfowindow2(e.selectedNodes[0], '1'), @@ -986,9 +966,6 @@ const selectA = (selectedKeys: any, e: any) => { }) deviceInfoWindow.value.open(state.map, [e.selectedNodes[0].longitude == null ? 0 : e.selectedNodes[0].longitude, e.selectedNodes[0].latitude == null ? 0 : e.selectedNodes[0].latitude]) - // state.map.setZoomAndCenter(12, targetLangLat, true) // 这个过渡 不平滑 - // state.map.setZoom(12, {animate: true}) - // state.map.setCenter(targetLangLat, true) state.map.setFitView( new AMap.Marker({position: [e.selectedNodes[0].longitude == null ? 0 : e.selectedNodes[0].longitude, e.selectedNodes[0].latitude == null ? 0 : e.selectedNodes[0].latitude]}), true, @@ -1154,12 +1131,8 @@ const getSubstanceInfoWindowContent2 = (obj: any, type: any) => { } if (a.alarmType == 'ipc') { - // let routeData = router.resolve({ path: '/index/cwPlay', query: { pointId: a.pointId } }) - // window.open(routeData.href, '_blank') - var url = `/cw_/index.html?id=${a.pointId}&title=${a.title}` window.open(url, '_blank') - // const newWindow = window.open(url, '', 'width=' + 1920 + ',height=' + 1080 + ",top=0,left=0,status='no',location='no',resizable='no',toolbar='no'") } } else { // 手持设备的播放 @@ -1330,11 +1303,10 @@ const upstatuslist = ref([]) const listindex = ref() const toinfo = (item: any, index: number) => { listindex.value = index - // dialogTableVisible.value = false; + nextTick(() => { infoData.value = item if (item.state == 'new') { - //新事件转成处理中/firectrl/client/sensor/alarm_event/changestate api .post('/multialarm/client/alarm_event/changestate', { eventId: item.multiAlarmId, @@ -1362,14 +1334,12 @@ const toinfo = (item: any, index: number) => { eventId: item.multiAlarmId }) .then((res) => { - // console.log('PPres1', res) if (res.code == 0) { upstatuslist.value = res.data as any[] } }) } - //跳转地图marke let targetLangLat = [item.longitude, item.latitude] state.map.panTo(targetLangLat) state.map.setZoomAndCenter(15, targetLangLat) @@ -1390,7 +1360,6 @@ const initMap = () => { }) treedata() getdayline() - // stationWebsocket(); } onMounted(() => {