|
|
@ -331,12 +331,13 @@ |
|
|
fixed="right" |
|
|
fixed="right" |
|
|
header-align="center" |
|
|
header-align="center" |
|
|
align="center" |
|
|
align="center" |
|
|
width="130" |
|
|
|
|
|
|
|
|
width="180" |
|
|
label="操作"> |
|
|
label="操作"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<el-link style="cursor: pointer" v-if="!authDetail && scope.row.state === '未开始'" @click="actionModal(scope.row)">开始检验</el-link> |
|
|
<el-link style="cursor: pointer" v-if="!authDetail && scope.row.state === '未开始'" @click="actionModal(scope.row)">开始检验</el-link> |
|
|
<el-link style="cursor: pointer" v-if="!authDetail && scope.row.state !== '未开始'" @click="detailModal(scope.row)">检验单</el-link> |
|
|
<el-link style="cursor: pointer" v-if="!authDetail && scope.row.state !== '未开始'" @click="detailModal(scope.row)">检验单</el-link> |
|
|
<el-link style="cursor: pointer" v-if="!authFile" @click="getFileContentData(scope.row)">工作文件</el-link> |
|
|
<el-link style="cursor: pointer" v-if="!authFile" @click="getFileContentData(scope.row)">工作文件</el-link> |
|
|
|
|
|
<el-link style="cursor: pointer" v-if="!authExceptionModify && scope.row.state === '已完成'" @click="abnormalModifyModal(scope.row)">异常修改</el-link> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
</el-table> |
|
|
</el-table> |
|
|
@ -359,6 +360,7 @@ |
|
|
:close-on-click-modal="false" |
|
|
:close-on-click-modal="false" |
|
|
v-drag |
|
|
v-drag |
|
|
:visible.sync="detailInformationFlag" |
|
|
:visible.sync="detailInformationFlag" |
|
|
|
|
|
@close="closeDetailDialog" |
|
|
width="1200px" |
|
|
width="1200px" |
|
|
top="2vh" |
|
|
top="2vh" |
|
|
custom-class="iqc-inspection-dialog"> |
|
|
custom-class="iqc-inspection-dialog"> |
|
|
@ -406,7 +408,7 @@ |
|
|
<el-col :span="3"> |
|
|
<el-col :span="3"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<label> |
|
|
<label> |
|
|
<span v-if="detailData.submitFlag === 'Y'">协同人员</span> |
|
|
|
|
|
|
|
|
<span v-if="isDetailReadonly">协同人员</span> |
|
|
<a v-else style="cursor: pointer" @click="getOperatorList">协同人员</a> |
|
|
<a v-else style="cursor: pointer" @click="getOperatorList">协同人员</a> |
|
|
</label> |
|
|
</label> |
|
|
<el-input v-model="detailData.operatorName" readonly size="small"></el-input> |
|
|
<el-input v-model="detailData.operatorName" readonly size="small"></el-input> |
|
|
@ -415,7 +417,7 @@ |
|
|
<el-col :span="4"> |
|
|
<el-col :span="4"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<label> |
|
|
<label> |
|
|
<span v-if="detailData.submitFlag === 'Y'">责任人</span> |
|
|
|
|
|
|
|
|
<span v-if="isDetailReadonly">责任人</span> |
|
|
<a v-else style="cursor: pointer" @click="getResponsiblePersonList">责任人</a> |
|
|
<a v-else style="cursor: pointer" @click="getResponsiblePersonList">责任人</a> |
|
|
</label> |
|
|
</label> |
|
|
<el-input v-model="detailData.responsiblePersonName" readonly size="small"></el-input> |
|
|
<el-input v-model="detailData.responsiblePersonName" readonly size="small"></el-input> |
|
|
@ -445,7 +447,7 @@ |
|
|
<el-col :span="3"> |
|
|
<el-col :span="3"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<label>合格数量</label> |
|
|
<label>合格数量</label> |
|
|
<el-input-number :controls="false" :step="0" min="0" v-if="detailData.submitFlag === 'Y'" v-model="detailData.passQty" disabled size="small" style="width: 100%"></el-input-number> |
|
|
|
|
|
|
|
|
<el-input-number :controls="false" :step="0" min="0" v-if="isDetailReadonly" v-model="detailData.passQty" disabled size="small" style="width: 100%"></el-input-number> |
|
|
<el-input-number :controls="false" :step="0" min="0" v-else v-model="detailData.passQty" @change="passQtyChange" size="small" style="width: 100%"></el-input-number> |
|
|
<el-input-number :controls="false" :step="0" min="0" v-else v-model="detailData.passQty" @change="passQtyChange" size="small" style="width: 100%"></el-input-number> |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
@ -458,7 +460,7 @@ |
|
|
<el-col :span="3"> |
|
|
<el-col :span="3"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<label>不合格项目数</label> |
|
|
<label>不合格项目数</label> |
|
|
<el-input-number :controls="false" :step="0" v-if="detailData.submitFlag === 'Y'" v-model="detailData.unqualifiedQty" disabled size="small" style="width: 100%"></el-input-number> |
|
|
|
|
|
|
|
|
<el-input-number :controls="false" :step="0" v-if="isDetailReadonly" v-model="detailData.unqualifiedQty" disabled size="small" style="width: 100%"></el-input-number> |
|
|
<el-input-number :controls="false" :step="0" v-else v-model="detailData.unqualifiedQty" size="small" style="width: 100%"></el-input-number> |
|
|
<el-input-number :controls="false" :step="0" v-else v-model="detailData.unqualifiedQty" size="small" style="width: 100%"></el-input-number> |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
@ -486,7 +488,7 @@ |
|
|
<el-col :span="3"> |
|
|
<el-col :span="3"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<label>检验结论</label> |
|
|
<label>检验结论</label> |
|
|
<el-select v-if="detailData.submitFlag === 'Y'" v-model="detailData.inspectionResult" disabled size="small" placeholder="请选择" style="width: 100%"> |
|
|
|
|
|
|
|
|
<el-select v-if="isInspectionResultReadonly" v-model="detailData.inspectionResult" disabled size="small" placeholder="请选择" style="width: 100%"> |
|
|
<el-option label="合格" value="合格"></el-option> |
|
|
<el-option label="合格" value="合格"></el-option> |
|
|
<el-option label="不合格" value="不合格"></el-option> |
|
|
<el-option label="不合格" value="不合格"></el-option> |
|
|
</el-select> |
|
|
</el-select> |
|
|
@ -499,14 +501,14 @@ |
|
|
<el-col :span="7"> |
|
|
<el-col :span="7"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<label>质检备注</label> |
|
|
<label>质检备注</label> |
|
|
<el-input v-if="detailData.submitFlag === 'Y'" v-model="detailData.inspectionRemark" disabled size="small"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isDetailReadonly" v-model="detailData.inspectionRemark" disabled size="small"></el-input> |
|
|
<el-input v-else v-model="detailData.inspectionRemark" size="small"></el-input> |
|
|
<el-input v-else v-model="detailData.inspectionRemark" size="small"></el-input> |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
<el-col :span="3" v-show="detailData.inspectionResult === '不合格'"> |
|
|
<el-col :span="3" v-show="detailData.inspectionResult === '不合格'"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<label>处置措施</label> |
|
|
<label>处置措施</label> |
|
|
<el-select v-if="detailData.submitFlag === 'Y'" clearable v-model="detailData.disposalMeasures" disabled size="small" style="width: 100%"> |
|
|
|
|
|
|
|
|
<el-select v-if="isDetailReadonly" clearable v-model="detailData.disposalMeasures" disabled size="small" style="width: 100%"> |
|
|
<el-option |
|
|
<el-option |
|
|
v-for = "i in disposalMeasuresOptions" |
|
|
v-for = "i in disposalMeasuresOptions" |
|
|
:key = "i.id" |
|
|
:key = "i.id" |
|
|
@ -527,7 +529,7 @@ |
|
|
<el-col :span="7" v-show="detailData.inspectionResult === '不合格'"> |
|
|
<el-col :span="7" v-show="detailData.inspectionResult === '不合格'"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<label>处置说明</label> |
|
|
<label>处置说明</label> |
|
|
<el-input v-if="detailData.submitFlag === 'Y'" v-model="detailData.disposalRemark" disabled size="small"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isDetailReadonly" v-model="detailData.disposalRemark" disabled size="small"></el-input> |
|
|
<el-input v-else v-model="detailData.disposalRemark" size="small"></el-input> |
|
|
<el-input v-else v-model="detailData.disposalRemark" size="small"></el-input> |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
@ -542,7 +544,7 @@ |
|
|
<!-- 操作按钮区域 --> |
|
|
<!-- 操作按钮区域 --> |
|
|
<div class="action-buttons"> |
|
|
<div class="action-buttons"> |
|
|
<div class="left-actions"> |
|
|
<div class="left-actions"> |
|
|
<el-button v-if="detailData.submitFlag !== 'Y'" type="primary" size="small" :loading="loadFlag" @click="dataAcquisition" icon="el-icon-download"> |
|
|
|
|
|
|
|
|
<el-button v-if="!isDetailReadonly" type="primary" size="small" :loading="loadFlag" @click="dataAcquisition" icon="el-icon-download"> |
|
|
数据采集 |
|
|
数据采集 |
|
|
</el-button> |
|
|
</el-button> |
|
|
<el-button type="info" size="small" @click="getFileContentData(detailData)" icon="el-icon-folder-opened"> |
|
|
<el-button type="info" size="small" @click="getFileContentData(detailData)" icon="el-icon-folder-opened"> |
|
|
@ -640,7 +642,7 @@ |
|
|
min-width="80" |
|
|
min-width="80" |
|
|
label="抽样数量"> |
|
|
label="抽样数量"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<el-input-number :controls="false" :step="0" v-if="detailData.submitFlag === 'Y'" v-model="scope.row.samplingQty" disabled style="height: 11px; width: 98%"></el-input-number> |
|
|
|
|
|
|
|
|
<el-input-number :controls="false" :step="0" v-if="isDetailReadonly" v-model="scope.row.samplingQty" disabled style="height: 11px; width: 98%"></el-input-number> |
|
|
<el-input-number :controls="false" :step="0" v-else :ref="`samplingQty${scope.$index}`" v-model="scope.row.samplingQty" @keyup.enter.native="focusNextInput(scope.$index, 'samplingQty')" style="height: 11px; width: 98%"></el-input-number> |
|
|
<el-input-number :controls="false" :step="0" v-else :ref="`samplingQty${scope.$index}`" v-model="scope.row.samplingQty" @keyup.enter.native="focusNextInput(scope.$index, 'samplingQty')" style="height: 11px; width: 98%"></el-input-number> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
@ -651,7 +653,7 @@ |
|
|
min-width="80" |
|
|
min-width="80" |
|
|
label="不合格数量"> |
|
|
label="不合格数量"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<el-input-number :controls="false" :step="0" v-if="detailData.submitFlag === 'Y'" v-model="scope.row.unqualifiedQuantity" disabled style="height: 11px; width: 98%"></el-input-number> |
|
|
|
|
|
|
|
|
<el-input-number :controls="false" :step="0" v-if="isDetailReadonly" v-model="scope.row.unqualifiedQuantity" disabled style="height: 11px; width: 98%"></el-input-number> |
|
|
<el-input-number :controls="false" :step="0" v-else :ref="`unqualifiedQuantity${scope.$index}`" v-model="scope.row.unqualifiedQuantity" @keyup.enter.native="focusNextInput(scope.$index, 'unqualifiedQuantity')" style="height: 11px; width: 98%"></el-input-number> |
|
|
<el-input-number :controls="false" :step="0" v-else :ref="`unqualifiedQuantity${scope.$index}`" v-model="scope.row.unqualifiedQuantity" @keyup.enter.native="focusNextInput(scope.$index, 'unqualifiedQuantity')" style="height: 11px; width: 98%"></el-input-number> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
@ -662,7 +664,7 @@ |
|
|
min-width="90" |
|
|
min-width="90" |
|
|
label="项目检验结论"> |
|
|
label="项目检验结论"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<el-select :class="{redElSelect:scope.row.itemResult === 'N', greenElSelect:scope.row.itemResult === 'Y'}" v-if="detailData.submitFlag === 'Y'" v-model="scope.row.itemResult" disabled style="height: 11px;padding: 0px" > |
|
|
|
|
|
|
|
|
<el-select :class="{redElSelect:scope.row.itemResult === 'N', greenElSelect:scope.row.itemResult === 'Y'}" v-if="isItemResultReadonly" v-model="scope.row.itemResult" disabled style="height: 11px;padding: 0px" > |
|
|
<el-option label="合格" value="Y" style="color: green"></el-option> |
|
|
<el-option label="合格" value="Y" style="color: green"></el-option> |
|
|
<el-option label="不合格" value="N" style="color: red"></el-option> |
|
|
<el-option label="不合格" value="N" style="color: red"></el-option> |
|
|
</el-select> |
|
|
</el-select> |
|
|
@ -677,8 +679,8 @@ |
|
|
|
|
|
|
|
|
<!-- 底部操作按钮 --> |
|
|
<!-- 底部操作按钮 --> |
|
|
<div class="dialog-footer"> |
|
|
<div class="dialog-footer"> |
|
|
<el-button v-if="detailData.state === '待检验'" type="primary" :loading="transferLoadFlag" @click="Transfer('1')">应用</el-button> |
|
|
|
|
|
<el-button v-if="detailData.state === '待检验' || detailData.state === '待审核'" type="primary" :loading="transferLoadFlag" @click="Transfer('2')">保存</el-button> |
|
|
|
|
|
|
|
|
<el-button v-if="detailData.state === '待检验' && !exceptionModifyMode" type="primary" :loading="transferLoadFlag" @click="Transfer('1')">应用</el-button> |
|
|
|
|
|
<el-button v-if="detailData.state === '待检验' || detailData.state === '待审核' || exceptionModifyMode" type="primary" :loading="transferLoadFlag" @click="Transfer('2')">保存</el-button> |
|
|
<el-button @click="detailInformationFlag=false">关闭</el-button> |
|
|
<el-button @click="detailInformationFlag=false">关闭</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
@ -744,43 +746,43 @@ |
|
|
<el-table-column label="序号" align="center" prop="num" width="50"></el-table-column> |
|
|
<el-table-column label="序号" align="center" prop="num" width="50"></el-table-column> |
|
|
<el-table-column prop="samplingLocation" header-align="center" align="center" :required="true" label="抽样位置A" width="120"> |
|
|
<el-table-column prop="samplingLocation" header-align="center" align="center" :required="true" label="抽样位置A" width="120"> |
|
|
<template slot-scope="{row}"> |
|
|
<template slot-scope="{row}"> |
|
|
<el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].samplingLocation" readonly placeholder="请输入抽样位置A"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isSubDetailReadonly(templateTableData[row.xh-1])" v-model="templateTableData[row.xh-1].samplingLocation" readonly placeholder="请输入抽样位置A"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `a`" v-model="templateTableData[row.xh-1].samplingLocation" @keyup.enter.native="nextFocus1(row.xh-1)" placeholder="请输入抽样位置A"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `a`" v-model="templateTableData[row.xh-1].samplingLocation" @keyup.enter.native="nextFocus1(row.xh-1)" placeholder="请输入抽样位置A"></el-input> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="samplingLocationB" header-align="center" align="center" :required="true" label="抽样位置B" width="120"> |
|
|
<el-table-column prop="samplingLocationB" header-align="center" align="center" :required="true" label="抽样位置B" width="120"> |
|
|
<template slot-scope="{row}"> |
|
|
<template slot-scope="{row}"> |
|
|
<el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].samplingLocationB" readonly placeholder="请输入抽样位置B"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isSubDetailReadonly(templateTableData[row.xh-1])" v-model="templateTableData[row.xh-1].samplingLocationB" readonly placeholder="请输入抽样位置B"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `b`" v-model="templateTableData[row.xh-1].samplingLocationB" @keyup.enter.native="nextFocus2(row.xh-1)" placeholder="请输入抽样位置B"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `b`" v-model="templateTableData[row.xh-1].samplingLocationB" @keyup.enter.native="nextFocus2(row.xh-1)" placeholder="请输入抽样位置B"></el-input> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="subDetailValue" header-align="center" align="center" :required="true" label="实测值A" width="150"> |
|
|
<el-table-column prop="subDetailValue" header-align="center" align="center" :required="true" label="实测值A" width="150"> |
|
|
<template slot-scope="{row}"> |
|
|
<template slot-scope="{row}"> |
|
|
<el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValue" readonly placeholder="请输入实测值A"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isSubDetailReadonly(templateTableData[row.xh-1])" v-model="templateTableData[row.xh-1].subDetailValue" readonly placeholder="请输入实测值A"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `c`" v-model="templateTableData[row.xh-1].subDetailValue" @keyup.enter.native="nextFocus3(row.xh-1)" placeholder="请输入实测值A"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `c`" v-model="templateTableData[row.xh-1].subDetailValue" @keyup.enter.native="nextFocus3(row.xh-1)" placeholder="请输入实测值A"></el-input> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="subDetailValueB" header-align="center" align="center" :required="true" label="实测值B" width="150"> |
|
|
<el-table-column prop="subDetailValueB" header-align="center" align="center" :required="true" label="实测值B" width="150"> |
|
|
<template slot-scope="{row}"> |
|
|
<template slot-scope="{row}"> |
|
|
<el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValueB" readonly placeholder="请输入实测值B"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isSubDetailReadonly(templateTableData[row.xh-1])" v-model="templateTableData[row.xh-1].subDetailValueB" readonly placeholder="请输入实测值B"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `d`" v-model="templateTableData[row.xh-1].subDetailValueB" @keyup.enter.native="nextFocus4(row.xh-1)" placeholder="请输入实测值B"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `d`" v-model="templateTableData[row.xh-1].subDetailValueB" @keyup.enter.native="nextFocus4(row.xh-1)" placeholder="请输入实测值B"></el-input> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="subDetailValueC" header-align="center" align="center" :required="true" label="实测值C" width="150"> |
|
|
<el-table-column prop="subDetailValueC" header-align="center" align="center" :required="true" label="实测值C" width="150"> |
|
|
<template slot-scope="{row}"> |
|
|
<template slot-scope="{row}"> |
|
|
<el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValueC" readonly placeholder="请输入实测值C"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isSubDetailReadonly(templateTableData[row.xh-1])" v-model="templateTableData[row.xh-1].subDetailValueC" readonly placeholder="请输入实测值C"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `e`" v-model="templateTableData[row.xh-1].subDetailValueC" @keyup.enter.native="nextFocus5(row.xh-1)" placeholder="请输入实测值C"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `e`" v-model="templateTableData[row.xh-1].subDetailValueC" @keyup.enter.native="nextFocus5(row.xh-1)" placeholder="请输入实测值C"></el-input> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="subDetailValueD" header-align="center" align="center" :required="true" label="实测值D" width="150"> |
|
|
<el-table-column prop="subDetailValueD" header-align="center" align="center" :required="true" label="实测值D" width="150"> |
|
|
<template slot-scope="{row}"> |
|
|
<template slot-scope="{row}"> |
|
|
<el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValueD" readonly placeholder="请输入实测值D"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isSubDetailReadonly(templateTableData[row.xh-1])" v-model="templateTableData[row.xh-1].subDetailValueD" readonly placeholder="请输入实测值D"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `f`" v-model="templateTableData[row.xh-1].subDetailValueD" @keyup.enter.native="nextFocus6(row.xh-1)" placeholder="请输入实测值D"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `f`" v-model="templateTableData[row.xh-1].subDetailValueD" @keyup.enter.native="nextFocus6(row.xh-1)" placeholder="请输入实测值D"></el-input> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="subDetailValueE" header-align="center" align="center" :required="true" label="实测值E" width="150"> |
|
|
<el-table-column prop="subDetailValueE" header-align="center" align="center" :required="true" label="实测值E" width="150"> |
|
|
<template slot-scope="{row}"> |
|
|
<template slot-scope="{row}"> |
|
|
<el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValueE" readonly placeholder="请输入实测值E"></el-input> |
|
|
|
|
|
|
|
|
<el-input v-if="isSubDetailReadonly(templateTableData[row.xh-1])" v-model="templateTableData[row.xh-1].subDetailValueE" readonly placeholder="请输入实测值E"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `g`" v-model="templateTableData[row.xh-1].subDetailValueE" @keyup.enter.native="nextFocus7(row.xh-1)" placeholder="请输入实测值E"></el-input> |
|
|
<el-input v-else :ref="`${row.xh-1}` + `g`" v-model="templateTableData[row.xh-1].subDetailValueE" @keyup.enter.native="nextFocus7(row.xh-1)" placeholder="请输入实测值E"></el-input> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
@ -797,7 +799,7 @@ |
|
|
</el-pagination> |
|
|
</el-pagination> |
|
|
</div> |
|
|
</div> |
|
|
<el-footer style="height:40px;margin-top: 10px;text-align:center"> |
|
|
<el-footer style="height:40px;margin-top: 10px;text-align:center"> |
|
|
<el-button v-if="detailData.submitFlag !== 'Y'" type="primary" @click="saveSubDetailResult">保存</el-button> |
|
|
|
|
|
|
|
|
<el-button v-if="!isDetailReadonly" type="primary" @click="saveSubDetailResult">保存</el-button> |
|
|
<el-button type="primary" @click="subDetailFlag = false">关闭</el-button> |
|
|
<el-button type="primary" @click="subDetailFlag = false">关闭</el-button> |
|
|
</el-footer> |
|
|
</el-footer> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
@ -1186,6 +1188,15 @@ |
|
|
} |
|
|
} |
|
|
return this.tableData.slice(start,end) |
|
|
return this.tableData.slice(start,end) |
|
|
}, |
|
|
}, |
|
|
|
|
|
isDetailReadonly () { |
|
|
|
|
|
return this.detailData.submitFlag === 'Y' && !this.exceptionModifyMode |
|
|
|
|
|
}, |
|
|
|
|
|
isInspectionResultReadonly () { |
|
|
|
|
|
return this.isDetailReadonly || this.exceptionModifyMode |
|
|
|
|
|
}, |
|
|
|
|
|
isItemResultReadonly () { |
|
|
|
|
|
return this.isDetailReadonly || this.exceptionModifyMode |
|
|
|
|
|
}, |
|
|
// 导出字段映射 |
|
|
// 导出字段映射 |
|
|
exportFields () { |
|
|
exportFields () { |
|
|
let fields = {} |
|
|
let fields = {} |
|
|
@ -2243,6 +2254,10 @@ |
|
|
authDelete: false, |
|
|
authDelete: false, |
|
|
authDetail: false, |
|
|
authDetail: false, |
|
|
authFile: false, |
|
|
authFile: false, |
|
|
|
|
|
authExceptionModify: false, |
|
|
|
|
|
exceptionModifyMode: false, |
|
|
|
|
|
exceptionModifyInspectionResult: '', |
|
|
|
|
|
exceptionModifyItemResultMap: {}, |
|
|
menuId: this.$route.meta.menuId, |
|
|
menuId: this.$route.meta.menuId, |
|
|
roleList: [], |
|
|
roleList: [], |
|
|
operatorList: [], |
|
|
operatorList: [], |
|
|
@ -2481,7 +2496,7 @@ |
|
|
this.enforceSamplingQtyNotExceedRollCount() |
|
|
this.enforceSamplingQtyNotExceedRollCount() |
|
|
}, |
|
|
}, |
|
|
enforceSamplingQtyNotExceedRollCount () { |
|
|
enforceSamplingQtyNotExceedRollCount () { |
|
|
if (this.detailData.submitFlag === 'Y') return |
|
|
|
|
|
|
|
|
if (this.isDetailReadonly) return |
|
|
const samplingQty = this.detailData.samplingQty |
|
|
const samplingQty = this.detailData.samplingQty |
|
|
if (samplingQty == null) return |
|
|
if (samplingQty == null) return |
|
|
const rollCount = this.detailData.rollCount |
|
|
const rollCount = this.detailData.rollCount |
|
|
@ -2498,7 +2513,7 @@ |
|
|
this.enforcePassQtyNotExceedRollCount() |
|
|
this.enforcePassQtyNotExceedRollCount() |
|
|
}, |
|
|
}, |
|
|
enforcePassQtyNotExceedRollCount () { |
|
|
enforcePassQtyNotExceedRollCount () { |
|
|
if (this.detailData.submitFlag === 'Y') return |
|
|
|
|
|
|
|
|
if (this.isDetailReadonly) return |
|
|
const passQty = this.detailData.passQty |
|
|
const passQty = this.detailData.passQty |
|
|
if (passQty == null) return |
|
|
if (passQty == null) return |
|
|
const rollCount = this.detailData.rollCount |
|
|
const rollCount = this.detailData.rollCount |
|
|
@ -3043,6 +3058,7 @@ |
|
|
|
|
|
|
|
|
// 新增明细信息 |
|
|
// 新增明细信息 |
|
|
saveDetailInformation (type) { |
|
|
saveDetailInformation (type) { |
|
|
|
|
|
this.preserveExceptionLockedFields() |
|
|
this.saveInformationData.site = this.detailData.site |
|
|
this.saveInformationData.site = this.detailData.site |
|
|
this.saveInformationData.buNo = this.detailData.buNo |
|
|
this.saveInformationData.buNo = this.detailData.buNo |
|
|
this.saveInformationData.inspectionNo = this.detailData.inspectionNo |
|
|
this.saveInformationData.inspectionNo = this.detailData.inspectionNo |
|
|
@ -3062,7 +3078,7 @@ |
|
|
this.saveInformationData.operator = this.detailData.operator |
|
|
this.saveInformationData.operator = this.detailData.operator |
|
|
this.saveInformationData.responsiblePerson = this.detailData.responsiblePerson |
|
|
this.saveInformationData.responsiblePerson = this.detailData.responsiblePerson |
|
|
this.saveInformationData.itemList = JSON.parse(JSON.stringify(this.detailList)) |
|
|
this.saveInformationData.itemList = JSON.parse(JSON.stringify(this.detailList)) |
|
|
this.saveInformationData.type = type |
|
|
|
|
|
|
|
|
this.saveInformationData.type = this.exceptionModifyMode ? '3' : type |
|
|
this.saveInformationData.passQty = this.detailData.passQty == null ? 0 : this.detailData.passQty |
|
|
this.saveInformationData.passQty = this.detailData.passQty == null ? 0 : this.detailData.passQty |
|
|
this.saveInformationData.notPassQty = this.detailData.notPassQty == null ? 0 : this.detailData.notPassQty |
|
|
this.saveInformationData.notPassQty = this.detailData.notPassQty == null ? 0 : this.detailData.notPassQty |
|
|
this.saveInformationData.batchQualifiedQty = this.detailData.batchQualifiedQty == null ? 0 : this.detailData.batchQualifiedQty |
|
|
this.saveInformationData.batchQualifiedQty = this.detailData.batchQualifiedQty == null ? 0 : this.detailData.batchQualifiedQty |
|
|
@ -3087,6 +3103,36 @@ |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
abnormalModifyModal (row) { |
|
|
|
|
|
this.detailModal(row, true) |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
closeDetailDialog () { |
|
|
|
|
|
this.exceptionModifyMode = false |
|
|
|
|
|
this.exceptionModifyInspectionResult = '' |
|
|
|
|
|
this.exceptionModifyItemResultMap = {} |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
preserveExceptionLockedFields () { |
|
|
|
|
|
if (!this.exceptionModifyMode) { |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
this.detailData.inspectionResult = this.exceptionModifyInspectionResult |
|
|
|
|
|
this.detailList.forEach(item => { |
|
|
|
|
|
const originItemResult = this.exceptionModifyItemResultMap[item.itemNo] |
|
|
|
|
|
if (originItemResult !== undefined) { |
|
|
|
|
|
item.itemResult = originItemResult |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
isSubDetailReadonly (row) { |
|
|
|
|
|
if (!row) { |
|
|
|
|
|
return true |
|
|
|
|
|
} |
|
|
|
|
|
return row.isSubmit === 'Y' && !this.exceptionModifyMode |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
// 开始检验 |
|
|
// 开始检验 |
|
|
actionModal (row) { |
|
|
actionModal (row) { |
|
|
this.actionData = { |
|
|
this.actionData = { |
|
|
@ -3136,7 +3182,10 @@ |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// 明细记录信息查询 |
|
|
// 明细记录信息查询 |
|
|
detailModal (row) { |
|
|
|
|
|
|
|
|
detailModal (row, exceptionModifyMode = false) { |
|
|
|
|
|
this.exceptionModifyMode = exceptionModifyMode |
|
|
|
|
|
this.exceptionModifyInspectionResult = '' |
|
|
|
|
|
this.exceptionModifyItemResultMap = {} |
|
|
this.detailData.site = row.site |
|
|
this.detailData.site = row.site |
|
|
this.detailData.buNo = row.buNo |
|
|
this.detailData.buNo = row.buNo |
|
|
this.detailData.inspectionNo = row.inspectionNo |
|
|
this.detailData.inspectionNo = row.inspectionNo |
|
|
@ -3167,6 +3216,9 @@ |
|
|
this.detailData.invdefinetype = row.invdefinetype |
|
|
this.detailData.invdefinetype = row.invdefinetype |
|
|
this.detailData.state = row.state |
|
|
this.detailData.state = row.state |
|
|
this.detailData.spec = row.spec |
|
|
this.detailData.spec = row.spec |
|
|
|
|
|
if (this.exceptionModifyMode) { |
|
|
|
|
|
this.exceptionModifyInspectionResult = row.inspectionResult |
|
|
|
|
|
} |
|
|
if (row.state === '待检验') { |
|
|
if (row.state === '待检验') { |
|
|
this.detailData.passQty = row.samplingQty |
|
|
this.detailData.passQty = row.samplingQty |
|
|
} else { |
|
|
} else { |
|
|
@ -3185,8 +3237,16 @@ |
|
|
iqcDetailSearch(this.detailData).then(({data}) => { |
|
|
iqcDetailSearch(this.detailData).then(({data}) => { |
|
|
if (data && data.code === 0) { |
|
|
if (data && data.code === 0) { |
|
|
this.detailList = data.rows |
|
|
this.detailList = data.rows |
|
|
|
|
|
if (this.exceptionModifyMode) { |
|
|
|
|
|
let itemResultMap = {} |
|
|
|
|
|
this.detailList.forEach(item => { |
|
|
|
|
|
itemResultMap[item.itemNo] = item.itemResult |
|
|
|
|
|
}) |
|
|
|
|
|
this.exceptionModifyItemResultMap = itemResultMap |
|
|
|
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
this.detailList = [] |
|
|
this.detailList = [] |
|
|
|
|
|
this.exceptionModifyItemResultMap = {} |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
@ -3393,6 +3453,19 @@ |
|
|
|
|
|
|
|
|
// 点击新增更多 |
|
|
// 点击新增更多 |
|
|
handleAddBtn (td) { |
|
|
handleAddBtn (td) { |
|
|
|
|
|
if (this.exceptionModifyMode) { |
|
|
|
|
|
let obj = { |
|
|
|
|
|
subDetailValue: '', |
|
|
|
|
|
samplingLocation: '', |
|
|
|
|
|
samplingLocationB: '', |
|
|
|
|
|
subDetailValueB: '', |
|
|
|
|
|
subDetailValueC: '', |
|
|
|
|
|
subDetailValueD: '', |
|
|
|
|
|
subDetailValueE: '', |
|
|
|
|
|
} |
|
|
|
|
|
this.tableData.push(obj) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
checkIQCIsSubmit(td).then(({data}) => { |
|
|
checkIQCIsSubmit(td).then(({data}) => { |
|
|
if (data.flag !== 1) { |
|
|
if (data.flag !== 1) { |
|
|
let obj = { |
|
|
let obj = { |
|
|
@ -3415,6 +3488,10 @@ |
|
|
|
|
|
|
|
|
// 批量新增操作 |
|
|
// 批量新增操作 |
|
|
batchHandleAdd (td) { |
|
|
batchHandleAdd (td) { |
|
|
|
|
|
if (this.exceptionModifyMode) { |
|
|
|
|
|
this.batchHandleAddModalFlag = true |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
checkIQCIsSubmit(td).then(({data}) => { |
|
|
checkIQCIsSubmit(td).then(({data}) => { |
|
|
if (data.flag !== 1) { |
|
|
if (data.flag !== 1) { |
|
|
this.batchHandleAddModalFlag = true |
|
|
this.batchHandleAddModalFlag = true |
|
|
@ -3500,6 +3577,9 @@ |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
updateItemResult(row){ |
|
|
updateItemResult(row){ |
|
|
|
|
|
if (this.exceptionModifyMode) { |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
if (row.maxValue == null && row.minValue == null&&row.defaultValue==null) { |
|
|
if (row.maxValue == null && row.minValue == null&&row.defaultValue==null) { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
@ -3530,6 +3610,40 @@ |
|
|
|
|
|
|
|
|
//删除 |
|
|
//删除 |
|
|
handleDeleteBtn (td) { |
|
|
handleDeleteBtn (td) { |
|
|
|
|
|
if (this.exceptionModifyMode) { |
|
|
|
|
|
if (this.checkedDetail.length === 0) { |
|
|
|
|
|
this.$alert("请先选择要删除的数据", "提示", { |
|
|
|
|
|
confirmButtonText: "确定", |
|
|
|
|
|
}) |
|
|
|
|
|
} else { |
|
|
|
|
|
this.$confirm("请是否确认删除该子明细记录?", "提示", { |
|
|
|
|
|
confirmButtonText: "确定", |
|
|
|
|
|
cancelButtonText: "取消", |
|
|
|
|
|
type: "warning", |
|
|
|
|
|
callback: (action) => { |
|
|
|
|
|
if (action === "confirm") { |
|
|
|
|
|
let val = this.checkedDetail |
|
|
|
|
|
val.forEach((val, index) => { |
|
|
|
|
|
this.tableData.splice(this.tableData.indexOf(val), 1) |
|
|
|
|
|
if (this.templateTableData.length === 0) { |
|
|
|
|
|
this.pageIndex2-- |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
this.$message({ |
|
|
|
|
|
message: "删除成功!", |
|
|
|
|
|
type: "success", |
|
|
|
|
|
}) |
|
|
|
|
|
} else { |
|
|
|
|
|
this.$message({ |
|
|
|
|
|
message: "已取消删除操作", |
|
|
|
|
|
type: "warning", |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
checkIQCIsSubmit(td).then(({data}) => { |
|
|
checkIQCIsSubmit(td).then(({data}) => { |
|
|
if (data.flag !== 1) { |
|
|
if (data.flag !== 1) { |
|
|
if (this.checkedDetail.length === 0) { |
|
|
if (this.checkedDetail.length === 0) { |
|
|
@ -3583,7 +3697,9 @@ |
|
|
saveIQCSubDetailed(this.subDetailData).then(({data}) => { |
|
|
saveIQCSubDetailed(this.subDetailData).then(({data}) => { |
|
|
if (data && data.code === 0) { |
|
|
if (data && data.code === 0) { |
|
|
if (data.count > 0) { |
|
|
if (data.count > 0) { |
|
|
this.subDetailData.itemResult = 'N' |
|
|
|
|
|
|
|
|
if (!this.exceptionModifyMode) { |
|
|
|
|
|
this.subDetailData.itemResult = 'N' |
|
|
|
|
|
} |
|
|
this.subDetailData.unqualifiedQuantity = data.count |
|
|
this.subDetailData.unqualifiedQuantity = data.count |
|
|
} |
|
|
} |
|
|
if (this.subDetailData.subDetailValues.length > 0) { |
|
|
if (this.subDetailData.subDetailValues.length > 0) { |
|
|
@ -3591,7 +3707,9 @@ |
|
|
} else { |
|
|
} else { |
|
|
this.subDetailData.subDetailRecordNum = -1 |
|
|
this.subDetailData.subDetailRecordNum = -1 |
|
|
this.subDetailData.unqualifiedQuantity = 0 |
|
|
this.subDetailData.unqualifiedQuantity = 0 |
|
|
this.subDetailData.itemResult = 'Y' |
|
|
|
|
|
|
|
|
if (!this.exceptionModifyMode) { |
|
|
|
|
|
this.subDetailData.itemResult = 'Y' |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
this.subDetailFlag = false |
|
|
this.subDetailFlag = false |
|
|
this.tableData = [] |
|
|
this.tableData = [] |
|
|
@ -3699,7 +3817,7 @@ |
|
|
if (val[this.detailList[i].itemNo] != null) { |
|
|
if (val[this.detailList[i].itemNo] != null) { |
|
|
this.detailList[i].subDetailRecordNum = 1 |
|
|
this.detailList[i].subDetailRecordNum = 1 |
|
|
} |
|
|
} |
|
|
if (val[this.detailList[i].itemNo] > 0) { |
|
|
|
|
|
|
|
|
if (!this.exceptionModifyMode && val[this.detailList[i].itemNo] > 0) { |
|
|
this.detailList[i].itemResult = 'N' |
|
|
this.detailList[i].itemResult = 'N' |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -3715,6 +3833,7 @@ |
|
|
let detailFlag = this.isAuth(this.menuId + ":detail") |
|
|
let detailFlag = this.isAuth(this.menuId + ":detail") |
|
|
let fileFlag = this.isAuth(this.menuId + ":file") |
|
|
let fileFlag = this.isAuth(this.menuId + ":file") |
|
|
let cancelCheckFlag = this.isAuth(this.menuId + ":cancelCheck") |
|
|
let cancelCheckFlag = this.isAuth(this.menuId + ":cancelCheck") |
|
|
|
|
|
let exceptionModifyFlag = this.isAuth(this.menuId + ":exceptionModify") |
|
|
//处理页面的权限数据 |
|
|
//处理页面的权限数据 |
|
|
this.authSearch = !searchFlag |
|
|
this.authSearch = !searchFlag |
|
|
this.authCheck = !checkFlag |
|
|
this.authCheck = !checkFlag |
|
|
@ -3723,6 +3842,7 @@ |
|
|
this.authDetail = !detailFlag |
|
|
this.authDetail = !detailFlag |
|
|
this.authFile = !fileFlag |
|
|
this.authFile = !fileFlag |
|
|
this.authCancelCheck = !cancelCheckFlag |
|
|
this.authCancelCheck = !cancelCheckFlag |
|
|
|
|
|
this.authExceptionModify = !exceptionModifyFlag |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// ======================== IQC检验项目操作相关方法 ======================== |
|
|
// ======================== IQC检验项目操作相关方法 ======================== |
|
|
|