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.

1792 lines
65 KiB
Vue

2 years ago
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="98px">
1 year ago
<el-form-item label="生产订单编码" prop="orderCode">
<el-input v-model="queryParams.orderCode" placeholder="请输入生产订单编码" clearable
@keyup.enter.native="handleQuery" />
2 years ago
</el-form-item>
2 years ago
<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" />
2 years ago
</el-form-item>
2 years ago
</el-form-item>
1 year ago
<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"
12 months ago
clearable
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
1 year ago
</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>
1 year ago
</el-select>
</el-form-item>
<el-form-item <el-button type="primary" icon="el-icon-search" size="mini"
@click="handleQuery">搜索</el-button>
2 years ago
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
2 years ago
</el-form>
<el-row :gutter="10" class="mb8">
<!--<el-col :span="1.5">
2 years ago
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['mes:reportWork:add']"
>新增</el-button>
</el-col>-->
1 year ago
<!--<el-col :span="1.5">
2 years ago
<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>
-->
1 year ago
<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>
1 year ago
<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>
1 year ago
</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>
1 year ago
</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>
2 years ago
<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>
2 years ago
</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>
2 years ago
<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" />
1 year ago
<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>
1 year ago
</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" />
1 year ago
<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" />
2 years ago
<el-table-column label="单位" align="center" prop="unit" />
1 year ago
<el-table-column label="班次" align="center" prop="shiftName" />
<el-table-column label="累计报工数量" align="center" prop="quantityFeedback" width="100" />
<!--<el-table-column label="用人数" align="center" prop="useMan" width="100"/>-->
1 year ago
<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" />
2 years ago
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
2 years ago
<!-- 添加或修改报工报表对话框 -->
2 years ago
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
<el-tabs v-model="activeName0">
<el-tab-pane label="报工信息" name="first">
1 year ago
<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>
1 year ago
</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>
1 year ago
</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 />
1 year ago
</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 />
1 year ago
</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>
1 year ago
</el-input>
</el-form-item>
</el-col>
</el-row>
1 year ago
<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">
1 year ago
</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>
1 year ago
</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 />
1 year ago
</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>
1 year ago
</el-input>
</el-form-item>
<el-form-item label="线体编码" prop="machineCode" v-if="false">
<el-input v-model="form.machineCode" placeholder="请输入线体编码" disabled />
1 year ago
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
1 year ago
<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">
1 year ago
</el-option>
</el-select>
</el-form-item>
</el-col>
1 year ago
<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 />
1 year ago
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品名称(母)" prop="productName">
<el-input v-model="form.productName" placeholder="请输入产品名称" disabled />
1 year ago
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="排产数量(母)" prop="quantity">
<el-input v-model="form.quantity" disabled />
1 year ago
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位(母)" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" disabled />
1 year ago
</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>
1 year ago
</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>
1 year ago
</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>
1 year ago
</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 />
1 year ago
</el-form-item>
<el-form-item label="产品编码(子)" prop="productCodes">
<el-input v-model="form.productCodes" placeholder="请输入产品编码" disabled />
1 year ago
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品名称(子)" prop="productNames">
<el-input v-model="form.productNames" placeholder="请输入产品名称" disabled />
1 year ago
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="排产数量(子)" prop="quantitys">
<el-input v-model="form.quantitys" disabled />
1 year ago
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位(子)" prop="units">
<el-input v-model="form.units" placeholder="请输入单位" disabled />
1 year ago
</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>
1 year ago
</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>
1 year ago
</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>
1 year ago
</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" />
1 year ago
</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>
1 year ago
</div>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType == 'view'"></el-button>
1 year ago
<el-button type="primary" @click="submitReportInfo" v-else></el-button>
<el-button @click="cancel"> </el-button>
1 year ago
</div>
1 year ago
</el-dialog>
<!-- 报工信息详情 -->
1 year ago
<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" />
11 months ago
<el-table-column label="订单编码" width="105" align="left" prop="workorderCodeSap"
:show-overflow-tooltip="true" :formatter="orderCodeFormate" />
11 months ago
<el-table-column label="报工单号" width="115" align="left" prop="reportCode"
:show-overflow-tooltip="true" />
10 months ago
<el-table-column label="批次" width="250" align="left" prop="batch">
<template slot-scope="scope">
<el-input size="small" v-model="scope.row.batch"
@change="handleEdit(scope.$index, scope.row)"
></el-input>
</template>
</el-table-column>
<el-table-column label="单位" align="center" prop="unit" />
11 months ago
<el-table-column label="报工数量" width="120" align="left" prop="quantityFeedback"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.quantityFeedback"
10 months ago
@change="handleEdit(scope.$index, scope.row)"
:disabled="scope.row.attr1=='1'"
></el-input>
1 year ago
</template>
</el-table-column>
11 months ago
<el-table-column label="工时数" align="center" prop="workTime" width="120">
1 year ago
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.workTime"
10 months ago
@change="handleEdit(scope.$index, scope.row)"
:disabled="scope.row.attr1=='1'"
></el-input>
1 year ago
</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"
10 months ago
@change="handleEdit(scope.$index, scope.row)"
:disabled="scope.row.attr1=='1'"
></el-input>
1 year ago
</template>
</el-table-column>
<el-table-column label="报工单编号" align="center" prop="reportCode" width="120" />
<el-table-column label="创建时间" align="center" prop="createTime" width="150" />
10 months ago
<!---->
10 months ago
<el-table-column fixed="right" label="操作" width="160">
11 months ago
<template slot-scope="scope">
10 months ago
<el-button @click.native.prevent="deleteReportRow(scope.$index, item.libList)" size="small" type="danger" plain
10 months ago
v-if="item.libId == 'order1'&&scope.row.uploadStatus!='1'&&scope.row.attr1!= '1'">
11 months ago
删除</el-button>
10 months ago
10 months ago
<el-button @click.native.prevent="preReportRow(scope.$index, item.libList)" size="small" type="success" plain
10 months ago
v-if="item.libId == 'order1'&&scope.row.attr1!='1'&&scope.row.uploadStatus!='1'" >
预报工</el-button>
11 months ago
</template>
</el-table-column>
10 months ago
1 year ago
</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>
1 year ago
</el-tabs>
2 years ago
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType == 'view'"></el-button>
10 months ago
<el-button type="primary" :disabled="loading" @click="submitReport" v-else> </el-button>
<el-button @click="cancel"> </el-button>
2 years ago
</div>
</el-dialog>
1 year ago
<!-- 报工损耗 -->
<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" />
8 months ago
<el-table-column label="单位数量" align="center" prop="erfmg" />
<el-table-column label="条目单位" align="center" prop="erfme" />
<el-table-column label="实际用量" width="150" align="left" prop="quantity"
:show-overflow-tooltip="true">
1 year ago
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.quantity"
@change="handleEdit(scope.$index, scope.row)"></el-input>
1 year ago
</template>
</el-table-column>
<el-table-column label="单位" width="50" align="center" prop="unit" />
<el-table-column label="反冲标识" align="center" prop="recoil" />
10 months ago
<el-table-column label="sap项目编码" align="center" prop="rspos" />
<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="reportCode" width="120" />
<el-table-column label="创建时间" align="center" prop="createTime" width="150" />
<el-table-column fixed="right" label="操作" width="90">
1 year ago
<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>
1 year ago
</template>
</el-table-column>
1 year ago
</el-table>
<div class="button-container">
<el-button :disabled="loading" size="mini" type="primary"
@click="addConsumeTableRow(item.libList, index)">新增物料</el-button>
</div>
1 year ago
</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>
-->
1 year ago
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType == 'view'"></el-button>
<el-button :disabled="loading" type="primary" @click="submitConsume" v-else> </el-button>
1 year ago
<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="SAPpReportSelection" :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="250" align="left" prop="batchSK">
<template slot-scope="scope">
<el-input v-model="scope.row.batchSK" @blur="handleInput(scope.row, 'batchSK')" />
</template>
</el-table-column>
<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="已过账数量" width="250" align="left" prop="sapquantity"
:show-overflow-tooltip="true" :formatter="formatSapQuantity" />
<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"
12 months ago
:data="printData.workTable" border style="width: 100%" :summary-method="getRKSummaries" show-summary>
<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" />
1 year ago
<el-table-column prop="productName" label="物料名称" width="200"></el-table-column>
<el-table-column prop="unit" label="单位" width="70"></el-table-column>
1 year ago
<el-table-column prop="version" width="90" label="版本"></el-table-column>
<!--<el-table-column prop="quantity" label="报工数量"></el-table-column>-->
1 year ago
<el-table-column prop="batch" label="批次" width="210"></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>
2 years ago
</div>
</template>
<script>
import {
listReportWork,
getReportWork,
11 months ago
delReportWork,deleteReportNow,
addReportWork,
getWorkcenterList,
getWarehouseList,
updateReportWork,
reportSap,
getBatchList,
reportSapCancel,
getAllLevelReportList,
deleteBomRowNow,
getReportSAPList,
submitReportPS,
submitReportPSSAP,
getCKList,
10 months ago
getPutInOrderList,preReportRow
} from "@/api/mes/reportWork";
import {
getConsumeList,
submitConsumePS,
submitReportInfo,
getBomList,
getAllLevelConsumeList,
} from "@/api/mes/reportWorkConsume";
import ReportWorkConsume from "./reportWorkConsume.vue";
1 year ago
import ItemSelectUser from "./selectUser.vue";
import ItemSelectWorkOrder from "./selectWorkOrder.vue";
import ItemSelectMaterial from "./selectMaterial.vue";
1 year ago
import ItemSelectEquip from "./selectEquip.vue";
import moment from "moment";
import { getlistCK } from "@/api/wms/outorder";
2 years ago
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: [],
// 选择物料汇总
mergedArray: [],
};
},
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();
},
formatSapQuantity(row, column, cellValue) {
// 去掉末尾的零
return cellValue.toString().replace(/\.?0+$/, '');
},
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() {
12 months ago
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");
12 months ago
}else{
this.queryParams.feedbackTimeStart = null;
this.queryParams.feedbackTimeEnd = null;
}
this.loading = true;
11 months ago
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() {
12 months ago
window.location.reload();
this.open = false;
this.openReport = false;
this.openReportSAP = false;
this.openConsume = false;
this.loading = false;
this.reset();
12 months ago
this.getList();
},
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,
12 months ago
endReport: "0"
};
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
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 = [];
this.pConsumeRowsall = [];
this.mergedArray = [];
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
11 months ago
this.queryParams.machineCode = "";
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.queryParams.machineCode = sr.machineCode;
// 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;
const machineCode = sr.machineCode;
let _this = this;
this.$modal
.confirm('是否确认线体'+machineCode+',工单' + code + '的数据项向sap报工')
.then(function () {
reportSap(code,machineCode).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;
const machineCode = sr.machineCode;
let _this = this;
this.$modal
.confirm('是否确认工单"' + code + '"的数据项撤销sap报工')
.then(function () {
reportSapCancel(code,machineCode).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;
this.queryParams.machineCode = sr.machineCode;
//查询工单报工记录列表
getAllLevelReportList(this.queryParams).then((response) => {
this.queryParams.workorderCode = "";
11 months ago
this.queryParams.machineCode = "";
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) =>
10 months ago
item.batch === cur.batch && item.workorderCode === cur.workorderCode && item.reportCode === cur.reportCode
);
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) =>
10 months ago
item.batch === cur.batch && item.workorderCode === cur.workorderCode && item.reportCode === cur.reportCode
);
if (!hasDuplicate) {
acc.push(cur);
}
return acc;
}, []);
},
// 多选框选中数据
SAPpReportSelection(selection) {
this.pReportRows = selection;
},
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.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
this.getList();
});
},
submitReportSAP() {
this.reportRows = this.pReportRows.concat(this.sReportRows);
console.log(this.reportRows);
if (this.reportRows == 0) {
this.$modal.msgError(`请选择数据`);
return false;
}
// 使用 for...of 循环遍历 reportRows
for (const row of this.reportRows) {
console.log("当前行: ", row.batchSK); // 输出当前行
const batchSK = row.batchSK;
// 使用正则表达式检查是否全部为大写字母
const isUpperCase = /^[A-Z0-9]+$/.test(batchSK);
if (isUpperCase) {
console.log("当前行的 batchSK (符合要求): ", batchSK); // 输出符合要求的 batchSK
} else {
console.log("当前行的 batchSK 不符合要求 (应为大写): ", batchSK); // 输出不符合要求的 batchSK
this.$modal.msgError("批次不符合要求 (英文应为大写): " + batchSK); // 显示错误信息
return; // 结束方法的执行
}
}
// 使用 forEach 循环遍历 reportRows
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;
this.queryParams.machineCode = sr.machineCode;
//查询母工单报工记录列表
getAllLevelConsumeList(this.queryParams).then((response) => {
this.libConsumeTabs = response;
this.openConsume = true;
this.titleConsume = "工单报工物料损耗详情";
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
});
},
// 多选框选中数据(报工物料消耗专用特殊逻辑不准改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 &&
10 months ago
item.workorderCode === cur.workorderCode &&
item.rspos === cur.rspos
);
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 ||
10 months ago
item.materialCode != row.materialCode ||
item.rspos != row.rspos
) {
newPConsumeRows.push(item);
}
});
this.mergedArray = newPConsumeRows;
this.pConsumeRows = newPConsumeRows;
console.log("过滤后:", this.pConsumeRows);
}
console.log(this.pConsumeRows, selection, "wwwwww");
},
// 多选框选中all数据(报工物料消耗专用特殊逻辑不准改zxl)
allConsumeSelection(selection, row) {
console.log(this.pConsumeRows, selection, "eeeeee");
const allRows = this.pConsumeRows.concat(selection);
this.pConsumeRows = allRows.reduce((acc, cur) => {
const hasDuplicate = acc.some(
(item) =>
item.materialCode === cur.materialCode &&
10 months ago
item.workorderCode === cur.workorderCode &&
item.rspos === cur.rspos
);
if (!hasDuplicate) {
acc.push(cur);
}
return acc;
}, []);
},
10 months ago
//sConsumeSelection(selection) {
//this.sConsumeRows = selection;
//},
submitConsume() {
this.loading = true;
this.pConsumeRows = this.pConsumeRows.concat(
this.mergedArray.filter(
(obj2) =>
!this.pConsumeRows.some(
10 months ago
(obj1) => obj1.materialCode === obj2.materialCode && obj1.rspos === obj2.rspos
)
)
);
this.consumeRows = this.pConsumeRows;
console.log(this.consumeRows, this.mergedArray);
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;
})
.catch((error) => {
// 请求失败的处理
this.$modal.msgError(`报工信息修改失败`);
this.loading = false; // 关闭 loading 状态
});
},
/** 导出按钮操作 */
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表示加载完成
});
},
11 months ago
//报工详情表格--删除
deleteReportRow(index, rows) {
this.$modal.confirm('是否确认删除?确认后,不需要点击下方确定,立即生效!').then(function() {
return deleteReportNow(rows[index].reportCode);
}).then(() => {
10 months ago
11 months ago
var sr = rows[index];
this.queryParams.workorderCode = sr.workorderCode;
this.queryParams.machineCode = sr.machineCode;
//查询工单报工记录列表
getAllLevelReportList(this.queryParams).then((response) => {
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
this.openReport = true;
this.titleReport = "工单报工详情";
this.libTabs = response;
});
rows.splice(index, 1);
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
10 months ago
//报工详情表格--预报工
preReportRow(index, rows) {
let _this = this;
this.$modal.confirm('是否确认预报工?').then(function() {
_this.loading = true;
return preReportRow(rows[index].reportCode);
}).then(() => {
this.$modal.msgSuccess("预报工成功");
debugger
var sr = rows[index];
this.queryParams.workorderCode = sr.workorderCode;
this.queryParams.machineCode = sr.machineCode;
//查询工单报工记录列表
getAllLevelReportList(this.queryParams).then((response) => {
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
this.openReport = true;
this.titleReport = "工单报工详情";
this.libTabs = response;
});
10 months ago
_this.loading = false;
10 months ago
}).catch(() => {});
},
//物料损耗表格--删除
deleteBomRow(index, rows) {
10 months ago
let _this = this;
this.$modal
.confirm("是否确认删除?确认后,不需要点击下方确定,立马删除!")
.then(function () {
if (rows[index].recordId != null) {
10 months ago
_this.loading = true;
deleteBomRowNow(rows[index].recordId);
}
})
.then(() => {
var newPConsumeRows = [];
10 months ago
_this.pConsumeRows.forEach((item) => {
if (
item.workorderCode != rows[index].workorderCode ||
item.materialCode != rows[index].materialCode
) {
newPConsumeRows.push(item);
}
});
10 months ago
_this.pConsumeRows = newPConsumeRows;
rows.splice(index, 1);
10 months ago
_this.$modal.msgSuccess("删除成功");
_this.loading = false;
})
.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;
let sr = this.selectRow[0];
this.pConsumeRowsall = Array.from(
new Set([...this.pConsumeRowsall, ...obj].map(JSON.stringify))
).map(JSON.parse);
let arry2 = [];
10 months ago
this.pConsumeRowsall.forEach((item,i) => {
const row = {
workorderCode: item.workorderCode,
materialCode: item.component,
materialName: item.componentName,
quantity: item.quantity,
unit: item.unit,
recoil: "X",
10 months ago
parentOrder: sr.workorderCode
};
arry2.push(row);
});
this.mergedArray = this.pConsumeRows.concat(
arry2.filter(
10 months ago
(obj2) =>!this.pConsumeRows.some(
(obj1) => obj1.materialCode === obj2.materialCode && obj1.rspos === obj2.rspos
)
)
);
10 months ago
//const materialCodeSet = new Set(
// this.pConsumeRows.map((item) => item.materialCode)
//);
const rsposSet = new Set(
this.pConsumeRows.map((item) => item.rspos)
);
const handleInput = (row, prop) => {
// 在这里处理输入值,比如验证或保存到服务器
console.log(`Row: ${JSON.stringify(row)}, Prop: ${prop}`);
};
// 遍历obj数组
for (let i = 0; i < obj.length; i++) {
// 判断obj中的component是否已存在于pConsumeRows中
10 months ago
if (!rsposSet.has(obj[i].rspos)|| obj[i].rspos==null) {
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,
10 months ago
rspos: obj[i].rspos
};
// 将满足条件的行数据添加到consumeList中
this.consumeList.push(row);
this.pConsumeRows.push(row);
this.$nextTick(() => {
let dynamicRef = "tableIndex" + tableIndx;
console.log(this.consumeList, row, this.pConsumeRows, "22222");
_this.$refs[dynamicRef][0].toggleRowSelection(row);
});
} else {
this.$modal.msgError("选择物料重复,自动过滤!");
}
}
},
//添加备注
addRemarksblur(table, remark, index) {
table.forEach((item) => {
item.remark = remark;
});
},
12 months ago
getRKSummaries(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
}
if(column.label == "批次"){
sums[index] = "合计";
}
});
return sums;
},
},
2 years ago
};
</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>