| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519 |
- <template>
- <div class="app-container">
- <!-- 工具栏 -->
- <el-row :gutter="10">
- <el-col :span="1.5" class="mb20">
- <el-button
- type="primary"
- :loading="submitLoading"
- size="mini"
- icon="el-icon-finished"
- :disabled="
- apiStatus === 1 ||
- apiStatus === 2 ||
- choiceStatus ||
- disableApproval ||
- (apiStatus === 0 && !tailSelected)
- "
- @click="handleTesting"
- >{{ apiStatus === -1 ? "送审" : "批核" }}</el-button
- >
- <el-button
- type="primary"
- size="mini"
- icon="el-icon-check"
- :loading="saveLoading"
- :disabled="apiStatus !== -1"
- @click="handleSave()"
- >保存</el-button
- >
- <el-button
- v-hasPermi="['wms:material-item:update']"
- size="mini"
- type="primary"
- icon="el-icon-refresh"
- :disabled="apiStatus !== 0 || resetInspect"
- :loading="reLoading"
- @click="handleResetInspection"
- >重新检验</el-button
- >
- <el-button
- type="primary"
- icon="el-icon-printer"
- :loading="printLoading"
- :disabled="apiStatus === -1 || apiStatus === 0"
- size="mini"
- @click="handlePrint"
- >检验单打印</el-button
- >
- <el-button
- type="primary"
- icon="el-icon-thumb"
- :loading="submitLoading"
- :disabled="apiStatus !== -1 || ifModify > 0"
- size="mini"
- @click="handleApply"
- >申请修改检验标准</el-button
- >
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="primary"
- icon="el-icon-magic-stick"
- :loading="printLoading"
- :disabled="apiStatus !== -1"
- size="mini"
- @click="handleAllInspect"
- >一键检验</el-button
- >
- </el-col>
- <el-col :span="1.5">
- <el-button
- v-hasPermi="['wms:ipqc-actual-file:query']"
- type="primary"
- size="mini"
- icon="el-icon-upload2"
- :loading="printLoading"
- @click="handleUploadFile"
- >{{ apiStatus == -1 ? "上传附件" : "查看附件" }}</el-button
- >
- </el-col>
- <!-- <el-col :span="1.5">
- <el-button
- v-hasPermi="['wms:delivery-notice-master:query']"
- type="primary"
- size="mini"
- icon="el-icon-view"
- :loading="supplierLoading"
- @click="handleViewSupplierFile"
- >供应商附件</el-button
- >
- </el-col> -->
- <el-col :span="1.5">
- <el-button
- type="primary"
- size="mini"
- icon="el-icon-view"
- :loading="supplierLoading"
- @click="handleViewSupplierFile"
- >供应商附件</el-button
- >
- </el-col>
- </el-row>
- <!-- 搜索工作栏 -->
- <el-form
- v-show="showSearch"
- ref="queryForm"
- :model="formParams"
- size="small"
- label-width="98px"
- disabled
- >
- <!-- <el-descriptions
- class="margin-top mb10"
- :column="3"
- style="width: 100%;"
- border
- >
- <el-descriptions-item label="IQC编号">{{ formParams.materialLots }}</el-descriptions-item>
- <el-descriptions-item label="物料编码">{{ formParams.materialNo }}</el-descriptions-item>
- <el-descriptions-item label="物料名称">{{ formParams.materialName }}</el-descriptions-item>
- <el-descriptions-item label="来料数量">{{ formParams.receiptQty }} ({{ $route.query.unitCode }})</el-descriptions-item>
- <el-descriptions-item label="供应商">{{ formParams.supplierName }}</el-descriptions-item>
- <el-descriptions-item label="规格">{{ formParams.size }}</el-descriptions-item>
- <el-descriptions-item label="检验标准版本">{{ formParams.version || '草稿' }}</el-descriptions-item>
- <el-descriptions-item label="审核时间">{{ formParams.auditTimeStr }}</el-descriptions-item>
- <el-descriptions-item label="保质期">{{ formParams.validTillStr }}</el-descriptions-item>
- <el-descriptions-item label="送货批次">{{ formParams.deliverBatch }}</el-descriptions-item>
- <el-descriptions-item v-if="currentRows.length > 0 && (currentRows[0].checkCategory === '5' || currentRows[0].tool === '3')">
- <VueQr
- :text="formParams.materialLots+','+currentRows[0].id"
- :binarize="true"
- :size="65"
- :margin="5"
- />
- </el-descriptions-item>
- </el-descriptions> -->
- <el-row :gutter="20">
- <el-col :span="8">
- <el-form-item label="IQC编号" prop="materialLots">
- <el-input
- v-model="formParams.materialLots"
- placeholder="请输入IQC编号"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="物料编码" prop="materialNo">
- <el-input
- v-model="formParams.materialNo"
- placeholder="请输入物料编码"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="物料名称" prop="materialName">
- <el-input
- v-model="formParams.materialName"
- placeholder="请输入物料名称"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="来料数量" prop="receiptQty">
- <el-input
- v-model="formParams.receiptQty"
- placeholder="请输入来料数量"
- clearable
- @keyup.enter.native="handleQuery"
- >
- <template slot="append">{{ $route.query.unitCode }}</template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="供应商" prop="supplierName">
- <el-input
- v-model="formParams.supplierName"
- placeholder="请输入供应商"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="规格" prop="size">
- <el-input
- v-model="formParams.size"
- placeholder="请输入规格"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="检验标准版本" prop="version">
- <el-input
- v-model="formParams.version"
- placeholder="草稿"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="审核时间" prop="auditTimeStr">
- <el-input
- v-model="formParams.auditTimeStr"
- placeholder="请输入审核时间"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="保质期" prop="validTillStr">
- <el-input
- v-model="formParams.validTillStr"
- placeholder="请输入保质期"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="送货批次" prop="deliverBatch">
- <el-input
- v-model="formParams.deliverBatch"
- placeholder="请输入送货批次"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="生产日期" prop="produceDate">
- <el-input
- v-model="formParams.produceDate"
- placeholder="请输入送货批次"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="图号" prop="drawingNo">
- <el-input
- v-model="formParams.drawingNo"
- placeholder="请输入图号"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="客户料号" prop="customerMaterialNo ">
- <el-input
- v-model="formParams.customerMaterialNo"
- placeholder="请输入客户料号"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item
- v-if="
- currentRows.length > 0 &&
- (currentRows[0].checkCategory === '5' ||
- currentRows[0].tool === '3')
- "
- >
- <VueQr
- :text="formParams.materialLots + ',' + currentRows[0].id"
- :binarize="true"
- :size="65"
- :margin="5"
- />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <!-- 表格 -->
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="检验详情" name="inspectDetails" lazy>
- <!-- 明细体 -->
- <el-table
- ref="table"
- v-loading="loading"
- :data="list"
- border
- size="mini"
- max-height="400"
- :span-method="arraySpanMethod"
- :cell-class-name="delLine"
- @selection-change="tableSelected"
- >
- <el-table-column type="selection" width="40" fixed="left" />
- <el-table-column
- label="检查内容"
- align="center"
- prop="checkCategoryStr"
- />
- <el-table-column
- label="检验项名称"
- align="center"
- prop="inspectionName"
- width="130"
- show-overflow-tooltip
- />
- <el-table-column
- label="检查规格/标准"
- align="center"
- width="120"
- prop="standard"
- show-overflow-tooltip
- />
- <!-- <el-table-column label="检查工具" align="center" prop="tool">
- <template slot-scope="scope">
- <el-button
- v-if="scope.row.tool === '4'"
- type="text"
- @click="handleToPeelingForce(scope.row)"
- >
- {{ scope.row.toolName }}
- </el-button>
- <span v-else>{{ scope.row.toolName }}</span>
- </template>
- </el-table-column> -->
- <el-table-column
- label="检查工具"
- align="center"
- prop="toolName"
- show-overflow-tooltip
- />
- <el-table-column
- label="检查数量"
- align="center"
- prop="checkQuantity"
- show-overflow-tooltip
- />
- <el-table-column
- label="检查记录(数据)"
- align="center"
- prop="checkQuantity"
- >
- <el-table-column label="NO.1" align="center" prop="actual1">
- <template slot-scope="scope">
- <span v-if="scope.row.inspectionModel === 1">{{
- scope.row.measuredResults
- }}</span>
- <el-input
- v-else
- v-model="scope.row.actual1"
- oninput="value=value.replace(/[^0-9]{0,1}(\d*(?:\.\d{0,8})?).*$/g, '$1')"
- :disabled="apiStatus !== -1"
- @blur="handleQualified(scope.row)"
- @focus="handleQuadraticelement(scope.row, scope.column)"
- />
- </template>
- </el-table-column>
- <el-table-column label="NO.2" align="center" prop="actual2">
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.actual2"
- oninput="value=value.replace(/[^0-9]{0,1}(\d*(?:\.\d{0,8})?).*$/g, '$1')"
- :disabled="apiStatus !== -1"
- @blur="handleQualified(scope.row)"
- @focus="handleQuadraticelement(scope.row, scope.column)"
- />
- </template>
- </el-table-column>
- <el-table-column label="NO.3" align="center" prop="actual3">
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.actual3"
- oninput="value=value.replace(/[^0-9]{0,1}(\d*(?:\.\d{0,8})?).*$/g, '$1')"
- :disabled="apiStatus !== -1"
- @blur="handleQualified(scope.row)"
- @focus="handleQuadraticelement(scope.row, scope.column)"
- />
- </template>
- </el-table-column>
- <el-table-column label="NO.4" align="center" prop="actual4">
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.actual4"
- oninput="value=value.replace(/[^0-9]{0,1}(\d*(?:\.\d{0,8})?).*$/g, '$1')"
- :disabled="apiStatus !== -1"
- @blur="handleQualified(scope.row)"
- @focus="handleQuadraticelement(scope.row, scope.column)"
- />
- </template>
- </el-table-column>
- <el-table-column label="NO.5" align="center" prop="actual5">
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.actual5"
- oninput="value=value.replace(/[^0-9]{0,1}(\d*(?:\.\d{0,8})?).*$/g, '$1')"
- :disabled="apiStatus !== -1"
- @blur="handleQualified(scope.row)"
- @focus="handleQuadraticelement(scope.row, scope.column)"
- />
- </template>
- </el-table-column>
- </el-table-column>
- <el-table-column
- label="判定"
- align="center"
- prop="singleResultNum"
- width="140"
- >
- <template slot-scope="scope">
- <el-radio-group
- v-model="scope.row.singleResultNum"
- :disabled="
- apiStatus !== -1 || scope.row.inspectionNo === 'IQCEXPERIOD'
- "
- >
- <el-radio :label="1">OK</el-radio>
- <el-radio :label="0">NG</el-radio>
- </el-radio-group>
- </template>
- </el-table-column>
- <el-table-column
- label="不良项(不良代码)"
- align="center"
- prop="badName"
- width="130"
- >
- <template slot-scope="scope">
- <BadcodeSelect
- :key="`badCode+${scope.$index}`"
- v-model="scope.row.badName"
- clearable
- :disabled="
- apiStatus !== -1 || scope.row.inspectionNo === 'IQCEXPERIOD'
- "
- @change="badCodeChange(scope.row, scope.row.badName)"
- />
- </template>
- </el-table-column>
- <el-table-column
- label="实测结果"
- align="center"
- prop="measuredResults"
- width="130"
- >
- <template slot-scope="scope">
- <el-input
- v-show="scope.row.inspectionModel === 1"
- v-model="scope.row.measuredResults"
- :disabled="
- apiStatus !== -1 || scope.row.inspectionNo === 'IQCEXPERIOD'
- "
- placeholder="请输入实测结果"
- />
- </template>
- </el-table-column>
- <el-table-column label="附件" align="center" width="70">
- <template slot-scope="scope">
- <el-button
- type="text"
- icon="el-icon-paperclip"
- size="mini"
- @click="openRowFile(scope.row)"
- >查看</el-button
- >
- </template>
- </el-table-column>
- </el-table>
- <!-- 表尾 -->
- <el-form
- v-show="apiStatus !== -1"
- ref="queryForm"
- :model="adjustForm"
- size="small"
- label-width="88px"
- class="mt20"
- >
- <el-row :gutter="20">
- <el-col :span="8">
- <el-form-item label="合格" prop="noPassType">
- <el-radio
- v-model="adjustForm.noPassType"
- :disabled="apiStatus === 1 || apiStatus === 2"
- label="0"
- @change="noPassChange"
- >合格</el-radio
- >
- </el-form-item>
- </el-col>
- <el-col v-if="adjustForm.noPassType !== '0'" :span="8">
- <el-form-item
- v-if="adjustForm.noPassType !== '0'"
- label="原因说明"
- prop="manage"
- >
- <el-input
- v-model="adjustForm.manage"
- placeholder="请输入原因说明"
- @change="noPassChange"
- />
- </el-form-item>
- </el-col>
- <el-col :span="adjustForm.noPassType !== '0' ? 8 : 12">
- <el-form-item label="检验员" prop="inspector">
- <el-input
- v-model="adjustForm.inspector"
- placeholder="请输入检验员"
- disabled
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="不合格" prop="noPassType">
- <el-radio-group
- v-model="adjustForm.noPassType"
- @change="noPassChange"
- >
- <el-radio
- :disabled="apiStatus === 1 || apiStatus === 2"
- label="1"
- >特采</el-radio
- >
- <el-radio
- :disabled="apiStatus === 1 || apiStatus === 2"
- label="2"
- >挑选</el-radio
- >
- <el-radio
- :disabled="apiStatus === 1 || apiStatus === 2"
- label="3"
- >退货</el-radio
- >
- <el-radio
- :disabled="apiStatus === 1 || apiStatus === 2"
- label="4"
- >报废</el-radio
- >
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="审核员" prop="auditor">
- <el-input
- v-model="adjustForm.auditor"
- placeholder="请输入审核员"
- disabled
- />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <!-- 挑选入库 -->
- <el-table
- v-show="adjustForm.noPassType === '2'"
- v-loading="loading"
- :data="choiceList"
- border
- size="mini"
- >
- <el-table-column
- label="标签码"
- align="center"
- prop="qrCode"
- width="150"
- show-overflow-tooltip
- />
- <el-table-column label="登记数量" align="center" prop="receiptQty" />
- <el-table-column label="合格数量" align="center" prop="qty" />
- <el-table-column label="不良数量" align="center" prop="badQty">
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.badQty"
- oninput="value=value.replace(/[^0-9]{0,1}(\d*(?:\.\d{0,8})?).*$/g, '$1')"
- :disabled="apiStatus === 1 || apiStatus === 2"
- @change="badQtyInputChange"
- />
- </template>
- </el-table-column>
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="审批任务" name="approvalTask" lazy>
- <ApprovalTask
- v-if="
- formParams.bpmInstanceId !== null &&
- formParams.bpmInstanceId !== undefined
- "
- :id="formParams.bpmInstanceId"
- ref="approvalTask"
- :active-name="activeName"
- :query-paramspro="formParams"
- />
- <div v-else class="isNotApproval">暂未开启工作流</div>
- </el-tab-pane>
- </el-tabs>
- <!-- 检验结果 -->
- <EditInspectItem ref="editInspectItem" @complete="getList" />
- <!-- 修改检验标准 -->
- <UpdateInspection
- ref="updateInspection"
- @updateCase="getList"
- @addComplete="getList"
- />
- <!-- 单据打印 -->
- <IssuePrinit ref="issuePrinit" />
- <!-- 文件上传 -->
- <InspectFileUpload
- ref="inspectFileUpload"
- :process-no="$route.query.processNo"
- @uploadComplete="getHeadList"
- />
- <!-- 附件查看与上传 -->
- <InspectAttachmentUpload
- ref="inspectAttachmentUpload"
- :process-no="$route.query.processNo"
- :header-form="formParams"
- @uploadComplete="getHeadList"
- />
- <!-- 剥离力 -->
- <!-- <PeelingForce ref="peelingForce" /> -->
- <!-- 二次元 -->
- <!-- <QuadraticElement ref="quadraticElement" /> -->
- </div>
- </template>
- <script>
- // finishMaterialItem
- import {
- getMaterialItemPage,
- finishMaterialItem,
- } from "@/api/wms/quality/inspectionCase";
- import {
- getiqcInspectionHead,
- getIqcInspectionDetail_2,
- getIqcInspectionDetail_1,
- } from "@/api/wms/quality/inspectionReport";
- import { ifChangeMasterAdditional } from "@/api/wms/quality/inspectStandardApproval";
- import {
- updateReinspection,
- getURL,
- updateAllForPCInspect,
- updateRowForPCIsQualified,
- getSupplierFileByMaterialLots,
- } from "@/api/wms/quality/iqcInspectionExecute";
- import BadcodeSelect from "../../components/BadCodeSelect.vue";
- import { updateAuditStatus } from "@/api/wms/quality/inspectionResultApproval";
- // 挑选入库
- import {
- getLabelPrintDataDetail,
- updateBatchChoice,
- } from "@/api/wms/incoming/register";
- // 文件上传
- import InspectFileUpload from "./InspectFileUpload.vue";
- // 附件查看与上传
- import InspectAttachmentUpload from "./InspectAttachmentUpload.vue";
- // 审批任务
- import ApprovalTask from "./ApprovalTaskNew.vue";
- import EditInspectItem from "./EditInspectItem.vue";
- import UpdateInspection from "./UpdateInspection.vue";
- import IssuePrinit from "./IssuePrinit.vue";
- import { parseTime } from "@/utils/ruoyi";
- import { mapState } from "vuex";
- // 审批流获取id接口
- import { getModelPage } from "@/api/bpm/model";
- // 开启审批流
- // import { createProcessInstance } from '@/api/bpm/processInstance'
- // 剥离力
- import PeelingForce from "./PeelingForce.vue";
- // 打印参数
- const AccessTokenKey = "ACCESS_TOKEN";
- // VUEQr
- import VueQr from "vue-qr";
- import QuotationTrendVue from "@/views/dashboard/QuotationTrend.vue";
- import QuadraticElement from "./QuadraticElement.vue";
- export default {
- components: {
- EditInspectItem,
- UpdateInspection,
- IssuePrinit,
- InspectFileUpload,
- ApprovalTask,
- BadcodeSelect,
- PeelingForce,
- InspectAttachmentUpload,
- VueQr,
- QuadraticElement,
- },
- data() {
- return {
- visible: false,
- // 遮罩
- finishOpen: false,
- open: false,
- loading: false,
- submitLoading: false,
- // 完成的loading
- buttonLoading: false,
- // 供应商附件遮罩层
- supplierLoading: false,
- activeName: "inspectDetails",
- // 挑选
- choiceStatus: false,
- finishChoice: false,
- saveLoading: false,
- disableApproval: false,
- reLoading: false,
- showSearch: true,
- // 方案id\additionalId
- wmsMaterialAdditionalId: "",
- wmsMaterialItemMasterId: "",
- // 非计量型禁用实测按钮
- // 总条数
- total: 0,
- // 品质检验执行主列表
- list: [],
- // 挑选查询列表
- choiceList: [],
- // 表体list
- list1: [],
- list2: [],
- valueList: [],
- // 是否允许修改检验标准
- ifModify: "",
- // 根据状态判断是否新增
- updateInspectStatus: "",
- // 版本
- version: "",
- // 根据审核状态判断调哪个接口
- apiStatus: "",
- formParams: {
- checkName: "",
- },
- // 批核结果参数
- adjustForm: {
- noPassType: "",
- manage: null,
- },
- // 单据打印参数
- tokens: "",
- baseUrl: "",
- reportId: "",
- printLoading: false,
- resetInspect: false,
- // 审批流
- processMessage: {},
- // 流程详细Id
- processDetailId: "",
- // 选中的
- currentRows: [],
- tailSelected: false,
- // 查询参数
- queryParams: {
- id: null,
- inspectionRegisterId: null,
- inspectionNo: null,
- inspectionResult: null,
- badNo: null,
- createTime: [],
- materialLots: null,
- materialNo: null,
- processNo: null,
- },
- // 校验规则
- rules: {
- noPassType: [
- {
- required: true,
- message: "请选择检验结果",
- trigger: "blur",
- },
- ],
- },
- // 挑选参数
- choiceParams: {
- materialLots: null,
- },
- };
- },
- computed: {
- ...mapState({
- routeLists: (state) => state.permission.addRoutes,
- }),
- },
- created() {
- this.getProcessIds();
- const {
- materialLots,
- materialNo,
- materialName,
- processNo,
- auditStatus,
- type,
- id,
- } = this.$route.query;
- this.queryParams.materialLots = materialLots;
- this.queryParams.id = id;
- this.queryParams.materialNo = materialNo;
- this.queryParams.processNo = processNo;
- this.apiStatus = parseInt(auditStatus);
- this.queryParams.name = materialName;
- this.queryParams.type = type;
- this.handleQuery();
- this.getHeadList();
- this.tokens = localStorage.getItem(AccessTokenKey);
- this.baseUrl = process.env.VUE_APP_REPORT_API;
- },
- methods: {
- /** 查询列表 */
- async getList() {
- this.loading = true;
- // 打印单据report Id
- this.reportId = this.$route.meta.reportId;
- try {
- // 执行查询
- this.formParams.auditTime = parseTime(this.formParams.auditTime);
- // 参数
- const params = {
- materialLots: this.queryParams.materialLots,
- showVoid: false,
- processNo: "PURCHASE",
- };
- // 表头表体列表
- const raw1 = await getIqcInspectionDetail_2(params);
- const raw2 = await getIqcInspectionDetail_1(params);
- // 添加安全检查,确保data数组存在
- const data1 = raw1.data || [];
- const data2 = raw2.data || [];
- const list = [...data2, ...data1];
- // page查询
- const rawData = await getMaterialItemPage(this.queryParams);
- // 添加安全检查,防止rawData.data为undefined
- const rawDataContent = rawData.data || {};
- this.ifModify = rawDataContent.ifModify;
- this.$refs.updateInspection.queryObj = rawDataContent.masterData || {};
- // 添加安全检查,确保list数组存在
- const rawValueList = rawDataContent.list || [];
- // 添加安全检查,确保maxMaterialAdditional对象存在
- const maxAdditional = rawDataContent.maxMaterialAdditional || {};
- this.wmsMaterialAdditionalId = maxAdditional.id || "";
- this.wmsMaterialItemMasterId =
- maxAdditional.wmsMaterialItemMasterId || "";
- this.updateInspectStatus = maxAdditional.status || "";
- const valueList = rawValueList.map((item) => {
- const { maxValue, minValue, standValue, id, badId } = item;
- return {
- id,
- maxValue,
- minValue,
- standValue,
- badId,
- };
- });
- // 合并
- this.list = list.reduce((acc, cur) => {
- const { id } = cur;
- const item = valueList.find((i) => i.id === id) || {};
- const { maxValue, minValue, standValue, badId } = item;
- const data = {
- ...{
- maxValue,
- minValue,
- standValue,
- badId,
- },
- ...cur,
- };
- if (data.tool === "拉力机") {
- this.handleQualified(data);
- }
- acc.push(data);
- return acc;
- }, []);
- // 审批重回QC录入
- const isShow = this.list.every(
- (show) =>
- show.singleResultNum !== null && show.singleResultNum !== undefined
- );
- if (!isShow) {
- this.disableApproval = true;
- } else {
- this.disableApproval = false;
- }
- } catch (error) {
- console.log(error);
- } finally {
- this.loading = false;
- }
- },
- // 挑选列表
- async getChoiceList() {
- this.loading = true;
- // 执行查询
- try {
- const { data } = await getLabelPrintDataDetail(this.choiceParams);
- // 添加安全检查,确保data对象存在
- const choiceData = data || {};
- this.choiceList = choiceData.list || [];
- this.total = choiceData.total || 0;
- } catch (error) {
- console.log(error);
- } finally {
- this.loading = false;
- }
- },
- // 获取iqc报告表头
- getHeadList() {
- const params = {
- key: this.queryParams.materialLots,
- processNo: "PURCHASE",
- };
- getiqcInspectionHead(params).then((res) => {
- // 添加安全检查,确保res.data存在且为数组
- const headData = res.data || [];
- this.formParams = headData[0] || {};
- const { title, noPassType, inspector, manage, produceDate } =
- this.formParams;
- this.formParams.checkName = title;
- this.formParams.produceDate = parseTime(produceDate);
- this.adjustForm.noPassType =
- noPassType === null ? this.adjustForm.noPassType : noPassType;
- if (
- this.adjustForm.noPassType !== "" &&
- this.adjustForm.noPassType != null
- ) {
- this.tailSelected = true;
- }
- this.adjustForm.inspector = inspector;
- this.adjustForm.manage = manage;
- if (this.adjustForm.noPassType === "2") {
- const { materialLots } = this.queryParams;
- this.choiceParams.materialLots = materialLots;
- this.getChoiceList();
- }
- if (
- this.formParams.bpmInstanceId !== null &&
- this.formParams !== undefined
- ) {
- this.resetInspect = true;
- } else {
- this.resetInspect = false;
- }
- });
- },
- /** 取消按钮 */
- cancel() {
- this.open = false;
- },
- // 重置
- reset() {
- this.form = {
- manage: undefined,
- };
- },
- /** 搜索按钮操作 */
- handleQuery() {
- // this.queryParams.pageNo = 1
- this.getList();
- },
- // 选择批核结果
- async noPassChange(v) {
- this.tailSelected = true;
- // v === '2' --》挑选入库
- if (v === "2") {
- const { materialLots } = this.queryParams;
- this.choiceParams.materialLots = materialLots;
- await this.getChoiceList();
- const isEmpty = this.choiceList.some(
- (item) =>
- item.badQty === null ||
- item.badQty === undefined ||
- item.badQty === ""
- );
- // 只允许挑选一次,挑选完批核按钮高亮
- if (isEmpty) {
- this.choiceStatus = true;
- this.finishChoice = false;
- } else {
- this.choiceStatus = false;
- this.finishChoice = true;
- }
- this.handleFinishChoice();
- } else {
- this.handleFinishChoice();
- }
- },
- // 送审
- handleTesting() {
- // 开启工作流
- if (
- this.formParams.bpmInstanceId !== null &&
- this.formParams.bpmInstanceId !== undefined
- ) {
- this.activeName = "approvalTask";
- } else {
- // 普通审批流
- // apiStatus === -1 为待检验 操作 送审
- if (this.apiStatus === -1) {
- this.$modal
- .confirm("您正在送审操作,是否继续?")
- .then(async () => {
- // // 开启审批流
- if (
- this.processMessage !== null &&
- Object.keys(this.processMessage).length > 0
- ) {
- this.submitLoading = QuotationTrendVue;
- const params = {
- materialNo: this.queryParams.materialNo,
- materialLots: this.queryParams.materialLots,
- version: this.formParams.version,
- processNo: this.formParams.processNo,
- bpmInstanceId: this.processDetailId.data,
- };
- finishMaterialItem(params)
- .then((res) => {
- this.handleSave();
- this.$modal.msgSuccess("送审完成~");
- this.$emit("complete");
- this.getList();
- this.visible = false;
- this.open = false;
- this.finishOpen = false;
- this.submitLoading = false;
- // 关闭当前窗口
- this.$tab.closeOpenPage();
- // this.$router.go(-1)
- this.$router.push({
- path: "/quality/iqcInspection/inspectionExecute",
- query: { id: res.data },
- });
- this.reset();
- })
- .finally(() => {
- this.submitLoading = false;
- this.saveLoading = false;
- });
- } else {
- const params = {
- materialNo: this.queryParams.materialNo,
- materialLots: this.queryParams.materialLots,
- version: this.formParams.version,
- processNo: this.formParams.processNo,
- };
- this.submitLoading = true;
- finishMaterialItem(params)
- .then((res) => {
- this.handleSave();
- this.$modal.msgSuccess("送审完成~");
- this.$emit("complete");
- this.visible = false;
- this.open = false;
- this.finishOpen = false;
- // 关闭当前窗口
- this.$tab.closeOpenPage();
- this.$router.go(-1);
- this.reset();
- })
- .finally(() => {
- this.submitLoading = false;
- this.saveLoading = false;
- });
- }
- })
- .catch((err) => {
- console.log(err);
- // this.$modal.msg('您已取消操作')
- });
- } else if (this.apiStatus === 0) {
- // apiStatus === 0 为待审核 操作批核
- const params = {
- noPassType: this.adjustForm.noPassType,
- id: this.queryParams.id,
- materialNo: this.queryParams.materialNo,
- materialLots: this.queryParams.materialLots,
- processNo: this.formParams.processNo,
- };
- updateAuditStatus(params)
- .then((res) => {
- this.$modal.msgSuccess("批核完成!");
- this.$emit("complete");
- this.visible = false;
- this.open = false;
- // 关闭当前窗口
- this.$tab.closeOpenPage();
- this.$router.go(-1);
- this.reset();
- this.submitLoading = false;
- this.finishOpen = false;
- this.queryParams.materialLots = undefined;
- this.queryParams.materialNo = undefined;
- this.queryParams.id = undefined;
- })
- .finally(() => {
- this.submitLoading = false;
- this.queryParams.materialLots = undefined;
- this.queryParams.materialNo = undefined;
- this.queryParams.id = undefined;
- });
- }
- }
- },
- // 重新检验
- handleResetInspection() {
- this.$modal
- .confirm("您正在执行重新检验操作,该操作会导致数据全部清空,是否继续?")
- .then(() => {
- const params = {
- id: this.queryParams.id,
- materialNo: this.queryParams.materialNo,
- materialLots: this.queryParams.materialLots,
- type: this.queryParams.type,
- processNo: this.formParams.processNo,
- };
- this.reLoading = true;
- updateReinspection(params).then((res) => {
- this.$modal.msgSuccess("操作成功");
- this.$emit("resetComplete");
- this.visible = false;
- this.getList();
- this.reLoading = false;
- // 关闭当前窗口
- this.$tab.closeOpenPage();
- this.$router.go(-1);
- });
- })
- .catch(() => {
- this.$modal.msg("您已取消操作");
- })
- .finally(() => {
- this.reLoading = false;
- });
- },
- // 申请修改
- handleApply() {
- // this.$refs.updateInspection.queryParams = this.formParams
- const { materialNo, materialName } = this.formParams;
- this.$refs.updateInspection.queryParams.name = materialName;
- this.$refs.updateInspection.queryParams.materialNo = materialNo;
- if (this.formParams.checkName !== null) {
- this.$refs.updateInspection.queryObj.name = this.formParams.checkName;
- }
- this.$refs.updateInspection.queryParams.wmsMaterialAdditionalId =
- this.wmsMaterialAdditionalId;
- this.$refs.updateInspection.queryParams.wmsMaterialItemMasterId =
- this.wmsMaterialItemMasterId;
- this.$refs.updateInspection.iqcInspectShow = true;
- this.$refs.updateInspection.queryParams.processNo = "PURCHASE";
- this.$refs.updateInspection.queryParams.type = 0;
- this.$refs.updateInspection.processNameShow = true;
- // page返回的status为0 检验标准详情按钮则为保存, 否则按钮为新增
- if (this.updateInspectStatus !== 0) {
- this.$refs.updateInspection.btnText = "add";
- this.$refs.updateInspection.commitDisable = true;
- this.$refs.updateInspection.refreshDisable = true;
- } else {
- this.$refs.updateInspection.btnText = "save";
- this.$refs.updateInspection.commitDisable = false;
- this.$refs.updateInspection.selectDisable = true;
- this.$refs.updateInspection.wmsMaterialAdditionalId =
- this.wmsMaterialAdditionalId;
- const changeParams = {
- id: this.wmsMaterialAdditionalId,
- code: this.formParams.materialNo,
- };
- // 判断方案是否为最新,不是最新则提示用户刷新
- ifChangeMasterAdditional(changeParams).then((res) => {
- if (res.data === false) {
- this.$refs.updateInspection.refreshDisable = true;
- } else {
- this.$modal.notifyWarning(
- "该方案或已被他人修改,如您需要最新方案,请点击刷新按钮获取!"
- );
- this.$refs.updateInspection.refreshDisable = false;
- }
- });
- }
- this.$refs.updateInspection.visible = true;
- },
- // 弹窗关闭
- dialogClose() {
- this.formParams = {};
- this.list = [];
- this.adjustForm.noPassType = "0";
- },
- // 表格列合并
- arraySpanMethod({ row, column, rowIndex, columnIndex }) {
- const { inspectionModel } = row;
- // 合并列
- if (inspectionModel === 1) {
- if (columnIndex === 6) {
- return [1, 5];
- } else if (
- columnIndex === 7 ||
- columnIndex === 8 ||
- columnIndex === 9 ||
- columnIndex === 10
- ) {
- return [0, 0];
- }
- }
- },
- // 检验单打印
- handlePrint() {
- const materialLots = this.formParams.materialLots || "";
- const processNo = this.formParams.processNo;
- const src = `${this.baseUrl}/jmreport/view/${this.reportId}?token=${this.tokens}&materialLots=${materialLots}&processNo=${processNo}&key=${this.queryParams.materialLots}`;
- this.$refs.issuePrinit.dialogVisible = true;
- this.$refs.issuePrinit.src = src;
- },
- // 作废的数据添加删除线
- delLine({ row, column }) {
- const { voidOrNot } = row;
- if (voidOrNot === "1") {
- return "del_line";
- }
- },
- // 挑选完成
- async handleFinishChoice() {
- if (this.adjustForm.noPassType === "2") {
- const isEmpty = this.choiceList.some(
- (item) =>
- item.badQty === undefined ||
- item.badQty === "" ||
- item.badQty === null
- );
- if (isEmpty) {
- this.$modal.msgWarning("不良数量不能为空,请先填写不良数量!");
- return;
- }
- }
- this.buttonLoading = true;
- const choiceLists = this.choiceList.map((item) => {
- const { id, badQty } = item;
- return {
- id,
- badQty,
- };
- });
- const batchParams = {
- id: this.formParams.id,
- processNo: "PURCHASE",
- noPassType: this.adjustForm.noPassType,
- updateReqVOList: choiceLists,
- manage: this.adjustForm.manage,
- };
- updateBatchChoice(batchParams)
- .then(() => {
- this.$modal.msgSuccess("操作成功!");
- const { materialLots } = this.queryParams;
- this.choiceParams.materialLots = materialLots;
- this.getChoiceList();
- this.getList();
- this.$emit("choiceComplete");
- this.choiceStatus = false;
- this.buttonLoading = false;
- })
- .finally(() => {
- this.buttonLoading = false;
- });
- },
- // 合并一键通过
- handleAllInspect() {
- if (this.currentRows.length <= 0) {
- this.$modal.msgWarning("请选择您要检验的数据项!");
- return;
- }
- this.$refs.editInspectItem.form.id = this.currentRows[0].id;
- this.$refs.editInspectItem.inspectionModel = 0;
- this.$refs.editInspectItem.allInspectShow = false;
- this.$refs.editInspectItem.title = "一键检验结果";
- this.$refs.editInspectItem.visible = true;
- this.$refs.editInspectItem.selectRows = this.currentRows;
- this.$refs.editInspectItem.materialLots =
- this.formParams.materialLots || "";
- },
- // 选中的
- tableSelected(val) {
- this.currentRows = val;
- },
- // 上传文件/查看附件
- async handleUploadFile() {
- this.$refs.inspectFileUpload.wmsIncomingReceiptInspectionId =
- this.formParams.id;
- const params = {
- id: this.formParams.id,
- processNo: this.$route.query.processNo || null,
- };
- // await getURL(params).then(res => {
- // this.$refs.inspectFileUpload.fileList = res.data
- // })
- const { data } = await getURL(params);
- this.$refs.inspectFileUpload.fileList = data;
- this.$refs.inspectFileUpload.isUploadShow = this.apiStatus;
- this.$refs.inspectFileUpload.visible = true;
- },
- // 获取开启审批流的id
- getProcessIds() {
- const params = {
- pageNo: 1,
- pageSize: 10,
- key: this.$route.meta.bpmnModelId,
- };
- getModelPage(params).then((res) => {
- const { processDefinition } = res.data.list[0];
- if (processDefinition) {
- if (
- Object.keys(processDefinition).length > 0 &&
- processDefinition !== null &&
- this.$route.meta.bpmnModelId !== ""
- ) {
- this.processMessage = processDefinition;
- }
- }
- });
- },
- // tab点击切换
- handleClick(tab, event) {
- this.activeName = tab.name;
- },
- badCodeChange(row, v) {
- row.badId = v;
- },
- // 保存
- async handleSave() {
- const saveList = this.list.map((item) => {
- item.actualList = [];
- item.completed = "0";
- item.materialLots = this.queryParams.materialLots;
- item.processNo = this.queryParams.processNo;
- const {
- id,
- singleResultNum: singleResultNum,
- measuredResults,
- inspectionModel,
- materialLots,
- processNo,
- badId,
- actual1,
- actual2,
- actual3,
- actual4,
- actual5,
- completed,
- actualList: actualListForPC,
- } = item;
- // 确保将null值转换为空字符串
- const convertToEmptyString = (value) =>
- value === null || value === undefined ? "" : value;
- actualListForPC.push(
- convertToEmptyString(actual1),
- convertToEmptyString(actual2),
- convertToEmptyString(actual3),
- convertToEmptyString(actual4),
- convertToEmptyString(actual5)
- );
- return {
- id,
- singleResultNum,
- inspectionModel,
- badId,
- completed,
- actualListForPC,
- materialLots,
- processNo,
- measuredResults,
- };
- });
- this.saveLoading = true;
- await updateAllForPCInspect(saveList);
- this.$modal.msgSuccess("保存成功!");
- this.getList();
- this.saveLoading = false;
- },
- // 根据输入的检查数据判断是否合格
- handleQualified(row) {
- const { id, actual1, actual2, actual3, actual4, actual5 } = row;
- const qualifyList = [];
- // 确保将null值转换为空字符串
- const convertToEmptyString = (value) =>
- value === null || value === undefined ? "" : value;
- qualifyList.push(
- convertToEmptyString(actual1),
- convertToEmptyString(actual2),
- convertToEmptyString(actual3),
- convertToEmptyString(actual4),
- convertToEmptyString(actual5)
- );
- const params = {
- id,
- actualListForPC: qualifyList,
- };
- updateRowForPCIsQualified(params).then((res) => {
- row.singleResultNum = res.data;
- });
- },
- // 查看剥离力
- handleToPeelingForce(row) {
- const { id } = row;
- this.$refs.peelingForce.queryParams.resultId = id;
- this.$refs.peelingForce.queryParams.materialLots =
- this.formParams.materialLots;
- this.$refs.peelingForce.sn = this.formParams.materialLots;
- this.$refs.peelingForce.open = true;
- },
- // 挑选不良数量
- badQtyInputChange(v) {
- const isChoiceComplete = this.choiceList.every(
- (item) =>
- item.badQty !== undefined &&
- item.badQty !== null &&
- item.badQty !== ""
- );
- if (isChoiceComplete) {
- this.handleFinishChoice();
- } else {
- this.$modal.msgWarning("不良数量不能为空,请检查是否全部填写完成!");
- }
- },
- // 查看供应商附件
- handleViewSupplierFile() {
- const { materialLots } = this.queryParams;
- const params = {
- materialLots,
- };
- getSupplierFileByMaterialLots(params).then((res) => {
- // 添加安全检查,确保res.data存在
- this.$refs.inspectFileUpload.fileList = res.data || [];
- this.$refs.inspectFileUpload.isUploadShow = 9;
- this.$refs.inspectFileUpload.visible = true;
- });
- },
- // 查看二次元
- handleQuadraticelement(row, column) {
- if (row.tool === "3") {
- const { property } = column;
- const { id } = row;
- const index =
- property === "actual1"
- ? 0
- : property === "actual2"
- ? 1
- : property === "actual3"
- ? 2
- : property === "actual4"
- ? 3
- : property === "actual5"
- ? 4
- : null;
- this.$refs.quadraticElement.queryParams.materialItemResultId = id;
- this.$refs.quadraticElement.queryParams.index = index;
- this.$refs.quadraticElement.open = true;
- }
- },
- // 直接利用行内 filesList 打开附件弹窗
- openRowFile(row) {
- // 把行内附件列表传给弹窗
- this.$refs.inspectAttachmentUpload.fileList = row.filesList || [];
- this.$refs.inspectAttachmentUpload.rowData = row;
- this.$refs.inspectAttachmentUpload.isUploadShow = -1; // 9=仅查看
- this.$refs.inspectAttachmentUpload.visible = true;
- },
- },
- };
- </script>
- <style scoped>
- .stander {
- position: relative;
- }
- .standVal {
- position: absolute;
- top: 10px;
- left: -10px;
- }
- .max {
- height: 24px;
- }
- .line {
- display: block;
- height: 10px;
- margin-top: -14px;
- }
- .el-table /deep/ .del_line {
- text-decoration: line-through !important;
- }
- .isNotApproval {
- font-size: 18px;
- text-align: center;
- margin: 200px auto;
- }
- </style>
|