CD配唱片
2025-04-25 48a1f3a23b12b8c78cfaa77de9528c96ff57769f
提交气柜管路负载统计页面全部
已添加1个文件
已修改1个文件
511 ■■■■ 文件已修改
src/views/mainPlan/gasPlanning2/index.vue 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/gasProduceStatics/index.vue 302 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/gasPlanning2/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,209 @@
<template>
  <div class="app-container">
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="Download"
          @click="handleExport"
          v-hasPermi="['apsPartRouteStat:export']"
        >导出</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          plain
          icon="Refresh"
          @click="handleRefresh"
          v-hasPermi="['apsPartRouteStat:edit']"
        >更新</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>
</template>
<script setup name="apsPartRouteStat">
import { query,updateStat } from "@/api/mainPlan/partRouteStat.js";
import { ref } from "vue";
import * as XLSX from 'xlsx';
const { proxy } = getCurrentInstance();
const loading = ref(true);
const gridRef = ref();
const height = ref(document.documentElement.clientHeight - 130 + "px;")
const headers = ref([]);
const exportData = ref([]);
const gridOptions = reactive({
  border: true,
  stripe: true,
  loading: false,
  showOverflow: true,
  showHeaderOverflow: true,
  showFooterOverflow: true,
  height: height,
  columnConfig: {
    resizable: true
  },
  scrollX: {
    enabled: true,
    gt: 0,
    threshold: 50
  },
  scrollY: {
    enabled: true,
    gt: 0,
    threshold: 50
  }
});
let tableColumn = []
let tableData = []
let merges = [];
/** æŸ¥è¯¢é›¶ä»¶ç»Ÿè®¡è¡¨åˆ—表 */
function getList() {
  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'){
      if (!response.planTitle) {
        loading.value = false;
        return;
      }
      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 => {
        headersOne.push(item);
        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'},
          ],
          width: 160
        })
      });
      headers.value.push(headersOne);
      headers.value.push(headersTwo);
      const columnList = [...tableColumn, ...colList]
      const dataList = []
      let startCol = 1;
      //获取map
      response.planTable.forEach(mapItem => {
        rowKey++
        let lastCol = startCol + 2;
        merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c:  lastCol} });
        startCol = lastCol + 1;
        let data = [];
        const item = {
          id: `${rowKey}`
        }
        for (const [key, listValue] of Object.entries(mapItem)) {
          data.push(key);
          let tableKey = 0;
          let flag = false;
          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+'%';
            data.push(listItem.designTimes);
            data.push(listItem.requireTimes);
            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;
        }
        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
      }
      loading.value = false;
    }
  });
}
/** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
function handleExport() {
  // åˆå¹¶è¡¨å¤´å’Œæ•°æ®
  const finalData = [...headers.value, ...exportData.value];
  // å°†æ•°æ®è½¬æ¢ä¸º worksheet
  const ws = XLSX.utils.aoa_to_sheet(finalData);
  // åˆå¹¶å•元格(如果需要)
  /* ws['!merges'] = [
    { s: { r: 0, c: 1 }, e: { r: 0, c: 3 } },
    { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }
  ]; */
  ws['!merges'] = merges;
  // åˆ›å»º workbook
  const wb = XLSX.utils.book_new();
  // å°† worksheet æ·»åŠ åˆ° workbook ä¸­
  XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
  // å¯¼å‡ºæ–‡ä»¶
  XLSX.writeFile(wb, `apsPartRouteStat_${new Date().getTime()}.xlsx`);
}
/** åˆ·æ–°æŒ‰é’®æ“ä½œ */
function handleRefresh(){
  updateStat().then(response => {
    if(response.code == '200'){
      getList();
    }
  });
}
getList();
</script>
src/views/mainPlan/gasProduceStatics/index.vue
@@ -36,7 +36,7 @@
          </div>
          <div v-else>
            <el-date-picker
              v-model="value2"
              v-model="queryParams.monthDays"
              type="month"
              placeholder="选择月份"
            />
