gaoluyang
6 天以前 3712799f3e0904f28e4268deaa5c5ee291323c38
src/views/inventoryManagement/issueManagement/index.vue
@@ -1,19 +1,9 @@
<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 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"
@@ -32,36 +22,25 @@
            :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" label="序号" type="index" width="60" />
            <el-table-column label="入库时间" prop="createTime" width="100" show-overflow-tooltip />
            <el-table-column label="销售合同号" prop="salesContractNo" width="180" 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="70" show-overflow-tooltip />
            <el-table-column label="入库数量" prop="inboundNum" width="90" show-overflow-tooltip />
            <el-table-column label="剩余库存" prop="inboundNum0" width="90" 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(scope.row);">领用</el-button>
                <el-button link type="primary" size="small" @click="openForm(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>
     <el-tab-pane label="采购出库" name="purchase">
     <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"
@@ -81,22 +60,16 @@
           :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" width="100" show-overflow-tooltip>
              <template #default="scope">
                <div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
              </template>
            </el-table-column>
                  <el-table-column label="入库数量/件" prop="inboundNum" width="100" show-overflow-tooltip />
                  <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
            <el-table-column label="剩余库存" prop="inboundNum0" width="90" show-overflow-tooltip />
                  <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
            <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
                <el-table-column label="采购合同号" prop="purchaseContractNumber" width="180" 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="70" show-overflow-tooltip />
           <el-table-column label="剩余库存" prop="inboundNum0" width="90" 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 fixed="right" label="操作" min-width="60" align="center">
             <template #default="scope">
               <el-button link type="primary" size="small" @click="openForm(scope.row);" :disabled="!scope.row.inboundNum0">领用</el-button>
               <el-button link type="primary" size="small" @click="openForm(scope.row);">领用</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -105,22 +78,9 @@
       </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 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"
@@ -138,29 +98,17 @@
          <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" type="selection" width="55" />
            <el-table-column align="center" label="序号" type="index" width="60" />
            <el-table-column label="产品图片" width="100" align="center">
              <template #default="scope">
                <img class="barcode-img" :src="javaApiUrl+scope.row.url"></img>
              </template>
            </el-table-column>
            <el-table-column label="入库时间" prop="inboundDate" width="100" show-overflow-tooltip />
            <el-table-column label="产品名称" prop="productCategory" show-overflow-tooltip />
            <el-table-column label="产品高度" prop="specificationModel" width="100" show-overflow-tooltip>
              <template #default="scope">
                <div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
              </template>
            </el-table-column>
                  <el-table-column label="入库数量/件" prop="inboundNum" width="100" show-overflow-tooltip />
                  <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
            <el-table-column label="剩余库存" prop="inboundNum0" width="90" show-overflow-tooltip />
                  <el-table-column label="单价(美元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
            <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
            <el-table-column label="入库人" prop="createBy" width="150" show-overflow-tooltip />
            <el-table-column label="批次号" prop="code" width="130" 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="70" show-overflow-tooltip />
            <el-table-column label="物品类型" prop="itemType" show-overflow-tooltip />
                  <el-table-column label="剩余库存" prop="inboundNum0" width="90" 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(scope.row);" :disabled="!scope.row.inboundNum0">领用</el-button>
                <el-button link type="primary" size="small" @click="openForm(scope.row);">领用</el-button>
              </template>
            </el-table-column>
          </el-table>
@@ -169,17 +117,17 @@
        </div>
      </el-tab-pane>
    </el-tabs>
    <el-dialog v-model="dialogFormVisible" :title="'新增出库'" width="40%" @close="closeDia">
    <el-dialog v-model="dialogFormVisible" :title="getDialogTitle()" width="40%" @close="closeDia">
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
            <div>可出库数量:{{currentRowNum}}</div>
        <el-form-item label="出库数量:" prop="salesContractNo">
          <el-input-number :step="1" :min="0" :max="currentRowNum" style="width: 100%" v-model="form.inboundQuantity" placeholder="请输入" clearable />
         <div>{{getAvailableQuantityText()}}:{{currentRowNum}}</div>
        <el-form-item :label="getQuantityLabel()" prop="salesContractNo">
          <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.inboundQuantity" placeholder="请输入" clearable />
        </el-form-item>
        <el-form-item label="出库日期:" prop="projectName">
        <el-form-item :label="getDateLabel()" prop="projectName">
          <el-date-picker style="width: 100%" v-model="form.inboundTime" value-format="YYYY-MM-DD" format="YYYY-MM-DD"
            type="date" placeholder="请选择" clearable />
        </el-form-item>
        <el-form-item label="出库人:" prop="entryPerson">
        <el-form-item :label="getPersonLabel()" prop="entryPerson">
          <el-select v-model="form.nickName"                 filterable
                     default-first-option
                     :reserve-keyword="false" placeholder="请选择" clearable>
