廖井涛
2025-07-23 25ae4025978ef7498db9790b237fa5a26698b1ec
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgressCombination.vue
@@ -1,13 +1,15 @@
<script setup>
import {reactive, ref} from "vue";
import {onMounted, reactive, ref} from "vue";
import {useRouter} from 'vue-router'
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
import {ElCheckbox, ElDatePicker, ElMessage} from "element-plus";
import {useI18n} from 'vue-i18n'
//import {changeFilterEvent, filterChanged} from "@/hook"
import { filterChanged} from "@/hook"
import footSum from "@/hook/footSum"
import {addListener} from "@/hook/mouseMove";
import {VxeUI} from "vxe-pc-ui";
//语言获取
const {t} = useI18n()
let router = useRouter()
@@ -74,7 +76,10 @@
let pageNum = ref(1)
let pageState = null
onMounted(() => {
  //启用表格拖动选中
  addListener(xGrid.value, gridOptions)
})
//第一次加载
let selectProcesses = value.value
@@ -113,7 +118,7 @@
    // total.dataTotal = res.data.total.total*1
    // total.pageTotal= res.data.total.pageTotal
    // pageTotal.value = res.data.total
    // total.value = res.data.total
     total.value = res.data.total
    // produceList = produceList.value.concat(deepClone(res.data.data))
    titleSelectJson.value.processType = res.data.process
    titleSelectJson.value.processType.splice(0,1)
@@ -179,13 +184,12 @@
      // total.dataTotal = res.data.total.total * 1
      // total.pageTotal = res.data.total.pageTotal
      // pageTotal.value = res.data.total
      // total.value = res.data.total
       total.value = res.data.total
      xGrid.value.loadData(res.data.data)
      gridOptions.loading = false
    } else {
      ElMessage.warning(res.msg)
    }
    //handleUpdateData(produceList)
  })
}
@@ -203,25 +207,7 @@
  $panel.changeOption(event, !!option.data, option)
}
function filterChanged(column){
  gridOptions.loading = true
  //筛选条件发生变化条件发生变化
  let value = column.datas[0] != undefined ? column.datas[0] : ''
  value = value.trim()
  //判断是否存在外键
  if (column.property.indexOf('.') > -1) {
    const columnArr = column.property.split('.')
    filterData.value[columnArr[0]] = {
      [columnArr[1]]: value
    }
  } else {
    filterData.value[column.property] = value
  }
  getWorkOrder()
}
/*后端返回结果多层嵌套展示*/
const hasDecimal = (value) => {
@@ -265,16 +251,20 @@
    {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
    {
      field: 'thisProcess', width: 120, title: t('report.workingProcedure'),
      visible: true
      visible: true, filters: [{data: ''}],slots: {filter: 'num1_filter'},
      filterMethod: filterChanged,
    },
    {
      field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged,
      visible: true
    },
    {field: 'stockNum', width: 120, title: t('productStock.inventoryQuantity'),visible: true},
    {field: 'stockArea', width: 120, title: t('report.inventoryArea'),visible: true},
    {field: 'glassName', width: 120, title:  t('report.workProcessName'),visible: true},
    {field: 'glassName', width: 420, title:  t('report.workProcessName'),visible: true, filters: [{data: ''}]
      ,slots: {filter: 'num1_filter'},
      filterMethod: filterChanged,},
  ],//表头按钮
  toolbarConfig: {
@@ -301,7 +291,7 @@
        const List = ["quantity",'stockNum','stockArea',]
        if (List.includes(column.field)) {
          //return footSum(data, column.field)
          return total.value?.[column.field] ?? 0
          return footSum(data, column.field)
        }
        return ''
      })
