CD配唱片
2025-04-25 169cca41bc6ecd139f09ae87f19784f1dc119fca
提交气柜管路产能规划页面查询与保存页面和接口联调
已添加2个文件
已修改3个文件
615 ■■■■ 文件已修改
src/api/mainPlan/gasPlanning.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/HxlhTable/index.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/gasPlanning/index.vue 574 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/gasProduceStatics/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/platePlanList/index.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/mainPlan/gasPlanning.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
import request from '@/utils/request'
// æ°”体管路产能规划列表
export function listGasPlan(query) {
  return request({
    url: '/aps/gasPipelineCapacityPlan/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢é’£é‡‘计划管理详细
export function getGasPlanSave(data) {
  return request({
    url: '/aps/gasPipelineCapacityPlan',
    method: 'post',
    data: data
  })
}
src/components/HxlhTable/index.vue
@@ -32,6 +32,7 @@
      :tree-config="treeConfig"
      :row-style="rowStyle"
      :virtualYConfig="virtualYConfig"
      :edit-config="editConfig"
      @sort-change="sortChange"
      @page-change="pagerChange"
      @form-submit="findList"
@@ -181,6 +182,12 @@
    default: () => {
      return {};
    },
  },
  editConfig:{
    type: Object,
    default: () => {
      return {};
    },
  }
});
src/views/mainPlan/gasPlanning/index.vue
@@ -1,89 +1,497 @@
<template>
    <HxlhTable
      style="width: 100%"
      :columns="columns"
      :data="gasPlanList"
      :loading="loading"
      :height="height"
  <div class="app-container">
    <el-form
      class="responsive-form"
      :model="queryParams"
      ref="queryRef"
      :inline="true"
      label-width="68px"
    >
    </HxlhTable>
      <el-row type="flex" justify="left">
        <el-col :span="6">
          <el-form-item label="选择月份" prop="description">
            <el-date-picker
              clearable
              v-model="queryParams.date"
              type="month"
              value-format="YYYY-MM"
              placeholder="选择月份"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="18" style="text-align: right">
          <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-col>
      </el-row>
    </el-form>
    <div class="box_container">
      <div class="title_text">管路规划产能</div>
      <div class="tabel_container">
        <!-- <HxlhTable
          style="width: 100%"
          :columns="columns"
          :data="routePlanList"
          :loading="loading"
          :height="height"
          :editConfig="editConfig"
        >
          <template #edit_role="{ row }">
            <vxe-select
              v-model="row.dayProduceType"
              :options="dayProduceTypeOptions"
              filterable
            ></vxe-select>
          </template>
        </HxlhTable> -->
        <vxe-table
          border
          ref="xTable"
          show-overflow
          :loading="loading"
          :height="height"
          :edit-config="{ mode: 'row', trigger: 'click', showStatus: true }"
          :data="gasPlanList"
          @cell-click="cellClickEvent"
        >
          <vxe-column field="processName" title="标准工序名称" min-width="150">
          </vxe-column>
          <!--             :edit-render="sexEditRender" -->
          <vxe-column
            field="dayProduceType"
            title="日产出类型"
            min-width="160"
            :edit-render="{ }"
          >
            <template #edit="{ row }">
              <vxe-select v-model="row.dayProduceType" :options="dayProduceTypeOptions"></vxe-select>
            </template>
            <template #default="{ row }">
              <span>{{ formatTypeLabel([row.dayProduceType]) }}</span>
            </template>
          </vxe-column>
          <vxe-column
            field="dayProduceNum"
            title="日产出数量"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number
                v-model="row.dayProduceNum"
                size="mini"
              />
            </template>
          </vxe-column>
          <vxe-column
            field="dayProduceUnit"
            title="日产出单位"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input v-model="row.dayProduceUnit" />
            </template>
          </vxe-column>
          <vxe-column
            field="personnelNumber"
            title="人员数量"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number
                v-model="row.personnelNumber"
              />
            </template>
          </vxe-column>
          <vxe-column
            field="dayProduceAllNum"
            title="日产出总数量"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number
                v-model="row.dayProduceAllNum"
                disabled
              />
            </template>
          </vxe-column>
          <vxe-column
            field="days"
            title="天数"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number v-model="row.days" />
            </template>
          </vxe-column>
          <vxe-column
            field="monthProduceAllNum"
            title="月产出数量"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number v-model="row.monthProduceAllNum" disabled/>
            </template>
          </vxe-column>
          <vxe-column
            field="remark"
            title="备注"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input type="textarea" v-model="row.remark" />
            </template>
          </vxe-column>
        </vxe-table>
      </div>
    </div>
    <div class="box_container">
      <div class="title_text">气体规划产能</div>
      <div class="tabel_container">
        <!-- <HxlhTable
          style="width: 100%"
          :columns="columns"
          :data="gasPlanList"
          :loading="loading"
          :height="height"
        >
        </HxlhTable> -->
         <vxe-table
          border
          ref="xTable"
          show-overflow
          :loading="loading"
          :height="height"
          :edit-config="{ mode: 'row', trigger: 'click', showStatus: true }"
          :data="gasPlanList"
          @cell-click="cellClickEvent"
        >
          <vxe-column field="processName" title="标准工序名称" min-width="150">
          </vxe-column>
          <!--             :edit-render="sexEditRender" -->
          <vxe-column
            field="dayProduceType"
            title="日产出类型"
            min-width="160"
            :edit-render="{ }"
          >
            <template #edit="{ row }">
              <vxe-select v-model="row.dayProduceType" :options="dayProduceTypeOptions"></vxe-select>
            </template>
            <template #default="{ row }">
              <span>{{ formatTypeLabel([row.dayProduceType]) }}</span>
            </template>
          </vxe-column>
          <vxe-column
            field="dayProduceNum"
            title="日产出数量"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number
                v-model="row.dayProduceNum"
                size="mini"
              />
            </template>
          </vxe-column>
          <vxe-column
            field="dayProduceUnit"
            title="日产出单位"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input v-model="row.dayProduceUnit" />
            </template>
          </vxe-column>
          <vxe-column
            field="personnelNumber"
            title="人员数量"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number
                v-model="row.personnelNumber"
              />
            </template>
          </vxe-column>
          <vxe-column
            field="dayProduceAllNum"
            title="日产出总数量"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number
                v-model="row.dayProduceAllNum"
              />
            </template>
          </vxe-column>
          <vxe-column
            field="days"
            title="天数"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number v-model="row.days"  />
            </template>
          </vxe-column>
          <vxe-column
            field="monthProduceAllNum"
            title="月产出数量"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input-number v-model="row.monthProduceAllNum" />
            </template>
          </vxe-column>
          <vxe-column
            field="remark"
            title="备注"
            min-width="200"
            :edit-render="{ autoFocus: 'input' }"
          >
            <template #edit="{ row }">
              <el-input type="textarea" v-model="row.remark" />
            </template>
          </vxe-column>
        </vxe-table>
        <div class="btn_center">
          <el-button type="primary" @click="handleSave">保存</el-button>
        </div>
      </div>
    </div>
  </div>
  <!--  -->
