gaoluyang
5 天以前 5c08242dd6faea9518606945b45ceb6c6cf8aab5
src/views/inventoryManagement/stockManagement/index.vue
@@ -1,12 +1,12 @@
<template>
  <div class="app-container">
    <el-tabs v-model="activeTab" @tab-change="handleTabChange">
      <el-tab-pane label="生产入库" name="production">
      <el-tab-pane label="成品库存" name="production">
        <div class="search_form">
          <div>
            <span class="search_title">客户名称:</span>
            <el-input v-model="searchForm.customerName" style="width: 240px" placeholder="请输入" @change="handleQuery"
              clearable prefix-icon="Search" />
<!--            <span class="search_title">客户名称:</span>-->
<!--            <el-input v-model="searchForm.customerName" style="width: 240px" placeholder="请输入" @change="handleQuery"-->
<!--              clearable prefix-icon="Search" />-->
            <span class="search_title ml10">入库日期:</span>
            <el-date-picker
              v-model="searchForm.timeStr"
@@ -17,11 +17,18 @@
              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="danger" plain @click="handleDelete">删除</el-button>-->
          </div>
        </div>
        <div class="table_list">
@@ -32,18 +39,20 @@
            <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="customerName" width="240" show-overflow-tooltip />
            <el-table-column label="产品大类" prop="productCategory" width="100" show-overflow-tooltip />
            <el-table-column label="规格型号" prop="specificationModel" width="200" show-overflow-tooltip />
<!--            <el-table-column label="客户名称" prop="customerName" width="240" 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="80" show-overflow-tooltip />
            <el-table-column label="库存数量" prop="inboundNum" width="100" show-overflow-tooltip />
            <el-table-column label="已出库数量" prop="totalInboundNum" width="100" show-overflow-tooltip />
            <el-table-column label="待出库数量" prop="inboundNum0" width="100" show-overflow-tooltip />
            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />
            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />
            <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip />
            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
                  <el-table-column label="单价(元)" prop="unitPrice" width="150"></el-table-column>
                  <el-table-column label="总价(元)" prop="totalPrice" width="150"></el-table-column>
<!--            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />-->
            <!-- <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip /> -->
            <el-table-column fixed="right" label="操作" min-width="60" align="center">
              <template #default="scope">
                <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">编辑</el-button>
@@ -55,67 +64,68 @@
        </div>
      </el-tab-pane>
      <el-tab-pane label="采购入库" name="purchase">
        <div class="search_form">
          <div>
            <span class="search_title">供应商名称:</span>
            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"
              clearable prefix-icon="Search" />
            <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"
            />
            <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>
          </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%"
            :row-class-name="tableRowClassName"
            :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="supplierName" width="240" show-overflow-tooltip />
            <el-table-column label="产品大类" prop="productCategory" width="100" show-overflow-tooltip />
            <el-table-column label="规格型号" prop="specificationModel" width="200" show-overflow-tooltip />
            <el-table-column label="单位" prop="unit" width="80" show-overflow-tooltip />
     <el-tab-pane label="原料库存" name="purchase">
       <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>-->
         </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%"
           :row-class-name="tableRowClassName"
           :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="80" show-overflow-tooltip />
                  <el-table-column label="库存数量" prop="inboundNum" width="100" show-overflow-tooltip />
                  <el-table-column label="已出库数量" prop="totalInboundNum" width="100" show-overflow-tooltip />
                  <el-table-column label="待出库数量" prop="inboundNum0" width="100" show-overflow-tooltip />
            <el-table-column label="库存预警数量" prop="warnNum" width="130" show-overflow-tooltip />
            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />
            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />
            <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip />
            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
            <el-table-column fixed="right" label="操作" min-width="60" align="center">
              <template #default="scope">
                <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">编辑</el-button>
              </template>
            </el-table-column>
          </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-table-column label="已出库数量" prop="totalInboundNum" show-overflow-tooltip />
                  <el-table-column label="待出库数量" prop="inboundNum0" show-overflow-tooltip />
                <el-table-column label="含税单价(元)" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                <el-table-column label="含税总价(元)" prop="taxInclusiveTotalPrice" width="150"></el-table-column>
           <!-- <el-table-column label="库存预警数量" prop="warnNum" width="130" show-overflow-tooltip />
           <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip /> -->
           <el-table-column fixed="right" label="操作" min-width="60" align="center">
             <template #default="scope">
               <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">编辑</el-button>
             </template>
           </el-table-column>
         </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-tab-pane label="自定义入库" name="manual">
      <el-tab-pane label="材料库存" name="manual">
        <div class="search_form">
          <div>
            <span class="search_title">供应商名称:</span>
            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"
              clearable prefix-icon="Search" />
<!--            <span class="search_title">供应商名称:</span>-->
<!--            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"-->
<!--              clearable prefix-icon="Search" />-->
            <span class="search_title ml10">入库日期:</span>
            <el-date-picker
              v-model="searchForm.timeStr"
@@ -126,11 +136,18 @@
              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="danger" plain @click="handleDelete">删除</el-button>-->
          </div>
        </div>
        <div class="table_list">