@@ -309,6 +299,10 @@
  },
})
function onlandingSequenceChange(checked) {
  projectSummary.value = checked ? 0 : 1
}
function exportExcel(url, fileName,date) {
  let processes = value.value
@@ -362,39 +356,18 @@
  })
}
const handleUpdateData = (data) =>{
  // const usedColumns = new Set();
  // data.forEach(row => {
  //   Object.keys(row).forEach(key => {
  //     usedColumns.add(key);
  //   });
  // });
  // // 更新 columns 数组的 visible 属性来控制列的显示
  // gridOptions.columns.forEach(column => {
  //
  //   column.visible = usedColumns.has(column.field);
  // });
  //const columns = gridOptions.columns;
  // const ageColumn = columns.find(col => col.property === 'age');
  // if (ageColumn) {
  //   ageColumn.visible = !ageColumn.visible;
  //   VXETable.updateColumns(tableRef.value, columns);
  // }
}
function onlandingSequenceChange(checked) {
  projectSummary.value = checked ? 0 : 1
const handleCellDblClick = ({ row, column, cell, $event }) => {
  VxeUI.clipboard.copy(row[column.property])
}
</script>
<template>
  <div  style="width: 100%;height: 100%">
    <div class="head">
      <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px"></el-input>
      <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px;display: none"></el-input>
      &nbsp;&nbsp;
      <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 130px"></el-input>
      &nbsp;
      <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 130px;display: none"></el-input>
      {{$t('report.workingProcedure')}}:
        <el-select v-model="value" clearable :placeholder="$t('reportingWorks.selectProcess')" default-value="default_city" style="width: 120px">
          <el-option
              v-for="item in titleSelectJson['processType']"
@@ -420,8 +393,7 @@
          height="100%"
          v-bind="gridOptions"
          :optimize="true"
          @filter-change="filterChanged"
          @cell-dblclick="handleCellDblClick"
      >
        <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
        <!--      下拉显示所有信息插槽-->
@@ -444,29 +416,30 @@
        <template #num1_filter="{ column, $panel }">
          <div>
            <div v-for="(option, index) in column.filters" :key="index">
              <input v-model="option.data" type="text"
              <input type="text"
                     v-model="option.data"
                     @keyup.enter.native="$panel.confirmFilter()"
                     @input="changeFilterEvent($event, option, $panel)"/>
            </div>
          </div>
        </template>
        <template #pager>
          <!--使用 pager 插槽-->
          <!--        'PrevJump','NextJump', -->
          <vxe-pager
              v-model:current-page="pageNum"
              v-model:page-size="total.pageSize"
              v-model:pager-count="total.pageTotal"
              :layouts="[  'PrevPage', 'Jump','PageCount', 'NextPage',  'Total']"
              :total="total.dataTotal"
              @page-change="handlePageChange"
          >
          </vxe-pager>
        </template>
<!--        <template #pager>-->
<!--          &lt;!&ndash;使用 pager 插槽&ndash;&gt;-->
<!--          &lt;!&ndash;        'PrevJump','NextJump', &ndash;&gt;-->
<!--          <vxe-pager-->
<!--              v-model:current-page="pageNum"-->
<!--              v-model:page-size="total.pageSize"-->
<!--              v-model:pager-count="total.pageTotal"-->
<!--              :layouts="[  'PrevPage', 'Jump','PageCount', 'NextPage',  'Total']"-->
<!--              :total="total.dataTotal"-->
<!--              @page-change="handlePageChange"-->
<!--          >-->
<!--          </vxe-pager>-->
<!--        </template>-->
        <template #toolbar_buttons>
          <vxe-button style="margin-right: 0.5rem"
                      @click="exportExcel('/report/exportWorkInProgress',
                                          t('report.workInProgressReport'),
                      @click="exportExcel('/report/exportWorkInProgressCombination',
                                          t('report.WorkInProgressCombination'),
                                          form.date1)">
            {{t('basicData.export')}}</vxe-button>
        </template>
@@ -486,4 +459,11 @@
  width: 100%;
  height: calc(100% - 35px);
}
.vxe-grid {
  /* 禁用浏览器默认选中 */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
</style>