增加一个新的库存状态:已出库

This commit is contained in:
梁州 2025-11-13 16:14:17 +08:00
parent 902964a2cf
commit c4b8f5eeb4

View File

@ -15,15 +15,15 @@
</template> </template>
</el-autocomplete> </el-autocomplete>
<el-input v-model="vehicleIdQuery" style="width: 196px; margin-right: 10px;" placeholder="箱号" <el-input v-model="vehicleIdQuery" style="width: 196px; margin-right: 10px;" placeholder="箱号"
:suffix-icon="Search" /> :suffix-icon="Search"/>
<el-input v-model="locationIdQuery" style="width: 196px; margin-right: 10px;" placeholder="库位" <el-input v-model="locationIdQuery" style="width: 196px; margin-right: 10px;" placeholder="库位"
:suffix-icon="Search" /> :suffix-icon="Search"/>
<el-select-v2 v-model="goodsTypeQuery" style="width: 158px; margin-right: 10px;" placeholder="物料类型" <el-select-v2 v-model="goodsTypeQuery" style="width: 158px; margin-right: 10px;" placeholder="物料类型"
:options="goodsTypeOptions" @change="search()"></el-select-v2> :options="goodsTypeOptions" @change="search()"></el-select-v2>
<el-select-v2 v-model="stockStatusQuery" style="width: 158px; margin-right: 10px;" placeholder="库存状态" <el-select-v2 v-model="stockStatusQuery" style="width: 158px; margin-right: 10px;" placeholder="库存状态"
:options="stockStatusSearchOptions" @change="search()"></el-select-v2> :options="stockStatusSearchOptions" @change="search()"></el-select-v2>
<el-date-picker v-model="createTimeQuery" type="date" placeholder="选择上架日期" :shortcuts="shortcuts" <el-date-picker v-model="createTimeQuery" type="date" placeholder="选择上架日期" :shortcuts="shortcuts"
style="width: 158px; margin-right: 10px;" clearable /> style="width: 158px; margin-right: 10px;" clearable/>
<el-button type="primary" @click="search()">搜索</el-button> <el-button type="primary" @click="search()">搜索</el-button>
<el-button type="warning" @click="reset()">重置</el-button> <el-button type="warning" @click="reset()">重置</el-button>
</el-row> </el-row>
@ -31,7 +31,7 @@
<el-button type="success" @click="exportExcel()">导出</el-button> <el-button type="success" @click="exportExcel()">导出</el-button>
</el-row> </el-row>
</div> </div>
<br /> <br/>
<el-table id="stock-table" :data="displayStocks" stripe border v-loading="loading" class="table-class" <el-table id="stock-table" :data="displayStocks" stripe border v-loading="loading" class="table-class"
max-height="650px" highlight-current-row @row-click="getCurrentRow" :row-style="rowStyle" max-height="650px" highlight-current-row @row-click="getCurrentRow" :row-style="rowStyle"
:header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }" :header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
@ -41,62 +41,62 @@
<el-radio :label="scope.row.stockId" v-model="stockId">&nbsp;</el-radio> <el-radio :label="scope.row.stockId" v-model="stockId">&nbsp;</el-radio>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="stockId" label="库存编号" fixed="left" min-width="120px" show-overflow-tooltip /> <el-table-column prop="stockId" label="库存编号" fixed="left" min-width="120px" show-overflow-tooltip/>
<el-table-column prop="vehicleId" label="箱号" fixed="left" min-width="120px" sortable="custom" <el-table-column prop="vehicleId" label="箱号" fixed="left" min-width="120px" sortable="custom"
show-overflow-tooltip /> show-overflow-tooltip/>
<el-table-column prop="goodsId" label="物料号" fixed="left" min-width="120px" show-overflow-tooltip /> <el-table-column prop="goodsId" label="物料号" fixed="left" min-width="120px" show-overflow-tooltip/>
<el-table-column prop="goodsName" label="物料名称" min-width="120px" show-overflow-tooltip /> <el-table-column prop="goodsName" label="物料名称" min-width="120px" show-overflow-tooltip/>
<el-table-column prop="goodsType" label="物料类型" :formatter="goodsTypeFormat" <el-table-column prop="goodsType" label="物料类型" :formatter="goodsTypeFormat"
min-width="120px" show-overflow-tooltip /> min-width="120px" show-overflow-tooltip/>
<el-table-column prop="locationId" label="库位" :formatter="locationFormat" min-width="120px" <el-table-column prop="locationId" label="库位" :formatter="locationFormat" min-width="120px"
sortable="custom" show-overflow-tooltip /> sortable="custom" show-overflow-tooltip/>
<el-table-column prop="totalNum" label="入库数量" min-width="120px" /> <el-table-column prop="totalNum" label="入库数量" min-width="120px"/>
<el-table-column prop="remainNum" label="剩余数量" min-width="120px" /> <el-table-column prop="remainNum" label="剩余数量" min-width="120px"/>
<el-table-column prop="goodsStatus" label="物料状态" :formatter="goodsStatusFormat" min-width="120px" /> <el-table-column prop="goodsStatus" label="物料状态" :formatter="goodsStatusFormat" min-width="120px"/>
<el-table-column prop="stockStatus" label="库存状态" :formatter="stockStatusFormat" fixed="right" <el-table-column prop="stockStatus" label="库存状态" :formatter="stockStatusFormat" fixed="right"
min-width="120px" /> min-width="120px"/>
<el-table-column prop="isInventory" label="是否盘点" :formatter="yesOrNoFormat" min-width="120px" /> <el-table-column prop="isInventory" label="是否盘点" :formatter="yesOrNoFormat" min-width="120px"/>
<el-table-column prop="inventoryTaskId" label="盘点任务号" min-width="120px" /> <el-table-column prop="inventoryTaskId" label="盘点任务号" min-width="120px"/>
<el-table-column prop="noUseDays" label="未使用天数" min-width="120px" /> <el-table-column prop="noUseDays" label="未使用天数" min-width="120px"/>
<el-table-column prop="createTime" label="上架时间" sortable="custom" :formatter="timeFormat" <el-table-column prop="createTime" label="上架时间" sortable="custom" :formatter="timeFormat"
min-width="120px" show-overflow-tooltip /> min-width="120px" show-overflow-tooltip/>
<el-table-column prop="lastUpdateTime" label="最近更新时间" sortable="custom" :formatter="timeFormat" <el-table-column prop="lastUpdateTime" label="最近更新时间" sortable="custom" :formatter="timeFormat"
min-width="140px" show-overflow-tooltip /> min-width="140px" show-overflow-tooltip/>
<el-table-column prop="lastUpdateUser" label="最近更新用户" min-width="120px" /> <el-table-column prop="lastUpdateUser" label="最近更新用户" min-width="120px"/>
<el-table-column fixed="right" label="操作" width="120px" v-if="selStock == null"> <el-table-column fixed="right" label="操作" width="120px" v-if="selStock == null">
<template v-slot="scope"> <template v-slot="scope">
<el-button plain type="primary" @click="editCurrentRowStock(scope.row)">编辑</el-button> <el-button plain type="primary" @click="editCurrentRowStock(scope.row)">编辑</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<br /> <br/>
<el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :page-sizes="[10, 25, 50]" <el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :page-sizes="[10, 25, 50]"
:small="false" :disabled="false" :background="false" :default-page-size="10" @size-change="search" :small="false" :disabled="false" :background="false" :default-page-size="10" @size-change="search"
@current-change="search" layout="total, sizes, prev, pager, next, jumper" :total="total" /> @current-change="search" layout="total, sizes, prev, pager, next, jumper" :total="total"/>
<el-dialog v-model="dialogVisible" title="库存信息" width="40%" draggable :show-close="false"> <el-dialog v-model="dialogVisible" title="库存信息" width="40%" draggable :show-close="false">
<el-form ref="stockFormRef" :model="stockFormEntity" :label-position="labelPosition" label-width="100px" <el-form ref="stockFormRef" :model="stockFormEntity" :label-position="labelPosition" label-width="100px"
style="max-width: 100%" :rules="rules" status-icon> style="max-width: 100%" :rules="rules" status-icon>
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="12" :offset="0"> <el-col :span="12" :offset="0">
<el-form-item label="库存编号" prop="stockId"> <el-form-item label="库存编号" prop="stockId">
<el-input v-model="stockFormEntity.stockId" disabled /> <el-input v-model="stockFormEntity.stockId" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="箱号" prop="vehicleId"> <el-form-item label="箱号" prop="vehicleId">
<el-input v-model="stockFormEntity.vehicleId" disabled /> <el-input v-model="stockFormEntity.vehicleId" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="12" :offset="0"> <el-col :span="12" :offset="0">
<el-form-item label="料号" prop="goodsId"> <el-form-item label="料号" prop="goodsId">
<el-input v-model="stockFormEntity.goodsId" disabled /> <el-input v-model="stockFormEntity.goodsId" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="料名" prop="goodsName"> <el-form-item label="料名" prop="goodsName">
<el-input v-model="stockFormEntity.goodsName" disabled /> <el-input v-model="stockFormEntity.goodsName" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -104,26 +104,26 @@
<el-col :span="12" :offset="0"> <el-col :span="12" :offset="0">
<el-form-item label="入库数量" prop="totalNum"> <el-form-item label="入库数量" prop="totalNum">
<el-input-number v-model.number="stockFormEntity.totalNum" controls-position="right" <el-input-number v-model.number="stockFormEntity.totalNum" controls-position="right"
:min="0" disabled /> :min="0" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="剩余数量为0时删除库存" prop="remainNum"> <el-form-item label="剩余数量为0时删除库存" prop="remainNum">
<el-input-number v-model.number="stockFormEntity.remainNum" controls-position="right" <el-input-number v-model.number="stockFormEntity.remainNum" controls-position="right"
:min="0" :max="stockFormEntity.totalNum" clearable /> :min="0" :max="stockFormEntity.totalNum" clearable/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="12" :offset="0"> <el-col :span="12" :offset="0">
<el-form-item label="库位" prop="locationId"> <el-form-item label="库位" prop="locationId">
<el-input v-model="stockFormEntity.locationId" clearable /> <el-input v-model="stockFormEntity.locationId" clearable/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="未使用天数" prop="noUseDays"> <el-form-item label="未使用天数" prop="noUseDays">
<el-input-number v-model.number="stockFormEntity.noUseDays" controls-position="right" <el-input-number v-model.number="stockFormEntity.noUseDays" controls-position="right"
:min="0" disabled /> :min="0" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -144,31 +144,31 @@
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="12" :offset="0"> <el-col :span="12" :offset="0">
<el-form-item label="盘点任务号" prop="inventoryTaskId"> <el-form-item label="盘点任务号" prop="inventoryTaskId">
<el-input v-model="stockFormEntity.inventoryTaskId" disabled /> <el-input v-model="stockFormEntity.inventoryTaskId" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="是否盘点" prop="isInventory"> <el-form-item label="是否盘点" prop="isInventory">
<el-input v-model="stockFormEntity.isInventory" disabled /> <el-input v-model="stockFormEntity.isInventory" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="12" :offset="0"> <el-col :span="12" :offset="0">
<el-form-item label="创建时间" prop="createTime"> <el-form-item label="创建时间" prop="createTime">
<el-input v-model="stockFormEntity.createTime" disabled /> <el-input v-model="stockFormEntity.createTime" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="最近更新时间" prop="lastUpdateTime"> <el-form-item label="最近更新时间" prop="lastUpdateTime">
<el-input v-model="stockFormEntity.lastUpdateTime" disabled /> <el-input v-model="stockFormEntity.lastUpdateTime" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="12" :offset="0"> <el-col :span="12" :offset="0">
<el-form-item label="最近更新用户" prop="lastUpdateUser"> <el-form-item label="最近更新用户" prop="lastUpdateUser">
<el-input v-model="stockFormEntity.lastUpdateUser" disabled /> <el-input v-model="stockFormEntity.lastUpdateUser" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -194,16 +194,16 @@
<script setup> <script setup>
import store from '@/store' import store from '@/store'
import { getAllStocks, updateStockInfo } from '@/api/stock.js' import {getAllStocks, updateStockInfo} from '@/api/stock.js'
import { getGoodsInfoByGoodsId } from '@/api/goods.js' import {getGoodsInfoByGoodsId} from '@/api/goods.js'
import { downloadStockExcel } from '@/api/excel.js' import {downloadStockExcel} from '@/api/excel.js'
import { dateFormatter, locationFormatter, timeFormatter, yesOrNoFormatter } from '@/utils/formatter.js' import {dateFormatter, locationFormatter, timeFormatter, yesOrNoFormatter} from '@/utils/formatter.js'
import { toUnderScoreCase } from '@/utils/stringUtils.js' import {toUnderScoreCase} from '@/utils/stringUtils.js'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs' import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import { Search } from '@element-plus/icons-vue' import {Search} from '@element-plus/icons-vue'
import { ref, reactive } from 'vue' import {ref, reactive} from 'vue'
import { errorBox } from '@/utils/myMessageBox.js' import {errorBox} from '@/utils/myMessageBox.js'
import { ElMessage } from 'element-plus' import {ElMessage} from 'element-plus'
// import FileSaver from 'file-saver'; // import FileSaver from 'file-saver';
// import * as XLSX from 'xlsx'; // import * as XLSX from 'xlsx';
</script> </script>
@ -328,6 +328,10 @@ export default {
value: 5, value: 5,
label: '回库中' label: '回库中'
}, },
{
value: 6,
label: '已出库'
},
{ {
value: 9, value: 9,
label: '库存锁定' label: '库存锁定'
@ -431,6 +435,8 @@ export default {
return '拣选中' return '拣选中'
case 5: case 5:
return '回库中' return '回库中'
case 6:
return '已出库'
case 9: case 9:
return '库存锁定' return '库存锁定'
default: default:
@ -440,12 +446,12 @@ export default {
yesOrNoFormat: (row, column, cellValue, index) => { yesOrNoFormat: (row, column, cellValue, index) => {
return yesOrNoFormatter(cellValue) return yesOrNoFormatter(cellValue)
}, },
rowStyle: ({ row, rowIndex }) => { rowStyle: ({row, rowIndex}) => {
if (row.goodsStatus == 3) { if (row.goodsStatus == 3) {
return { "color": "red" } return {"color": "red"}
} }
if (row.goodsStatus == 5) { if (row.goodsStatus == 5) {
return { "color": "yellow" } return {"color": "yellow"}
} }
}, },
handleSortChange(data) { handleSortChange(data) {