Crunchy
2024-05-06 1f4c79169a0d3ef46f2430b61d4999e1be6261b3
src/views/quality/processInspect/processInspect-form.vue
@@ -18,61 +18,85 @@
                    <div class="formwrapper">
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="过程检验编号:">
                                    <el-input @blur="selectInfoByOrderId" disabled
                                    v-model="processInspectVo.proInsNo"  autocomplete="off" />
                                <el-form-item label="过程检验编号">
                                    <el-input disabled
                                    v-model="processInspectVo.proInsNo" placeholder="过程检验编号" autocomplete="off" />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="订单号:" prop="orderNumber">
                                <el-form-item label="车间订单号" prop="moNo">
                                    <el-input @blur="selectInfoByOrderId" :disabled="processInspectVo.id != null"
                                        v-model="processInspectVo.orderNumber" placeholder="请输入订单号" autocomplete="off" />
                                        v-model="processInspectVo.moNo" placeholder="请输入车间订单号" autocomplete="off" >
                                        <!-- <el-button
                                            slot="append"
                                            icon="el-icon-search"
                                            :disabled="resultVal!=null"
                                            @click="queryCode"></el-button> -->
                                        <el-button
                                            slot="append"
                                            icon="el-icon-full-screen"
                                            :disabled="resultVal!=null"
                                            @click="Turnonthecamera"></el-button>
                                    </el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="产品名称:">
                                    <el-select style="width: 100%" @change="changeOptionsSamplename"
                                        :disabled="processInspectVo.id != null" v-model="processInspectVo.material"
                                        size="small" placeholder="请选择产品名称">
                                        <el-option v-for="(item, index) in optionsSamplename" :key="index"
                                            :label="item.material" :value="item.materialCode">
                                        </el-option>
                                    </el-select>
                                <el-form-item label="销售订单号" prop="orderNumber">
                                    <el-input disabled
                                        v-model="processInspectVo.orderNumber" placeholder="销售订单号" autocomplete="off" />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="产品编号:">
                                    <el-input disabled v-model="processInspectVo.materialCode" placeholder="请输入产品编号"
                                        autocomplete="off" />
                                <el-form-item label="产品名称">
                                    <el-tooltip class="item" effect="dark" :content="processInspectVo.material">
                                        <el-input v-model="processInspectVo.material" disabled placeholder="产品名称"></el-input>
                                    </el-tooltip>
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="规格型号:">
                                    <el-input disabled v-model="processInspectVo.specs"
                                        autocomplete="off" />
                                <el-form-item label="产品编号">
                                    <el-input disabled v-model="processInspectVo.materialCode" placeholder="产品编号" autocomplete="off" />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="工序名称">
                                <el-form-item label="规格型号">
                                    <el-tooltip class="item" effect="dark" :content="processInspectVo.specs">
                                    <el-input disabled v-model="processInspectVo.specs" placeholder="规格型号" autocomplete="off" />
                                    </el-tooltip>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="工单" prop="operationTaskId">
                                    <el-select style="width: 100%" :disabled="processInspectVo.id != null"
                                        v-model="processInspectVo.technologyOperationId" size="small" placeholder="请选择工序">
                                        <el-option v-for="(item, index) in technologyList" :key="index" :label="item.name"
                                            :value="item.technologyOperationId">
                                        v-model="processInspectVo.operationTaskId" size="small" placeholder="请选择工单">
                                        <el-option v-for="(item, index) in technologyList" :key="index" :label="item.name+'-'+item.optaskNo"
                                            :value="item.operationTaskId">
                                        </el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="单位:">
                                    <el-input disabled v-model="processInspectVo.unit" placeholder="请输入单位"
                                        autocomplete="off" />
                                <el-form-item label="单位">
                                    <el-input disabled v-model="processInspectVo.unit" placeholder="单位" autocomplete="off" />
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="客户名称" prop="customerName">
                                    <el-input v-model="processInspectVo.customerName" placeholder="客户名称" autocomplete="off" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="数量:">
                                <el-form-item label="工程名称" prop="projectName">
                                    <el-input v-model="processInspectVo.projectName" placeholder="工程名称" autocomplete="off" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="数量" prop="quantity">
                                    <el-input v-model="processInspectVo.quantity" placeholder="请输入数量" autocomplete="off"
                                        :disabled="processInspectVo.id != null" />
                                </el-form-item>
