Compare commits

..

22 Commits

Author SHA1 Message Date
wangyan dba0681a65 feat(tbiron): 新增一氧化碳报警器集中显示区域字段
- 在 TbIronEquipmentInfoEntity 实体类中添加 displayArea 字段- 更新前端 add.vue 组件,增加集中显示区域输入框
- 修改 edit_sensor.vue 组件,新增传感编码(上报)字段- 在 index.vue 页面中展示集中显示区域列并初始化数据- 优化设备ID重复性校验逻辑,避免同一设备误判
2025-11-02 17:21:50 +08:00
wangyan cbcff4ee85 feat(env): 配置视频监控 WebSocket 地址- 在开发环境和生产环境中添加 VITE_VIDEO_WEB_SOCKET_URL 配置项- 更新 env.d.ts 类型定义文件,移除旧的 WebSocket 配置项- 修改 playVideo.vue 组件,使用环境变量配置 WebSocket 地址
- 移除了在线学习和掉线监控相关 WebSocket 配置
- 统一 WebSocket 连接地址为视频监控专用地址
2025-11-02 10:08:49 +08:00
wangyan ebba316be7 feat(video): 实现基于视频流播放WebSocket的FLV功能
- 修改了Java后端代码,将视频转码服务从HLS改为FLV格式输出
- 删除了原有的HLS相关控制器和转码逻辑
- 新增了VideoWebSocketServer和VideoServerPool类来管理WebSocket连接和视频流传输- 更新了前端Vue组件,使用flv.js替代hls.js来播放视频流- 增加了WebSocket通信机制,通过二进制数据传输FLV视频流
- 移除了旧的转码状态检查和控制逻辑
- 优化了FFmpeg命令参数以适配FLV流媒体传输
- 添加了WebSocket服务器启动配置,并集成到应用启动流程中
2025-11-01 20:56:11 +08:00
wangyan 54ca5e9e4c feat(video): 实现后台转码视频播放功能
- 新增“播放后台转码视频”按钮,用于启动转码并播放HLS流- 替换原有大华设备直接播放逻辑为调用后端转码接口
- 引入HLS.js库以支持HLS流播放,并增加错误处理机制
- 修改播放器组件,移除默认控制栏,增加定时检测转码进度逻辑
- 实现转码开始与停止接口调用,增强播放流程的可控性
- 更新弹窗标题与关闭逻辑,优化用户体验
- 调整视频播放器样式,提升视觉效果与兼容性
2025-10-20 17:52:44 +08:00
wangyan b269359715 feat(video): 实现大华设备视频预览功能
- 修改后端控制器路径从 /api/video为 /dahuaVideo
- 更新登录接口使用固定测试凭证
- 实现基于 StreamingResponseBody 的视频流传输
- 前端移除转码相关逻辑,集成大华播放器组件
- 添加设备登录和预览启动/停止接口
-优化视频播放器组件支持大华流媒体播放
- 调整播放器UI增加控制按钮和错误处理- 修复视频播放错误提示和资源释放逻辑
2025-10-20 17:21:06 +08:00
wangyan 93dac9ab39 fix(video): 移除无效的视频播放代码
- 删除了已注释的视频播放器弹窗逻辑
- 清理了不再使用的预览接口调用代码
- 简化了视频转码失败的错误处理流程
2025-10-20 11:53:41 +08:00
wangyan 0888a98ed2 feat(dust): 添加传感器数据接入标识字段
- 在传感器管理页面表单中新增"数据接入标识"输入项
- 更新 dust_device_sensor 表结构,添加 DATA_ACCESS_CODE 字段
- 修改 MyBatis 映射文件,支持 DATA_ACCESS_CODE 的增删改查操作
- 调整设备传感器关联查询,包含新增的 DATA_ACCESS_CODE 字段
- 优化 dust_device 表查询条件,移除冗余的 DEVICE_TYPE 模糊匹配
2025-10-20 11:49:40 +08:00
853931625@qq.com 925d219e35 修改粉尘模块bug 2025-10-17 17:41:54 +08:00
wangyan 9c4f408256 搬运龙钢修复bug 2025-10-17 16:26:41 +08:00
wangyan 88d1e485f2 Merge remote-tracking branch 'origin/dev' into dev 2025-10-16 09:45:36 +08:00
wangyan dae8de2d5d feat(dahua): 更新大华视频控制器并优化动态库加载逻辑
- 将 VideoController重命名为 DahuaVideoController以明确功能归属
- 优化 LibraryLoad 类中的动态库加载逻辑,支持从资源和文件系统双重加载- 增强异常处理信息提示,便于调试和问题排查
- 添加 dynamic-lib-load.xml 配置文件,定义不同平台所需的动态库列表- 更新 SMB 配置信息,调整文件存储路径及访问地址- 注释掉前端视频播放相关代码,预留后续开发接口
2025-10-16 09:41:27 +08:00
853931625@qq.com 16cf0e8b69 新增 粉尘模块 2025-10-15 13:33:39 +08:00
wangyan eff8e5bcad ```
feat(env): 更新开发与生产环境配置中的服务地址

将 .env 和 .env.production 中的文件服务地址、API 基础路径等配置,
以及后端 application-local.properties 中的数据源、Redis 地址等相关配置,
统一更新为新的服务器 IP 和端口,确保本地和生产环境正确连接新部署的服务。
同时更新了视频播放地址以匹配新的流媒体服务地址。
```
2025-09-27 14:47:12 +08:00
wangyan 9abb9eadeb fix(video_manager): 更新转码视频播放地址
将转码视频的播放地址从本地开发地址更新为实际部署地址,确保视频能够正常播放。
2025-09-25 15:32:07 +08:00
songwenxuan 9a02e6fbeb 修复时间展示错误 2025-09-25 15:09:52 +08:00
songwenxuan 7ab401f0a4 修复视频文件报错 2025-09-24 22:01:55 +08:00
wangyan 2d5a73478f ```
feat(env): 更新开发环境和生产环境的文件服务地址

- 修改 `.env` 中的 `VITE_FILE_URL` 地址为新文件服务器地址- 更新 `.env.development` 中的 `VITE_BASE_URL`、`VITE_ON_LINE_WEB_SOCKET_URL` 和 `VITE_LEARNING_WEB_SOCKET_URL` 为新的开发环境地址- 调整视频播放组件中环境变量获取方式,增强兼容性和安全性
- 修改视频转码接口返回的视频路径前缀,适配新的存储目录结构-优化 Java 后端 FFmpeg 路径获取逻辑,Linux 环境下优先使用系统安装路径
- 更新 HLS 输出路径至 `/mnt/file/hls/` 目录,统一管理转码文件
```
2025-09-24 21:59:08 +08:00
songwenxuan 8d890cb357 视频接收 2025-09-24 20:09:25 +08:00
songwenxuan 783a8b2425 解决打不了包的问题 2025-09-21 10:04:55 +08:00
songwenxuan 738010ef96 首页样式更改为山西新泰钢铁 2025-09-15 15:24:20 +08:00
wangyan 227b1bc1aa 企业名称脱敏 2025-09-10 09:06:36 +08:00
wangyan 47cfc3e898 初始化 2025-09-09 09:31:59 +08:00
1619 changed files with 250373 additions and 1 deletions