</template>
<script setup>
const height = ref(document.documentElement.clientHeight - 270 + "px;");
const loading = ref(true);
import HxlhTable from "@/components/HxlhTable";
import { ElInputNumber } from "element-plus";
import { listGasPlan, getGasPlanSave } from "@/api/mainPlan/gasPlanning";
const height = ref(document.documentElement.clientHeight - 400 + "px;");
const loading = ref(false);
const data = reactive({
  queryParams: {
    date: "",
  },
});
const { queryParams } = toRefs(data);
const gasPlanList = ref([]);
// è¡¨æ ¼é…ç½®
const columns = ref([
  {
    title: "主件料号",
    field: "mainPartNumber",
    width: 150,
  },
  {
    title: "业务类型",
    field: "businessType",
  },
  {
    title: "单据号",
    field: "documentNumber",
    width: 100,
  },
  {
    title: "当前工序号",
    field: "currentProcessNumberTxt",
    width: 100,
  },
  {
    title: "需求分类",
    field: "requirementType",
    width: 80,
  },
  {
    title: "单据状态",
    field: "documentStatus",
    width: 80,
  },
  {
    title: "当前工序",
    field: "workCenter",
    width: 80,
  },
  {
    title: "计划开工日",
    field: "processPlanStartDaytxt",
    width: 140,
    type: "html",
  },
  {
    title: "料号",
    field: "itemNumber",
    width: 140,
    type: "html",
  },
  {
    title: "图号",
    field: "drawingNo",
    width: 120,
    // format: 'YYYY-MM-DD'
  },
  {
    title: "版本号",
    field: "versionNumber",
    width: 140,
    type: "html",
  },
  {
    title: "生产数量",
    field: "productionQuantity",
    width: 140,
    type: "html",
  },
  {
    title: "计划完工日",
    field: "planEndDay",
    width: 140,
    format: "YYYY-MM-DD hh:mm:ss",
  },
const routePlanList = ref([]);
const dayProduceTypeOptions = ref([
  { label: "单人日产出", value: "1" },
  { label: "固定日产出", value: "2" },
]);
</script>
const formatTypeLabel = (list) => {
  if (list) {
    return list.map(type => {
      const item = dayProduceTypeOptions.value.find(item => item.value === type)
      return item ? item.label : type
    }).join(',')
  }
  return ''
}
// è¡¨æ ¼é…ç½®
// const columns = ref([
//   // {
//   //   title: "规划年份",
//   //   field: "year",
//   //   width: 150,
//   // },
//   // {
//   //   title: "规划月份",
//   //   field: "month",
//   // },
//   // {
//   //   title: "专业",
//   //   field: "major",
//   //   width: 100,
//   // },
//   {
//     title: "标准工序名称",
//     field: "processName",
//     width: 100,
//   },
//   {
//     title: "日产出类型",
//     field: "dayProduceType",
//     width: 140,
//     editRender: {},
//     slots: { edit: "edit_role", default: "default_role" },
//   },
//   {
//     title: "日产出数量",
//     field: "dayProduceNum",
//     width: 140,
//     // editRender: { autoFocus: "input" },
//     // slots: { edit: "edit_name", default: "default_name" },
//   },
//   {
//     title: "日产出数量单位",
//     field: "dayProduceUnit",
//     width: 140,
//   },
//   {
//     title: "人员数量",
//     field: "personnelNumber",
//     width: 140,
//     type: "html",
//   },
//   {
//     title: "日产出总数量",
//     field: "dayProduceAllNum",
//     width: 140,
//     type: "html",
//   },
//   {
//     title: "天数",
//     field: "days",
//     width: 120,
//     // format: 'YYYY-MM-DD'
//   },
//   {
//     title: "月产出总数量",
//     field: "monthProduceAllNum",
//     width: 140,
//     type: "html",
//   },
//   {
//     title: "备注",
//     field: "remark",
//     width: 140,
//     type: "html",
//   },
// ]);
async function getRouteList(year, month) {
  const res = await listGasPlan({
    major: "管路",
    year,
    month,
  });
  console.log(res.rows, "getList");
  routePlanList.value = res.rows;
  routePlanList.value = routePlanList.value.map((item, index) => {
    return {
      ...item,
      dayProduceType: item.dayProduceType == null ? "" : item.dayProduceType,
      dayProduceNum: item.dayProduceNum == null ? "0" : item.dayProduceNum,
      dayProduceUnit: item.dayProduceUnit == null ? "个" : item.dayProduceUnit,
      personnelNumber:
        item.personnelNumber == null ? "1" : item.personnelNumber,
      dayProduceAllNum:
        item.dayProduceAllNum == null ? "0" : item.dayProduceNum*item.personnelNumber,
      days: item.days == null ? "22" : item.days,
      monthProduceAllNum:
        item.monthProduceAllNum == null ? "0" : item.dayProduceAllNum*item.days,
    };
  });
  loading.value = false;
}
async function getGasList(year, month) {
  const res = await listGasPlan({
    major: "气体",
    year,
    month,
  });
  console.log(res.rows, "getList");
  gasPlanList.value = res.rows;
  gasPlanList.value = gasPlanList.value.map((item, index) => {
    return {
      ...item,
      dayProduceType: item.dayProduceType == null ? "" : item.dayProduceType,
      dayProduceNum: item.dayProduceNum == null ? "0" : item.dayProduceNum,
      dayProduceUnit: item.dayProduceUnit == null ? "个" : item.dayProduceUnit,
      personnelNumber:
        item.personnelNumber == null ? "1" : item.personnelNumber,
      dayProduceAllNum:
        item.dayProduceAllNum == null ? "0" : item.dayProduceNum*item.personnelNumber,
      days: item.days == null ? "22" : item.days,
      monthProduceAllNum:
        item.monthProduceAllNum == null ? "0" : item.dayProduceAllNum*item.days,
    };
  });
  loading.value = false;
}
function cellClickEvent ({ row, column }){
  console.log(column,row)
  row.dayProduceAllNum = row.dayProduceNum*row.personnelNumber
  row.monthProduceAllNum = row.dayProduceAllNum*row.days
}
function handleQuery() {
  console.log(queryParams.value.date, "scsciciisc");
  const year = queryParams.value.date.split("-")[0];
  const month = parseInt(queryParams.value.date.split("-")[1]);
  getRouteList(year, month);
  getGasList(year, month);
}
async function handleSave() {
  const year = queryParams.value.date.split("-")[0];
  const month = parseInt(queryParams.value.date.split("-")[1]);
  gasPlanList.value = gasPlanList.value.map((item)=>{
    return {
      ...item,
      major: "气体",
      year,
      month
    }
  })
  routePlanList.value = routePlanList.value.map((item)=>{
    return {
      ...item,
      major: "管路",
      year,
      month
    }
  })
 const res = await getGasPlanSave([
  ...gasPlanList.value,
  ...routePlanList.value
 ])
 proxy.$modal.msgSuccess("保存成功");
 console.log(res,"akiwjciwj")
}
onMounted(() => {
  // getRouteList();
  // getGasList();
});
</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;
  }
}
.btn_center{
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top:20px;
  padding-bottom:20px;
}
</style>
src/views/mainPlan/gasProduceStatics/index.vue
src/views/mainPlan/platePlanList/index.vue
@@ -171,11 +171,11 @@
    field: "documentNumber",
    width: 200,
  },
  {
    title: "当前工序号",
    field: "currentProcessNumberTxt",
    width: 150,
  },
  // {
  //   title: "当前工序号",
  //   field: "currentProcessNumberTxt",
  //   width: 150,
  // },
  {
    title: "需求分类",
    field: "requirementType",
@@ -187,6 +187,11 @@
    width: 100,
  },
  {
    title: "审核时间",
    field: "documentStatus",
    width: 100,
  },
  {
    title: "当前工序",
    field: "workCenter",
    width: 200,