master
zhaoxiaolin 12 months ago
parent 67e18ea1f2
commit 096fe84a27

@ -135,9 +135,9 @@ export function getMesListEquip(query) {
});
}
//报工按钮
export function reportSap(reportCode) {
export function reportSap(workorderCode) {
const data = {
reportCode
workorderCode
}
return request({
url: '/mes/reportWork/reportSap',
@ -174,3 +174,30 @@ export function getBatchList(workorderCode) {
data: data
});
}
// 查询报工详细列表
export function getReportList(query) {
return request({
url: '/mes/reportWork/getReportList',
method: 'get',
params: query
});
}
// 提交报工详细列表
export function submitReportPS(data) {
return request({
url: '/mes/reportWork/submitReportPS',
method: 'post',
data: data
});
}
// 查询物料管理列表
export function getPrepareList(query) {
return request({
url: '/mes/reportWork/getPrepareList',
method: 'get',
params: query
});
}

@ -51,3 +51,29 @@ export function delReportWorkConsume(recordId) {
method: 'delete'
});
}
// 查询报工物料损耗详细列表
export function getConsumeList(query) {
return request({
url: '/mes/reportWorkConsume/getConsumeList',
method: 'get',
params: query
});
}
// 提交报工物料损耗详细列表
export function submitConsumePS(data) {
return request({
url: '/mes/reportWorkConsume/submitConsumePS',
method: 'post',
data: data
});
}
/**提交报工信息**/
export function submitReportInfo(data) {
return request({
url: '/mes/reportWorkConsume/submitReportInfo',
method: 'post',
data: data
});
}