4
.env Normal file
View File

@ -0,0 +1,4 @@
VITE_PROXY=/api
#VITE_FILE_URL=http://183.251.104.38:10110/file/
VITE_FILE_URL=http://172.16.70.226:7811/file/
VITE_TEMPLATE_URL=http://183.251.104.38:10110/file

12
.env.development Normal file
View File

@ -0,0 +1,12 @@
VITE_BASE=/
VITE_BASE_URL=http://192.168.4.40:8095/
#websocket 视频监控
VITE_VIDEO_WEB_SOCKET_URL=ws://192.168.4.40:8888
#websocket t掉线
#VITE_ON_LINE_WEB_SOCKET_URL=ws://192.168.4.40:8869
#websocket 在线学习
#VITE_LEARNING_WEB_SOCKET_URL=ws://192.168.4.40:8899

14
.env.production Normal file
View File

@ -0,0 +1,14 @@
VITE_BASE=/dist
VITE_BASE_URL=http://172.16.70.226:8081/sx_yjb/
#websocket 视频监控
VITE_VIDEO_WEB_SOCKET_URL=ws://172.16.70.226:8888
#websocket t掉线
#VITE_ON_LINE_WEB_SOCKET_URL=ws://172.16.70.226:10103
#websocket 在线学习
#VITE_LEARNING_WEB_SOCKET_URL=ws://172.16.70.226:8899

