From 84201c1e88b65f16b6da2c85ab8eee23f37a3da1 Mon Sep 17 00:00:00 2001 From: Gary Gu <garygu@Garydebijibendiannao.local> Date: Mon, 30 Jun 2025 16:02:54 +0800 Subject: [PATCH] fix: 引入第三方字体 --- src/views/ProjectView.vue | 509 ++++++++++++++++++++++++++------------------------------ 1 files changed, 239 insertions(+), 270 deletions(-) diff --git a/src/views/ProjectView.vue b/src/views/ProjectView.vue index 4b0c819..63acba0 100644 --- a/src/views/ProjectView.vue +++ b/src/views/ProjectView.vue @@ -1,105 +1,102 @@ <template> <div class="project-info"> <!-- 上部分 - 图片 --> - <div - class="w-full h-[4vh] mb-[1vh]" + <div + class="w-full h-[4vh] mb-[1vh]" :style="{ backgroundImage: `url(${titleImage})`, backgroundRepeat: 'no-repeat', backgroundPosition: 'center center', - backgroundSize: '100% 100%' + backgroundSize: '100% 100%', + display: 'flex', + alignItems: 'center', }" > + <span style="font-family: PangMenZhengDaoBiaoTiTi !important; font-size: 24px; letter-spacing: 2px; white-space: nowrap; margin-left: 30px" + >项目概况</span + > </div> - + <!-- 下部分 - 内容区域 --> - <div - class="content flex-1 px-[16px] py-[14px] overflow-y-hidden" + <div + class="content flex-1 px-[16px] py-[14px] overflow-y-hidden" :style="{ backgroundImage: `url(${backgroundImage})`, backgroundRepeat: 'no-repeat', backgroundPosition: 'center center', - backgroundSize: 'cover' + backgroundSize: 'cover', }" > <div class="h-[120px] w-full"> <!-- 建筑面积 --> - <div - class="w-full h-[50px] mb-[10px] flex items-center justify-evenly" + <div + class="w-full h-[50px] mb-[10px] flex items-center justify-evenly" :style="{ backgroundImage: `url(${contentImage})`, backgroundRepeat: 'no-repeat', backgroundPosition: 'center center', - backgroundSize: '100% 100%' + backgroundSize: '100% 100%', }" > - <img - src="../assets/images/backgrounds/jianzhumianji.png" - alt="" - class="h-[30px] w-[40px]" - > + <img src="../assets/images/backgrounds/jianzhumianji.png" alt="" class="h-[30px] w-[40px]" /> <div class="text-white text-[16px]">一期总建筑面积</div> <div class="flex items-center justify-center"> - <div class="text-[24px] text-[#FFD500] font-bold mr-[8px]">{{projectInfo.GrossFloorArea ? projectInfo.GrossFloorArea : '103.18'}}</div> + <div class="text-[24px] text-[#FFD500] font-bold mr-[8px]">{{ projectInfo.GrossFloorArea ? projectInfo.GrossFloorArea : "103.18" }}</div> <div class="text-[14px] text-white">万㎡</div> </div> </div> <!-- 目标日期 --> - <div - class="w-full h-[50px] flex items-center justify-evenly" + <div + class="w-full h-[50px] flex items-center justify-evenly" :style="{ backgroundImage: `url(${contentImage})`, backgroundRepeat: 'no-repeat', backgroundPosition: 'center center', - backgroundSize: '100% 100%' + backgroundSize: '100% 100%', }" > - <img - src="../assets/images/backgrounds/mubiaowancheng.png" - alt="" - class="h-[30px] w-[40px]" - > + <img src="../assets/images/backgrounds/mubiaowancheng.png" alt="" class="h-[30px] w-[40px]" /> <div class="text-white text-[16px]">目标完成日期</div> <div class="flex items-center justify-center"> - <div class="text-[24px] text-[#00FFFF] font-bold">{{projectInfo.endDate? projectInfo.endDate : '2028-12-01'}}</div> + <div class="text-[24px] text-[#00FFFF] font-bold">{{ projectInfo.endDate ? projectInfo.endDate : "2028-12-01" }}</div> </div> </div> </div> <div class="w-[100%] h-[38%]"> <!-- 项目名称 --> - <div - class="w-full h-[30px] mt-[20px] mb-[10px]" + <div + class="w-full h-[30px] mt-[20px] mb-[10px]" :style="{ backgroundImage: `url(${bgImage})`, backgroundRepeat: 'no-repeat', backgroundPosition: 'center center', - backgroundSize: '100% 100%' + backgroundSize: '100% 100%', }" > - <div class="text-white text-[14px] ml-[40px] leading-[35px]">项目名称:{{projectInfo.ProjectName}}</div> + <div class="text-white text-[14px] ml-[40px] leading-[35px]">项目名称:{{ projectInfo.ProjectName }}</div> </div> <div class="text-white text-[14px] tracking-[1px] leading-[24px]"> {{ projectInfo.Description }} </div> - <img - :src="projectInfo.Thumbnail? projectInfo.Thumbnail : '../assets/images/backgrounds/cover_bg.png'" - alt="" + <img + :src="projectInfo.Thumbnail ? projectInfo.Thumbnail : '../assets/images/backgrounds/cover_bg.png'" + alt="" class="w-full mt-[20px]" - style="height: calc(100% - 150px);" - > + style="height: calc(100% - 150px)" + /> </div> <div class="w-[100%] h-[18%]"> <!-- 参建单位 --> - <div - class="w-full h-[30px] mt-[20px] mb-[10px]" + <div + class="w-full h-[30px] mt-[20px] mb-[10px]" :style="{ backgroundImage: `url(${bgImage})`, backgroundRepeat: 'no-repeat', backgroundPosition: 'center center', - backgroundSize: '100% 100%' + backgroundSize: '100% 100%', }" > <div class="text-white text-[14px] ml-[40px] leading-[35px]">参建单位</div> @@ -109,50 +106,34 @@ <div class="flex justify-between mb-[10px]"> <div class="w-[48%] h-[50px] px-[12px] flex items-center justify-between mr-[8px] mb-[10px] lineB"> <div class="text-white text-[14px] flex flex-col items-center justify-center"> - <div class="text-[18px] text-[#00FFFF]">{{projectParticipatingNumber.buildingUnit}}</div> + <div class="text-[18px] text-[#00FFFF]">{{ projectParticipatingNumber.buildingUnit }}</div> <div class="text-[12px] text-[#ddd]">建设单位</div> </div> - <img - src="../assets/images/backgrounds/jianshedanwei.png" - alt="" - class="h-[40px] w-[60px]" - > + <img src="../assets/images/backgrounds/jianshedanwei.png" alt="" class="h-[40px] w-[60px]" /> </div> <div class="w-[48%] h-[50px] px-[12px] flex items-center justify-between mb-[10px] lineB"> <div class="text-white text-[14px] flex flex-col items-center justify-center"> - <div class="text-[18px] text-[#00FFFF]">{{projectParticipatingNumber.constructionUnit}}</div> + <div class="text-[18px] text-[#00FFFF]">{{ projectParticipatingNumber.constructionUnit }}</div> <div class="text-[12px] text-[#ddd]">施工单位</div> </div> - <img - src="../assets/images/backgrounds/shigongdanwei.png" - alt="" - class="h-[40px] w-[60px]" - > + <img src="../assets/images/backgrounds/shigongdanwei.png" alt="" class="h-[40px] w-[60px]" /> </div> </div> <div class="flex justify-between"> <div class="w-[48%] h-[50px] px-[12px] flex items-center justify-between mr-[8px] mb-[10px] lineB"> <div class="text-white text-[14px] flex flex-col items-center justify-center"> - <div class="text-[18px] text-[#00FFFF]">{{projectParticipatingNumber.supervisionUnit}}</div> + <div class="text-[18px] text-[#00FFFF]">{{ projectParticipatingNumber.supervisionUnit }}</div> <div class="text-[12px] text-[#ddd]">监理单位</div> </div> - <img - src="../assets/images/backgrounds/jianlidanwei.png" - alt="" - class="h-[40px] w-[60px]" - > + <img src="../assets/images/backgrounds/jianlidanwei.png" alt="" class="h-[40px] w-[60px]" /> </div> <div class="w-[48%] h-[50px] px-[12px] flex items-center justify-between mb-[10px] lineB"> <div class="text-white text-[14px] flex flex-col items-center justify-center"> - <div class="text-[18px] text-[#00FFFF]">{{projectParticipatingNumber.designUnit}}</div> + <div class="text-[18px] text-[#00FFFF]">{{ projectParticipatingNumber.designUnit }}</div> <div class="text-[12px] text-[#ddd]">设计单位</div> </div> - <img - src="../assets/images/backgrounds/shejidanwei.png" - alt="" - class="h-[40px] w-[60px]" - > + <img src="../assets/images/backgrounds/shejidanwei.png" alt="" class="h-[40px] w-[60px]" /> </div> </div> </div> @@ -166,24 +147,16 @@ prefix-icon="el-icon-search" clearable @keyup.enter.native="searchList" - > - </el-input> + /> </div> <!-- 表格 --> - <el-table - ref="filterTable" - :data="tableData" - class="chartTable w-full h-[300px] overflow-y-auto" - > + <el-table ref="filterTable" :data="tableData" class="chartTable w-full h-[300px] overflow-y-auto"> <el-table-column prop="UnitTypeText" label="类型" width="180" /> - <el-table-column prop="Bind" label="阶段" width="180" - :filters="bindFilters" - :filter-method="filterBind" - filter-placement="bottom-end"> + <el-table-column prop="Bind" label="阶段" width="180" :filters="bindFilters" :filter-method="filterBind" filter-placement="bottom-end"> <template slot-scope="scope"> <div class="long_title"> - <span>{{ scope.row.Bind&&scope.row.Bind !== '' ?scope.row.Bind: '--'}}</span> + <span>{{ scope.row.Bind && scope.row.Bind !== "" ? scope.row.Bind : "--" }}</span> </div> </template> </el-table-column> @@ -195,233 +168,229 @@ </template> <script> -import { getProjectId } from "../utils/getToken.js"; -import { HomeAPI } from "../api/home"; -export default { - name: 'ProjectView', - data() { - return { - projectId: '', - searchText: '', - backgroundImage: new URL('@/assets/images/backgrounds/cover_bg.png', import.meta.url).href, - titleImage: new URL('@/assets/images/titles/xiangmu.png', import.meta.url).href, - contentImage: new URL('@/assets/images/titles/xiangmu_bg.png', import.meta.url).href, - bgImage: new URL('@/assets/images/titles/title_second.png', import.meta.url).href, - tableImage: new URL('@/assets/images/backgrounds/table_bg.png', import.meta.url).href, - projectInfo: { - GrossFloorArea: '', - ProjectName: '', - Description: '', - Thumbnail: '', - endDate: '' - }, - projectParticipatingNumber: { - buildingUnit: 0, - constructionUnit: 0, - supervisionUnit: 0, - designUnit: 0 - }, - tableData: [], - bindFilters: [{ text: '家', value: '家' }], // 示例阶段列表 - }; - }, - mounted() { - this.getProject(); - this.getParticipatingList(); - this.getParticipatingNumber(); - }, - methods: { - getProject() { - this.projectId = getProjectId(); - const data = { - "projectId": this.projectId - } - HomeAPI.GetProject(data).then(res => { - console.log(res); - if(res.Ret === 1) { - const result = res.Data - console.log(result); - if(result.SafeProductionEndDate && result.SafeProductionEndDate !== 'null') { - this.projectInfo.endDate = result.SafeProductionEndDate.substring(0, 10) - this.$store.commit('common/setProjectEndDate', this.projectInfo.endDate) - this.projectInfo.ProjectName = result.ProjectName - this.projectInfo.Description = result.Description - this.projectInfo.Thumbnail = result.Thumbnail - this.projectInfo.GrossFloorArea = result.GrossFloorArea - } - } - - }); + import { getProjectId } from "../utils/getToken.js"; + import { HomeAPI } from "../api/home"; + export default { + name: "ProjectView", + data() { + return { + projectId: "", + searchText: "", + backgroundImage: new URL("@/assets/images/backgrounds/cover_bg.png", import.meta.url).href, + titleImage: new URL("@/assets/images/titles/xiangmu.png", import.meta.url).href, + contentImage: new URL("@/assets/images/titles/xiangmu_bg.png", import.meta.url).href, + bgImage: new URL("@/assets/images/titles/title_second.png", import.meta.url).href, + tableImage: new URL("@/assets/images/backgrounds/table_bg.png", import.meta.url).href, + projectInfo: { + GrossFloorArea: "", + ProjectName: "", + Description: "", + Thumbnail: "", + endDate: "", + }, + projectParticipatingNumber: { + buildingUnit: 0, + constructionUnit: 0, + supervisionUnit: 0, + designUnit: 0, + }, + tableData: [], + bindFilters: [{ text: "家", value: "家" }], // 示例阶段列表 + }; }, - getParticipatingList(val) { - const data = { - "organizeId": this.projectId, - name: val ? val : '' - } - HomeAPI.GetParticipatingList(data).then(res => { - console.log(res); - if(res.Ret === 1) { - const result = res.Data - console.log(result); - if(result.length > 0) { - this.tableData = result - const newArray = [] - result.forEach(item => { - if(item.Bind && item.Bind !== 'null') { - newArray.push({ text: item.Bind, value: item.Bind }) - } - }) - this.bindFilters = this.arrayFilter(newArray, 'value') - console.log(newArray, this.bindFilters); - - } else { - this.tableData = [] + mounted() { + this.getProject(); + this.getParticipatingList(); + this.getParticipatingNumber(); + }, + methods: { + getProject() { + this.projectId = getProjectId(); + const data = { + projectId: this.projectId, + }; + HomeAPI.GetProject(data).then((res) => { + console.log(res); + if (res.Ret === 1) { + const result = res.Data; + console.log(result); + if (result.SafeProductionEndDate && result.SafeProductionEndDate !== "null") { + this.projectInfo.endDate = result.SafeProductionEndDate.substring(0, 10); + this.$store.commit("common/setProjectEndDate", this.projectInfo.endDate); + this.projectInfo.ProjectName = result.ProjectName; + this.projectInfo.Description = result.Description; + this.projectInfo.Thumbnail = result.Thumbnail; + this.projectInfo.GrossFloorArea = result.GrossFloorArea; + } } - - } - }); - }, - // 数组去重 - arrayFilter (arr, key) { - const res = new Map() - return arr.filter(arr => !res.has(arr[key]) && res.set(arr[key], 1)) - }, - - getParticipatingNumber() { - const data = { - "organizeId": this.projectId - } - HomeAPI.GetParticipatingNumber(data).then(res => { - console.log(res); - if(res.Ret === 1) { - const result = res.Data - console.log(result); - if(result.length > 0) { - result.forEach(item => { - if(item.UnitTypeText === '建设单位') { - this.projectParticipatingNumber.buildingUnit = item.Number - } else if(item.UnitTypeText === '施工单位') { - this.projectParticipatingNumber.constructionUnit = item.Number - } else if(item.UnitTypeText === '监理单位') { - this.projectParticipatingNumber.supervisionUnit = item.Number - } else if(item.UnitTypeText === '设计单位') { - this.projectParticipatingNumber.designUnit = item.Number - } - }) + }); + }, + getParticipatingList(val) { + const data = { + organizeId: this.projectId, + name: val ? val : "", + }; + HomeAPI.GetParticipatingList(data).then((res) => { + console.log(res); + if (res.Ret === 1) { + const result = res.Data; + console.log(result); + if (result.length > 0) { + this.tableData = result; + const newArray = []; + result.forEach((item) => { + if (item.Bind && item.Bind !== "null") { + newArray.push({ text: item.Bind, value: item.Bind }); + } + }); + this.bindFilters = this.arrayFilter(newArray, "value"); + console.log(newArray, this.bindFilters); + } else { + this.tableData = []; + } } - } - }); + }); + }, + // 数组去重 + arrayFilter(arr, key) { + const res = new Map(); + return arr.filter((arr) => !res.has(arr[key]) && res.set(arr[key], 1)); + }, + + getParticipatingNumber() { + const data = { + organizeId: this.projectId, + }; + HomeAPI.GetParticipatingNumber(data).then((res) => { + console.log(res); + if (res.Ret === 1) { + const result = res.Data; + console.log(result); + if (result.length > 0) { + result.forEach((item) => { + if (item.UnitTypeText === "建设单位") { + this.projectParticipatingNumber.buildingUnit = item.Number; + } else if (item.UnitTypeText === "施工单位") { + this.projectParticipatingNumber.constructionUnit = item.Number; + } else if (item.UnitTypeText === "监理单位") { + this.projectParticipatingNumber.supervisionUnit = item.Number; + } else if (item.UnitTypeText === "设计单位") { + this.projectParticipatingNumber.designUnit = item.Number; + } + }); + } + } + }); + }, + searchList() { + this.getParticipatingList(this.searchText); + }, + filterBind(value, row) { + return row.Bind === value; + }, + resetDateFilter() { + this.$refs.filterTable.clearFilter("date"); + }, + clearFilter() { + this.$refs.filterTable.clearFilter(); + }, }, - searchList() { - this.getParticipatingList(this.searchText) - }, - filterBind(value, row) { - return row.Bind === value; - }, - resetDateFilter() { - this.$refs.filterTable.clearFilter('date'); - }, - clearFilter() { - this.$refs.filterTable.clearFilter(); - }, - } -} + }; </script> <style scoped lang="scss"> -.project-info { - width: 100%; - height: calc(100vh - 100px); - display: flex; - flex-direction: column; - overflow: hidden; -} - -.header { - width: 100%; -} - -.content { - flex: 1; - width: 100%; - - &::-webkit-scrollbar { - width: 6px; + .project-info { + width: 100%; + height: calc(100vh - 100px); + display: flex; + flex-direction: column; + overflow: hidden; } - &::-webkit-scrollbar-thumb { - background-color: rgba(255, 255, 255, 0.2); - border-radius: 3px; + .header { + width: 100%; } - &::-webkit-scrollbar-track { - background-color: rgba(0, 0, 0, 0.1); - } -} + .content { + flex: 1; + width: 100%; -.lineB { - background: radial-gradient(25% 60% at 50% 50%, rgb(26 56 89 / 50%) 0%, rgb(93 174 255 / 15%) 100%); - border-radius: 2px; - border: 1px solid; - border-image: linear-gradient(90deg, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.5)) 1 1; -} + &::-webkit-scrollbar { + width: 6px; + } -.search-item { - ::v-deep .el-input__wrapper { - background-color: rgba(26, 56, 89, 0.5); - box-shadow: none; + &::-webkit-scrollbar-thumb { + background-color: rgba(255, 255, 255, 0.2); + border-radius: 3px; + } + + &::-webkit-scrollbar-track { + background-color: rgba(0, 0, 0, 0.1); + } } - ::v-deep .el-input__icon { - line-height: 35px; + .lineB { + background: radial-gradient(25% 60% at 50% 50%, rgb(26 56 89 / 50%) 0%, rgb(93 174 255 / 15%) 100%); + border-radius: 2px; + border: 1px solid; + border-image: linear-gradient(90deg, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.5)) 1 1; } - ::v-deep .el-input__inner { - color: white; + .search-item { + ::v-deep .el-input__wrapper { + background-color: rgba(26, 56, 89, 0.5); + box-shadow: none; + } + + ::v-deep .el-input__icon { + line-height: 35px; + } + + ::v-deep .el-input__inner { + color: white; + } + + ::v-deep .el-input__inner::placeholder { + color: rgba(255, 255, 255, 0.5); + } + + ::v-deep .el-input__prefix-icon { + color: rgba(255, 255, 255, 0.5); + } } - ::v-deep .el-input__inner::placeholder { - color: rgba(255, 255, 255, 0.5); + .table-header { + height: 32px; + background: linear-gradient(180deg, #3068a5 0%, #1e4066 100%); + box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.2); } - - ::v-deep .el-input__prefix-icon { - color: rgba(255, 255, 255, 0.5); - } -} - -.table-header { - height: 32px; - background: linear-gradient(180deg, #3068A5 0%, #1E4066 100%); - box-shadow: inset 0px 1px 0px 0px rgba(255,255,255,0.2); -} -.chart-container{ - width: 100%; - height: calc(40% - 170px); - .chartTable{ - height: calc(100% - 10px); - - } - ::v-deep .el-table{ + .chart-container { + width: 100%; + height: calc(40% - 170px); + .chartTable { + height: calc(100% - 10px); + } + ::v-deep .el-table { background-image: url("~@/assets/images/backgrounds/table_bg.png"); background-repeat: no-repeat; background-position: center center; background-size: 100% 100%; - background-color: #0E2B46; + background-color: #0e2b46; padding: 8px 10px; .el-table__header tr, .el-table__header th { - background: linear-gradient(180deg, #3068A5 0%, #1E4066 100%); - box-shadow: inset 0px 1px 0px 0px rgba(255,255,255,0.2); + background: linear-gradient(180deg, #3068a5 0%, #1e4066 100%); + box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.2); padding: 0; height: 32px; - .cell{ + .cell { text-align: center; } } - tbody{ + tbody { overflow: hidden; tr { - .el-table__cell{ + .el-table__cell { padding: 10px 0; } td { @@ -432,15 +401,15 @@ background-color: transparent !important; } } - td.el-table__cell{ + td.el-table__cell { padding: 10px 0; - border-bottom: 1px solid #3685F4; + border-bottom: 1px solid #3685f4; } } - tr.el-table__row{ + tr.el-table__row { background-color: transparent !important; } } } -} + } </style> -- Gitblit v1.9.3