Compare commits

...

3 Commits

  1. 5
      web/.env.dev
  2. 8
      web/pnpm-workspace.yaml
  3. 3
      web/src/api/gas/handdetector/index.ts
  4. 7
      web/src/views/HandDevice/Home/components/services/popup.service.ts
  5. 5
      web/src/views/HandDevice/Home/components/types/map.types.ts
  6. 26
      web/src/views/HandDevice/Home/index.vue
  7. 15
      web/src/views/gas/handdetector/HandDetectorForm.vue
  8. 6
      web/src/views/gas/handdetector/index.vue

5
web/.env.dev

@ -3,8 +3,9 @@ NODE_ENV=production
VITE_DEV=true
# 请求路径
VITE_BASE_URL='https://mobile.zdhlcn.com'
VITE_BASE_URL='https://lock.zdhlcn.com:9807'
# VITE_BASE_URL='https://mobile.zdhlcn.com'
# VITE_BASE_URL='https://lock.zdhlcn.com:9807'
VITE_BASE_URL=http://mobile.icpcdev.site
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server

8
web/pnpm-workspace.yaml

@ -0,0 +1,8 @@
onlyBuiltDependencies:
- '@parcel/watcher'
- '@swc/core'
- core-js
- core-js-pure
- es5-ext
- esbuild
- vue-demi

3
web/src/api/gas/handdetector/index.ts

@ -22,6 +22,9 @@ export interface HandDetector {
accuracy?: number // 数值除数
sortOrder?: number // 排序
remark?: string // 备注
time?: number // 时间
value?: number // 数值
}
// GAS手持探测器 API

7
web/src/views/HandDevice/Home/components/services/popup.service.ts

@ -44,8 +44,11 @@ export class PopupService {
<div style="color: ${getStatusColor(status)};">
状态: ${getStatusLabel(status)}
</div>
<div style="margin-top: 4px; font-size: 10px; color: #666;">
坐标: ${markerData.coordinates[0].toFixed(6)}, ${markerData.coordinates[1].toFixed(6)}
<div>${markerData.gasChemical}</div>
<div>${markerData.value} ${markerData.unit ? markerData.unit : ''}</div>
<div>${markerData.time ? markerData.time : '-'} </div>
<div>
${markerData.coordinates[0].toFixed(6)}, ${markerData.coordinates[1].toFixed(6)}
</div>
`
}

5
web/src/views/HandDevice/Home/components/types/map.types.ts

@ -46,7 +46,10 @@ export interface MarkerData extends HandDetector {
/** 标记标题 */
name: string
/** 自定义数据 */
data?: any
data?: any,
value: number,
unit: string,
time: string
}
// 地图组件 Props 接口

26
web/src/views/HandDevice/Home/index.vue

@ -8,6 +8,7 @@ import { HandDetector } from '@/api/gas/handdetector'
import { MarkerData } from './components/types/map.types'
import { Fence } from '@/api/gas/fence'
import { FenceApi } from '@/api/gas/fence'
import dayjs from 'dayjs'
const getDataTimer = ref<NodeJS.Timeout | null>(null)
const markers = ref<MarkerData[]>([])
const fences = ref<Fence[]>([])
@ -16,14 +17,17 @@ const getMarkers = async () => {
console.log('getMarkers')
return await getLastestDetectorData().then((res: HandDetector[]) => {
res = res.filter((i) => i.enableStatus === 1)
res = res.map((i) => {
var res2 = res.map((i) => {
return {
...i,
coordinates: [i.longitude, i.latitude],
data: []
data: [],
time: i.time ? dayjs(i.time).format('YYYY-MM-DD HH:mm:ss') : '',
value: i.value,
unit: i.unit
}
})
markers.value = res as unknown as any[]
markers.value = res2 as unknown as any[]
inited.value = true
})
}
@ -34,14 +38,14 @@ const getFences = async () => {
pageSize: 100
}).then((res) => {
console.log('getFences', res)
let fencesData = res.list as Fence[]
fencesData = fencesData.map((i) => {
return {
...i,
fenceRange: JSON.parse(i.fenceRange)
}
})
fences.value = fencesData as unknown as Fence[]
let fencesData = res.list as Fence[]
fencesData = fencesData.map((i) => {
return {
...i,
fenceRange: JSON.parse(i.fenceRange)
}
})
fences.value = fencesData as unknown as Fence[]
})
}
onMounted(() => {

15
web/src/views/gas/handdetector/HandDetectorForm.vue

@ -23,6 +23,19 @@
/>
</el-select>
</el-form-item>
<!-- 围栏类型 -->
<el-form-item label="围栏类型" prop="fenceType">
<el-radio-group v-model="formData.fenceType">
<el-radio-button
v-for="dict in getIntDictOptions(DICT_TYPE.HAND_DETECTOR_FENCE_TYPE)"
:key="dict.value"
:value="dict.value"
>
{{ dict.label }}
</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="气体类型" prop="gasTypeId">
<el-select
v-model="formData.gasTypeId"
@ -121,6 +134,7 @@ const formData = ref({
name: undefined,
fenceIds: '',
fenceIdsArray: [],
fenceType: undefined,
gasTypeId: undefined,
gasChemical: '',
min: 0,
@ -193,6 +207,7 @@ const resetForm = () => {
name: undefined,
fenceIds: '',
fenceIdsArray: [],
fenceType: undefined,
gasTypeId: undefined,
gasChemical: '',
min: 0,

6
web/src/views/gas/handdetector/index.vue

@ -83,6 +83,12 @@
}}
</template>
</el-table-column>
<!-- 围栏类型 -->
<el-table-column label="围栏类型" align="center" prop="fenceType">
<template #default="scope">
<DictTag :type="DICT_TYPE.HAND_DETECTOR_FENCE_TYPE" :value="scope.row.fenceType" />
</template>
</el-table-column>
<el-table-column label="气体类型" align="center" prop="gasTypeId">
<template #default="scope">
{{ handDetectorStore.getGasTypes.find((item) => item.id === scope.row.gasTypeId)?.name }}

Loading…
Cancel
Save