5
.eslintignore Normal file
View File

@ -0,0 +1,5 @@
public
dist
package.json
!.prettierrc.cjs
env.d.ts

55
.eslintrc.cjs Normal file
View File

@ -0,0 +1,55 @@
module.exports = {
env: {
browser: true,
es2021: true,
node: true
},
extends: [
"plugin:vue/vue3-recommended",
"standard",
"@vue/prettier",
"eslint:recommended"
],
parserOptions: {
ecmaVersion: "latest",
sourceType: "module"
},
plugins: ["vue"],
rules: {
"no-console": "warn",
"vue/multi-word-component-names": "off",
"vue/no-v-html": "off",
"vue/require-default-prop": "off",
"camelcase": "off",
"eqeqeq": "error",
"vue/no-template-shadow": "error",
"vue/attribute-hyphenation": "off",
"vue/html-end-tags": "error",
"vue/eqeqeq": "error",
"vue/component-name-in-template-casing": ["error", "kebab-case"],
"vue/enforce-style-attribute": [
"error",
{ "allow": ["scoped", "module"] }
],
"vue/v-on-event-hyphenation": ["error", "always",{
"autofix": true,
}],
"vue/require-explicit-emits": "error",
"no-unused-vars": [
"error",
{ vars: "all", args: "after-used", ignoreRestSiblings: false }
],
"linebreak-style": ["off",'windows'],
"no-restricted-properties": [
"error",
{ "object": "Object", "property": "assign"}
],
"no-debugger": 0
},
globals: {
BMapGL: "readonly",
JSEncrypt: "readonly",
Aliplayer: "readonly",
AliyunUpload: "readonly",
}
};

24
.gitignore vendored Normal file
View File

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

4
.prettierrc.cjs Normal file
View File

@ -0,0 +1,4 @@
module.exports = {
extends: ["@vue/prettier", "plugin:prettier/recommended"],
endOfLine: "crlf",
};

15
env.d.ts vendored Normal file
View File

@ -0,0 +1,15 @@
interface ImportMetaEnv {
// Auto generate by env-parse
readonly VITE_PROXY: string
/**
* VITE_FILE_URL=http://183.251.104.38:10110/file/
*/
readonly VITE_FILE_URL: string
readonly VITE_TEMPLATE_URL: string
readonly VITE_BASE: string
readonly VITE_BASE_URL: string
/**
* websocket
*/
readonly VITE_VIDEO_WEB_SOCKET_URL: string
}

29
index.html Normal file
View File

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
<title>新泰安全管理系统</title>
</head>
<body>
<div id="app"></div>
<noscript>
<strong>很抱歉如果没有启用JavaScript网站无法正常工作请启用JavaScript使其正常工作。</strong>
</noscript>
<script type="text/javascript"
src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script>
<script type="text/javascript" src="/jsencrypt.min.js"></script>
<script type="module" src="/src/main.js"></script>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
<link rel="stylesheet" type="text/css" href="/lib/Cesium/Widgets/widgets.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
<script src="/aliyun-upload-sdk-1.5.6/lib/es6-promise.min.js"></script>
<script src="/aliyun-upload-sdk-1.5.6/lib/aliyun-oss-sdk-6.17.1.min.js"></script>
<script src="/aliyun-upload-sdk-1.5.6/aliyun-upload-sdk-1.5.6.min.js"></script>
<script src="/lib/Cesium/Cesium.js"></script>
<script src="/lib/truf/truf.min.js"></script>
<script src="/lib/Cesium/CustomCesium.js"></script>
</body>
</html>

10
jsconfig.json Normal file
View File

@ -0,0 +1,10 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": [
"src/*"
]
}
}
}

7966
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

79
package.json Normal file
View File

