From a09f984cbe2369e13d8694e91c4f8165ec6c2ba9 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 20 八月 2025 14:05:10 +0800
Subject: [PATCH] 动态溯源模块优化
---
src/constant/scene-types/options.js | 4 ++
src/views/sourcetrace/SourceTrace.vue | 45 ++++++++++++++--------
src/api/index.js | 4 +-
src/components.d.ts | 2
src/views/sourcetrace/component/ClueRecordItem.vue | 2
src/views/sourcetrace/component/SourceTraceFilter.vue | 41 ++++++++++++++------
6 files changed, 65 insertions(+), 33 deletions(-)
diff --git a/src/api/index.js b/src/api/index.js
index ef12b54..edabfb4 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1,8 +1,8 @@
import axios from 'axios';
import { ElMessage } from 'element-plus';
-const openLog = true;
-const debug = true;
+const openLog = false;
+const debug = false;
let ip1 = 'http://47.100.191.150:9029/';
let ws = `47.100.191.150:9031`;
diff --git a/src/components.d.ts b/src/components.d.ts
index 80dc883..fa422c5 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -14,7 +14,6 @@
'CardDialog copy': typeof import('./components/CardDialog copy.vue')['default']
CheckButton: typeof import('./components/common/CheckButton.vue')['default']
ConfigManage: typeof import('./components/map/ConfigManage.vue')['default']
- copy: typeof import('./components/CardDialog copy.vue')['default']
CoreHeader: typeof import('./components/core/CoreHeader.vue')['default']
CoreMenu: typeof import('./components/core/CoreMenu.vue')['default']
DataSummary: typeof import('./components/monitor/DataSummary.vue')['default']
@@ -39,6 +38,7 @@
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElInput: typeof import('element-plus/es')['ElInput']
+ ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElLink: typeof import('element-plus/es')['ElLink']
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
diff --git a/src/constant/scene-types/options.js b/src/constant/scene-types/options.js
index 1bba61d..07d6822 100644
--- a/src/constant/scene-types/options.js
+++ b/src/constant/scene-types/options.js
@@ -82,5 +82,9 @@
{
label: '甯傛帶鐐�',
value: '20'
+ },
+ {
+ label: '灏忓井绔�',
+ value: '21'
}
];
diff --git a/src/views/sourcetrace/SourceTrace.vue b/src/views/sourcetrace/SourceTrace.vue
index 2ef9353..73dcd07 100644
--- a/src/views/sourcetrace/SourceTrace.vue
+++ b/src/views/sourcetrace/SourceTrace.vue
@@ -200,7 +200,10 @@
}
// 鍒ゆ柇鍦烘櫙绫诲瀷鏄惁閫変腑
- if (v.pollutedSource.sceneList.length == 0) {
+ if (
+ v.pollutedSource == undefined ||
+ v.pollutedSource.sceneList.length == 0
+ ) {
b3 = selectedSceneTypes.value.indexOf(NO_SCENE) != -1;
} else {
b3 =
@@ -306,25 +309,29 @@
}
// 绛涢�夊満鏅被鍨�
- if (objData.pollutedSource.sceneList.length == 0) {
- // 鑻ユ病鏈夋壘鍒伴闄╂簮鏃讹紝灏嗚鍒嗙被璁惧畾涓簄ull
- if (sceneOptions.value.findIndex((v) => v.value == NO_SCENE) == -1) {
- sceneOptions.value.push({
- label: '鏈煡',
- value: NO_SCENE
- });
- selectedSceneTypes.value.push(NO_SCENE);
- }
- } else {
- objData.pollutedSource.sceneList.forEach((s) => {
- if (sceneOptions.value.findIndex((v) => v.value == s.typeId) == -1) {
+ if (objData.pollutedSource != undefined) {
+ if (objData.pollutedSource.sceneList.length == 0) {
+ // 鑻ユ病鏈夋壘鍒伴闄╂簮鏃讹紝灏嗚鍒嗙被璁惧畾涓簄ull
+ if (sceneOptions.value.findIndex((v) => v.value == NO_SCENE) == -1) {
sceneOptions.value.push({
- label: s.type,
- value: s.typeId
+ label: '鏈煡',
+ value: NO_SCENE
});
- selectedSceneTypes.value.push(s.typeId);
+ selectedSceneTypes.value.push(NO_SCENE);
}
- });
+ } else {
+ objData.pollutedSource.sceneList.forEach((s) => {
+ if (
+ sceneOptions.value.findIndex((v) => v.value == s.typeId) == -1
+ ) {
+ sceneOptions.value.push({
+ label: s.type,
+ value: s.typeId
+ });
+ selectedSceneTypes.value.push(s.typeId);
+ }
+ });
+ }
}
// case '2':
// break;
@@ -355,6 +362,10 @@
dataAnalysisApi
.fetchPollutionTraceHistory(props.missionCode)
.then((res) => {
+ factorOptions.value = [];
+ selectedFactorTypes.value = [];
+ sceneOptions.value = [];
+ selectedSceneTypes.value = [];
const objList = JSON.parse(res.data);
objList.forEach((obj) => {
obj._type = obj.msgType + '';
diff --git a/src/views/sourcetrace/component/ClueRecordItem.vue b/src/views/sourcetrace/component/ClueRecordItem.vue
index ab8223c..f34ad6c 100644
--- a/src/views/sourcetrace/component/ClueRecordItem.vue
+++ b/src/views/sourcetrace/component/ClueRecordItem.vue
@@ -43,7 +43,7 @@
<el-text :type="noWarn ? 'info' : 'warning'">
{{
item.pollutedSource.sceneList.length == 0
- ? '鏈壘鍒伴闄╂簮'
+ ? '鍙兘瀛樺湪鐜板満姹℃煋锛岃娉ㄦ剰鍛ㄨ竟鎯呭喌銆�'
: '鎵惧埌' + item.pollutedSource.sceneList.length + '涓闄╂簮'
}}
</el-text>
diff --git a/src/views/sourcetrace/component/SourceTraceFilter.vue b/src/views/sourcetrace/component/SourceTraceFilter.vue
index e2d4512..75cad99 100644
--- a/src/views/sourcetrace/component/SourceTraceFilter.vue
+++ b/src/views/sourcetrace/component/SourceTraceFilter.vue
@@ -26,15 +26,15 @@
size="default"
:min="1"
>
- <el-space>
- <el-checkbox
- v-for="item in factorOptions"
- :value="item.value"
- :key="item.label"
- >
- {{ item.label }}
- </el-checkbox>
- </el-space>
+ <!-- <el-space> -->
+ <el-checkbox
+ v-for="item in factorOptions"
+ :value="item.value"
+ :key="item.label"
+ >
+ {{ item.label }}
+ </el-checkbox>
+ <!-- </el-space> -->
</el-checkbox-group>
</el-space>
</div>
@@ -65,13 +65,30 @@
import { ref } from 'vue';
const props = defineProps({
- // 鏁版嵁鍒囩墖锛岀嚎绱€�佹彁绀恒�佹函婧�
+ /**
+ * 鍖呭惈杩借釜淇℃伅鐨勬暟鎹垏鐗囷紝鍖呮嫭绾跨储銆佹彁绀哄拰婧簮鏁版嵁
+ * @type {Array}
+ */
dataSlice: Array,
- // 鐩戞祴鍥犲瓙
+ /**
+ * 鐩戞祴鍥犲瓙绫诲瀷鏁扮粍
+ * @type {Array}
+ */
factorType: Array,
+ /**
+ * 鐩戞祴鍥犲瓙鐨勫彲鐢ㄩ�夐」
+ * @type {Array<{value: string, label: string}>}
+ */
factorOptions: Array,
- // 鍦烘櫙绫诲瀷
+ /**
+ * 鐢ㄤ簬杩囨护鐨勫満鏅被鍨嬫暟缁�
+ * @type {Array}
+ */
sceneType: Array,
+ /**
+ * 鍦烘櫙閫夋嫨鐨勫彲鐢ㄩ�夐」
+ * @type {Array<{value: string, label: string}>}
+ */
sceneOptions: Array
});
--
Gitblit v1.9.3