main
chenshuichuan 2 years ago
parent 15f0877a99
commit e6a88d23d3

@ -11,6 +11,7 @@ export interface PlanVO {
productName: number // 产品
taskCode: number // 任务单
planNumber: number // 数量
reyaNumber: number // 数量
finishNumber: number // 成品数量
status: number // 状态
planStartTime: Date // 计划开始时间

@ -123,13 +123,6 @@
</template>
</el-table-column>
<el-table-column label="出入库单号" align="center" prop="bizNo" width="200" />
<el-table-column
label="出入库日期"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column
label="出入库数量"
align="center"
@ -142,6 +135,20 @@
prop="totalCount"
:formatter="erpCountTableColumnFormatter"
/>
<!-- <el-table-column-->
<!-- label="出入库日期"-->
<!-- align="center"-->
<!-- prop="createTime"-->
<!-- :formatter="dateFormatter"-->
<!-- width="180px"-->
<!-- />-->
<el-table-column
label="创建日期"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作人" align="center" prop="creatorName" />
</el-table>
<!-- 分页 -->

@ -8,7 +8,7 @@
<el-table-column label="已下料" align="center" prop="finishNumber" width="120px"/>
<el-table-column label="进度" align="center" >
<template #default="scope">
<el-progress :percentage="(scope.row.finishNumber/scope.row.number)*100" :stroke-width="15" striped striped-flow />
<el-progress :percentage="erpPriceInputFormatter((scope.row.finishNumber/scope.row.number)*100)" :stroke-width="15" striped striped-flow />
</template>
</el-table-column>
<el-table-column label="操作" align="center"/>
@ -18,6 +18,7 @@
<script setup lang="ts">
import { ItemRequisitionApi } from '@/api/mes/itemrequisition'
import {DICT_TYPE} from "@/utils/dict";
import {erpPriceInputFormatter} from "@/utils";
const { t } = useI18n() //
const message = useMessage() //

@ -17,17 +17,7 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="父级装备" prop="parentId">
<el-input
v-model="queryParams.parentId"
placeholder="请输入父级装备"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="装备SN号" prop="serialCode">
<el-form-item label="SN号" prop="serialCode">
<el-input
v-model="queryParams.serialCode"
placeholder="请输入装备SN号"
@ -57,15 +47,6 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
@ -96,21 +77,6 @@
/>
</el-select>
</el-form-item>
<el-form-item label="机台类型" prop="machineType">
<el-select
v-model="queryParams.machineType"
placeholder="类型"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.MES_ORG_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<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>
@ -152,7 +118,7 @@
<el-tab-pane label="品检" name="pinjian" />
<el-tab-pane label="打包" name="dabao" />
<el-tab-pane label="贴标" name="tiebiao" />
<el-tab-pane label="品印" name="pinjian" />
<el-tab-pane label="品印" name="pinyin" />
<el-tab-pane label="塑封" name="sufeng" />
</el-tabs>
@ -343,7 +309,7 @@ onMounted(() => {
/** tab 切换 */
let activeName = ''
const handleTabClick = (tab: TabsPaneContext) => {
queryParams.orgType = tab.paneName
queryParams.machineType = tab.paneName
handleQuery()
}
</script>

@ -83,7 +83,7 @@
<el-tab-pane label="品检" name="pinjian" />
<el-tab-pane label="打包" name="dabao" />
<el-tab-pane label="贴标" name="tiebiao" />
<el-tab-pane label="品印" name="pinjian" />
<el-tab-pane label="品印" name="pinyin" />
<el-tab-pane label="塑封" name="sufeng" />
</el-tabs>
@ -102,7 +102,7 @@
@current-change="handleCurrentChange"
>
<el-table-column align="center" label="组织名称" prop="name" width="180px"/>
<el-table-column align="center" label="关联机台" prop="machineName" />
<!-- <el-table-column align="center" label="关联机台" prop="machineName" />-->
<el-table-column align="center" label="组织等级" prop="orgClass">
<template #default="scope">
<dict-tag v-if="notEmpty(scope.row.orgClass)" :type="DICT_TYPE.MES_ORG_CLASS" :value="scope.row.orgClass" />

@ -38,7 +38,7 @@
value-format="YYYY-MM-DD HH:mm:ss"
type="dates"
placeholder="请选择工作日期"
class="!w-300px"
/>
</el-form-item>
<el-form-item v-if="formData.groupType && formData.orgId " label="工人" prop="workerId">
@ -47,7 +47,7 @@
clearable
filterable
placeholder="请选择工人"
class="!w-240px"
>
<el-option
v-for="item in userList"

@ -123,7 +123,7 @@
<el-tab-pane label="品检" name="pinjian" />
<el-tab-pane label="打包" name="dabao" />
<el-tab-pane label="贴标" name="tiebiao" />
<el-tab-pane label="品印" name="pinjian" />
<el-tab-pane label="品印" name="pinyin" />
<el-tab-pane label="塑封" name="sufeng" />
</el-tabs>
<el-table

@ -14,7 +14,6 @@
:props="defaultProps"
check-strictly
default-expand-all
@change="handleSelectChange"
placeholder="请选择工位"
/>
@ -40,7 +39,7 @@
class="!w-300px"
/>
</el-form-item>
<el-form-item v-if="formData.groupType && formData.orgId " label="工人" prop="workerId">
<el-form-item v-if="formData.groupType" label="工人" prop="workerId">
<el-select
v-model="formData.workerId"
clearable
@ -166,10 +165,13 @@ const getOrganizationTree = async () => {
/** 工序类型变化,可选负责人跟着变化 */
const handleSelectChange = async () => {
if(formData.value.orgId && formData.value.groupType){
// if(formData.value.orgId && formData.value.groupType){
// //
// userList.value = await WorkTeamApi.getUserList2(formData.value.orgId, formData.value.groupType)
// }
if(formData.value.groupType){
//
userList.value = await WorkTeamApi.getUserList2(formData.value.orgId, formData.value.groupType)
userList.value = await WorkTeamApi.getUserList2(1, formData.value.groupType)
}
}
</script>

@ -110,7 +110,7 @@
<el-tab-pane label="品检" name="pinjian" />
<el-tab-pane label="打包" name="dabao" />
<el-tab-pane label="贴标" name="tiebiao" />
<el-tab-pane label="品印" name="pinjian" />
<el-tab-pane label="品印" name="pinyin" />
<el-tab-pane label="塑封" name="sufeng" />
<el-tab-pane label="制浆" name="zhijiang" />
</el-tabs>

@ -44,10 +44,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="计划数量" prop="planNumber">
<el-input-number v-model="formData.planNumber" :min="0" :precision="2" class="!w-1/1"/>
<el-form-item label="成型数量" prop="planNumber">
<el-input-number v-model="formData.planNumber" :min="0" class="!w-1/1"/>
</el-form-item>
<el-form-item label="热压数量" prop="reyaNumber">
<el-input-number v-model="formData.reyaNumber" :min="0" class="!w-1/1"/>
</el-form-item>
<el-form-item label="计划开始" prop="planStartTime">
<el-date-picker
v-model="formData.planStartTime"
@ -67,7 +69,7 @@
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
<el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
@ -105,6 +107,7 @@ const formData = ref({
taskDetailId: undefined,
taskId: undefined,
planNumber: undefined,
reyaNumber: undefined,
finishNumber: undefined,
status: undefined,
planStartTime: undefined,
@ -118,7 +121,8 @@ const formData = ref({
const formRules = reactive({
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }],
taskId: [{ required: true, message: '任务单不能为空', trigger: 'blur' }],
planNumber: [{ required: true, message: '计划数量不能为空', trigger: 'blur' }],
planNumber: [{ required: true, message: '成型数量不能为空', trigger: 'blur' }],
reyaNumber: [{ required: true, message: '热压数量不能为空', trigger: 'blur' }],
planStartTime: [{ required: true, message: '计划开始时间不能为空', trigger: 'blur' }],
planEndTime: [{ required: true, message: '计划结束时间不能为空', trigger: 'blur' }],
})
@ -126,7 +130,7 @@ const formRef = ref() // 表单 Ref
/** 打开弹窗 */
const open = async (type: string, id?: number,
taskId?: number, productId?: number, number?: number) => {
taskId?: number, productId?: number, number?: number, taskDetailId?:number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
@ -135,8 +139,13 @@ const open = async (type: string, id?: number,
formData.value.taskId = taskId
if(productId)
formData.value.productId = productId
if(number)
if(number){
formData.value.planNumber = number
formData.value.reyaNumber = number
}
if(taskDetailId){
formData.value.taskDetailId = taskDetailId
}
if(type==='update'){
editDisable.value = true
}

@ -150,9 +150,10 @@
</template>
</el-table-column>
<el-table-column label="计划编码" align="center" prop="code" min-width="150px" />
<el-table-column label="产品" align="center" prop="productName" min-width="150px" sortable/>
<el-table-column label="产品" align="center" prop="productName" min-width="200px" sortable/>
<el-table-column label="任务单" align="center" prop="taskCode" min-width="150px" />
<el-table-column label="数量" align="center" prop="planNumber" />
<el-table-column label="成型数量" align="center" prop="planNumber" />
<el-table-column label="热压数量" align="center" prop="reyaNumber" />
<el-table-column label="状态" align="center" prop="status" sortable>
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_PLAN_STATUS" :value="scope.row.status" />

@ -87,7 +87,7 @@
<el-tab-pane label="品检" name="pinjian" />
<el-tab-pane label="打包" name="dabao" />
<el-tab-pane label="贴标" name="tiebiao" />
<el-tab-pane label="品印" name="pinjian" />
<el-tab-pane label="品印" name="pinyin" />
<el-tab-pane label="塑封" name="sufeng" />
</el-tabs>

@ -64,22 +64,22 @@
<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:produce-report-detail:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 报工
</el-button>
<el-button
type="warning"
plain
@click="openReplaceForm('replace')"
v-hasPermi="['mes:produce-report-detail:replace']"
>
<Icon icon="ep:plus" class="mr-5px" /> 代报工
</el-button>
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- @click="openForm('create')"-->
<!-- v-hasPermi="['mes:produce-report-detail:create']"-->
<!-- >-->
<!-- <Icon icon="ep:plus" class="mr-5px" /> 报工-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- @click="openReplaceForm('replace')"-->
<!-- v-hasPermi="['mes:produce-report-detail:replace']"-->
<!-- >-->
<!-- <Icon icon="ep:plus" class="mr-5px" /> 代报工-->
<!-- </el-button>-->
<el-button
type="success"
plain
@ -121,8 +121,8 @@
<el-table-column label="成品率%" align="center" prop="qualityRate" :formatter="erpCountTableColumnFormatter"/>
<el-table-column label="打包数量" align="center" prop="packageNumber" />
<el-table-column label="总时长" align="center" prop="totalTime" />
<el-table-column label="计件时长" align="center" prop="reportTime" />
<!-- <el-table-column label="总时长" align="center" prop="totalTime" />-->
<!-- <el-table-column label="计件时长" align="center" prop="reportTime" />-->
<el-table-column label="废品原因" align="center" prop="wasteReason" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="类型" align="center" fixed="right" prop="reportType" width="90px">

@ -10,7 +10,7 @@
>
<el-table :data="formData" class="-mt-10px" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="序号" type="index" width="60" />
<el-table-column disabled label="计划编码" min-width="170">
<el-table-column disabled label="计划编码" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.code`" :rules="formRules.code" class="mb-0px!">
<el-input disabled v-model="row.code" placeholder="请输入计划编码" />
@ -27,14 +27,20 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="数量" min-width="120">
<el-table-column label="成型数量" min-width="120">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.planNumber`" :rules="formRules.planNumber" class="mb-0px!">
<el-input v-model="row.planNumber" placeholder="请输入数量" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="热压数量" min-width="120">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.reyaNumber`" :rules="formRules.reyaNumber" class="mb-0px!">
<el-input v-model="row.planNumber" placeholder="请输入数量" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="sort_date" sortable label="计划开始时间" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.planStartTime`" :rules="formRules.planStartTime" class="mb-0px!">
@ -60,7 +66,7 @@
</template>
</el-table-column>
<el-table-column label="备注" min-width="150">
<el-table-column label="备注" min-width="250">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" :rules="formRules.remark" class="mb-0px!">
<el-input v-model="row.remark" placeholder="" />
@ -94,7 +100,7 @@ const formData = ref([])
const formRules = reactive({
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }],
taskId: [{ required: true, message: '任务单不能为空', trigger: 'blur' }],
planNumber: [{ required: true, message: '数量不能为空', trigger: 'blur' }],
planNumber: [{ required: true, message: '成型数量不能为空', trigger: 'blur' }],
planStartTime: [{ required: true, message: '计划开始时间不能为空', trigger: 'blur' }],
planEndTime: [{ required: true, message: '计划结束时间不能为空', trigger: 'blur' }],
@ -143,6 +149,7 @@ const handleCopy = (row) => {
productId: undefined,
productName: undefined,
planNumber: undefined,
reyaNumber: undefined,
planStartTime: undefined,
planEndTime: undefined,
remark: undefined,
@ -156,6 +163,7 @@ const handleCopy = (row) => {
newRow.planStartTime = row.planStartTime
newRow.planEndTime = row.planEndTime
newRow.planNumber= row.planNumber
newRow.reyaNumber= row.reyaNumber
newRow.productName = row.productName
newRow.priorityNum = 1
formData.value.push(newRow)

@ -1,5 +1,5 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1300px" v-loading="formLoading">
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1400px" v-loading="formLoading">
<el-form
ref="formRef"
:model="formData"
@ -92,6 +92,7 @@ const formLoading = ref(false) // 表单的加载中1修改时的数据加
const formData = ref({
taskId: undefined,
taskDetailId: undefined,
taskCode: undefined,
sizeOfPlan: 0,
productsOfPlan: 20000,
@ -111,17 +112,16 @@ const subTabsName = ref('plan')
const planFormRef = ref()
/** 打开弹窗 */
const open = async (taskDetailId: number, productId: number, productName:string, num:number,finishNumber:number) => {
const open = async (taskId: number, taskDetailId: number, productId: number, productName:string, num:number,finishNumber:number) => {
dialogVisible.value = true
dialogTitle.value = "产品排产:" + productName
formData.value.taskId = taskDetailId
formData.value.taskId = taskId
formData.value.taskDetailId = taskDetailId
formData.value.taskCode = productName
formData.value.number = num
formData.value.planNumber = 0
if(num){
if(finishNumber)
formData.value.planNumber = num-finishNumber
if(num>-1 && finishNumber>-1){
formData.value.planNumber = num-finishNumber
}
}
defineExpose({open}) // open

@ -96,12 +96,12 @@
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="工厂完成" prop="finishDate">
<el-form-item label="交货日期" prop="finishDate">
<el-date-picker
v-model="formData.finishDate"
type="date"
value-format="x"
placeholder="选择工厂完成日期"
placeholder="选择交货日期"
/>
</el-form-item>
</el-col>
@ -190,6 +190,9 @@ const open = async (type: string, id?: number, taskId: number) => {
formLoading.value = true
try {
formData.value = await TaskApi.getTaskDetail(id)
if(formData.value.remark === null || formData.value.remark === undefined){
formData.value.remark =''
}
} finally {
formLoading.value = false
}

@ -10,25 +10,24 @@
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="产品" align="center" prop="productName" width="140px" sortable/>
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="数量" align="center" prop="number" />
<el-table-column label="产品" prop="productName" width="220px" sortable/>
<!-- <el-table-column label="单位" align="center" prop="unitName" />-->
<el-table-column label="数量/个" align="center" prop="number" />
<el-table-column label="已计划" align="center" prop="planNumber" />
<el-table-column label="每包/个" align="center" prop="packageSize" />
<!-- <el-table-column label="每包/个" align="center" prop="packageSize" />-->
<el-table-column label="交货日期" align="center" prop="finishDate" :formatter="dateFormatter2"/>
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="技术要求" align="center" prop="techRequirements" />
<el-table-column label="备注" align="center" prop="remark" >
<template #default="scope">
<el-link @click="openFormView('detail', scope.row.id)" v-if="scope.row.remark" type="warning">
查看详情
</el-link>
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center" prop="remark" >-->
<!-- <template #default="scope">-->
<!-- <el-link @click="openFormView('detail', scope.row.id)" v-if="scope.row.remark" type="warning">-->
<!-- 查看详情-->
<!-- </el-link>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="订单单号" align="center" prop="saleOrderCode" />-->
<el-table-column label="操作" align="center" width="250px">
<el-table-column label="操作" align="center" width="300px">
<template #default="scope">
<el-button
link
@ -43,11 +42,19 @@
>
物料
</el-button>
<el-button
link
type="warning"
@click="addPlanForm(scope.row.taskId,scope.row.id, scope.row.productId, scope.row.number-scope.row.planNumber)"
v-hasPermi="['mes:task:plan']"
>
新增计划
</el-button>
<el-button
v-if="props.taskStatus>1"
link
type="success"
@click="openTaskPlanForm(scope.row.id, scope.row.productId, scope.row.productName, scope.row.number, scope.row.planNumber)"
@click="openTaskPlanForm(scope.row.taskId,scope.row.id, scope.row.productId, scope.row.productName, scope.row.number, scope.row.planNumber)"
v-hasPermi="['mes:task:plan']"
>
排产
@ -88,7 +95,8 @@
<ItemNeedIndex ref="itemNeedFormRef" @success="getList" />
<!-- 排程弹窗 -->
<TaskPlanForm ref="taskPlanFormRef" @success="getList" />
<!-- 新增计划表单弹窗添加 -->
<PlanForm ref="planFormRef" @success="getList" />
</template>
<script setup lang="ts">
import {dateFormatter, dateFormatter2} from '@/utils/formatTime'
@ -97,6 +105,7 @@ import TaskDetailForm from './TaskDetailForm.vue'
import TaskDetailView from './TaskDetailView.vue'
import ItemNeedIndex from "@/views/mes/bom/ItemNeedIndex.vue";
import TaskPlanForm from "@/views/mes/task/components/PlanPlan.vue";
import PlanForm from "@/views/mes/plan/PlanForm.vue";
const { t } = useI18n() //
const message = useMessage() //
@ -183,9 +192,21 @@ const openItemNeed = (productName:string, productId: number, number:number) => {
number = number>0 ? number : 0;
itemNeedFormRef.value.open("product",productName, productId, number)
}
/** 添加/修改操作 */
const planFormRef = ref()
const addPlanForm = (taskId: number,taskDetailId: number, productId: number, number?: number) => {
if (!props.taskId) {
message.error('请选择一个生产任务单')
return
}
planFormRef.value.open("create",null,taskId, productId, number, taskDetailId)
}
/** 单个计划排产 */
const taskPlanFormRef = ref()
const openTaskPlanForm = (taskDetailId: number, productId: number, productName:string, num:number,finishNumber:number) => {
taskPlanFormRef.value.open(taskDetailId,productId, productName, num, finishNumber )
const openTaskPlanForm = (taskId:number, taskDetailId: number, productId: number,
productName:String, num:number, planNumber:number) => {
taskPlanFormRef.value.open(taskId,taskDetailId,productId, productName, num, planNumber )
}
</script>

@ -72,6 +72,7 @@
<el-tab-pane label="所有" name="" />
<el-tab-pane label="白班" name="1" />
<el-tab-pane label="夜班" name="2" />
<el-tab-pane label="长白班" name="3" />
</el-tabs>
<el-table
v-loading="loading"
@ -172,6 +173,7 @@ const queryParams = reactive({
teamName: undefined,
teamLeaderId: undefined,
teamType: undefined,
groupType: undefined,
remark: undefined,
isEnable: undefined,
createTime: [],
@ -250,7 +252,7 @@ onMounted(() => {
/** tab 切换 */
let activeName = ''
const handleTabClick = (tab: TabsPaneContext) => {
queryParams.status = tab.paneName
queryParams.groupType = tab.paneName
handleQuery()
}
</script>

Loading…
Cancel
Save