dy
2025-04-14 b8cc0dbcae5d9d4a62d8462f914429d5b7b03d6a
焊缝统计页面
已修改4个文件
161 ■■■■ 文件已修改
src/api/mainPlan/weldSeam/weldSeam.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/HxlhTable/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/weldSeam/index.vue 151 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/partPlan/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/mainPlan/weldSeam/weldSeam.js
@@ -29,7 +29,7 @@
// 修改焊缝
export function updateWeldSeam(data) {
  return request({
    url: '/weldSeam/weldSeam',
    url: '/aps/weldSeamStatistics',
    method: 'put',
    data: data
  })
src/components/HxlhTable/index.vue
@@ -32,8 +32,8 @@
            @checkbox-change="checkChange"
            @checkbox-all="checkChangeall"
            >
            <template v-slot:buttons>
                <slot name="buttons"/>
            <template v-slot:buttons="row">
                <slot name="buttons" v-bind="row"/>
            </template>
        </vxe-grid>
    </div>
src/views/mainPlan/weldSeam/index.vue
@@ -33,6 +33,7 @@
    >
      <template #buttons="{row}">
        <vxe-button mode="text" @click="viewEvent(row)">编辑</vxe-button>
        <!-- <vxe-button mode="text" @row-click="viewEvent(row.year)">编辑</vxe-button> -->
      </template>
    </HxlhTable>
@@ -110,53 +111,43 @@
    <el-dialog :title="title" v-model="open" width="700px" append-to-body>
      <el-form ref="weldSeamRef" :model="form" :rules="rules" label-width="150px">
        <el-form-item label="年份" prop="year">
          <el-input v-model="form.year" placeholder="年份" :disabled="isDisabled"/>
          <el-input v-model="form.year" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="月份" prop="month">
          <el-input v-model="form.month" placeholder="月份" :disabled="isDisabled"/>
          <el-input v-model="form.month" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="生产基地" prop="productionBase">
          <el-input v-model="form.productionBase" placeholder="生产基地" :disabled="isDisabled"/>
          <el-input v-model="form.productionBase" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="管路订单需求" prop="pipingOrderRequirement">
          <el-input v-model="form.pipingOrderRequirement" placeholder="管路订单需求" :disabled="isDisabled"/>
          <el-input v-model="form.pipingOrderRequirement" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="气柜订单需求" prop="gasOrderRequirement">
          <el-input v-model="form.gasOrderRequirement" placeholder="气柜订单需求" :disabled="isDisabled"/>
          <el-input v-model="form.gasOrderRequirement" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="管路预测需求" prop="pipingPredictionRequirement">
          <el-input v-model="form.pipingPredictionRequirement" placeholder="管路预测需求" :disabled="isDisabled"/>
          <el-input v-model="form.pipingPredictionRequirement" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="气柜预测需求" prop="gasPredictionRequirement">
          <el-input v-model="form.gasPredictionRequirement" placeholder="气柜预测需求" :disabled="isDisabled"/>
          <el-input v-model="form.gasPredictionRequirement" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="预留紧急订单产出" prop="reserveEmergencyOrderOutput">
          <el-input v-model="form.reserveEmergencyOrderOutput" placeholder="请输预留紧急订单产出" :disabled="isDisabled"/>
          <el-input-number :min="0" v-model="form.reserveEmergencyOrderOutput" placeholder="请输预留紧急订单产出"/>
        </el-form-item>
        <el-form-item label="合计" prop="total">
          <el-input v-model="form.total" placeholder="请输入合计" :disabled="isDisabled"/>
          <el-input v-model="form.total" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="天数" prop="produceMonth">
          <el-input v-model="form.produceMonth" placeholder="请输入天数" :disabled="isDisabled"/>
        <el-form-item label="天数" prop="days">
          <el-input-number :min="0" v-model="form.days" placeholder="请输入天数"/>
        </el-form-item>
        <el-form-item label="需求日焊缝" prop="requirementDayWeldSeam">
          <el-date-picker clearable
            v-model="form.requirementDayWeldSeam"
            type="date"
            value-format="YYYY-MM-DD"
            placeholder="请选择需求日焊缝日期" :disabled="isDisabled">
          </el-date-picker>
          <el-input v-model="form.requirementDayWeldSeam" :disabled="isDisabled"/>
        </el-form-item>
        <el-form-item label="生产日焊缝" prop="productionDayWeldSeam">
          <el-date-picker clearable
            v-model="form.productionDayWeldSeam"
            type="date"
            value-format="YYYY-MM-DD"
            placeholder="请选择生产日焊缝日期">
          </el-date-picker>
          <el-input-number :min="0" v-model="form.productionDayWeldSeam" placeholder="请输生产日焊缝"/>
        </el-form-item>
        <el-form-item label="是否满足" prop="isSatisfy">
          <el-input v-model="form.isSatisfy" placeholder="请输入是否满足" :disabled="isDisabled"/>
          <el-input v-model="form.isSatisfy" :disabled="isDisabled"/>
        </el-form-item>
      </el-form>
      <template #footer>
@@ -174,6 +165,7 @@
import { getToken } from "@/utils/auth";
import HxlhTable from '@/components/HxlhTable'
import { ref } from "vue";
import * as XLSX from 'xlsx';
const { proxy } = getCurrentInstance();
@@ -197,6 +189,8 @@
const batchNumber = ref(null);
const dataList = ref([]);
const isDisabled = ref(true);
const headers = ref([]);
const exportData = ref([]);
/** 导入参数 */
const upload = reactive({
@@ -426,6 +420,27 @@
    batchNumber: null
  },
  rules: {
    reserveEmergencyOrderOutput: [
      {
        required: true,
        message: '请输入预留紧急订单产出',
        trigger: 'blur',
      },
    ],
    days: [
      {
        required: true,
        message: '请输入天数',
        trigger: 'blur',
      },
    ],
    productionDayWeldSeam: [
      {
        required: true,
        message: '请输入预留紧急订单产出',
        trigger: 'blur',
      },
    ],
  }
});
@@ -437,6 +452,25 @@
  query(queryParams.value).then(response => {
    console.log(response);
    dataList.value = response.rows;
    // exportData.value = response.rows;
    dataList.value.forEach(item=>{
      let data = [];
      data.push(item.year);
      data.push(item.month);
      data.push(item.productionBase);
      data.push(item.pipingOrderRequirement);
      data.push(item.gasOrderRequirement);
      data.push(item.pipingPredictionRequirement);
      data.push(item.gasPredictionRequirement);
      data.push(item.reserveEmergencyOrderOutput);
      data.push(item.total);
      data.push(item.days);
      data.push(item.requirementDayWeldSeam);
      data.push(item.productionDayWeldSeam);
      data.push(item.isSatisfy);
      exportData.value.push(data);
    })
    console.log(exportData.value);
    loading.value = false;
  });
}
@@ -553,9 +587,53 @@
/** 导出按钮操作 */
function handleExport() {
  proxy.download('weldSeam/weldSeam/export', {
    ...queryParams.value
  }, `weldSeam_${new Date().getTime()}.xlsx`)
  const headersOne = ["年份","月份","生产基地","订单需求","","预测需求","","预留紧急订单产出","合计","天数","需求日焊缝","生产日焊缝","是否满足"]
  const headersTwo = ["","","","管路","气柜","管路","气柜","","","","","",""]
  headers.value.push(headersOne);
  headers.value.push(headersTwo);
  // 合并表头和数据
  const finalData = [...headers.value, ...exportData.value];
  // 将数据转换为 worksheet
  const ws = XLSX.utils.aoa_to_sheet(finalData);
  // 合并单元格(如果需要)
  ws['!merges'] = [
    { s: { r: 0, c: 0 }, e: { r: 1, c: 0 } },
    { s: { r: 0, c: 1 }, e: { r: 1, c: 1 } },
    { s: { r: 0, c: 2 }, e: { r: 1, c: 2 } },
    { s: { r: 0, c: 3 }, e: { r: 0, c: 4 } },
    { s: { r: 0, c: 5 }, e: { r: 0, c: 6 } },
    { s: { r: 0, c: 7 }, e: { r: 1, c: 7 } },
    { s: { r: 0, c: 8 }, e: { r: 1, c: 8 } },
    { s: { r: 0, c: 9 }, e: { r: 1, c: 9 } },
    { s: { r: 0, c: 10 }, e: { r: 1, c: 10 } },
    { s: { r: 0, c: 11 }, e: { r: 1, c: 11 } },
    { s: { r: 0, c: 12 }, e: { r: 1, c: 12 } },
  ];
  // ws['!merges'] = merges;
  // 设置居中样式
  const centerStyle = { alignment: { horizontal: 'center', vertical: 'center' } };
    const range = XLSX.utils.decode_range(ws['!ref']);
    for (let R = range.s.r; R <= range.e.r; ++R) {
        for (let C = range.s.c; C <= range.e.c; ++C) {
            const cellAddress = XLSX.utils.encode_cell({ r: R, c: C });
            const cell = ws[cellAddress];
            if (cell) {
                cell.s = centerStyle;
            }
        }
    }
  // 创建 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`);
}
/** dialog取消 */
@@ -623,14 +701,21 @@
}
/** 编辑 */
// const viewEvent = (row, column, event) => {
//   console.log('点击的行数据');
//   console.log('点击的行数据:', row);
// };
function viewEvent(row){
  console.log(row);
  /* const _id = row.id
  getWeldSeam(_id).then(response => {
    form.value = response.data;
    open.value = true;
    title.value = "修改焊缝";
  }); */
  open.value = true;
  title.value = "修改焊缝";
  form.value = row;
  // const _id = row.id
  // getWeldSeam(_id).then(response => {
  //   form.value = response.data;
  //   open.value = true;
  //   title.value = "修改焊缝";
  // });
}
getList();
src/views/partPlan/index.vue
@@ -115,7 +115,7 @@
    >
    </HxlhTable>
    <!-- 用户导入对话框 -->
    <!-- 导入对话框 -->
    <el-dialog :title="upload.title" v-model="upload.open" width="90%" append-to-body @close="dialogCancel">
      <el-row :gutter="10">
        <el-col>
@@ -252,7 +252,7 @@
const exampleHeight = ref("500px");
const uploadRef = ref();
/*** 用户导入参数 */
/** 导入参数 */
const upload = reactive({
  // 是否显示弹出层(用户导入)
  open: false,