From 59325f787724f8a95e6fd69a8347a49062ad5064 Mon Sep 17 00:00:00 2001 From: ljx <15723110242@139.com> Date: Thu, 21 Aug 2025 14:17:57 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../largeScreen/components/rightPage.vue | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/views/largeScreen/components/rightPage.vue b/src/views/largeScreen/components/rightPage.vue index 247c4ce..d96e850 100644 --- a/src/views/largeScreen/components/rightPage.vue +++ b/src/views/largeScreen/components/rightPage.vue @@ -1,5 +1,10 @@ @@ -10,4 +15,17 @@ height: 100%; background: #0c1e35; } +.funds { + width: 100%; + height: 40%; + border: 1px solid rgba(29, 214, 255, 0.3); + box-sizing: border-box; + padding: 5px; + .fundsTitle { + width: 100%; + height: 15%; + font-size: 16px; + background-color: #1dd6ff; + } +} From b4a023570fad2b0487adb4e04ed9785bdf6de2b9 Mon Sep 17 00:00:00 2001 From: fengsen <2548667232@qq.com> Date: Thu, 21 Aug 2025 14:18:21 +0800 Subject: [PATCH 2/8] =?UTF-8?q?title=E7=BB=84=E4=BB=B6=E3=80=81progress?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/large/title_bottom.png | Bin 0 -> 323 bytes src/assets/large/title_icon.png | Bin 0 -> 731 bytes .../components/ProgressComponent.vue | 120 ++++++++++++++++++ .../largeScreen/components/TitleComponent.vue | 56 ++++++++ src/views/largeScreen/components/leftPage.vue | 30 ++++- 5 files changed, 203 insertions(+), 3 deletions(-) create mode 100644 src/assets/large/title_bottom.png create mode 100644 src/assets/large/title_icon.png create mode 100644 src/views/largeScreen/components/ProgressComponent.vue create mode 100644 src/views/largeScreen/components/TitleComponent.vue diff --git a/src/assets/large/title_bottom.png b/src/assets/large/title_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..156eef85bc959b36e4da4cb63478b74cefc77036 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0y~yU=;?kc{tdBnRU@Xf&8PJpLjS=Dmfv zN`K!2@AzF0vX}IN4Bs==M&HufIkhkw}`6{bu1Q+x9;zENjy}?H#{$UsUxO zzJOV$T|oL0It&Ftv_z5*3y5x$5M~5Y4T{Gg(jI5{K*D>}&Ub%rw0^W@+AZs{)!*k- l=XpPx#1am@3R0s$N2z&@+hyVZrg-Jv~RA_GU{QL( z(V;`p28Ubv4|FKF3X1d(>Cn2kcIevmTv9cNOV>LgIEfBoJPTJew0G~%rEhtw#q=(B zmk9UW0+;X!PsmFy#9NCyAa-z4a%jW#F@}g=SO;g1BzHirEB$WN?!So^k9wRdLUm}|puL$@V{c~FxbyR)9A&P=2)$9~N(G_! z=Uh$qx%H_<|2#iZN2t_XOxT(A*aO1>;Cyb;U&noB2t5KU5G(*2O^-Vf!}-#pv*SJ& zgdPKJL1@o;>_fsKf|EN!%Y?uh18WoUwOt@o1wvIIR0Tp+AXEiHRUlLaLRBDC6M~Sm z4#-_FkLBh%02rrt*E|55yxnSpr42#tToL+%)BBGd-fWqeifl015M*VIpkWvAR?E7- zy#J~a9@PxU*uPVHmD?XiMgYK^#|HpV4TEYe4CdL*H40a(zy~N^ai3l7)+N3n7;Wn$y})*^e&p~ zGS7?k!OW@&`P!a<3WVzaK@ejd61xDh`Exez6K=WOE)i@7QakQrBUH04n*eMOYyw6) z?h_;Qnl4++upwXrFvo(>OEOpL2vwZ9GDGMMn=2QD-bHiej!@}y{RVo{IZ+793qSw> N002ovPDHLkV1kumL5KhV literal 0 HcmV?d00001 diff --git a/src/views/largeScreen/components/ProgressComponent.vue b/src/views/largeScreen/components/ProgressComponent.vue new file mode 100644 index 0000000..8620b37 --- /dev/null +++ b/src/views/largeScreen/components/ProgressComponent.vue @@ -0,0 +1,120 @@ + + + + + + \ No newline at end of file diff --git a/src/views/largeScreen/components/TitleComponent.vue b/src/views/largeScreen/components/TitleComponent.vue new file mode 100644 index 0000000..46ed988 --- /dev/null +++ b/src/views/largeScreen/components/TitleComponent.vue @@ -0,0 +1,56 @@ + + + + + \ No newline at end of file diff --git a/src/views/largeScreen/components/leftPage.vue b/src/views/largeScreen/components/leftPage.vue index 4638875..804ea76 100644 --- a/src/views/largeScreen/components/leftPage.vue +++ b/src/views/largeScreen/components/leftPage.vue @@ -1,13 +1,37 @@ - + - From aab67593ebb8d9116738d0d867a6119ba61615c8 Mon Sep 17 00:00:00 2001 From: ljx <15723110242@139.com> Date: Thu, 21 Aug 2025 17:32:10 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- package.json | 1 + src/api/tender/index.ts | 44 ++ src/components/EchartBox/index.vue | 169 ++++++ src/views/contract/division/index.vue | 11 +- .../largeScreen/components/optionList.ts | 169 ++++-- .../largeScreen/components/rightPage.vue | 62 ++- src/views/tender/bidd/index.vue | 279 ++++++++++ src/views/tender/plan/index.vue | 481 +++++++++++++++++- 9 files changed, 1154 insertions(+), 64 deletions(-) create mode 100644 src/api/tender/index.ts create mode 100644 src/components/EchartBox/index.vue create mode 100644 src/views/tender/bidd/index.vue diff --git a/.env.development b/.env.development index 8849f99..6e07116 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.213:8899' +VITE_APP_BASE_API = 'http://192.168.110.149:8899' # 无人机接口地址 diff --git a/package.json b/package.json index 7053b13..67291cb 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "diagram-js": "12.3.0", "didi": "9.0.2", "echarts": "5.5.0", + "echarts-gl": "^2.0.9", "element-plus": "2.8.8", "esbuild": "^0.25.0", "ezuikit-js": "^8.1.10", diff --git a/src/api/tender/index.ts b/src/api/tender/index.ts new file mode 100644 index 0000000..2ebb22b --- /dev/null +++ b/src/api/tender/index.ts @@ -0,0 +1,44 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; + +//获取版本 +export const obtainAllVersionNumbers = (query: any): AxiosPromise => { + return request({ + url: '/tender/tenderPlanLimitList/obtainAllVersionNumbers', + method: 'get', + params: query + }); +}; +//获取sheet +export const sheetList = (query: any): AxiosPromise => { + return request({ + url: '/tender/tenderPlanLimitList/sheetList', + method: 'get', + params: query + }); +}; +//获取表格数据 +export const getTableList = (query: any): AxiosPromise => { + return request({ + url: '/tender/tenderPlanLimitList/list', + method: 'get', + params: query + }); +}; +//修改单价数据 +export const updatePrice = (query: any): AxiosPromise => { + return request({ + url: '/tender/tenderPlanLimitList', + method: 'put', + data: query + }); +}; +//导入 +export const importExcelFile = (query: any, data: any): AxiosPromise => { + return request({ + url: '/tender/tenderPlanLimitList/importExcelFile', + method: 'post', + params: query, + data + }); +}; diff --git a/src/components/EchartBox/index.vue b/src/components/EchartBox/index.vue new file mode 100644 index 0000000..1725eac --- /dev/null +++ b/src/components/EchartBox/index.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/src/views/contract/division/index.vue b/src/views/contract/division/index.vue index d5ae5b2..bb6c8d0 100644 --- a/src/views/contract/division/index.vue +++ b/src/views/contract/division/index.vue @@ -463,7 +463,16 @@ const getDetails = (row: any) => { } }); }; - +//监听项目id刷新数据 +const listeningProject = watch( + () => currentProject.value?.id, + (nid, oid) => { + getTabsList(); + } +); +onUnmounted(() => { + listeningProject(); +}); onMounted(() => { getTabsList(); }); diff --git a/src/views/largeScreen/components/optionList.ts b/src/views/largeScreen/components/optionList.ts index 7d9486f..b0ba838 100644 --- a/src/views/largeScreen/components/optionList.ts +++ b/src/views/largeScreen/components/optionList.ts @@ -249,9 +249,10 @@ export const getOption2 = (data: any) => { }; return option; }; -//食堂周报图 +//z折线 export const getLineOption = (lineData: any) => { - const maxData = Math.ceil(Math.max(...lineData.line1)); + const maxData = Math.max(...lineData.line1.flat()); + const option = { backgroundColor: '', tooltip: { @@ -263,37 +264,41 @@ export const getLineOption = (lineData: any) => { }, borderColor: '#7ec7ff' }, - // legend: { - // align: 'left', - // right: '5%', - // top: '1%', - // type: 'plain', - // textStyle: { - // color: '#fff', - // fontSize: 12 - // }, - // // icon:'rect', - // itemGap: 15, - // itemWidth: 18, - // data: [ - // { - // name: '上周销售量' - // }, - // { - // name: '本周销售量' - // } - // ] - // }, + legend: { + align: 'left', + right: '5%', + top: '1%', + type: 'plain', + textStyle: { + color: '#fff', + fontSize: 12 + }, + // icon:'rect', + itemGap: 15, + itemWidth: 18, + data: [ + { + name: '收款金额' + }, + { + name: '付款金额' + }, + { + name: '净现金流' + } + ] + }, grid: { top: '12%', left: '1%', right: '3%', - bottom: '12%', + bottom: '5%', containLabel: true }, xAxis: { type: 'category', data: lineData.xLabel, + boundaryGap: false, axisLine: { show: false }, @@ -318,21 +323,21 @@ export const getLineOption = (lineData: any) => { } } }, - dataZoom: [ - { - // show: true, - start: 0, - end: 30, - bottom: 2, // 下滑块距离x轴底部的距离 - height: 23 - }, - { - type: 'inside' - } - ], + // dataZoom: [ + // { + // // show: true, + // start: 0, + // end: 30, + // bottom: 2, // 下滑块距离x轴底部的距离 + // height: 23 + // }, + // { + // type: 'inside' + // } + // ], series: [ { - name: '逆变器功率', + name: '收款金额', type: 'line', symbol: 'circle', // 默认是空心圆(中间是白色的),改成实心圆 showAllSymbol: false, @@ -373,7 +378,95 @@ export const getLineOption = (lineData: any) => { shadowColor: 'rgba(25,163,223, 0.5)', //阴影颜色 shadowBlur: 20 //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。 }, - data: lineData.line1 + data: lineData.line1[0] + }, + { + name: '付款金额', + type: 'line', + symbol: 'none', // 默认是空心圆(中间是白色的),改成实心圆 + showAllSymbol: false, + symbolSize: 0, + smooth: true, + lineStyle: { + width: 1, + color: 'rgba(255, 224, 179, 1)', // 线条颜色 + borderColor: 'rgba(0,0,0,.4)' + }, + itemStyle: { + color: 'rgba(255, 224, 179, 1)', + borderWidth: 2, + show: true + }, + tooltip: { + show: true + }, + areaStyle: { + //线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。 + color: new echarts.graphic.LinearGradient( + 0, + 0, + 0, + 1, + [ + { + offset: 0, + color: 'rgba(255, 224, 179, 0.4)' + }, + { + offset: 1, + color: 'rgba(255, 224, 179, 0)' + } + ], + false + ), + shadowColor: 'rgba(255, 224, 179, 0.6)', //阴影颜色 + shadowBlur: 20 //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。 + }, + data: lineData.line1[1] + }, + { + name: '净现金流', + type: 'line', + symbol: 'none', // 默认是空心圆(中间是白色的),改成实心圆 + showAllSymbol: false, + symbolSize: 0, + smooth: true, + lineStyle: { + width: 1, + color: 'rgba(39, 255, 252, 1)', // 线条颜色 + borderColor: 'rgba(0,0,0,.4)' + }, + itemStyle: { + color: 'rgba(39, 255, 252, 1)', + borderWidth: 2, + show: false + }, + tooltip: { + show: true + }, + areaStyle: { + //线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。 + color: new echarts.graphic.LinearGradient( + 0, + 0, + 0, + 1, + [ + { + offset: 0, + color: 'rgba(39, 255, 252, 0.4)' + }, + { + offset: 1, + color: 'rgba(39, 255, 252, 0)' + } + ], + false + ), + shadowColor: 'rgba(39, 255, 252, 0.5)', //阴影颜色 + shadowBlur: 20 //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。 + }, + data: lineData.line1[2] } ] }; diff --git a/src/views/largeScreen/components/rightPage.vue b/src/views/largeScreen/components/rightPage.vue index d96e850..a87ed17 100644 --- a/src/views/largeScreen/components/rightPage.vue +++ b/src/views/largeScreen/components/rightPage.vue @@ -1,31 +1,71 @@ - + diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue new file mode 100644 index 0000000..e32016c --- /dev/null +++ b/src/views/tender/bidd/index.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue index 0a6ec44..806a616 100644 --- a/src/views/tender/plan/index.vue +++ b/src/views/tender/plan/index.vue @@ -1,27 +1,482 @@ - + From 48a30fd50879c76f87ed2814f0451f7c6a2f1bf7 Mon Sep 17 00:00:00 2001 From: fengsen <2548667232@qq.com> Date: Thu, 21 Aug 2025 17:34:02 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E8=B5=84=E9=87=91=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .../components/ProgressComponent.vue | 2 +- src/views/largeScreen/components/leftPage.vue | 38 +++++++++++++++---- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/.env.development b/.env.development index 8849f99..b59befd 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.213:8899' +VITE_APP_BASE_API = 'http://192.168.110.180:8899' # 无人机接口地址 diff --git a/src/views/largeScreen/components/ProgressComponent.vue b/src/views/largeScreen/components/ProgressComponent.vue index 8620b37..2d7ec49 100644 --- a/src/views/largeScreen/components/ProgressComponent.vue +++ b/src/views/largeScreen/components/ProgressComponent.vue @@ -72,7 +72,7 @@ const percentageClass = computed(() => { .progress_component { width: 100%; height: 100%; - + margin-bottom: 10px; :deep(.el-progress-bar__outer) { background-color: transparent; } diff --git a/src/views/largeScreen/components/leftPage.vue b/src/views/largeScreen/components/leftPage.vue index 804ea76..c664040 100644 --- a/src/views/largeScreen/components/leftPage.vue +++ b/src/views/largeScreen/components/leftPage.vue @@ -2,22 +2,45 @@
- -
+ + + +
+
+
@@ -26,12 +49,13 @@ import ProgressComponent from './ProgressComponent.vue'; .leftPage { width: 100%; height: 100%; - background: #0c1e35; - - .kpi_box { + .kpi_box{ + margin-bottom: 10px; + } + .kpi_box,.contract_box { padding: 10px; box-sizing: border-box; + border: 1px solid rgba(29, 214, 255, 0.3); } - } From 15a724a5fe76a1880f3bf03ac8db1b8dd412af43 Mon Sep 17 00:00:00 2001 From: fengsen <2548667232@qq.com> Date: Thu, 21 Aug 2025 18:45:51 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E8=B5=84=E9=87=91=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 -- src/views/largeScreen/components/leftPage.vue | 16 ++++- .../largeScreen/components/optionList.ts | 68 +++++++++++++++++-- 3 files changed, 78 insertions(+), 10 deletions(-) diff --git a/.env.development b/.env.development index ad65c33..b59befd 100644 --- a/.env.development +++ b/.env.development @@ -5,11 +5,7 @@ VITE_APP_TITLE = 煤科建管平台 VITE_APP_ENV = 'development' # 开发环境 -<<<<<<< HEAD VITE_APP_BASE_API = 'http://192.168.110.180:8899' -======= -VITE_APP_BASE_API = 'http://192.168.110.149:8899' ->>>>>>> aab67593ebb8d9116738d0d867a6119ba61615c8 # 无人机接口地址 diff --git a/src/views/largeScreen/components/leftPage.vue b/src/views/largeScreen/components/leftPage.vue index c664040..683c9a3 100644 --- a/src/views/largeScreen/components/leftPage.vue +++ b/src/views/largeScreen/components/leftPage.vue @@ -33,16 +33,25 @@ />
- +
diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue index 806a616..a7d5883 100644 --- a/src/views/tender/plan/index.vue +++ b/src/views/tender/plan/index.vue @@ -64,6 +64,11 @@ + + + + + @@ -146,7 +151,16 @@ import { useUserStoreHook } from '@/store/modules/user'; import { getDicts } from '@/api/system/dict/data'; import { Plus } from '@element-plus/icons-vue'; import { FormInstance } from 'element-plus'; -import { treeList, sheetList, segmentedIndicatorPlanning, getPlanningList, updatePlanning, delPlanning, getDetailsList } from '@/api/contract/index'; +import { + sheetList, + tenderPlanList, + addTenderPlan, + delTenderPlan, + updateTenderPlan, + treeList, + getTenderPlanDetail, + obtainAllVersionNumbers +} from '@/api/tender/index'; const userStore = useUserStoreHook(); const currentProject = computed(() => userStore.selectedProject); @@ -175,6 +189,9 @@ const rules = ref({ content: [{ required: true, message: '请输入内容', trigger: 'blur' }] }); const loading = ref(false); +const planType = computed(() => { + return activeTab.value == '2' ? '3' : '2'; +}); //字典获取数据 const getTabsList = async () => { @@ -198,9 +215,10 @@ const getList = async () => { projectId: currentProject.value?.id, ...queryParams.value, ...queryForm.value, - dictName: activeTab.value + dictName: activeTab.value, + type: planType.value }; - const res = await getPlanningList(params); + const res = await tenderPlanList(params); if (res.code == 200) { tableData.value = res.rows; total.value = res.total; @@ -234,7 +252,7 @@ const resetQuery = () => { const openDialog = () => { dialogVisible.value = true; - getSheetName(); + getVersionNums(); }; const closeDialog = () => { dialogVisible.value = false; @@ -246,19 +264,50 @@ const closeDialog = () => { }; const treeData = ref([]); const treeForm = ref({ - sheet: '' + sheet: '', + versions: '' }); const sheets = ref([]); const treeTableRef = ref(); const isExpandAll = ref(false); const treeLoading = ref(false); const selectionData = ref([]); +const options = ref([]); +//切换版本 +const changeVersions = () => { + getSheetName(); +}; +//获取版本号 +const getVersionNums = async () => { + try { + const params = { + projectId: currentProject.value?.id, + workOrderType: planType.value, + pageSize: 1000, + pageNum: 1 + }; + + const res = await obtainAllVersionNumbers(params); + if (res.code == 200) { + options.value = res.data; + if (res.data.length > 0) { + treeForm.value.versions = res.data[0].versions; + getSheetName(); + } else { + treeForm.value.versions = ''; + getSheetName(); + } + } + } catch (error) { + console.log(error); + } +}; //获取表名 const getSheetName = async () => { try { const params = { - projectId: currentProject.value?.id - // versions: queryForm.value.versions + projectId: currentProject.value?.id, + versions: treeForm.value.versions }; const res = await sheetList(params); if (res.code == 200) { @@ -333,7 +382,9 @@ const getTreeList = async () => { treeLoading.value = true; const params = { projectId: currentProject.value?.id, - sheet: treeForm.value.sheet + sheet: treeForm.value.sheet, + versions: treeForm.value.versions, + type: planType.value }; const res = await treeList(params); if (res.code == 200) { @@ -381,10 +432,10 @@ const submitForm = async (formEl: FormInstance | undefined) => { ...form.value, dictName: activeTab.value, limitListBos, - type: activeTab.value == '2' ? '3' : '2' + type: planType.value }; - return; - const res = await segmentedIndicatorPlanning(params); + + const res = await addTenderPlan(params); if (res.code == 200) { ElMessage({ message: '新增成功', @@ -411,7 +462,7 @@ const handleSave = (row: any) => { }); return; } - updatePlanning(row).then((res) => { + updateTenderPlan({ ...row, type: planType.value }).then((res) => { if (res.code == 200) { ElMessage({ message: '修改成功', @@ -432,7 +483,7 @@ const handleSave = (row: any) => { const delHandle = (row: any) => { try { const params = { ids: row.id }; - delPlanning(params).then((res) => { + delTenderPlan(params).then((res) => { if (res.code == 200) { ElMessage({ message: '删除成功', @@ -459,7 +510,7 @@ const handleDetail = (row: any) => { getDetails(row); }; const getDetails = (row: any) => { - getDetailsList({ id: row.id }).then((res) => { + getTenderPlanDetail({ id: row.id }).then((res) => { if (res.code == 200) { detailData.value = res.data; } From 5870c66161f716cfc672c7de9ddcc4125d0c7f92 Mon Sep 17 00:00:00 2001 From: tcy <1193318383@qq.com> Date: Thu, 21 Aug 2025 20:21:03 +0800 Subject: [PATCH 7/8] =?UTF-8?q?refactor(largeScreen):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=B1=95=E7=A4=BA=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 ProgressComponent 组件,增加 isShowPrice 属性控制是否显示价格 - 更新 rightPage 组件,添加新的 ProgressComponent 实例 - 优化 tender/plan/index.vue 页面结构,简化代码 --- .../components/ProgressComponent.vue | 21 +- .../largeScreen/components/rightPage.vue | 23 +- src/views/tender/plan/index.vue | 789 ++---------------- 3 files changed, 105 insertions(+), 728 deletions(-) diff --git a/src/views/largeScreen/components/ProgressComponent.vue b/src/views/largeScreen/components/ProgressComponent.vue index 2d7ec49..da1b86c 100644 --- a/src/views/largeScreen/components/ProgressComponent.vue +++ b/src/views/largeScreen/components/ProgressComponent.vue @@ -4,16 +4,12 @@ {{ title }} {{ percentageChange }} -
+
{{ value }} {{ unit }}
- +
@@ -56,14 +52,19 @@ const props = defineProps({ progressColor: { type: String, default: 'rgba(255, 77, 79, 1)' + }, + // 是否显示价格 + isShowPrice: { + type: Boolean, + default: true } }); // 计算百分比变化的样式类(红色或绿色) const percentageClass = computed(() => { // 检查变化值是否为正数 - const isPositive = props.percentageChange.startsWith('+') || - (!props.percentageChange.startsWith('-') && props.percentageChange !== '0.00%'); + const isPositive = props.percentageChange.startsWith('+') || + (!props.percentageChange.startsWith('-') && props.percentageChange !== '0.00%'); return isPositive ? 'green' : 'red'; }); @@ -73,6 +74,7 @@ const percentageClass = computed(() => { width: 100%; height: 100%; margin-bottom: 10px; + :deep(.el-progress-bar__outer) { background-color: transparent; } @@ -116,5 +118,4 @@ const percentageClass = computed(() => { color: rgba(0, 227, 150, 1); } } - - \ No newline at end of file + \ No newline at end of file diff --git a/src/views/largeScreen/components/rightPage.vue b/src/views/largeScreen/components/rightPage.vue index 0df2f6d..8ffd7cd 100644 --- a/src/views/largeScreen/components/rightPage.vue +++ b/src/views/largeScreen/components/rightPage.vue @@ -29,10 +29,12 @@
-
+ +
@@ -42,6 +44,7 @@ import TitleComponent from './TitleComponent.vue'; import EchartBox from '@/components/EchartBox/index.vue'; import { getLineOption, getBarOptions } from './optionList'; +import ProgressComponent from './ProgressComponent.vue'; const lineOption = ref(); const barOption = ref(); @@ -94,6 +97,7 @@ onMounted(() => { box-sizing: border-box; // padding: 5px; } + .funds { width: 100%; // height: 40%; @@ -101,11 +105,13 @@ onMounted(() => { box-sizing: border-box; padding: 10px 5px; } + .funds_echarts { width: 100%; height: 25vh; padding: 10px 0 0 0; } + .cashFlow { width: 100%; // height: 50%; @@ -114,6 +120,7 @@ onMounted(() => { padding: 10px 5px; margin-top: 20px; } + .inflowData { width: 100%; height: 12vh; @@ -122,6 +129,7 @@ onMounted(() => { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 10px; + .inflow { width: 100%; height: 100%; @@ -141,12 +149,14 @@ onMounted(() => { color: #fff; padding-bottom: 10px; } + .number { font-size: 24px; // font-weight: 500; color: #fff; padding-bottom: 10px; } + .unit { font-size: 12px; // font-weight: 500; @@ -154,12 +164,21 @@ onMounted(() => { } } } + .inflow_echarts { width: 100%; height: 25vh; margin-top: 20px; } + .progress { width: 100%; + margin-top: 20px; +} + +:deep(.progress_text) { + .roboto { + color: #fff; + } } diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue index bb7f880..75c3732 100644 --- a/src/views/tender/plan/index.vue +++ b/src/views/tender/plan/index.vue @@ -1,230 +1,22 @@ -<<<<<<< HEAD - - - - - - - - - - - - - - - - - - - - - - - - - - 一键展开 - - - 一键收起 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >>>>>>> aab67593ebb8d9116738d0d867a6119ba61615c8 - +
+ + + + + + + + + + + + + + + - - \ No newline at end of file + From 40cb0589f886127e42932016421971e716c1e068 Mon Sep 17 00:00:00 2001 From: fengsen <2548667232@qq.com> Date: Thu, 21 Aug 2025 21:37:32 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E8=B5=84=E9=87=91=E7=9C=8B=E6=9D=BF-?= =?UTF-8?q?=E5=AE=8C=E5=96=84-=E6=95=B0=E6=8D=AE=E6=9A=82=E6=97=B6?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- src/assets/large/down.png | Bin 0 -> 438 bytes src/assets/large/top1.png | Bin 0 -> 1571 bytes src/assets/large/top2.png | Bin 0 -> 1565 bytes src/assets/large/top3.png | Bin 0 -> 1900 bytes src/assets/large/top4.png | Bin 0 -> 2048 bytes src/assets/large/up.png | Bin 0 -> 386 bytes .../components/RevenueContractCard.vue | 167 ++++++++++++++++++ .../components/bottomboxconpoent.vue | 45 +++++ .../largeScreen/components/centerPage.vue | 54 +++++- .../largeScreen/components/rightPage.vue | 5 +- 11 files changed, 268 insertions(+), 5 deletions(-) create mode 100644 src/assets/large/down.png create mode 100644 src/assets/large/top1.png create mode 100644 src/assets/large/top2.png create mode 100644 src/assets/large/top3.png create mode 100644 src/assets/large/top4.png create mode 100644 src/assets/large/up.png create mode 100644 src/views/largeScreen/components/RevenueContractCard.vue create mode 100644 src/views/largeScreen/components/bottomboxconpoent.vue diff --git a/.env.development b/.env.development index 6e07116..b59befd 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.149:8899' +VITE_APP_BASE_API = 'http://192.168.110.180:8899' # 无人机接口地址 diff --git a/src/assets/large/down.png b/src/assets/large/down.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2f40010791055944d801d1e00db95a473838e6 GIT binary patch literal 438 zcmV;n0ZIOeP)Px#1am@3R0s$N2z&@+hyVZqU`a$lR9J=Wm_c&FFbqY%Jlw0!K7`&V$&E^3PkOPc ziv*W|9m}!0yJv6J%h-!F99Y3aPw}rYhmE1&Myc)qy4f0XLR4{hEtv z)~9AZ`bA(5P5QyyKN-wBHM|?glfZ&wEVu@(47NB|7k9Ijz@mdbx-b?76FCpj7F!5R zY=y+DbtYJnH%r?0m0-zcG5HZ95lrP?RWBn#FtwdlKi5RSvi!Xo3J8K_FC1A=SGny3 g0G+@45;@;ae+_55eN&C}WB>pF07*qoM6N<$f-A|d`~Uy| literal 0 HcmV?d00001 diff --git a/src/assets/large/top1.png b/src/assets/large/top1.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b82686c55b49c3eac41fe65d0574265d4bf1fc GIT binary patch literal 1571 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 M(3ep)CT@5B2I|M<%>V!Z literal 0 HcmV?d00001 diff --git a/src/assets/large/top3.png b/src/assets/large/top3.png new file mode 100644 index 0000000000000000000000000000000000000000..4a67e61c7241bf8bd1d116ce5ff024be5c61f892 GIT binary patch literal 1900 zcmb7F`#%#3AD-p1=3s3#mqjBL7`~@e10$2?U000#1Y;hNN zk@4>Z$?jfLiqYUMNCjUcU;*X)gP(SZbTHP=1++W2L6kTEKn`w)vvOf%iL!YC?`IYo`n6yQf9Xn3YFy~VP_qud5H(E zdbB#=)W`nNK&QU8Ut6*4~z9qXIrfL6sTv+^U>-C!3E4y7kI9&73JEew^wKgtjMM2-jf3c#19=? zlQi~}J!wHhngN+$UD)}auK(0Z=M`S!7BYpe$>i_P;IFyI(ZyqARp%4Dmp|g#l*WcK z9S>x9X)Gf3MPX&W*YG7d8%q--MME$dzZ)pugs$pEWVYz(CC@}#M|R__vTA2zbVj3` z)C;32y{Y3|Iy3ve;7u`G<2$mk-hh=6_D#H;L~1}vNZD^3G(GlpKPH~1FUQ6JhsK?A z(^M3Lk}iiSJlHn>N`h52lm~rd6mz6yqxbMpP1eFGPCyB5fv2>it5Bty7|Q4e8bscC z7ci{C4M#UC0GRxo&A4(6Bbri;^x5s5hqzOUnRP5TsAwCtx1#g27jdcX&R&>=jv!KL zp-`_}dI=LthN zm%%a+Go!@kJJx4vApf-`4;=KwqV^d@TYi16!5URsBXw52XW2zTYTpjVQ$X5=sM1i`rf~qN{=5iRiRk4#cO})gXk(F2=6%?!?cgREr`W!P zXl81hTk&B4+1%u6kf1Bg(|gqCS&MwCYvEM}@~#1FbIj^J3<1-k%X`8p6UTp^y%`}i znMh8v(u`uTcaF6V*fd4G{@EO zh7h^S*L{BLY#FMdQ=H_Q^qd3X3tcg$;{i(LQDdq!aek#PpS00iKm}Nz>g`*iIK}4t zE%f^izMj$&N~yB^Q~6wRq09XBfJ6T5m-=Ai_AuXXkjv3R6NOS;X-9p_Zl#wpeR@=L zbO1q?W^K_R4LySG{(4auWcqa4k9DBZ3aErG*XxEafS6{5i>~x6Gis%wAk)7`R$(Ab zVutKaRqJq$5}eUHzHO>t&8>hMm3Q`%nnA1=f)B8p7V$dm=y*y?*A_C6J@r! zB!iIF_XI<@>ul2eihWAi59Hq+4QEs;Y7Qfbp2Uw`XnO+db`mlF(n?>Q7-H|=nNEt7 zJCz15WJP}f{>qRT3}{9WBE}-~_*bJK*#*XIX9pH%_?V+2Lj(7ndA7pug{^M0`f)@dBd!aLH6 zrxQ13>K%}|B`!QyvaJ4U>d^1Hl_u!>Rx$WG_1(0T+-_Jw?MJjHu3Mzc+^i}~iSI~U zZ~mUo9w|zkUhe+McY%Xz8Z>t4ANP_U__96g(LQV=5o10`+LA^tP%SPU3~z{WX|4|L zQPXm*aP%a-GWVOG4!M@w^kelo78=0}6pHf;Yvwr)Su0F6G zlth|4Oc?W*ex#B+JXO;!bNq$uJui##4nz7}{XI7o1ERnopXw6chiHyzofW9#b|y-u zuD~s2yz`h?sKBUaTMM&*{V-!CpEGHr%?zz*bL0)FRm}^0f4GNC^|%g}&7Mmdj>g@( zD?eFxe>6Sz&5PL4beu24;|r}n6}h>$HZV_1VIp~8t*~U${nd|Kxq&NnbkE-1#st{m Kop9w?67wHKe2Oms literal 0 HcmV?d00001 diff --git a/src/assets/large/top4.png b/src/assets/large/top4.png new file mode 100644 index 0000000000000000000000000000000000000000..1cbe562131b88876e6f51ee3de32329c14930b33 GIT binary patch literal 2048 zcma)7c{me}8(-TnmFD<5S4m1zm}9J3jyYEd@#xT+YZ1zvbKhrmSe}BLCdEWPZKF|BUf4qNuKA&`ZJ1dF3N_znSfCR?c+)>zx z|0G0ISkHJGyc4!PL5@~vK*O7Z%R&GSLSvjD!ia)+rU3wAH5hYKCt~s16Gq?%YsmrH z;S#BPI(F@jXNb`sW^0_bzINV!ZbVf22p0^^ABSv^&VNWfSu#l!XMVU$a6b!JJihIKMPmPuPvk4t60wNTiE zs7YiFXdT{R{QZT<>S~o^YjcKGcWZTmTY%2f6OwMZ;yvQs%GiY{Uaohutukz1)Y$4a zcQU$-=Eslk3H8p5ylQDRh0AVA{i&}@gWw6tcM&)ZxS7ic!b-hJyv7+|&l0qr;cgm^NX?3jqFVificdBBd&4cVN{T0JMPw99Z#p=?9md3V z+o0~}Rn*JL#62XEmeT0?s=({n5Wh1=8~-;zjD$e254ttuie{+Ky2HSKy1XgFDRX?j z#kA$>g=1PDD8Kp+(P`72&w9Jnp=!i2$>L8X0u^jw51X>KT`6Z`o6Re`^8*b_Hd|109^r|DiikBH(mts^5RJQY` zQW3z{g$m2x9waK4CeJpaaVcF{KU`+BpMg3$*8==y2B6IS(JO2U0ig1|!<^6h=V-1V^3YGbjo%XU|Oyk=3E$(`gsOvxkZ+}sQ&K%`jkU$WfF7^Id2yBk8_xWIrG;g9xuf}O@m5JCqQi{*q}zgggM&P zTWNMVkg@}2^N&LP4Y9Z*rw(NRNnY-LLH=1?Hh8yWIz>8?zffcI4bB^S>2(%UCr3Q5 zJ+X#-hozSNg%I}!Vn_NmuEZ??wN)bzg)BCa4L0E;_5e6hr4h%T=hNDqg14G*{n8>RX-sp`cTQD6!3pA{Q$?`0K{Ob&^Cije6G`ic7

nc1y=i^}uR&x(=fnNjU^p``M?R8gN=G7QhYh_2%Ph$O& z=_Ufkue-vP?d476`9;h4iC_X9jX14UY%`;<)Ndv0nasvh^HjG)uGFP0Lmy6Q=6)Qy zU%Uw4$E;ba2Q+rcyHJ0$bf=_)^fj4NmzWSv{hO*2}2^i@x)DGYZ>*0d*Z~xlsqbD=y|! z*6~pi*>>!5`4{{-zq^?X683mt;Xx{WC^pK$2lGPm)`)@m6jUhK!~JD9U#axO1bpYp00eK0=bWEs-)^O?*+|;$ zmb@qJ1weKi{SuSh(-F>qfONiTI|pJR<68q@t1`_!1Z39-Nu_TU{s^q~_efV<$Rfvt ztBG6Wjq8T^4j3204v22B3^78jZrPPD#R^b}X&$DSKej=khj_0lz%U&fgLL z+*Hga(4pqL&|n%Z8-sQbnEd(;VxpNEK}MVDTA~M@MqVX}r=});nUlHUS=n(hHi4f( zn*|MbYW2Mfp0zqJfO*S27_@&c!G{nL-#$D}jZVjc5*lp%g2hYM`Ohf=sS!t;;r zHZq|qCdkREFmgjXzwUUzXe8${E})~+r>9}`OMC5_nG&YsDCoyqCN zlq*{SACi2xMX22gWv$<=2E7sj(7eeQflrbPiS)!Rih7N{i_SRRfNV x1hP!_punkGJ#;I$4^BVyJ2$q{IIKZq7kU;8AVBcDD?%3sU@Yv+8_>9f{{rmL;SB%) literal 0 HcmV?d00001 diff --git a/src/assets/large/up.png b/src/assets/large/up.png new file mode 100644 index 0000000000000000000000000000000000000000..6cabc105c4c5be4d4718413991c5df2de729edcb GIT binary patch literal 386 zcmV-|0e$|7P)Px#1am@3R0s$N2z&@+hyVZqEJ;K`R9J=W*wKxHFc1XL!MZl+#VLntf?O4pb51Q3 z!hIMvLIHbrZ70%+`Ql^ac`^zy=}?+^8so*{fi3`epdUiXl3h7yxgRWhD}mWjryyC{ z46~uKAX(l7)1zpRRH$J(lo}*8Dj1J4gQSXvaj0UD)KRcJsv1Ztv#>O(I!J1huya&1 zkW`<-j#14)Qhx}0MZFCqgcsNz^>&ajcCaVvV<4dj%o#y}oMGnHEWem1A5rtr^2eQKEX>(*ng9R*07*qoM6N<$f&qb{6#xJL literal 0 HcmV?d00001 diff --git a/src/views/largeScreen/components/RevenueContractCard.vue b/src/views/largeScreen/components/RevenueContractCard.vue new file mode 100644 index 0000000..14154dc --- /dev/null +++ b/src/views/largeScreen/components/RevenueContractCard.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/views/largeScreen/components/bottomboxconpoent.vue b/src/views/largeScreen/components/bottomboxconpoent.vue new file mode 100644 index 0000000..6735331 --- /dev/null +++ b/src/views/largeScreen/components/bottomboxconpoent.vue @@ -0,0 +1,45 @@ + + + + + \ No newline at end of file diff --git a/src/views/largeScreen/components/centerPage.vue b/src/views/largeScreen/components/centerPage.vue index d250de8..aee49f0 100644 --- a/src/views/largeScreen/components/centerPage.vue +++ b/src/views/largeScreen/components/centerPage.vue @@ -1,8 +1,55 @@ @@ -10,6 +57,8 @@ // import { getPowerStationOverview } from '@/api/large'; import * as echarts from 'echarts'; import china from '@/assets/china.json'; +import RevenueContractCard from './RevenueContractCard.vue'; +import bottomboxconpoent from './bottomboxconpoent.vue'; const data = ref({}); // 地图容器引用 @@ -168,9 +217,12 @@ onUnmounted(() => { padding: 0 10px 10px 10px; box-sizing: border-box; + .centerPage_map { width: 100%; - height: 100%; + height: 60%; } + + } diff --git a/src/views/largeScreen/components/rightPage.vue b/src/views/largeScreen/components/rightPage.vue index 8ffd7cd..bcde746 100644 --- a/src/views/largeScreen/components/rightPage.vue +++ b/src/views/largeScreen/components/rightPage.vue @@ -93,7 +93,6 @@ onMounted(() => { .rightPage { width: 100%; height: 100%; - background: #0c1e35; box-sizing: border-box; // padding: 5px; } @@ -118,7 +117,7 @@ onMounted(() => { border: 1px solid rgba(29, 214, 255, 0.3); box-sizing: border-box; padding: 10px 5px; - margin-top: 20px; + margin-top: 10px; } .inflowData { @@ -173,7 +172,7 @@ onMounted(() => { .progress { width: 100%; - margin-top: 20px; + margin-top: 10px; } :deep(.progress_text) {