fix item requisition

main
chenshuichuan 2 years ago
parent fd1bfb88c2
commit 3e799c4535

@ -1,4 +1,5 @@
import request from '@/config/axios'
import {ItemRequisitionVO} from "@/api/mes/itemrequisition";
// 生产计划 VO
export interface PlanVO {
@ -56,5 +57,13 @@ export const PlanApi = {
// 批量新增生产计划
saveBatchPlan: async (data: any) => {
return await request.post({ url: `/mes/plan/saveBatchPlan`, data })
}
},
// 派工生产计划
arrangePlan: async (data: ItemRequisitionVO) => {
return await request.put({ url: `/mes/plan/paigong`, data })
},
// 更新状态生产计划
updatePlanStatus: async (data: PlanVO) => {
return await request.put({ url: `/mes/plan/updateStatus`, data })
},
}

@ -10,20 +10,12 @@
<el-form-item label="编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入编码" />
</el-form-item>
<el-form-item label="下料时间" prop="requisitionDate">
<el-form-item label="计划下料" prop="requisitionDate">
<el-date-picker
v-model="formData.requisitionDate"
type="date"
value-format="x"
placeholder="选择下料时间"
/>
</el-form-item>
<el-form-item label="创建时间" prop="deliveryDate">
<el-date-picker
v-model="formData.deliveryDate"
type="date"
value-format="x"
placeholder="选择创建时间"
placeholder="选择计划下料时间"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
@ -39,7 +31,7 @@
</el-form-item>
<el-form-item label="计划" prop="planId">
<el-input v-model="formData.planId" placeholder="请输入计划ID" />
<el-input v-model="formData.planId" placeholder="请输入计划" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />

