Compare commits

...

9 Commits

Author SHA1 Message Date
c2e698079d 100j相关bug修复 2026-03-27 10:04:07 +08:00
cce863c590 提交 2026-03-20 14:58:40 +08:00
09539ecfb8 100j页面功能优化 2026-03-19 13:52:37 +08:00
fee33a68c6 pc端100j功能完成 2026-03-19 11:42:26 +08:00
8584cc78b2 100j控制面板功能完成 2026-03-18 16:12:29 +08:00
7d604dcd53 100Jpc端页面开发 2026-03-17 18:39:40 +08:00
9ddb412b7a Merge branch 'liubiao-main' 2026-03-10 18:04:12 +08:00
ee50e38292 小优化 2026-03-10 17:30:43 +08:00
29752a70af 修复编辑蓝牙&4G设备时,IEMI不显示的问题 2026-03-06 11:47:57 +08:00
19 changed files with 1365 additions and 555 deletions

View File

@ -5,9 +5,9 @@ VITE_APP_TITLE = 云平台管理系统
VITE_APP_ENV = 'development' VITE_APP_ENV = 'development'
# 开发环境 # 开发环境
# VITE_APP_BASE_API = 'http://139.224.253.23:8000' VITE_APP_BASE_API = 'http://192.168.2.34:8000'
VITE_APP_BASE_API = 'https://www.cnxhyc.com/jq' #VITE_APP_BASE_API = 'https://www.cnxhyc.com/jq'
#VITE_APP_BASE_API = 'http://192.168.110.57:8000' # VITE_APP_BASE_API = 'http://192.168.110.57:8000'
#代永飞接口 #代永飞接口
# VITE_APP_BASE_API = 'http://457102h2d6.qicp.vip:24689' # VITE_APP_BASE_API = 'http://457102h2d6.qicp.vip:24689'

View File

@ -2,16 +2,10 @@
VITE_APP_TITLE = 云平台管理系统 VITE_APP_TITLE = 云平台管理系统
# 生产环境配置 晶全1 # 生产环境配置 晶全1
VITE_APP_ENV = 'production' VITE_APP_ENV = 'https://www.cnxhyc.com'
# 生产环境配置 富源晟2
# VITE_APP_ENV = 'https://fuyuanshen.com/backend-fys'
# 应用访问路径 晶全1 # 应用访问路径 晶全1
VITE_APP_CONTEXT_PATH = '/PC/' VITE_APP_CONTEXT_PATH = '/jingquan/'
# 高德地图Key
VITE_AMAP_KEY='84a12a692ae378effdf741e16d584cd3'
# 应用访问路径 富源晟2 # 应用访问路径 富源晟2
#VITE_APP_CONTEXT_PATH = '/sys/' #VITE_APP_CONTEXT_PATH = '/sys/'
@ -23,12 +17,7 @@ VITE_APP_MONITOR_ADMIN = '/admin/applications'
VITE_APP_SNAILJOB_ADMIN = '/snail-job' VITE_APP_SNAILJOB_ADMIN = '/snail-job'
# 生产环境 晶全3 代理访问 # 生产环境 晶全3 代理访问
VITE_APP_BASE_API = 'https://www.cnxhyc.com/jq' VITE_APP_BASE_API = '/jq'
# VITE_APP_BASE_API = 'http://139.224.253.23:8000'
# 生产环境 富源晟3
#VITE_APP_BASE_API = '/backend-fys'
# 是否在打包时开启压缩,支持 gzip 和 brotli # 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip VITE_BUILD_COMPRESS = gzip

View File

@ -35,11 +35,13 @@
"image-conversion": "2.1.1", "image-conversion": "2.1.1",
"js-cookie": "3.0.5", "js-cookie": "3.0.5",
"jsencrypt": "3.3.2", "jsencrypt": "3.3.2",
"lamejs": "^1.2.1",
"mitt": "^3.0.1", "mitt": "^3.0.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"paho-mqtt": "^1.1.0", "paho-mqtt": "^1.1.0",
"pinia": "3.0.2", "pinia": "3.0.2",
"qrcode-vue3": "^1.7.1", "qrcode-vue3": "^1.7.1",
"recorder-core": "^1.3.25011100",
"screenfull": "6.0.2", "screenfull": "6.0.2",
"vue": "3.5.13", "vue": "3.5.13",
"vue-cropper": "1.1.1", "vue-cropper": "1.1.1",
@ -72,7 +74,7 @@
"sass": "1.87.0", "sass": "1.87.0",
"terser": "^5.43.1", "terser": "^5.43.1",
"typescript": "~5.8.3", "typescript": "~5.8.3",
"unocss": "^66.0.0", "unocss": "^0.58.0",
"unplugin-auto-import": "19.1.2", "unplugin-auto-import": "19.1.2",
"unplugin-icons": "22.1.0", "unplugin-icons": "22.1.0",
"unplugin-vue-components": "28.5.0", "unplugin-vue-components": "28.5.0",

