You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1244 lines
43 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<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="orderCode">
<el-input
v-model="queryParams.orderCode"
placeholder="请输入生产订单编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="生产工单编码" prop="workorderCode">
<el-input
v-model="queryParams.workorderCode"
placeholder="请输入生产工单编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品编码" prop="productCode">
<el-input
v-model="queryParams.productCode"
placeholder="请输入产品编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item>
<el-form-item label="产品名称" prop="productName">
<el-input
v-model="queryParams.productName"
placeholder="请输入产品名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="生产时间" prop="feedbackTimeArray">
<el-date-picker
v-model="queryParams.feedbackTimeArray"
format="yyyy-MM-dd"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="SAP报工结果" prop="uploadStatus">
<el-select v-model="queryParams.uploadStatus" placeholder="请选择结果" clearable>
<el-option
v-for="item in uploadStatusList"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</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>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['mes:reportWork:add']"
>新增</el-button>
</el-col>
<!--<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['mes:reportWork:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['mes:reportWork:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleReportHz"
v-hasPermi="['mes:reportWork:report']"
>报工详情</el-button>
</el-col>-->
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-s-release"
size="mini"
:disabled="single"
@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']"
>报工SAP</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes:reportWork:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAddSAP"
>SAP收货</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="reportWorkList" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" />
<el-table-column label="工单编码" align="center" prop="workorderCode" width="130">
<template slot-scope="scope">
<el-button
type="text"
@click="handleReportHz(scope.row)"
>{{scope.row.workorderCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="sap工单编码" align="center" prop="workorderCodeSap" 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="unit" />
<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="productDate" 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>
<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="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">
<el-form-item label="报工单编号" prop="reportCode">
<el-input v-model="form.reportCode" placeholder="请输入报工单编号" disabled/>
</el-form-item>
</el-col>
</el-col>
<el-col :span="6">
<el-form-item label="报工人员姓名" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入报工人员" >
<el-button slot="append" @click="handleSelectUser" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报工人员工号" prop="userName">
<el-input v-model="form.userName" placeholder="请输入报工人员" disabled/>
</el-form-item>
</el-col>
<el-col v-if="false">
<el-form-item label="默认">
<el-input v-model="form.reportType" disabled/>
<el-input v-model="form.feedbackChannel" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="生产工单编码" prop="workorderCode">
<el-input v-model="form.workorderCode" placeholder="请选择生产工单">
<el-button slot="append" @click="handleSelectWorkOrder" icon="el-icon-search"></el-button>
</el-input>
</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>
</el-col>
<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>
</el-col>
<el-col :span="6">
<el-form-item label="班次编码" prop="shiftId" v-if="false">
<el-input v-model="form.shiftId" placeholder="请输入班次编码" />
</el-form-item>
<el-form-item label="班次名称" prop="shiftName">
<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="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="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="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>
</el-col>
<el-col :span="6">
<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-input-number
:min="0"
:step="1"
v-model="form.quantityFeedback"
style="width: 180px"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报工工时(母)" prop="workTime">
<el-input-number
:min="0"
:step="1"
v-model="form.workTime"
style="width: 180px"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报工用人(母)" prop="useMan">
<el-input-number
:min="0"
:step="1"
v-model="form.useMan"
style="width: 180px"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="子工单编码" prop="workorderCodes" v-if="false">
<el-input v-model="form.workorderCodes" placeholder="子工单编码" disabled/>
</el-form-item>
<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="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="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>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入内容" type="textarea"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</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="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="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitReport" v-else>确 定</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="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitConsume" v-else>确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- SAP收货 -->
<el-dialog :title="titleReport" :visible.sync="openReportSAP" width="1200px">
<el-select v-model="selectedWarehouse" placeholder="请选择仓库">
<el-option v-for="warehouse in warehouseList" :key="warehouse.warehouseCode" :label="warehouse.warehouseName" :value="warehouse.warehouseCode"></el-option>
</el-select>
<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="SAP工单编码" width="250" align="left" prop="workorderCodeSap" :show-overflow-tooltip="true" />
<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="产品编码" width="350" align="center" prop="productCode"/>
<el-table-column label="产品名称" width="350" align="center" prop="productName"/>
<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="入库数量" width="100" align="left" prop="quantityQualified" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.quantityQualified" @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="计划日期" width="100" align="center" prop="productDate"/>-->
<el-table-column label="计划日期" width="180" align="center" prop="productDate">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.productDate" :value-format="'yyyy-MM-dd'" type="date" ></el-date-picker>
</template>
</el-table-column>
<el-table-column label="SAP过账状态" width="100" align="center" prop="sapstatus">
<template slot-scope="scope">
<span v-if="scope.row.sapstatus === '1'">完成</span>
<span v-else-if="scope.row.sapstatus ==='2'">失败</span>
</template>
</el-table-column>
<el-table-column label="SAP过账信息" width="350" align="center" prop="sapmessage"/>
<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="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitReportSAP" v-else>确 定</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!--母工单---->
<!--人员选择弹窗-->
<ItemSelectUser
ref="itemSelectUser"
@onSelected="onSelectUser"
></ItemSelectUser>
<!--工单选择弹窗-->
<ItemSelectWorkOrder
ref="itemSelectWorkOrder"
@onSelected="onSelectWorkOrder"
></ItemSelectWorkOrder>
<!--线体选择弹窗-->
<ItemSelectEquip
ref="itemSelectEquip"
@onSelected="onSelectEquip"
></ItemSelectEquip>
<!--母工单---->
</div>
</template>
<script>
import { listReportWork, getReportWork, delReportWork, addReportWork, getWorkcenterList,
updateReportWork,reportSap,getBatchList,
getReportList,getReportSAPList,submitReportPS,submitReportPSSAP,getCKList} 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";
import ItemSelectEquip from "./selectEquip.vue";
import moment from 'moment';
import { getlistCK } from '@/api/wms/outorder'
export default {
name: "ReportWork",
dicts: ['report_type'],
components: {ReportWorkConsume,ItemSelectUser,ItemSelectWorkOrder,ItemSelectEquip},
data() {
return {
optType: undefined,
// 遮罩层
loading: true,
// 选中数组
ids: [],
selectRow:{},
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
consumeTotal:0,
// 报工报表表格数据
reportWorkList: [],
pOrderTableList: [],
sOrderTableList: [],
pConsumeTableList: [],
sConsumeTableList: [],
activeName0: 'first',
activeName: 'pOrder',
activeName2: 'pConsume',
selectedWarehouse:'0004',
warehouseList: [],
// SAPCD:"",
reportRows:[],
pReportRows:[],
sReportRows:[],
pConsumeRows:[],
sConsumeRows:[],
consumeRows:[],
options1:[],
// 弹出层标题
title: "",
titleConsume:"",
titleReport:"",
// 是否显示弹出层
open: false,
openReport: false,
openReportSAP: false,
openConsume: false,
consumeQueryParams:{
consumePageNum:1,
consumePageSize:10,
reportCode:null,
},
// 查询参数
queryParams: {
createTimeArray: [],
feedbackTimeArray: [],
pageNum: 1,
pageSize: 10,
reportType: null,
reportCode: null,
workorderCode: null,
productCode: null,
productName: null,
spec: null,
unit: null,
quantity: null,
quantityFeedback: null,
quantityQualified: null,
quantityUnqualified: null,
userName: null,
nickName: null,
feedbackChannel: null,
feedbackTime: null,
recordUser: null,
status: null,
workTime: null,
machineCode: null,
machineName: null,
teamCode: null,
shiftId: null,
attr1: null,
attr2: null,
attr3: null,
attr4: null,
workorderCodeSap: null,
parentOrder:null,
uploadStatus:"0"
},
// 表单参数
form: {
endReport:'0',
consumesInfos:[]
},
formSAdd: {
endReport:'0'
},
uploadStatusList:[
{"dictLabel":"待报工","dictValue":"0"},
{"dictLabel":"报工成功","dictValue":"1"},
{"dictLabel":"报工失败","dictValue":"2"}
],
teamList:[],
batchList:[],
// 表单校验
rules: {
workorderCode:[
{ required: true, message: "本次报工工单不能为空", trigger: "blur" }
],
quantityFeedback: [
{ required: true, message: "本次报工数量不能为空", trigger: "blur" }
],
feedbackTime: [
{ required: true, message: "本次报工时间不能为空", trigger: "blur" }
],
machineName: [
{ required: true, message: "本次报工线体不能为空", trigger: "blur" }
]
,nickName: [
{ 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.getDate();
this.getWorkcenterList();
},
methods: {
getWorkcenterList(){
getWorkcenterList().then(data => {
this.options1 = data;
});
},
//产品编码格式化
productCodeFormate(row, column, cellValue){
return cellValue.slice(7,18); //返回值
},
/**获取默认查询时间段**/
getDate() {
let start = this.Fungetdate (0)
let end = this.Fungetdate (1)
//this.queryParams.createTimeArray.push(start,end)
this.queryParams.feedbackTimeArray.push(start,end)
this.getList();
},
Fungetdate (num) {
var dd = new Date();
dd.setDate(dd.getDate() + num);
var y = dd.getFullYear();
var m = dd.getMonth() + 1;//获取当前月份的日期
var d = dd.getDate();
return y + "-" + m + "-" + d;
},
/** 查询报工报表列表 */
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');
this.queryParams.feedbackTimeEnd = moment(this.queryParams.feedbackTimeArray[1]).format('YYYY-MM-DD');
}
this.loading = true;
listReportWork(this.queryParams).then(response => {
this.reportWorkList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 查询明细按钮操作
handleView(row){
this.reset();
const id = row.id || this.ids;
getReportWork(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "查看报工信息";
this.optType = "view";
});
},
// 取消按钮
cancel() {
this.open = false;
this.openReport = false;
this.openReportSAP=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))&& column.label!='用人数') {
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 = {
id: null,
reportType: 'UNI',
reportCode: null,
workorderCode: null,
productCode: null,
productName: null,
spec: null,
unit: null,
quantity: null,
quantityFeedback: null,
quantityQualified: null,
quantityUnqualified: null,
userName: null,
nickName: null,
feedbackChannel: 'PC',
feedbackTime: null,
recordUser: null,
status: null,
remark: null,
workTime: null,
machineCode: null,
machineName: null,
teamCode: null,
shiftId: null,
attr1: null,
attr2: null,
attr3: null,
attr4: null,
createBy: null,
createTime: null,
updateTime: null,
updateBy: null,
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() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.selectRow = selection
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加报工记录";
this.optType = "add";
},
handleAddSAP(row) {
this.reset();
let sr = this.selectRow[0];
if(sr.uploadStatus =='sap报工成功'){
this.optType = 'view'
}else{
this.optType = ''
}
this.queryParams.workorderCode = sr.workorderCode;
// this.SAPCD=sr.workorderCodeSap;
//查询母工单报工记录列表
this.queryParams.parentOrder = '0';
getReportSAPList(this.queryParams).then(response => {
this.pOrderTableList = response;
this.openReportSAP = true;
this.titleReport = "SAP收货";
});
// let factoryCode = localStorage.getItem('USER_POOL_NAME_CURRENT').substring(3)
// let params = { factoryCode: factoryCode }; // 构造一个包含工厂代码的对象
// let requestBody = JSON.stringify(params)// 将参数对象转换为JSON字符串
// getCKList(requestBody).then(response => {
// this.warehouseList = response;
// });
let factoryCode = localStorage.getItem('USER_POOL_NAME_CURRENT').substring(3)
let params = { factoryCode: factoryCode }; // 构造一个包含工厂代码的对象
//let paramsJSON = JSON.stringify(params); // 将对象转换为JSON字符串
console.log(factoryCode)
getCKList(params).then(response => {
this.warehouseList = response.data
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.optType = "edit";
let sr = this.selectRow[0];
if(sr.uploadStatus =='sap报工成功'){
this.$modal.msgError(`上传sap成功,不允许修改`);
return
}
const id = row.id || this.ids
getReportWork(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改报工报表";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateReportWork(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addReportWork(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
let sr = this.selectRow[0];
if(sr.uploadStatus =='sap报工成功'){
this.$modal.msgError(`上传sap成功,不允许删除`);
return
}
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除报工报表编号为"' + ids + '"的数据项?').then(function() {
return delReportWork(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 报工按钮操作 */
handleReport(row) {
let sr = this.selectRow[0];
if(sr.uploadStatus =='sap报工成功'){
this.$modal.msgError(`上报sap已完成,不能重复报工`);
return
}
const code = sr.workorderCode;
this.$modal.confirm('是否确认工单"' + code + '"的数据项向sap报工').then(function() {
return reportSap(code);
}).then(() => {
this.getList();
//this.$modal.msgSuccess("报工成功");
}).catch(() => {});
},
/** 报工详情按钮操作 */
handleReportHz(row) {
this.reset();
let sr = row;
if(sr.uploadStatus =='sap报工成功'){
this.optType = 'view'
}else{
this.optType = ''
}
this.queryParams.workorderCode = sr.workorderCode;
//查询母工单报工记录列表
this.queryParams.parentOrder = '0';
getReportList(this.queryParams).then(response => {
this.pOrderTableList = response;
this.openReport = true;
this.titleReport = "工单报工详情";
});
//查询子工单报工记录列表
this.queryParams.parentOrder = sr.workorderCode;
getReportList(this.queryParams).then(response => {
this.sOrderTableList = response;
this.openReport = true;
this.titleReport = "工单报工详情";
this.queryParams.workorderCode = '';
});
},
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();
});
},
submitReportSAP() {
this.reportRows = this.pReportRows.concat(this.sReportRows)
console.log(this.reportRows)
if ( this.reportRows==0) {
this.$modal.msgError(`请选择数据`);
return false;
}
this.reportRows.forEach(row => {
this.$set(row, 'whCode', this.selectedWarehouse);
});
console.log("仓库---"+this.selectedWarehouse)
const reportRowsJson = JSON.stringify(this.reportRows); // 将this.reportRows转换为JSON字符串
this.loading = true;
submitReportPSSAP(reportRowsJson).then(response => {
this.$modal.msgSuccess("操作成功");
this.loading = false;
this.openReportSAP = false;
this.getList();
});
},
/** 报工损耗按钮操作 */
handleConsumeHz(row) {
this.reset();
let sr = row;
if(sr.uploadStatus =='sap报工成功'){
this.optType = 'view'
}else{
this.optType = ''
}
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 = "工单报工物料损耗详情";
this.queryParams.workorderCode = '';
});
},
// 多选框选中数据
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();
});
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/reportWork/export', {
...this.queryParams
}, `reportWork_${new Date().getTime()}.xlsx`)
},
/**人员选择弹出框**/
handleSelectUser() {
this.$refs.itemSelectUser.showFlag = true;
},
//人员选择确认
onSelectUser(obj) {
this.form.userName = obj.code;
this.form.nickName = obj.name;
},
/**工单选择弹出框**/
handleSelectWorkOrder() {
this.$refs.itemSelectWorkOrder.showFlag = true;
},
//工单选择确认
onSelectWorkOrder(obj) {
this.form.workorderCode = obj.workorderCode;
this.form.productName = obj.productName;
this.form.productCode = obj.productCode;
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() {
this.$refs.itemSelectEquip.showFlag = true;
},
//线体选择确认
onSelectEquip(obj) {
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>