diff --git a/src/assets/icons/baoxue-rijian.svg b/src/assets/icons/baoxue-rijian.svg
index 29bab77..f4b8d48 100644
--- a/src/assets/icons/baoxue-rijian.svg
+++ b/src/assets/icons/baoxue-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/baoyu-rijian.svg b/src/assets/icons/baoyu-rijian.svg
index 4702c77..3dae155 100644
--- a/src/assets/icons/baoyu-rijian.svg
+++ b/src/assets/icons/baoyu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/dabaoyu-rijian.svg b/src/assets/icons/dabaoyu-rijian.svg
index 1279ec6..d1d41e6 100644
--- a/src/assets/icons/dabaoyu-rijian.svg
+++ b/src/assets/icons/dabaoyu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/daxue-rijian.svg b/src/assets/icons/daxue-rijian.svg
index 5e1e75a..dc29cc0 100644
--- a/src/assets/icons/daxue-rijian.svg
+++ b/src/assets/icons/daxue-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/dayu-rijian.svg b/src/assets/icons/dayu-rijian.svg
index 03fa565..848044e 100644
--- a/src/assets/icons/dayu-rijian.svg
+++ b/src/assets/icons/dayu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/dongyu-rijian.svg b/src/assets/icons/dongyu-rijian.svg
index e09cafa..494dfb4 100644
--- a/src/assets/icons/dongyu-rijian.svg
+++ b/src/assets/icons/dongyu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/duoyun-rijian.svg b/src/assets/icons/duoyun-rijian.svg
index 3c829b4..e124b37 100644
--- a/src/assets/icons/duoyun-rijian.svg
+++ b/src/assets/icons/duoyun-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/duoyun-wanjian.svg b/src/assets/icons/duoyun-wanjian.svg
index 91b6584..5ef7278 100644
--- a/src/assets/icons/duoyun-wanjian.svg
+++ b/src/assets/icons/duoyun-wanjian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/fuchen-rijian.svg b/src/assets/icons/fuchen-rijian.svg
index 0479673..e935c50 100644
--- a/src/assets/icons/fuchen-rijian.svg
+++ b/src/assets/icons/fuchen-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/leizhenyu-rijian.svg b/src/assets/icons/leizhenyu-rijian.svg
index d962ed9..671fdd7 100644
--- a/src/assets/icons/leizhenyu-rijian.svg
+++ b/src/assets/icons/leizhenyu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/leizhenyujiabingbao.svg b/src/assets/icons/leizhenyujiabingbao.svg
index 08a80c4..b5520c7 100644
--- a/src/assets/icons/leizhenyujiabingbao.svg
+++ b/src/assets/icons/leizhenyujiabingbao.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/qiangshachenbao.svg b/src/assets/icons/qiangshachenbao.svg
index b8f60f3..bfb84ab 100644
--- a/src/assets/icons/qiangshachenbao.svg
+++ b/src/assets/icons/qiangshachenbao.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/qing-rijian.svg b/src/assets/icons/qing-rijian.svg
index 4bb1a1a..5c931e5 100644
--- a/src/assets/icons/qing-rijian.svg
+++ b/src/assets/icons/qing-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/qing-wanjian.svg b/src/assets/icons/qing-wanjian.svg
index 06432bc..3f63689 100644
--- a/src/assets/icons/qing-wanjian.svg
+++ b/src/assets/icons/qing-wanjian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/shachenbao-rijian.svg b/src/assets/icons/shachenbao-rijian.svg
index 497f129..8bb8f8b 100644
--- a/src/assets/icons/shachenbao-rijian.svg
+++ b/src/assets/icons/shachenbao-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/tedabaoyu.svg b/src/assets/icons/tedabaoyu.svg
index a6d57be..212908e 100644
--- a/src/assets/icons/tedabaoyu.svg
+++ b/src/assets/icons/tedabaoyu.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/wu-rijian.svg b/src/assets/icons/wu-rijian.svg
index 1a05285..2f930ee 100644
--- a/src/assets/icons/wu-rijian.svg
+++ b/src/assets/icons/wu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/xiaoxue-rijian.svg b/src/assets/icons/xiaoxue-rijian.svg
index 88ac796..21e4e3c 100644
--- a/src/assets/icons/xiaoxue-rijian.svg
+++ b/src/assets/icons/xiaoxue-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/xiaoyu-rijian.svg b/src/assets/icons/xiaoyu-rijian.svg
index 32a3035..36b9046 100644
--- a/src/assets/icons/xiaoyu-rijian.svg
+++ b/src/assets/icons/xiaoyu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/yangsha-rijian.svg b/src/assets/icons/yangsha-rijian.svg
index a7dfa3f..8723fa8 100644
--- a/src/assets/icons/yangsha-rijian.svg
+++ b/src/assets/icons/yangsha-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/yin-rijian.svg b/src/assets/icons/yin-rijian.svg
index 88eb148..0e2fa38 100644
--- a/src/assets/icons/yin-rijian.svg
+++ b/src/assets/icons/yin-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/yujiaxue-rijian.svg b/src/assets/icons/yujiaxue-rijian.svg
index 7c7205a..12fb413 100644
--- a/src/assets/icons/yujiaxue-rijian.svg
+++ b/src/assets/icons/yujiaxue-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/zhenxue-rijian.svg b/src/assets/icons/zhenxue-rijian.svg
index b445b29..8495765 100644
--- a/src/assets/icons/zhenxue-rijian.svg
+++ b/src/assets/icons/zhenxue-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/zhenxue-wanjian.svg b/src/assets/icons/zhenxue-wanjian.svg
index 879a2b2..000747d 100644
--- a/src/assets/icons/zhenxue-wanjian.svg
+++ b/src/assets/icons/zhenxue-wanjian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/zhenyu-rijian.svg b/src/assets/icons/zhenyu-rijian.svg
index 3d2eceb..07caf8e 100644
--- a/src/assets/icons/zhenyu-rijian.svg
+++ b/src/assets/icons/zhenyu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/zhenyu-wanjian.svg b/src/assets/icons/zhenyu-wanjian.svg
index 6249ff3..15c9622 100644
--- a/src/assets/icons/zhenyu-wanjian.svg
+++ b/src/assets/icons/zhenyu-wanjian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/zhongxue-rijian.svg b/src/assets/icons/zhongxue-rijian.svg
index eb391ce..a3b882b 100644
--- a/src/assets/icons/zhongxue-rijian.svg
+++ b/src/assets/icons/zhongxue-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/icons/zhongyu-rijian.svg b/src/assets/icons/zhongyu-rijian.svg
index 8cb1609..af8b553 100644
--- a/src/assets/icons/zhongyu-rijian.svg
+++ b/src/assets/icons/zhongyu-rijian.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/utils/index.ts b/src/utils/index.ts
index 0312193..40c2fd1 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -195,6 +195,37 @@ export function getFirstNodeLastLevel(data: any) {
return firstNode; // 返回第一个节点的最后一个层级的数据
}
+/**
+ * 获取数组对象第一个节点最后一个层级的数据
+ * @param {array} obj1 数组1
+ * @param {array} obj2 数组2
+ */
+export function isEqual(obj1: any, obj2: any) {
+ // 判断两个对象的类型是否相同
+ if (typeof obj1 !== typeof obj2) {
+ return false;
+ }
+ // 如果是基本类型数据,则直接比较它们的值
+ if (typeof obj1 !== 'object') {
+ return obj1 === obj2;
+ }
+ // 获取obj1和obj2的属性名称
+ const obj1Keys = Object.keys(obj1);
+ const obj2Keys = Object.keys(obj2);
+ // 如果两个对象的属性数量不同,则它们不相等
+ if (obj1Keys.length !== obj2Keys.length) {
+ return false;
+ }
+ // 递归比较obj1和obj2的属性和值
+ for (let key of obj1Keys) {
+ if (!isEqual(obj1[key], obj2[key])) {
+ return false;
+ }
+ }
+ // 如果所有属性和值都相等,则两个对象相等
+ return true;
+}
+
/**
* 数字补位
*/
diff --git a/src/utils/socket.ts b/src/utils/socket.ts
index 9786fb9..c6c9470 100644
--- a/src/utils/socket.ts
+++ b/src/utils/socket.ts
@@ -51,7 +51,7 @@ class WebSocketService {
onMessage(event: MessageEvent): void {
if (event.data != '连接成功') {
const response = JSON.parse(event.data);
- // console.log(response);
+ console.log("response:",response);
this.data = response;
// 处理返回的数据
if (response.code === 'datareal') {
diff --git a/src/views/login/index.scss b/src/views/login/index.scss
index 873c4b8..b260539 100644
--- a/src/views/login/index.scss
+++ b/src/views/login/index.scss
@@ -69,7 +69,7 @@
&:-webkit-autofill {
box-shadow: 0 0 0 1000px transparent inset !important;
- -webkit-text-fill-color: #fff !important;
+ -webkit-text-fill-color: #606266 !important;
}
// 设置输入框自动填充的延迟属性
diff --git a/src/views/monitoring/components/header.vue b/src/views/monitoring/components/header.vue
index 8645bdb..fa4a0b7 100644
--- a/src/views/monitoring/components/header.vue
+++ b/src/views/monitoring/components/header.vue
@@ -153,11 +153,12 @@ onMounted(() => {
mitt.on('waringMessage', (res: any) => {
//监听报警信息
- console.log(res.data);
- waringData.value.push(res.data)
- console.log("waringData--", waringData.value);
- waringData.value = uniqueArrayObject(waringData.value, "id")
- console.log("waringData--", waringData.value);
+ console.log("waringMessage--", res.data);
+ waringData.value = res.data
+ // waringData.value.push(res.data)
+ // console.log("waringData--", waringData.value);
+ // waringData.value = uniqueArrayObject(waringData.value, "id")
+ // console.log("waringData--", waringData.value);
});
function showClick() {
@@ -168,7 +169,7 @@ function showClick() {
function returnBack() {
//返回首页
// emit('returnClick', '');
- if (routerType.value === '1'&&route.path!="/screen") {
+ if (routerType.value === '1' && route.path != "/screen") {
router.push({
path: "/screen",
query: { id: sessionStorage.getItem('id') }
diff --git a/src/views/monitoring/screen/components/main.vue b/src/views/monitoring/screen/components/main.vue
index b9f4e42..b595dc7 100644
--- a/src/views/monitoring/screen/components/main.vue
+++ b/src/views/monitoring/screen/components/main.vue
@@ -61,6 +61,7 @@ import {
VxeFormInstance,
VxeFormPropTypes,
VxeFormEvents,
+ VxeTablePropTypes
} from 'vxe-table';
import { getTableHeader, getStationInfo, getTableData, editConfig } from '@/api/table/list';
import { TableVo } from '@/api/table/types';
@@ -69,7 +70,6 @@ import mitt from '@/plugins/bus';
import socket from '@/utils/socket';
import useStorage from '@/utils/useStorage'
const sessionStorageIns = useStorage('sessionStorage');
-// import { uniqueArrayObject } from '@/utils/index';
const tableStoreCounter = tableStore();
// import type { MenuOption } from 'naive-ui'
@@ -81,8 +81,9 @@ const editModal = ref(false);
const modalTitle = ref('');
const menuKey = ref(0);
const tableColumn = ref([]);
-const tableData = ref();
+const tableData = ref([]);
const tableRef = ref>();
+const fields = ref(['deviceuuid']) //需要合并的列数据字段
// const waringArrow = ref([])
interface FormDataVO {
@@ -117,7 +118,7 @@ const userStorageInfo = sessionStorage.getItem('userInfo')
const userInfo = JSON.parse(userStorageInfo === null ? '' : userStorageInfo);
// const loginIp = userInfo.loginIp.split('.').join('');
// const baseApi = "http://172.1.2.106:9000"//websocket链接地址,与项目接口地址一致。
-const baseApi = "http://10.10.10.56:9000"//websocket链接地址,与项目接口地址一致。
+const baseApi = "http://board.heatiot.cn:8001/prod-api"//websocket链接地址,与项目接口地址一致。
// const baseApi = import.meta.env.VITE_APP_BASE_API
const apiUrl = baseApi.replace(/https?:/, '');
const wsUrl = `ws:${apiUrl}/websocket/${userInfo.userName}`; //websocket地址
@@ -166,13 +167,14 @@ const headerData = ref();
onMounted(() => {
// stationInfo();
- tableHeader();
+ // tableHeader();
socket.initialize(wsUrl); //初始化websocket
});
mitt.on('menuKey', (res: any) => {
//监听左侧菜单点击
menuKey.value = res;
+ tableHeader();
tableDatas();
});
@@ -194,16 +196,33 @@ mitt.on('treeData', (res: any) => {
mitt.on('tableMessage', (res: any) => {
//监听表格数据变化
- console.log(res.data);
+ console.log("tableMessage--", res.data);
const $table = tableRef.value;
+ const tableArray = tableData.value
if ($table) {
console.log("tableRef--", tableRef.value)
+ res.data.map((item: any) => {
+ const index = tableArray.findIndex((obj) => obj.id === item.id);
+ if (index !== -1) {
+ tableArray.splice(index, 1, item);
+ }
+ })
+ console.log("tableData--", tableArray)
+ $table.loadData(tableArray);
// if (res.code === 'datareal') {
- const index = tableData.value.findIndex((obj) => obj.id === res.data.id);
- if (index !== -1) {
- tableData.value.splice(index, 1, res.data);
- }
- $table.loadData(tableData.value);
+ // const index = tableData.value.findIndex((obj) => obj.id === res.data.id);
+ // if (index !== -1) {
+ // tableData.value.splice(index, 1, res.data);
+ // }
+ // res.data.map((item: any) => {
+ // console.log(item)
+ // debugger
+ // const index = tableData.value.findIndex((obj) => obj.id === item.id);
+ // if (index !== -1) {
+ // tableData.value.splice(index, 1, res.data);
+ // }
+ // })
+ // $table.loadData(mergedArray);
}
// } else if (res.code === 'alertDev') {
// waringArrow.value.push(res.data)
@@ -240,7 +259,7 @@ function tableHeader() {
if (item.formatter != undefined || item.children != undefined) {
item.formatter = eval(item.formatter);
if (item.children && item.children.length) {
- item.children.map((res) => {
+ item.children.map((res: any) => {
res.formatter = eval(res.formatter);
});
}
@@ -312,10 +331,30 @@ const formatRole: VxeColumnPropTypes.Formatter = ({ cellValue }) => {
//表单参数为object时处理
// const iconFont=cellValue.changeProp===-1?'':(cellValue.changeProp===1?'':'')
// const cellData = `${cellValue.val}${iconFont}`;
- const cellData = `${cellValue.val}${cellValue.canBeControl === '1'?'':''}`;
+ const cellData = `${cellValue.val}${cellValue.canBeControl === '1' ? '' : ''}`;
return cellData;
};
+// 通用行合并函数(将相同多列数据合并为一行)
+// const mergeRowMethod: VxeTablePropTypes.SpanMethod = ({ row, _rowIndex, column, visibleData }) => {
+// const cellValue = row[column.field]
+// if (cellValue && fields.value.includes(column.field)) {
+// const prevRow = visibleData[_rowIndex - 1]
+// let nextRow = visibleData[_rowIndex + 1]
+// if (prevRow && prevRow[column.field] === cellValue) {
+// return { rowspan: 0, colspan: 0 }
+// } else {
+// let countRowspan = 1
+// while (nextRow && nextRow[column.field] === cellValue) {
+// nextRow = visibleData[++countRowspan + _rowIndex]
+// }
+// if (countRowspan > 1) {
+// return { rowspan: countRowspan, colspan: 1 }
+// }
+// }
+// }
+// }
+
const submitEvent: VxeFormEvents.Submit = () => {
//修改数据之后通过websocket传给后端
formLoading.value = true;
diff --git a/src/views/monitoring/screen/index.scss b/src/views/monitoring/screen/index.scss
index b0298a5..a3ca302 100644
--- a/src/views/monitoring/screen/index.scss
+++ b/src/views/monitoring/screen/index.scss
@@ -7,8 +7,8 @@
background: url(@/assets/images/screen.png) no-repeat;
// background-color: var(--tableBg);
background-size: 100% 100%;
- background-color: rgba(0, 0, 0, 0.3);
- background-blend-mode: multiply;
+ // background-color: rgba(0, 0, 0, 0.5);
+ // background-blend-mode: multiply;
padding: 0 25px;
overflow: hidden;
@@ -170,6 +170,7 @@
position: relative;
overflow: auto;
transition: width 0.28s;
+ background-color: rgba(2, 8, 46, 0.8);
// .menu {
// text-align: center;
@@ -267,6 +268,7 @@
.main {
position: relative;
width: 87%;
+ background-color: rgba(2, 8, 46, 0.8);
.headerInfo {
border: 1px solid #0D55B0;
@@ -498,7 +500,7 @@
border-radius: 5px;
color: #fff;
padding: 15px;
- background: rgba(2, 7, 46, 0.77);
+ background-color: rgba(2, 8, 46, 0.5);
.icon {
width: 40%;
diff --git a/vite.config.ts b/vite.config.ts
index a0ebd46..7d27a61 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -47,7 +47,7 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
[env.VITE_APP_BASE_API]: {
// target: 'http://172.1.2.106:9000/',//本地接口地址
// target: 'http://172.1.2.48:9000/',//本地接口地址
- target: 'http://10.10.10.56:9000/',//线上接口地址
+ target: 'http://board.heatiot.cn:8001/prod-api/',//线上接口地址
changeOrigin: true,
rewrite: path =>
path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')