@ -0,0 +1,79 @@
{
"name": "vue3_template",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint --ext .js,.vue --fix src .prettierrc.cjs"
},
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"@icon-park/vue-next": "^1.4.2",
"@vueuse/core": "^9.13.0",
"@vueuse/integrations": "^10.7.1",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"animate.css": "^4.1.1",
"autofit.js": "^3.0.7",
"axios": "^1.6.3",
"dayjs": "^1.11.10",
"echarts": "^5.4.3",
"element-plus": "^2.6.1",
"flv.js": "^1.6.2",
"hls.js": "^1.6.13",
"html2canvas": "^1.4.1",
"jspdf": "^2.5.1",
"lodash-es": "^4.17.21",
"mitt": "^3.0.1",
"mp4box": "^0.5.2",
"nanoid": "^5.0.4",
"normalize.css": "^8.0.1",
"pako": "^2.1.0",
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"qrcode": "^1.5.3",
"qs": "^6.11.2",
"relation-graph": "^2.1.24",
"throttle-debounce": "^5.0.0",
"v-viewer": "^3.0.11",
"vant": "^4.8.4",
"vue": "^3.4.3",
"vue-countup-v3": "^1.4.1",
"vue-draggable-plus": "^0.3.4",
"vue-esign": "^1.1.4",
"vue-router": "^4.2.5",
"vue3-pdfjs": "^0.1.6",
"vue3-print-nb": "^0.1.4",
"vue3-puzzle-vcode": "^1.1.5",
"vue3-seamless-scroll": "^2.0.1"
},
"devDependencies": {
"@our-patches/postcss-px-to-viewport": "^1.2.0",
"@types/node": "^18.19.4",
"@vitejs/plugin-basic-ssl": "^1.0.2",
"@vitejs/plugin-vue": "^4.6.2",
"@vue/eslint-config-prettier": "^7.1.0",
"autoprefixer": "^10.4.16",
"eslint": "^8.56.0",
"eslint-config-prettier": "^8.10.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-n": "^15.7.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-vue": "^9.19.2",
"prettier": "^2.8.8",
"sass": "^1.69.0",
"unplugin-auto-import": "^0.12.2",
"unplugin-vue-components": "^0.22.12",
"vite": "^4.5.1",
"vite-plugin-enhance-log": "^0.5.2",
"vite-plugin-env-parse": "^1.0.12",
"vite-plugin-eslint": "^1.8.1",
"vite-plugin-remove-console": "^2.2.0",
"vue-eslint-parser": "^9.3.2"
}
}

22
postcss.config.cjs Normal file
View File

@ -0,0 +1,22 @@
const path = require('path')
module.exports = {
plugins: {
autoprefixer: {
overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8', '> 1%'],
grid: true,
},
// '@our-patches/postcss-px-to-viewport': {
// unitToConvert: 'px',
// viewportWidth: 1920,
// unitPrecision: 3,
// viewportUnit: 'vw',
// selectorBlackList: ['.ignore', '.hairlines'],
// minPixelValue: 1,
// mediaQuery: false,
// exclude: [/^node_modules$/],
// include: [/BI/],
// landscapeUnit: 'vw',
// landscapeWidth: 750,
// }
},
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

3
public/jsencrypt.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<TileMap version="1.0.0" tilemapservice="http://tms.osgeo.org/1.0.0">
<Title>NE2_HR_LC_SR_W_DR_recolored.tif</Title>
<Abstract></Abstract>
<SRS>EPSG:4326</SRS>
<BoundingBox miny="-90.00000000000000" minx="-180.00000000000000" maxy="90.00000000000000" maxx="180.00000000000000"/>
<Origin y="-90.00000000000000" x="-180.00000000000000"/>
<TileFormat width="256" height="256" mime-type="image/jpg" extension="jpg"/>
<TileSets profile="geodetic">
<TileSet href="0" units-per-pixel="0.70312500000000" order="0"/>
<TileSet href="1" units-per-pixel="0.35156250000000" order="1"/>
<TileSet href="2" units-per-pixel="0.17578125000000" order="2"/>
</TileSets>
</TileMap>

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Some files were not shown because too many files have changed in this diff Show More