|
@@ -5,7 +5,7 @@
|
|
|
style="line-height: 60px"
|
|
style="line-height: 60px"
|
|
|
>
|
|
>
|
|
|
<el-row>
|
|
<el-row>
|
|
|
- <el-col :span="8">
|
|
|
|
|
|
|
+ <el-col :span="18">
|
|
|
<el-form
|
|
<el-form
|
|
|
inline
|
|
inline
|
|
|
style="margin-top: 10px"
|
|
style="margin-top: 10px"
|
|
@@ -16,28 +16,46 @@
|
|
|
placeholder="请输入名称"
|
|
placeholder="请输入名称"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
+ <el-form-item label="类型">
|
|
|
|
|
+ <el-cascader
|
|
|
|
|
+ :options="goodsTypeData"
|
|
|
|
|
+ :props="goodsTypeProps"/>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="特征">
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ placeholder="请输入特征"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="特征">
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ placeholder="请输入特征"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
- <el-button @click="getData" type="primary">搜索</el-button>
|
|
|
|
|
|
|
+ <el-button @click="getData" type="primary" icon="Search">搜索</el-button>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
|
|
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="8" />
|
|
|
|
|
- <el-col :span="8">
|
|
|
|
|
|
|
+ <el-col :span="6">
|
|
|
<el-button
|
|
<el-button
|
|
|
- type="primary"
|
|
|
|
|
- @click="isOpenGoodsAdd = true"
|
|
|
|
|
|
|
+ @click="inboundDialog = true"
|
|
|
|
|
+ >入库</el-button>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ @click="outboundDialog = true"
|
|
|
|
|
+ >出库</el-button>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ @click="isOpenGoodsAdd = true"
|
|
|
>货品新增</el-button>
|
|
>货品新增</el-button>
|
|
|
<el-button
|
|
<el-button
|
|
|
- type="primary"
|
|
|
|
|
- @click="isOpenCommodityGenre = true"
|
|
|
|
|
|
|
+ @click="isOpenCommodityGenre = true"
|
|
|
>货品类型</el-button>
|
|
>货品类型</el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
</el-header>
|
|
</el-header>
|
|
|
<el-main class="gva-table-box">
|
|
<el-main class="gva-table-box">
|
|
|
<el-table
|
|
<el-table
|
|
|
- :data="commodityListData"
|
|
|
|
|
|
|
+ :data="goodsListData"
|
|
|
style="height: 600px"
|
|
style="height: 600px"
|
|
|
>
|
|
>
|
|
|
<el-table-column
|
|
<el-table-column
|
|
@@ -46,18 +64,18 @@
|
|
|
align="center"
|
|
align="center"
|
|
|
/>
|
|
/>
|
|
|
<el-table-column
|
|
<el-table-column
|
|
|
- prop="commodityGenre.name"
|
|
|
|
|
|
|
+ prop="goodsGenre.name"
|
|
|
label="类型"
|
|
label="类型"
|
|
|
align="center"
|
|
align="center"
|
|
|
/>
|
|
/>
|
|
|
<el-table-column
|
|
<el-table-column
|
|
|
- prop="supplier.name"
|
|
|
|
|
- label="供应商"
|
|
|
|
|
|
|
+ prop="number"
|
|
|
|
|
+ label="数量"
|
|
|
align="center"
|
|
align="center"
|
|
|
/>
|
|
/>
|
|
|
<el-table-column
|
|
<el-table-column
|
|
|
- prop="unitPrice"
|
|
|
|
|
- label="单价"
|
|
|
|
|
|
|
+ prop="position"
|
|
|
|
|
+ label="位置"
|
|
|
align="center"
|
|
align="center"
|
|
|
/>
|
|
/>
|
|
|
<el-table-column label="操作">
|
|
<el-table-column label="操作">
|
|
@@ -65,12 +83,12 @@
|
|
|
<el-button
|
|
<el-button
|
|
|
size="small"
|
|
size="small"
|
|
|
type="primary"
|
|
type="primary"
|
|
|
- @click="openCommodityEdit(scope.row)"
|
|
|
|
|
|
|
+ @click="openGoodsEdit(scope.row)"
|
|
|
>编辑</el-button>
|
|
>编辑</el-button>
|
|
|
<el-button
|
|
<el-button
|
|
|
size="small"
|
|
size="small"
|
|
|
type="danger"
|
|
type="danger"
|
|
|
- @click="commodityDelete(scope.row)"
|
|
|
|
|
|
|
+ @click="goodsDelete(scope.row)"
|
|
|
>删除</el-button>
|
|
>删除</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -89,52 +107,48 @@
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 修改-->
|
|
<!-- 修改-->
|
|
|
<el-drawer
|
|
<el-drawer
|
|
|
- v-model="isOpenCommodityEdit"
|
|
|
|
|
|
|
+ v-model="isOpenGoodsEdit"
|
|
|
title="修改货品信息"
|
|
title="修改货品信息"
|
|
|
direction="rtl"
|
|
direction="rtl"
|
|
|
size="30%"
|
|
size="30%"
|
|
|
>
|
|
>
|
|
|
<div>
|
|
<div>
|
|
|
<el-form
|
|
<el-form
|
|
|
- v-model="commodityEditData"
|
|
|
|
|
label-position="left"
|
|
label-position="left"
|
|
|
label-width="auto"
|
|
label-width="auto"
|
|
|
style="max-width: 400px"
|
|
style="max-width: 400px"
|
|
|
|
|
+ size="large"
|
|
|
>
|
|
>
|
|
|
<el-form-item label="货品名称">
|
|
<el-form-item label="货品名称">
|
|
|
- <el-input v-model="commodityEditData.name" />
|
|
|
|
|
|
|
+ <el-input v-model="goodsEditData.name" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="货品类型">
|
|
<el-form-item label="货品类型">
|
|
|
- <el-select
|
|
|
|
|
- v-model="commodityEditData.genre"
|
|
|
|
|
- style="width: 240px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in commodityGenreAllData"
|
|
|
|
|
- :key="item.ID"
|
|
|
|
|
- :label="item.name"
|
|
|
|
|
- :value="item.ID"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
|
|
+ <el-cascader
|
|
|
|
|
+ v-model="goodsEditData.goodsGenreId"
|
|
|
|
|
+ :options="goodsTypeData"
|
|
|
|
|
+ @change="editHandleChange"
|
|
|
|
|
+ :props="goodsTypeProps"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="单价">
|
|
|
|
|
|
|
+ <el-form-item label="特征">
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="commodityEditData.unitPrice"
|
|
|
|
|
- type="number"
|
|
|
|
|
|
|
+ v-model="goodsEditData.characteristic"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
+ <el-form-item label="规格">
|
|
|
|
|
+ <el-input v-model="goodsEditData.specifications" />
|
|
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="单位">
|
|
<el-form-item label="单位">
|
|
|
- <el-input v-model="commodityEditData.unity" />
|
|
|
|
|
|
|
+ <el-input v-model="goodsEditData.unit" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="备注">
|
|
|
|
|
- <el-input v-model="commodityEditData.remark" />
|
|
|
|
|
|
|
+ <el-form-item label="数量">
|
|
|
|
|
+ <el-input v-model="goodsEditData.number" type="number"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
<el-button
|
|
<el-button
|
|
|
type="primary"
|
|
type="primary"
|
|
|
- @click="commoditySubmit"
|
|
|
|
|
|
|
+ @click="editGoodsSubmit"
|
|
|
>提交</el-button>
|
|
>提交</el-button>
|
|
|
- <el-button @click="isOpenCommodityEdit = false">关闭</el-button>
|
|
|
|
|
|
|
+ <el-button @click="isOpenGoodsEdit = false">关闭</el-button>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
</div>
|
|
</div>
|
|
@@ -153,21 +167,14 @@
|
|
|
style="max-width: 400px"
|
|
style="max-width: 400px"
|
|
|
size="large"
|
|
size="large"
|
|
|
>
|
|
>
|
|
|
- <el-form-item label="货品名称">
|
|
|
|
|
- <el-input v-model="goodsAddDate.name" />
|
|
|
|
|
|
|
+ <el-form-item label="货品名称" prop="name">
|
|
|
|
|
+ <el-input v-model="goodsAddDate.name"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="货品类型">
|
|
<el-form-item label="货品类型">
|
|
|
- <el-select
|
|
|
|
|
- v-model="goodsAddDate.goodsGenreId"
|
|
|
|
|
- style="width: 240px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in goodsTypeData"
|
|
|
|
|
- :key="item.ID"
|
|
|
|
|
- :label="item.name"
|
|
|
|
|
- :value="item.ID"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
|
|
+ <el-cascader
|
|
|
|
|
+ :options="goodsTypeData"
|
|
|
|
|
+ @change="handleChange"
|
|
|
|
|
+ :props="goodsTypeProps"/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="特性">
|
|
<el-form-item label="特性">
|
|
|
<el-input
|
|
<el-input
|
|
@@ -357,6 +364,180 @@
|
|
|
</template>
|
|
</template>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
</el-drawer>
|
|
</el-drawer>
|
|
|
|
|
+<!-- 入库-->
|
|
|
|
|
+ <el-drawer
|
|
|
|
|
+ v-model="inboundDialog"
|
|
|
|
|
+ title="新建入库单"
|
|
|
|
|
+ direction="rtl"
|
|
|
|
|
+ size="50%"
|
|
|
|
|
+ >
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <el-header
|
|
|
|
|
+ class="gva-search-box"
|
|
|
|
|
+ style="height: 30px;line-height: 30px;"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-button type="primary" @click="addGoods">添加货品</el-button>
|
|
|
|
|
+ <el-button type="danger" @click="reduceGoods">减少货品</el-button>
|
|
|
|
|
+ </el-header>
|
|
|
|
|
+ <el-main>
|
|
|
|
|
+ <el-table
|
|
|
|
|
+ :data="storeData.cargos"
|
|
|
|
|
+ height="500"
|
|
|
|
|
+ border
|
|
|
|
|
+ style="width: 100%;margin-bottom: 20px"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-table-column label="货品" width="300">
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="row.goodsId"
|
|
|
|
|
+ filterable
|
|
|
|
|
+ placeholder="选择货品"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in goodsListData"
|
|
|
|
|
+ :key="item.ID"
|
|
|
|
|
+ :label="item.name"
|
|
|
|
|
+ :value="item.ID"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ label="数量"
|
|
|
|
|
+ width="200"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <el-input-number
|
|
|
|
|
+ v-model="row.number"
|
|
|
|
|
+ :min="1"
|
|
|
|
|
+ />
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="购买价格">
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <el-input v-model.number="row.buyingPrice" type="number"/>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ <el-form inline>
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ label="标题"
|
|
|
|
|
+ prop="title"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="storeData.title"
|
|
|
|
|
+ style="width: 200px;"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ label="管理人"
|
|
|
|
|
+ prop="custodian"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="storeData.custodian"
|
|
|
|
|
+ style="width: 200px;"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ label="备注"
|
|
|
|
|
+ prop="custodian"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="storeData.remarks"
|
|
|
|
|
+ style="width: 200px;"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="submitInboundForm"
|
|
|
|
|
+ >提交入库</el-button>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ </el-main>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-drawer>
|
|
|
|
|
+<!-- 出库-->
|
|
|
|
|
+ <el-drawer v-model="outboundDialog">
|
|
|
|
|
+ <el-header
|
|
|
|
|
+ class="gva-search-box"
|
|
|
|
|
+ style="height: 30px;line-height: 30px;"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-button type="primary" @click="addGoods">添加货品</el-button>
|
|
|
|
|
+ <el-button type="danger" @click="reduceGoods">减少货品</el-button>
|
|
|
|
|
+ </el-header>
|
|
|
|
|
+ <el-main>
|
|
|
|
|
+ <el-table
|
|
|
|
|
+ :data="storeData.cargos"
|
|
|
|
|
+ height="500"
|
|
|
|
|
+ border
|
|
|
|
|
+ style="width: 100%;margin-bottom: 20px"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-table-column label="货品" width="300">
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="row.goodsId"
|
|
|
|
|
+ filterable
|
|
|
|
|
+ placeholder="选择货品"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in goodsListData"
|
|
|
|
|
+ :key="item.ID"
|
|
|
|
|
+ :label="item.name"
|
|
|
|
|
+ :value="item.ID"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ label="数量"
|
|
|
|
|
+ width="200"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <el-input-number
|
|
|
|
|
+ v-model="row.number"
|
|
|
|
|
+ :min="1"
|
|
|
|
|
+ />
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ <el-form inline>
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ label="标题"
|
|
|
|
|
+ prop="title"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="storeData.title"
|
|
|
|
|
+ style="width: 200px;"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ label="管理人"
|
|
|
|
|
+ prop="custodian"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="storeData.custodian"
|
|
|
|
|
+ style="width: 200px;"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ label="备注"
|
|
|
|
|
+ prop="custodian"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="storeData.remarks"
|
|
|
|
|
+ style="width: 200px;"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="submitInboundForm"
|
|
|
|
|
+ >提交入库</el-button>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ </el-main>
|
|
|
|
|
+ </el-drawer>
|
|
|
</el-main>
|
|
</el-main>
|
|
|
</el-container>
|
|
</el-container>
|
|
|
</template>
|
|
</template>
|
|
@@ -373,13 +554,122 @@ import {
|
|
|
createGoodsType,
|
|
createGoodsType,
|
|
|
updateGoodsType,
|
|
updateGoodsType,
|
|
|
queryAllGoods,
|
|
queryAllGoods,
|
|
|
- createGoods
|
|
|
|
|
|
|
+ createGoods,
|
|
|
|
|
+ queryGoodsList,
|
|
|
|
|
+ updateGoods,
|
|
|
|
|
+ deleteGoods,
|
|
|
|
|
+ createInboundManifest
|
|
|
} from '@/api/storehouse'
|
|
} from '@/api/storehouse'
|
|
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
|
|
|
|
|
|
|
-// 数据
|
|
|
|
|
-const commodityGenreAllData = ref()
|
|
|
|
|
-const commodityListData = ref()
|
|
|
|
|
|
|
+const goodsTypeProps = {
|
|
|
|
|
+ label: 'name',
|
|
|
|
|
+ value: 'ID'
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const handleChange = (value) => {
|
|
|
|
|
+ goodsAddDate.goodsGenreId = value[1]
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const editHandleChange = (val) => {
|
|
|
|
|
+ goodsEditData.value.goodsGenreId = val[1]
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 入库
|
|
|
|
|
+const inboundDialog = ref(false)
|
|
|
|
|
+const addGoods = () => {
|
|
|
|
|
+ storeData.cargos.push({ goodsId: null, number: 1, buyingPrice: 0 })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const reduceGoods = () => {
|
|
|
|
|
+ if (storeData.cargos.length > 1) {
|
|
|
|
|
+ storeData.cargos.pop()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.log('只剩一项')
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const storeData = reactive({
|
|
|
|
|
+ manifestGenre: '入库',
|
|
|
|
|
+ title: '',
|
|
|
|
|
+ custodian: '',
|
|
|
|
|
+ cargos: [
|
|
|
|
|
+ { goodsId: null, number: 1, buyingPrice: 0 },
|
|
|
|
|
+ ],
|
|
|
|
|
+ remarks: ''
|
|
|
|
|
+})
|
|
|
|
|
+const submitInboundForm = async () => {
|
|
|
|
|
+ if (!validateInboundForm()) return
|
|
|
|
|
+ await createInboundManifest(storeData).then(res => {
|
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
|
+ ElMessage.success('添加成功')
|
|
|
|
|
+ getData()
|
|
|
|
|
+ inboundDialog.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//出库
|
|
|
|
|
+const outboundDialog = ref(false)
|
|
|
|
|
+
|
|
|
|
|
+const outboundData = reactive({
|
|
|
|
|
+ manifestGenre: '出库',
|
|
|
|
|
+ title: '',
|
|
|
|
|
+ custodian: '',
|
|
|
|
|
+ cargos: [
|
|
|
|
|
+ { goodsId: null, number: 1, buyingPrice: 0 },
|
|
|
|
|
+ ],
|
|
|
|
|
+ remarks: ''
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+const submitOutboundForm = async () => {
|
|
|
|
|
+ if (!validateInboundForm()) return
|
|
|
|
|
+ await createInboundManifest(storeData).then(res => {
|
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
|
+ ElMessage.success('添加成功')
|
|
|
|
|
+ getData()
|
|
|
|
|
+ inboundDialog.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const validateInboundForm = () => {
|
|
|
|
|
+ const data = storeData
|
|
|
|
|
+
|
|
|
|
|
+ if (!data.title.trim()) {
|
|
|
|
|
+ ElMessage.warning('请输入入库单标题')
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!data.custodian.trim()) {
|
|
|
|
|
+ ElMessage.warning('请输入负责人')
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!Array.isArray(data.cargos) || data.cargos.length === 0) {
|
|
|
|
|
+ ElMessage.warning('请至少添加一项商品')
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for (let i = 0; i < data.cargos.length; i++) {
|
|
|
|
|
+ const cargo = data.cargos[i]
|
|
|
|
|
+
|
|
|
|
|
+ if (!cargo.goodsId) {
|
|
|
|
|
+ ElMessage.warning(`第 ${i + 1} 行商品未选择`)
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!cargo.number || cargo.number <= 0) {
|
|
|
|
|
+ ElMessage.warning(`第 ${i + 1} 行数量必须大于0`)
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return true
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const goodsListData = reactive([])
|
|
|
|
|
|
|
|
const searchCommodity = ref({
|
|
const searchCommodity = ref({
|
|
|
pageInfo: {
|
|
pageInfo: {
|
|
@@ -486,37 +776,47 @@ const omitGoodsType = (val) => {
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// 新增
|
|
|
|
|
|
|
+// 新增货物类型
|
|
|
const goodsAddDate = reactive({
|
|
const goodsAddDate = reactive({
|
|
|
- name: '',
|
|
|
|
|
|
|
+ name: '投光灯1',
|
|
|
goodsGenreId: '',
|
|
goodsGenreId: '',
|
|
|
- characteristic: '',
|
|
|
|
|
|
|
+ characteristic: '400w',
|
|
|
specifications: '',
|
|
specifications: '',
|
|
|
- unit: '',
|
|
|
|
|
- number: 0,
|
|
|
|
|
- position: ''
|
|
|
|
|
|
|
+ unit: '盏',
|
|
|
|
|
+ number: 5,
|
|
|
|
|
+ position: '大仓库'
|
|
|
})
|
|
})
|
|
|
const isOpenGoodsAdd = ref(false)
|
|
const isOpenGoodsAdd = ref(false)
|
|
|
|
|
|
|
|
const goodsAddSubmit = async() => {
|
|
const goodsAddSubmit = async() => {
|
|
|
- for (let i in goodsAddDate) {
|
|
|
|
|
- if (goodsAddDate[i] === '' || goodsAddDate[i] === 0) {
|
|
|
|
|
- ElMessage.error('请将数据填写完整')
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (goodsAddDate.name === '' || goodsAddDate.goodsGenreId === '' || goodsAddDate.unit === '' || Number(goodsAddDate.number) <= 0) {
|
|
|
|
|
+ ElMessage.error('请将必要的数据填写完整')
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
- goodsAddDate.number = Number(goodsAddDate.number)
|
|
|
|
|
await createGoods(goodsAddDate).then(res => {
|
|
await createGoods(goodsAddDate).then(res => {
|
|
|
|
|
+ console.log(res)
|
|
|
if (res.code === 0) {
|
|
if (res.code === 0) {
|
|
|
ElMessage.success('新增成功')
|
|
ElMessage.success('新增成功')
|
|
|
|
|
+ isOpenGoodsAdd.value = false
|
|
|
getData()
|
|
getData()
|
|
|
} else {
|
|
} else {
|
|
|
ElMessage.error('新增失败')
|
|
ElMessage.error('新增失败')
|
|
|
}
|
|
}
|
|
|
- isOpenGoodsAdd.value = false
|
|
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// 查询货物列表
|
|
|
|
|
+const queryGoodsData = reactive({
|
|
|
|
|
+ pageInfo: {
|
|
|
|
|
+ page: 1,
|
|
|
|
|
+ pageSize: 10
|
|
|
|
|
+ },
|
|
|
|
|
+ genre: 0,
|
|
|
|
|
+ name: "",
|
|
|
|
|
+ characteristic: "",
|
|
|
|
|
+ specifications: ""
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
// 分页
|
|
// 分页
|
|
|
const handleSizeChange = (val) => {
|
|
const handleSizeChange = (val) => {
|
|
|
searchCommodity.value.pageSize = val
|
|
searchCommodity.value.pageSize = val
|
|
@@ -533,19 +833,16 @@ const getData = async() => {
|
|
|
// await queryAllCommodityGenre().then(res => {
|
|
// await queryAllCommodityGenre().then(res => {
|
|
|
// commodityGenreAllData.value = res.data
|
|
// commodityGenreAllData.value = res.data
|
|
|
// })
|
|
// })
|
|
|
- // await queryCommodityList(searchCommodity.value).then(res => {
|
|
|
|
|
- // commodityListData.value = res.data.list
|
|
|
|
|
- // total.value = res.data.total
|
|
|
|
|
- // })
|
|
|
|
|
await queryGoodsType().then(res => {
|
|
await queryGoodsType().then(res => {
|
|
|
if (res.code === 0) {
|
|
if (res.code === 0) {
|
|
|
goodsTypeData.length = 0
|
|
goodsTypeData.length = 0
|
|
|
goodsTypeData.push(...res.data)
|
|
goodsTypeData.push(...res.data)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
- await queryAllGoods().then(res => {
|
|
|
|
|
|
|
+ await queryGoodsList(queryGoodsData).then(res => {
|
|
|
if (res.code === 0) {
|
|
if (res.code === 0) {
|
|
|
- console.log('所有货物', res.data)
|
|
|
|
|
|
|
+ goodsListData.length = 0
|
|
|
|
|
+ goodsListData.push(...res.data.list)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
@@ -555,39 +852,46 @@ const isOpenCommodityGenre = ref(false)
|
|
|
|
|
|
|
|
const searchCommodityGenre = ref()
|
|
const searchCommodityGenre = ref()
|
|
|
|
|
|
|
|
-const filterTableData = computed(() =>
|
|
|
|
|
- commodityGenreAllData.value.filter(
|
|
|
|
|
- (data) =>
|
|
|
|
|
- !searchCommodityGenre.value ||
|
|
|
|
|
- data.name.toLowerCase().includes(searchCommodityGenre.value.toLowerCase())
|
|
|
|
|
- )
|
|
|
|
|
-)
|
|
|
|
|
-
|
|
|
|
|
const isOpenAddGenre = ref(false)
|
|
const isOpenAddGenre = ref(false)
|
|
|
|
|
|
|
|
const isOpenUpdateGenre = ref(false)
|
|
const isOpenUpdateGenre = ref(false)
|
|
|
|
|
|
|
|
|
|
|
|
|
-// 货品
|
|
|
|
|
-const isOpenCommodityEdit = ref(false)
|
|
|
|
|
-const commodityEditData = ref()
|
|
|
|
|
-const openCommodityEdit = (val) => {
|
|
|
|
|
- commodityEditData.value = val
|
|
|
|
|
- isOpenCommodityEdit.value = true
|
|
|
|
|
|
|
+// 编辑货品
|
|
|
|
|
+const isOpenGoodsEdit = ref(false)
|
|
|
|
|
+const goodsEditData = reactive({
|
|
|
|
|
+ id: 0,
|
|
|
|
|
+ name: "",
|
|
|
|
|
+ goodsGenreId: 0,
|
|
|
|
|
+ characteristic: "",
|
|
|
|
|
+ specifications: "",
|
|
|
|
|
+ unit: "",
|
|
|
|
|
+ number: 0
|
|
|
|
|
+})
|
|
|
|
|
+const openGoodsEdit = (val) => {
|
|
|
|
|
+ goodsEditData.id = val.ID
|
|
|
|
|
+ goodsEditData.name = val.name
|
|
|
|
|
+ goodsEditData.goodsGenreId = val.goodsGenreId
|
|
|
|
|
+ goodsEditData.characteristic = val.characteristic
|
|
|
|
|
+ goodsEditData.specifications = val.specifications
|
|
|
|
|
+ goodsEditData.unit = val.unit
|
|
|
|
|
+ goodsEditData.number = val.number
|
|
|
|
|
+ isOpenGoodsEdit.value = true
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const commoditySubmit = async() => {
|
|
|
|
|
- await updateCommodity(commodityEditData.value).then(res => {
|
|
|
|
|
|
|
+const editGoodsSubmit = async() => {
|
|
|
|
|
+ await updateGoods(goodsEditData).then(res => {
|
|
|
if (res.code === 0) {
|
|
if (res.code === 0) {
|
|
|
ElMessage.success('编辑成功')
|
|
ElMessage.success('编辑成功')
|
|
|
|
|
+ getData()
|
|
|
} else {
|
|
} else {
|
|
|
ElMessage.error('编辑失败')
|
|
ElMessage.error('编辑失败')
|
|
|
}
|
|
}
|
|
|
- isOpenCommodityEdit.value = false
|
|
|
|
|
|
|
+ isOpenGoodsEdit.value = false
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const commodityDelete = async(val) => {
|
|
|
|
|
|
|
+const goodsDelete = async(val) => {
|
|
|
ElMessageBox.confirm(
|
|
ElMessageBox.confirm(
|
|
|
'将永久删除该信息。是否继续?',
|
|
'将永久删除该信息。是否继续?',
|
|
|
'删除',
|
|
'删除',
|
|
@@ -598,7 +902,7 @@ const commodityDelete = async(val) => {
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|
|
|
.then(async() => {
|
|
.then(async() => {
|
|
|
- await deleteCommodity(val).then(res => {
|
|
|
|
|
|
|
+ await deleteGoods(val.ID).then(res => {
|
|
|
if (res.code === 0) {
|
|
if (res.code === 0) {
|
|
|
ElMessage.success('删除成功')
|
|
ElMessage.success('删除成功')
|
|
|
getData()
|
|
getData()
|