diff --git a/.env.development b/.env.development index 0490fbf..5642af4 100644 --- a/.env.development +++ b/.env.development @@ -5,8 +5,8 @@ VITE_APP_TITLE = 云平台管理系统 VITE_APP_ENV = 'development' # 开发环境 - VITE_APP_BASE_API = 'http://47.120.79.150/backend' -#VITE_APP_BASE_API = 'http://192.168.2.23:8000' +# VITE_APP_BASE_API = 'http://47.120.79.150/backend' +VITE_APP_BASE_API = 'http://192.168.2.23:8000' # VITE_APP_BASE_API = 'http://localhost:8000' diff --git a/src/api/home/index.ts b/src/api/home/index.ts new file mode 100644 index 0000000..bdf8456 --- /dev/null +++ b/src/api/home/index.ts @@ -0,0 +1,24 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +// 获取 数据总览 DataOverview +export const getDataOverview = (params) => { + return request({ + url: '/api/device/homepage/getDataOverview', + method: 'get', + params: params + }); +}; +// 设备分类 +export const getEquipmentClassification = (params) => { + return request({ + url: '/api/device/homepage/getEquipmentClassification', + method: 'get', + params: params + }); +}; + + +export default { + getDataOverview, + getEquipmentClassification +} \ No newline at end of file diff --git a/src/api/home/types.ts b/src/api/home/types.ts new file mode 100644 index 0000000..1ae8f5d --- /dev/null +++ b/src/api/home/types.ts @@ -0,0 +1,6 @@ +export interface DataOverviewType { + devicesNumber: number | string; + equipmentOnline: number | string; + bindingNew: number | string; + equipmentAbnormal: number | string; +} \ No newline at end of file diff --git a/src/assets/index/add.png b/src/assets/index/add.png new file mode 100644 index 0000000..17d92cf Binary files /dev/null and b/src/assets/index/add.png differ diff --git a/src/assets/index/conton.png b/src/assets/index/conton.png new file mode 100644 index 0000000..561b274 Binary files /dev/null and b/src/assets/index/conton.png differ diff --git a/src/assets/index/device_add.png b/src/assets/index/device_add.png new file mode 100644 index 0000000..54bb4df Binary files /dev/null and b/src/assets/index/device_add.png differ diff --git a/src/assets/index/device_group.png b/src/assets/index/device_group.png new file mode 100644 index 0000000..6d8ac6f Binary files /dev/null and b/src/assets/index/device_group.png differ diff --git a/src/assets/index/device_type.png b/src/assets/index/device_type.png new file mode 100644 index 0000000..241df75 Binary files /dev/null and b/src/assets/index/device_type.png differ diff --git a/src/assets/index/device_yc.png b/src/assets/index/device_yc.png new file mode 100644 index 0000000..7a99dd2 Binary files /dev/null and b/src/assets/index/device_yc.png differ diff --git a/src/assets/index/devices_online.png b/src/assets/index/devices_online.png new file mode 100644 index 0000000..d0b4b7f Binary files /dev/null and b/src/assets/index/devices_online.png differ diff --git a/src/assets/index/online.png b/src/assets/index/online.png new file mode 100644 index 0000000..5ee99b1 Binary files /dev/null and b/src/assets/index/online.png differ diff --git a/src/views/controlCenter/6170/index.vue b/src/views/controlCenter/6170/index.vue index 13f7a78..add244f 100644 --- a/src/views/controlCenter/6170/index.vue +++ b/src/views/controlCenter/6170/index.vue @@ -229,7 +229,7 @@ const laserMode = ref({ active: false }); -const deviceDetail = ref({ +const deviceDetail = ref({ // 重点:personnelInfo 初始化为空对象,避免 undefined personnelInfo: { unitName: '', @@ -246,7 +246,9 @@ const deviceDetail = ref({ longitude: '', latitude: '', address: '', - sendMsg: '' + sendMsg: '', + chargeState: '0', + typeName: '' }); // 保留原有的操作中标志位 const isUpdatingStatus = ref(false); @@ -429,7 +431,7 @@ const saveBtn = () => { // 强制报警 const forceAlarm = async () => { try { - await proxy?.$modal.confirm('确定要对该设备开启强制报警?', ''); + await proxy?.$modal.confirm('确定要对该设备开启强制报警?', '提示'); forceAlarmLoading.value = true // 2. 准备请求数据 const batchId = generateShortId(); @@ -586,7 +588,7 @@ const handleDeviceMessage = (msg: any) => { deviceDetail.value.batteryPercentage = deviceState[3]; //电量 deviceDetail.value.batteryRemainingTime = deviceState[5]; //续航时间 // getList(); // 重新获取设备详情 - if (deviceDetail.value.batteryPercentage < 20 && deviceDetail.value.chargeState == 0) { + if (deviceDetail.value.batteryPercentage < 20 && Number(deviceDetail.value.chargeState) == 0) { centerDialogVisible.value=true } break; diff --git a/src/views/equipmentManagement/deviceType/index.vue b/src/views/equipmentManagement/deviceType/index.vue index eb8e5ad..98c0bab 100644 --- a/src/views/equipmentManagement/deviceType/index.vue +++ b/src/views/equipmentManagement/deviceType/index.vue @@ -64,6 +64,7 @@ @@ -105,7 +106,7 @@ - + @@ -141,6 +142,7 @@ + diff --git a/src/views/equipmentManagement/devices/index.vue b/src/views/equipmentManagement/devices/index.vue index 7cb5977..b5ed104 100644 --- a/src/views/equipmentManagement/devices/index.vue +++ b/src/views/equipmentManagement/devices/index.vue @@ -43,39 +43,44 @@ - - @@ -115,93 +120,42 @@ - - + + + + -
-
-
-
- - -
- 设备信息 -
-
- 用户信息 -
-
- 操作记录 -
-
- 报警记录 -
-
- 分享管理 -
-
- 充放电 -
-
-
- - - -
-
- - -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
(['', '']); @@ -609,7 +564,6 @@ const handleAdd = async () => { // 每次打开弹框时获取最新的设备类型数据 getDeviceType(); }; - /** 修改按钮操作 */ const handleUpdate = async (row?: deviceForm) => { reset(); @@ -645,6 +599,7 @@ const handleUpdate = async (row?: deviceForm) => { // 设备类型触发事件 let isProcessing = false; // 添加处理锁 const handleDeviceTypeChange = async (deviceTypeId: string | number) => { + console.log(deviceTypeId, 'deviceTypeIddeviceTypeId'); // 重置规则和显示状态 rules.value.deviceMac = []; rules.value.deviceImei = []; @@ -653,12 +608,31 @@ const handleDeviceTypeChange = async (deviceTypeId: string | number) => { communicationModeInfo.value = null; // 编辑时如果有值,根据已有值确定显示哪个字段 if (form.value.id) { - if (form.value.deviceMac) { + console.log('zheshi me1 '); + // 1. 先判断:Mac 和 Imei 都有值(新增的关键分支) + const hasMac = typeof form.value.deviceMac === 'string' && form.value.deviceMac.trim() !== ''; + const hasImei = typeof form.value.deviceImei === 'string' && form.value.deviceImei.trim() !== ''; + if (hasMac && hasImei) { + //两个都有值:显示两个字段 + 都加校验 showMacField.value = true; - rules.value.deviceMac = [{ required: true, message: '请输入设备MAC', trigger: 'blur' }]; - } else if (form.value.deviceImei) { showImeiField.value = true; + rules.value.deviceMac = [{ required: true, message: '请输入设备MAC', trigger: 'blur' }]; rules.value.deviceImei = [{ required: true, message: '请输入设备IMEI', trigger: 'blur' }]; + console.log('两个字段都有值'); + } + else if (hasMac) { + showMacField.value = true; + showImeiField.value = false; + rules.value.deviceMac = [{ required: true, message: '请输入设备MAC', trigger: 'blur' }]; + rules.value.deviceImei = []; + console.log('只有 Mac 有值'); + } + else if (hasImei) { + showImeiField.value = true; + showMacField.value = false; + rules.value.deviceImei = [{ required: true, message: '请输入设备IMEI', trigger: 'blur' }]; + rules.value.deviceMac = []; + console.log('只有 Imei 有值'); } return; } @@ -683,6 +657,9 @@ const handleDeviceTypeChange = async (deviceTypeId: string | number) => { showImeiField.value = true; form.value.deviceMac = ''; // 清空MAC form.value.bluetoothName = '' // 清空蓝牙名称 + } else if (res.data.communicationMode == '2') { //既是4G设备又是蓝牙设备 + showImeiField.value = true; + showMacField.value = true; } } } catch (error) { diff --git a/src/views/index.vue b/src/views/index.vue index 6ea13d0..552b9ab 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -1,174 +1,462 @@ + \ No newline at end of file