@@ -81,97 +105,238 @@
                    </div>
                </el-form>
            </div>
            <div class="finishedProduct-detail">
                <el-row style="width:100%;z-index: 10;height:30px;">
                    <el-col :span="12" class="inspectionProject_span">检验项目</el-col>
                    <el-col v-if="resultVal == null" :span="12" class="inspectionProject_span" style="text-align: right;">
                        <el-button size="mini" @click="clickAddInspectionColumn()">添加检测值列</el-button>
                        <el-button size="mini" @click="clickDeleteInspectionColumn()">删除检测值列</el-button>
                    </el-col>
                </el-row>
                <el-row style="width:100%;">
                    <el-col :span="24">
                        <el-table border
                            :data="inspectionItems"
                            height="400"
                            :header-cell-style="{ textAlign: 'center', color: 'black', backgroundColor: '#fafafa' }"
                            :cell-style="{ textAlign: 'center' }"
                            row-key="iid"
                            default-expand-all style="width: 100%"
                            ref="table"
                            :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
                            <el-table-column type="index" label="序号" width="60"></el-table-column>
                            <el-table-column label="项目" prop="father" width="240"></el-table-column>
                            <el-table-column prop="iname" label="指标" width="240"></el-table-column>
                            <el-table-column prop="iunit" label="单位" width="240"></el-table-column>
                            <el-table-column prop="required" label="标准值" width="240"></el-table-column>
                            <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index"
                                label="检测值" width="240" style="text-align: center;">
                                <template slot-scope="scope">
                                    <el-col v-if="scope.row.itype === '1'">
                                        <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null"
                                            class="item" effect="dark" content="请先选择设备!" placement="top-start">
                                            <el-input :disabled="scope.row.eId == null"
                                                v-model="scope.row.empiricalValueAddss[index]"
                                                @blur="changeState(scope.row,true)" placeholder="请输入检测值"></el-input>
                                            <span v-if="resultVal != null && processInspectVo.id != null"
                                                v-text="scope.row.empiricalValueAddss[index]"></span>
                                        </el-tooltip>
                                    </el-col>
                                    <el-col v-else>
                                        <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null"
                                            class="item" effect="dark" content="请先选择设备!" placement="top-start">
                                            <el-select style="width: 100%;" @change="changeState(scope.row)" :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" placeholder="请选择">
                                                <el-option v-for="item in dataVal" :key="item.value" :label="item.label"
                                                    :value="item.value">
                                                </el-option>
                                            </el-select>
                                            <span v-if="resultVal != null && processInspectVo.id != null"
                                                v-text="scope.row.empiricalValueAddss[index]"></span>
                                        </el-tooltip>
                                    </el-col>
                                </template>
            <div>
                <el-tabs class="finishedProduct-detail" @tab-click="tabsClick">
                    <el-tab-pane label="检验项目">
                        <el-row>
                            <el-col v-if="resultVal == null" :span="24" class="inspectionProject_span" style="text-align: right;">
                                <el-button size="small"
                                type="primary"
                                v-if="inspectionItems&&inspectionItems.length>0"
                                @click="saveTable()">保存</el-button>
                                <el-button size="mini" @click="clickAddInspectionColumn()">添加检测值列</el-button>
                                <el-button size="mini" @click="clickDeleteInspectionColumn()">删除检测值列</el-button>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="24">
                                <el-table border
                                    :data="inspectionItems"
                                    height="400"
                                    :header-cell-style="{ textAlign: 'center', color: 'black', backgroundColor: '#fafafa' }"
                                    :cell-style="{ textAlign: 'center' }"
                                    row-key="iid"
                                    default-expand-all style="width: 100%"
                                    ref="table"
                                    :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
                                    <el-table-column type="index" prop="parentIndex" label="序号" width="60">
                                        <template scope="scope">
                                            <span v-if="scope.row.isIndex">{{scope.row.parentIndex}}</span>
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="项目" prop="father" show-overflow-tooltip width="140"></el-table-column>
                                    <el-table-column prop="iname" label="指标" show-overflow-tooltip width="140"></el-table-column>
                                    <el-table-column prop="iunit" label="单位" show-overflow-tooltip width="140"></el-table-column>
                                    <el-table-column prop="required" label="标准值" width="140"></el-table-column>
                                    <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index"
                                        label="检测值" width="140" style="text-align: center;">
                                        <template slot-scope="scope">
                                            <el-col v-if="scope.row.itype === '1'">
                                                <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null"
                                                    class="item" effect="dark" content="请先选择设备!" placement="top-start">
                                                    <el-input :disabled="scope.row.eId == null"
                                                        v-model="scope.row.empiricalValueAddss[index]"
                                                        @blur="changeState(scope.row,true)" placeholder="请输入检测值"></el-input>
                                                    <span v-if="resultVal != null && processInspectVo.id != null"
                                                        v-text="scope.row.empiricalValueAddss[index]"></span>
                                                </el-tooltip>
                                            </el-col>
                                            <el-col v-else>
                                                <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null"
                                                    class="item" effect="dark" content="请先选择设备!" placement="top-start">
                                                    <el-select style="width: 100%;" @change="changeState(scope.row)" :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" placeholder="请选择">
                                                        <el-option v-for="item in dataVal" :key="item.value" :label="item.label"
                                                            :value="item.value">
                                                        </el-option>
                                                    </el-select>
                                                    <span v-if="resultVal != null && processInspectVo.id != null"
                                                        v-text="scope.row.empiricalValueAddss[index]"></span>
                                                </el-tooltip>
                                            </el-col>
                                        </template>
                                    </el-table-column>
                                    <el-table-column prop="deviceName" label="试验设备" min-width="200">
                                        <template slot-scope="scope">
                                            <span v-if="resultVal != null && scope.row.iname != null"
                                                v-text="scope.row.ename"></span>
                                            <div v-else>
                                                <el-select style="width:60%" v-model="scope.row.eId" v-if="scope.row.iname != null"
                                                    filterable @change="updateDevice(scope.row, scope.$index)">
                                                    <el-option v-for="(item, index) in deviceList" :key="index" :value="item.id"
                                                        :label="item.code + '-' + item.name"></el-option>
                                                </el-select>
                                                <el-button
                                            size="small"
                                            slot="append"
                                            icon="el-icon-full-screen"
                                            v-if="scope.row.iname != null"
                                            @click="codeDevice(scope.row,scope.$index)"></el-button>
                                            </div>
                                        </template>
                                    </el-table-column>
                                    <el-table-column show-overflow-tooltip
                                        label="检验描述" width="140" style="text-align: center;">
                                        <template slot-scope="scope">
                                            <el-col>
                                                <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null"
                                                    class="item" effect="dark" content="请先选择设备!" placement="top-start">
                                                    <el-input :disabled="scope.row.eId == null"
                                                        v-model="scope.row.inote"
                                                        @blur="changeState(scope.row)" placeholder="请输入检验描述"></el-input>
                                                    <span v-if="resultVal != null && processInspectVo.id != null"
                                                        v-text="scope.row.inote"></span>
                                                </el-tooltip>
                                            </el-col>
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="结论" fixed="right" min-width="100">
                                        <template slot-scope="scope">
                                            <div v-if="scope.row.iname != null">
                                                <span style="color: #34BD66;" v-if="scope.row.iresult == 1">合格</span>
                                                <span style="color: #E84738;" v-else-if="scope.row.iresult == 0">不合格</span>
                                                <span v-else>暂无结论</span>
                                            </div>
                                        </template>
                                    </el-table-column>
                                </el-table>
                            </el-col>
                        </el-row>
                    </el-tab-pane>
                    <el-tab-pane label="附件上传" type="card">
                        <div style="display: flex;justify-content:flex-end;">
                            <div></div>
                        </div>
                        <div
                        v-loading="progrecessFileLoading"
                        element-loading-text="请稍等,文件上传中"
                        >
                        <el-upload
                            :disabled="processInspectVo.proInsNo==null || (resultVal!=null && resultVal!='')"
                            drag
                            ref="upload"
                            action="/mes/rawInsProduct/upload"
                            :auto-upload="true"
                            :headers="headers"
                            :before-upload="submitUpload"
                            :on-success="uploadSuccess"
                            :data="paramData"
                            :with-credentials="true"
                            :show-file-list="false"
                        >
                            <i class="el-icon-upload"></i>
                            <div class="el-upload__text">
                            将文件拖到此处,或<em>点击上传</em>
                            </div>
                        </el-upload>
                        </div>
                        <el-table :data="processConfigFileTableData" height="260px">
                        <el-table-column
                            prop="rawInsNo"
                            align="center"
                            width="120"
                            label="原材料检验编号"
                            show-overflow-tooltip
                        ></el-table-column>
                        <el-table-column
                            prop="originalFileName"
                            align="center"
                            label="原文件名"
                            width="200"
                        ></el-table-column>
                        <el-table-column prop="fileName" align="center" label="文件后缀"></el-table-column>
                        <el-table-column prop="createUser" align="center" label="上传人"></el-table-column>
                        <el-table-column
                            prop="createTime"
                            align="center"
                            label="上传时间"
                            show-overflow-tooltip
                        ></el-table-column>
                        <el-table-column prop="updateUser" align="center" label="更新人">
                        </el-table-column>
                        <el-table-column
                            prop="updateTime"
                            align="center"
                            label="更新时间"
                            show-overflow-tooltip
                        ></el-table-column>
                        <el-table-column align="center" label="操作">
                            <template slot-scope="scope">
                            <el-button
                                @click="delProcessConfigFile(scope.row)"
                                type="text"
                                size="small"
                                :disabled="(resultVal!=null && resultVal!='')"
                                >删除</el-button
                            >
                            <el-button
                                @click="downloadProcessConfigFile(scope.row)"
                                type="text"
                                size="small"
                                >下载</el-button
                            >
                            </template>
                        </el-table-column>
                        </el-table>
                    </el-tab-pane>
                    <el-tab-pane label="附件">
                        <el-table :data="configFileTableData" height="400px">
                            <el-table-column
                            prop="orderNumber"
                            align="center"
                            label="订单号"
                            show-overflow-tooltip
                            >
                            </el-table-column>
                            <el-table-column prop="deviceName" label="试验设备" min-width="250">
                                <template slot-scope="scope">
                                    <span v-if="resultVal != null && scope.row.iname != null"
                                        v-text="scope.row.ename"></span>
                                    <div v-else>
                                        <el-select style="width:100%" v-model="scope.row.eId" v-if="scope.row.iname != null"
                                            filterable @change="updateDevice(scope.row, scope.$index)">
                                            <el-option v-for="(item, index) in deviceList" :key="index" :value="item.id"
                                                :label="item.code + '-' + item.name"></el-option>
                                        </el-select>
                                    </div>
                                </template>
                            <el-table-column
                            prop="originalFileName"
                            align="center"
                            label="原文件名"
                            width="200"
                            >
                            </el-table-column>
                            <el-table-column
                                label="检验描述" width="240" style="text-align: center;">
                                <template slot-scope="scope">
                                    <el-col>
                                        <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null"
                                            class="item" effect="dark" content="请先选择设备!" placement="top-start">
                                            <el-input :disabled="scope.row.eId == null"
                                                v-model="scope.row.inote"
                                                @blur="changeState(scope.row)" placeholder="请输入检验描述"></el-input>
                                            <span v-if="resultVal != null && processInspectVo.id != null"
                                                v-text="scope.row.inote"></span>
                                        </el-tooltip>
                                    </el-col>
                                </template>
                            <el-table-column prop="fileName" align="center" label="文件后缀">
                            </el-table-column>
                            <el-table-column label="结论" fixed="right" min-width="100">
                                <template slot-scope="scope">
                                    <div v-if="scope.row.iname != null">
                                        <span style="color: #34BD66;" v-if="scope.row.iresult == 1">合格</span>
                                        <span style="color: #E84738;" v-else-if="scope.row.iresult == 0">不合格</span>
                                        <span v-else>暂无结论</span>
                                    </div>
                                </template>
                            <el-table-column prop="createUser" align="center" label="上传人">
                            </el-table-column>
                            <el-table-column
                            prop="createTime"
                            align="center"
                            label="上传时间"
                            show-overflow-tooltip
                            >
                            </el-table-column>
                            <el-table-column prop="updateUser" align="center" label="更新人">
                            </el-table-column>
                            <el-table-column
                            prop="updateTime"
                            align="center"
                            label="更新时间"
                            show-overflow-tooltip
                            >
                            </el-table-column>
                            <el-table-column fixed="right" align="center" label="操作">
                            <template slot-scope="scope">
                                <el-button
                                @click="downloadProcessConfigFiles(scope.row)"
                                type="text"
                                size="small"
                                >下载</el-button
                                >
                            </template>
                            </el-table-column>
                        </el-table>
                    </el-col>
                </el-row>
                    </el-tab-pane>
                </el-tabs>
            </div>
            <div class="finishedProduct-result">
                <el-row style="width:100%">