@@ -213,7 +161,6 @@
    delStockManage,
    stockOut,
} from "@/api/inventoryManagement/stockManage.js";
const javaApiUrl = __BASE_API__;
const userStore = useUserStore()
const { proxy } = getCurrentInstance()
@@ -230,12 +177,12 @@
// 用户信息表单弹框数据
const dialogFormVisible = ref(false)
const activeTab = ref('purchase')
const activeTab = ref('production')
const data = reactive({
  searchForm: {
    supplierName: '',
    customerName: '',
    inboundQuantity:0,
    inboundQuantity:'',
    inboundTime:'',
    nickName: '',
    userId: '',
@@ -296,7 +243,7 @@
  page.current = 1
  searchForm.value.supplierName = ''
  searchForm.value.customerName = ''
  searchForm.value.timeStr = getCurrentDate() // 重置为当前日期
  searchForm.value.timeStr = ''
  selectedRows.value = []
  searchForm.value.productCategory = ''
  getList()
@@ -343,7 +290,7 @@
  // 初始化表单数据
  form.value = {
    productrecordId: '',
    inboundQuantity: 0, // 出库数量清空
    inboundQuantity: '', // 出库数量清空
    inboundTime: getCurrentDate(), // 默认当前日期
    nickName: '', // 默认当前用户
  }
@@ -361,13 +308,7 @@
const submitForm = () => {
  let num = Number(form.value.inboundQuantity)
  if(num <= 0 || num > currentRowNum.value){
    return proxy.$modal.msgWarning("请填写出库数量")
  }
  if(!form.value.nickName){
    return proxy.$modal.msgWarning("请选择出库人")
  }
  if(!form.value.inboundTime){
    return proxy.$modal.msgWarning("请选择出库时间")
    return proxy.$modal.msgWarning("请填入有效数字")
  }
  proxy.$refs["formRef"].validate(valid => {
    if (valid && currentRowId.value) {
@@ -409,13 +350,13 @@
  }
  ).then(() => {
    // 根据不同的 tab 类型调用不同的导出接口
    let exportUrl = "/stockmanagement/export"
    let exportUrl = "/stockin/export"
    if (activeTab.value === 'production') {
      exportUrl = "/stockmanagement/exportOne"
      exportUrl = "/stockin/exportOne"
    } else if (activeTab.value === 'manual') {
      exportUrl = "/stockmanagement/exportTwo"
      exportUrl = "/stockin/exportTwo"
    }
    proxy.download(exportUrl, {}, '出库台账.xlsx')
    proxy.download(exportUrl, {}, '入库台账.xlsx')
  }).catch(() => {
    proxy.$modal.msg("已取消")
  })
@@ -453,16 +394,62 @@
  const day = String(today.getDate()).padStart(2, '0');
  return `${year}-${month}-${day}`;
}
// 根据tab类型获取弹框标题
const getDialogTitle = () => {
  const titleMap = {
    production: '新增发货',
    purchase: '新增领用',
    manual: '新增领用'
  };
  return titleMap[activeTab.value] || '新增出库';
};
// 根据tab类型获取可出库数量文本
const getAvailableQuantityText = () => {
  const textMap = {
    production: '可发货数量',
    purchase: '可领用数量',
    manual: '可领用数量'
  };
  return textMap[activeTab.value] || '可出库数量';
};
// 根据tab类型获取数量字段标签
const getQuantityLabel = () => {
  const labelMap = {
    production: '发货数量:',
    purchase: '领用数量:',
    manual: '领用数量:'
  };
  return labelMap[activeTab.value] || '出库数量:';
};
// 根据tab类型获取日期字段标签
const getDateLabel = () => {
  const labelMap = {
    production: '发货日期:',
    purchase: '领用日期:',
    manual: '领用日期:'
  };
  return labelMap[activeTab.value] || '出库日期:';
};
// 根据tab类型获取人员字段标签
const getPersonLabel = () => {
  const labelMap = {
    production: '发货人:',
    purchase: '领用人:',
    manual: '领用人:'
  };
  return labelMap[activeTab.value] || '出库人:';
};
onMounted(() => {
  getList()
})
</script>
<style scoped lang="scss">
  .barcode-img{
    width: 80px;
    height: 80px;
    border-radius: 5px;
    background-color: #F5F5F5;
  }
</style>
<style scoped lang="scss"></style>