From b0ec7df2059a1d23942e71b6fb1ff3575904db81 Mon Sep 17 00:00:00 2001 From: zhanghl <253316343@qq.com> Date: 星期五, 25 四月 2025 18:42:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/views/mainPlan/gasProduceStatics/index.vue | 295 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 216 insertions(+), 79 deletions(-) diff --git a/src/views/mainPlan/gasProduceStatics/index.vue b/src/views/mainPlan/gasProduceStatics/index.vue index d79ef8f..13a251b 100644 --- a/src/views/mainPlan/gasProduceStatics/index.vue +++ b/src/views/mainPlan/gasProduceStatics/index.vue @@ -1,5 +1,56 @@ <template> <div class="app-container"> + <el-form + class="responsive-form" + :model="queryParams" + ref="queryRef" + :inline="true" + v-show="showSearch" + label-width="68px" + > + <el-row type="flex" justify="left"> + <el-form-item label="缁熻鏂瑰紡"> + <el-select + v-model="queryParams.type" + style="width: 200px" + placeholder="Select" + @change="handleChangeSelectType" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + <el-form-item label="閫夋嫨鍖洪棿"> + <div v-if="!dayCom"> + <el-date-picker + v-model="queryParams.monthRange" + type="monthrange" + range-separator="To" + start-placeholder="閫夋嫨寮�濮嬫湀浠�" + end-placeholder="閫夋嫨缁撴潫鏈堜唤" + /> + </div> + <div v-else> + <el-date-picker + v-model="value2" + type="month" + placeholder="閫夋嫨鏈堜唤" + /> + </div> + </el-form-item> + + <el-form-item class="column-with-margin"> + <el-button type="primary" icon="Search" @click="handleQuery" + >鏌ヨ</el-button + > + <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-row> + </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button @@ -8,7 +59,8 @@ icon="Download" @click="handleExport" v-hasPermi="['apsPartRouteStat:export']" - >瀵煎嚭</el-button> + >瀵煎嚭</el-button + > </el-col> <el-col :span="1.5"> <el-button @@ -17,27 +69,68 @@ icon="Refresh" @click="handleRefresh" v-hasPermi="['apsPartRouteStat:edit']" - >鏇存柊</el-button> + >鏇存柊</el-button + > </el-col> <right-toolbar @queryTable="getList" :search="false"></right-toolbar> </el-row> - <vxe-grid ref="gridRef" v-bind="gridOptions" :loading="loading"></vxe-grid> + <div class="box_container"> + <div class="title_text">绠¤矾瑙勫垝浜ц兘璐熻浇缁熻</div> + <div class="tabel_container"> + <vxe-grid + ref="gridRef" + v-bind="gridOptions" + :loading="loading" + ></vxe-grid> + </div> + </div> + <div class="box_container"> + <div class="title_text">姘旀煖瑙勫垝浜ц兘璐熻浇缁熻</div> + <div class="tabel_container"> + <vxe-grid + ref="gridRef2" + v-bind="gridOptions" + :loading="loading" + ></vxe-grid> + </div> + </div> </div> </template> -<script setup name="apsPartRouteStat"> -import { query,updateStat } from "@/api/mainPlan/partRouteStat.js"; +<script setup name="gasProduceStatics"> +import { + listUpdateGasProduceStatics, + listGasProduceStatics, +} from "@/api/mainPlan/gasProduceStatics.js"; import { ref } from "vue"; -import * as XLSX from 'xlsx'; +import * as XLSX from "xlsx"; const { proxy } = getCurrentInstance(); const loading = ref(true); const gridRef = ref(); -const height = ref(document.documentElement.clientHeight - 130 + "px;") +const gridRef2 = ref(); +const height = ref(document.documentElement.clientHeight - 130 + "px;"); const headers = ref([]); const exportData = ref([]); - +const showSearch = ref(true); +const data = reactive({ + queryParams: { + monthRange: "", + type: "鎸夋湀缁熻", + }, +}); +const options = [ + { + value: "month", + label: "鎸夋湀缁熻", + }, + { + value: "day", + label: "鎸夋棩缁熻", + }, +]; +const { queryParams } = toRefs(data); const gridOptions = reactive({ border: true, stripe: true, @@ -47,122 +140,141 @@ showFooterOverflow: true, height: height, columnConfig: { - resizable: true + resizable: true, }, scrollX: { enabled: true, gt: 0, - threshold: 50 + threshold: 50, }, scrollY: { enabled: true, gt: 0, - threshold: 50 - } + threshold: 50, + }, }); - -let tableColumn = [] -let tableData = [] +const dayCom = ref(false); +let tableColumn = []; +let tableData = []; let merges = []; - +function handleChangeSelectType(e) { + console.log(e, "sjcsuhcushc"); + if (e === "day") { + dayCom.value = true; + } else { + dayCom.value = false; + } +} /** 鏌ヨ闆朵欢缁熻琛ㄥ垪琛� */ function getList() { - let rowKey = 0 - let colKey = 0 - headers.value = [] - exportData.value = [] - tableColumn = [] - tableData = [] + let rowKey = 0; + let colKey = 0; + headers.value = []; + exportData.value = []; + tableColumn = []; + tableData = []; loading.value = true; - query().then(response => { - const colList = [] - let headersOne = [] - let headersTwo = [] - if(response.code == '200'){ + listGasProduceStatics().then((response) => { + const colList = []; + let headersOne = []; + let headersTwo = []; + if (response.code == "200") { if (!response.planTitle) { loading.value = false; return; } - headersOne.push('鏃ユ湡'); - headersTwo.push('璧勬簮缁�'); + headersOne.push("鏃ユ湡"); + headersTwo.push("璧勬簮缁�"); colList.push({ - field: 'dateCol', - title: '鏃ユ湡', - fixed: 'left', - children: [ - { field: `resourceName`, title: '璧勬簮缁�', width: 250, type: 'html'}, - ], - width: 160 - }) - response.planTitle.forEach(item => { + field: "dateCol", + title: "鏃ユ湡", + fixed: "left", + children: [ + { field: `resourceName`, title: "璧勬簮缁�", width: 250, type: "html" }, + ], + width: 160, + }); + response.planTitle.forEach((item) => { headersOne.push(item); - headersOne.push(''); - headersOne.push(''); - headersTwo.push('璁捐宸ユ椂'); - headersTwo.push('闇�姹傚伐鏃�'); - headersTwo.push('浜ц兘璐熻嵎'); - colKey++ + headersOne.push(""); + headersOne.push(""); + headersTwo.push("璁捐宸ユ椂"); + headersTwo.push("闇�姹傚伐鏃�"); + headersTwo.push("浜ц兘璐熻嵎"); + colKey++; colList.push({ field: `dateColTime${colKey}`, title: item, children: [ - { field: `designTimes${colKey}`, title: '璁捐宸ユ椂', width: 80}, - { field: `requireTimes${colKey}`, title: '闇�姹傚伐鏃�', width: 80}, - { field: `capacityLoad${colKey}`, title: '浜ц兘璐熻嵎', width: 80, type: 'html'}, + { field: `designTimes${colKey}`, title: "璁捐宸ユ椂", width: 80 }, + { field: `requireTimes${colKey}`, title: "闇�姹傚伐鏃�", width: 80 }, + { + field: `capacityLoad${colKey}`, + title: "浜ц兘璐熻嵎", + width: 80, + type: "html", + }, ], - width: 160 - }) + width: 160, + }); }); headers.value.push(headersOne); headers.value.push(headersTwo); - const columnList = [...tableColumn, ...colList] - const dataList = [] + const columnList = [...tableColumn, ...colList]; + const dataList = []; let startCol = 1; //鑾峰彇map - response.planTable.forEach(mapItem => { - rowKey++ + response.planTable.forEach((mapItem) => { + rowKey++; let lastCol = startCol + 2; - merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c: lastCol} }); + merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c: lastCol } }); startCol = lastCol + 1; let data = []; const item = { - id: `${rowKey}` - } + id: `${rowKey}`, + }; for (const [key, listValue] of Object.entries(mapItem)) { data.push(key); - + let tableKey = 0; let flag = false; - listValue.forEach(listItem => { - - tableKey++ + listValue.forEach((listItem) => { + tableKey++; item[`designTimes${tableKey}`] = listItem.designTimes; item[`requireTimes${tableKey}`] = listItem.requireTimes; - item[`capacityLoad${tableKey}`] = listItem.capacityLoad > 100 ? `<font color="red">${listItem.capacityLoad}%</font>` :listItem.capacityLoad+'%'; + item[`capacityLoad${tableKey}`] = + listItem.capacityLoad > 100 + ? `<font color="red">${listItem.capacityLoad}%</font>` + : listItem.capacityLoad + "%"; data.push(listItem.designTimes); data.push(listItem.requireTimes); - data.push(listItem.capacityLoad+'%'); + data.push(listItem.capacityLoad + "%"); if (listItem.capacityLoad > 100) { flag = true; } }); - item[`resourceName`] = flag ? `<div class='el-badge'><sup class="el-badge__content is-fixed is-dot"></sup>${key}</div>` : key; + item[`resourceName`] = flag + ? `<div class='el-badge'><sup class="el-badge__content is-fixed is-dot"></sup>${key}</div>` + : key; } exportData.value.push(data); dataList.push(item); }); - - const $grid = gridRef.value - if ($grid) { - tableColumn = columnList - tableData = [...tableData, ...dataList] - $grid.loadColumn(tableColumn) - $grid.loadData(tableData) - gridOptions.loading = false + + const $grid = gridRef.value; + const $grid2 = gridRef.value; + if ($grid || $grid2) { + tableColumn = columnList; + tableData = [...tableData, ...dataList]; + $grid.loadColumn(tableColumn); + $grid.loadData(tableData); + $grid2.loadColumn(tableColumn); + $grid2.loadData(tableData); + gridOptions.loading = false; } loading.value = false; @@ -172,7 +284,6 @@ /** 瀵煎嚭鎸夐挳鎿嶄綔 */ function handleExport() { - // 鍚堝苟琛ㄥご鍜屾暟鎹� const finalData = [...headers.value, ...exportData.value]; @@ -185,21 +296,30 @@ { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } } ]; */ - ws['!merges'] = merges; - + ws["!merges"] = merges; + // 鍒涘缓 workbook const wb = XLSX.utils.book_new(); // 灏� worksheet 娣诲姞鍒� workbook 涓� - XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); + XLSX.utils.book_append_sheet(wb, ws, "Sheet1"); // 瀵煎嚭鏂囦欢 XLSX.writeFile(wb, `apsPartRouteStat_${new Date().getTime()}.xlsx`); - +} +/** 鎼滅储鎸夐挳鎿嶄綔 */ +function handleQuery() { + queryParams.value.pageNum = 1; + getList(); } +/** 閲嶇疆鎸夐挳鎿嶄綔 */ +function resetQuery() { + proxy.resetForm("queryRef"); + handleQuery(); +} /** 鍒锋柊鎸夐挳鎿嶄綔 */ -function handleRefresh(){ - updateStat().then(response => { - if(response.code == '200'){ +function handleRefresh() { + updateStat().then((response) => { + if (response.code == "200") { getList(); } }); @@ -207,3 +327,20 @@ getList(); </script> +<style lang="scss" scoped> +.box_container { + width: 100%; + margin: 20px auto; + background: #fff; + border-radius: 5px; + box-shadow: 1px 1px 1px 4px#f1f1f1; + .title_text { + padding-top: 20px; + margin-left: 20px; + } + .tabel_container { + width: 98%; + margin: 20px auto; + } +} +</style> -- Gitblit v1.9.3