@@ -182,8 +347,8 @@
                        <el-table border height="90" :data="inspectionResultForm"
                            :header-cell-style="{ textAlign: 'center', color: 'black', backgroundColor: '#fafafa' }"
                            :cell-style="{ textAlign: 'center' }">
                            <el-table-column prop="materialCode" label="物料编号"></el-table-column>
                            <el-table-column prop="material" label="物料名称"></el-table-column>
                            <el-table-column prop="materialCode" width="200" show-overflow-tooltip label="物料编号"></el-table-column>
                            <el-table-column prop="material" width="200" show-overflow-tooltip label="物料名称"></el-table-column>
                            <el-table-column prop="userName" label="检验员"></el-table-column>
                            <el-table-column prop="result" label="检验结论">
                                <template slot-scope="scope">
@@ -202,9 +367,55 @@
                </el-row>
            </div>
        </div>
        <el-dialog
        title="扫描"
        :visible.sync="qrcode"
        width="60%">
        <div style="height: 100vh;width: 100%;">
            <qr-code-app ref="codeCompont" @ok="getResultInfo" @cancelCodeDialog="cancelCodeDialog"></qr-code-app>
        </div>
        <span slot="footer" class="dialog-footer">
        <el-button @click="qrcode = false">取 消</el-button>
        <el-button type="primary" @click="qrcode = false">确 定</el-button>
        </span>
        </el-dialog>
        <el-dialog
        title="设备扫描"
        :visible.sync="deviceCode"
        width="60%">
        <div style="height: 100vh;width: 100%;">
            <qr-code-app ref="codeDeviceCompont" @ok="getDeviceResultInfo" @cancelCodeDialog="cancelDeviceCodeDialog"></qr-code-app>
        </div>
        <span slot="footer" class="dialog-footer">
            <el-button @click="deviceCode = false">取 消</el-button>
            <el-button type="primary" @click="deviceCode = false">确 定</el-button>
        </span>
        </el-dialog>
        <el-dialog
        title="不合格信息"
        :visible.sync="unqualified"
        width="30%">
        <div style="height: 30vh;width: 100%;">
            <el-form :model="ruleForm" :rules="unqualifiedRules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
                <el-form-item label="不合格数量" prop="number">
                    <el-input v-model="ruleForm.number"></el-input>
                </el-form-item>
                <el-form-item label="批次号" prop="outBatchNo">
                <el-select v-model="ruleForm.outBatchNo" multiple placeholder="请选择批次号" style="width: 100%;">
                    <el-option :label="m" :value="m" v-for="(m,i) in outBatchNoList" :key="i"></el-option>
                </el-select>
                </el-form-item>
            </el-form>
        </div>
        <span slot="footer" class="dialog-footer">
        <el-button @click="unqualified = false">取 消</el-button>
        <el-button type="primary" :loading="loading" @click="handleSubmit">确 定</el-button>
        </span>
        </el-dialog>
    <processPart :paramObj="paramObj" :currshowlist.sync="workshop" />
    </div>
