From 1e04e42f5f93e16d3e937927a5500c5e44834f16 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期三, 01 十一月 2023 20:25:37 +0800 Subject: [PATCH] new file: src/api/quality/processInspect.js modified: src/router/views/index.js renamed: src/views/quality/finishedProductInspection/finishedProductInspectionAdd.vue -> src/views/quality/finishedProductInspection/finishedProduct-form.vue modified: src/views/quality/finishedProductInspection/index.vue new file: src/views/quality/processInspect/index.vue new file: src/views/quality/processInspect/processInspect-form.vue modified: src/views/quality/rawMaterial/index.vue modified: src/views/quality/rawMaterial/rawMaterial-form.vue --- src/views/quality/rawMaterial/rawMaterial-form.vue | 86 ++- src/api/quality/processInspect.js | 80 ++++ src/router/views/index.js | 19 src/views/quality/finishedProductInspection/index.vue | 112 ----- src/views/quality/finishedProductInspection/finishedProduct-form.vue | 84 ++- src/views/quality/processInspect/index.vue | 298 ++++++++++++++ src/views/quality/rawMaterial/index.vue | 5 src/views/quality/processInspect/processInspect-form.vue | 510 +++++++++++++++++++++++++ 8 files changed, 1,030 insertions(+), 164 deletions(-) diff --git a/src/api/quality/processInspect.js b/src/api/quality/processInspect.js new file mode 100644 index 0000000..8968102 --- /dev/null +++ b/src/api/quality/processInspect.js @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2018-2025, ztt All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: ztt + */ + +import request from '@/router/axios' + +export function page(query) { + return request({ + url: '/mes/qualityProcessInspect/page', + method: 'get', + params: query + }) +} + +export function updateProcessInspectsById(query) { + return request({ + url: '/mes/qualityProcessInspect/updateProcessInspectsById', + method: 'post', + params: query + }) +} + +export function chooseMater(query) { + return request({ + url: '/mes/qualityProcessInspect/chooseMater', + method: 'get', + params: query + }) + } + +export function addProcess(obj) { + return request({ + url: '/mes/qualityProcessInspect/addProcess', + method: 'post', + data: obj + }) +} + +export function queryById(obj) { + return request({ + url: '/mes/qualityProcessInspect/'+obj, + method: 'get', + }) +} + +export function deleteById(obj) { + return request({ + url: '/mes/qualityProcessInspect/'+obj, + method: 'delete', + }) +} + +export function updateDeviceBypppId(obj) { + return request({ + url: '/mes/qualityProcessInsProduct/updateDevBypppId', + method: 'post', + params: obj + }) +} + +export function updateProcessInsProduct(obj) { + return request({ + url: '/mes/qualityProcessInsProduct/updateprocessInsProduct', + method: 'post', + params: obj + }) +} \ No newline at end of file diff --git a/src/router/views/index.js b/src/router/views/index.js index 4e5ee6e..7269a62 100644 --- a/src/router/views/index.js +++ b/src/router/views/index.js @@ -169,7 +169,24 @@ path: 'finishedProduct-form', name: 'finishedProductForm', component: () => - import(/* webpackChunkName: "views" */ '@/views/quality/finishedProductInspection/finishedProductInspectionAdd'), + import(/* webpackChunkName: "views" */ '@/views/quality/finishedProductInspection/finishedProduct-form'), + meta: { + keepAlive: false, + isTab: false, + isAuth: false + } + } + ] + }, + { + path: '/quality/processInspect', + component: Layout, + children: [ + { + path: 'processInspect-form', + name: 'processInspectForm', + component: () => + import(/* webpackChunkName: "views" */ '@/views/quality/processInspect/processInspect-form'), meta: { keepAlive: false, isTab: false, diff --git a/src/views/quality/finishedProductInspection/finishedProductInspectionAdd.vue b/src/views/quality/finishedProductInspection/finishedProduct-form.vue similarity index 87% rename from src/views/quality/finishedProductInspection/finishedProductInspectionAdd.vue rename to src/views/quality/finishedProductInspection/finishedProduct-form.vue index f3a7a4c..46c7e91 100644 --- a/src/views/quality/finishedProductInspection/finishedProductInspectionAdd.vue +++ b/src/views/quality/finishedProductInspection/finishedProduct-form.vue @@ -4,7 +4,8 @@ <div class="page-header"> <div class="header-left"> <a @click="$router.go(-1)"><i class="icon-btn-back"></i></a> - <h2>缂栬緫-浜у搧妫�楠屽崟</h2> + <h2 v-if="resultVal!=null && processInspectVo.id!=null">鏌ョ湅-浜у搧妫�楠屽崟</h2> + <h2 v-else>缂栬緫-浜у搧妫�楠屽崟</h2> </div> <div class="btn-group header-right"> <el-button @click="addTestProject" v-if="processInspectVo.id==null">鐢熸垚妫�楠岄」鐩�</el-button> @@ -35,14 +36,6 @@ </el-form-item> </el-col> <el-col :span="6"> - <el-form-item label="璐ㄩ噺杩芥函鍙凤細"> - <el-input disabled v-model="processInspectVo.qualityTraceability" - placeholder="璇疯緭鍏ヨ川閲忚拷婧彿" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <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="璇烽�夋嫨浜у搧鍚嶇О"> @@ -52,6 +45,8 @@ </el-select> </el-form-item> </el-col> + </el-row> + <el-row> <el-col :span="6"> <el-form-item label="浜у搧缂栫爜锛�"> <el-input disabled v-model="processInspectVo.mcode" @@ -70,8 +65,6 @@ placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> </el-form-item> </el-col> - </el-row> - <el-row> <el-col :span="6"> <el-form-item label="鏁伴噺锛�"> <el-input v-model="processInspectVo.quantity" placeholder="璇疯緭鍏ユ暟閲�" @@ -85,7 +78,7 @@ <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 :span="12" class="inspectionProject_span" style="text-align: right;"> + <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> @@ -109,16 +102,20 @@ placement="top-start"> <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" @blur="changeState(scope.row, index)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> - </el-tooltip> + <span v-if="resultVal != null" v-text="scope.row.empiricalValueAddss[index]"></span> + </el-tooltip> </template> </el-table-column> <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="250"> <template slot-scope="scope"> - <el-select style="width:100%" v-model="scope.row.eId" - v-if="scope.row.iname != null" filterable @change="updateDevice(scope.row)"> - <el-option v-for="(item,index) in deviceList" - :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> - </el-select> + <span v-if="resultVal!=null && processInspectVo.id!=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)"> + <el-option v-for="(item,index) in deviceList" + :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> + </el-select> + </div> </template> </el-table-column> <el-table-column label="缁撹" fixed="right" min-width="100"> @@ -148,13 +145,13 @@ <el-table-column prop="userName" label="妫�楠屽憳"></el-table-column> <el-table-column prop="result" label="妫�楠岀粨璁�"> <template slot-scope="scope"> - <el-tag type="success" v-if="scope.row.result == 1">鍚堟牸</el-tag> - <el-tag type="danger" v-else-if="scope.row.result == 0">涓嶅悎鏍�</el-tag> + <el-tag type="success" v-if="scope.row.result == '1'">鍚堟牸</el-tag> + <el-tag type="danger" v-else-if="scope.row.result == '0'">涓嶅悎鏍�</el-tag> </template> </el-table-column> <el-table-column label="鎿嶄綔"> <template> - <el-button type="text" @click="submitSave()" size="small">涓婃姤</el-button> + <el-button type="text" :disabled="resultVal!=null && processInspectVo.id!=null" @click="submitSave()" size="small">涓婃姤</el-button> </template> </el-table-column> </el-table> @@ -178,6 +175,7 @@ export default { data() { return { + resultVal: null, deviceList: [], hasChildren: true, optionsSamplename: [], @@ -214,6 +212,11 @@ mounted() { this.getDeviceList() this.processInspectVo.id = this.$route.query.id + this.resultVal = this.$route.query.resultVal + if(this.resultVal == null){ + let val = sessionStorage.getItem("finished-resultVal"); + val == undefined ? this.resultVal=null : this.resultVal = val + } this.init() }, methods: { @@ -240,15 +243,40 @@ number: value } updateFinishedInspectById(data).then(res => { - this.$message.success("涓婃姤鎴愬姛"); + if(res.data.data.indexOf("鎴愬姛") > 0){ + this.$message.success("涓婃姤鎴愬姛"); + this.checkTestState() + }else{ + this.$message.warning(res.data.data) + } }); }).catch(() => {}); }else{ updateFinishedInspectById({id:this.processInspectVo.id,number:0}).then(res => { - this.$message.success("涓婃姤鎴愬姛"); + if(res.data.data.indexOf("鎴愬姛") > 0){ + this.$message.success("涓婃姤鎴愬姛"); + this.checkTestState() + }else{ + this.$message.warning(res.data.data) + } }); } this.init() + }, + checkTestState(){ + let resultVal = '1' + this.inspectionItems.forEach(item=>{ + if(item.children){ + item.children.forEach(obj=>{ + if(obj.iresult == 0){ + resultVal = '0' + } + }) + } + }) + this.resultVal = resultVal + this.inspectionResultForm[0].result = resultVal + sessionStorage.setItem("finished-resultVal",resultVal) }, init(){ let id = this.processInspectVo.id @@ -263,7 +291,6 @@ this.processInspectVo.specificationsModel = result.specs this.processInspectVo.unit = result.punit this.processInspectVo.quantity = result.quantity - let resultVal = 1 let userList = [] result.children.forEach(item=>{ item.iid = Math.random() @@ -275,9 +302,6 @@ } if(obj.inspectionValue){ arr = obj.inspectionValue.split(",") - } - if(obj.iresult && obj.iresult == 0){ - resultVal = 0 } obj.empiricalValueAddss = arr if(arr.length > this.empiricalValueAdd){ @@ -291,7 +315,7 @@ materialCode: result.materialCode, material: result.material, userName: Array.from(new Set(userList)).join(","), - result: resultVal, + result: this.resultVal==null ? '' : this.resultVal, }] }).catch(error=>{ console.log(error) @@ -425,7 +449,7 @@ <style scoped> .finishedProduct-detail { width: 100%; - height: 470px; + height: 500px; padding: 10px 20px; display: flex; border: 1px solid #ddd; @@ -449,7 +473,7 @@ .finishedProduct-basic { background-color: #fff; - height: 155px; + height: 120px; display: flex; flex-wrap: wrap; padding: 10px 20px; diff --git a/src/views/quality/finishedProductInspection/index.vue b/src/views/quality/finishedProductInspection/index.vue index e2cccb9..674a317 100644 --- a/src/views/quality/finishedProductInspection/index.vue +++ b/src/views/quality/finishedProductInspection/index.vue @@ -16,11 +16,10 @@ </div> </template> - <script> import ttable from '@/views/common/ztt-table.vue' import * as fecha from 'element-ui/lib/utils/date' - import finishedProductInspectionAdd from './finishedProductInspectionAdd' + import finishedProductInspectionAdd from './finishedProduct-form' import { page,deletePro } from '@/api/quality/finishedProduct' export default { components: { @@ -151,9 +150,6 @@ fun: this.addOrUpdateHandle }, { - text: '鍒犻櫎', - }, - { text: '瀵煎嚭', } ], @@ -174,67 +170,9 @@ minWidth: 100 }, }, - - - - - - - searchData: { - result: '', - material: '', - }, - // 涓绘満宸ヤ笅鎷夋 - usernameOptions: [], - inspectionTable: [], - rowInfo: {}, - pageParams: { - countSize: 10, //姣忛〉鏁伴噺 - pageSize: 1, // 褰撳墠椤电爜 - total: 0 - }, - showAddPage: false, - showAdd: false, - showLook: false, - showUp: false, - showDetail: false, - addInspectionform: [{ - number: '', - username: '', - projectname: '', - tracenumber: '', - code: '', - class: '', - specificationmodel: '', - unit: '', - quantity: '', - group: '', - worker: '', - machine: '' - }], - inspectionItems: [{ - project: '甯冮殕杩�', - unit: '鍚�', - standardVal: '8219384314', - controlVal: '9823401', - detectionVal: '11111', - device: '', - conclusion: '鍚堟牸' - }], - inspectionResultForm: [{ - id: '274024', - name: '111', - inspecter: '111', - conclusion: '', - operation: '' - }], - finishedInsInfo: {} } }, - created() { - this.init() - // this.getInspectionTableData() - }, + created() { }, methods: { deleteHandle(row){ console.log(row.id) @@ -257,7 +195,10 @@ addOrUpdateHandle(row) { this.$router.push({ name: 'finishedProductForm', - query: { id: row == null ? null : row.id } + query: { + id: row == null ? null : row.id, + resultVal: row == null ? null : row.result + } }) }, formatResult(row, column, cellValue){ @@ -272,49 +213,10 @@ formatDateTime(row, column, cellValue) { return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' }, - handleSelectionChange(){ - - }, - // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 - handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉) - this.currentPage = 1 - this.pageSize = val - }, - // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� - handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`) - this.currentPage = val - }, - handleAddNew() { - this.showAdd = true - }, + handleSelectionChange(){ }, getData() { this.$refs.finishedProduct.getDataList() }, - goToDetail(row) { - this.rowInfo = row - this.showLook = true - }, - goUp(row) { - this.rowInfo = row - this.showUp = true - }, - async init() { - // const {data} = await this.$axios.get(this.$api.url.finishedInspectUser) - // this.usernameOptions = data - - }, - comBackMain(val) { - this.showAdd = false - this.showLook = false - this.showUp = false - this.init() - // this.getInspectionTableData() - if (val) { - this.$parent.removeAllTab() - } - } } } diff --git a/src/views/quality/processInspect/index.vue b/src/views/quality/processInspect/index.vue new file mode 100644 index 0000000..fdc05d8 --- /dev/null +++ b/src/views/quality/processInspect/index.vue @@ -0,0 +1,298 @@ +<template> + <div class="content-main"> + <div class="rawPage"> + <basic-container> + <ttable + :table="table" + @handleSelectionChange="handleSelectionChange" + :prelang="prelang" + :options="options" + :ajaxFun="ajaxFun" + ref="processInspect"> + <template #toolbar></template> + </ttable> + </basic-container> + </div> + </div> +</template> + +<script> + import ttable from '@/views/common/ztt-table.vue' + import * as fecha from 'element-ui/lib/utils/date' + import processInspectForm from './processInspect-form' + import { page,deleteById } from '@/api/quality/processInspect' + export default { + components: { + processInspectForm, + ttable + }, + data() { + return { + result:[{label:'鍏ㄩ儴',value: ''},{label:'鍚堟牸',value: '1'},{label:'涓嶅悎鏍�',value: '0'}], + type: [1], + prelang: 'processInspect', + ajaxFun: page, + options: { + height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾 + stripe: true, // 鏄惁涓烘枒椹汗 table + highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈 + border: true, // 鏄惁鏈夌旱鍚戣竟妗� + lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇 + fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮� + multiSelect: true, // + seqNo: true, + isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 + isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H + isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 + defaultOrderBy: { column: 'createTime', direction: 'desc' }, + }, + table: { + total: 0, + currentPage: 1, + pageSize: 20, + data: [], + // 鏍囬 + column: [ + { + minWidth: '120', + prop: 'orderNumber', + label: '璁㈠崟缂栧彿', + isTrue: true, + isSearch: true, + searchInfoType: 'text', + render: { fun: this.addOrUpdateHandle } + }, + { + minWidth: '120', + prop: 'material', + label: '浜у搧鍚嶇О', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '130', + width: '150', + prop: 'specs', + label: '瑙勬牸鍨嬪彿', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text', + }, + { + minWidth: '120', + prop: 'operaName', + label: '宸ュ簭', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'unit', + label: '鍗曚綅', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'quantity', + label: '鏁伴噺', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'createTime', + label: '鎶ユ鏃ユ湡', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'datetimerange', + formatter: this.formatDateTime, + }, + { + minWidth: '120', + prop: 'createUser', + label: '鎶ユ浜�', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'updateTime', + label: '妫�娴嬫棩鏈�', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'datetimerange', + formatter: this.formatDateTime, + }, + { + minWidth: '120', + prop: 'result', + label: '鍚堟牸鐘舵��', + isTrue: true, + isSearch: true, + searchInfoType: 'select', + formatter: this.formatResult, + optList: () => { + return this.result + } + }, + ], + toolbar: [ + { + text: '鏂板', + type: 'primary', + fun: this.addOrUpdateHandle + }, + { + text: '瀵煎嚭', + } + ], + operator: [{ + text: '浣滃簾', + type: 'text', + size: 'small', + fun: this.deleteHandle + }], + operatorConfig: { + fixed: 'right', + label: '鎿嶄綔', + width: 100, + minWidth: 100 + }, + }, + } + }, + created() { }, + methods: { + deleteHandle(row){ + this.$confirm('纭鍒犻櫎璇ユ暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + }).then(()=>{ + deleteById(row.id).then(res=>{ + if(res.data.code == 0){ + this.$message.success("鍒犻櫎鎴愬姛") + }else{ + this.$message.error("鍒犻櫎澶辫触") + } + this.getData() + }) + }) + }, + // 鏂板 / 淇敼 + addOrUpdateHandle(row) { + this.$router.push({ + name: 'processInspectForm', + query: { id: row == null ? null : row.id,resultVal : row == null ? null : row.result }, + }) + }, + formatResult(row, column, cellValue){ + if(cellValue != undefined || cellValue != null){ + if(cellValue == 0){ + return "<span style='color:#E84738;'>涓嶅悎鏍�</span>" + }else if(cellValue == 1){ + return "<span style='color:#34BD66;'>鍚堟牸</span>" + } + } + }, + formatDateTime(row, column, cellValue) { + return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' + }, + handleSelectionChange(){ }, + getData() { + this.$refs.processInspect.getDataList() + }, + } + + } +</script> + +<style scope="scope"> + .title { + padding: 12px; + + } + + .nav { + display: flex; + padding: 20px 20px; + align-items: center; + background-color: #fff; + } + + .nav * { + font-size: 14px; + } + + .content-body { + background-color: #fff; + overflow: hidden; + margin-top: 12px; + } + + .inspectionTable { + padding: 20px 20px; + } + + .pagination { + float: right; + margin-right: 20px; + } + + .newPage { + overflow: hidden; + } + + .header { + padding: 12px; + } + + .addInspectionform { + background-color: #fff; + } + + .addInspectionform .formwrapper { + padding: 20px 0px; + margin-left: 100px; + } + + .inspectionProject span { + display: block; + padding: 5px 0px; + } + + .inspectionProject .el-table { + background-color: #fff; + padding: 10px 12px; + } + + .inspectionResult span { + display: block; + padding: 5px 0px; + } + + .inspectionResult .el-table { + background-color: #fff; + padding: 10px 12px; + } + + .rawPage { + height: 100%; + display: flex; + flex-direction: column; + overflow-y: scroll; + } + + .rawPage .content-body { + flex: 1; + } +</style> \ No newline at end of file diff --git a/src/views/quality/processInspect/processInspect-form.vue b/src/views/quality/processInspect/processInspect-form.vue new file mode 100644 index 0000000..8cffa25 --- /dev/null +++ b/src/views/quality/processInspect/processInspect-form.vue @@ -0,0 +1,510 @@ +<template> + <!-- 鏂板椤甸潰 --> + <div class="addInspection"> + <div class="page-header"> + <div class="header-left"> + <a @click="$router.go(-1)"><i class="icon-btn-back"></i></a> + <h2 v-if="resultVal != null && processInspectVo.id!=null">鏌ョ湅-杩囩▼妫�楠屽崟</h2> + <h2 v-else>缂栬緫-杩囩▼妫�楠屽崟</h2> + </div> + <div class="btn-group header-right"> + <el-button @click="addTestProject" v-if="processInspectVo.id==null">鐢熸垚妫�楠岄」鐩�</el-button> + </div> + </div> + <div class="page-main"> + <div class="finishedProduct-basic"> + <el-form :model="processInspectVo" ref="addInspectionform" class="l-mes" + label-position="right" label-width="120px" style="width: 100%" size="small"> + <div class="formwrapper"> + <el-row> + <el-col :span="6"> + <el-form-item label="璁㈠崟鍙凤細"> + <el-input @blur="selectInfoByOrderId" :disabled="processInspectVo.id != null" + v-model="processInspectVo.orderNumber" placeholder="璇疯緭鍏ヨ鍗曞彿" autocomplete="off" /> + </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> + </el-col> + <el-col :span="6"> + <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-input disabled v-model="processInspectVo.specs" + placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="6"> + <el-form-item label="宸ュ簭鍚嶇О"> + <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"> + </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> + </el-col> + </el-row> + <el-row> + <el-col :span="6"> + <el-form-item label="鏁伴噺锛�"> + <el-input v-model="processInspectVo.quantity" placeholder="璇疯緭鍏ユ暟閲�" + autocomplete="off" :disabled="processInspectVo.id != null" /> + </el-form-item> + </el-col> + </el-row> + </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-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, index)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> + <span v-if="resultVal != null && processInspectVo.id!=null" v-text="scope.row.empiricalValueAddss[index]"></span> + </el-tooltip> + </template> + </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)"> + <el-option v-for="(item,index) in deviceList" + :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> + </el-select> + </div> + </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> + </div> + <div class="finishedProduct-result"> + <el-row style="width:100%"> + <el-col :span="24">妫�娴嬬粨鏋�</el-col> + </el-row> + <el-row style="width:100%;"> + <el-col :span="24"> + <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="userName" label="妫�楠屽憳"></el-table-column> + <el-table-column prop="result" label="妫�楠岀粨璁�"> + <template slot-scope="scope"> + <el-tag type="success" v-if="scope.row.result == '1'">鍚堟牸</el-tag> + <el-tag type="danger" v-if="scope.row.result == '0'">涓嶅悎鏍�</el-tag> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔"> + <template> + <el-button type="text" :disabled="resultVal != null && processInspectVo.id!=null" @click="submitSave()" size="small">涓婃姤</el-button> + </template> + </el-table-column> + </el-table> + </el-col> + </el-row> + </div> + </div> + </div> + </template> + + <script> + import { + chooseMater, + addProcess, + queryById, + updateDeviceBypppId, + updateProcessInsProduct, + updateProcessInspectsById, + } from '@/api/quality/processInspect' + import { selectDevice } from '@/api/quality/rawMaterial' + export default { + data() { + return { + resultVal: null, + technologyList: [], + deviceList: [], + hasChildren: true, + optionsSamplename: [], + // 娣诲姞鍒� + empiricalValueAdd: 1, + // 缂栬緫鏃跺瓨鍌ㄦ渶闀跨殑鍒楁暟瀛楋紝鍋氬垹闄ゅ垽鏂� + empiricalValueAddMaxNumber: 0, + processInspectVo: { + id: null, + material: null, + materialCode: null, + orderNumber: "ZTTIC20230001", + quantity: null, + specs: null, + unit: null, + technologyOperationId: null + }, + inspectionItems: [], // 鏂板妫�楠岄」鐩〃鏍� + inspectionResultForm: [], + } + }, + watch: { + }, + beforeUpdate(){ + this.$nextTick(()=>{ + this.$refs.table.doLayout(); + }) + }, + created() { + }, + mounted() { + this.getDeviceList() + this.processInspectVo.id = this.$route.query.id + this.resultVal = this.$route.query.resultVal + if(this.resultVal == null){ + let val = sessionStorage.getItem("process-resultVal"); + val == undefined ? this.resultVal=null : this.resultVal = val + } + this.init() + }, + methods: { + submitSave(){ + let pro = 0 + console.log(this.inspectionItems); + this.inspectionItems.forEach(item => { + if(item.children){ + let arr = item.children.filter(obj=>{ + return obj.iresult == 0; + }) + pro+=arr.length + } + }) + if (pro > 0) { + this.$prompt('璇疯緭鍏ヤ笉鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + inputPattern: /^\d+$/, + inputErrorMessage: '璇疯緭鍏ユ纭暟瀛楁牸寮�' + }).then(({ value }) => { + let data = { + id: this.processInspectVo.id, + number: value + } + updateProcessInspectsById(data).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({id:this.processInspectVo.id,number:0}).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 + } + }); + } + this.init() + }, + checkTestState(){ + let resultVal = '1' + this.inspectionItems.forEach(item=>{ + if(item.children){ + item.children.forEach(obj=>{ + if(obj.iresult == 0){ + resultVal = '0' + } + }) + } + }) + this.resultVal = resultVal + this.inspectionResultForm[0].result = resultVal + sessionStorage.setItem("process-resultVal",resultVal) + }, + init(){ + let id = this.processInspectVo.id + if(id != null){ + queryById(id).then(res=>{ + let result = res.data.data + 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=>{ + item.iid = Math.random() + if(item.children != undefined){ + item.children.forEach(obj=>{ + let arr = [] + if(obj.userName){ + userList.push(obj.userName) + } + if(obj.inspectionValue){ + arr = obj.inspectionValue.split(",") + } + obj.empiricalValueAddss = arr + if(arr.length > this.empiricalValueAdd){ + this.empiricalValueAdd = arr.length + } + }) + } + }) + this.inspectionItems = result.children + this.inspectionResultForm = [{ + materialCode: result.materialCode, + material: result.material, + userName: Array.from(new Set(userList)).join(","), + result: this.resultVal == null ? '' : this.resultVal, + }] + }).catch(error=>{ + console.log(error) + }) + } + }, + getDeviceList(){ + selectDevice(null).then(res=>{ + this.deviceList = res.data.data + }) + }, + updateDevice(row){ + updateDeviceBypppId({equiomentId:row.eId,ppid:row.iId}).then(res=>{ + }).catch(error=>{ + 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, index) { + 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 = { + equiomentId: row.eId, + ppid: row.iid, + inspectionValue: str + } + updateProcessInsProduct(obj).then(res=>{ + if(res.data.code == 0){ + this.$message.success("鏇存柊鎴愬姛") + }else{ + this.$message.error("鏇存柊澶辫触") + } + this.init() + }) + } + }, + addTestProject() { + let val = this.processInspectVo + addProcess(val).then(res=>{ + let id = res.data.data + if(id != null){ + queryById(id).then(response=>{ + console.log(response.data.data.children) + let proList = response.data.data.children + proList.forEach(item=>{ + item.iid = Math.random(); + if(item.children != undefined){ + item.children.forEach(obj=>{ + obj.empiricalValueAddss = [] + }) + } + }) + this.inspectionItems = proList + }).catch(error=>{ + console.log(error); + }) + } + }).catch(error=>{ + console.log(error) + }) + }, + selectInfoByOrderId() { + chooseMater({ + orderNumber: this.processInspectVo.orderNumber + }).then(res => { + if (res.data.data != null) { + this.optionsSamplename = res.data.data.children + } else { + this.$message({ + message: '娌℃湁璇ヨ鍗曞彿锛�', + type: 'warning' + }); + this.optionsSamplename = [] + this.processInspectVo.materialCode = null + this.processInspectVo.material = null + this.processInspectVo.specs = null + this.processInspectVo.unit = null + } + }) + }, + // 鍒犻櫎妫�楠屽�煎垪 + clickDeleteInspectionColumn() { + if (this.empiricalValueAdd - 1 === 0) { + } else { + if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { + this.empiricalValueAdd = this.empiricalValueAdd - 1; + this.inspectionItems.forEach(i => { + i.empiricalValueAddss.splice(this.empiricalValueAdd, 1); + }); + } + } + }, + // 娣诲姞妫�楠屽�煎垪 + clickAddInspectionColumn() { + this.empiricalValueAdd = this.empiricalValueAdd + 1; + } + }, + } + </script> + + <style scoped> + .finishedProduct-detail { + width: 100%; + height: 470px; + padding: 10px 20px; + display: flex; + border: 1px solid #ddd; + background-color: #fff; + margin-top: 10px; + box-sizing: border-box; + flex-wrap: wrap; + } + + .finishedProduct-result { + width: 100%; + height: 150px; + padding: 10px 20px; + display: flex; + border: 1px solid #ddd; + background-color: #fff; + margin-top: 10px; + box-sizing: border-box; + flex-wrap: wrap; + } + + .finishedProduct-basic { + background-color: #fff; + height: 155px; + display: flex; + flex-wrap: wrap; + padding: 10px 20px; + border: 1px solid #ddd; + box-sizing: border-box; + } + /*鑷畾涔塪isabled鐘舵�佷笅checkbox鐨勬牱寮�*/ + .completeproductstructure-checkout + .el-checkbox__input.is-disabled.is-checked + .el-checkbox__inner { + background-color: #006eff; + border-color: #006eff; + } + + .completeproductstructure-checkout + .el-checkbox__input.is-disabled.is-checked + + span.el-checkbox__label { + color: #006eff; + border-color: #006eff; + } + + .completeproductstructure-checkout + .el-checkbox__input.is-disabled + .el-checkbox__inner { + background-color: #ffffff; + cursor: pointer; + } + + .completeproductstructure-checkout + .el-checkbox__input.is-disabled + + span.el-checkbox__label { + color: #606266; + cursor: pointer; + } + + .completeproductstructure-checkout .el-checkbox__inner::after { + border: 1px solid #fff !important; + border-left: 0 !important; + border-top: 0 !important; + cursor: pointer !important; + } + </style> \ No newline at end of file diff --git a/src/views/quality/rawMaterial/index.vue b/src/views/quality/rawMaterial/index.vue index ae5e1c2..63567c2 100644 --- a/src/views/quality/rawMaterial/index.vue +++ b/src/views/quality/rawMaterial/index.vue @@ -233,7 +233,10 @@ addOrUpdateHandle(row) { this.$router.push({ name: 'rawMaterialForm', - query: { id: row == null ? null : row.id } + query: { + id: row == null ? null : row.id, + resultVal: row == null ? null : row.judgeState + } }) }, formatInsState(row, column, cellValue){ diff --git a/src/views/quality/rawMaterial/rawMaterial-form.vue b/src/views/quality/rawMaterial/rawMaterial-form.vue index 0966edf..787c0f2 100644 --- a/src/views/quality/rawMaterial/rawMaterial-form.vue +++ b/src/views/quality/rawMaterial/rawMaterial-form.vue @@ -3,7 +3,8 @@ <div class="page-header"> <div class="header-left"> <a @click="$router.go(-1)"><i class="icon-btn-back"></i></a> - <h2>缂栬緫-鍘熸潗鏂欐楠�</h2> + <h2 v-if="resultVal!=null && dataForm.id!=null">鏌ョ湅-鍘熸潗鏂欐楠�</h2> + <h2 v-else>缂栬緫-鍘熸潗鏂欐楠�</h2> </div> <div class="btn-group header-right"> <el-button @click="save()" v-if="this.dataForm.id==null">淇濆瓨</el-button> @@ -21,10 +22,11 @@ <el-row> <el-col :span="6"> <el-form-item label="闆朵欢鍙�" prop="code"> - <el-input v-model="dataForm.code"> + <el-input v-model="dataForm.code" :disabled="resultVal!=null && dataForm.id!=null"> <el-button slot="append" icon="el-icon-search" + :disabled="resultVal!=null && dataForm.id!=null" @click="queryCode()"></el-button> </el-input> </el-form-item> @@ -74,14 +76,14 @@ </el-col> <el-col :span="6"> <el-form-item label="鎶ユ鏃ユ湡" prop="createTime" v-if="dataForm.id!=null"> - <el-input v-model="dataForm.createTime" /> + <el-input v-model="dataForm.createTime" disabled /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="6"> <el-form-item label="鎶ユ浜�" prop="createUser" v-if="dataForm.id!=null"> - <el-input v-model="dataForm.createUser" /> + <el-input v-model="dataForm.createUser" disabled /> </el-form-item> </el-col> </el-row> @@ -92,9 +94,9 @@ <el-col :span="19">妫�楠岄」鐩�</el-col> <el-col :span="5"> <div style="width:100%;text-align: right;"> - <el-button v-show="dataForm.id==null" size="small" @click="clickAddLine">娣诲姞妫�楠岃</el-button> - <el-button size="small" @click="addTeatValueColumn()">娣诲姞妫�娴嬪�煎垪</el-button> - <el-button size="small" @click="delTeatValueColumn()">鍒犻櫎妫�娴嬪�煎垪</el-button> + <el-button v-if="dataForm.id==null" size="small" @click="clickAddLine">娣诲姞妫�楠岃</el-button> + <el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="addTeatValueColumn()">娣诲姞妫�娴嬪�煎垪</el-button> + <el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="delTeatValueColumn()">鍒犻櫎妫�娴嬪�煎垪</el-button> </div> </el-col> </el-row> @@ -131,17 +133,17 @@ <template slot-scope="scope"> <el-tooltip :disabled="scope.row.equipmentId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start"> - <el-input :disabled="scope.row.equipmentId == null" v-model="scope.row.testValueList[index]" + <el-input :disabled="scope.row.equipmentId == null || dataForm.id!=null" v-model="scope.row.testValueList[index]" @blur="updateTestValue(scope.row)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> </el-tooltip> </template> </el-table-column> <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="260"> <template slot-scope="scope"> - <el-select style="width:100%" v-model="scope.row.equipmentId" filterable @change="updateDevice(scope.row)"> - <el-option v-for="(item,index) in deviceList" - :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> - </el-select> + <el-select :disabled="resultVal!=null && dataForm.id!=null" style="width:100%" v-model="scope.row.equipmentId" filterable @change="updateDevice(scope.row)"> + <el-option v-for="(item,index) in deviceList" + :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> + </el-select> </template> </el-table-column> <el-table-column fixed="right" v-if="dataForm.id != null" prop="testState" label="缁撹" min-width="150"> @@ -180,7 +182,7 @@ </el-table-column> <el-table-column label="鎿嶄綔"> <template> - <el-button type="text" @click="submitSave()" size="small">涓婃姤</el-button> + <el-button type="text" :disabled="resultVal!=null && dataForm.id!=null" @click="showDialog()" size="small">涓婃姤</el-button> </template> </el-table-column> </el-table> @@ -189,6 +191,25 @@ </div> </div> <rawMaterialPartDialog :paramObj="paramObj" :currshowlist.sync="showPart" @listenToPartEvent="selectPart" /> + <el-dialog + title="涓婃姤" + :visible.sync="dialogVisible" + width="30%"> + <el-row> + <el-col> + <span>涓嶅悎鏍兼暟閲�:</span> + <el-input type="number" v-model="unqualifiedNum" placeholder="璇疯緭鍏ヤ笉鍚堟牸鏁伴噺"/> + </el-col> + <el-col> + <span>瀹炴鏁伴噺:</span> + <el-input type="number" placeholder="璇疯緭鍏ュ疄妫�鏁伴噺" v-model="fiedNum"/> + </el-col> + </el-row> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitSave()">纭� 瀹�</el-button> + </span> + </el-dialog> </div> </template> @@ -199,8 +220,6 @@ getObj, updateRawInsProduct, updateRawInspectsById, - chooseIFS, - selectHisByCode, updateDeviceById, } from '@/api/quality/rawMaterial' import rawMaterialPartDialog from '@/views/common/rawMaterial-part' export default { @@ -210,6 +229,10 @@ }, data(){ return{ + fiedNum: null, + unqualifiedNum: null, + dialogVisible:false, + resultVal: null, projectList: [], paramObj: {}, IFSData: [], @@ -259,6 +282,11 @@ }, mounted(){ this.dataForm.id = this.$route.query.id + this.resultVal = this.$route.query.resultVal + if(this.resultVal == null){ + let val = sessionStorage.getItem("raw-resultVal") + val == undefined ? null : this.resultVal=val + } this.init() this.getDeviceList() }, @@ -285,7 +313,7 @@ this.dataForm.supplier = param.supplier this.dataForm.number = param.number this.dataForm.message = param.message - this.projectList = param.rawInsProducts + this.projectList = param.rawInsProducts == null ? [] : param.rawInsProducts } }, queryCode(){ @@ -302,28 +330,31 @@ }) } }, + showDialog(){ + this.dialogVisible = true + }, submitSave(){ let pro = this.list.filter(item => { return item.testState == 0; }) if (pro.length > 0) { - this.$prompt('璇疯緭鍏ヤ笉鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - inputPattern: /^\d+$/, - inputErrorMessage: '璇疯緭鍏ユ纭暟瀛楁牸寮�' - }).then(({ value }) => { - let data = { + let data = { id: this.dataForm.id, - number: value + number: this.unqualifiedNum, + toLocationNo: this.fiedNum } updateRawInspectsById(data).then(res => { - this.$message.success("涓婃姤鎴愬姛"); + if(res.data.code == 0){ + sessionStorage.setItem("raw-resultVal",data.judgeState) + this.$message.success("涓婃姤鎴愬姛"); + } }); - }).catch(() => {}); }else{ updateRawInspectsById({id:this.dataForm.id,number:0}).then(res => { - this.$message.success("涓婃姤鎴愬姛"); + if(res.data.code == 0){ + sessionStorage.setItem("raw-resultVal",res) + this.$message.success("涓婃姤鎴愬姛"); + } }); } this.init() @@ -405,6 +436,7 @@ } this.list.push({ equipmentId: item.equiomentId, + deviceName: item.deviceName, name: item.rpName, required: item.required, testValue: item.testValue, -- Gitblit v1.9.3