@@ -104,22 +104,23 @@
} from "@/api/mainPlan/gasProduceStatics.js";
import { ref } from "vue";
import * as XLSX from "xlsx";
import { ElMessage } from "element-plus";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const gridRef = ref();
const gridRef2 = ref();
const height = ref(document.documentElement.clientHeight - 130 + "px;");
const height = ref(document.documentElement.clientHeight - 400 + "px;");
const headers = ref([]);
const exportData = ref([]);
const showSearch = ref(true);
const data = reactive({
  queryParams: {
    monthRange: "",
    monthDays: "",
    searchType: "按月统计",
  },
});
let searchTypeValue = ref("month");
const options = [
  {
    value: "month",
@@ -136,7 +137,7 @@
  stripe: true,
  loading: false,
  showOverflow: true,
  showHeaderOverflow: true,
  eaderOverflow: true,
  showFooterOverflow: true,
  height: height,
  columnConfig: {
@@ -158,21 +159,32 @@
let tableData = [];
let merges = [];
function handleChangeSelectType(e) {
  console.log(e, "sjcsuhcushc");
  searchTypeValue.value = e
  console.log(e,searchTypeValue.value, "sjcsuhcushc");
  if (e === "day") {
    dayCom.value = true;
  } else {
    dayCom.value = false;
  }
}
/** æŸ¥è¯¢é›¶ä»¶ç»Ÿè®¡è¡¨åˆ—表 */
function getList() {
  let type = ""
  options.map(item=>{
    if(queryParams.value.searchType === item.label){
      type = item.value
function dateStr(dateTimeString) {
  const dateTime = new Date(dateTimeString);
  // æå–年份和月份
  const year = dateTime.getFullYear();
  const month = String(dateTime.getMonth() + 1).padStart(2, "0"); // æœˆä»½ä»Ž0开始,所以需要加1,并用padStart补零
  // æ ¼å¼åŒ–年份和月份为 "yyyy-mm" æ ¼å¼çš„字符串
  return`${year}-${month}`;
    }
  })
/** æŸ¥è¯¢é›¶ä»¶ç»Ÿè®¡è¡¨åˆ—表 */
function getPipeList() {
  let sYearMonth = "";
  let eYearMonth = "";
  // let type = "";
  // options.map((item) => {
  //   if (queryParams.value.searchType === item.label) {
  //     type = item.value;
  //   }
  // });
  // åˆ›å»ºä¸€ä¸ªDate对象
  let sDate = new Date(queryParams.value.monthRange[0]);
  let eDate = new Date(queryParams.value.monthRange[1]);
@@ -182,8 +194,8 @@
  let eYear = eDate.getFullYear();
  let eMonth = eDate.getMonth() + 1; // æœˆä»½æ˜¯ä»Ž0开始的,所以要加1
  // æ ¼å¼åŒ–为"YYYY-MM"的形式
  let sYearMonth = `${sYear}-${sMonth.toString().padStart(2, "0")}`;
  let eYearMonth = `${eYear}-${eMonth.toString().padStart(2, "0")}`;
  sYearMonth = `${sYear}-${sMonth.toString().padStart(2, "0")}`;
  eYearMonth = `${eYear}-${eMonth.toString().padStart(2, "0")}`;
  console.log(sYearMonth, eYearMonth, "yearMonth");
  let rowKey = 0;
@@ -194,132 +206,262 @@
  tableData = [];
  loading.value = true;
  listGasProduceStatics({
    searchStartDate: sYearMonth,
    searchEndDate: eYearMonth,
    searchType: type,
    searchStartDate:
      queryParams.value.searchType === "按月统计"
        ? sYearMonth
        : dateStr(queryParams.value.monthDays),
    searchEndDate:
      queryParams.value.searchType === "按月统计"
        ? eYearMonth
        : dateStr(queryParams.value.monthDays),
    searchType: searchTypeValue.value,
    major:'piping'
  }).then((response) => {
    console.log(response.data.planTable,'responseresponseresponse')
    const colList = [];
    let headersOne = [];
    let headersTwo = [];
    if (response.code == "200") {
      if (!response.planTitle) {
    if(response.code == '200'){
      if (!response.data.planTitle) {
        loading.value = false;
        return;
      }
      headersOne.push("日期");
      headersTwo.push("资源组");
      headersOne.push('日期');
      headersTwo.push('工序名称');
      colList.push({
        field: "dateCol",
        title: "日期",
        fixed: "left",
          field: 'dateCol',
          title: '日期',
          fixed: 'left',
        children: [
          {
            field: `resourceName`,
            title: "资源组",
            width: 250,
            type: "html",
          },
            { field: `resourceName`, title: '工序名称', width: 250, type: 'html'},
        ],
        width: 160,
      });
      response.planTitle.forEach((item) => {
          width: 160
        })
      response.data.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.data.planTable.map(mapItem => {
        rowKey++
        let lastCol = startCol + 2;
        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;
      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;
      const $grid = gridRef.value
      if ($grid) {
        tableColumn = columnList
        tableData = [...tableData, ...dataList]
        $grid.loadColumn(tableColumn)
        $grid.loadData(tableData)
        gridOptions.loading = false
      }
      loading.value = false;
    }
  });
}
function getGasList() {
  let sYearMonth = "";
  let eYearMonth = "";
  // let type = "";
  // options.map((item) => {
  //   if (queryParams.value.searchType === item.label) {
  //     type = item.value;
  //   }
  // });
  // åˆ›å»ºä¸€ä¸ªDate对象
  let sDate = new Date(queryParams.value.monthRange[0]);
  let eDate = new Date(queryParams.value.monthRange[1]);
  // èŽ·å–å¹´ä»½å’Œæœˆä»½
  let sYear = sDate.getFullYear();
  let sMonth = sDate.getMonth() + 1; // æœˆä»½æ˜¯ä»Ž0开始的,所以要加1
  let eYear = eDate.getFullYear();
  let eMonth = eDate.getMonth() + 1; // æœˆä»½æ˜¯ä»Ž0开始的,所以要加1
  // æ ¼å¼åŒ–为"YYYY-MM"的形式
  sYearMonth = `${sYear}-${sMonth.toString().padStart(2, "0")}`;
  eYearMonth = `${eYear}-${eMonth.toString().padStart(2, "0")}`;
  console.log(sYearMonth, eYearMonth, "yearMonth");
  let rowKey = 0;
  let colKey = 0;
  headers.value = [];
  exportData.value = [];
  tableColumn = [];
  tableData = [];
  loading.value = true;
  listGasProduceStatics({
    searchStartDate:
      queryParams.value.searchType === "按月统计"
        ? sYearMonth
        : dateStr(queryParams.value.monthDays),
    searchEndDate:
      queryParams.value.searchType === "按月统计"
        ? eYearMonth
        : dateStr(queryParams.value.monthDays),
    searchType: searchTypeValue.value,
    major:'gas'
  }).then((response) => {
    console.log(response.data.planTable,'responseresponseresponse')
    const colList = [];
    let headersOne = [];
    let headersTwo = [];
    if(response.code == '200'){
      if (!response.data.planTitle) {
        loading.value = false;
        return;
      }
      headersOne.push('日期');
      headersTwo.push('工序名称');
      colList.push({
          field: 'dateCol',
          title: '日期',
          fixed: 'left',
          children: [
            { field: `resourceName`, title: '工序名称', width: 250, type: 'html'},
          ],
          width: 160
        })
      response.data.planTitle.forEach(item => {
        headersOne.push(item);
        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'},
          ],
          width: 160
        })
      });
      headers.value.push(headersOne);
      headers.value.push(headersTwo);
      const columnList = [...tableColumn, ...colList]
      const dataList = []
      let startCol = 1;
      //获取map
      response.data.planTable.map(mapItem => {
        rowKey++
        let lastCol = startCol + 2;
        merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c:  lastCol} });
        startCol = lastCol + 1;
        let data = [];
        const item = {
          id: `${rowKey}`
        }
        for (const [key, listValue] of Object.entries(mapItem)) {
          data.push(key);
          let tableKey = 0;
          let flag = false;
          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+'%';
            data.push(listItem.designTimes);
            data.push(listItem.requireTimes);
            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;
        }
        exportData.value.push(data);
        dataList.push(item);
      });
      const $grid = gridRef2.value
      if ($grid) {
        tableColumn = columnList
        tableData = [...tableData, ...dataList]
        $grid.loadColumn(tableColumn)
        $grid.loadData(tableData)
        gridOptions.loading = false
      }
      loading.value = false;
    }
  });
}
/** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
function handleExport() {
  proxy.download(
    "/aps/apsGasPipingRouteStat/exportExcel", {},
    "/aps/apsGasPipingRouteStat/exportExcel",
    {},
    `aps_gas_produce_statics_${new Date().getTime()}.xlsx`
  );
}
/** æœç´¢æŒ‰é’®æ“ä½œ */
function handleQuery() {
  if (!queryParams.value.monthRange) {
  if (
    (!queryParams.value.monthRange && dayCom.value == false) ||
    (!queryParams.value.monthDays && dayCom.value == true)
  ) {
    ElMessage({
      message: "请选择年月",
      type: "error",
@@ -327,7 +469,8 @@
    return;
  }
  // queryParams.value.pageNum = 1;
  getList();
  getPipeList();
  getGasList();
}
/** é‡ç½®æŒ‰é’®æ“ä½œ */
@@ -339,7 +482,8 @@
function handleRefresh() {
  updateStat().then((response) => {
    if (response.code == "200") {
      getList();
        getPipeList();
        getGasList();
    }
  });
}