</template>
<script>
import {
    chooseMater,
@@ -212,14 +423,64 @@
    queryById,
    updateDeviceBypppId,
    updateProcessInsProduct,
    updateProcessInsProduct2,
    updateProcessInspectsById,
    selOutBatchNo,
} from '@/api/quality/processInspect'
import {
    getProcessConfigFiles,
    deleteProcessConfigFile,
    downloadProcessConfigFile
 } from '@/api/quality/attachment'
import { getProcessConfigFile } from '@/api/plan/manufacturingorder'
import processPart from '@/views/common/processinspect-part'
import { selectDevice } from '@/api/quality/processInspect'
import qrCodeApp from '@/views/common/qrCodeApp'
import { validatePositiveInteger } from '@/util/validate'
import { getStore } from '@/util/store'
import * as customerorder from '@/api/plan/customerorder'
export default {
    components:{
        qrCodeApp,processPart
    },
    data() {
        return {
            outBatchNoList:[],
            unqualifiedInfo:null,
            loading:false,
            ruleForm:{
                number:'',
                outBatchNo:[]
            },
            unqualifiedRules:{
                number: [
                    { required: true, message: '请输入不合格数量', trigger: 'blur' },
                    { pattern: /^\d+$/, message: '请输入数字', trigger: 'blur' }
                ],
                outBatchNo: [
                    { required: true, message: '请选择批次号', trigger: 'change' }
                ],
            },
            unqualified:false,
            progrecessFileLoading: false,
            processConfigFileTableData: [],
            headers: {
              Authorization: 'Bearer ' + getStore({ name: 'access_token' })
            },
            paramData: {
              rawInsNo: '',
              lineNumber: '',
              type: 2
            },
            paramObj:{},
            qrcode: false,
            row: null,
            proIndex: 0,
            deviceCode: false,
            rules: {
                orderNumber: [{required:true,message:'订单号不能为空',trigger:'blur'}]
                moNo: [{required:true,message:'车间订单号不能为空',trigger:'blur'}],
                quantity: [{required:true,validator: validatePositiveInteger,trigger:'blur'}],
                operationTaskId: [{required:true,message: '请选择工单',trigger:'change'}],
            },
            dataVal: [{
                label: '是',
@@ -231,6 +492,7 @@
            resultVal: null,
            technologyList: [],
            deviceList: [],
            workshop:false,//车间弹窗
            hasChildren: true,
            optionsSamplename: [],
            // 添加列
@@ -239,6 +501,7 @@
            empiricalValueAddMaxNumber: 0,
            processInspectVo: {
                id: null,
                moNo: null,
                proInsNo: null,
                material: null,
                materialCode: null,
@@ -246,10 +509,14 @@
                quantity: null,
                specs: null,
                unit: null,
                technologyOperationId: null
                operationTaskId: null,
                customerName: null,
                projectName: null
            },
            inspectionItems: [], // 新增检验项目表格
            inspectionResultForm: [],
            configFileTableData:[],
            dataForm:null
        }
    },
    watch: {
@@ -269,10 +536,151 @@
            let val = sessionStorage.getItem("process-resultVal-" + this.processInspectVo.id);
            val == undefined ? this.resultVal = null : this.resultVal = val
        }
        console.log(this.resultVal);
        this.init()
        this.selOutBatchNo()
    },
    methods: {
        selOutBatchNo(){
            selOutBatchNo({id:this.$route.query.id}).then((res)=>{
                this.outBatchNoList = res.data.data
            })
        },
        getProcessConfigFile(){
            getProcessConfigFile({
            orderNumber: this.dataForm.orderNumber,
            lineNumber: this.dataForm.customerNo
            }).then((res)=>{
                this.configFileTableData = res.data.data
            })
        },
        downloadProcessConfigFiles(row){
            customerorder.downloadProcessConfigFile(
                row.fileName,
                row.bucketName,
                row.originalFileName
            )
        },
        saveTable(){
            let processInsProduct = [];
            this.inspectionItems.forEach((item) => {
                if(item.children&&item.children.length>0){
                    item.children.forEach((child)=>{
                        let obj = {}
                        obj.id = child.iid;
                        obj.eId = child.eId;
                        obj.note = child.inote;
                        obj.inspectionValue = child.empiricalValueAddss.join(',');
                        obj.required = child.required;
                        processInsProduct.push(obj)
                    })
                }
            })
            if(processInsProduct.length>0){
                updateProcessInsProduct2(processInsProduct).then(res => {
                    if (res.data.code == 0) {
                        this.$message.success("更新成功")
                    } else {
                        this.$message.error("更新失败")
                    }
                    this.init()
                })
            }
        },
        delProcessConfigFile(row) {
          this.$confirm('是否删除该附件', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning',
            closeOnClickModal: false
          }).then(function() {
            return deleteProcessConfigFile(row.id)
          }).then((data) => {
            this.getConfigFiles()
          })
      },
      getConfigFiles() {
        const param = {
          no: this.processInspectVo.rawInsNo,
          lineNumber: this.processInspectVo.id,
          type: 2
        }
        getProcessConfigFiles(param).then((res) => {
          this.processConfigFileTableData = res.data.data
        })
      },
      downloadProcessConfigFile(row) {
        downloadProcessConfigFile({
            bucket: row.bucketName,
            fileName: row.fileName,
            originalFileName: row.originalFileName
        })
      },
      submitUpload() {
        this.paramData.no = this.processInspectVo.proInsNo
        this.paramData.lineNumber = this.processInspectVo.id
        this.progrecessFileLoading = true
      },
      uploadSuccess() {
        this.progrecessFileLoading = false
        this.getConfigFiles()
      },
      tabsClick(tab,even){
        if(tab.index == 1){
          if(this.processInspectVo.proInsNo==null){
            this.$message.error("请先保存过程检验信息")
            return
          }
            this.getConfigFiles();
        }
      },
      queryCode(){
        this.workshop = true
      },
      cancelCodeDialog(){
        this.qrcode = false
      },
      getResultInfo(data){
        if(!data.includes("moNo")){
          this.$message.warning('未识别出车间订单号信息!');
        }
        let obj=JSON.parse(data)
        let info={"code":obj["moNo"]}
        if(info.code){
            this.processInspectVo.moNo = obj["moNo"]
            this.selectInfoByOrderId()
        }else{
            this.$message.warning('未识别出车间订单号信息!');
        }
      },
      // 打开相机
      Turnonthecamera() {
          this.qrcode = true
          this.$refs.codeCompont.openCamera()
      },
      cancelDeviceCodeDialog(){
        this.deviceCode = false
      },
      getDeviceResultInfo(val){
        let id=val.split("id@")[1]
        if(id!=undefined&&id!=''&&id!=null){
            let filterData=this.deviceList.filter(item=>{
          return item.id==id
        })[0]
        this.row.eId=Number(id)
        this.updateDevice(this.row)
        }else{
            this.$message({
          message: '未识别出计量器具信息!',
          type: 'warning'
        });
        }
      },
      codeDevice(row,index){
        this.row=row
        this.deviceCode =true
        this.$refs.codeDeviceCompont.openCamera()
        this.proIndex=index
      },
        submitSave() {
            let pro = 0
            this.inspectionItems.forEach(item => {
@@ -288,27 +696,30 @@
                number: 0,
                result: this.inspectionResultForm[0].result
            }
            this.unqualifiedInfo = obj;
            if (pro > 0) {
                this.$prompt('请输入不合格数量', '不合格数量', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    inputPattern: /^\d+$/,
                    inputErrorMessage: '请输入正确数字格式'
                }).then(({ value }) => {
                    obj.number = value
                    updateProcessInspectsById(obj).then(res => {
                        let data = res.data.data
                        if (data) {
                            if (data.indexOf("成功") > 0) {
                                this.$message.success(data);
                                this.checkTestState()
                            } else {
                                this.$message.warning(data);
                            }
                            return
                        }
                    });
                }).catch(() => { });
                this.unqualified = true;
                this.$refs.ruleForm.resetFields();
                // this.$prompt('请输入不合格数量', '不合格数量', {
                //     confirmButtonText: '确定',
                //     cancelButtonText: '取消',
                //     inputPattern: /^\d+$/,
                //     inputErrorMessage: '请输入正确数字格式'
                // }).then(({ value }) => {
                //     obj.number = value
                //     updateProcessInspectsById(obj).then(res => {
                //         let data = res.data.data
                //         if (data) {
                //             if (data.indexOf("成功") > 0) {
                //                 this.$message.success(data);
                //                 this.checkTestState()
                //             } else {
                //                 this.$message.warning(data);
                //             }
                //             return
                //         }
                //     });
                // }).catch(() => { });
            } else {
                updateProcessInspectsById(obj).then(res => {
                    let data = res.data.data
@@ -324,6 +735,32 @@
                });
            }
            this.init()
        },
        handleSubmit(){
            this.$refs.ruleForm.validate((valid) => {
                if (valid) {
                    this.loading = true;
                    let obj = {number:this.ruleForm.number,outBatchNo:this.ruleForm.outBatchNo.join(','),...this.unqualifiedInfo};
                    updateProcessInspectsById(obj).then(res => {
                        let data = res.data.data
                        if (data) {
                            if (data.indexOf("成功") > 0) {
                                this.$message.success(data);
                                this.$refs.ruleForm.resetFields();
                                this.unqualified = false;
                                this.checkTestState()
                                this.init()
                            } else {
                                this.$message.warning(data);
                            }
                            return
                        }
                        this.loading = false;
                    });
                } else {
                    return false;
                }
            });
        },
        checkTestState() {
            let resultVal = '1'
@@ -345,16 +782,22 @@
            if (id != null) {
                queryById(id).then(res => {
                    let result = res.data.data
                    this.processInspectVo.moNo = result.moNo
                    this.dataForm = result;
                    this.processInspectVo.operationTaskId = result.technologyOperationName
                    this.processInspectVo.proInsNo = result.proInsNo
                    this.processInspectVo.projectName = result.projectName
                    this.processInspectVo.customerName = result.customerName
                    this.processInspectVo.orderNumber = result.orderNumber
                    this.processInspectVo.materialCode = result.materialCode
                    this.processInspectVo.material = result.material
                    this.processInspectVo.technologyOperationId = result.technologyOperationName
                    this.processInspectVo.specs = result.specs
                    this.processInspectVo.unit = result.punit
                    this.processInspectVo.quantity = result.quantity
                    let userList = []
                    result.children.forEach(item => {
                    result.children.forEach((item,index) => {
                        item.isIndex = true;
                        item.parentIndex = index + 1;
                        item.iid = Math.random()
                        if (item.children != undefined) {
                            item.children.forEach(obj => {
@@ -365,7 +808,7 @@
                                if (obj.inspectionValue) {
                                    arr = obj.inspectionValue.split(",")
                                }
                                obj.empiricalValueAddss = arr
                                this.$set(obj, "empiricalValueAddss", arr)
                                if(!obj.inote){
                                    obj.inote = null
                                }
@@ -376,22 +819,29 @@
                        }
                    })
                    this.inspectionItems = result.children
                    let rVal = '1'
                    let rVal = ''
                    let passNum = 0
                    let unPassNum = 0
                    this.inspectionItems.forEach(item => {
                        if (item.children) {
                            item.children.forEach(obj => {
                                if (obj.iresult == 0) {
                                    rVal = '0'
                                if(obj.iresult == 0){
                                    unPassNum += 1
                                }
                                if(obj.iresult == 1){
                                    passNum+=1
                                }
                            })
                        }
                    })
                    rVal = (passNum+unPassNum)>0 ? unPassNum>0 ? '0' :'1' : ''
                    this.inspectionResultForm = [{
                        materialCode: result.materialCode,
                        material: result.material,
                        userName: Array.from(new Set(userList)).join(","),
                        result: this.resultVal == null ? rVal : this.resultVal,
                    }]
                    this.getProcessConfigFile()
                }).catch(error => {
                    console.log(error)
                })
@@ -419,24 +869,13 @@
                console.log(error)
            })
        },
        //产品名称,选择
        changeOptionsSamplename(val) {
            let sample = this.optionsSamplename.filter(o => {
                return o.materialCode == val
            })[0]
            this.processInspectVo.materialCode = sample.materialCode
            this.processInspectVo.specs = sample.specs
            this.processInspectVo.unit = sample.unit
            this.processInspectVo.material = sample.material
            this.technologyList = sample.children
        },
        changeState(row,isChecked) {
            const _than = this
            if(isChecked){
                let isNumber = true
                for(var i=0;i<row.empiricalValueAddss.length;i++){
                    let val = row.empiricalValueAddss[i]
                    if(!/^[0-9]*[1-9][0-9]*$/.test(val)){
                    if(!/(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/.test(val)){
                        row.empiricalValueAddss[i] = null
                        _than.$message.error("请输入数字")
                        isNumber = false
@@ -446,80 +885,89 @@
                    return
                }
            }
            if (row.iid != null && row.iid != '') {
                let str = ""
                row.empiricalValueAddss.forEach(e => {
                    str += e + ","
                })
                str = str.slice(0, -1);
                if (str === undefined || str === '' || str === null) {
                    return
                }
                let obj = {
                    devideId: row.eId,
                    ppid: row.iid,
                    inspectionValue: str,
                    note : row.inote
                }
                updateProcessInsProduct(obj).then(res => {
                    if (res.data.code == 0) {
                        this.$message.success("更新成功")
                    } else {
                        this.$message.error("更新失败")
                    }
                    this.init()
                })
            }
            // if (row.iid != null && row.iid != '') {
            //     let str = ""
            //     row.empiricalValueAddss.forEach(e => {
            //         str += e + ","
            //     })
            //     str = str.slice(0, -1);
            //     if (str === undefined || str === '' || str === null) {
            //         return
            //     }
            //     let obj = {
            //         devideId: row.eId,
            //         ppid: row.iid,
            //         inspectionValue: str,
            //         note : row.inote
            //     }
            //     updateProcessInsProduct(obj).then(res => {
            //         if (res.data.code == 0) {
            //             this.$message.success("更新成功")
            //         } else {
            //             this.$message.error("更新失败")
            //         }
            //         this.init()
            //     })
            // }
        },
        addTestProject() {
            let val = this.processInspectVo
            const _than = this
            addProcess(val).then(res => {
                let id = res.data.data
                if (id != null) {
                    _than.processInspectVo.id = id
                    queryById(id).then(response => {
                        let proList = response.data.data.children
                        proList.forEach(item => {
                            item.iid = Math.random();
                            if (item.children != undefined) {
                                item.children.forEach(obj => {
                                    obj.inote = null
                                    obj.empiricalValueAddss = []
            this.$refs.addInspectionform.validate(valid=>{
                if(valid){
                    addProcess(val).then(res => {
                        let id = res.data.data
                        if (id != null) {
                            _than.processInspectVo.id = id
                            queryById(id).then(response => {
                                let proList = response.data.data.children
                                proList.forEach(item => {
                                    item.iid = Math.random();
                                    if (item.children != undefined) {
                                        item.children.forEach(obj => {
                                            obj.inote = null
                                            obj.empiricalValueAddss = []
                                        })
                                    }
                                })
                            }
                        })
                        _than.inspectionItems = proList
                                _than.inspectionItems = proList
                            }).catch(error => {
                                console.log(error);
                            })
                        }
                    }).catch(error => {
                        console.log(error);
                        console.log(error)
                    })
                }
            }).catch(error => {
                console.log(error)
            })
        },
        selectInfoByOrderId() {
            this.$refs.addInspectionform.validate(valid=>{
                if(valid){
                    chooseMater({
                        orderNumber: this.processInspectVo.orderNumber
            if(this.processInspectVo.moNo){
                chooseMater({
                        moNo: this.processInspectVo.moNo
                    }).then(res => {
                        if (res.data.data != null) {
                            this.optionsSamplename = res.data.data.children
                        let data = res.data.data
                        if (data) {
                            this.technologyList = data.children
                            this.processInspectVo.materialCode = data.materialCode
                            this.processInspectVo.orderNumber = data.orderNumber
                            this.processInspectVo.projectName = data.projectName
                            this.processInspectVo.customerName = data.customerName
                            this.processInspectVo.customerNo = data.customerNo
                            this.processInspectVo.material = data.material
                            this.processInspectVo.specs = data.specs
                            this.processInspectVo.unit = data.unit
                        } else {
                            this.$message({
                                message: '没有该订单号!',
                                type: 'warning'
                            });
                            this.optionsSamplename = []
                            this.$message.warning('没有该车间订单号!');
                            this.technologyList = []
                            this.processInspectVo.materialCode = null
                            this.processInspectVo.orderNumber = null
                            this.processInspectVo.material = null
                            this.processInspectVo.specs = null
                            this.processInspectVo.unit = null
                        }
                    })
                }
            })
            }
        },
        changeRowResult(){
            if(this.inspectionItems){
@@ -538,7 +986,7 @@
                                updateProcessInsProduct(obj).then(res => {
                                    if (res.data.code == 0) {
                                        this.init()
                                    }
                                    }
                                })
                            }
                        })
@@ -553,7 +1001,7 @@
            } else {
                if (_than.empiricalValueAddMaxNumber != _than.empiricalValueAdd - 1) {
                    _than.empiricalValueAdd = _than.empiricalValueAdd - 1;
                    _than.changeRowResult()
                    // _than.changeRowResult()
                    _than.inspectionItems.forEach(i => {
                        if(i.children){
                            i.children.forEach(ele=>{
@@ -561,6 +1009,7 @@
                            })
                        }
                    });
                    _than.saveTable();
                }
            }
        },
@@ -571,18 +1020,16 @@
    },
}
</script>
<style scoped>
.finishedProduct-detail {
    width: 100%;
    height: 470px;
    height: 520px;
    padding: 10px 20px;
    display: flex;
    border: 1px solid #ddd;
    background-color: #fff;
    margin-top: 10px;
    box-sizing: border-box;
    flex-wrap: wrap;
}
.finishedProduct-result {
@@ -635,4 +1082,4 @@
    border-top: 0 !important;
    cursor: pointer !important;
}
</style>
</style>