Browse Source

Merge branch 'feature-v1.0.0' of ssh://gitlab.datameta.com:2224/project/water/data-board-2025 into feature-v1.0.0

feature-v1.0.0
邱伟洋 1 month ago
parent
commit
c122576a67
  1. 45
      src/hooks/web/useProject.tsx
  2. 10
      src/theme/element/index.scss
  3. 4
      src/theme/index.scss
  4. 24
      src/views/Main/DailyPatrolCard/index.vue
  5. 24
      src/views/Main/ProjectOperation/components/DataStatistics.vue
  6. 79
      src/views/Main/ProjectOperation/components/MonitorWarning.vue

45
src/hooks/web/useProject.tsx

@ -3,7 +3,6 @@ import * as SyCim from "sy-cesium-sdk";
import { LayerTypeEnum } from "@/enums/projectEnum";
import { queryLayersByPos } from "@/utils/mapUtils";
import axios from "axios";
import { throttle } from "lodash-es";
import { useProjectStore } from "@/store/modules/project";
const clustering = reactive({
enabled: true,
@ -275,6 +274,25 @@ const baseLayerActions: Record<string, any> = {
};
export function useLayer() {
const viewerClick = (e: any) => {
const projectStore = useProjectStore();
const selectedLayers: any = projectStore.selectedLayers;
queryLayersByPos(e.wgs84SurfacePosition, selectedLayers, (res: any) => {
if (res?.attributes?.showCode) {
const { showCode, showName } = res?.attributes;
window.$bus.$emit("open-water-dialog", {
code: showCode,
name: showName,
});
}
});
};
const addViewerClick = () => {
window.viewer?.on(SyCim.MouseEventType.CLICK, viewerClick, window.viewer);
};
const removeViewerClick = () => {
window.viewer?.off(SyCim.MouseEventType.CLICK, viewerClick, window.viewer);
};
const addLayer = async (layerData: any) => {
const { layerType, url, id, isNeedCluster } = layerData;
let action = null;
@ -362,7 +380,7 @@ export function useLayer() {
}
};
const removeLayer = (layerData: any) => {
const { id, layerType } = layerData;
const { id, layerType, isNeedCluster, nameCn } = layerData;
if (!layerType) return;
const type: any = LayerTypeEnum[layerType as never];
@ -376,30 +394,15 @@ export function useLayer() {
type: SyCim.LayerType[type],
} as any);
}
if (isNeedCluster === "1" && nameCn === "水库点") {
removeViewerClick();
}
};
const zoomToLayer = (data: any) => {
const { layerType } = data;
zoomToLayerActions[layerType as string]?.(data);
};
const viewerClick = (e: any) => {
const projectStore = useProjectStore();
const selectedLayers: any = projectStore.selectedLayers;
queryLayersByPos(e.wgs84SurfacePosition, selectedLayers, (res: any) => {
if (res?.attributes?.showCode) {
const { showCode, showName } = res?.attributes;
window.$bus.$emit("open-water-dialog", {
code: showCode,
name: showName,
});
}
});
};
const addViewerClick = () => {
window.viewer?.on(SyCim.MouseEventType.CLICK, viewerClick, window.viewer);
};
const removeViewerClick = () => {
window.viewer?.off(SyCim.MouseEventType.CLICK, viewerClick, window.viewer);
};
return {
addLayer,
removeLayer,

10
src/theme/element/index.scss

@ -38,15 +38,15 @@ $--text-color: (
'disabled': rgba(255, 255, 255, 0.5)
);
$--table: (
'border-color': transparent,
'border': none,
// 'border-color': transparent,
// 'border': none,
'text-color': rgba(255, 255, 255, 1),
'header-text-color': rgba(255, 255, 255, 1),
'header-text-color': #515a6e,
'row-hover-bg-color': #0acccc,
'current-row-bg-color': rgba(20, 112, 204, 1),
'header-bg-color': rgba(20, 112, 204, 1),
'header-bg-color': transparent,
'bg-color': transparent,
'tr-bg-color': transparent
'tr-bg-color': transparent,
);
$--button: (

4
src/theme/index.scss

@ -4,12 +4,12 @@
@use "element-plus/theme-chalk/src/index.scss" as *;
@use "./overview.scss" as *;
@use "./search.scss" as *;
@use "./date.scss" as *;
// @use "./date.scss" as *;
@use "./input.scss" as *;
@use "./select.scss" as *;
@use "./dialog.scss" as *;
@use "./tree.scss" as *;
@use "./table.scss" as *;
// @use "./table.scss" as *;
@use "./tabs.scss" as *;
@use "./step.scss" as *;
@use "./upload.scss" as *;

24
src/views/Main/DailyPatrolCard/index.vue

@ -4,10 +4,10 @@
<div class="echart-wrapper" ref="chartRef"></div>
<div class="appraise-progress">
<div class="tips">
<div>问题处理进度<span>23%</span></div>
<div>问题处理进度<span>{{progressCount}}%</span></div>
</div>
<div class="progress">
<div class="progress-bar" style="width: 23%"></div>
<div class="progress-bar" :style="{width: `${progressCount}%`}"></div>
</div>
</div>
</div>
@ -40,6 +40,7 @@ const handleResize = () => {
};
const dailyData: any = ref([]);
const dailyCount = ref(0);
const progressCount = ref(0)
const getChartData = async (time: any) => {
dailyCount.value = 0;
dailyData.value = [];
@ -220,10 +221,29 @@ const initChart = () => {
// Set options and render chart
chart.setOption(option);
};
const getProgressData = async (time: any) => {
progressCount.value = 0;
const pramas = {
// endTime: '',
// startTime: '',
...time,
group: 'K6_1'
};
const data: any = await chartStore.initStatisticChart(pramas);
if (data?.yaxis?.length) {
let newArr = data.yaxis.flatMap((v: any) => v.series);
newArr?.forEach((item: any) => {
if (item.name == '比例') {
progressCount.value = Number(item.sum) || 0;
}
});
}
};
watch(
() => props.timeRange,
(newVal) => {
getChartData(newVal);
getProgressData(newVal)
}
);
onMounted(() => {

24
src/views/Main/ProjectOperation/components/DataStatistics.vue

@ -16,7 +16,7 @@
v-model="dateArr"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
value-format="YYYY-MM-DD"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
@ -85,7 +85,7 @@ const props = defineProps({
const cascaderOptions = ref([]);
const showType = ref("1");
const cascaderArr = ref([]);
const dataArr = ref([]);
const dateArr = ref([]);
const cascaderProps = {
expandTrigger: "hover",
label: "stnm",
@ -119,11 +119,10 @@ const echartsRef4 = ref();
function getData() {
switch (showType.value) {
case "1":
console.log("dataArr.value >> ", dataArr.value);
//
getReservoirMonitorIndexData({
startTime: dataArr.value ? dataArr.value[0] + " 00:00:00" : "",
endTime: dataArr.value ? dataArr.value[1] + " 23:59:59" : "",
startTime: dateArr.value?.length ? dateArr.value[0] + " 00:00:00" : "",
endTime: dateArr.value?.length ? dateArr.value[1] + " 23:59:59" : "",
group: "SK",
resCode: props.resCode,
stcd: cascaderArr.value[0] || "",
@ -255,8 +254,8 @@ function initLineOptions(data: any) {
function getEchartsData() {
//
getReservoirCZMonitorEchartsData({
startTime: dataArr.value ? dataArr.value[0] + " 00:00:00" : "",
endTime: dataArr.value ? dataArr.value[1] + " 23:59:59" : "",
startTime: dateArr.value?.length ? dateArr.value[0] + " 00:00:00" : "",
endTime: dateArr.value?.length ? dateArr.value[1] + " 23:59:59" : "",
resCode: props.resCode,
stcd: cascaderArr.value[0] || "",
mpcd: cascaderArr.value[1] || "",
@ -268,8 +267,8 @@ function getEchartsData() {
});
//
getReservoirCZMonitorEchartsData({
startTime: dataArr.value ? dataArr.value[0] + " 00:00:00" : "",
endTime: dataArr.value ? dataArr.value[1] + " 23:59:59" : "",
startTime: dateArr.value?.length ? dateArr.value[0] + " 00:00:00" : "",
endTime: dateArr.value?.length ? dateArr.value[1] + " 23:59:59" : "",
resCode: props.resCode,
stcd: cascaderArr.value[0] || "",
elementType: "ENV",
@ -280,8 +279,8 @@ function getEchartsData() {
});
//
getReservoirCZMonitorEchartsData({
startTime: dataArr.value ? dataArr.value[0] + " 00:00:00" : "",
endTime: dataArr.value ? dataArr.value[1] + " 23:59:59" : "",
startTime: dateArr.value?.length ? dateArr.value[0] + " 00:00:00" : "",
endTime: dateArr.value?.length ? dateArr.value[1] + " 23:59:59" : "",
resCode: props.resCode,
mpcd: cascaderArr.value[1] || "",
elementType: "C_STRESS",
@ -322,6 +321,9 @@ onMounted(() => {
height: 32px !important;
line-height: 32px !important;
}
:deep(.sy-range-editor--small) .sy-range-input {
color: rgba(0, 0, 0, 0.9) !important;
}
.search-box {
display: flex;
justify-content: space-between;

79
src/views/Main/ProjectOperation/components/MonitorWarning.vue

@ -12,22 +12,21 @@
<span class="ml-10 mr-6">开始日期</span>
<el-date-picker
class="w-150"
size="small"
type="date"
popper-class="date-select-common"
v-model="startDate"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
placeholder="选择日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
></el-date-picker>
<span class="ml-10 mr-6">结束日期</span>
<el-date-picker
class="w-150"
size="small"
type="date"
v-model="endDate"
placeholder="选择日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
></el-date-picker>
</div>
<div class="flex items-center">
@ -89,32 +88,32 @@
</div>
</template>
<script setup lang="ts">
import { ref, reactive, onMounted, watch } from "vue";
import dayjs from "dayjs";
import { getReservoirCZAlarmPageData } from "@/api/reservoir";
import { ref, reactive, onMounted, watch } from 'vue';
import dayjs from 'dayjs';
import { getReservoirCZAlarmPageData } from '@/api/reservoir';
const props = defineProps({
resCode: {
type: String,
default: "",
},
default: ''
}
});
const dateRange: any = ref("0");
const startDate: any = ref(dayjs().subtract(1, "month").format("YYYY-MM-DD HH:mm:ss"));
const endDate: any = ref(dayjs().format("YYYY-MM-DD HH:mm:ss"));
const dateRange: any = ref('0');
const startDate: any = ref(dayjs().subtract(1, 'month').format('YYYY-MM-DD HH:mm:ss'));
const endDate: any = ref(dayjs().format('YYYY-MM-DD HH:mm:ss'));
const tableData: any = ref([]);
const paramsData: any = ref({
pageSize: 10,
pageNum: 1,
total: 0,
total: 0
});
const emit = defineEmits(["node-click"]);
const emit = defineEmits(['node-click']);
watch(
() => props.resCode,
(val) => {
getTableData(val);
},
{ immediate: true },
{ immediate: true }
);
// onMounted(() => {
@ -123,37 +122,37 @@ watch(
function getTableData() {
getReservoirCZAlarmPageData({
startDate: startDate.value,
endDate: endDate.value,
startDate: startDate.value + ' 00:00:00',
endDate: endDate.value + ' 23:59:59',
pageSize: paramsData.value.pageSize,
pageNum: paramsData.value.pageNum,
}).then((res) => {
console.log("res >>>>> ", res);
pageNum: paramsData.value.pageNum
}).then((res: any) => {
console.log('res >>>>> ', res);
tableData.value = res.records || [];
paramsData.value.total = res.total;
});
}
function handleChangeDate(value) {
switch (value) {
case "0":
startDate.value = dayjs().subtract(1, "month").format("YYYY-MM-DD HH:mm:ss");
endDate.value = dayjs().format("YYYY-MM-DD HH:mm:ss");
case '0':
startDate.value = dayjs().subtract(1, 'month').format('YYYY-MM-DD HH:mm:ss');
endDate.value = dayjs().format('YYYY-MM-DD HH:mm:ss');
break;
case "1":
startDate.value = dayjs().subtract(1, "day").format("YYYY-MM-DD HH:mm:ss");
endDate.value = dayjs().format("YYYY-MM-DD HH:mm:ss");
case '1':
startDate.value = dayjs().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss');
endDate.value = dayjs().format('YYYY-MM-DD HH:mm:ss');
break;
case "2":
startDate.value = dayjs().subtract(7, "day").format("YYYY-MM-DD HH:mm:ss");
endDate.value = dayjs().format("YYYY-MM-DD HH:mm:ss");
case '2':
startDate.value = dayjs().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss');
endDate.value = dayjs().format('YYYY-MM-DD HH:mm:ss');
break;
case "3":
startDate.value = dayjs().subtract(3, "month").format("YYYY-MM-DD HH:mm:ss");
endDate.value = dayjs().format("YYYY-MM-DD HH:mm:ss");
case '3':
startDate.value = dayjs().subtract(3, 'month').format('YYYY-MM-DD HH:mm:ss');
endDate.value = dayjs().format('YYYY-MM-DD HH:mm:ss');
break;
case "4":
startDate.value = dayjs().subtract(1, "year").format("YYYY-MM-DD HH:mm:ss");
endDate.value = dayjs().format("YYYY-MM-DD HH:mm:ss");
case '4':
startDate.value = dayjs().subtract(1, 'year').format('YYYY-MM-DD HH:mm:ss');
endDate.value = dayjs().format('YYYY-MM-DD HH:mm:ss');
break;
default:
break;
@ -174,11 +173,13 @@ function handleReset() {
</script>
<style scoped lang="scss">
.monitor-warning {
width: 100%;
padding: 12px;
.search-box {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 12px;
// padding: 0 12px;
font-size: 14px;
color: #262626;
padding-bottom: 12px;

Loading…
Cancel
Save