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.

1548 lines
54 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="primary" plain icon="el-icon-s-claim" size="mini" :disabled="single"
@click="handleReportCancel" 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>
<el-col :span="1.5">
<el-button type="success" plain :disabled="single" icon="el-icon-download" size="mini"
@click="showPrint">打印预览
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :ref="tableIndex" :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="订单编码" align="center" prop="workorderCodeSap" width="130"
:formatter="orderCodeFormate" />
<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">
<template slot-scope="scope">
<dict-tag :options="dict.type.report_sap_status" :value="scope.row.uploadStatus" />
</template>
</el-table-column>
<el-table-column label="SAP报工时间" align="center" prop="uploadTime" width="150" />
<el-table-column label="SAP报工信息" align="center" prop="uploadMsg" width="150"
:show-overflow-tooltip="true" />
</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>
<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="activeNameR">
<el-tab-pane v-for="(item, index) in libTabs" :key="index" :label="item.title" :name="item.libId">
<el-table v-loading="loading" :data="item.libList" ref="myPOrderTable" @select="pReportSelection"
@select-all="allReportSelection" :summary-method="getSummaries" show-summary>
<el-table-column width="60" align="center" type="selection" />
<el-table-column label="id" align="center" prop="id" v-if="false" />
<el-table-column label="工单编码" width="130" align="left" prop="workorderCode"
:show-overflow-tooltip="true" />
<el-table-column label="订单编码" width="110" align="left" prop="workorderCodeSap"
:show-overflow-tooltip="true" :formatter="orderCodeFormate" />
<el-table-column label="报工单号" width="110" 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>
<div class="demo-input-suffix">
<p>备注:</p>
<el-input type="textarea" @blur="addRemarksblur(item.libList, item.remark, index)"
v-model="item.remark" placeholder="请输入内容(300个字内)" maxlength=300 />
</el-input>
</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="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="activeNameC">
<el-tab-pane v-for="(item, index) in libConsumeTabs" :key="index" :label="item.title"
:name="item.libId">
<el-table v-loading="loading" highlight-current-row :ref="tableIndex + index" :data="item.libList"
@select="pConsumeSelection" @select-all="allConsumeSelection">
<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="parentOrder" align="center" prop="parentOrder" v-if="false" />
<el-table-column label="工单编码" width="140" align="left" prop="workorderCode"
:show-overflow-tooltip="true" />
<el-table-column label="订单编码" width="130" align="left" prop="workorderCodeSap"
:show-overflow-tooltip="true" :formatter="orderCodeFormate" />
<el-table-column label="物料编码" width="130" align="left" prop="materialCode"
:show-overflow-tooltip="true" :formatter="productCodeFormate" />
<el-table-column label="物料名称" width="280" align="left" prop="materialName"
:show-overflow-tooltip="true" />
<el-table-column label="BOM组件用量" width="150" align="left" prop="planQuantity" />
<el-table-column label="实际用量" width="150" 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="仓库" width="150" align="center" prop="warehouseCode">
<template slot-scope="scope">
<el-select v-model="scope.row.warehouseCode" placeholder="请选择仓库" width="50%"
@change="handleEdit(scope.$index, scope.row)"
v-if="scope.row.workorderCodeSap == null || scope.row.attr1" clearable>
<el-option v-for="work in cwarehouseList" :key="work.warehouseCode"
:label="work.warehouseName" :value="work.warehouseCode"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="150" />
<el-table-column fixed="right" label="操作" width="90">
<template slot-scope="scope">
<el-button @click.native.prevent="deleteBomRow(scope.$index, item.libList)" size="small"
type="danger" plain v-if="scope.row.workorderCodeSap == null || scope.row.attr1">
移除</el-button>
</template>
</el-table-column>
</el-table>
<div class="button-container">
<el-button size="mini" type="primary"
@click="addConsumeTableRow(item.libList, index)">新增物料</el-button>
</div>
</el-tab-pane>
<!--工单产品bom参考
<el-tab-pane label="BOM组成参照" name="pBom">
<el-table v-loading="loading" :data="pBomTableList" ref="pBomTable"
row-key="materialCode"
style="width: 100%"
max-height="480"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column width="50" align="center" type="selection"/>
<el-table-column label="物料编码" width="160" align="left" prop="materialCode"/>
<el-table-column label="物料名称" width="280" align="left" prop="materialName" :show-overflow-tooltip="true" />
<el-table-column label="物料组编码" width="100" align="left" prop="productGroup" />
<el-table-column label="物料组名称" width="100" align="center" prop="productGroupName" :show-overflow-tooltip="true" />
<el-table-column label="标准用量" align="center" prop="standardDosage"/>
<el-table-column label="损耗率" align="center" prop="lossRate" width="100"/>
<el-table-column label="损耗额" align="center" prop="lossAmount" width="100"/>
<el-table-column label="含损耗用量" align="center" prop="cilosses" width="100"/>
<el-table-column label="成本核算标识相关" align="center" prop="sanka" width="100"/>
</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="submitReportSAP" 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>
<!--最新领料单选择弹窗-->
<ItemSelectMaterial ref="itemSelectNewPrepare" @onSelected="onSelectNewPrepare"></ItemSelectMaterial>
<!--母工单--《《《《《《《《《《《《《《《-->
<!-- 打印预览弹出层 -->
<el-dialog title="生产订单确认入库" :visible.sync="printDialogVisible" width="1300px">
<div id="printFrom" class="my-print-box">
<el-form :ref="formRef" :model="form">
<!-- 表头-工单信息 -->
<el-row>
<el-col :span="7">
<img src="@/assets/logo/lanjv.png" class="report-logo" />
</el-col>
<el-col :span="10" class="center-text">
<h1>生产订单确认入库单</h1>
</el-col>
</el-row>
<el-row class="my-print-head">
<el-col :offset="10" :span="4"></el-col><!--中山榄菊日化实业有限公司-->
</el-row>
<!-- 导航栏 -->
<el-row class="my-print-nav">
<el-col :span="4">工厂:{{ printData.factory }}</el-col>
<el-col :span="4">工作中心:{{ printData.workCenter }}</el-col>
<el-col :span="4">打印日期:{{ printData.printDate }}</el-col>
<el-col :span="4">页次: 1/ 1</el-col>
</el-row>
<!-- 主数据 -->
<el-table v-if="refreshNewWorkerTable" v-loading="newWorkerLoading" class="my-print-table"
:data="printData.workTable" border style="width: 100%">
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column prop="workorderCodeSap" label="订单号" width="130"
:formatter="orderCodeFormate" />
<!--<el-table-column prop="workorderCode" label="生产工单号" width="150"></el-table-column>-->
<el-table-column prop="productCode" label="物料编码" width="150" :formatter="productCodeFormate" />
<el-table-column prop="productName" label="物料名称" width="300"></el-table-column>
<el-table-column prop="unit" label="单位" width="70"></el-table-column>
<el-table-column prop="version" label="版本"></el-table-column>
<!--<el-table-column prop="quantity" label="报工数量"></el-table-column>-->
<el-table-column prop="batch" label="批次" width="300"></el-table-column>
<el-table-column prop="quantityFeedback" label="批次数量" width="90"></el-table-column>
<!--<el-table-column prop="voucher" label="凭证"></el-table-column>-->
</el-table>
<br />
<el-row class="my-print-foot">
<el-col :offset="1" :span="6">车间负责人:</el-col>
<el-col :offset="1" :span="6">车间交货人:</el-col>
<el-col :offset="1" :span="6">:</el-col>
</el-row>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handlePrint(printData)"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
listReportWork, getReportWork, delReportWork, addReportWork, getWorkcenterList, getWarehouseList,
updateReportWork, reportSap, getBatchList, reportSapCancel,
getAllLevelReportList, deleteBomRowNow,
getReportSAPList, submitReportPS, submitReportPSSAP, getCKList,
getPutInOrderList
} from "@/api/mes/reportWork";
import { getConsumeList, submitConsumePS, submitReportInfo, getBomList, getAllLevelConsumeList } from "@/api/mes/reportWorkConsume";
import ReportWorkConsume from "./reportWorkConsume.vue";
import ItemSelectUser from "./selectUser.vue";
import ItemSelectWorkOrder from "./selectWorkOrder.vue";
import ItemSelectMaterial from "./selectMaterial.vue";
import ItemSelectEquip from "./selectEquip.vue";
import moment from 'moment';
import { getlistCK } from '@/api/wms/outorder'
export default {
name: "ReportWork",
dicts: ['report_type', 'report_sap_status'],
components: { ReportWorkConsume, ItemSelectUser, ItemSelectWorkOrder, ItemSelectEquip, ItemSelectMaterial },
data() {
return {
optType: undefined,
// 遮罩层
loading: true,
// 选中数组
ids: [],
selectRow: {},
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
consumeTotal: 0,
// 报工报表表格数据
reportWorkList: [],
libTabs: [],
libConsumeTabs: [],
pOrderTableList: [],
sOrderTableList: [],
pConsumeTableList: [],
sConsumeTableList: [],
pBomTableList: [],
sBomTableList: [],
activeName0: 'first',
activeName: 'pOrder',
activeNameR: 'order1',
activeNameC: 'consume1',
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: [],
printDialogVisible: false,
// 打印
formRef: 'form',
printData: {
printable: 'printFrom',
ignore: ['no-print'],
workCenter: "暂无数据",
SAPNo: null,
manufacture: null,
auditor: null,
printDate: null,
factory: null,
productDate: null,
workTable: [],
},
refreshNewWorkerTable: true,
//工单遮罩层
workerLoading: false,
newWorkerLoading: false,
//工单重新渲染表格
refreshWorkerTable: true,
// 表单校验
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" }
],
},
consumeList: [],
cwarehouseList: [],
tableIndex: 'tableIndex',
// 选择物料汇总
pConsumeRowsall:[],
};
},
created() {
this.getDate();
this.getWorkcenterList();
this.getWarehouseList();
},
methods: {
getWorkcenterList() {
getWorkcenterList().then(data => {
this.options1 = data;
});
},
//获取报工物料损耗仓库下拉列表
getWarehouseList() {
getWarehouseList({}).then(data => {
this.cwarehouseList = data;
});
},
//产品编码格式化
productCodeFormate(row, column, cellValue) {
if (cellValue != null) {
return cellValue.slice(7, 18); //返回值
}
},
//订单编码格式化
orderCodeFormate(row, column, cellValue) {
if (cellValue != null) {
return cellValue.slice(3, 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.libTabs = [];
this.libConsumeTabs = [];
this.pOrderTableList = [];
this.sOrderTableList = [];
this.pReportRows = [];
this.sReportRows = [];
this.reportRows = [];
this.pConsumeTableList = [];
this.sConsumeTableList = [];
this.pBomTableList = [],
this.sBomTableList = [],
this.pConsumeRows = [];
this.sConsumeRows = [];
this.consumeRows = [];
this.consumeList = [];
},
/** 搜索按钮操作 */
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 == '1') {
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 == '1') {
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 == '1') {
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) {
this.loading = true;
let sr = this.selectRow[0];
if (sr.uploadStatus == '1') {
this.$modal.msgError(`上报sap已完成,不能重复报工`);
return
}
const code = sr.workorderCode;
let _this = this;
this.$modal.confirm('是否确认工单"' + code + '"的数据项向sap报工').then(function () {
reportSap(code).then(response => {
if (response != null && response.code == 200) {
_this.$modal.msgSuccess("报工成功");
}
_this.loading = false;
_this.getList();
});
}).then(() => {
}).catch(() => {
});
},
/**报工撤销sap。报工状态回退**/
handleReportCancel() {
this.loading = true;
let sr = this.selectRow[0];
const code = sr.workorderCode;
let _this = this;
this.$modal.confirm('是否确认工单"' + code + '"的数据项撤销sap报工').then(function () {
reportSapCancel(code).then(response => {
if (response != null && response.code == 200) {
_this.$modal.msgSuccess("报工撤销成功");
}
_this.loading = false;
_this.getList();
});
}).then(() => {
}).catch(() => {
});
},
/** 报工详情按钮操作 */
handleReportHz(row) {
this.reset();
let sr = row;
if (sr.workorderCode == undefined) {
sr = this.selectRow[0]
}
if (sr.uploadStatus == '1') {
this.optType = 'view'
} else {
this.optType = ''
}
this.queryParams.workorderCode = sr.workorderCode;
//查询工单报工记录列表
getAllLevelReportList(this.queryParams).then(response => {
this.queryParams.workorderCode = '';
this.openReport = true;
this.titleReport = "工单报工详情";
this.libTabs = response;
});
},
handleEdit(index, row) {
console.log('row:', index, row);
},
// 多选框选中数据
pReportSelection(selection, row) {
const allRows = this.pReportRows.concat(selection)
this.pReportRows = allRows.reduce((acc, cur) => {
const hasDuplicate = acc.some(item => item.batch === cur.batch
&& item.workorderCode === cur.workorderCode);
if (!hasDuplicate) {
acc.push(cur);
}
return acc;
}, []);
// 当取消勾选时selectedRows 会移除对应的行数据
if (selection.indexOf(row) === -1) {
console.log('Row unchecked:', row);
console.log('过滤前:', this.pReportRows);
var newReportRows = [];
this.pReportRows.forEach(item => {
if (item.workorderCode != row.workorderCode
|| item.batch != row.batch) {
newReportRows.push(item)
}
})
this.pReportRows = newReportRows;
console.log('过滤后:', this.pReportRows);
}
},
allReportSelection(selection) {
const allRows = this.pReportRows.concat(selection)
this.pReportRows = allRows.reduce((acc, cur) => {
const hasDuplicate = acc.some(item => item.batch === cur.batch
&& item.workorderCode === cur.workorderCode);
if (!hasDuplicate) {
acc.push(cur);
}
return acc;
}, []);
},
submitReport() {
this.reportRows = this.pReportRows;
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.workorderCode == undefined) {
sr = this.selectRow[0]
}
if (sr.uploadStatus == '1') {
this.optType = 'view'
} else {
this.optType = ''
}
this.queryParams.workorderCode = sr.workorderCode;
//查询母工单报工记录列表
getAllLevelConsumeList(this.queryParams).then(response => {
this.libConsumeTabs = response;
this.openConsume = true;
this.titleConsume = "工单报工物料损耗详情";
this.queryParams.workorderCode = '';
});
this.queryParams.workorderCode = sr.workorderCode;
//查询母工单BOM记录列表
//this.queryParams.parentOrder = '0';
//getBomList(this.queryParams).then(response => {
// this.pBomTableList = this.handleTree(response, 'materialCode', 'pMaterialCode')
//});
},
// 多选框选中数据(报工物料消耗专用特殊逻辑不准改zxl)
pConsumeSelection(selection, row) {
const allRows = this.pConsumeRows.concat(selection)
this.pConsumeRows = allRows.reduce((acc, cur) => {
const hasDuplicate = acc.some(item => item.materialCode === cur.materialCode
&& item.workorderCode === cur.workorderCode);
if (!hasDuplicate) {
acc.push(cur);
}
return acc;
}, []);
// 当取消勾选时selectedRows 会移除对应的行数据
if (selection.indexOf(row) === -1) {
console.log('Row unchecked:', row);
console.log('过滤前:', this.pConsumeRows);
var newPConsumeRows = [];
this.pConsumeRows.forEach(item => {
if (item.workorderCode != row.workorderCode
|| item.materialCode != row.materialCode) {
newPConsumeRows.push(item)
}
})
this.pConsumeRowsall = newPConsumeRows
this.pConsumeRows = newPConsumeRows;
console.log('过滤后:', this.pConsumeRows,this.pConsumeRows);
}
},
// 多选框选中all数据(报工物料消耗专用特殊逻辑不准改zxl)
allConsumeSelection(selection, row) {
const allRows = this.pConsumeRows.concat(selection)
this.pConsumeRows = allRows.reduce((acc, cur) => {
const hasDuplicate = acc.some(item => item.materialCode === cur.materialCode
&& item.workorderCode === cur.workorderCode);
if (!hasDuplicate) {
acc.push(cur);
}
return acc;
}, []);
},
sConsumeSelection(selection) {
this.sConsumeRows = selection;
},
submitConsume() {
// this.loading = true;
this.consumeRows = this.pConsumeRows;
console.log(this.consumeRows)
if (this.consumeRows == 0) {
this.$modal.msgError(`请选择要修改的物料数据!`);
this.loading = false;
return false;
}
// submitConsumePS(this.consumeRows).then(response => {
// this.$modal.msgSuccess("报工信息修改成功");
// this.openConsume = false;
// this.reset();
// this.getList();
// this.loading = false;
// });
},
/** 导出按钮操作 */
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();
});
},
// 打印预览-浏览器打印
handlePrint(params) {
printJS({
printable: params.printable, // 'printFrom', // 标签元素id
type: params.type || 'html',
maxWidth: 1500, // 最大宽度
font_size: "",// 设置字体大小
header: params.header, // '表单',
targetStyles: ['*'],
style: '@page {margin:0 10mm};', // 可选-打印时去掉眉页眉尾
ignoreElements: params.ignore || [], // ['no-print']
properties: params.properties || null
})
},
// 打印预览-点击打印预览按钮
showPrint() {
// 清楚缓存
this.printData.workCenter = "暂无数据";
this.printData.printDate = null;
this.printData.workTable = [];
this.printData.factory = null;
this.printData.productDate = null;
// 打开工单信息对话框
this.printDialogVisible = true;
this.printData.printDate = moment(new Date()).format('YYYY.MM.DD');
this.printData.manufacture = this.$store.state.user.name;
this.newWorkerLoading = true // 设置加载状态为true表示正在加载
this.refreshNewWorkerTable = false // 先将refreshProTable设置为false隐藏表格
getPutInOrderList(this.selectRow[0].workorderCode).then(response => {
this.printData.workTable = response.data;
this.printData.factory = response.data[0].factoryCode;
this.printData.workCenter = response.data[0].workshopName;
this.refreshNewWorkerTable = true // 立即将refreshProTable设置为true显示表格
this.newWorkerLoading = false // 设置加载状态为false表示加载完成
})
},
//物料损耗表格--删除
deleteBomRow(index, rows) {
this.$modal.confirm('是否确认删除?确认后,不需要点击下方确定,立马删除!').then(function () {
if (rows[index].recordId != null) {
return deleteBomRowNow(rows[index].recordId);
}
}).then(() => {
var newPConsumeRows = [];
this.pConsumeRows.forEach(item => {
if (item.workorderCode != rows[index].workorderCode
|| item.materialCode != rows[index].materialCode) {
newPConsumeRows.push(item)
}
})
this.pConsumeRows = newPConsumeRows;
rows.splice(index, 1);
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
},
//物料损耗表格--新增
addConsumeTableRow(rows, index) {
this.consumeList = rows;
if (rows.length == 0) {
this.$modal.msgError(`上位机尚未填写损耗,不允许提前新增`);
return
}
this.$refs.itemSelectNewPrepare.showFlag = true;
this.$refs.itemSelectNewPrepare.init(rows[0].workorderCode, this.selectRow[0].workorderCode, index, 'bcp');//半成品
},
//物料损耗表格--新增确认
onSelectNewPrepare(obj, tableIndx) {
const _this = this
this.pConsumeRowsall = Array.from(new Set([...this.pConsumeRowsall, ...obj].map(JSON.stringify))).map(JSON.parse);
console.log(this.pConsumeRowsall,this.pConsumeRows,'111111')
debugger
let sr = this.selectRow[0]
for (let i = 0; i < obj.length; i++) {
if (this.pConsumeRows.length != 0) {
this.pConsumeRows.forEach(item => {
if (item.materialCode == obj[i].component) {
this.$modal.msgError("选择物料重复,自动过滤!");
} else {
const row = {
workorderCode: obj[i].workorderCode,
materialCode: obj[i].component,
materialName: obj[i].componentName,
quantity: obj[i].quantity,
unit: obj[i].unit,
recoil: "X",
parentOrder: sr.workorderCode
};
this.consumeList.push(row);
this.$nextTick(() => {
let dynamicRef = 'tableIndex' + tableIndx;
console.log(this.consumeList, row, this.pConsumeRows,'22222')
_this.$refs[dynamicRef][0].toggleRowSelection(row);
});
}
})
} else {
const row = {
workorderCode: obj[i].workorderCode,
materialCode: obj[i].component,
materialName: obj[i].componentName,
quantity: obj[i].quantity,
unit: obj[i].unit,
recoil: "X",
parentOrder: sr.workorderCode
};
this.consumeList.push(row);
// 默认勾选新添加的这一行
this.$nextTick(() => {
let dynamicRef = 'tableIndex' + tableIndx;
console.log(this.consumeList, row, this.pConsumeRows,'333333')
_this.$refs[dynamicRef][0].toggleRowSelection(row);
});
}
}
},
//添加备注
addRemarksblur(table, remark, index) {
table.forEach(item => {
item.remark = remark;
})
}
}
};
</script>
<style scoped>
.print-btn {
margin-bottom: 15px;
margin-left: 10px;
}
.center-text {
text-align: center;
}
.report-logo {
margin-top: 15px;
margin-left: 15px;
height: 38px;
}
.button-container {
text-align: right;
margin-top: 10px;
margin-right: 10px;
}
.my-print-table {
font-size: 20px;
}
.my-print-nav {
font-size: 19px;
}
.my-print-foot {
font-size: 19px;
}
</style>