完成简单入出库功能

This commit is contained in:
AlanScipio
2024-03-06 16:26:21 +08:00
parent 24f1f4c3e7
commit 1c38d91567
26 changed files with 948 additions and 182 deletions

View File

@@ -1,5 +1,5 @@
# 页面标题
VITE_APP_TITLE=RYAS管理系统
VITE_APP_TITLE=RYAS
# 环境指定
VITE_APP_ENV='development'

View File

@@ -7,7 +7,7 @@
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="/favicon.ico">
<title>RYAS管理系统</title>
<title>RYAS</title>
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<style>
html,

View File

@@ -17,3 +17,23 @@ export function getBaseStock(data) {
data: data
})
}
// 入库
export function instock(data) {
data.stockType = 1;
return request({
url: '/wms/BaseStock/instock',
method: 'post',
data: data
})
}
// 出库
export function outstock(data) {
data.stockType = 2;
return request({
url: '/wms/BaseStock/outstock',
method: 'post',
data: data
})
}

View File

@@ -2,12 +2,6 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="仓库" prop="whsCd">
<!-- <el-input-->
<!-- v-model="queryParams.whsCd"-->
<!-- placeholder="请输入仓库代码"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- />-->
<data-select v-model="queryParams.whsCd" :fetch-data="fetchWarehouseData" />
</el-form-item>
<el-form-item label="货架号" prop="stgBinCd">
@@ -52,25 +46,25 @@
v-hasPermi="['wms:BaseStock:export']"
>导出</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="Plus"-->
<!-- @click="handleInstock"-->
<!-- v-hasPermi="['wms:BaseStock:instock']"-->
<!-- >入库</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="Edit"-->
<!-- :disabled="single"-->
<!-- @click="handleOutstock"-->
<!-- v-hasPermi="['wms:BaseStock:outstock']"-->
<!-- >出库</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleInstock"
v-hasPermi="['wms:BaseStock:instock']"
>入库</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleOutstock"
v-hasPermi="['wms:BaseStock:outstock']"
>出库</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@@ -92,8 +86,8 @@
<el-table-column label="包装单位" align="center" prop="pkgUnitName" />
</el-table-column>
<el-table-column label="序列号" align="center" prop="serialNo" />
<el-table-column label="托盘ID" align="center" prop="palletId" />
<el-table-column label="父托盘ID" align="center" prop="parentPalletId" />
<!-- <el-table-column label="托盘ID" align="center" prop="palletId" />-->
<!-- <el-table-column label="父托盘ID" align="center" prop="parentPalletId" />-->
</el-table>
<pagination
@@ -105,8 +99,99 @@
/>
<!-- 入出库对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="BaseStockRef" :model="form" :rules="rules" label-width="80px">
<el-dialog :title="title" v-model="open" width="650px" append-to-body>
<el-form ref="BaseStockRef" :model="form" :rules="rules" label-width="90px">
<el-row>
<el-col :span="12">
<el-form-item label="仓库代码" prop="whsCd">
<data-select v-model="form.whsCd" :fetch-data="fetchWarehouseData" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="货架号" prop="stgBinCd">
<el-input v-model="form.stgBinCd" placeholder="请输入货架号"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="物品代码" prop="itemCd">
<el-input v-model="form.itemCd" placeholder="请输入物品代码" @blur="handleItemInfoBlur"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物品名称" prop="itemName">
<el-input v-model="form.itemName" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="批号" prop="lotNo">
<el-input v-model="form.lotNo" placeholder="请输入批号"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="子批号" prop="itemName">
<el-input v-model="form.subLotNo" placeholder="请输入子批号"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="数量" prop="stdUnitQty">
<el-input-number v-model="form.stdUnitQty" placeholder="标准单位数量" style="width: 100%;" :precision="6" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="标准单位" prop="stdUnitName">
<el-input v-model="form.stdUnitName" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="数量" prop="pkgUnitQty">
<el-input-number v-model="form.pkgUnitQty" placeholder="包装单位数量" style="width: 100%;" :precision="6" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="包装单位" prop="pkgUnitName">
<el-input v-model="form.pkgUnitName" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="reasonTitle" prop="reason">
<el-input v-model="form.reason" placeholder="请输入理由"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="业务区分" prop="businessCls">
<el-input v-model="form.businessCls" placeholder="请输入业务区分"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="序列号" prop="serialNo">
<el-input v-model="form.serialNo" placeholder="请输入序列号"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="交易单号" prop="transOrderNo">
<el-input v-model="form.transOrderNo" placeholder="请输入交易单号"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="交易明细号" prop="transOrderDetlNo">
<el-input v-model="form.transOrderDetlNo" placeholder="请输入交易明细号"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
@@ -119,9 +204,11 @@
</template>
<script setup name="BaseStock">
import { listBaseStock, getBaseStock } from "@/api/wms/BaseStock"
import { listBaseStock, getBaseStock, instock, outstock } from "@/api/wms/BaseStock"
import { listWarehouseInfo } from "@/api/wms/WarehouseInfo";
import { getItemInfo } from "@/api/wms/ItemInfo";
import DataSelect from "@/components/DataSelect/index.vue";
import {ElLoading} from "element-plus";
const { proxy } = getCurrentInstance();
@@ -134,6 +221,7 @@ const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref("");
const reasonTitle = ref("");
const data = reactive({
form: {},
@@ -146,6 +234,18 @@ const data = reactive({
lotNo: null,
},
rules: {
whsCd: [
{required: true, message: "仓库代码不能为空", trigger: "blur"}
],
stgBinCd: [
{required: true, message: "货架号不能为空", trigger: "blur"}
],
itemCd: [
{required: true, message: "物品代码不能为空", trigger: "blur"}
],
stdUnitQty: [
{required: true, message: "标准单位数量不能为空", trigger: "blur"},
],
}
});
@@ -170,29 +270,26 @@ function cancel() {
// 表单重置
function reset() {
form.value = {
deptId: null,
stockType: null,
whsCd: null,
stgBinCd: null,
itemCd: null,
lotNo: null,
subLotNo: null,
lotNo: '',
subLotNo: '',
stdUnitQty: null,
pkgUnitQty: null,
serialNo: null,
palletId: null,
parentPalletId: null,
remark1: null,
remark2: null,
remark3: null,
remark4: null,
remark5: null,
updateCount: null,
deleteFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null
operator: null,
businessCls: null,
reason: null,
transOrderNo: null,
transOrderDetlNo: null,
itemName: null,
stdUnitName: null,
pkgUnitName: null,
itemNotExists: false,
lastItemCd: null, //避免反复查询未改变的物品代码
};
proxy.resetForm("BaseStockRef");
}
@@ -227,38 +324,49 @@ function handleSelectionChange(selection) {
/** 入库按钮操作 */
function handleInstock() {
reset();
open.value = true;
form.value.stockType = 1;
title.value = "入库";
reasonTitle.value = "入库理由";
open.value = true;
}
/** 出库按钮操作 */
function handleOutstock() {
reset();
let primaryKey = ids.value[0]
let primaryKey = ids.value[0];
getBaseStock(primaryKey).then(response => {
form.value = response.data;
open.value = true;
form.value.stockType = 2;
form.value.stdUnitQty = 0;
form.value.pkgUnitQty = 0;
title.value = "出库";
reasonTitle.value = "出库理由";
open.value = true;
});
}
/** 提交按钮 */
function submitForm() {
//TODO 未完成
proxy.$refs["BaseStockRef"].validate(valid => {
if (valid) {
if (form.value.deptId != null) {
// instock(form.value).then(response => {
// proxy.$modal.msgSuccess("出库成功");
// open.value = false;
// getList();
// });
if (form.value.itemNotExists) {
proxy.$modal.msgError("此物品代码不存在");
return;
}
if (form.value.stockType === 1) {
// 入库
instock(form.value).then(response => {
proxy.$modal.msgSuccess("入库成功");
open.value = false;
getList();
});
} else {
// outstock(form.value).then(response => {
// proxy.$modal.msgSuccess("入库成功");
// open.value = false;
// getList();
// });
// 出库
outstock(form.value).then(response => {
proxy.$modal.msgSuccess("出库成功");
open.value = false;
getList();
});
}
}
});
@@ -271,7 +379,7 @@ function handleExport() {
}, `BaseStock_${new Date().getTime()}.xlsx`)
}
// 获取仓库数据
/** 获取仓库数据 */
async function fetchWarehouseData() {
const response = await listWarehouseInfo({})
const dataList = []
@@ -284,6 +392,29 @@ async function fetchWarehouseData() {
return dataList
}
/** 查询物品信息 */
function handleItemInfoBlur() {
if (form.value.itemCd && form.value.itemCd !== ' ' && form.value.lastItemCd !== form.value.itemCd) {
const loadingObj = ElLoading.service({text: "正在查询物品信息 ... ...", background: "rgba(0, 0, 0, 0.7)",})
getItemInfo(form.value.itemCd).then(response => {
if (response.data) {
form.value.itemName = response.data.itemName
form.value.stdUnitName = response.data.stdUnitName
form.value.pkgUnitName = response.data.pkgUnitName
form.value.itemNotExists = false
} else {
form.value.itemName = '无此物品信息'
form.value.stdUnitName = ''
form.value.pkgUnitName = ''
form.value.itemNotExists = true
}
}).finally(() => {
loadingObj.close()
form.value.lastItemCd = form.value.itemCd
})
}
}
//页面打开时查询
//getList();
</script>