| | |
| | | <style scoped> |
| | | .rawInsBox{ |
| | | height: 100%; |
| | | width: 100%; |
| | | overflow-y: scroll; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | .rawInsBox .title .el-button { |
| | | height: 32px; |
| | | border: 1px solid rgba(190, 190, 190, 0.44); |
| | | box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); |
| | | padding: 0 12px; |
| | | } |
| | | .rawInsBox .title { |
| | | margin-bottom: 10px; |
| | | padding: 0 20px; |
| | | } |
| | | /* 检验详情 */ |
| | | .raw-detail-info{ |
| | | background: #fff; |
| | | padding: 26px 0px 11px 80px; |
| | | } |
| | | .raw-detail-info >>>.el-form-item__label{ |
| | | |
| | | color: rgb(51, 51, 51); |
| | | font-family: 微软雅黑; |
| | | font-size: 16px; |
| | | font-weight: 400; |
| | | letter-spacing: 0px; |
| | | } |
| | | .raw-detail-info .el-input{ |
| | | width: auto; |
| | | } |
| | | .raw-detail-info.raw-detail-info-edit >>>.el-input__inner{ |
| | | background:#fff; |
| | | } |
| | | .raw-detail-info >>>.el-input__inner{ |
| | | width: 224px; |
| | | height: 32px; |
| | | box-sizing: border-box; |
| | | background: rgb(238, 238, 238); |
| | | border: 1px solid rgb(221, 221, 221); |
| | | border-radius:4px; |
| | | } |
| | | .raw-detail-info .el-form-item{ |
| | | margin-bottom: 24px; |
| | | } |
| | | .raw-detail-info .el-form-item .el-button { |
| | | height: 32px; |
| | | border: 1px solid rgba(190, 190, 190, 0.44); |
| | | box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); |
| | | padding: 0 12px; |
| | | } |
| | | |
| | | /* 检验项目 */ |
| | | .raw-project-table{ |
| | | padding: 24px 14px; |
| | | background: #fff; |
| | | flex: 1; |
| | | /* max-height: 360px; */ |
| | | /* overflow-y: hidden; */ |
| | | } |
| | | /* 检验结论 */ |
| | | .raw-conclusion-table{ |
| | | padding: 9px 14px; |
| | | background: #fff; |
| | | } |
| | | </style> |
| | | |
| | | |
| | | <template> |
| | | <div class="rawInsBox"> |
| | | <div class="title"> |
| | | <el-row> |
| | | <el-col :span="12" style="line-height: 32px;">原材料检验</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button icon="el-icon-download" @click="()=>{goBack()}">返 回</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="raw-detail-info" :class="detailId===null?'raw-detail-info-edit':''"> |
| | | <el-form v-model="detailInfo" label-position="right" label-width="120px" > |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="原材料名称:"> |
| | | <el-input v-if="detailId!==null" :disabled="detailId!==null" v-model="detailInfo.name"></el-input> |
| | | <el-select @change="checkRawName" v-else placeholder="请选择项目名称" v-model="detailInfo.name"> |
| | | <el-option v-for="item in materialOptions" :key="item.id" :label="item.name" :value="item.name"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="规格型号:"> |
| | | <el-input v-if="detailId!==null" :disabled="detailId!==null" v-model="detailInfo.specifications"></el-input> |
| | | <el-cascader |
| | | placeholder="请选择规格型号" |
| | | v-else |
| | | :disabled="specificationOptions.length===0" |
| | | :props="{label:'name',value:'name'}" |
| | | v-model="detailInfo.specificationsArr" |
| | | :options="specificationOptions" |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="原材料编码:"> |
| | | <el-input disabled v-model="detailInfo.code"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="来料日期:"> |
| | | <el-input v-if="detailId!==null" :disabled="detailId!==null" v-model="detailInfo.formTime"></el-input> |
| | | <el-date-picker |
| | | v-else |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | v-model="detailInfo.formTime" |
| | | placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="数量:"> |
| | | <el-input placeholder="请输入检验数量" :disabled="detailId!==null" v-model="detailInfo.number"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="单位:"> |
| | | <el-input placeholder="请输入检验单位" :disabled="detailId!==null" v-model="detailInfo.unit"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-form-item v-show="detailId===null" label="" label-width="100px"> |
| | | <el-button @click="addNewRawInspect">保存提交</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | |
| | | <el-col :span="7"> |
| | | <el-form-item v-show="detailId!==null" label="报检日期:"> |
| | | <el-input :disabled="detailId!==null" v-model="detailInfo.createTime"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="14"> |
| | | <el-form-item v-show="detailId!==null" label="报检人:"> |
| | | <el-input :disabled="detailId!==null" v-model="detailInfo.userName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | </el-form> |
| | | <!-- <el-form v-show="detailId ===null" v-model="rawInsParams" label-position="right" label-width="120px" > |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="订单号:"> |
| | | <el-input placeholder="请输入订单号" v-model="rawInsParams.orderNumber"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="客户名称:"> |
| | | <el-input placeholder="请输入客户名称" v-model="rawInsParams.customerName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="工程名称:"> |
| | | <el-input placeholder="请输入工程名称" v-model="rawInsParams.projectName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="质量追溯号:"> |
| | | <el-input placeholder="请输入质量追溯号" v-model="rawInsParams.qualityTraceability"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="项目名称:"> |
| | | <el-select placeholder="请输入项目名称" v-model="rawInsParams.material"> |
| | | <el-option v-for="item in materialOptions" :key="item.id" :label="item.name" :value="item.name"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="产品编码:"> |
| | | <el-input placeholder="产品编码" disabled v-model="code"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="规格型号:"> |
| | | <el-input v-model="detailInfo.specificationsModel"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="单位:"> |
| | | <el-input placeholder="请输入单位" v-model="rawInsParams.unit"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="数量"> |
| | | <el-input placeholder="请输入产品编码" v-model="rawInsParams.qualityTraceability"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="21"> |
| | | <el-form-item label="主机工:"> |
| | | <el-input placeholder="请输入主机工" v-model="rawInsParams.userId"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-form-item label="" label-width="100px"> |
| | | <el-button @click="addNewRawInspect">保存提交</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> --> |
| | | </div> |
| | | <div class="title"> |
| | | <el-row> |
| | | <el-col :span="12" style="line-height: 32px;">检验项目</el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="raw-project-table"> |
| | | <el-table |
| | | :data="projectTable" |
| | | style="width: 100%" |
| | | max-height="320" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="序号" |
| | | width="100" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="项目" |
| | | width="212"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="unit" |
| | | label="单位" |
| | | width="148"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="required" |
| | | label="标准" |
| | | width="254"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="internal" |
| | | label="内控值" |
| | | width="291"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="testValue" |
| | | label="检查值" |
| | | width="371"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.testValue" @blur="changeState(scope.row)"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="deviceName" |
| | | label="试验设备" |
| | | width="248" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="testState" |
| | | label="结论" |
| | | width="98" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-show="scope.row.testState!=null" :style="{color: scope.row.testState===1?'#67C23A':'#F56C6C'}">{{scope.row.testState===1?'合格':'不合格'}}</span> |
| | | <span v-show="scope.row.testState==null">暂未结论</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="title"> |
| | | <el-row> |
| | | <el-col :span="12" style="line-height: 32px;">检验结论</el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="raw-conclusion-table"> |
| | | <el-table :data="conclusionTable"> |
| | | <el-table-column |
| | | prop="code" |
| | | label="物料编号" |
| | | width="353"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="物料名称" |
| | | width="353"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="names" |
| | | label="检验员" |
| | | width="542"> |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.names" :key="item&&item.userName" :style="{marginRight:'8px'}">{{item}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="testState" |
| | | label="检验结论" |
| | | width="362"> |
| | | <template slot-scope="scope"> |
| | | <span v-show="scope.row.testState!=null" :style="{color: scope.row.testState===1?'#67C23A':'#F56C6C'}">{{scope.row.testState===1?'合格':'不合格'}}</span> |
| | | <span v-show="scope.row.testState==null">暂未结论</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | width="120"> |
| | | <template> |
| | | <el-button type="text" size="small" @click.once="submitSave">上报</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | <div class="rawInsBox"> |
| | | <div class="title"> |
| | | <el-row> |
| | | <el-col :span="12" style="line-height: 32px;">原材料检验</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button icon="el-icon-circle-plus-outline" v-show="detailId === null" @click="addNewRawInspect" |
| | | style="background-color: #004ea2; color: #ffffff;">提 交</el-button> |
| | | <el-button icon="el-icon-back" @click="() => { |
| | | goBack(); |
| | | } |
| | | ">返 回</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="raw-detail-info" :class="detailId === null ? 'raw-detail-info-edit' : ''"> |
| | | <el-form v-model="detailInfo" label-position="right" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="来料日期:"> |
| | | <el-input v-if="detailId !== null" :disabled="detailId !== null" |
| | | v-model="detailInfo.formTime"></el-input> |
| | | <el-date-picker v-else type="date" value-format="yyyy-MM-dd" v-model="detailInfo.formTime" |
| | | placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="原材料名称:"> |
| | | <el-input v-if="detailId !== null" :disabled="detailId !== null" |
| | | v-model="detailInfo.name"></el-input> |
| | | <el-input v-else v-model="detailInfo.name" placeholder="请输入原材料名称"></el-input> |
| | | </el-form-item></el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="原材料编码:"> |
| | | <el-input v-if="detailId !== null" :disabled="detailId !== null" |
| | | v-model="detailInfo.code"></el-input> |
| | | <el-input @blur="blurCode" v-else v-model="detailInfo.code" placeholder="请输入原材料编码"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="规格型号:"> |
| | | <el-input v-if="detailId !== null" :disabled="detailId !== null" |
| | | v-model="detailInfo.specifications"></el-input> |
| | | <el-input v-else v-model="detailInfo.specifications" placeholder="请输入规格型号"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="单位:"> |
| | | <el-input v-if="detailId !== null" :disabled="detailId !== null" |
| | | v-model="detailInfo.runit"></el-input> |
| | | <el-input v-else placeholder="请输入检验单位" :disabled="detailId !== null" |
| | | v-model="detailInfo.unit"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="数量:"> |
| | | <el-input :placeholder="detailId !== null ? '' : '请输入检验数量'" :disabled="detailId !== null" |
| | | v-model="detailInfo.number"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="供应商名称:"> |
| | | <el-input :placeholder="detailId !== null ? '' : '请输入供应商名称'" :disabled="detailId !== null" |
| | | v-model="detailInfo.supplier"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item v-show="detailId !== null" label="报检日期:"> |
| | | <el-input :disabled="detailId !== null" v-model="detailInfo.creatTime"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item v-show="detailId !== null" label="报检人:"> |
| | | <el-input :disabled="detailId !== null" v-model="detailInfo.userName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <div class="title"> |
| | | <el-row> |
| | | <el-col :span="12" style="line-height: 32px;">检验项目</el-col> |
| | | <el-col :span="12" style="line-height: 32px; padding-top: 6px;"> |
| | | <el-button style="float: right;" @click="clickDeleteInspectionColumn()">删除检验值列</el-button> |
| | | <el-button style="float: right;margin-right: 30px;" |
| | | @click="clickAddInspectionColumn()">添加检验值列</el-button> |
| | | <el-button v-if="detailId == null" style="float: right;margin-right: 30px;" |
| | | @click="clickAddLine()">添加检验行</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="raw-project-table"> |
| | | <el-table :data="projectTable" style="width: 100%" height="320"> |
| | | <el-table-column type="index" label="序号" width="60"> |
| | | </el-table-column> |
| | | <el-table-column prop="rpName" label="项目" width="212"> |
| | | <template slot-scope="scope"> |
| | | <!-- <el-input v-if="detailId == null" v-model="scope.row.name" placeholder="请输入项目名称"></el-input> --> |
| | | <el-autocomplete v-if="detailId == null" class="inline-input" v-model="scope.row.name" |
| | | :fetch-suggestions="querySearch" placeholder="请输入项目名称" @select="handleSelect(scope.row)" |
| | | @blur="handleSelect(scope.row)"></el-autocomplete> |
| | | <el-input v-else v-model="scope.row.rpName" disabled></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="单位" width="148"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-if="detailId == null" v-model="scope.row.unit" placeholder="请输入单位"></el-input> |
| | | <el-input v-else v-model="scope.row.rpUnit" disabled></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="required" label="标准值" min-width="150"> |
| | | <template slot-scope="scope"> |
| | | <el-input :disabled="detailId != null" @blur="assertTest(scope.row)" v-model="scope.row.required" |
| | | placeholder="请输入标准值"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="internal" label="内控值" min-width="150"> |
| | | <template slot-scope="scope"> |
| | | <el-input @blur="assertTest(scope.row)" :disabled="detailId != null" v-model="scope.row.internal" |
| | | placeholder="请输入内控值"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="testValue" label="检测值" min-width="150" v-for="(item, index) in empiricalValueAdd" |
| | | :key="index"> |
| | | <template slot-scope="scope"> |
| | | <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="请先选择设备!" |
| | | placement="top-start"> |
| | | <el-input :disabled="scope.row.deviceId == null" v-model="scope.row.testValueList[index]" |
| | | @blur="changeState(scope.row, index)" placeholder="请输入检测值"></el-input> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="deviceName" label="试验设备" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="clickTableSelect(scope)">{{ |
| | | scope.row.deviceId == null ? "请选择" : scope.row.deviceName |
| | | }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="detailId !== null" prop="testState" label="结论" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | <span v-show="scope.row.testState != null" :style="{ |
| | | color: scope.row.testState === 1 ? '#67C23A' : '#F56C6C' |
| | | }">{{ scope.row.testState === 1 ? "合格" : "不合格" }}</span> |
| | | <span v-show="scope.row.testState == null">暂未结论</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="detailId == null" label="操作" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="clickDeleteline(scope)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="title"> |
| | | <el-row> |
| | | <el-col :span="12" style="line-height: 32px;">检验结论</el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="raw-conclusion-table"> |
| | | <el-table :data="conclusionTable" style="100%"> |
| | | <el-table-column prop="code" label="物料编号"> </el-table-column> |
| | | <el-table-column prop="name" label="物料名称"> </el-table-column> |
| | | <el-table-column v-if="detailId != null" prop="uName" label="检验员"> |
| | | <template slot-scope="scope"> |
| | | <span v-for="item in scope.row.uName" :key="item && item.uName" :style="{ marginRight: '8px' }">{{ |
| | | item }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="testState" label="检验结论"> |
| | | <template slot-scope="scope"> |
| | | <span v-show="scope.row.testState != null" :style="{ |
| | | color: scope.row.testState === 1 ? '#67C23A' : '#F56C6C' |
| | | }">{{ scope.row.testState === 1 ? "合格" : "不合格" }}</span> |
| | | <span v-show="scope.row.testState != null">{{ null }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="detailId !== null" label="操作" width="120"> |
| | | <template> |
| | | <el-button type="text" size="small" @click="submitSave">上报</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <el-dialog title="请选择设备" :visible.sync="centerDialogVisible" width="20%"> |
| | | <div class="div_device_dialog"> |
| | | <el-input placeholder="输入关键字进行过滤" v-model="filterText" style="margin-bottom: 6px;"> |
| | | </el-input> |
| | | <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all |
| | | highlight-current @node-click="nodeClick" :filter-node-method="filterNode" ref="tree"> |
| | | <div class="custom-tree-node" slot-scope="{ data }"> |
| | | <span><i :class="`node_i ${data.children ? 'el-icon-folder-opened' : 'el-icon-tickets' |
| | | }` |
| | | "></i> |
| | | {{ data.name }}</span> |
| | | </div> |
| | | </el-tree> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="centerDialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="clickNodeSure()">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import RawIns from './raw-ins.vue' |
| | | import { |
| | | triggerRef |
| | | } from "vue"; |
| | | import RawIns from "./raw-ins.vue"; |
| | | export default { |
| | | components:{RawIns}, |
| | | props:['goBack','detailId'], |
| | | created(){ |
| | | // 清空 |
| | | this.detailInfo = {} |
| | | if(this.detailId){ |
| | | console.log(this.detailId) |
| | | this.getDetailInfo() |
| | | }else{ |
| | | this.getOptions() |
| | | } |
| | | }, |
| | | mounted(){ |
| | | }, |
| | | computed:{ |
| | | conclusionTable(){ |
| | | // console.log(this.projectTable) |
| | | // console.log(this.projectTable.map(item=>item.userName)) |
| | | const conclusion = {} |
| | | conclusion.name = this.detailInfo.name |
| | | conclusion.code = this.detailInfo.code |
| | | conclusion.names= [...new Set(this.projectTable.map(item=>item.userName))] |
| | | console.log(conclusion,this.projectTable) |
| | | console.log(this.projectTable.filter(item=>item.testState===null).length) |
| | | if(this.projectTable.filter(item=>item.testState===null).length===this.projectTable.length){ |
| | | conclusion.testState = null |
| | | return [conclusion] |
| | | } |
| | | if(this.projectTable.filter(item=>item.testState===0).length>0){ |
| | | conclusion.testState= 0 |
| | | }else{ |
| | | conclusion.testState= 1 |
| | | } |
| | | return [conclusion] |
| | | }, |
| | | // 产品编码 |
| | | // code(){ |
| | | // const material= this.materialOptions.filter(item=>item.name===this.rawInsParams.material)[0] |
| | | // return material && material.code |
| | | // } |
| | | }, |
| | | data() { |
| | | return { |
| | | // 详情页就是详情信息 |
| | | detailInfo:{}, |
| | | projectTable:[], |
| | | // 新建检验单参数对象 |
| | | rawInsParams:{}, |
| | | // 项目名称options |
| | | materialOptions:[], |
| | | specificationOptions:[] |
| | | components: { |
| | | RawIns |
| | | }, |
| | | props: ["goBack", "detailId"], |
| | | created() { |
| | | // 清空 |
| | | this.detailInfo = {}; |
| | | if (this.detailId) { |
| | | this.getDetailInfo(); |
| | | } |
| | | this.getOptions(); |
| | | }, |
| | | mounted() { |
| | | |
| | | } |
| | | }, |
| | | methods:{ |
| | | // 获取报检单详情信息 |
| | | async getDetailInfo() { |
| | | const {data} = await this.$axios.get(this.$api.url.selectRawInspectsListById+`${this.detailId}`,{params:{id:this.detailId}}) |
| | | this.detailInfo = data |
| | | this.projectTable = data.rawInsProducts |
| | | console.log(data) |
| | | }, |
| | | // 新增检验单 |
| | | async addNewRawInspect() { |
| | | this.detailInfo.specifications = this.detailInfo.specificationsArr.join("-") |
| | | // const time = this.detailInfo.formTime |
| | | // this.detailInfo.formTime = `${time.getFullYear()}-${time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1}-${time.getDate() < 10 ? '0' + time.getDate() : time.getDate()}` |
| | | const res = await this.$axios.post(this.$api.url.addRawInspects,{...this.detailInfo},{headers:{'Content-Type':'application/json'}}) |
| | | console.log(res) |
| | | this.detailId = res.data |
| | | this.getDetailInfo() |
| | | }, |
| | | computed: { |
| | | conclusionTable() { |
| | | const conclusion = {}; |
| | | conclusion.name = this.detailInfo.name; |
| | | conclusion.code = this.detailInfo.code; |
| | | conclusion.uName = [ |
| | | ...new Set(this.projectTable.map(item => item.uName)) |
| | | ]; |
| | | return [conclusion]; |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | // 添加列 |
| | | empiricalValueAdd: 1, |
| | | // 编辑时存储最长的列数字,做删除判断 |
| | | empiricalValueAddMaxNumber: 0, |
| | | // 设备选择树显示 |
| | | centerDialogVisible: false, |
| | | // 详情页就是详情信息 |
| | | detailInfo: {}, |
| | | //产品信息 |
| | | ifsInfo: {}, |
| | | // 表格 |
| | | projectTable: [], |
| | | // 新建检验单参数对象 |
| | | rawInsParams: {}, |
| | | // 项目名称options |
| | | specificationOptions: [], |
| | | filterText: "", |
| | | materialOptions: [], // 树数据 |
| | | defaultProps: { |
| | | // 设备树数据设置 |
| | | children: "children", |
| | | label: "name" |
| | | }, |
| | | nodeData: "", // node点击保存当前点击数据 |
| | | clickSelectDevice: { |
| | | index: "", // 点击选择存储当前行索引 |
| | | rpId: "" // 点击选择存储当前行项目Id |
| | | }, |
| | | restaurants: [] |
| | | }; |
| | | }, |
| | | watch: { |
| | | filterText(val) { |
| | | this.$refs.tree.filter(val); |
| | | } |
| | | }, |
| | | methods: { |
| | | blurCode() { |
| | | // this.detailId=10 |
| | | let data = { |
| | | code: this.detailInfo.code |
| | | } |
| | | console.log(data); |
| | | this.$axios.post( |
| | | this.$api.url.rawInspectChooseIFS, { |
| | | code: this.detailInfo.code |
| | | } |
| | | ).then(res => { |
| | | this.ifsInfo = res.data |
| | | console.log("ifs", this.ifsInfo); |
| | | this.$set(this.detailInfo, "formTime", this.ifsInfo.formTime) |
| | | this.detailInfo.formTime = this.ifsInfo.formTime |
| | | this.detailInfo.name = this.ifsInfo.name |
| | | this.detailInfo.supplier = this.ifsInfo.supplier |
| | | this.detailInfo.unit = this.ifsInfo.unit |
| | | this.detailInfo.userName = this.ifsInfo.userName |
| | | this.detailInfo.number = this.ifsInfo.number |
| | | this.detailInfo.specifications = this.ifsInfo.specifications |
| | | this.restaurants = JSON.parse(JSON.stringify(this.ifsInfo.rawInsProducts)) |
| | | this.restaurants.forEach(item => { |
| | | this.$set(item, "value", item.name) |
| | | }) |
| | | console.log("restaurants", this.restaurants); |
| | | }) |
| | | }, |
| | | querySearch(queryString, cb) { |
| | | var restaurants = this.restaurants; |
| | | var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; |
| | | // 调用 callback 返回建议列表的数据 |
| | | cb(results); |
| | | }, |
| | | createFilter(queryString) { |
| | | return (restaurant) => { |
| | | return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0); |
| | | }; |
| | | }, |
| | | handleSelect(row) { |
| | | let select = this.restaurants.filter(item => { |
| | | return item.name === row.name |
| | | })[0] |
| | | if (select != undefined) { |
| | | this.$set(row, "internal", select.internal) |
| | | this.$set(row, "required", select.required) |
| | | this.$set(row, "unit", select.unit) |
| | | //检验值 |
| | | } |
| | | }, |
| | | assertTest(row) { |
| | | // let fuArr=['>', '<', '='] |
| | | // if(!fuArr.includes(row.required[0])){ |
| | | // this.$message({ |
| | | // message: "标准值["+row.required+"]格式首位应包含>,<或者=", |
| | | // type: 'warning' |
| | | // }); |
| | | // return |
| | | // } |
| | | // if(!fuArr.includes(row.internal[0])){ |
| | | // this.$message({ |
| | | // message: "内控值["+row.internal+"]格式首位应包含>,<或者=", |
| | | // type: 'warning' |
| | | // }); |
| | | // return |
| | | // } |
| | | }, |
| | | // 设备树过滤搜索 |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.name.indexOf(value) !== -1; |
| | | }, |
| | | |
| | | this.$message.success('提交成功') |
| | | }, |
| | | // 修改项目的检测值改变结论 |
| | | async changeState(row){ |
| | | // console.log(row) |
| | | const res = await this.$axios.post(this.$api.url.updaterawInsProduct,{...row},{headers:{'Content-Type':'application/json'}}) |
| | | this.$message.success('提交成功') |
| | | this.getDetailInfo()//重新刷新信息数据 |
| | | }, |
| | | async submitSave() { |
| | | const res = await this.$axios.post(this.$api.url.updateRawInspectsById+`${this.detailId}`) |
| | | this.$message.success('提交成功') |
| | | this.getDetailInfo() |
| | | }, |
| | | async getOptions() { |
| | | // const {data} = await this.$axios.get(this.$api.url.listMaterial) |
| | | // this.materialOptions = data |
| | | const {data} = await this.$axios.get(this.$api.url.selectRawMaterial) |
| | | this.materialOptions = data |
| | | console.log(this.materialOptions) |
| | | }, |
| | | checkRawName(data) { |
| | | console.log('选择原材料名称',data) |
| | | this.materialOptions.forEach(item=>{ |
| | | if(item.name===data){ |
| | | console.log(item.id) |
| | | this.detailInfo.code = item.code |
| | | this.$axios.get(this.$api.url.selectSpBySt,{params:{id:item.id}}).then(res=>{ |
| | | this.specificationOptions= res.data |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | // 获取报检单详情信息 |
| | | async getDetailInfo() { |
| | | await this.$axios |
| | | .get(this.$api.url.selectRawInspectsListById + `${this.detailId}`, { |
| | | params: { |
| | | id: this.detailId |
| | | } |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | this.detailInfo = res.data; |
| | | this.projectTable = res.data.children; |
| | | this.projectTable.forEach(i => { |
| | | // 解决重新赋值无法编辑操作 |
| | | if (i.testValue == null) { |
| | | this.$set(i, "testValueList", []); |
| | | } else { |
| | | this.$set(i, "testValueList", i.testValue.split(",")); |
| | | } |
| | | // 取最长的列表数 |
| | | if (i.testValueList.length > this.empiricalValueAdd) { |
| | | this.empiricalValueAdd = i.testValueList.length; |
| | | this.empiricalValueAddMaxNumber = i.testValueList.length - 1; |
| | | } |
| | | }); |
| | | }); |
| | | }, |
| | | // 新增检验单 |
| | | async addNewRawInspect() { |
| | | //TODO: |
| | | console.log(this.projectTable); |
| | | if (this.projectTable.length > 0) { |
| | | let filterTable = this.projectTable.filter(item => { |
| | | return item.required === '' || item.internal === '' || |
| | | item.required === null || item.internal === null || item.name === '' |
| | | }) |
| | | if (filterTable.length > 0) { |
| | | this.$message({ |
| | | message: "项目名称,标准值和内控值不能为空!", |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } |
| | | } |
| | | this.projectTable.forEach(i => { |
| | | // 将列表转换为字符串 |
| | | i.testValue = i.testValueList.join(","); |
| | | }); |
| | | this.detailInfo.rawInsProducts = this.projectTable; |
| | | this.$axios.post( |
| | | this.$api.url.addRawInspects, { |
| | | ...this.detailInfo |
| | | }, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | } |
| | | } |
| | | ).then(res => { |
| | | console.log(res); |
| | | if (res.code == "201") { |
| | | this.$message({ |
| | | message: res.message, |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } else { |
| | | // this.detailId = res.data; |
| | | // this.getDetailInfo(); |
| | | // // this.$message.success(res.message); |
| | | // this.goBack(); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | // 修改项目的检测值改变结论 |
| | | async changeState(row, index) { |
| | | if (this.detailId !== null) { |
| | | const res = await this.$axios.post(this.$api.url.updaterawInsProduct, { |
| | | DevId: row.deviceId, |
| | | rpId: row.rpId, |
| | | testValue: row.testValueList.join(",") |
| | | }); |
| | | this.$message.success("提交成功"); |
| | | this.getDetailInfo(); //重新刷新信息数据 |
| | | } |
| | | }, |
| | | submitSave() { |
| | | let pro = this.projectTable.filter(item => { |
| | | return item.testState === 0; |
| | | }) |
| | | if (pro.length > 0) { |
| | | this.$prompt('请输入不合格数量', '不合格数量', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | inputPattern: /^\d+$/, |
| | | inputErrorMessage: '请输入正确数字格式' |
| | | }).then(({ value }) => { |
| | | this.$axios.post( |
| | | this.$api.url.updateRawInspectsById+`${this.detailId}`, {"number": value } |
| | | ).then(res => { |
| | | this.$message.success("提交成功"); |
| | | this.getDetailInfo(); |
| | | this.goBack() |
| | | }); |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '取消输入' |
| | | }); |
| | | }); |
| | | }else{ |
| | | this.$axios.post( |
| | | this.$api.url.updateRawInspectsById + `${this.detailId}` |
| | | ).then(res => { |
| | | this.$message.success("提交成功"); |
| | | this.getDetailInfo(); |
| | | this.goBack() |
| | | }); |
| | | } |
| | | }, |
| | | // 获取设备树内容 |
| | | getOptions() { |
| | | this.$axios.get(this.$api.url.rawSelectDevice).then(res => { |
| | | this.materialOptions = res.data; |
| | | }); |
| | | }, |
| | | // 添加行 |
| | | clickAddLine() { |
| | | let obj = { |
| | | deviceId: null, |
| | | deviceName: "", |
| | | internal: "", |
| | | name: "", |
| | | required: "", |
| | | textValue: "", |
| | | testState: null, |
| | | testValueList: [], |
| | | unit: "" |
| | | }; |
| | | this.projectTable.push(obj); |
| | | }, |
| | | // 删除行 |
| | | clickDeleteline(scope) { |
| | | this.projectTable.splice(scope.$index, 1); |
| | | }, |
| | | // 点击设备树保存点击记录 |
| | | nodeClick(data) { |
| | | if (data.id != undefined) this.nodeData = data; |
| | | }, |
| | | // 点击表格选择触发 |
| | | clickTableSelect(scope) { |
| | | this.centerDialogVisible = true; |
| | | this.clickSelectDevice.index = scope.$index; |
| | | this.clickSelectDevice.rpId = scope.row.rpId; |
| | | }, |
| | | // 点击树里面的确定 |
| | | clickNodeSure() { |
| | | if (this.detailId == null) { |
| | | this.projectTable[ |
| | | this.clickSelectDevice.index |
| | | ].deviceId = this.nodeData.id; |
| | | this.projectTable[ |
| | | this.clickSelectDevice.index |
| | | ].deviceName = this.nodeData.name; |
| | | this.centerDialogVisible = false; |
| | | } else { |
| | | this.$axios |
| | | .post(this.$api.url.updateDevByRpId, { |
| | | rpId: this.clickSelectDevice.rpId, |
| | | devId: this.nodeData.id |
| | | }) |
| | | .then(res => { |
| | | this.getDetailInfo(); |
| | | this.centerDialogVisible = false; |
| | | }); |
| | | } |
| | | }, |
| | | // 删除检验值列 |
| | | clickDeleteInspectionColumn() { |
| | | if (this.empiricalValueAdd - 1 === 0) { } else { |
| | | if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { |
| | | this.empiricalValueAdd = this.empiricalValueAdd - 1; |
| | | this.projectTable.forEach(i => { |
| | | i.testValueList.splice(this.empiricalValueAdd, 1); |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | // 添加检验值列 |
| | | clickAddInspectionColumn() { |
| | | this.empiricalValueAdd = this.empiricalValueAdd + 1; |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .node_i { |
| | | color: orange; |
| | | } |
| | | |
| | | .div_device_dialog { |
| | | min-height: 400px; |
| | | overflow: auto; |
| | | } |
| | | |
| | | .rawInsBox { |
| | | height: 100%; |
| | | width: 100%; |
| | | overflow-y: scroll; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .el-table__fixed-body-wrapper { |
| | | top: 48px; |
| | | } |
| | | |
| | | .rawInsBox .title .el-button { |
| | | height: 32px; |
| | | border: 1px solid rgba(190, 190, 190, 0.44); |
| | | box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); |
| | | padding: 0 12px; |
| | | } |
| | | |
| | | .rawInsBox .title { |
| | | margin-bottom: 10px; |
| | | padding: 0 20px; |
| | | } |
| | | |
| | | /* 检验详情 */ |
| | | .raw-detail-info { |
| | | background: #fff; |
| | | padding: 26px 0px 11px 80px; |
| | | } |
| | | |
| | | .raw-detail-info>>>.el-form-item__label { |
| | | color: rgb(51, 51, 51); |
| | | font-family: 微软雅黑; |
| | | font-size: 16px; |
| | | font-weight: 400; |
| | | letter-spacing: 0px; |
| | | } |
| | | |
| | | .raw-detail-info .el-input { |
| | | width: auto; |
| | | } |
| | | |
| | | .raw-detail-info.raw-detail-info-edit>>>.el-input__inner { |
| | | background: #fff; |
| | | } |
| | | |
| | | .raw-detail-info>>>.el-input__inner { |
| | | width: 224px; |
| | | height: 32px; |
| | | box-sizing: border-box; |
| | | background: rgb(238, 238, 238); |
| | | border: 1px solid rgb(221, 221, 221); |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .raw-detail-info .el-form-item { |
| | | margin-bottom: 24px; |
| | | } |
| | | |
| | | .raw-detail-info .el-form-item .el-button { |
| | | height: 32px; |
| | | border: 1px solid rgba(190, 190, 190, 0.44); |
| | | box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); |
| | | padding: 0 12px; |
| | | } |
| | | |
| | | /* 检验项目 */ |
| | | .raw-project-table { |
| | | padding: 24px 14px; |
| | | background: #fff; |
| | | flex: 1; |
| | | /* max-height: 360px; */ |
| | | /* overflow-y: hidden; */ |
| | | } |
| | | |
| | | /* 检验结论 */ |
| | | .raw-conclusion-table { |
| | | padding: 9px 14px; |
| | | background: #fff; |
| | | } |
| | | </style> |