From abb1817671a0b084349b54ffddef9ac4608871e2 Mon Sep 17 00:00:00 2001 From: shi <936384804@qq.com> Date: Fri, 12 Sep 2025 18:54:44 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 +- .../ProjectScreen/components/centerPage.vue | 21 +++--- src/views/ProjectScreen/components/header.vue | 11 ++-- .../ProjectScreen/components/leftPage.vue | 66 ++++++++++++------- .../ProjectScreen/components/optionList.ts | 6 +- .../ProjectScreen/components/rightPage.vue | 38 +++++------ 6 files changed, 79 insertions(+), 67 deletions(-) diff --git a/.env.development b/.env.development index f584a24..d3e8059 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,7 @@ VITE_APP_TITLE = 煤科建管平台 VITE_APP_ENV = 'development' # 开发环境 -# VITE_APP_BASE_API = 'http://192.168.110.180:8899' +VITE_APP_BASE_API = 'http://192.168.110.180:8899' # 李陈杰 209 # VITE_APP_BASE_API = 'http://192.168.110.209:8899' # 曾涛 @@ -13,7 +13,7 @@ VITE_APP_ENV = 'development' # 罗成 # VITE_APP_BASE_API = 'http://192.168.110.188:8899' # 朱银 -VITE_APP_BASE_API = 'http://192.168.110.149:8899' +# VITE_APP_BASE_API = 'http://192.168.110.149:8899' #曾涛 # VITE_APP_BASE_API = 'http://192.168.110.171:8899' diff --git a/src/views/ProjectScreen/components/centerPage.vue b/src/views/ProjectScreen/components/centerPage.vue index 50ab572..28a266a 100644 --- a/src/views/ProjectScreen/components/centerPage.vue +++ b/src/views/ProjectScreen/components/centerPage.vue @@ -16,8 +16,8 @@
安全巡检 -
{{ item.createTime.slice(5) }}
-
{{ item.label }}
+
{{ item.createTime.slice(5, 16) }}
+
{{ item.label || '未佩戴安全帽' }}
@@ -89,6 +89,7 @@ const getInspectionList = async () => { const res = await getScreenSafetyInspection(props.projectId) const { code, data } = res if (code === 200) { + console.log(violation_level_type.value) data.map(item => { item.label = violation_level_type.value.find((i) => i.value === item.violationType)?.label }) @@ -146,6 +147,7 @@ const loadBaseMap = (viewer) => { // 添加图层到视图 const layer = viewer.imageryLayers.addImageryProvider(imageryProvider); } + onMounted(() => { getInspectionList() createEarth() @@ -153,7 +155,6 @@ onMounted(() => { swiperItemWidth.value = swiperContent.value.children[0].clientWidth + 20 } }) - diff --git a/src/views/ProjectScreen/components/optionList.ts b/src/views/ProjectScreen/components/optionList.ts index bcdf958..41f9e48 100644 --- a/src/views/ProjectScreen/components/optionList.ts +++ b/src/views/ProjectScreen/components/optionList.ts @@ -27,7 +27,7 @@ export let pieOption = { legend: { show: true, type: 'plain', - bottom: 20, + bottom: 0, itemWidth: 12, itemHeight: 12, textStyle: { @@ -38,7 +38,7 @@ export let pieOption = { type: 'pie', data: [], radius: [50, 80], - center: ['50%', '45%'], + center: ['50%', '50%'], itemStyle: { borderColor: '#fff', borderWidth: 1 @@ -73,7 +73,7 @@ export let barOption = { itemHeight: 12, // 调整文字与图标间距 data: ['计划流转面积', '已流转面积'], - top: 0, + top: 10, right: 20, textStyle: { color: '#fff', diff --git a/src/views/ProjectScreen/components/rightPage.vue b/src/views/ProjectScreen/components/rightPage.vue index 0d08c08..8f425f9 100644 --- a/src/views/ProjectScreen/components/rightPage.vue +++ b/src/views/ProjectScreen/components/rightPage.vue @@ -4,12 +4,13 @@ <div class="content" v-html="generalize"></div> </div> - <div class="endPage"> + <div class="midPage"> <Title title="形象进度" /> - <div class="chart_container"> - <div ref="pieChartRef" class="echart" /> - <div ref="lineChartRef" class="echart" /> - </div> + <div ref="pieChartRef" class="echart" /> + </div> + <div class="endPage"> + <Title title="土地流转情况" /> + <div ref="lineChartRef" class="echart" /> </div> </div> </template> @@ -79,12 +80,6 @@ const initLineChart = () => { lineChart.setOption(barOption); } -// 响应窗口大小变化 -const handleResize = () => { - if (pieChart) pieChart.resize(); - if (lineChart) lineChart.resize(); -}; - /** * 获取项目土地统计数据 */ @@ -124,6 +119,12 @@ const getScreenGeneralizeData = async () => { } } +// 响应窗口大小变化 +const handleResize = () => { + if (pieChart) pieChart.resize(); + if (lineChart) lineChart.resize(); +}; + // 组件挂载时初始化图表 onMounted(() => { getScreenLandData() @@ -137,7 +138,6 @@ onMounted(() => { // 组件卸载时清理 onUnmounted(() => { - window.removeEventListener('resize', handleResize); if (pieChart) { pieChart.dispose(); pieChart = null; @@ -156,6 +156,7 @@ onUnmounted(() => { height: 100%; .topPage, + .midPage, .endPage { display: flex; flex-direction: column; @@ -166,20 +167,13 @@ onUnmounted(() => { box-sizing: border-box; } - .endPage { + .endPage, + .midPage { flex: 1; margin-top: 23px; - .chart_container { - display: flex; - flex-direction: column; - gap: 5px; - width: 100%; - height: 100%; - } - .echart { - height: 48%; + height: 100%; width: 100%; } } From aa1f2e8fdb180682e29bf93dfd31439b832e024e Mon Sep 17 00:00:00 2001 From: shi <936384804@qq.com> Date: Fri, 12 Sep 2025 19:33:07 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=BA=A7=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectScreen/components/header.vue | 22 +++++++++---------- .../ProjectScreen/components/leftPage.vue | 12 +++++----- .../ProjectScreen/components/optionList.ts | 4 ++-- .../ProjectScreen/components/rightPage.vue | 6 ++--- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/views/projectLarge/ProjectScreen/components/header.vue b/src/views/projectLarge/ProjectScreen/components/header.vue index 8cfdc63..4415e64 100644 --- a/src/views/projectLarge/ProjectScreen/components/header.vue +++ b/src/views/projectLarge/ProjectScreen/components/header.vue @@ -11,20 +11,16 @@ </div> </div> <div class="title"> - <div>新能源项目级管理平台</div> - <div>Coal Science Construction Management - New Energy Project Level Management Platform</div> + <div>{{ currentProjectName }}</div> + <div>施工现场数智化管理</div> </div> <div class="header_right"> <div class="top-bar"> <!-- 左侧:天气图标 + 日期文字 --> <div class="left-section"> <div class="weather-list" @mouseenter="requestPause" @mouseleave="resumeScroll"> - <div - v-for="(item, i) in weatherList" - :key="i" - class="weather-item" - :style="{ transform: `translateY(-${offsetY}px)`, transition: transition }" - > + <div v-for="(item, i) in weatherList" :key="i" class="weather-item" + :style="{ transform: `translateY(-${offsetY}px)`, transition: transition }"> <img :src="`/assets/demo/${item.icon}.png`" alt="" /> <div>{{ item.weather }}{{ item.tempMin }}°/{{ item.tempMax }}°</div> <div>{{ item.week }}({{ item.date }})</div> @@ -63,6 +59,10 @@ <script setup lang="ts"> import { ref, onMounted, onUnmounted } from 'vue'; import { getScreenSafetyDay, getScreenWeather } from '@/api/projectScreen'; +import { useUserStoreHook } from '@/store/modules/user'; + +const userStore = useUserStoreHook(); +const currentProjectName = computed(() => userStore.selectedProject?.name); interface Weather { week: string; @@ -230,13 +230,13 @@ onUnmounted(() => { text-align: center; } -.title > div:first-child { +.title>div:first-child { /* 第一个子元素的样式 */ font-size: 38px; letter-spacing: 0.1em; } -.title > div:last-child { +.title>div:last-child { /* 最后一个子元素的样式 */ font-size: 14px; } @@ -269,7 +269,7 @@ onUnmounted(() => { display: flex; align-items: center; - & > div:last-child { + &>div:last-child { margin-left: 10px; } diff --git a/src/views/projectLarge/ProjectScreen/components/leftPage.vue b/src/views/projectLarge/ProjectScreen/components/leftPage.vue index 2ec5dd1..07c1556 100644 --- a/src/views/projectLarge/ProjectScreen/components/leftPage.vue +++ b/src/views/projectLarge/ProjectScreen/components/leftPage.vue @@ -70,7 +70,8 @@ <div class="attendance_item_title">{{ item.teamName }}</div> <div class="attendance_item_number">{{ item.attendanceNumber }} <span class="subfont">人/{{ item.allNumber }}</span></div> - <div class="attendance_item_rate">{{ item.attendanceRate.toFixed(2) }} %</div> + <div class="attendance_item_rate">{{ item.attendanceRate != '0' ? item.attendanceRate : + `${item.attendanceRate}.00` }} %</div> <div class="attendance_item_date subfont">{{ item.attendanceTime }}</div> </div> </div> @@ -101,9 +102,7 @@ const newId = ref('') const attendanceCount = ref(0) const attendanceRate = ref(0) const peopleCount = ref(0) -const teamAttendanceList = ref([ - { id: "", teamName: "", attendanceNumber: 0, allNumber: 0, attendanceRate: 0, attendanceTime: "" }, -]) +const teamAttendanceList = ref([]) /** * 显示新闻详情 @@ -124,6 +123,7 @@ const getPeopleData = async () => { const res = await getScreenPeople(props.projectId); const { data, code } = res if (code === 200) { + console.log(data) attendanceCount.value = data.attendanceCount attendanceRate.value = data.attendanceRate peopleCount.value = data.peopleCount @@ -306,7 +306,9 @@ onUnmounted(() => { } .attendance_list { - padding: 0px 30px; + width: calc(100% - 30px); + padding: 0px 15px; + margin: 0 auto; font-size: 14px; .attendance_item { diff --git a/src/views/projectLarge/ProjectScreen/components/optionList.ts b/src/views/projectLarge/ProjectScreen/components/optionList.ts index 41f9e48..7c80489 100644 --- a/src/views/projectLarge/ProjectScreen/components/optionList.ts +++ b/src/views/projectLarge/ProjectScreen/components/optionList.ts @@ -4,7 +4,7 @@ export let pieOption = { { type: 'text', left: 'center', - top: '40%', + top: '43%', style: { // 需要从接口替换 text: '70%', @@ -16,7 +16,7 @@ export let pieOption = { { type: 'text', left: 'center', - top: '50%', + top: '55%', style: { text: '总进度', fontSize: 14, diff --git a/src/views/projectLarge/ProjectScreen/components/rightPage.vue b/src/views/projectLarge/ProjectScreen/components/rightPage.vue index 8f425f9..81f63c8 100644 --- a/src/views/projectLarge/ProjectScreen/components/rightPage.vue +++ b/src/views/projectLarge/ProjectScreen/components/rightPage.vue @@ -104,6 +104,7 @@ const getScreenImgProcessData = async () => { pieData.forEach((item: any) => { item.value = data[item.label] }) + console.log(pieData) initPieChart() } } @@ -113,9 +114,9 @@ const getScreenImgProcessData = async () => { */ const getScreenGeneralizeData = async () => { const res = await getScreenGeneralize(props.projectId); - const { data, code } = res + const { data, code, msg } = res if (code === 200) { - generalize.value = data + generalize.value = msg } } @@ -183,7 +184,6 @@ onUnmounted(() => { height: 100px; margin: 0 15px; padding: 0 10px; - margin-top: 15px; box-sizing: border-box; overflow-y: auto; From 198e42a26f92230d7403fd21b5b9509daa8c910f Mon Sep 17 00:00:00 2001 From: shi <936384804@qq.com> Date: Fri, 12 Sep 2025 20:43:56 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=BA=A7=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/projectLarge/ProjectScreen/components/header.vue | 2 +- .../projectLarge/ProjectScreen/components/optionList.ts | 2 +- .../projectLarge/ProjectScreen/components/rightPage.vue | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/views/projectLarge/ProjectScreen/components/header.vue b/src/views/projectLarge/ProjectScreen/components/header.vue index 4415e64..5019f2b 100644 --- a/src/views/projectLarge/ProjectScreen/components/header.vue +++ b/src/views/projectLarge/ProjectScreen/components/header.vue @@ -238,7 +238,7 @@ onUnmounted(() => { .title>div:last-child { /* 最后一个子元素的样式 */ - font-size: 14px; + font-size: 26px; } /* 顶部栏容器:Flex 水平布局 + 垂直居中 */ diff --git a/src/views/projectLarge/ProjectScreen/components/optionList.ts b/src/views/projectLarge/ProjectScreen/components/optionList.ts index 7c80489..64433d6 100644 --- a/src/views/projectLarge/ProjectScreen/components/optionList.ts +++ b/src/views/projectLarge/ProjectScreen/components/optionList.ts @@ -7,7 +7,7 @@ export let pieOption = { top: '43%', style: { // 需要从接口替换 - text: '70%', + text: '0%', fontSize: 24, fontWeight: 'bold', fill: '#fff' diff --git a/src/views/projectLarge/ProjectScreen/components/rightPage.vue b/src/views/projectLarge/ProjectScreen/components/rightPage.vue index 81f63c8..f583d02 100644 --- a/src/views/projectLarge/ProjectScreen/components/rightPage.vue +++ b/src/views/projectLarge/ProjectScreen/components/rightPage.vue @@ -41,8 +41,8 @@ let lineChart: any = null; const designAreaData = ref([]) const transferAreaData = ref([]) // 饼图数据 -const pieData = [ - { label: 'areaPercentage', name: '厂区', value: 0 }, +let pieData = [ + { label: 'areaPercentage', name: '场区', value: 0 }, { label: 'roadPercentage', name: '道路', value: 0 }, { label: 'collectorLinePercentage', name: '集电线路', value: 0 }, { label: 'exportLinePercentage', name: '送出线路', value: 0 }, @@ -104,6 +104,7 @@ const getScreenImgProcessData = async () => { pieData.forEach((item: any) => { item.value = data[item.label] }) + pieData = pieData.filter((item: any) => item.value != '0.0') console.log(pieData) initPieChart() }