@ -9,17 +9,17 @@
>
<el-table :data="formData" class="-mt-10px">
<el-table-column label="序号" type="index" width="100" />
<el-table-column label="产品ID" min-width="150">
<el-table-column label="产品" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!">
<el-input v-model="row.productId" placeholder="请输入产品ID" />
<el-input v-model="row.productId" placeholder="请输入产品" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="单位ID" min-width="150">
<el-table-column label="单位" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.unitId`" :rules="formRules.unitId" class="mb-0px!">
<el-input v-model="row.unitId" placeholder="请输入单位ID" />
<el-input v-model="row.unitId" placeholder="请输入单位" />
</el-form-item>
</template>
</el-table-column>

@ -2,10 +2,10 @@
<!-- 列表 -->
<ContentWrap>
<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="productId" />
<el-table-column label="单位ID" align="center" prop="unitId" />
<el-table-column label="数量" align="center" prop="number" />
<el-table-column label="原料" align="center" prop="productName" />
<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="remark" />
</el-table>
</ContentWrap>
@ -42,4 +42,4 @@ const handleQuery = () => {
onMounted(() => {
getList()
})
</script>
</script>

@ -17,7 +17,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="下料时间" prop="requisitionDate">
<el-form-item label="计划下料" prop="requisitionDate">
<el-date-picker
v-model="queryParams.requisitionDate"
value-format="YYYY-MM-DD HH:mm:ss"
@ -28,17 +28,6 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="领料时间" prop="deliveryDate">
<el-date-picker
v-model="queryParams.deliveryDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
@ -54,15 +43,15 @@
/>
</el-select>
</el-form-item>
<el-form-item label="计划ID" prop="planId">
<el-input
v-model="queryParams.planId"
placeholder="请输入计划ID"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<!-- <el-form-item label="计划" prop="planId">-->
<!-- <el-input-->
<!-- v-model="queryParams.planId"-->
<!-- placeholder="请输入计划"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
@ -87,14 +76,14 @@
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['mes:item-requisition:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- @click="openForm('create')"-->
<!-- v-hasPermi="['mes:item-requisition:create']"-->
<!-- >-->
<!-- <Icon icon="ep:plus" class="mr-5px" /> 新增-->
<!-- </el-button>-->
<el-button
type="success"
plain
@ -121,14 +110,29 @@
</el-tabs>
</template>
</el-table-column>
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="编码" align="center" prop="code" />
<el-table-column label="下料时间" align="center" prop="requisitionDate" />
<el-table-column label="创建时间" align="center" prop="deliveryDate" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="流程实例的编号" align="center" prop="processInstanceId" />
<el-table-column label="计划ID" align="center" prop="planId" />
<el-table-column label="编码" align="center" prop="code" min-width="160px" />
<el-table-column label="计划" align="center" prop="planCode" min-width="160px" />
<el-table-column label="状态" align="center" prop="status" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_PRODUCE_ITEM_REQUISITION" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column
label="计划下料"
align="center"
prop="requisitionDate"
:formatter="dateFormatter2"
width="180px"
/>
<el-table-column
label="实际下料"
align="center"
prop="deliveryDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column
label="创建时间"
align="center"
@ -171,7 +175,7 @@
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import {dateFormatter, dateFormatter2} from '@/utils/formatTime'
import download from '@/utils/download'
import { ItemRequisitionApi, ItemRequisitionVO } from '@/api/mes/itemrequisition'
import ItemRequisitionForm from './ItemRequisitionForm.vue'

@ -0,0 +1,121 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item v-show="false" label="计划" prop="planId">
<el-input v-model="formData.planId" placeholder="请输入计划ID" />
</el-form-item>
<el-form-item label="领料人" prop="planId">
<el-input v-model="formData.workerId" placeholder="请输入领料人" />
</el-form-item>
<el-form-item label="计划下料" prop="requisitionDate">
<el-date-picker
v-model="formData.requisitionDate"
type="date"
value-format="x"
placeholder="选择下料时间"
/>
</el-form-item>
<!-- <el-form-item label="实际下料时间" prop="deliveryDate">-->
<!-- <el-date-picker-->
<!-- v-model="formData.deliveryDate"-->
<!-- type="date"-->
<!-- value-format="x"-->
<!-- placeholder="选择实际下料时间"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { ItemRequisitionApi, ItemRequisitionVO } from '@/api/mes/itemrequisition'
import {PlanApi} from "@/api/mes/plan";
/** 生产领料 表单 */
defineOptions({ name: 'Paigong' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formData = ref({
requisitionDate: undefined,
deliveryDate: undefined,
planId: undefined,
workerId: undefined,
remark: undefined
})
const formRules = reactive({
planId: [{ required: true, message: '计划不能为空', trigger: 'blur' }],
workerId: [{ required: true, message: '下料工人不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (planCode: string, planId: number) => {
dialogVisible.value = true
dialogTitle.value = "计划派工:"+planCode
resetForm()
formLoading.value = true
try {
formData.value.planId = planId
} finally {
formLoading.value = false
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as ItemRequisitionVO
await PlanApi.arrangePlan(data)
message.success("派工成功!")
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
requisitionDate: undefined,
deliveryDate: undefined,
workerId: undefined,
planId: undefined,
remark: undefined
}
formRef.value?.resetFields()
}
</script>

@ -160,21 +160,6 @@
:formatter="dateFormatter"
width="180px"
/>
<!-- <el-table-column-->
<!-- label="实际开始时间"-->
<!-- align="center"-->
<!-- prop="startTime"-->
<!-- :formatter="dateFormatter"-->
<!-- width="180px"-->
<!-- />-->
<!-- <el-table-column-->
<!-- label="实际结束时间"-->
<!-- align="center"-->
<!-- prop="endTime"-->
<!-- :formatter="dateFormatter"-->
<!-- width="180px"-->
<!-- />-->
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" fixed="right" width="250">
@ -184,6 +169,7 @@
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['mes:plan:update']"
v-if="scope.row.status === 0"
>
编辑
</el-button>
@ -198,24 +184,36 @@
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
@click="openPaiForm(scope.row.code, scope.row.id)"
v-hasPermi="['mes:plan:update']"
v-if="scope.row.status === 0"
>
派工
</el-button>
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
@click="handleStatus(scope.row.code, scope.row.id, 'start',2,'开工')"
v-hasPermi="['mes:plan:update']"
v-if="scope.row.status === 1"
>
开工
</el-button>
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
@click="handleStatus(scope.row.code,scope.row.id, 'pause',3,'暂停')"
v-hasPermi="['mes:plan:update']"
v-if="scope.row.status === 2"
>
暂停
</el-button>
<el-button
link
type="primary"
@click="handleStatus(scope.row.code, scope.row.id, 'end',4,'完工')"
v-hasPermi="['mes:plan:update']"
v-if="scope.row.status === 2 || scope.row.status === 3"
>
完工
</el-button>
@ -224,6 +222,7 @@
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['mes:plan:delete']"
v-if="scope.row.status === 0 || scope.row.status === 3"
>
删除
</el-button>
@ -243,6 +242,9 @@
<PlanForm ref="formRef" @success="getList" />
<!-- 物料列表 -->
<ItemNeedIndex ref="itemFormRef" @success="getList" />
<!-- 派工弹出 -->
<Paigong ref="paiFormRef" @success="getList" />
</template>
<script setup lang="ts">
@ -254,6 +256,7 @@ import PlanForm from './PlanForm.vue'
import {ProductApi, ProductVO} from "@/api/erp/product/product";
import {TaskApi, TaskVO} from "@/api/mes/task";
import ItemNeedIndex from "@/views/mes/bom/ItemNeedIndex.vue";
import Paigong from "./components/Paigong.vue";
const productList = ref<ProductVO[]>([]) //
const taskList = ref<TaskVO[]>([]) //
@ -365,4 +368,29 @@ const itemFormRef = ref()
const openItemNeed = (planCode:string, planId: number) => {
itemFormRef.value.open("plan","计划-"+planCode, planId)
}
/** 派工 */
const paiFormRef = ref()
const openPaiForm = (planCode: string, planId: number) => {
paiFormRef.value.open(planCode, planId)
}
/** 开工 */
const handleStatus = async (planCode:string, id: number,
type:string, status:number, tip:string) => {
try {
//
await message.confirm("计划:"+planCode+"确定"+tip+"吗?",planCode)
//
const data ={
id: id,
code: type,
status: status //
}
await PlanApi.updatePlanStatus(data)
message.success(t('common.success'))
//
await getList()
} catch {}
}
</script>

Loading…
Cancel
Save