From c0ba4c7c49512edc5ce27ae7f45315764256f3a7 Mon Sep 17 00:00:00 2001
From: lcw <1878680531@qq.com>
Date: Sat, 7 Feb 2026 10:24:29 +0800
Subject: [PATCH 1/2] lcw
---
src/App.vue | 1 -
src/assets/images/cjyp.mp3 | Bin 0 -> 16275 bytes
src/assets/images/xsyp.mp3 | Bin 0 -> 16491 bytes
src/assets/images/ypbg.mp3 | Bin 0 -> 18003 bytes
src/assets/images/ypzl.mp3 | Bin 0 -> 18003 bytes
src/components/common/TestDiv.vue | 240 ++++++++++++++++++
src/components/common/item.vue | 155 +++++++++++
src/components/fzq/fxq.vue | 1 -
src/layout/index.vue | 6 +-
src/utils/webSocket.js | 10 +-
.../components/addForm.vue | 76 +++++-
.../appraisalManagement/index.vue | 6 +-
.../permissionApply/index.vue | 6 +-
.../JudgmentHome/judgmentCommand/addForm.vue | 5 +-
.../JudgmentHome/judgmentCommand/index.vue | 14 +-
.../strategicResearch/addForm.vue | 7 +-
.../strategicResearch/addReport.vue | 47 +++-
.../JudgmentHome/strategicResearch/index.vue | 21 +-
.../components/detailForm.vue | 47 ++--
.../InstructionInformation/index.vue | 21 +-
src/views/home/components/qxsqDialog.vue | 15 +-
src/views/home/index.vue | 11 +-
22 files changed, 598 insertions(+), 91 deletions(-)
create mode 100644 src/assets/images/cjyp.mp3
create mode 100644 src/assets/images/xsyp.mp3
create mode 100644 src/assets/images/ypbg.mp3
create mode 100644 src/assets/images/ypzl.mp3
create mode 100644 src/components/common/TestDiv.vue
create mode 100644 src/components/common/item.vue
diff --git a/src/App.vue b/src/App.vue
index 65e950c..891da9b 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -7,7 +7,6 @@
-
+
+
diff --git a/src/components/common/item.vue b/src/components/common/item.vue
new file mode 100644
index 0000000..f0c6d25
--- /dev/null
+++ b/src/components/common/item.vue
@@ -0,0 +1,155 @@
+
+
+
+
{{ item.qbnr }}
+
{{ item.xtCjsj || '' }}
+
+
+
+
+
{{ item.xtCjsj || '' }}
+
+
+
+
+
{{ item.xtCjsj || '' }}
+
+
+
+
+
{{ item.xtCjsj || '' }}
+
+
+
+
diff --git a/src/components/fzq/fxq.vue b/src/components/fzq/fxq.vue
index a10d5b0..c148cb1 100644
--- a/src/components/fzq/fxq.vue
+++ b/src/components/fzq/fxq.vue
@@ -64,7 +64,6 @@ const startDrag = (e) => {
// 处理移动
const handleMove = (e) => {
if (!isDragging.value) return;
-
let clientX, clientY;
if (e.type === 'mousemove') {
clientX = e.clientX;
diff --git a/src/layout/index.vue b/src/layout/index.vue
index b1bedf8..ee9e917 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -11,6 +11,7 @@
+
@@ -20,6 +21,7 @@ import NavBar from "./components/NavBar";
import SideBar from "./components/SideBar/index";
import AppMain from "./components/AppMain";
import TagsView from "./components/TagsView";
+import TestDiv from "@/components/common/TestDiv.vue";
\ No newline at end of file
+
diff --git a/src/utils/webSocket.js b/src/utils/webSocket.js
index 48b853e..4dd86b0 100644
--- a/src/utils/webSocket.js
+++ b/src/utils/webSocket.js
@@ -1,5 +1,5 @@
// let url = "ws://89.40.9.89:2109/mosty-api/mosty-websocket/socket/"; //线上
-let url = "ws://155.240.22.30:2109/mosty-api/mosty-websocket/socket/"; //线上
+let url = "ws://89.40.9.93:50039/mosty-websocket/socket/"; //线上
if (process.env.NODE_ENV === 'development') {
url = "ws://47.108.232.77:9537/mosty-api/mosty-websocket/socket/"; //本地
@@ -86,8 +86,6 @@ class WebSoketClass {
if (fun) fun(true);
};
this.ws.onclose = (e) => {
- console.log(e);
-
console.log('WebSocket连接已关闭,关闭码:', e.code, '原因:', e.reason);
// 如果是正常关闭(1000)或手动关闭(1001),不进行重连
if (e.code !== 1000 && e.code !== 1001) {
@@ -165,7 +163,6 @@ class WebSoketClass {
// 接收发送消息
getMessage() {
this.ws.onmessage = (e) => {
- console.log(e);
try {
if (e.data) {
@@ -175,6 +172,9 @@ class WebSoketClass {
// 触发音频播放
console.log('触发音频播放');
emitter.emit('openYp', newsDate.data); // 传递消息数据
+ } else {
+
+ emitter.emit('webSocketMessage', { data: newsDate.data, type: newsDate.type });
}
// else if (newsDate.type === 'ALARM_STOP' || newsDate.type === 'warning_stop') {
// // 触发音频停止
@@ -187,7 +187,7 @@ class WebSoketClass {
// emitter.emit('statusUpdate', newsDate.data);
// }
// // 通用消息事件
- // emitter.emit('webSocketMessage', newsDate);
+
}
} catch (error) {
console.error('处理WebSocket消息失败:', error);
diff --git a/src/views/backOfficeSystem/HumanIntelligence/appraisalManagement/components/addForm.vue b/src/views/backOfficeSystem/HumanIntelligence/appraisalManagement/components/addForm.vue
index 2735387..cbd7da4 100644
--- a/src/views/backOfficeSystem/HumanIntelligence/appraisalManagement/components/addForm.vue
+++ b/src/views/backOfficeSystem/HumanIntelligence/appraisalManagement/components/addForm.vue
@@ -3,27 +3,58 @@
工作考核{{ title }}
- 保存
+ 保存
关闭
-
+
+
+ 布控预警
+
+
+ 车辆预警
+
+
+ 7类重点人员预警
+
+
+ 人像预警
+
+
+ 政保预警
+
+
+ 考核分数
+
+
diff --git a/src/views/backOfficeSystem/ResearchJudgment/InformationFlows/InstructionInformation/index.vue b/src/views/backOfficeSystem/ResearchJudgment/InformationFlows/InstructionInformation/index.vue
index db26543..2df3620 100644
--- a/src/views/backOfficeSystem/ResearchJudgment/InformationFlows/InstructionInformation/index.vue
+++ b/src/views/backOfficeSystem/ResearchJudgment/InformationFlows/InstructionInformation/index.vue
@@ -58,8 +58,8 @@
>
-
+
@@ -71,7 +71,8 @@ import Search from "@/components/aboutTable/Search.vue";
import DetailForm from "./components/detailForm.vue";
import Fk from "./components/fk.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
-import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
+import { useRoute } from "vue-router";
+import { reactive, ref, onMounted, getCurrentInstance, nextTick, watch } from "vue";
import { getItem } from '@/utils/storage'
const { proxy } = getCurrentInstance();
const {D_GS_XS_SJLY,D_GS_XS_ZLLX,D_GS_ZDQT_FXDJ,D_GS_XS_CZZT} = proxy.$dict('D_GS_XS_SJLY','D_GS_XS_ZLLX','D_GS_ZDQT_FXDJ','D_GS_XS_CZZT')
@@ -110,14 +111,20 @@ const pageData = reactive({
{ label: '是否反馈', prop: 'sffk', showSolt: true },
{ label: '是否签收', prop: 'sfqs', showSolt: true },
]
- });
+});
+ const route=useRoute()
const userInfo=ref();
onMounted(() => {
+ if (route.query.id) {
+ addEdit('detail', {id:route.query.id});
+ }
userInfo.value=getItem('deptId')[0]
getList()
tabHeightFn();
});
+
+
// 搜索
const onSearch = (val) =>{
queryFrom.value = {...val}
@@ -166,6 +173,12 @@ const addEdit = (type, row) => {
detailDiloag.value.init(type, row);
})
};
+
+watch(() => route.query.id, (val) => {
+ if (val) {
+ addEdit('detail', {id:route.query.id});
+ }
+},{deep:true})
// 签收
const signRow = (row) =>{
proxy.$confirm("确定要签收", "警告", {type: "warning"}).then(() => {
@@ -189,8 +202,6 @@ const fkRow = (row) => {
}
const showBtn = (row) => {
let item = row.xfbmList.find(v => v.ssbmdm == userInfo.value.deptCode)
- console.log(item);
-
return item?true:false
// // if (item) {
// // return item.zlzt == '01' ? 'sign' : item.zlzt == '02' ? 'feedback' : ''
diff --git a/src/views/home/components/qxsqDialog.vue b/src/views/home/components/qxsqDialog.vue
index 828cf82..7150aa8 100644
--- a/src/views/home/components/qxsqDialog.vue
+++ b/src/views/home/components/qxsqDialog.vue
@@ -1,6 +1,6 @@
-
+
@@ -14,6 +14,13 @@
+
+
+
+
+
+
+
确定
重置
@@ -30,8 +37,10 @@ import emitter from "@/utils/eventBus.js";
import { onMounted, ref,onUnmounted } from 'vue'
const showDialog = ref(false)
const listQuery = ref({
- xm: getItem("USERNAME") || '',
- sfzh: getItem("idEntityCard") || '',
+ tjrxm: getItem("USERNAME") || '',
+ tjrsfzh: getItem("idEntityCard") || '',
+ xm: '',
+ sfzh: '',
lxdh: '',
qxsm: '',
})
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 2528bd2..a49dbcb 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -126,11 +126,11 @@
+
-
@@ -164,15 +164,14 @@ import { bm, centralPoint } from '@/views/backOfficeSystem/IntelligentControl/De
import Judgment from './model/judgment.vue'
import { tbYjxxGetList } from '@/api/zdr.js'
import GeneralWindow from './model/generalWindow.vue'
-import WebSoketClass from '@/utils/webSocket.js'
import { timeValidate } from '@/utils/tools.js'
import Statistics from './model/statistics.vue'
import MyCase from './model/myCase.vue'
// 导入音频播放器工具类
import audioPlayer from '@/utils/audioPlayer'
+import TestDiv from "@/components/common/TestDiv.vue";
const { proxy } = getCurrentInstance();
const { D_BZ_JQDJ } = proxy.$dict('D_BZ_JQDJ')
-const webSoket = new WebSoketClass()
const modelWarning = ref(true)
const modelQbsb = ref(true)
const searchText = ref('')
@@ -346,7 +345,7 @@ onMounted(() => {
getTbYjxxGetList()
// 初始化音频播放器
initAudioPlayer()
- // webSoket.connect()
+
// 监听音频播放事件,获取WebSocket消息数据
emitter.on("openYp", (newsDate) => {
// 使用工具类播放音频,自动处理静音切换
@@ -462,10 +461,6 @@ onUnmounted(() => {
if (audioPlayer) {
audioPlayer.destroy()
}
- // 组件卸载时关闭WebSocket连接
- if (webSoket) {
- webSoket.closeConnection()
- }
})
From f30a2d7411852ba3191262cc7d0242e7023b2f40 Mon Sep 17 00:00:00 2001
From: lcw <1878680531@qq.com>
Date: Sat, 7 Feb 2026 16:54:04 +0800
Subject: [PATCH 2/2] lcw
---
src/components/common/TestDiv copy.vue | 240 +++++++++++++++++++++++++
src/components/common/TestDiv.vue | 72 ++++++--
src/components/common/item.vue | 1 +
3 files changed, 299 insertions(+), 14 deletions(-)
create mode 100644 src/components/common/TestDiv copy.vue
diff --git a/src/components/common/TestDiv copy.vue b/src/components/common/TestDiv copy.vue
new file mode 100644
index 0000000..0649e7a
--- /dev/null
+++ b/src/components/common/TestDiv copy.vue
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
diff --git a/src/components/common/TestDiv.vue b/src/components/common/TestDiv.vue
index 0649e7a..41f00bb 100644
--- a/src/components/common/TestDiv.vue
+++ b/src/components/common/TestDiv.vue
@@ -19,11 +19,11 @@
// 测试div组件,用于在后台和大屏页面都显示
import { ref, onMounted, onUnmounted } from 'vue'
import { Close } from '@element-plus/icons-vue'
-import WebSoketClass from '@/utils/webSocket.js'
import emitter from "@/utils/eventBus.js"; // 导入事件总线
+import { qcckGet } from '@/api/qcckApi'
import Item from './item.vue'
import { AudioPlayerClass } from '@/utils/audioPlayer.js'
-const webSoket = new WebSoketClass()
+import {getItem} from '@/utils/storage.js'
const dataList = ref([])
const timekeeping = ref(null)
const countdown = ref(0) // 倒计时时间(秒)
@@ -90,24 +90,56 @@ const resetCountdown = () => {
}
}, 1000)
}
+
+
+// 做一个定时器15s一次
+const checkNews = ref(null)
+const checkNewsInterval = 15000 // 15秒
+checkNews.value = setInterval(() => {
+ dataModel()
+}, checkNewsInterval)
onMounted(() => {
// 初始化音频播放器
initAudioPlayers()
-
emitter.on('webSocketMessage', (newsDate) => {
if (newsDate) {
- dataList.value.unshift({...newsDate.data,typeMasgeLx:newsDate.type})
- // 根据消息类型播放音频
- playAudioByType(newsDate.type)
+ dataList.value = newsDate
+ // dataList.value.unshift({...newsDate.data,typeMasgeLx:newsDate.type})
+ // 根据消息类型播放音频
+ playAudioByType(newsDate[0].typeMasgeLx)
resetCountdown()
}
})
- // 组件挂载时执行的操作
- webSoket.connect()
- console.log('组件挂载时执行的操作')
})
+const idEntityCard = ref(getItem('idEntityCard'))
+const dataModel = () => {
+ qcckGet({}, '/mosty-gsxt/dsjJbxx/message').then(res => {
+ if (res) {
+ const yjmasg = res.filter(item => item.type === '01')
+ if (yjmasg.length > 0) {
+ emitter.emit('openYp', yjmasg[0].obj); // 触发音频播放
+ } else {
+const data=res.filter(item=>item.sfzList.includes(idEntityCard.value))
+ const infoMasge =data.map(item => {
+ return {
+ ...item.obj,
+ typeMasgeLx: item.type
+ }
+ })
+ console.log(infoMasge);
+ emitter.emit('webSocketMessage', infoMasge)
+ }
+ }
+ })
+
+}
+
+// if (newsDate.type === '01') {
+// // 触发音频播放
+// console.log('触发音频播放');
+// emitter.emit('openYp', newsDate.data); // 传递消息数据
+// } else {
onUnmounted(() => {
- webSoket.closeConnection()
emitter.off('webSocketMessage')
if (timekeeping.value) {
clearInterval(timekeeping.value)
@@ -118,6 +150,11 @@ onUnmounted(() => {
player.destroy()
}
})
+ // 清除定时器
+ if (checkNews.value) {
+ clearInterval(checkNews.value)
+ checkNews.value = null
+ }
// 组件卸载时执行的操作
console.log('组件卸载时执行的操作')
})
@@ -143,6 +180,7 @@ onUnmounted(() => {
transform: translateX(100%);
opacity: 0;
}
+
to {
transform: translateX(0);
opacity: 1;
@@ -180,11 +218,14 @@ onUnmounted(() => {
}
@keyframes pulse {
- 0%, 100% {
+
+ 0%,
+ 100% {
opacity: 1;
transform: scale(1);
box-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
}
+
50% {
opacity: 0.8;
transform: scale(1.2);
@@ -230,11 +271,14 @@ onUnmounted(() => {
max-height: 150px;
overflow-y: auto;
padding: 12px;
- scrollbar-width: none; /* Firefox */
- -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none;
+ /* Firefox */
+ -ms-overflow-style: none;
+ /* IE and Edge */
&::-webkit-scrollbar {
- display: none; /* Chrome, Safari and Opera */
+ display: none;
+ /* Chrome, Safari and Opera */
}
}
diff --git a/src/components/common/item.vue b/src/components/common/item.vue
index f0c6d25..5e94c59 100644
--- a/src/components/common/item.vue
+++ b/src/components/common/item.vue
@@ -49,6 +49,7 @@ const informationMap = {
'04': '研判指令',
'05': '线索下发',
}
+const emit=defineEmits(['goDetail'])
const goDetail = (id, lx) => {
let path = ''
switch (lx) {