@@ -141,7 +158,7 @@
            <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="supplierName" width="240" show-overflow-tooltip />
<!--            <el-table-column label="供应商名称" prop="supplierName" width="240" 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="80" show-overflow-tooltip />
@@ -149,11 +166,13 @@
                  <el-table-column label="库存数量" prop="inboundNum" width="100" show-overflow-tooltip />
                  <el-table-column label="已出库数量" prop="totalInboundNum" width="100" show-overflow-tooltip />
                  <el-table-column label="待出库数量" prop="inboundNum0" width="100" show-overflow-tooltip />
                  <el-table-column label="单价(元)" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                  <el-table-column label="总价(元)" prop="taxInclusiveTotalPrice" width="150"></el-table-column>
<!--            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />-->
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
            <!-- <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip /> -->
            <el-table-column fixed="right" label="操作" width="100" align="center">
              <template #default="scope">
                <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">编辑</el-button>
@@ -169,16 +188,25 @@
      @close="closeDia">
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
        <el-row :gutter="30">
          <el-col :span="12">
          <!-- <el-col :span="12">
            <el-form-item label="供应商名称:" prop="supplierName">
              <el-input disabled v-model="form.supplierName" placeholder="请输入" clearable />
            </el-form-item>
          </el-col>
          </el-col> -->
          <el-col :span="12">
            <el-form-item label="产品大类:" prop="productId">
              <el-select disabled v-model="form.productCategory" placeholder="请选择" clearable filterable>
                <el-option v-for="item in productList" :key="item.id" :label="item.productName"
                           :value="item.productName" />
              </el-select>
            </el-form-item>
          </el-col>
           <el-col :span="12">
            <el-form-item label="出库人:" prop="entryPerson">
              <el-select v-model="form.createUser"                 filterable
                         default-first-option
                         :reserve-keyword="false" placeholder="请选择" clearable>
                <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
              </el-select>
            </el-form-item>
          </el-col>
@@ -238,20 +266,22 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
        <!-- <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="出库人:" prop="entryPerson">
              <el-select v-model="form.createUser" placeholder="请选择" clearable>
              <el-select v-model="form.createUser"                 filterable
                         default-first-option
                         :reserve-keyword="false" placeholder="请选择" clearable>
                <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
              </el-select>
            </el-form-item>
          </el-col>
<!--          <el-col :span="12">-->
<!--          <el-form-item label="库存预警数量:" prop="warnNum">-->
<!--            <el-input v-model="form.warnNum" placeholder="请输入最低库存" clearable />-->
<!--          </el-form-item>-->
<!--        </el-col>-->
        </el-row>
         <el-col :span="12">
            <el-form-item label="库存预警数量:" prop="warnNum">
              <el-input v-model="form.warnNum" placeholder="请输入最低库存" clearable />
            </el-form-item>
          </el-col>
        </el-row> -->
      </el-form>
      <template #footer>
        <div class="dialog-footer">
@@ -305,13 +335,14 @@
const activeTab = ref('production')
const data = reactive({
  searchForm: {
    supplierName: '',
    // supplierName: '',
    productCategory:'',
    customerName: '',
    timeStr: getCurrentDate(),
  },
  form: {
    supplierId: null,
    supplierName: '',
    // supplierName: '',
    productId: null,
    productName: '',
    userId: userStore.userId,
@@ -332,7 +363,7 @@
    salesLedgerProductId: null,
  },
  rules: {
    supplierName: [{ required: true, message: '请输入供应商名称', trigger: 'blur' }],
    // supplierName: [{ required: true, message: '请输入供应商名称', trigger: 'blur' }],
    productCategory: [{ required: true, message: '请选择产品大类', trigger: 'change' }],
    specificationModel: [{ required: true, message: '请输入规格型号', trigger: 'blur' }],
    unit: [{ required: true, message: '请输入单位', trigger: 'blur' }],
@@ -365,10 +396,11 @@
    ...page,
    timeStr: searchForm.value.timeStr,
  }
  params.productCategory = searchForm.value.productCategory
  if (activeTab.value === 'production') {
    params.customerName = searchForm.value.customerName
  } else {
    params.supplierName = searchForm.value.supplierName
    // params.supplierName = searchForm.value.supplierName
  }
  return params
}
@@ -398,10 +430,11 @@
// 切换 tab
const handleTabChange = () => {
  page.current = 1
  searchForm.value.supplierName = ''
  // searchForm.value.supplierName = ''
  searchForm.value.customerName = ''
  searchForm.value.timeStr = ''
  selectedRows.value = []
  searchForm.value.productCategory = ''
  getList()
}
@@ -524,12 +557,6 @@
const handleDelete = () => {
  let ids = []
  if (selectedRows.value.length > 0) {
      // 检查是否有他人维护的数据
      const unauthorizedData = selectedRows.value.filter(item => item.createBy !== userStore.nickName);
      if (unauthorizedData.length > 0) {
         proxy.$modal.msgWarning("不可删除他人维护的数据");
         return;
      }
    ids = selectedRows.value.map(item => item.id);
  } else {
    proxy.$modal.msgWarning('请选择数据')