liutao_branch
chenshuichuan 2 years ago
parent 66779370f2
commit ee7ea361f3

@ -27,8 +27,13 @@ export const ProductApi = {
// 查询产品精简列表 // 查询产品精简列表
getProductSimpleList: async () => { getProductSimpleList: async () => {
return await request.get({ url: `/erp/product/simple-list` }) return await request.get({ url: `/erp/product/simple-list-product` })
}, },
// 查询原料精简列表
getItemSimpleList: async () => {
return await request.get({ url: `/erp/product/simple-list-item` })
},
// 查询产品详情 // 查询产品详情
getProduct: async (id: number) => { getProduct: async (id: number) => {

@ -101,12 +101,6 @@ export const getDictLabel = (dictType: string, value: any): string => {
} }
export enum DICT_TYPE { export enum DICT_TYPE {
USER_TYPE = 'user_type', USER_TYPE = 'user_type',
COMMON_STATUS = 'common_status', COMMON_STATUS = 'common_status',
@ -114,8 +108,6 @@ TERMINAL = 'terminal',// 终端
DATE_INTERVAL = 'date_interval',// 数据间隔 DATE_INTERVAL = 'date_interval',// 数据间隔
// ========== SYSTEM 模块 ========== // ========== SYSTEM 模块 ==========
SYSTEM_USER_SEX = 'system_user_sex', SYSTEM_USER_SEX = 'system_user_sex',
SYSTEM_MENU_TYPE = 'system_menu_type', SYSTEM_MENU_TYPE = 'system_menu_type',
@ -165,8 +157,6 @@ PAY_TRANSFER_STATUS = 'pay_transfer_status',// 转账订单状态
PAY_TRANSFER_TYPE = 'pay_transfer_type',// 转账订单状态 PAY_TRANSFER_TYPE = 'pay_transfer_type',// 转账订单状态
// ========== MP 模块 ========== // ========== MP 模块 ==========
MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match',// 自动回复请求匹配类型 MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match',// 自动回复请求匹配类型
MP_MESSAGE_TYPE = 'mp_message_type',// 消息类型 MP_MESSAGE_TYPE = 'mp_message_type',// 消息类型
@ -246,5 +236,6 @@ MES_TASK_STATUS = "mes_task_status",
MES_PLAN_STATUS = "mes_plan_status", MES_PLAN_STATUS = "mes_plan_status",
MES_RECORD_STATUS = "mes_record_status", MES_RECORD_STATUS = "mes_record_status",
MES_GROUP_TYPE = "mes_group_type", MES_GROUP_TYPE = "mes_group_type",
MES_WORK_TEAM_USER_ROLE = "mes_work_team_user_role" MES_WORK_TEAM_USER_ROLE = "mes_work_team_user_role",
MES_PRODUCE_ITEM_REQUISITION = "mes_produce_item_requisition"
} }

@ -27,11 +27,12 @@
<el-input v-model="formData.machineId" placeholder="请输入机台ID" /> <el-input v-model="formData.machineId" placeholder="请输入机台ID" />
</el-form-item> </el-form-item>
<el-form-item label="使用时间(小时)" prop="useTime"> <el-form-item label="使用时间(小时)" prop="useTime">
<el-date-picker <el-input-number
v-model="formData.useTime" v-model="formData.useTime"
type="date" :min="0"
value-format="x" :precision="2"
placeholder="选择使用时间(小时)" class="!w-1/1"
placeholder="输入预期寿命(小时)"
/> />
</el-form-item> </el-form-item>
<el-form-item label="入库时间" prop="inTime"> <el-form-item label="入库时间" prop="inTime">
@ -168,7 +169,7 @@ const resetForm = () => {
name: undefined, name: undefined,
unitId: undefined, unitId: undefined,
machineId: undefined, machineId: undefined,
useTime: undefined, useTime: 0,
inTime: undefined, inTime: undefined,
status: undefined, status: undefined,
images: undefined, images: undefined,

@ -40,7 +40,14 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="成品率%" prop="yieldRate"> <el-form-item label="成品率%" prop="yieldRate">
<el-input v-model="formData.yieldRate" placeholder="请输入成品率%" /> <el-input-number
v-model="formData.yieldRate"
:min="0"
:max="100"
:precision="2"
class="!w-1/1"
placeholder="请输入成品率"
/>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" /> <el-input v-model="formData.remark" placeholder="请输入备注" />
@ -175,7 +182,7 @@ const resetForm = () => {
version: undefined, version: undefined,
productId: undefined, productId: undefined,
unitId: undefined, unitId: undefined,
yieldRate: undefined, yieldRate: 100,
remark: undefined, remark: undefined,
isEnable: undefined isEnable: undefined
} }

@ -9,15 +9,14 @@
> >
<el-table :data="formData" class="-mt-10px"> <el-table :data="formData" class="-mt-10px">
<el-table-column label="序号" type="index" width="100" /> <el-table-column label="序号" type="index" width="100" />
<el-table-column label="产品" min-width="150"> <el-table-column label="原料" min-width="150">
<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
v-model="row.productId" v-model="row.productId"
clearable clearable
filterable filterable
@change="onChangeProduct($event, row)" placeholder="请选择原料"
placeholder="请选择产品"
> >
<el-option <el-option
v-for="item in productList" v-for="item in productList"
@ -54,7 +53,13 @@
<el-table-column label="损耗率%" min-width="150"> <el-table-column label="损耗率%" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.yieldRate`" :rules="formRules.yieldRate" class="mb-0px!"> <el-form-item :prop="`${$index}.yieldRate`" :rules="formRules.yieldRate" class="mb-0px!">
<el-input v-model="row.yieldRate" placeholder="请输入损耗率%" /> <el-input-number
v-model="row.yieldRate"
:min="0"
:precision="2"
class="!w-1/1"
placeholder="请输入损耗率"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
@ -90,7 +95,7 @@ const props = defineProps<{
const formLoading = ref(false) // const formLoading = ref(false) //
const formData = ref([]) const formData = ref([])
const formRules = reactive({ const formRules = reactive({
productId: [{ required: true, message: '产品ID不能为空', trigger: 'blur' }], productId: [{ required: true, message: '原料不能为空', trigger: 'blur' }],
bomId: [{ required: true, message: 'BOM 不能为空', trigger: 'blur' }], bomId: [{ required: true, message: 'BOM 不能为空', trigger: 'blur' }],
usageNumber: [{ required: true, message: '用量不能为空', trigger: 'blur' }] usageNumber: [{ required: true, message: '用量不能为空', trigger: 'blur' }]
}) })
@ -100,7 +105,7 @@ const formRef = ref() // 表单 Ref
onMounted(async () => { onMounted(async () => {
// //
unitList.value = await ProductUnitApi.getProductUnitSimpleList() unitList.value = await ProductUnitApi.getProductUnitSimpleList()
productList.value = await ProductApi.getProductSimpleList() productList.value = await ProductApi.getItemSimpleList()
// //
if (formData.value.length === 0) { if (formData.value.length === 0) {
handleAdd() handleAdd()
@ -141,6 +146,7 @@ const handleAdd = () => {
isEnable: undefined isEnable: undefined
} }
row.bomId = props.bomId row.bomId = props.bomId
row.yieldRate = 0
formData.value.push(row) formData.value.push(row)
} }
@ -161,13 +167,4 @@ const getData = () => {
defineExpose({ validate, getData }) defineExpose({ validate, getData })
/** 处理产品变更 */
const onChangeProduct = (productId, row) => {
const product = productList.value.find((item) => item.id === productId)
if (product) {
// row.productUnitName = product.unitName
}
// //
// setStockCount(row)
}
</script> </script>

@ -4,8 +4,8 @@
<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="ID" align="center" prop="id" /> <el-table-column label="ID" align="center" prop="id" />
<el-table-column label="原料" align="center" prop="productName" /> <el-table-column label="原料" align="center" prop="productName" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="用量" align="center" prop="usageNumber" /> <el-table-column label="用量" align="center" prop="usageNumber" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="损耗率%" align="center" prop="yieldRate" /> <el-table-column label="损耗率%" align="center" prop="yieldRate" />
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="是否启用" align="center" prop="isEnable"> <el-table-column label="是否启用" align="center" prop="isEnable">

@ -28,23 +28,23 @@
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status"> <el-radio-group v-model="formData.status">
<el-radio label="1">请选择字典生成</el-radio> <el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.MES_PRODUCE_ITEM_REQUISITION)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="流程实例的编号" prop="processInstanceId">
<el-input v-model="formData.processInstanceId" placeholder="请输入流程实例的编号" /> <el-form-item label="计划" prop="planId">
</el-form-item>
<el-form-item label="计划ID" prop="planId">
<el-input v-model="formData.planId" placeholder="请输入计划ID" /> <el-input v-model="formData.planId" placeholder="请输入计划ID" />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" /> <el-input v-model="formData.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="isEnable">
<el-radio-group v-model="formData.isEnable">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
</el-form> </el-form>
<!-- 子表的表单 --> <!-- 子表的表单 -->
<el-tabs v-model="subTabsName"> <el-tabs v-model="subTabsName">
@ -61,6 +61,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ItemRequisitionApi, ItemRequisitionVO } from '@/api/mes/itemrequisition' import { ItemRequisitionApi, ItemRequisitionVO } from '@/api/mes/itemrequisition'
import ItemRequisitionDetailForm from './components/ItemRequisitionDetailForm.vue' import ItemRequisitionDetailForm from './components/ItemRequisitionDetailForm.vue'
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
/** 生产领料 表单 */ /** 生产领料 表单 */
defineOptions({ name: 'ItemRequisitionForm' }) defineOptions({ name: 'ItemRequisitionForm' })

@ -28,7 +28,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="创建时间" prop="deliveryDate"> <el-form-item label="领料时间" prop="deliveryDate">
<el-date-picker <el-date-picker
v-model="queryParams.deliveryDate" v-model="queryParams.deliveryDate"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
@ -42,21 +42,17 @@
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select <el-select
v-model="queryParams.status" v-model="queryParams.status"
placeholder="请选择状态" placeholder="请选择领料单状态"
clearable clearable
class="!w-240px" class="!w-240px"
> >
<el-option label="请选择字典生成" value="" /> <el-option
</el-select> v-for="dict in getIntDictOptions(DICT_TYPE.MES_PRODUCE_ITEM_REQUISITION)"
</el-form-item> :key="dict.value"
<el-form-item label="流程实例的编号" prop="processInstanceId"> :label="dict.label"
<el-input :value="dict.value"
v-model="queryParams.processInstanceId"
placeholder="请输入流程实例的编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="计划ID" prop="planId"> <el-form-item label="计划ID" prop="planId">
<el-input <el-input
@ -76,16 +72,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="isEnable">
<el-select
v-model="queryParams.isEnable"
placeholder="请选择是否启用"
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTime"> <el-form-item label="创建时间" prop="createTime">
<el-date-picker <el-date-picker
v-model="queryParams.createTime" v-model="queryParams.createTime"
@ -142,7 +129,6 @@
<el-table-column label="流程实例的编号" align="center" prop="processInstanceId" /> <el-table-column label="流程实例的编号" align="center" prop="processInstanceId" />
<el-table-column label="计划ID" align="center" prop="planId" /> <el-table-column label="计划ID" align="center" prop="planId" />
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="是否启用" align="center" prop="isEnable" />
<el-table-column <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
@ -190,6 +176,7 @@ import download from '@/utils/download'
import { ItemRequisitionApi, ItemRequisitionVO } from '@/api/mes/itemrequisition' import { ItemRequisitionApi, ItemRequisitionVO } from '@/api/mes/itemrequisition'
import ItemRequisitionForm from './ItemRequisitionForm.vue' import ItemRequisitionForm from './ItemRequisitionForm.vue'
import ItemRequisitionDetailList from './components/ItemRequisitionDetailList.vue' import ItemRequisitionDetailList from './components/ItemRequisitionDetailList.vue'
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
/** 生产领料 列表 */ /** 生产领料 列表 */
defineOptions({ name: 'ItemRequisition' }) defineOptions({ name: 'ItemRequisition' })

@ -7,18 +7,19 @@
label-width="100px" label-width="100px"
v-loading="formLoading" v-loading="formLoading"
> >
<el-form-item label="计划编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入计划编码" />
</el-form-item>
<el-form-item label="产品ID" prop="productId">
<el-input v-model="formData.productId" placeholder="请输入产品ID" />
</el-form-item>
<el-form-item label="任务单明细ID" prop="taskDetailId"> <el-form-item label="任务单明细ID" prop="taskDetailId">
<el-input v-model="formData.taskDetailId" placeholder="请输入任务单明细ID" /> <el-input v-model="formData.taskDetailId" placeholder="请输入任务单明细ID" />
</el-form-item> </el-form-item>
<el-form-item label="任务单ID" prop="taskId"> <el-form-item label="任务单ID" prop="taskId">
<el-input v-model="formData.taskId" placeholder="请输入任务单ID" /> <el-input v-model="formData.taskId" placeholder="请输入任务单ID" />
</el-form-item> </el-form-item>
<el-form-item label="计划编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入计划编码" />
</el-form-item>
<el-form-item label="产品ID" prop="productId">
<el-input v-model="formData.productId" placeholder="请输入产品ID" />
</el-form-item>
<el-form-item label="数量" prop="planNumber"> <el-form-item label="数量" prop="planNumber">
<el-input v-model="formData.planNumber" placeholder="请输入数量" /> <el-input v-model="formData.planNumber" placeholder="请输入数量" />
</el-form-item> </el-form-item>

@ -8,43 +8,43 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="计划编码" prop="code">
<el-form-item label="任务单ID" prop="taskId">
<el-input <el-input
v-model="queryParams.code" v-model="queryParams.taskId"
placeholder="请输入计划编码" placeholder="请输入任务单ID"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="产品ID" prop="productId"> <el-form-item label="任务单明细ID" prop="taskDetailId">
<el-input <el-input
v-model="queryParams.productId" v-model="queryParams.taskDetailId"
placeholder="请输入产品ID" placeholder="请输入任务单明细ID"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="任务单明细ID" prop="taskDetailId"> <el-form-item label="计划编码" prop="code">
<el-input <el-input
v-model="queryParams.taskDetailId" v-model="queryParams.code"
placeholder="请输入任务单明细ID" placeholder="请输入计划编码"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="任务单ID" prop="taskId"> <el-form-item label="产品ID" prop="productId">
<el-input <el-input
v-model="queryParams.taskId" v-model="queryParams.productId"
placeholder="请输入任务单ID" placeholder="请输入产品ID"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select <el-select
v-model="queryParams.status" v-model="queryParams.status"
@ -122,21 +122,6 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="isEnable">
<el-select
v-model="queryParams.isEnable"
placeholder="请选择是否启用"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>

@ -7,17 +7,51 @@
label-width="100px" label-width="100px"
v-loading="formLoading" v-loading="formLoading"
> >
<el-form-item label="产品ID" prop="productId"> <el-form-item label="产品" prop="productId">
<el-input v-model="formData.productId" placeholder="请输入产品ID" /> <el-select
v-model="formData.productId"
clearable
filterable
placeholder="请选择产品"
>
<el-option
v-for="item in productList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="单位ID" prop="unitId"> <el-form-item label="单位" prop="unitId">
<el-input v-model="formData.unitId" placeholder="请输入单位ID" /> <el-select
v-model="formData.unitId"
clearable
filterable
placeholder="请选择产品"
>
<el-option
v-for="item in unitList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="数量" prop="number"> <el-form-item label="数量" prop="number">
<el-input v-model="formData.number" placeholder="请输入数量" /> <el-input-number
v-model="formData.number"
:min="0"
class="!w-1/1"
placeholder="请输入数量"
/>
</el-form-item> </el-form-item>
<el-form-item label="打包要求(每包/个)" prop="packageSize"> <el-form-item label="打包要求(每包/个)" prop="packageSize">
<el-input v-model="formData.packageSize" placeholder="请输入打包要求(每包/个)" /> <el-input-number
v-model="formData.packageSize"
:min="0"
class="!w-1/1"
placeholder="请输入打包要求(每包/个)"
/>
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入项目名称" /> <el-input v-model="formData.projectName" placeholder="请输入项目名称" />
@ -37,7 +71,11 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { TaskApi } from '@/api/mes/task' import { TaskApi } from '@/api/mes/task'
import { ProductUnitApi, ProductUnitVO } from '@/api/erp/product/unit'
import {ProductApi, ProductVO} from "@/api/erp/product/product";
const unitList = ref<ProductUnitVO[]>([]) //
const productList = ref<ProductVO[]>([]) //
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -81,6 +119,9 @@ const open = async (type: string, id?: number, taskId: number) => {
formLoading.value = false formLoading.value = false
} }
} }
//
unitList.value = await ProductUnitApi.getProductUnitSimpleList()
productList.value = await ProductApi.getProductSimpleList()
} }
defineExpose({ open }) // open defineExpose({ open }) // open

@ -11,8 +11,8 @@
</el-button> </el-button>
<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="ID" align="center" prop="id" /> <el-table-column label="ID" align="center" prop="id" />
<el-table-column label="产品ID" align="center" prop="productId" /> <el-table-column label="产品" align="center" prop="productName" />
<el-table-column label="单位ID" align="center" prop="unitId" /> <el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="数量" align="center" prop="number" /> <el-table-column label="数量" align="center" prop="number" />
<el-table-column label="打包要求(每包/个)" align="center" prop="packageSize" /> <el-table-column label="打包要求(每包/个)" align="center" prop="packageSize" />
<el-table-column label="项目名称" align="center" prop="projectName" /> <el-table-column label="项目名称" align="center" prop="projectName" />

Loading…
Cancel
Save