spring
6 小时以前 325e771ebdbe407f4c098531aae0c7e20cefc1a0
Merge branch 'dev_天津军泰伟业' of http://114.132.189.42:9002/r/product-inventory-management into dev_天津军泰伟业
已修改5个文件
742 ■■■■■ 文件已修改
src/api/inventoryManagement/stockIn.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/inventoryManagement/stockOut.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/product/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/dispatchLog/index.vue 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/receiptManagement/index.vue 513 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/inventoryManagement/stockIn.js
@@ -18,6 +18,15 @@
    });
};
// 查询生产入库信息列表
export const getStockInPageByProductProduction = (params) => {
    return request({
        url: "/stockin/listPageByProductProduction",
        method: "get",
        params,
    });
};
// 出库台账-查询自定义入库信息列表
export const getStockInPageByCustom = (params) => {
    return request({
src/api/inventoryManagement/stockOut.js
@@ -9,6 +9,15 @@
    });
};
// 出库台账-生产出库查询出库列表
export const getStockOutSemiProductPage = (params) => {
    return request({
        url: "/stockmanagement/listPageBySemiProduct",
        method: "get",
        params,
    });
};
//新增出库信息
export const addStockOut = (data) => {
    return request({
src/views/basicData/product/index.vue
@@ -284,14 +284,14 @@
    speculativeTradingName: [],
  },
  modelRules: {
    model: [
      // { required: true, message: "请输入", trigger: "blur" },
      {
        pattern: /^[0-9*]*$/,
        message: "只能输入数字和*号",
        trigger: "blur"
      }
    ],
    // model: [
    //   // { required: true, message: "请输入", trigger: "blur" },
    //   {
    //     pattern: /^[0-9*]*$/,
    //     message: "只能输入数字和*号",
    //     trigger: "blur"
    //   }
    // ],
    // unit: [{ required: true, message: "请输入", trigger: "blur" }],
    // speculativeTradingName: [{ required: false, message: "请选择绑定机器", trigger: "change" }],
  },
src/views/inventoryManagement/dispatchLog/index.vue
@@ -128,8 +128,69 @@
                    />
                </div>
            </el-tab-pane>
      <el-tab-pane label="生产出库" name="semiProduct">
        <div class="search_form">
          <div>
            <span class="search_title ml10">出库日期:</span>
            <el-date-picker
                v-model="searchForm.timeStr"
                type="date"
                placeholder="请选择日期"
                value-format="YYYY-MM-DD"
                format="YYYY-MM-DD"
                clearable
                @change="handleQuery"
            />
            <span class="search_title ml10">产品大类:</span>
            <el-input
                v-model="searchForm.productCategory"
                style="width: 240px"
                placeholder="请输入"
                clearable
            />
            <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>
          </div>
          <div>
            <el-button @click="handleOut">导出</el-button>
            <el-button type="danger" plain @click="handleDelete">删除</el-button>
            <el-button type="primary" plain @click="handlePrint">打印</el-button>
          </div>
        </div>
        <div class="table_list">
          <el-table
              :data="tableData"
              border
              v-loading="tableLoading"
              @selection-change="handleSelectionChange"
              :expand-row-keys="expandedRowKeys"
              :row-key="(row) => row.id"
              show-summary
              style="width: 100%"
              :summary-method="summarizeMainTable"
              height="calc(100vh - 18.5em)"
          >
            <el-table-column align="center" type="selection" width="55" />
            <el-table-column align="center" label="序号" type="index" width="60" />
            <el-table-column label="出库日期" prop="createTime" width="220" show-overflow-tooltip />
            <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />
            <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />
            <el-table-column label="单位" prop="unit" width="100" show-overflow-tooltip />
            <el-table-column label="出库数量" prop="inboundNum" width="220" show-overflow-tooltip />
            <el-table-column label="出库人" prop="createBy" width="220" show-overflow-tooltip />
          </el-table>
          <pagination
              v-show="total > 0"
              :total="total"
              layout="total, sizes, prev, pager, next, jumper"
              :page="page.current"
              :limit="page.size"
              @pagination="paginationSemiProductChange"
          />
        </div>
      </el-tab-pane>
        </el-tabs>
        <!-- 打印预览弹窗 -->
        <el-dialog
            v-model="printPreviewVisible"
@@ -156,7 +217,7 @@
                                <div class="company-name">军泰伟业(天津)有限公司</div>
                                <div class="document-title">零售发货单</div>
                            </div>
                            <div class="info-section">
                                <div class="info-row">
                                    <div>
@@ -164,7 +225,7 @@
                                        <span class="value">{{ formatDate(item.createTime) }}</span>
                                    </div>
                                    <div>
                                        <span class="label">客户名称:</span>
                                        <span class="value">{{ item.supplierName || '张爱有' }}</span>
                                    </div>
@@ -174,7 +235,7 @@
                                    <span class="value">{{ item.code }}</span>
                                </div>
                            </div>
                            <div class="table-section">
                                <table class="product-table">
                                    <thead>
@@ -209,7 +270,7 @@
                                    </tfoot>
                                </table>
                            </div>
                            <div class="footer-section">
                                <div class="footer-row">
                                    <div class="footer-item">
@@ -241,8 +302,8 @@
                </div>
            </div>
        </el-dialog>
    </div>
</template>
@@ -254,6 +315,7 @@
import {
    getStockOutPage,
    delStockOut,
  getStockOutSemiProductPage,
} from "@/api/inventoryManagement/stockOut.js";
import {
    getStockInPageByProduct,
@@ -316,6 +378,11 @@
    page.size = obj.limit;
    getList();
};
const paginationSemiProductChange = (obj) => {
  page.current = obj.page;
  page.size = obj.limit;
  getList();
};
const getList = () => {
    tableLoading.value = true;
    const params = { ...page }
@@ -327,35 +394,45 @@
        params.timeStr = searchForm.value.timeStr
    }
    params.productCategory = searchForm.value.productCategory
    // 根据不同的 tab 类型调用不同的接口
    const apiCall = activeTab.value === 'production'
        ? getStockInPageByProduct(params)
        : getStockOutPage(params)
    apiCall
        .then((res) => {
            tableLoading.value = false;
            tableData.value = res.data.records;
            tableData.value.map((item) => {
                item.children = [];
                // 前端计算总价
                const inboundNum = Number(item.inboundNum) || 0;
                if (activeTab.value === 'production') {
                    // 成品出库:总价 = unitPrice × inboundNum
                    const unitPrice = Number(item.unitPrice) || 0;
                    item.totalPrice = (unitPrice * inboundNum).toFixed(2);
                } else {
                    // 原料出库:总价 = taxInclusiveUnitPrice × inboundNum
                    const taxInclusiveUnitPrice = Number(item.taxInclusiveUnitPrice) || 0;
                    item.taxInclusiveTotalPrice = (taxInclusiveUnitPrice * inboundNum).toFixed(2);
                }
            });
            total.value = res.data.total;
        })
        .catch(() => {
            tableLoading.value = false;
        });
    // 根据不同的 tab 类型调用不同的接口\
  if (activeTab.value === 'semiProduct') {
    const apiCall = getStockOutSemiProductPage(params)
    apiCall
        .then((res) => {
          tableLoading.value = false;
          tableData.value = res.data.records;
        })
  }else {
    const apiCall = activeTab.value === 'production'
        ? getStockInPageByProduct(params)
        : getStockOutPage(params)
    apiCall
        .then((res) => {
          tableLoading.value = false;
          tableData.value = res.data.records;
          tableData.value.map((item) => {
            item.children = [];
            // 前端计算总价
            const inboundNum = Number(item.inboundNum) || 0;
            if (activeTab.value === 'production') {
              // 成品出库:总价 = unitPrice × inboundNum
              const unitPrice = Number(item.unitPrice) || 0;
              item.totalPrice = (unitPrice * inboundNum).toFixed(2);
            } else {
              // 原料出库:总价 = taxInclusiveUnitPrice × inboundNum
              const taxInclusiveUnitPrice = Number(item.taxInclusiveUnitPrice) || 0;
              item.taxInclusiveTotalPrice = (taxInclusiveUnitPrice * inboundNum).toFixed(2);
            }
          });
          total.value = res.data.total;
        })
        .catch(() => {
          tableLoading.value = false;
        });
  }
};
const handleTabChange = () => {
@@ -445,10 +522,10 @@
const executePrint = () => {
    console.log('开始执行打印,数据条数:', printData.value.length);
    console.log('打印数据:', printData.value);
    // 创建一个新的打印窗口
    const printWindow = window.open('', '_blank', 'width=800,height=600');
    // 构建打印内容
    let printContent = `
    <!DOCTYPE html>
@@ -584,7 +661,7 @@
    </head>
    <body>
  `;
    // 为每条数据生成打印页面
    printData.value.forEach((item, index) => {
        printContent += `
@@ -677,16 +754,16 @@
      </div>
    `;
    });
    printContent += `
    </body>
    </html>
  `;
    // 写入内容到新窗口
    printWindow.document.write(printContent);
    printWindow.document.close();
    // 等待内容加载完成后打印
    printWindow.onload = () => {
        setTimeout(() => {
@@ -746,12 +823,12 @@
        padding: 15px;
        border-bottom: 1px solid #e4e7ed;
        text-align: center;
        .el-button {
            margin: 0 10px;
        }
    }
    .print-preview-content {
        padding: 20px;
        background-color: #f5f5f5;
@@ -783,13 +860,13 @@
.header {
    text-align: center;
    margin-bottom: 8px;
    .company-name {
        font-size: 18px;
        font-weight: bold;
        margin-bottom: 4px;
    }
    .document-title {
        font-size: 16px;
        font-weight: bold;
@@ -801,16 +878,16 @@
    display: flex;
    justify-content: space-between;
    align-items: center;
    .info-row {
        line-height: 20px;
        .label {
            font-weight: bold;
            width: 60px;
            font-size: 14px;
        }
        .value {
            margin-right: 20px;
            min-width: 80px;
@@ -822,12 +899,12 @@
.table-section {
    margin-bottom: 4px;
    flex: 1;
    .product-table {
        width: 100%;
        border-collapse: collapse;
        border: 1px solid #000;
        th, td {
            border: 1px solid #000;
            padding: 6px;
@@ -835,16 +912,16 @@
            font-size: 14px;
            line-height: 1.4;
        }
        th {
            font-weight: bold;
        }
        .total-label {
            text-align: right;
            font-weight: bold;
        }
        .total-value {
            font-weight: bold;
        }
@@ -857,22 +934,22 @@
        margin-bottom: 3px;
        line-height: 20px;
        justify-content: space-between;
        .footer-item {
            display: flex;
            margin-right: 20px;
            .label {
                font-weight: bold;
                width: 80px;
                font-size: 14px;
            }
            .value {
                min-width: 80px;
                font-size: 14px;
            }
            &.address-item {
                .address-value {
                    min-width: 200px;
@@ -886,7 +963,7 @@
    .app-container {
        display: none;
    }
    .print-page {
        box-shadow: none;
        margin: 0;
src/views/inventoryManagement/receiptManagement/index.vue
@@ -13,21 +13,23 @@
                            value-format="YYYY-MM-DD"
                            format="YYYY-MM-DD"
                            clearable
                            @change="handleQuery" />
                            @change="handleQuery"/>
            <span class="search_title ml10">产品大类:</span>
            <el-input v-model="searchForm.productCategory"
                      style="width: 240px"
                      placeholder="请输入"
                      clearable />
                      clearable/>
            <el-button type="primary"
                       @click="handleQuery"
                       style="margin-left: 10px">搜索</el-button>
                       style="margin-left: 10px">搜索
            </el-button>
          </div>
          <div>
            <el-button @click="handleOut">导出</el-button>
            <el-button type="danger"
                       plain
                       @click="handleDelete">删除</el-button>
                       @click="handleDelete">删除
            </el-button>
          </div>
        </div>
        <div class="table_list">
@@ -43,32 +45,32 @@
                    height="calc(100vh - 18.5em)">
            <el-table-column align="center"
                             type="selection"
                             width="55" />
                             width="55"/>
            <el-table-column align="center"
                             label="序号"
                             type="index"
                             width="60" />
                             width="60"/>
            <el-table-column label="入库时间"
                             prop="createTime"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="销售合同号"
                             prop="salesContractNo"
                             width="180"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="产品大类"
                             prop="productCategory"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="规格型号"
                             prop="specificationModel"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="单位"
                             prop="unit"
                             width="70"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="入库数量"
                             prop="inboundNum"
                             width="100"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="单价(元)"
                             prop="unitPrice"
                             width="150"></el-table-column>
@@ -92,7 +94,7 @@
                      layout="total, sizes, prev, pager, next, jumper"
                      :page="page.current"
                      :limit="page.size"
                      @pagination="paginationChange" />
                      @pagination="paginationChange"/>
        </div>
      </el-tab-pane>
      <el-tab-pane label="原料入库"
@@ -106,23 +108,26 @@
                            value-format="YYYY-MM-DD"
                            format="YYYY-MM-DD"
                            clearable
                            @change="handleQuery" />
                            @change="handleQuery"/>
            <span class="search_title ml10">产品大类:</span>
            <el-input v-model="searchForm.productCategory"
                      style="width: 240px"
                      placeholder="请输入"
                      clearable />
                      clearable/>
            <el-button type="primary"
                       @click="handleQuery"
                       style="margin-left: 10px">搜索</el-button>
                       style="margin-left: 10px">搜索
            </el-button>
          </div>
          <div>
            <el-button type="primary"
                       @click="openForm('add', 'purchase')">新增入库</el-button>
                       @click="openForm('add', 'purchase')">新增入库
            </el-button>
            <el-button @click="handleOut">导出</el-button>
            <el-button type="danger"
                       plain
                       @click="handleDelete">删除</el-button>
                       @click="handleDelete">删除
            </el-button>
          </div>
        </div>
        <div class="table_list">
@@ -138,37 +143,37 @@
                    height="calc(100vh - 18.5em)">
            <el-table-column align="center"
                             type="selection"
                             width="55" />
                             width="55"/>
            <el-table-column align="center"
                             label="序号"
                             type="index"
                             width="60" />
                             width="60"/>
            <el-table-column label="入库时间"
                             prop="createTime"
                             width="100"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="采购合同号"
                             prop="purchaseContractNumber"
                             width="180"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="供应商名称"
                             prop="supplierName"
                             width="240"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="产品大类"
                             prop="productCategory"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="规格型号"
                             prop="specificationModel"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="单位"
                             prop="unit"
                             width="70"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="入库数量"
                             prop="inboundNum"
                             width="100"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column label="含税单价(元)"
                             prop="taxInclusiveUnitPrice"
                             width="150"></el-table-column>
@@ -178,7 +183,7 @@
            <el-table-column label="入库人"
                             prop="createBy"
                             width="80"
                             show-overflow-tooltip />
                             show-overflow-tooltip/>
            <el-table-column fixed="right"
                             label="操作"
                             min-width="60"
@@ -188,7 +193,8 @@
                           :disabled="scope.row.type == 1"
                           type="primary"
                           size="small"
                           @click="openForm('edit', scope.row, 'purchase');">编辑</el-button>
                           @click="openForm('edit', scope.row, 'purchase');">编辑
                </el-button>
              </template>
            </el-table-column>
          </el-table>
@@ -197,7 +203,89 @@
                      layout="total, sizes, prev, pager, next, jumper"
                      :page="page.current"
                      :limit="page.size"
                      @pagination="paginationChange" />
                      @pagination="paginationChange"/>
        </div>
      </el-tab-pane>
      <el-tab-pane label="生产入库"
                   name="product">
        <div class="search_form">
          <div>
            <span class="search_title ml10">入库日期:</span>
            <el-date-picker v-model="searchForm.timeStr"
                            type="date"
                            placeholder="请选择日期"
                            value-format="YYYY-MM-DD"
                            format="YYYY-MM-DD"
                            clearable
                            @change="handleQuery"/>
            <span class="search_title ml10">产品大类:</span>
            <el-input v-model="searchForm.productCategory"
                      style="width: 240px"
                      placeholder="请输入"
                      clearable/>
            <el-button type="primary"
                       @click="handleQuery"
                       style="margin-left: 10px">搜索
            </el-button>
          </div>
          <div>
            <el-button type="primary"
                       @click="openForm('add', 'purchase')">新增入库
            </el-button>
            <el-button @click="handleOut">导出</el-button>
            <el-button type="danger"
                       plain
                       @click="handleDelete">删除
            </el-button>
          </div>
        </div>
        <div class="table_list">
          <el-table :data="tableData"
                    border
                    v-loading="tableLoading"
                    @selection-change="handleSelectionChange"
                    :expand-row-keys="expandedRowKeys"
                    :row-key="row => row.id"
                    show-summary
                    style="width: 100%"
                    :summary-method="summarizeMainTable"
                    height="calc(100vh - 18.5em)">
            <el-table-column align="center"
                             type="selection"
                             width="55"/>
            <el-table-column align="center"
                             label="序号"
                             type="index"
                             width="60"/>
            <el-table-column label="入库时间"
                             prop="createTime"
                             width="100"
                             show-overflow-tooltip/>
            <el-table-column label="产品大类"
                             prop="productCategory"
                             show-overflow-tooltip/>
            <el-table-column label="规格型号"
                             prop="specificationModel"
                             show-overflow-tooltip/>
            <el-table-column label="单位"
                             prop="unit"
                             width="220"
                             show-overflow-tooltip/>
            <el-table-column label="入库数量"
                             prop="inboundNum"
                             width="220"
                             show-overflow-tooltip/>
            <el-table-column label="入库人"
                             prop="createBy"
                             width="220"
                             show-overflow-tooltip/>
          </el-table>
          <pagination v-show="total > 0"
                      :total="total"
                      layout="total, sizes, prev, pager, next, jumper"
                      :page="page.current"
                      :limit="page.size"
                      @pagination="paginationChange"/>
        </div>
      </el-tab-pane>
    </el-tabs>
@@ -211,165 +299,180 @@
</template>
<script setup>
  import pagination from "@/components/PIMTable/Pagination.vue";
  import {
    ref,
    reactive,
    toRefs,
    onMounted,
    getCurrentInstance,
    nextTick,
  } from "vue";
  import { ElMessageBox } from "element-plus";
  import useUserStore from "@/store/modules/user";
  import dayjs from "dayjs";
  import {
    getStockInPage,
    getStockInPageByProduction,
    delStockIn,
  } from "@/api/inventoryManagement/stockIn.js";
  import FormDia from "./components/formDia.vue";
  import FormDiaProduct from "./components/formDiaProduct.vue";
import pagination from "@/components/PIMTable/Pagination.vue";
import {
  ref,
  reactive,
  toRefs,
  onMounted,
  getCurrentInstance,
  nextTick,
} from "vue";
import {ElMessageBox} from "element-plus";
import useUserStore from "@/store/modules/user";
import dayjs from "dayjs";
import {
  getStockInPage,
  getStockInPageByProduction,
  getStockInPageByProductProduction,
  delStockIn,
} from "@/api/inventoryManagement/stockIn.js";
import FormDia from "./components/formDia.vue";
import FormDiaProduct from "./components/formDiaProduct.vue";
  // 获取当前日期
  function getCurrentDate() {
    return dayjs().format("YYYY-MM-DD");
// 获取当前日期
function getCurrentDate() {
  return dayjs().format("YYYY-MM-DD");
}
const {proxy} = getCurrentInstance();
const tableData = ref([]);
const selectedRows = ref([]);
const tableLoading = ref(false);
const formDia = ref();
const formDiaProduct = ref();
const activeTab = ref("production"); // 当前激活的 tab
const page = reactive({
  current: 1,
  size: 100,
});
const total = ref(0);
const data = reactive({
  searchForm: {
    supplierName: "",
    customerName: "",
    productCategory: "",
    timeStr: "",
  },
});
const {searchForm} = toRefs(data);
// 查询列表
/** 搜索按钮操作 */
const handleQuery = () => {
  page.current = 1;
  getList();
};
const paginationChange = obj => {
  page.current = obj.page;
  page.size = obj.limit;
  getList();
};
const pageProductChange = obj => {
  page.current = obj.page;
  page.size = obj.limit;
  getList();
};
const getList = () => {
  tableLoading.value = true;
  const params = {...page};
  // 根据不同的 tab 类型传递不同的查询参数
  if (activeTab.value === "production") {
    params.customerName = searchForm.value.customerName;
    params.timeStr = searchForm.value.timeStr;
  } else {
    params.supplierName = searchForm.value.supplierName;
    params.timeStr = searchForm.value.timeStr;
  }
  const { proxy } = getCurrentInstance();
  const tableData = ref([]);
  const selectedRows = ref([]);
  const tableLoading = ref(false);
  const formDia = ref();
  const formDiaProduct = ref();
  const activeTab = ref("production"); // 当前激活的 tab
  const page = reactive({
    current: 1,
    size: 100,
  });
  const total = ref(0);
  const data = reactive({
    searchForm: {
      supplierName: "",
      customerName: "",
      productCategory: "",
      timeStr: "",
    },
  });
  const { searchForm } = toRefs(data);
  // 查询列表
  /** 搜索按钮操作 */
  const handleQuery = () => {
    page.current = 1;
    getList();
  };
  const paginationChange = obj => {
    page.current = obj.page;
    page.size = obj.limit;
    getList();
  };
  const getList = () => {
    tableLoading.value = true;
    const params = { ...page };
    // 根据不同的 tab 类型传递不同的查询参数
    if (activeTab.value === "production") {
      params.customerName = searchForm.value.customerName;
      params.timeStr = searchForm.value.timeStr;
    } else {
      params.supplierName = searchForm.value.supplierName;
      params.timeStr = searchForm.value.timeStr;
    }
    params.productCategory = searchForm.value.productCategory;
    // 根据不同的 tab 类型调用不同的接口
    const apiCall =
      activeTab.value === "production"
        ? getStockInPageByProduction(params)
        : getStockInPage(params);
    apiCall
      .then(res => {
        tableLoading.value = false;
        tableData.value = res.data.records;
        // 前端计算总价:总价 = unitPrice * inboundNum
        tableData.value = tableData.value.map(item => {
          // 使用入库数量计算总价
          const inboundNum = Number(item.inboundNum) || 0;
          const unitPrice = Number(item.unitPrice) || 0;
          const taxInclusiveUnitPrice = Number(item.taxInclusiveUnitPrice) || 0;
          // 根据标签页类型计算不同的总价
          if (activeTab.value === "production") {
            // 成品库存:总价 = unitPrice * 入库数量
            item.totalPrice = (unitPrice * inboundNum).toFixed(2);
          } else {
            // 原料和材料库存:含税总价 = taxInclusiveUnitPrice * 入库数量
            item.taxInclusiveTotalPrice = (
              taxInclusiveUnitPrice * inboundNum
            ).toFixed(2);
          }
          return item;
  params.productCategory = searchForm.value.productCategory;
  if (activeTab.value === "production") {
    getStockInPageByProductProduction(params)
        .then(res => {
          tableLoading.value = false;
          tableData.value = res.data.records;
        });
        total.value = res.data.total;
      })
      .catch(() => {
        tableLoading.value = false;
      });
  };
  }else {
    // 根据不同的 tab 类型调用不同的接口
    const apiCall =
        activeTab.value === "production"
            ? getStockInPageByProduction(params)
            : getStockInPage(params);
  // 切换 tab
  const handleTabChange = tabName => {
    page.current = 1;
    // 切换 tab 时清空搜索条件
    searchForm.value.supplierName = "";
    searchForm.value.customerName = "";
    searchForm.value.timeStr = "";
    searchForm.value.productCategory = "";
    getList();
  };
    apiCall
        .then(res => {
          tableLoading.value = false;
          tableData.value = res.data.records;
  // 打开弹框
  const openForm = async (type, row, tabType) => {
    const currentTab = tabType || activeTab.value;
    await nextTick(() => {
      if (currentTab === "production") {
        formDiaProduct.value?.openDialog(type, row);
      } else {
        formDia.value?.openDialog(type, row);
      }
    });
  };
          // 前端计算总价:总价 = unitPrice * inboundNum
          tableData.value = tableData.value.map(item => {
            // 使用入库数量计算总价
            const inboundNum = Number(item.inboundNum) || 0;
            const unitPrice = Number(item.unitPrice) || 0;
            const taxInclusiveUnitPrice = Number(item.taxInclusiveUnitPrice) || 0;
  // 表格选择数据
  const handleSelectionChange = selection => {
    selectedRows.value = selection.filter(item => item.id);
  };
            // 根据标签页类型计算不同的总价
            if (activeTab.value === "production") {
              // 成品库存:总价 = unitPrice * 入库数量
              item.totalPrice = (unitPrice * inboundNum).toFixed(2);
            } else {
              // 原料和材料库存:含税总价 = taxInclusiveUnitPrice * 入库数量
              item.taxInclusiveTotalPrice = (
                  taxInclusiveUnitPrice * inboundNum
              ).toFixed(2);
            }
  const expandedRowKeys = ref([]);
            return item;
          });
  // 主表合计方法
  const summarizeMainTable = param => {
    return proxy.summarizeTable(param, [
      "contractAmount",
      "taxInclusiveTotalPrice",
      "taxExclusiveTotalPrice",
    ]);
  };
          total.value = res.data.total;
        })
        .catch(() => {
          tableLoading.value = false;
        });
  }
  // 导出
  const handleOut = () => {
    ElMessageBox.confirm("是否确认导出?", "导出", {
      confirmButtonText: "确认",
      cancelButtonText: "取消",
      type: "warning",
    })
};
// 切换 tab
const handleTabChange = tabName => {
  page.current = 1;
  // 切换 tab 时清空搜索条件
  searchForm.value.supplierName = "";
  searchForm.value.customerName = "";
  searchForm.value.timeStr = "";
  searchForm.value.productCategory = "";
  getList();
};
// 打开弹框
const openForm = async (type, row, tabType) => {
  const currentTab = tabType || activeTab.value;
  await nextTick(() => {
    if (currentTab === "production") {
      formDiaProduct.value?.openDialog(type, row);
    } else {
      formDia.value?.openDialog(type, row);
    }
  });
};
// 表格选择数据
const handleSelectionChange = selection => {
  selectedRows.value = selection.filter(item => item.id);
};
const expandedRowKeys = ref([]);
// 主表合计方法
const summarizeMainTable = param => {
  return proxy.summarizeTable(param, [
    "contractAmount",
    "taxInclusiveTotalPrice",
    "taxExclusiveTotalPrice",
  ]);
};
// 导出
const handleOut = () => {
  ElMessageBox.confirm("是否确认导出?", "导出", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
      .then(() => {
        // 根据不同的 tab 类型调用不同的导出接口
        let exportUrl = "/stockin/export";
@@ -381,21 +484,21 @@
      .catch(() => {
        proxy.$modal.msg("已取消");
      });
  };
};
  // 删除
  const handleDelete = () => {
    if (selectedRows.value.length === 0) {
      proxy.$modal.msgWarning("请选择数据");
      return;
    }
    const ids = selectedRows.value.map(item => item.id);
// 删除
const handleDelete = () => {
  if (selectedRows.value.length === 0) {
    proxy.$modal.msgWarning("请选择数据");
    return;
  }
  const ids = selectedRows.value.map(item => item.id);
    ElMessageBox.confirm("选中的内容将被删除,是否确认删除?", "删除", {
      confirmButtonText: "确认",
      cancelButtonText: "取消",
      type: "warning",
    })
  ElMessageBox.confirm("选中的内容将被删除,是否确认删除?", "删除", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
      .then(() => {
        // 根据当前 tab 类型选择不同的删除接口和type参数
        let deleteApi, deleteParams;
@@ -403,30 +506,30 @@
        if (activeTab.value === "production") {
          // 成品删除,type传2
          deleteApi = delStockIn;
          deleteParams = { ids, type: 2 };
          deleteParams = {ids, type: 2};
        } else {
          // 原料删除,type传1
          deleteApi = delStockIn;
          deleteParams = { ids, type: 1 };
          deleteParams = {ids, type: 1};
        }
        deleteApi(deleteParams)
          .then(() => {
            proxy.$modal.msgSuccess("删除成功");
            getList();
          })
          .catch(() => {
            proxy.$modal.msgError("删除失败");
          });
            .then(() => {
              proxy.$modal.msgSuccess("删除成功");
              getList();
            })
            .catch(() => {
              proxy.$modal.msgError("删除失败");
            });
      })
      .catch(() => {
        proxy.$modal.msg("已取消");
      });
  };
};
  onMounted(() => {
    getList();
  });
onMounted(() => {
  getList();
});
</script>
<style scoped lang="scss"></style>