fix 备件管理

main
chenshuichuan 2 years ago
parent 96cce934a4
commit 957429b52f

@ -41,6 +41,10 @@ export const ProductApi = {
getMesProductSimpleList: async () => { getMesProductSimpleList: async () => {
return await request.get({ url: `/erp/product/simple-list-product` }) return await request.get({ url: `/erp/product/simple-list-product` })
}, },
// 查询备件精简列表
getComponentSimpleList: async () => {
return await request.get({ url: `/erp/product/simple-list-component` })
},
// 查询产品详情 // 查询产品详情
getProduct: async (id: number) => { getProduct: async (id: number) => {

@ -17,6 +17,7 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="入库类型" prop="inType"> <el-form-item label="入库类型" prop="inType">
<el-select <el-select
disabled
v-model="formData.inType" v-model="formData.inType"
clearable clearable
filterable filterable
@ -170,6 +171,7 @@ const open = async (type: string, id?: number) => {
formLoading.value = false formLoading.value = false
} }
} }
formData.value.inType = "备件入库"
// //
supplierList.value = await SupplierApi.getSupplierSimpleList() supplierList.value = await SupplierApi.getSupplierSimpleList()
} }

@ -34,7 +34,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="产品名称" min-width="180"> <el-table-column label="备件名称" min-width="180">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!"> <el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!">
<el-select <el-select
@ -42,7 +42,7 @@
clearable clearable
filterable filterable
@change="onChangeProduct($event, row)" @change="onChangeProduct($event, row)"
placeholder="请选择产品" placeholder="请选择备件"
> >
<el-option <el-option
v-for="item in productList" v-for="item in productList"
@ -61,7 +61,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="码" min-width="150"> <el-table-column label="备件编码" min-width="150">
<template #default="{ row }"> <template #default="{ row }">
<el-form-item class="mb-0px!"> <el-form-item class="mb-0px!">
<el-input disabled v-model="row.productBarCode" /> <el-input disabled v-model="row.productBarCode" />
@ -88,7 +88,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="产品单价" fixed="right" min-width="120"> <el-table-column label="备件单价" fixed="right" min-width="120">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productPrice`" class="mb-0px!"> <el-form-item :prop="`${$index}.productPrice`" class="mb-0px!">
<el-input-number <el-input-number
@ -108,7 +108,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" min-width="150"> <el-table-column label="备注" fixed="right" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!"> <el-form-item :prop="`${$index}.remark`" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" /> <el-input v-model="row.remark" placeholder="请输入备注" />
@ -117,13 +117,15 @@
</el-table-column> </el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60"> <el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }"> <template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button> <el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form> </el-form>
<el-row justify="center" class="mt-3" v-if="!disabled"> <el-row justify="center" class="mt-3" v-if="!disabled">
<el-button @click="handleAdd" round>+ 添加入库产品</el-button> <el-button @click="handleAdd" round>+ 添加入库备件</el-button>
</el-row> </el-row>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -146,8 +148,8 @@ const formData = ref([])
const formRules = reactive({ const formRules = reactive({
inId: [{ required: true, message: '入库编号不能为空', trigger: 'blur' }], inId: [{ required: true, message: '入库编号不能为空', trigger: 'blur' }],
warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }], warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }],
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], productId: [{ required: true, message: '备件不能为空', trigger: 'blur' }],
count: [{ required: true, message: '产品数量不能为空', trigger: 'blur' }] count: [{ required: true, message: '备件数量不能为空', trigger: 'blur' }]
}) })
const formRef = ref([]) // Ref const formRef = ref([]) // Ref
const productList = ref<ProductVO[]>([]) // const productList = ref<ProductVO[]>([]) //
@ -256,7 +258,7 @@ defineExpose({ validate })
/** 初始化 */ /** 初始化 */
onMounted(async () => { onMounted(async () => {
productList.value = await ProductApi.getProductSimpleList() productList.value = await ProductApi.getComponentSimpleList()
warehouseList.value = await WarehouseApi.getWarehouseSimpleList() warehouseList.value = await WarehouseApi.getWarehouseSimpleList()
defaultWarehouse.value = warehouseList.value.find((item) => item.defaultStatus) defaultWarehouse.value = warehouseList.value.find((item) => item.defaultStatus)
// //

@ -9,21 +9,12 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="入库单号" prop="no"> <el-form-item label="备件" prop="productId">
<el-input
v-model="queryParams.no"
placeholder="请输入入库单号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="产品" prop="productId">
<el-select <el-select
v-model="queryParams.productId" v-model="queryParams.productId"
clearable clearable
filterable filterable
placeholder="请选择产品" placeholder="请选择备件"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -77,32 +68,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建人" prop="creator">
<el-select
v-model="queryParams.creator"
clearable
filterable
placeholder="请选择创建人"
class="!w-240px"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input <el-input
v-model="queryParams.remark" v-model="queryParams.remark"
@ -148,10 +114,9 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick"> <el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品" name="产品入库" /> <el-tab-pane label="未审核" name="10" />
<el-tab-pane label="原料" name="原料入库" /> <el-tab-pane label="已审核" name="20" />
<el-tab-pane label="备件" name="备件入库" /> <el-tab-pane label="所有" name="" />
<el-tab-pane label="其他" name="其他入库" />
</el-tabs> </el-tabs>
<el-table <el-table
@ -162,9 +127,9 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column width="30" label="选择" type="selection" /> <el-table-column width="30" label="选择" type="selection" />
<el-table-column min-width="180" label="入库单号" align="center" prop="no" /> <el-table-column min-width="180" label="入库单号" align="left" prop="no" />
<el-table-column label="产品信息" align="left" sortable prop="productNames" min-width="200" /> <el-table-column label="备件信息" align="left" sortable prop="productNames" min-width="200" />
<el-table-column label="供应商" align="center" prop="supplierName" /> <el-table-column label="供应商" align="left" prop="supplierName" />
<el-table-column <el-table-column
label="入库时间" label="入库时间"
align="center" align="center"
@ -192,7 +157,7 @@
<dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" /> <dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="220"> <el-table-column label="操作" align="center" fixed="right" width="180">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
@ -206,7 +171,7 @@
type="primary" type="primary"
@click="openForm('update', scope.row.id)" @click="openForm('update', scope.row.id)"
v-hasPermi="['erp:stock-in:update']" v-hasPermi="['erp:stock-in:update']"
:disabled="scope.row.status === 20" v-if="scope.row.status === 10"
> >
编辑 编辑
</el-button> </el-button>
@ -233,6 +198,7 @@
type="danger" type="danger"
@click="handleDelete([scope.row.id])" @click="handleDelete([scope.row.id])"
v-hasPermi="['erp:stock-in:delete']" v-hasPermi="['erp:stock-in:delete']"
v-if="scope.row.status === 10"
> >
删除 删除
</el-button> </el-button>
@ -291,12 +257,13 @@ const exportLoading = ref(false) // 导出的加载中
const productList = ref<ProductVO[]>([]) // const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) // const warehouseList = ref<WarehouseVO[]>([]) //
const supplierList = ref<SupplierVO[]>([]) // const supplierList = ref<SupplierVO[]>([]) //
const userList = ref<UserVO[]>([]) //
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
queryParams.inType = "备件入库"
const data = await StockInApi.getStockInPage(queryParams) const data = await StockInApi.getStockInPage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
@ -373,19 +340,18 @@ const handleSelectionChange = (rows: StockInVO[]) => {
/** 初始化 **/ /** 初始化 **/
onMounted(async () => { onMounted(async () => {
queryParams.inType = '产品入库' queryParams.status = 10
await getList() await getList()
// //
productList.value = await ProductApi.getProductSimpleList() productList.value = await ProductApi.getProductSimpleList()
warehouseList.value = await WarehouseApi.getWarehouseSimpleList() warehouseList.value = await WarehouseApi.getWarehouseSimpleList()
supplierList.value = await SupplierApi.getSupplierSimpleList() supplierList.value = await SupplierApi.getSupplierSimpleList()
userList.value = await UserApi.getSimpleUserList()
}) })
// TODO // TODO
// TODO // TODO
let activeName = '产品入库' let activeName = '10'
const handleTabClick = (tab: TabsPaneContext) => { const handleTabClick = (tab: TabsPaneContext) => {
queryParams.inType = tab.paneName queryParams.status = Number(tab.paneName)
handleQuery() handleQuery()
} }
</script> </script>

@ -14,24 +14,7 @@
<el-input disabled v-model="formData.no" placeholder="保存时自动生成" /> <el-input disabled v-model="formData.no" placeholder="保存时自动生成" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="客户" prop="customerId">
<el-select
v-model="formData.customerId"
clearable
filterable
placeholder="请选择客户"
class="!w-1/1"
>
<el-option
v-for="item in customerList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="出库时间" prop="outTime"> <el-form-item label="出库时间" prop="outTime">
<el-date-picker <el-date-picker
@ -46,6 +29,7 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="出库类型" prop="outType"> <el-form-item label="出库类型" prop="outType">
<el-select <el-select
disabled
v-model="formData.outType" v-model="formData.outType"
clearable clearable
filterable filterable
@ -74,18 +58,12 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="附件" prop="fileUrl">
<UploadFile :is-show-tip="false" v-model="formData.fileUrl" :limit="1" />
</el-form-item>
</el-col>
</el-row> </el-row>
</el-form> </el-form>
<!-- 子表的表单 --> <!-- 子表的表单 -->
<ContentWrap> <ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px"> <el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="出库产品清单" name="item"> <el-tab-pane label="出库备件清单" name="item">
<StockOutItemForm ref="itemFormRef" :items="formData.items" :disabled="disabled" /> <StockOutItemForm ref="itemFormRef" :items="formData.items" :disabled="disabled" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@ -129,7 +107,6 @@ const formRules = reactive({
}) })
const disabled = computed(() => formType.value === 'detail') const disabled = computed(() => formType.value === 'detail')
const formRef = ref() // Ref const formRef = ref() // Ref
const customerList = ref<CustomerVO[]>([]) //
const options = [ const options = [
{ {
value: '其他出库', value: '其他出库',
@ -174,8 +151,7 @@ const open = async (type: string, id?: number) => {
formLoading.value = false formLoading.value = false
} }
} }
// formData.value.outType = "备件出库"
customerList.value = await CustomerApi.getCustomerSimpleList()
} }
defineExpose({ open }) // open defineExpose({ open }) // open

@ -34,7 +34,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="产品名称" min-width="180"> <el-table-column label="备件名称" min-width="180">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!"> <el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!">
<el-select <el-select
@ -42,7 +42,7 @@
clearable clearable
filterable filterable
@change="onChangeProduct($event, row)" @change="onChangeProduct($event, row)"
placeholder="请选择产品" placeholder="请选择备件"
> >
<el-option <el-option
v-for="item in productList" v-for="item in productList"
@ -61,7 +61,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="码" min-width="150"> <el-table-column label="备件编码" min-width="150">
<template #default="{ row }"> <template #default="{ row }">
<el-form-item class="mb-0px!"> <el-form-item class="mb-0px!">
<el-input disabled v-model="row.productBarCode" /> <el-input disabled v-model="row.productBarCode" />
@ -88,7 +88,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="产品单价" fixed="right" min-width="120"> <el-table-column label="单价" fixed="right" min-width="120">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productPrice`" class="mb-0px!"> <el-form-item :prop="`${$index}.productPrice`" class="mb-0px!">
<el-input-number <el-input-number
@ -108,7 +108,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" min-width="150"> <el-table-column label="备注" fixed="right" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!"> <el-form-item :prop="`${$index}.remark`" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" /> <el-input v-model="row.remark" placeholder="请输入备注" />
@ -117,13 +117,15 @@
</el-table-column> </el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60"> <el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }"> <template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button> <el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form> </el-form>
<el-row justify="center" class="mt-3" v-if="!disabled"> <el-row justify="center" class="mt-3" v-if="!disabled">
<el-button @click="handleAdd" round>+ 添加出库产品</el-button> <el-button @click="handleAdd" round>+ 添加出库备件</el-button>
</el-row> </el-row>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -146,8 +148,8 @@ const formData = ref([])
const formRules = reactive({ const formRules = reactive({
inId: [{ required: true, message: '出库编号不能为空', trigger: 'blur' }], inId: [{ required: true, message: '出库编号不能为空', trigger: 'blur' }],
warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }], warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }],
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], productId: [{ required: true, message: '备件不能为空', trigger: 'blur' }],
count: [{ required: true, message: '产品数量不能为空', trigger: 'blur' }] count: [{ required: true, message: '备件数量不能为空', trigger: 'blur' }]
}) })
const formRef = ref([]) // Ref const formRef = ref([]) // Ref
const productList = ref<ProductVO[]>([]) // const productList = ref<ProductVO[]>([]) //
@ -256,7 +258,7 @@ defineExpose({ validate })
/** 初始化 */ /** 初始化 */
onMounted(async () => { onMounted(async () => {
productList.value = await ProductApi.getProductSimpleList() productList.value = await ProductApi.getComponentSimpleList()
warehouseList.value = await WarehouseApi.getWarehouseSimpleList() warehouseList.value = await WarehouseApi.getWarehouseSimpleList()
defaultWarehouse.value = warehouseList.value.find((item) => item.defaultStatus) defaultWarehouse.value = warehouseList.value.find((item) => item.defaultStatus)
// //

@ -18,12 +18,12 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="产品" prop="productId"> <el-form-item label="备件" prop="productId">
<el-select <el-select
v-model="queryParams.productId" v-model="queryParams.productId"
clearable clearable
filterable filterable
placeholder="请选择产品" placeholder="请选择备件"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -45,22 +45,6 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="客户" prop="customerId">
<el-select
v-model="queryParams.customerId"
clearable
filterable
placeholder="请选择供客户"
class="!w-240px"
>
<el-option
v-for="item in customerList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="仓库" prop="warehouseId"> <el-form-item label="仓库" prop="warehouseId">
<el-select <el-select
v-model="queryParams.warehouseId" v-model="queryParams.warehouseId"
@ -77,32 +61,6 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建人" prop="creator">
<el-select
v-model="queryParams.creator"
clearable
filterable
placeholder="请选择创建人"
class="!w-240px"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input <el-input
v-model="queryParams.remark" v-model="queryParams.remark"
@ -148,10 +106,9 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick"> <el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品" name="产品出库" /> <el-tab-pane label="未审核" name="10" />
<el-tab-pane label="原料" name="原料出库" /> <el-tab-pane label="已审核" name="20" />
<el-tab-pane label="备件" name="备件出库" /> <el-tab-pane label="所有" name="" />
<el-tab-pane label="其他" name="其他出库" />
</el-tabs> </el-tabs>
<el-table <el-table
@ -293,8 +250,7 @@ const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // const exportLoading = ref(false) //
const productList = ref<ProductVO[]>([]) // const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) // const warehouseList = ref<WarehouseVO[]>([]) //
const customerList = ref<CustomerVO[]>([]) //
const userList = ref<UserVO[]>([]) //
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
@ -376,20 +332,20 @@ const handleSelectionChange = (rows: StockOutVO[]) => {
/** 初始化 **/ /** 初始化 **/
onMounted(async () => { onMounted(async () => {
queryParams.outType ='产品出库' queryParams.outType ='备件出库'
queryParams.status = 10
await getList() await getList()
// //
productList.value = await ProductApi.getProductSimpleList() productList.value = await ProductApi.getComponentSimpleList()
warehouseList.value = await WarehouseApi.getWarehouseSimpleList() warehouseList.value = await WarehouseApi.getWarehouseSimpleList()
customerList.value = await CustomerApi.getCustomerSimpleList()
userList.value = await UserApi.getSimpleUserList()
}) })
// TODO // TODO
// TODO // TODO
/** tab 切换 */ /** tab 切换 */
let activeName = '产品出库' let activeName = '10'
const handleTabClick = (tab: TabsPaneContext) => { const handleTabClick = (tab: TabsPaneContext) => {
queryParams.outType = tab.paneName queryParams.status = tab.paneName
handleQuery() handleQuery()
} }
</script> </script>

@ -10,28 +10,16 @@
> >
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="名称" prop="name"> <el-form-item label="备件名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" /> <el-input v-model="formData.name" placeholder="请输入名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="条码" prop="barCode"> <el-form-item label="备件编码" prop="barCode">
<el-input v-model="formData.barCode" placeholder="请输入条码" /> <el-input v-model="formData.barCode" placeholder="请输入编码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="分类" prop="categoryId">
<el-tree-select
v-model="formData.categoryId"
:data="categoryList"
:props="defaultProps"
check-strictly
default-expand-all
placeholder="请选择分类"
class="w-1/1"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="单位" prop="unitId"> <el-form-item label="单位" prop="unitId">
<el-select v-model="formData.unitId" clearable placeholder="请选择单位" class="w-1/1"> <el-select v-model="formData.unitId" clearable placeholder="请选择单位" class="w-1/1">
@ -73,16 +61,6 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="重量g" prop="weight">
<el-input-number
v-model="formData.weight"
placeholder="请输入重量g"
:min="0"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="采购价格" prop="purchasePrice"> <el-form-item label="采购价格" prop="purchasePrice">
<el-input-number <el-input-number
@ -95,21 +73,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="销售价格" prop="salePrice"> <el-form-item label="预警库存" prop="safetyNumber">
<el-input-number
v-model="formData.salePrice"
placeholder="请输入销售价格,单位:元"
:min="0"
:precision="2"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最低价格" prop="minPrice">
<el-input-number <el-input-number
v-model="formData.minPrice" v-model="formData.safetyNumber"
placeholder="请输入最低价格,单位:元" placeholder="请输入预警库存数量"
:min="0" :min="0"
:precision="2" :precision="2"
class="!w-1/1" class="!w-1/1"
@ -131,7 +98,6 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ProductApi, ProductVO } from '@/api/erp/product/product' import { ProductApi, ProductVO } from '@/api/erp/product/product'
import { ProductCategoryApi, ProductCategoryVO } from '@/api/erp/product/category'
import { ProductUnitApi, ProductUnitVO } from '@/api/erp/product/unit' import { ProductUnitApi, ProductUnitVO } from '@/api/erp/product/unit'
import { CommonStatusEnum } from '@/utils/constants' import { CommonStatusEnum } from '@/utils/constants'
import { defaultProps, handleTree } from '@/utils/tree' import { defaultProps, handleTree } from '@/utils/tree'
@ -160,7 +126,8 @@ const formData = ref({
weight: undefined, weight: undefined,
purchasePrice: undefined, purchasePrice: undefined,
salePrice: undefined, salePrice: undefined,
minPrice: undefined minPrice: undefined,
safetyNumber: undefined
}) })
const formRules = reactive({ const formRules = reactive({
name: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }], name: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }],
@ -170,7 +137,6 @@ const formRules = reactive({
status: [{ required: true, message: '产品状态不能为空', trigger: 'blur' }] status: [{ required: true, message: '产品状态不能为空', trigger: 'blur' }]
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
const categoryList = ref<ProductCategoryVO[]>([]) //
const unitList = ref<ProductUnitVO[]>([]) // const unitList = ref<ProductUnitVO[]>([]) //
/** 打开弹窗 */ /** 打开弹窗 */
@ -188,9 +154,6 @@ const open = async (type: string, id?: number) => {
formLoading.value = false formLoading.value = false
} }
} }
//
const categoryData = await ProductCategoryApi.getProductCategorySimpleList()
categoryList.value = handleTree(categoryData, 'id', 'parentId')
// //
unitList.value = await ProductUnitApi.getProductUnitSimpleList() unitList.value = await ProductUnitApi.getProductUnitSimpleList()
} }
@ -205,7 +168,8 @@ const submitForm = async () => {
formLoading.value = true formLoading.value = true
try { try {
const data = formData.value as unknown as ProductVO const data = formData.value as unknown as ProductVO
if (formType.value === 'create') { if (formType.value === 'create'){
formData.value.categoryId = 5
await ProductApi.createProduct(data) await ProductApi.createProduct(data)
message.success(t('common.createSuccess')) message.success(t('common.createSuccess'))
} else { } else {

@ -49,9 +49,10 @@
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="备件编码" align="center" prop="barCode" /> <el-table-column label="备件编码" align="center" prop="barCode" />
<el-table-column label="备件名称" align="left" prop="name" width="220px"/> <el-table-column label="备件名称" align="left" prop="name" width="220px"/>
<el-table-column label="规格" align="center" prop="standard" /> <el-table-column v-if="checkPermi(['erp:component:standard'])" label="规格" align="center" prop="standard" />
<el-table-column label="分类" align="center" prop="categoryName" /> <el-table-column label="分类" align="center" prop="categoryName" />
<el-table-column label="单位" align="center" prop="unitName" /> <el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="预警库存" align="center" prop="safetyNumber" />
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" /> <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
@ -96,8 +97,6 @@
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<ProductForm ref="formRef" @success="getList" /> <ProductForm ref="formRef" @success="getList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -110,6 +109,7 @@ import { DICT_TYPE } from '@/utils/dict'
import { defaultProps, handleTree } from '@/utils/tree' import { defaultProps, handleTree } from '@/utils/tree'
import { erpPriceTableColumnFormatter } from '@/utils' import { erpPriceTableColumnFormatter } from '@/utils'
import BomForm from "@/views/mes/bom/BomForm.vue"; import BomForm from "@/views/mes/bom/BomForm.vue";
import {checkPermi} from "@/utils/permission";
/** ERP 产品列表 */ /** ERP 产品列表 */
defineOptions({ name: 'ErpProduct' }) defineOptions({ name: 'ErpProduct' })
@ -128,7 +128,6 @@ const queryParams = reactive({
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
const categoryList = ref<ProductCategoryVO[]>([]) //
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
@ -182,7 +181,7 @@ const handleExport = async () => {
// //
exportLoading.value = true exportLoading.value = true
const data = await ProductApi.exportProduct(queryParams) const data = await ProductApi.exportProduct(queryParams)
download.excel(data, '产品.xls') download.excel(data, '备件信息.xls')
} catch { } catch {
} finally { } finally {
exportLoading.value = false exportLoading.value = false
@ -193,8 +192,5 @@ const handleExport = async () => {
onMounted(async () => { onMounted(async () => {
queryParams.categoryId = 2 queryParams.categoryId = 2
await getList() await getList()
//
const categoryData = await ProductCategoryApi.getProductCategorySimpleList()
categoryList.value = handleTree(categoryData, 'id', 'parentId')
}) })
</script> </script>

@ -10,12 +10,12 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="产品" prop="productId"> <el-form-item label="备件" prop="productId">
<el-select <el-select
v-model="queryParams.productId" v-model="queryParams.productId"
clearable clearable
filterable filterable
placeholder="请选择产品" placeholder="请选择备件"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -42,21 +42,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="类型" prop="bizType">
<el-select
v-model="queryParams.bizType"
placeholder="请选择类型"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_STOCK_RECORD_BIZ_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="业务单号" prop="bizNo"> <el-form-item label="业务单号" prop="bizNo">
<el-input <el-input
v-model="queryParams.bizNo" v-model="queryParams.bizNo"
@ -103,20 +89,11 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品" name="2" />
<el-tab-pane label="原料" name="1" />
<el-tab-pane label="备件" name="5" />
<el-tab-pane label="工具" name="3" />
<el-tab-pane label="耗材" name="4" />
<el-tab-pane label="其他" name="0" />
</el-tabs>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="产品名称" align="left" sortable prop="productName" width="210px"/> <el-table-column label="备件名称" align="left" sortable prop="productName" width="210px"/>
<el-table-column label="产品分类" align="center" prop="categoryName" /> <el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="产品单位" align="center" prop="unitName" /> <el-table-column label="仓库" align="center" prop="warehouseName" />
<el-table-column label="仓库编号" align="center" prop="warehouseName" />
<el-table-column label="类型" align="center" prop="bizType" min-width="100"> <el-table-column label="类型" align="center" prop="bizType" min-width="100">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_STOCK_RECORD_BIZ_TYPE" :value="scope.row.bizType" /> <dict-tag :type="DICT_TYPE.ERP_STOCK_RECORD_BIZ_TYPE" :value="scope.row.bizType" />
@ -203,6 +180,7 @@ const warehouseList = ref<WarehouseVO[]>([]) // 仓库列表
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
queryParams.categoryId = 5
const data = await StockRecordApi.getStockRecordPage(queryParams) const data = await StockRecordApi.getStockRecordPage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
@ -223,24 +201,6 @@ const resetQuery = () => {
handleQuery() handleQuery()
} }
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await StockRecordApi.deleteStockRecord(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */ /** 导出按钮操作 */
const handleExport = async () => { const handleExport = async () => {
@ -250,7 +210,7 @@ const handleExport = async () => {
// //
exportLoading.value = true exportLoading.value = true
const data = await StockRecordApi.exportStockRecord(queryParams) const data = await StockRecordApi.exportStockRecord(queryParams)
download.excel(data, '产品库存明细.xls') download.excel(data, '备件库存明细.xls')
} catch { } catch {
} finally { } finally {
exportLoading.value = false exportLoading.value = false
@ -265,14 +225,7 @@ onActivated(() => {
onMounted(async () => { onMounted(async () => {
await getList() await getList()
// //
productList.value = await ProductApi.getProductSimpleList() productList.value = await ProductApi.getComponentSimpleList()
warehouseList.value = await WarehouseApi.getWarehouseSimpleList() warehouseList.value = await WarehouseApi.getWarehouseSimpleList()
}) })
/** tab 切换 */
let activeName = '2'
const handleTabClick = (tab: TabsPaneContext) => {
queryParams.categoryId = tab.paneName
handleQuery()
}
</script> </script>

@ -10,12 +10,12 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="产品" prop="productId"> <el-form-item label="备件" prop="productId">
<el-select <el-select
v-model="queryParams.productId" v-model="queryParams.productId"
clearable clearable
filterable filterable
placeholder="请选择产品" placeholder="请选择备件"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -69,17 +69,8 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品" name="2" />
<el-tab-pane label="原料" name="1" />
<el-tab-pane label="备件" name="5" />
<el-tab-pane label="工具" name="3" />
<el-tab-pane label="耗材" name="4" />
<el-tab-pane label="其他" name="0" />
</el-tabs>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="产品" align="left" sortable prop="productName" /> <el-table-column label="备件" align="left" sortable prop="productName" />
<el-table-column label="分类" align="center" prop="categoryName" /> <el-table-column label="分类" align="center" prop="categoryName" />
<el-table-column <el-table-column
label="库存量" label="库存量"
@ -129,12 +120,12 @@ const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // const exportLoading = ref(false) //
const productList = ref<ProductVO[]>([]) // const productList = ref<ProductVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) // const warehouseList = ref<WarehouseVO[]>([]) //
const categoryList = ref<ProductCategoryVO[]>([]) //
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
queryParams.categoryId = 5
const data = await StockApi.getStockPage(queryParams) const data = await StockApi.getStockPage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
@ -155,24 +146,6 @@ const resetQuery = () => {
handleQuery() handleQuery()
} }
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await StockApi.deleteStock(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */ /** 导出按钮操作 */
const handleExport = async () => { const handleExport = async () => {
@ -194,15 +167,8 @@ onMounted(async () => {
queryParams.categoryId = 2 queryParams.categoryId = 2
await getList() await getList()
// //
productList.value = await ProductApi.getProductSimpleList() productList.value = await ProductApi.getComponentSimpleList()
warehouseList.value = await WarehouseApi.getWarehouseSimpleList() warehouseList.value = await WarehouseApi.getWarehouseSimpleList()
categoryList.value = await ProductCategoryApi.getProductCategorySimpleList()
}) })
/** tab 切换 */
let activeName = '2'
const handleTabClick = (tab: TabsPaneContext) => {
queryParams.categoryId = tab.paneName
handleQuery()
}
</script> </script>

@ -160,7 +160,8 @@ const formData = ref({
weight: undefined, weight: undefined,
purchasePrice: undefined, purchasePrice: undefined,
salePrice: undefined, salePrice: undefined,
minPrice: undefined minPrice: undefined,
safetyNumber: undefined
}) })
const formRules = reactive({ const formRules = reactive({
name: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }], name: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }],

@ -108,7 +108,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" min-width="150"> <el-table-column label="备注" fixed="right" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!"> <el-form-item :prop="`${$index}.remark`" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" /> <el-input v-model="row.remark" placeholder="请输入备注" />
@ -117,7 +117,9 @@
</el-table-column> </el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60"> <el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }"> <template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button> <el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

@ -108,7 +108,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" min-width="150"> <el-table-column label="备注" fixed="right" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!"> <el-form-item :prop="`${$index}.remark`" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" /> <el-input v-model="row.remark" placeholder="请输入备注" />
@ -117,7 +117,9 @@
</el-table-column> </el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60"> <el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }"> <template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button> <el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

@ -72,9 +72,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60"> <el-table-column align="center" fixed="right" label="操作" width="60">
<el-button type="danger" @click="handleDelete($index)" link> <template #default="{ $index }">
<Icon icon="ep:delete" /> <el-button type="danger" @click="handleDelete($index)" link>
</el-button> <Icon icon="ep:delete" />
</el-button>
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form> </el-form>

Loading…
Cancel
Save