View File

@ -1,3 +1,4 @@
import { param } from '@/utils';
import request from '@/utils/request'; import request from '@/utils/request';
// 详情信息 // 详情信息
@ -7,10 +8,20 @@ export const deviceDeatil = (id: string) => {
method: 'get', method: 'get',
}); });
}; };
// 灯光模式 // 警示灯爆闪模式
export const strobeMode = (data: any) => {
return request({
url: `/api/hby100j/device/strobeMode`,
method: 'post',
data: data
});
};
// 灯光亮度
function lightModeSettings (data: any) { function lightModeSettings (data: any) {
return request({ return request({
url: `/app/hby100j/device/lightAdjustment`, url: `/api/hby100j/device/lightAdjustment`,
method: 'post', method: 'post',
data: data data: data
}); });
@ -18,7 +29,7 @@ function lightModeSettings (data: any) {
//频率调节 //频率调节
function staticPowerSetting (data: any) { function staticPowerSetting (data: any) {
return request({ return request({
url: `/app/hby100j/device/strobeFrequency`, url: `/api/hby100j/device/strobeFrequency`,
method: 'post', method: 'post',
data: data data: data
}); });
@ -26,7 +37,7 @@ function staticPowerSetting (data: any) {
// 修改音量 // 修改音量
function settingUpdateVolume (data: any) { function settingUpdateVolume (data: any) {
return request({ return request({
url: `/app/hby100j/device/updateVolume`, url: `/api/hby100j/device/updateVolume`,
method: 'post', method: 'post',
data: data data: data
}); });
@ -35,17 +46,90 @@ function settingUpdateVolume (data: any) {
// 强制报警 // 强制报警
function SosSetting (data: any) { function SosSetting (data: any) {
return request({ return request({
url: `/app/hby100j/device/forceAlarmActivation`, url: `/api/hby100j/device/forceAlarmActivation`,
method: 'post', method: 'post',
data: data data: data
}); });
}; };
// 语音列表
function queryAudioFileList (params: any) {
return request({
url: `/api/video/queryAudioFileList`,
method: 'get',
params: params
});
}
// 提取文本内容
function extractText (data: any) {
return request({
url: `/api/video/extract`,
method: 'post',
data: data
});
}
// 上传音频文件
function uploadAudioToOss (data: any) {
return request({
url: `/api/video/uploadAudioToOss`,
method: 'post',
data: data
});
}
// 文本转语音
export function videTtsToOss(data:any) {
return request({
url: `/api/video/ttsToOss`,
method: 'post',
data:data
})
}
// 重命名
export function videRenameAudioFile(data:any) {
return request({
url: `/api/video/renameAudioFile`,
method: 'post',
data:data
})
}
// 删除语音文件列表
export function deviceDeleteAudioFile(params:any) {
return request({
url: `/api/video/deleteAudioFile`,
method: 'get',
params:params
})
}
// 更新语音,使用语音
export function deviceUpdateVoice(data:any) {
return request({
url: `/api/hby100j/device/updateVoice`,
method: 'post',
data:data
})
}
// 语音播放
export function deviceVoiceBroadcast(data:any) {
return request({
url: `/api/hby100j/device/voiceBroadcast`,
method: 'post',
data:data
})
}
export default { export default {
deviceDeatil, deviceDeatil,
lightModeSettings:lightModeSettings, lightModeSettings:lightModeSettings,
SosSetting:SosSetting, SosSetting:SosSetting,
staticPowerSetting:staticPowerSetting, staticPowerSetting:staticPowerSetting,
settingUpdateVolume:settingUpdateVolume settingUpdateVolume:settingUpdateVolume,
queryAudioFileList,
videRenameAudioFile,
deviceDeleteAudioFile,
deviceUpdateVoice,
videTtsToOss,
uploadAudioToOss,
extractText,
strobeMode,
deviceVoiceBroadcast
}; };

View File

@ -1,3 +1,5 @@
import { string } from "vue-types";
export interface deviceQuery { export interface deviceQuery {
groupId: string; groupId: string;
pageNum: number; pageNum: number;
@ -39,7 +41,9 @@ export interface DeviceDetail {
strobeFrequency: string; strobeFrequency: string;
volume: string; volume: string;
chargeState: string; chargeState: string;
alarmStatus: number alarmStatus: number,
voiceStrobeAlarm?:number
voiceBroadcast?:number
} }
// 定义灯光模式的类型接口 // 定义灯光模式的类型接口
export interface LightMode { export interface LightMode {

BIN
src/assets/images/dw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

BIN
src/assets/images/hb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/images/hbAc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/images/jwd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

BIN
src/assets/images/ly.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/images/lz.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
src/assets/images/rg1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

BIN
src/assets/images/rg1Ac.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/assets/images/zk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

BIN
src/assets/images/zt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 992 B

File diff suppressed because it is too large Load Diff

View File

@ -37,7 +37,7 @@
<el-collapse-item name="1"> <el-collapse-item name="1">
<el-form ref="queryFormRef" :model="queryParams" :inline="true" class="queryFormRef"> <el-form ref="queryFormRef" :model="queryParams" :inline="true" class="queryFormRef">
<el-form-item label="设备类型" prop="deviceType"> <el-form-item label="设备类型" prop="deviceType">
<el-select v-model="queryParams.deviceType" placeholder="设备类型" clearable> <el-select v-model="queryParams.deviceType" placeholder="设备类型" clearable filterable>
<el-option v-for="item in deviceTypeOptions" :key="item.value" :label="item.typeName" <el-option v-for="item in deviceTypeOptions" :key="item.value" :label="item.typeName"
:value="item.deviceTypeId" /> :value="item.deviceTypeId" />
</el-select> </el-select>

View File

@ -227,7 +227,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="设备类型" prop="deviceType"> <el-form-item label="设备类型" prop="deviceType">
<el-select v-model="form.deviceType" placeholder="设备类型" @change="(id) => handleDeviceTypeChange(id)" <el-select v-model="form.deviceType" placeholder="设备类型" @change="(id) => handleDeviceTypeChange(id)"
> clearable filterable>
<el-option v-for="item in deviceTypeOptions" :key="item.value" :label="item.typeName" <el-option v-for="item in deviceTypeOptions" :key="item.value" :label="item.typeName"
:value="item.id" /> :value="item.id" />
</el-select> </el-select>
@ -622,6 +622,7 @@ const handleAdd = async () => {
}; };
/** 修改按钮操作 */ /** 修改按钮操作 */
const handleUpdate = async (row?: deviceForm) => { const handleUpdate = async (row?: deviceForm) => {
debugger;
reset(); reset();
dialog.visible = true; dialog.visible = true;
dialog.title = '修改设备'; dialog.title = '修改设备';
@ -663,29 +664,29 @@ const handleDeviceTypeChange = async (deviceTypeId: string | number) => {
showImeiField.value = false; showImeiField.value = false;
communicationModeInfo.value = null; communicationModeInfo.value = null;
// 编辑时如果有值,根据已有值确定显示哪个字段 // 编辑时如果有值,根据已有值确定显示哪个字段
if (form.value.id) { // if (form.value.id) {
console.log('zheshi me1 '); // console.log('zheshi me1 ');
// 1. 先判断Mac 和 Imei 都有值(新增的关键分支) // // 1. 先判断Mac 和 Imei 都有值(新增的关键分支)
const hasMac = typeof form.value.deviceMac === 'string' && form.value.deviceMac.trim() !== ''; // const hasMac = typeof form.value.deviceMac === 'string' && form.value.deviceMac.trim() !== '';
const hasImei = typeof form.value.deviceImei === 'string' && form.value.deviceImei.trim() !== ''; // const hasImei = typeof form.value.deviceImei === 'string' && form.value.deviceImei.trim() !== '';
if (hasMac && hasImei) { // if (hasMac && hasImei) {
//两个都有值:显示两个字段 + 都加校验 // //两个都有值:显示两个字段 + 都加校验
showMacField.value = true; // showMacField.value = true;
showImeiField.value = true; // showImeiField.value = true;
console.log('两个字段都有值'); // console.log('两个字段都有值');
} else if (hasMac) { // } else if (hasMac) {
showMacField.value = true; // showMacField.value = true;
showImeiField.value = false; // showImeiField.value = false;
rules.value.deviceImei = []; // rules.value.deviceImei = [];
console.log('只有 Mac 有值'); // console.log('只有 Mac 有值');
} else if (hasImei) { // } else if (hasImei) {
showImeiField.value = true; // showImeiField.value = true;
showMacField.value = false; // showMacField.value = false;
rules.value.deviceMac = []; // rules.value.deviceMac = [];
console.log('只有 Imei 有值'); // console.log('只有 Imei 有值');
} // }
return; // return;
} // }
if (isProcessing) return; if (isProcessing) return;
isProcessing = true; isProcessing = true;
// 新增或编辑时没有值,根据设备类型获取通讯方式 // 新增或编辑时没有值,根据设备类型获取通讯方式