|
|
@@ -1,7 +1,8 @@
|
|
|
import test from 'node:test'
|
|
|
import assert from 'node:assert/strict'
|
|
|
import { readFile } from 'node:fs/promises'
|
|
|
-import { getFacilityPointIcon, getMapClusterIcon, getMonitoringPointColor, getMonitoringPointIcon, getMonitoringPointLabel, getMonitoringPointStatus, getMonitoringPointTagType } from '../src/utils/gisMapColors.js'
|
|
|
+import { getMapClusterIcon, getMonitoringPointColor, getMonitoringPointIcon, getMonitoringPointLabel, getMonitoringPointStatus, getMonitoringPointTagType } from '../src/utils/gisMapColors.js'
|
|
|
+import { getFacilityStatusIcon, getFacilityStatusMeta } from '../src/utils/gisMapColors.js'
|
|
|
|
|
|
test('shared gis map canvas converts WGS84 coordinates before BMapGL rendering', async () => {
|
|
|
const source = await readFile('src/components/GisMapCanvas.vue', 'utf8')
|
|
|
@@ -69,13 +70,38 @@ test('shared gis map canvas renders every point as an official icon with a label
|
|
|
assert.ok(source.includes("emit('point-click', point)"))
|
|
|
})
|
|
|
|
|
|
-test('facility point icons follow the five-facility-type contract', () => {
|
|
|
- assert.match(getFacilityPointIcon('source'), /T_MarkPoint_Blue\.png/u)
|
|
|
- assert.match(getFacilityPointIcon('plant'), /T_MarkPoint_Green\.png/u)
|
|
|
- assert.match(getFacilityPointIcon('pumpStation'), /T_MarkPoint_Red\.png/u)
|
|
|
- assert.match(getFacilityPointIcon('pipe'), /T_MarkPoint_Yellow\.png/u)
|
|
|
- assert.match(getFacilityPointIcon('user'), /T_MarkPoint_Black\.png/u)
|
|
|
- assert.match(getFacilityPointIcon('unknown'), /T_MarkPoint_Green\.png/u)
|
|
|
+test('facility point colors follow the facility status semantics shared with monitoring devices', () => {
|
|
|
+ // 供水设施一张图与首页统一:绿-正常、红-报警/异常、蓝-工单/检修、黄-预警/欠费
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('source', 0), { key: 'normal', text: '正常' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('source', 1), { key: 'alarm', text: '异常' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('plant', 1), { key: 'alarm', text: '停产' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('pumpStation', 1), { key: 'alarm', text: '故障停运' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('pumpStation', 2), { key: 'workOrder', text: '检修中' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('user', 1), { key: 'warning', text: '欠费' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('user', 2), { key: 'alarm', text: '停用' })
|
|
|
+ // 未维护状态的设施按正常处理,不臆造异常
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('source', null), { key: 'normal', text: '正常' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('plant', undefined), { key: 'normal', text: '正常' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('source', 9), { key: 'normal', text: '正常' })
|
|
|
+ assert.deepEqual(getFacilityStatusMeta('unknown', 1), { key: 'normal', text: '正常' })
|
|
|
+})
|
|
|
+
|
|
|
+test('facility gis page colors points by facility status instead of facility type', async () => {
|
|
|
+ const source = await readFile('src/views/subSystem/waterSupply/facility/gis.vue', 'utf8')
|
|
|
+
|
|
|
+ assert.match(source, /getFacilityStatusMeta/u)
|
|
|
+ assert.match(source, /getFacilityStatusIcon/u)
|
|
|
+ assert.doesNotMatch(source, /iconUrl: getFacilityPointIcon\(point\.type\)/u)
|
|
|
+ assert.match(source, /设施状态图例/u)
|
|
|
+})
|
|
|
+
|
|
|
+test('pipelines keep no point icon while facilities map status to the shared palette', () => {
|
|
|
+ // 管网保持现状:只构造管线,不添加图标
|
|
|
+ assert.equal(getFacilityStatusIcon('pipe', 0), null)
|
|
|
+ assert.match(getFacilityStatusIcon('source', 0), /T_MarkPoint_Green\.png/u)
|
|
|
+ assert.match(getFacilityStatusIcon('source', 1), /T_MarkPoint_Red\.png/u)
|
|
|
+ assert.match(getFacilityStatusIcon('pumpStation', 2), /T_MarkPoint_Blue\.png/u)
|
|
|
+ assert.match(getFacilityStatusIcon('user', 1), /T_MarkPoint_Yellow\.png/u)
|
|
|
})
|
|
|
|
|
|
test('cluster icons reuse the single member icon or fall back to the colorful marker', () => {
|
|
|
@@ -140,7 +166,7 @@ test('water supply GIS pages share the common canvas component', async () => {
|
|
|
assert.match(facilitySource, /<GisMapCanvas/u)
|
|
|
assert.match(facilitySource, /:points="mapPoints"/u)
|
|
|
assert.match(facilitySource, /:lines="mapLines"/u)
|
|
|
- assert.match(facilitySource, /iconUrl: getFacilityPointIcon\(point\.type\)/u)
|
|
|
+ assert.match(facilitySource, /getFacilityStatusIcon\(point\.type, point\.status\)/u)
|
|
|
assert.match(facilitySource, /cluster-label="设施集合"/u)
|
|
|
assert.match(facilitySource, /@point-click="locateFeature"/u)
|
|
|
const alarmSource = await readFile('src/views/subSystem/waterSupply/components/WaterAlarmPage.vue', 'utf8')
|