@ -1,14 +1,6 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
<el-form-item label="报工单编号" prop="reportCode">
<el-input
v-model="queryParams.reportCode"
placeholder="请输入报工单编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="生产订单编码" prop="orderCode">
<el-input
v-model="queryParams.orderCode"
@ -62,16 +54,6 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTimeArray">
<el-date-picker
v-model="queryParams.createTimeArray"
format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -89,7 +71,7 @@
v-hasPermi="['mes:reportWork:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<!--<el-col :span="1.5">
<el-button
type="success"
plain
@ -110,29 +92,41 @@
@click="handleDelete"
v-hasPermi="['mes:reportWork:remove']"
>删除</el-button>
</el-col>
</el-col>-->
<el-col :span="1.5">
<el-button
type="primary"
type="success"
plain
icon="el-icon-s-claim"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleReport"
v-hasPermi="['mes:reportWork:edit']"
>报工SAP</el-button>
@click="handleReportHz"
v-hasPermi="['mes:reportWork:report']"
>报工详情</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
type="danger"
plain
icon="el-icon-s-release"
size="mini"
:disabled="single"
@click="handleReportConsume"
@click="handleConsumeHz"
v-hasPermi="['mes:reportWork:report']"
>报工损耗</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-s-claim"
size="mini"
:disabled="single"
@click="handleReport"
v-hasPermi="['mes:reportWork:edit']"
>物料损耗</el-button>
>报工SAP</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
@ -148,52 +142,29 @@
<el-table v-loading="loading" :data="reportWorkList" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" />
<el-table-column label="报工单编号" align="center" prop="reportCode" width="120">
<el-table-column label="工单编码" align="center" prop="workorderCode" width="130">
<template slot-scope="scope">
<el-button
type="text"
@click="handleView(scope.row)"
>{{scope.row.reportCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="报工类型" align="center" prop="reportType" width="100">
<template slot-scope="scope">
<dict-tag :options="dict.type.report_type" :value="scope.row.reportType"/>
@click="handleReportHz(scope.row)"
>{{scope.row.workorderCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="工单编码" align="center" prop="workorderCode" width="130"/>
<el-table-column label="产品编码" align="center" prop="productCode" width="130"
:formatter="productCodeFormate"
/>
<el-table-column label="线体编码" align="center" prop="machineCode" />
<el-table-column label="线体名称" align="center" prop="machineName" />
<el-table-column label="产品名称" align="center" prop="productName" width="220" :show-overflow-tooltip="true" />
<el-table-column label="排产数量(母)" align="center" prop="quantity" width="100"/>
<el-table-column label="规格型号" align="center" prop="spec" v-if="false"/>
<el-table-column label="排产数量" align="center" prop="quantity" width="100"/>
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="报工批次" align="center" prop="batch" width="200" :show-overflow-tooltip="true" />
<el-table-column label="本次报工数量" align="center" prop="quantityFeedback" width="100"/>
<el-table-column label="用人数" align="center" prop="useMan" />
<el-table-column label="工时" align="center" prop="workTime" />
<el-table-column label="报工时间" align="center" prop="feedbackTime" width="150"/><!--加时分秒生成报工单的逻辑要变切记-->
<!--
<el-table-column label="不合格数量" align="center" prop="quantityUnqualified" width="100">
<template slot-scope="scope">
<div :style="{ color: scope.row.quantityUnqualified ? 'red' : 'red' }">
{{ scope.row.quantityUnqualified }}
</div>
</template>
</el-table-column>-->
<el-table-column label="报工人" align="center" prop="nickName" />
<el-table-column label="工号" align="center" prop="userName" v-if="false"/>
<!--
<el-table-column label="报工状态" align="center" prop="uploadStatus" width="100"/>-->
<el-table-column label="累计报工数量" align="center" prop="quantityFeedback" width="100"/>
<el-table-column label="累计用人数" align="center" prop="useMan" width="100"/>
<el-table-column label="累计工时" align="center" prop="workTime" />
<el-table-column label="报工时间" align="center" prop="feedbackTimeStr" width="100"/><!--加时分秒生成报工单的逻辑要变切记-->
<el-table-column label="SAP报工状态" align="center" prop="uploadStatus" width="150"/>
<el-table-column label="SAP报工时间" align="center" prop="uploadTime" width="150"/>
<!--<el-table-column label="报工信息" align="center" prop="uploadMsg" width="100"/>-->
<el-table-column label="线体编码" align="center" prop="machineCode" />
<el-table-column label="线体名称" align="center" prop="machineName" />
<el-table-column label="班组编码" align="center" prop="teamCode" v-if="false"/>
<el-table-column label="班次编码" align="center" prop="shiftCode" v-if="false"/>
<el-table-column label="创建时间" align="center" prop="createTime" width="150"/>
</el-table>
<pagination
@ -206,6 +177,8 @@
<!-- 添加或修改报工报表对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
<el-tabs v-model="activeName0" >
<el-tab-pane label="报工信息" name="first">
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-row>
<el-col :span="6">
@ -242,18 +215,25 @@
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="产品编码" prop="productCode">
<el-input v-model="form.productCode" placeholder="请输入产品编码" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品名称" prop="productName">
<el-input v-model="form.productName" placeholder="请输入产品名称" disabled/>
<el-form-item label="批次编码" prop="batch">
<el-select v-model="form.batch" class="selectItem" placeholder="请选择批次" clearable>
<el-option v-for="(item,index) in batchList"
:key="index"
:label="item.batchCode"
:value="item.batchCode">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="规格型号" prop="spec">
<el-input v-model="form.spec" placeholder="请输入内容" disabled/>
<el-form-item label="报工时间" prop="feedbackTime">
<el-date-picker clearable
v-model="form.feedbackTime"
type="date"
value-format="yyyy-MM-dd"
style="width: 180px"
placeholder="请选择报工时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
@ -264,47 +244,67 @@
<el-input v-model="form.shiftName" placeholder="请输入班次名称" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="线体名称" prop="machineName">
<el-input v-model="form.machineName" placeholder="请选择线体名称">
<el-button slot="append" @click="handleSelectEquip" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<el-form-item label="线体编码" prop="machineCode" v-if="false">
<el-input v-model="form.machineCode" placeholder="请输入线体编码" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="排产数量" prop="quantity">
<el-input v-model="form.quantity" disabled/>
<el-form-item label="工作中心" prop="workCenter">
<el-select
v-model="form.workCenter"
filterable
placeholder="请选择"
>
<el-option
v-for="item in options1"
:key="item.factoryCode"
:label="item.factoryName"
:value="item.factoryCode"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" disabled/>
<el-form-item label="结束报工" prop="endReport">
<el-radio v-model="form.endReport" label="0"></el-radio>
<el-radio v-model="form.endReport" label="1"></el-radio>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="线体名称" prop="machineName">
<el-input v-model="form.machineName" placeholder="请选择线体名称">
<el-button slot="append" @click="handleSelectEquip" icon="el-icon-search"></el-button>
</el-input>
<el-form-item label="产品编码(母)" prop="productCode">
<el-input v-model="form.productCode" placeholder="请输入产品编码" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="线体编码" prop="machineCode">
<el-input v-model="form.machineCode" placeholder="请输入线体编码" disabled/>
<el-form-item label="产品名称(母)" prop="productName">
<el-input v-model="form.productName" placeholder="请输入产品名称" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="报工时间" prop="feedbackTime">
<el-date-picker clearable
v-model="form.feedbackTime"
type="date"
value-format="yyyy-MM-dd"
style="width: 180px"
placeholder="请选择报工时间">
</el-date-picker>
<el-form-item label="排产数量(母)" prop="quantity">
<el-input v-model="form.quantity" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位(母)" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="本次报工数量" prop="quantityFeedback">
<el-form-item label="报工数量(母)" prop="quantityFeedback">
<el-input-number
:min="0"
:step="1"
@ -314,7 +314,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="本次报工工时" prop="workTime">
<el-form-item label="报工工时(母)" prop="workTime">
<el-input-number
:min="0"
:step="1"
@ -324,7 +324,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="本次报工用人" prop="useMan">
<el-form-item label="报工用人(母)" prop="useMan">
<el-input-number
:min="0"
:step="1"
@ -333,35 +333,61 @@
/>
</el-form-item>
</el-col>
<!--
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="班组编码" prop="teamCode">
<el-select v-model="form.teamCode" class="selectItem" placeholder="请选择班组">
<el-option v-for="(item,index) in teamList"
:key="index"
:label="item.teamDesc"
:value="item.teamCode">
</el-option>
</el-select>
<el-form-item label="子工单编码" prop="workorderCodes" v-if="false">
<el-input v-model="form.workorderCodes" placeholder="子工单编码" disabled/>
</el-form-item>
</el-col>-->
<el-form-item label="产品编码(子)" prop="productCodes">
<el-input v-model="form.productCodes" placeholder="请输入产品编码" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品名称(子)" prop="productNames">
<el-input v-model="form.productNames" placeholder="请输入产品名称" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="排产数量(子)" prop="quantitys">
<el-input v-model="form.quantitys" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位(子)" prop="units">
<el-input v-model="form.units" placeholder="请输入单位" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="批次编码" prop="batch">
<el-select v-model="form.batch" class="selectItem" placeholder="请选择班组" clearable>
<el-option v-for="(item,index) in batchList"
:key="index"
:label="item.batchCode"
:value="item.batchCode">
</el-option>
</el-select>
<el-form-item label="报工数量(子)" prop="quantityFeedbacks">
<el-input-number
:min="0"
:step="1"
v-model="form.quantityFeedbacks"
style="width: 180px"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="结束报工" prop="endReport">
<el-radio v-model="form.endReport" label="0"></el-radio>
<el-radio v-model="form.endReport" label="1"></el-radio>
<el-form-item label="报工工时(子)" prop="workTimes">
<el-input-number
:min="0"
:step="1"
v-model="form.workTimes"
style="width: 180px"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报工用人(子)" prop="useMans">
<el-input-number
:min="0"
:step="1"
v-model="form.useMans"
style="width: 180px"
/>
</el-form-item>
</el-col>
</el-row>
@ -373,19 +399,134 @@
</el-col>
</el-row>
</el-form>
<div v-if="optType =='reportConsume' || optType =='view'">
<el-divider content-position="center" v-if="form.reportCode !=null"></el-divider>
<ReportWorkConsume :reportCode="form.reportCode"
:productCode="form.productCode"
</el-tab-pane>
<el-tab-pane label="物料损耗" name="second">
<div>
<!--<el-divider content-position="center">工单物料消耗明细</el-divider>-->
<ReportWorkConsume ref="child"
:workorderCode="form.workorderCode"
@onSelected="onSelectMaterial"
></ReportWorkConsume>
</div>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'"></el-button>
<el-button type="primary" @click="submitForm" v-else></el-button>
<el-button type="primary" @click="submitReportInfo" v-else></el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 报工详情 -->
<el-dialog :title="titleReport" :visible.sync="openReport" width="1200px">
<el-tabs v-model="activeName" >
<el-tab-pane label="母工单报工信息" name="pOrder">
<el-table v-loading="loading" :data="pOrderTableList" ref="myPOrderTable" @selection-change="pReportSelection"
:summary-method="getSummaries"
show-summary
>
<el-table-column width="50" align="center" type="selection"/>
<el-table-column label="id" align="center" prop="id" v-if="false"/>
<el-table-column label="工单编码" width="150" align="left" prop="workorderCode" :show-overflow-tooltip="true" />
<el-table-column label="报工单号" width="150" align="left" prop="reportCode" :show-overflow-tooltip="true" />
<el-table-column label="批次" width="250" align="left" prop="batch" :show-overflow-tooltip="true" />
<el-table-column label="单位" align="center" prop="unit"/>
<el-table-column label="报工数量" width="100" align="left" prop="quantityFeedback" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.quantityFeedback" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="工时数" align="center" prop="workTime">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.workTime" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="用人数" align="center" prop="useMan">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.useMan" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="150"/>
</el-table>
</el-tab-pane>
<el-tab-pane label="子工单报工信息" name="sOrder">
<el-table v-loading="loading" :data="sOrderTableList" ref="mySOrderTable" @selection-change="sReportSelection"
:summary-method="getSummaries"
show-summary
>
<el-table-column width="50" align="center" type="selection"/>
<el-table-column label="id" align="center" prop="id" v-if="false"/>
<el-table-column label="工单编码" width="150" align="left" prop="workorderCode" :show-overflow-tooltip="true" />
<el-table-column label="报工单号" width="150" align="left" prop="reportCode" :show-overflow-tooltip="true" />
<el-table-column label="批次" width="250" align="left" prop="batch" :show-overflow-tooltip="true" />
<el-table-column label="单位" align="center" prop="unit"/>
<el-table-column label="报工数量" width="100" align="left" prop="quantityFeedback" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.quantityFeedback" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="工时数" align="center" prop="workTime">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.workTime" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="用人数" align="center" prop="useMan">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.useMan" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="150"/>
</el-table>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitReport"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 报工损耗 -->
<el-dialog :title="titleConsume" :visible.sync="openConsume" width="1200px">
<el-tabs v-model="activeName2" >
<el-tab-pane label="母工单用料损耗信息" name="pConsume">
<el-table v-loading="loading" :data="pConsumeTableList" ref="mypConsumeTable" @selection-change="pConsumeSelection">
<el-table-column width="50" align="center" type="selection"/>
<el-table-column label="recordId" align="center" prop="recordId" v-if="false"/>
<el-table-column label="工单编码" width="140" align="left" prop="workorderCode" :show-overflow-tooltip="true" />
<el-table-column label="物料编码" width="180" align="left" prop="materialCode" :show-overflow-tooltip="true" />
<el-table-column label="物料名称" width="280" align="left" prop="materialName" :show-overflow-tooltip="true" />
<el-table-column label="消耗数量" width="120" align="left" prop="quantity" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.quantity" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="单位" width="50" align="center" prop="unit"/>
<el-table-column label="反冲标识" align="center" prop="recoil"/>
<el-table-column label="创建时间" align="center" prop="createTime" width="150"/>
</el-table>
</el-tab-pane>
<el-tab-pane label="子工单用料损耗信息" name="sConsume">
<el-table v-loading="loading" :data="sConsumeTableList" ref="mysConsumeTable" @selection-change="sConsumeSelection">
<el-table-column width="50" align="center" type="selection"/>
<el-table-column label="recordId" align="center" prop="recordId" v-if="false"/>
<el-table-column label="工单编码" width="140" align="left" prop="workorderCode" :show-overflow-tooltip="true" />
<el-table-column label="物料编码" width="180" align="left" prop="materialCode" :show-overflow-tooltip="true" />
<el-table-column label="物料名称" width="280" align="left" prop="materialName" :show-overflow-tooltip="true" />
<el-table-column label="消耗数量" width="120" align="left" prop="quantity" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.quantity" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="单位" width="50" align="center" prop="unit"/>
<el-table-column label="反冲标识" align="center" prop="recoil"/>
<el-table-column label="创建时间" align="center" prop="createTime" width="150"/>
</el-table>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitConsume"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!--母工单---->
<!--人员选择弹窗-->
<ItemSelectUser
ref="itemSelectUser"
@ -401,11 +542,15 @@
ref="itemSelectEquip"
@onSelected="onSelectEquip"
></ItemSelectEquip>
<!--母工单---->
</div>
</template>
<script>
import { listReportWork, getReportWork, delReportWork, addReportWork, updateReportWork,reportSap,getBatchList } from "@/api/mes/reportWork";
import { listReportWork, getReportWork, delReportWork, addReportWork, getWorkcenterList,
updateReportWork,reportSap,getBatchList,
getReportList,submitReportPS} from "@/api/mes/reportWork";
import { getConsumeList,submitConsumePS,submitReportInfo} from "@/api/mes/reportWorkConsume";
import ReportWorkConsume from "./reportWorkConsume.vue";
import ItemSelectUser from "./selectUser.vue";
import ItemSelectWorkOrder from "./selectWorkOrder.vue";
@ -434,11 +579,28 @@ export default {
consumeTotal:0,
//
reportWorkList: [],
reportWorkConsumeList: [],
pOrderTableList: [],
sOrderTableList: [],
pConsumeTableList: [],
sConsumeTableList: [],
activeName0: 'first',
activeName: 'pOrder',
activeName2: 'pConsume',
reportRows:[],
pReportRows:[],
sReportRows:[],
pConsumeRows:[],
sConsumeRows:[],
consumeRows:[],
options1:[],
//
title: "",
titleConsume:"",
titleReport:"",
//
open: false,
openReport: false,
openConsume: false,
consumeQueryParams:{
consumePageNum:1,
consumePageSize:10,
@ -476,11 +638,18 @@ export default {
attr2: null,
attr3: null,
attr4: null,
workorderCode: null,
parentOrder:null
},
//
form: {
endReport:'0',
consumesInfos:[]
},
formSAdd: {
endReport:'0'
},
uploadStatusList:[
{"dictLabel":"待报工","dictValue":"0"},
{"dictLabel":"报工成功","dictValue":"1"},
@ -503,35 +672,48 @@ export default {
{ required: true, message: "本次报工线体不能为空", trigger: "blur" }
]
,nickName: [
{ required: true, message: "本次报工忍不能为空", trigger: "blur" }
{ required: true, message: "本次报工人不能为空", trigger: "blur" }
],workTime: [
{ required: true, message: "工时不能为空", trigger: "blur" }
],useMan: [
{ required: true, message: "用人人不能为空", trigger: "blur" }
],
quantityFeedbacks: [
{ required: true, message: "本次报工数量不能为空", trigger: "blur" }
],
workTimes: [
{ required: true, message: "工时不能为空", trigger: "blur" }
],useMans: [
{ required: true, message: "用人人不能为空", trigger: "blur" }
],workCenter: [
{ required: true, message: "工作中心不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
this.getDate();
//this.getTeamList();
this.getWorkcenterList();
},
methods: {
getWorkcenterList(){
getWorkcenterList().then(data => {
this.options1 = data;
});
},
//
productCodeFormate(row, column, cellValue){
return cellValue.slice(7,18); //
},
//
//getTeamList(){
// getTeamList().then(response => {
// this.teamList = response;
// });
//},
/**获取默认查询时间段**/
getDate() {
let start = this.Fungetdate (0)
let end = this.Fungetdate (1)
this.queryParams.createTimeArray.push(start,end)
//this.queryParams.feedbackTimeArray.push(start,end)
//this.queryParams.createTimeArray.push(start,end)
this.queryParams.feedbackTimeArray.push(start,end)
this.getList();
},
Fungetdate (num) {
var dd = new Date();
@ -540,17 +722,19 @@ export default {
var m = dd.getMonth() + 1;//
var d = dd.getDate();
return y + "-" + m + "-" + d+" 00:00:00";
},
/** 查询报工报表列表 */
getList() {
/**
if(this.queryParams.createTimeArray !=null && this.queryParams.createTimeArray.length>0){
this.queryParams.createTimeStart = moment(this.queryParams.createTimeArray[0]).format('YYYY-MM-DD HH:mm:ss');
this.queryParams.createTimeEnd = moment(this.queryParams.createTimeArray[1]).format('YYYY-MM-DD HH:mm:ss');
}
}**/
if(this.queryParams.feedbackTimeArray !=null && this.queryParams.feedbackTimeArray.length>0){
this.queryParams.feedbackTimeStart = moment(this.queryParams.feedbackTimeArray[0]).format('YYYY-MM-DD 00:00:00');
this.queryParams.feedbackTimeEnd = moment(this.queryParams.feedbackTimeArray[1]).format('YYYY-MM-DD 00:00:00');
this.queryParams.feedbackTimeEnd = moment(this.queryParams.feedbackTimeArray[1]).format('YYYY-MM-DD 23:59:59');
}
this.loading = true;
listReportWork(this.queryParams).then(response => {
@ -573,8 +757,39 @@ export default {
//
cancel() {
this.open = false;
this.openReport = false;
this.openConsume = false;
this.reset();
},
getSummaries(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计';
return;
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] += '';
if(sums[index] > 1000000){
sums[index] = '';
}
} else {
sums[index] = '';//N/A
}
});
return sums;
},
//
reset() {
this.form = {
@ -613,6 +828,16 @@ export default {
endReport:'0'
};
this.resetForm("form");
this.pOrderTableList = [];
this.sOrderTableList = [];
this.pReportRows = [];
this.sReportRows = [];
this.reportRows = [];
this.pConsumeTableList = [];
this.sConsumeTableList = [];
this.pConsumeRows = [];
this.sConsumeRows = [];
this.consumeRows = [];
},
/** 搜索按钮操作 */
handleQuery() {
@ -695,25 +920,97 @@ export default {
/** 报工按钮操作 */
handleReport(row) {
let sr = this.selectRow[0];
const code = sr.reportCode;
this.$modal.confirm('是否确认报工报表编号为"' + code + '"的数据项向sap报工').then(function() {
const code = sr.workorderCode;
this.$modal.confirm('是否确认工单"' + code + '"的数据项向sap报工').then(function() {
return reportSap(code);
}).then(() => {
this.getList();
this.$modal.msgSuccess("报工成功");
}).catch(() => {});
},
/** 物料损耗按钮操作 */
handleReportConsume(row) {
/** 报工详情按钮操作 */
handleReportHz(row) {
this.reset();
this.optType = "reportConsume";
let sr = this.selectRow[0];
this.queryParams.workorderCode = sr.workorderCode;
//
this.queryParams.parentOrder = '0';
getReportList(this.queryParams).then(response => {
this.pOrderTableList = response;
this.openReport = true;
this.titleReport = "工单报工详情";
});
const id = row.id || this.ids
getReportWork(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "工单物料损耗";
//
this.queryParams.parentOrder = sr.workorderCode;
getReportList(this.queryParams).then(response => {
this.sOrderTableList = response;
this.openReport = true;
this.titleReport = "工单报工详情";
});
},
handleEdit(index, row) {
console.log('row:',index, row);
},
//
pReportSelection(selection) {
this.pReportRows = selection
},
sReportSelection(selection) {
this.sReportRows = selection
},
submitReport() {
this.reportRows = this.pReportRows.concat(this.sReportRows)
if ( this.reportRows==0) {
this.$modal.msgError(`请选择数据`);
return false;
}
submitReportPS(this.reportRows).then(response => {
this.$modal.msgSuccess("报工信息修改成功");
this.openReport = false;
this.getList();
});
},
/** 报工损耗按钮操作 */
handleConsumeHz(row) {
this.reset();
let sr = this.selectRow[0];
this.queryParams.workorderCode = sr.workorderCode;
//
this.queryParams.parentOrder = '0';
getConsumeList(this.queryParams).then(response => {
this.pConsumeTableList = response;
this.openConsume = true;
this.titleConsume = "工单报工物料损耗详情";
});
//
this.queryParams.parentOrder = sr.workorderCode;
getConsumeList(this.queryParams).then(response => {
this.sConsumeTableList = response;
this.openConsume = true;
this.titleConsume = "工单报工物料损耗详情";
});
},
//
pConsumeSelection(selection) {
this.pConsumeRows = selection
},
sConsumeSelection(selection) {
this.sConsumeRows = selection
},
submitConsume() {
this.consumeRows = this.pConsumeRows.concat(this.sConsumeRows)
if ( this.consumeRows==0) {
this.$modal.msgError(`请选择数据`);
return false;
}
submitConsumePS(this.consumeRows).then(response => {
this.$modal.msgSuccess("报工信息修改成功");
this.openConsume = false;
this.getList();
});
},
/** 导出按钮操作 */
@ -728,7 +1025,6 @@ export default {
},
//
onSelectUser(obj) {
debugger
this.form.userName = obj.code;
this.form.nickName = obj.name;
},
@ -744,11 +1040,18 @@ export default {
this.form.productSpc = obj.productSpc;
this.form.quantity = obj.quantitySplit;
this.form.unit = obj.unit;
this.form.workorderCodes = obj.workorderCodes;
this.form.productNames = obj.productNames;
this.form.productCodes = obj.productCodes;
this.form.quantitys = obj.quantitySplits;
this.form.units = obj.units;
this.form.shiftId = obj.shiftId;
this.form.shiftName = obj.shiftName;
getBatchList(obj.workorderCode).then(response => {
this.batchList = response;
});
this.$refs.child.getListByOrderCode(this.form.workorderCode);
},
/**线体选择弹出框**/
handleSelectEquip() {
@ -759,6 +1062,18 @@ export default {
this.form.machineCode = obj.equipmentCode;
this.form.machineName = obj.equipmentName;
},
//
onSelectMaterial(objs) {
this.form.consumesInfos = objs;
},
//
submitReportInfo(){
submitReportInfo(this.form).then(response => {
this.$modal.msgSuccess("提交成功");
this.open = false;
this.getList();
});
}
}
};
</script>

@ -1,137 +1,32 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleSelectMaterial"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
<!--
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
</el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="reportWorkConsumeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="工单编码" align="center" prop="workorderCode" width="200"/>
<el-table-column label="物料编号" align="center" prop="materialCode" width="200"/>
<el-table-column label="物料名称" align="center" prop="materialName" width="200"/>
<el-table-column label="物料规格型号" align="center" prop="materialSpc" width="200" v-if="false"/>
<el-table-column label="数量" align="center" prop="quantity" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="操作" v-if="optType !='view'" align="center" class-name="small-padding fixed-width">
<el-table v-loading="loading" :data="itemList" @selection-change="handleSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection">
</el-table-column>
<!-- 序号 -->
<el-table-column label="工单编码" width="150" align="left" prop="workorderCode" :show-overflow-tooltip="true" />
<el-table-column label="物料编码" width="180" align="left" prop="materialCode" :show-overflow-tooltip="true" />
<el-table-column label="物料名称" width="260" align="left" prop="materialName" :show-overflow-tooltip="true" />
<el-table-column label="损耗数量" align="center" prop="quantity">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
<el-input type="number" size="small" v-model="scope.row.quantity" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="单位" align="center" prop="unit"/>
<el-table-column label="反冲物料标识X" align="center" prop="recoil"/>
<el-table-column label="母工单编码" align="center" prop="parentOrder"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改生产报工物料消耗对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="工单号" prop="workorderCode">
<el-input v-model="form.workorderCode" placeholder="请输入物料编号" disabled/>
</el-form-item>
<el-form-item label="报工单号" prop="reportCode">
<el-input v-model="form.reportCode" placeholder="请输入物料编号" disabled/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请选择物料名称" disabled>
</el-input>
</el-form-item>
<el-form-item label="物料编号" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料编号" disabled/>
</el-form-item>
<!--
<el-form-item label="规格型号" prop="materialSpc">
<el-input v-model="form.materialSpc" placeholder="请输入物料规格型号" disabled/>
</el-form-item>-->
<el-form-item label="单位" prop="unit">
<el-select v-model="form.unit" placeholder="请选择单位" width="100%">
<el-option
v-for="dict in dict.type.unit"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="数量" prop="quantity">
<el-input type="number" v-model="form.quantity" placeholder="请输入数量" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
<div slot="footer" class="button-container">
<el-button type="primary" @click="submitBomForm"> </el-button>
</div>
</el-dialog>
<!--物料选择弹窗-->
<ItemSelectMaterail
ref="itemSelectMaterial"
@onSelected="onSelectMaterial"
></ItemSelectMaterail>
</div>
</template>
<script>
import { addConsumes } from "@/api/mes/reportWorkConsume";
import { listReportWorkConsume, getReportWorkConsume, delReportWorkConsume, addReportWorkConsume, updateReportWorkConsume } from "@/api/mes/reportWorkConsume";
import ItemSelectMaterail from "./selectMaterial.vue";
import { getPrepareList } from "@/api/mes/reportWork";
export default {
name: "ReportWorkConsume",
dicts: ["unit"],
components: {ItemSelectMaterail},
data() {
return {
//
@ -146,8 +41,8 @@ export default {
showSearch: true,
//
total: 0,
//
reportWorkConsumeList: [],
//
itemList: [],
//
title: "",
//
@ -156,7 +51,7 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
workorderCode: null,
workorderCode: this.workorderCode,
materialCode: null,
materialName: null,
materialSpc: null,
@ -166,80 +61,47 @@ export default {
attr2: null,
attr3: null,
attr4: null,
factoryCode: null,
reportCode :this.reportCode,
productCode: this.productCode
factoryCode: null
},
//
form: {},
//
rules: {
workorderCode: [
{ required: true, message: "工单编码不能为空", trigger: "blur" }
],
materialCode: [
{ required: true, message: "物料编号不能为空", trigger: "blur" }
],
materialName: [
{ required: true, message: "物料名称不能为空", trigger: "blur" }
],
unit: [
{ required: true, message: "单位不能为空", trigger: "blur" }
],
}
rules: {},
selectionRows:[]
};
},
props: {
workorderCode:null,
productCode:null,
reportCode: null,
optType: undefined,
workorderCode:null
},
created() {
this.getList();
},
methods: {
/** 查询生产报工物料消耗列表 */
/** 查询表格列表*/
getList() {
this.loading = true;
listReportWorkConsume(this.queryParams).then(response => {
console.log('报工编号',this.queryParams.reportCode);
this.reportWorkConsumeList = response.rows;
this.total = response.total;
getPrepareList(this.queryParams).then(response => {
this.itemList = response;
this.loading = false;
}
);
},
getListByOrderCode(workorderCode){
this.loading = true;
this.queryParams.workorderCode = workorderCode;
getPrepareList(this.queryParams).then(response => {
this.itemList = response;
this.loading = false;
});
}
);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
recordId: null,
workorderCode: null,
materialCode: null,
materialName: null,
materialSpc: null,
quantity: null,
unit: null,
remark: null,
attr1: null,
attr2: null,
attr3: null,
attr4: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
factoryCode: null,
reportCode: this.reportCode,
productCode: this.productCode,
workorderCode: this.workorderCode
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
@ -253,84 +115,27 @@ export default {
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.recordId)
this.single = selection.length!==1
this.multiple = !selection.length
this.selectionRows = selection
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加生产报工物料消耗";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const recordId = row.recordId || this.ids
getReportWorkConsume(recordId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改生产报工物料消耗";
});
handleEdit(index, row) {
console.log('row:',index, row);
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.recordId != null) {
updateReportWorkConsume(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
submitBomForm() {
if ( this.selectionRows==0) {
this.$modal.msgError(`请选择数据`);
return false;
}else{
addReportWorkConsume(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const recordIds = row.recordId || this.ids;
this.$modal.confirm('是否确认删除生产报工物料消耗编号为"' + recordIds + '"的数据项?').then(function() {
return delReportWorkConsume(recordIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/reportWorkConsume/export', {
...this.queryParams
}, `reportWorkConsume_${new Date().getTime()}.xlsx`)
},
/**物料选择弹出框**/
handleSelectMaterial() {
this.$refs.itemSelectMaterial.showFlag = true;
this.$refs.itemSelectMaterial.init(this.productCode,this.workorderCode);
},
//
onSelectMaterial(objs) {
let _this = this;
objs.forEach(function(item,index,arr){
item.reportCode=_this.reportCode,
item.productCode= _this.productCode,
item.workorderCode= _this.workorderCode,
item.materialCode = item.component,
item.materialName = item.componentName
})
addConsumes(objs).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
this.$modal.msgSuccess("报工损耗确认成功");
};
this.$emit('onSelected', this.$refs.myTable.selection);
this.showFlag = false;
this.reset();
},
}
};
</script>
<style>
.button-container {
text-align: center;
}
</style>

@ -26,16 +26,21 @@
<el-table v-loading="loading" :data="itemList" @selection-change="handleBomSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection"/>
<el-table-column label="生产日期" align="left" prop="productDate" width="100"/>
<el-table-column label="工单编号" align="left" prop="workorderCode" width="150"/>
<el-table-column label="工单编号" align="left" prop="workorderCode" width="180"/>
<el-table-column label="订单编号" align="left" prop="orderCode" width="120"/>
<el-table-column label="产品编码" align="left" prop="productCode" width="180" />
<el-table-column label="产品名称" align="left" prop="productName" width="180"/>
<el-table-column label="规格型号" align="left" prop="productSpc" :show-overflow-tooltip="true" />
<el-table-column label="计划生产数量" align="left" prop="quantitySplit" width="100" />
<el-table-column label="产数量" align="left" prop="quantitySplit" width="100" />
<el-table-column label="单位" align="left" prop="unit" :show-overflow-tooltip="true" />
<el-table-column label="班次ID" align="left" prop="shiftId" :show-overflow-tooltip="true" v-if="false"/>
<el-table-column label="班次名称" align="left" prop="shiftName" :show-overflow-tooltip="true" />
<el-table-column label="生产线体" align="left" prop="prodLineCode" :show-overflow-tooltip="true" width="100"/>
<el-table-column label="工单编号(子)" align="left" prop="workorderCodes" width="150"/>
<el-table-column label="产品编码(子)" align="left" prop="productCodes" width="180" />
<el-table-column label="产品名称(子)" align="left" prop="productNames" width="180"/>
<el-table-column label="排产数量(子)" align="left" prop="quantitySplits" width="100" />
<el-table-column label="单位(子)" align="left" prop="units" :show-overflow-tooltip="true" />
</el-table>
<pagination

Loading…
Cancel
Save