zhang_12370
5 天以前 c6d13e58d85fbaaceb49d4c24401b50143050173
src/views/production/components/ProductionDialog.vue
@@ -1,12 +1,12 @@
<template>
  <el-dialog
      v-model="dialogVisible"
      :title="dialogType === 'add' ? '新增生产加工' : '编辑生产加工'"
      :title="dialogType === 'add' ? '新增生产加工' : dialogType === 'viewRow' ? '查看生产加工' : '编辑生产加工'"
      width="1200px"
      :close-on-click-modal="false"
      @close="handleClose"
  >
    <el-row :gutter="10" style="margin-bottom: 10px">
    <el-row :gutter="10" style="margin-bottom: 10px" v-if="dialogType !== 'viewRow'">
      <el-col :span="3">
        <el-button type="primary" @click="handlData"
        >
@@ -40,20 +40,21 @@
    </el-row>
    <ETableModify
        :columns="columns"
        :showOperations="false"
        :showOperations="dialogType !== 'viewRow'"
        height="200"
        @cell-edit="handleCellEdit"
        :tableData="tableData"
        :showOverflowTooltip="false"
        @row-click="handleRowClick"
        :editableColumns="['usedQuantity']"
        :editableColumns="dialogType === 'viewRow' ? [] : ['usedQuantity']"
        :editableCells="dialogType !== 'viewRow'"
        @delete="handleRemoveItem"
    />
    <div class="empty-table">
      <h1>生产明细</h1>
      <el-row :gutter="10">
        <el-col :span="2">
          <el-button type="primary" @click="addNewRow">
          <el-button type="primary" @click="addNewRow" v-if="dialogType !== 'viewRow'">
            <el-icon>
              <Plus/>
            </el-icon>
@@ -72,10 +73,11 @@
      <ProductionDetailsTable
          v-model="detailsTableData"
          :border="false"
          :show-operations="true"
          :show-operations="dialogType !== 'viewRow'"
          :auto-calculate="true"
          @input-change="handleDetailsChange"
          @delete-row="handleDeleteRow"
          :dialogType="dialogType"
      />
    </div>
@@ -83,14 +85,17 @@
      <div class="dialog-footer">
        <el-button
            @click="handleClose"
            v-if="dialogType === 'add' || dialogType === 'edit'"
        >取 消
        >{{ dialogType === 'viewRow' ? '关 闭' : '取 消' }}
        </el-button
        >
        <!-- <el-button @click="handleReset" v-if="dialogType === 'edit'"
          >重 置</el-button
        > -->
        <el-button type="primary" :loading="loading" @click="handleSubmit"
        <el-button
            v-if="dialogType !== 'viewRow'"
            type="primary"
            :loading="loading"
            @click="handleSubmit"
        >确 定
        </el-button
        >
@@ -157,8 +162,10 @@
import {
  getOfficialAll,
  addOrEditPM,
  getCoalInfoList,
  deleteProductionInventory,
} from "@/api/production/index.js";
import { getSupplyList } from "@/api/procureMent/index.js"
import {validateFormData, validateNumber, deepClone, createDefaultProductionRow} from "@/utils/production";
import {useCoalData} from "./useCoalData";
import useUserStore from "@/store/modules/user";
@@ -192,9 +199,15 @@
const selectedIds = ref([]);
const currentRow = ref(null);
const copyForm = ref(null);
const coalList = ref([])
const supplierList = ref({});
// 表格列配置
const columns = [
  {label: "煤种", prop: "coal", minwidth: 120},
  {prop: "coalId", label: "煤种", minwidth: 60,slot:false,
    formatter: (row) => {
      return coalList.value.find(coal => coal.id === row.coalId)?.coal || "--";
    }
  },
  {label: "库存数量", prop: "inventoryQuantity", minwidth: 100},
  {
    label: "使用数量",
@@ -206,8 +219,16 @@
];
const formalDatabaseColumns = ref([
  {prop: "supplierName", label: "供应商名称", minwidth: 150},
  {prop: "coal", label: "煤种类型", minwidth: 60},
  {prop: "supplierId", label: "供应商名称", minwidth: 150
  ,formatter: (row) => {
      return supplierList.value.find(supplier => supplier.id === row.supplierId)?.supplierName || "--";
    }
  },
  {prop: "coalId", label: "煤种", minwidth: 60,
    formatter: (row) => {
      return coalList.value.find(coal => coal.id === row.coalId)?.coal || "--";
    }
  },
  {prop: "inventoryQuantity", label: "库存数量", minwidth: 80},
  {prop: "unit", label: "单位", minwidth: 20},
  {prop: "priceExcludingTax", label: "单价(不含税)", minwidth: 80},
@@ -229,9 +250,13 @@
// 获取配置数据
const handlData = async () => {
  innerVisible.value = true;
  let res = await getOfficialAll();
  if (res.code === 200) {
    formalDatabaseData.value = res.data;
  let OfficialAll = await getOfficialAll();
  let getSupplierList = await getSupplyList();
  let getCoalName = await getCoalInfoList();
  coalList.value = getCoalName.data || [];
  supplierList.value = getSupplierList.data || [];
  if (OfficialAll.code === 200) {
    formalDatabaseData.value = OfficialAll.data;
    const existingOfficialIds = tableData.value
        .map((item) => item.officialId)
        .filter((id) => id);
@@ -278,11 +303,11 @@
  dialogType.value = "add";
};
const editInitialization = (data) => {
const editInitialization = (type,data) => {
  copyForm.value = deepClone(data);
  tableData.value = data.productionInventoryList || [];
  detailsTableData.value = data.productionList || [];
  dialogType.value = "edit";
  dialogType.value = type;
  const existingOfficialIds = tableData.value
      .map((item) => item.officialId)
      .filter((id) => id);
@@ -376,7 +401,7 @@
  for (let i = 0; i < tableData.value.length; i++) {
    const element = tableData.value[i];
    if (element.usedQuantity == 0 || element.usedQuantity === null) {
      ElMessage.warning(`请填写使用数量: ${element.coal}`);
      ElMessage.warning(`请填写生产加工煤种的使用数量`);
      return;
    }
  }