new file: src/api/quality/finishedProduct.js
modified: src/api/quality/rawMaterial.js
modified: src/const/crud/quality/rawMaterial.js
modified: src/views/plan/customerorder/index.vue
new file: src/views/quality/finishedProductInspection/finishedProductInspectionAdd.vue
new file: src/views/quality/finishedProductInspection/finishedProductInspectionLook.vue
new file: src/views/quality/finishedProductInspection/finishedProductInspectionUp.vue
new file: src/views/quality/finishedProductInspection/index.vue
modified: src/views/quality/rawMaterial/rawMaterial-form.vue
modified: src/views/technology/document/document-form.vue
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/router/axios' |
| | | |
| | | export function page(query) { |
| | | return request({ |
| | | url: '/mes/qualityFinishedInspect/page', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | export function chooseMater(query) { |
| | | return request({ |
| | | url: '/mes/qualityFinishedInspect/chooseMater', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | |
| | | }) |
| | | } |
| | | |
| | | export function updateRawInspectsById(data) { |
| | | return request({ |
| | | url: '/mes/rawInspect/updateRawInspectsById/'+data.id, |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | } |
| | | |
| | | export function updateDeviceById(data) { |
| | | return request({ |
| | | url: '/mes/rawInsProduct/updateDevByRpId', |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | } |
| | | |
| | |
| | | span: 24, |
| | | }, { |
| | | label: 'æ£éªç»è®º', |
| | | prop: 'testState', |
| | | prop: 'judgeState', |
| | | type: 'text', |
| | | slot: true, |
| | | formSlot: true |
| | | }] |
| | | } |
| | |
| | | let flag = true |
| | | const ids = [] |
| | | this.multipleSelection.forEach((item) => { |
| | | if (item.salesPartNo != null && item.salesPartNo !== '') { |
| | | if (item.partNo != null && item.partNo !== '') { |
| | | ids.push(item.id) |
| | | } else { |
| | | flag = false |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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>ç¼è¾-äº§åæ£éª</h2> |
| | | </div> |
| | | <div class="btn-group header-right"> |
| | | <el-button @click="addTestProjevt">çææ£éªé¡¹ç®</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" 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.prname" |
| | | placeholder="请è¾å
¥å®¢æ·åç§°" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="å·¥ç¨åç§°ï¼"> |
| | | <el-input disabled v-model="processInspectVo.sname" |
| | | placeholder="请è¾å
¥å·¥ç¨åç§°" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="产ååç§°ï¼"> |
| | | <el-select style="width: 100%" @change="changeOptionsSamplename" |
| | | v-model="processInspectVo.material" size="small" placeholder="è¯·éæ©äº§ååç§°"> |
| | | <el-option v-for="item in optionsSamplename" :key="item.id" :label="item.name" |
| | | :value="item.id + '-' + item.name"> |
| | | </el-option> |
| | | </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.qualityTraceability" |
| | | placeholder="请è¾å
¥è¿½æº¯å·" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="产åç¼ç ï¼"> |
| | | <el-input disabled v-model="processInspectVo.mcode" |
| | | placeholder="请è¾å
¥äº§åç¼ç " autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="è§æ ¼åå·ï¼"> |
| | | <el-input disabled v-model="processInspectVo.specificationsModel" |
| | | placeholder="请è¾å
¥äº§åç¼ç " autocomplete="off" /> |
| | | </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" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <div class="finishedProduct-detail"> |
| | | <el-row style="width:100%;z-index: 10;height:50px;"> |
| | | <el-col :span="12" class="inspectionProject_span">æ£éªé¡¹ç®</el-col> |
| | | <el-col :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" max-height="400" :span-method="handleSpanMethod" height="calc(100vh - 550px)" |
| | | style="width: 100%"> |
| | | <el-table-column type="index" label="åºå·" width="60"></el-table-column> |
| | | <el-table-column label="项ç®" prop="father"></el-table-column> |
| | | <el-table-column prop="name" label="ææ "></el-table-column> |
| | | <el-table-column prop="unit" label="åä½"></el-table-column> |
| | | <el-table-column prop="required" label="æ åå¼"></el-table-column> |
| | | <el-table-column prop="internal" label="å
æµå¼"></el-table-column> |
| | | <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="æ£æµå¼" |
| | | min-width="100" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-tooltip :disabled="scope.row.dname != null" class="item" effect="dark" content="请å
éæ©è®¾å¤ï¼" |
| | | placement="top-start"> |
| | | <el-input :disabled="scope.row.dname === null" v-model="scope.row.empiricalValueAddss[index]" |
| | | @blur="changeState(scope.row, index)" placeholder="请è¾å
¥æ£æµå¼"></el-input> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="dname" label="è¯éªè®¾å¤" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button v-if="!scope.row.isSelectDevice" type="text" @click="clickTableSelect(scope)">{{ |
| | | scope.row.dname == null ? "è¯·éæ©" : scope.row.dname |
| | | }}</el-button> |
| | | <el-select v-if="scope.row.isSelectDevice" style="width: 100%;" @change="clickNodeSure(scope.row)" v-model="filterText" placeholder="è¯·éæ©"> |
| | | <el-option v-for="item in materialOptions" :key="item.id" :label="item.device" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç»è®º"> |
| | | <template slot-scope="scope"> |
| | | <span style="color: #34BD66;" v-if="scope.row.result === 1">åæ ¼</span> |
| | | <span style="color: #E84738;" v-else-if="scope.row.result === 0">ä¸åæ ¼</span> |
| | | <span v-show="scope.row.result === null">ææªç»è®º</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="finishedProduct-detail"> |
| | | <el-row style="width:100%"> |
| | | <el-col :span="24">æ£æµç»æ</el-col> |
| | | </el-row> |
| | | <el-row style="width:100%;margin-top:-180px"> |
| | | <el-col :span="24"> |
| | | <el-table border max-height="400" :data="inspectionResultForm"> |
| | | <el-table-column prop="id" label="ç©æç¼å·"></el-table-column> |
| | | <el-table-column prop="name" label="ç©æåç§°"></el-table-column> |
| | | <el-table-column prop="inspecter" label="æ£éªå"></el-table-column> |
| | | <el-table-column prop="conclusion" label="æ£éªç»è®º"></el-table-column> |
| | | <el-table-column prop="operation" label="䏿¥"></el-table-column> |
| | | </el-table> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | <el-dialog title="è¯·éæ©è®¾å¤" :visible.sync="centerDialogVisible" width="20%"> |
| | | <div class="div_device_dialog"> |
| | | <el-select style="width: 100%;" @change="clickNodeSure()" v-model="filterText" placeholder="è¯·éæ©"> |
| | | <el-option v-for="item in materialOptions" :key="item.id" :label="item.device" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | showUp: false, |
| | | isAddProject: false, |
| | | showLook: false, |
| | | detailId: 0, |
| | | rowInfp: {}, |
| | | search: { |
| | | countSize: 10, |
| | | pageSize: 1, |
| | | result: "", // æ£æµç¶æ |
| | | name: "", // 产ååç§° |
| | | techfather: "" // å·¥åº |
| | | }, |
| | | optionsSamplename: [], |
| | | inspectionTable: [], |
| | | tableColumn: [], |
| | | optionSoptionSprocesses: [], |
| | | optionTechnology: [], |
| | | inspectionTableTotal: 0, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | treeProject: [], |
| | | // æ·»å å |
| | | empiricalValueAdd: 1, |
| | | // ç¼è¾æ¶å卿é¿çåæ°åï¼åå é¤å¤æ |
| | | empiricalValueAddMaxNumber: 0, |
| | | showAddPage: false, |
| | | processInspectVo: { |
| | | id: null, |
| | | material: null, |
| | | mcode: null, |
| | | prname: null, |
| | | sname: null, |
| | | orderNumber: "", |
| | | qualityTraceability: null, |
| | | quantity: null, |
| | | specificationsModel: null, |
| | | unit: null, |
| | | technologyId: null |
| | | }, |
| | | InspectioniD: null, |
| | | addInspectionform: [ |
| | | { |
| | | number: "", |
| | | username: "", |
| | | projectname: "", |
| | | tracenumber: "", |
| | | code: "", |
| | | class: "", |
| | | specificationmodel: "", |
| | | unit: "", |
| | | quantity: "", |
| | | group: "", |
| | | worker: "", |
| | | machine: "" |
| | | }] |
| | | , |
| | | inspectionItems: [], // æ°å¢æ£éªé¡¹ç®è¡¨æ ¼ |
| | | inspectionResultForm: [ |
| | | { |
| | | id: "", |
| | | name: "", |
| | | inspecter: "", |
| | | conclusion: "", |
| | | operation: "" |
| | | } |
| | | ], |
| | | options: [], |
| | | value: "", |
| | | rowList: [], |
| | | spanArr: [], |
| | | position: 0, |
| | | // 设å¤éæ©æ æ¾ç¤º |
| | | centerDialogVisible: false, |
| | | filterText: "", |
| | | materialOptions: [], |
| | | defaultProps: { |
| | | // è®¾å¤æ æ°æ®è®¾ç½® |
| | | children: "children", |
| | | label: "name" |
| | | }, |
| | | nodeData: { |
| | | id: 0, |
| | | name: null |
| | | }, // nodeç¹å»ä¿åå½åç¹å»æ°æ® |
| | | clickSelectDevice: { |
| | | index: null, // ç¹å»éæ©åå¨å½åè¡ç´¢å¼ |
| | | rpId: null // ç¹å»éæ©åå¨å½åè¡é¡¹ç®Id |
| | | } |
| | | }; |
| | | }, |
| | | watch: { |
| | | // filterText(val) { |
| | | // this.$refs.tree.filter(val); |
| | | // } |
| | | }, |
| | | mounted() { |
| | | this.getTableData() |
| | | // this.getOptions(); |
| | | }, |
| | | methods: { |
| | | changeOptionsSamplename() { |
| | | let id = this.processInspectVo.material.split("-")[0] |
| | | let sample = this.optionsSamplename.filter(o => { |
| | | return o.id == id |
| | | })[0] |
| | | this.processInspectVo.qualityTraceability = sample.qualityTraceability |
| | | this.processInspectVo.mcode = sample.mcode |
| | | this.processInspectVo.specificationsModel = sample.specifications |
| | | this.processInspectVo.unit = sample.unit |
| | | }, |
| | | comBack() { |
| | | this.$parent.comBackMain() |
| | | }, |
| | | handleClick(row) { |
| | | this.rowInfp = row |
| | | this.showLook = true |
| | | }, |
| | | updateInsInfo(row) { |
| | | this.rowInfp = row |
| | | this.showUp = true |
| | | }, |
| | | combackMain() { |
| | | this.showUp = false |
| | | this.showLook = false |
| | | }, |
| | | searchPro() { |
| | | this.search.countSize = this.pageSize |
| | | this.search.pageSize = this.currentPage |
| | | this.defaultInitializationTable() |
| | | }, |
| | | // ç¹å»è®¾å¤æ ä¿åç¹å»è®°å½ |
| | | nodeClick(data) { |
| | | if (data.id != undefined) this.nodeData = data; |
| | | }, |
| | | // è®¾å¤æ è¿æ»¤æç´¢ |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.name.indexOf(value) !== -1; |
| | | }, |
| | | // è·åè®¾å¤æ å
容 |
| | | getOptions(row) { |
| | | this.$axios.get(this.$api.url.inspectionItemChooseDev, { |
| | | params: { |
| | | father: row.father, |
| | | name: row.name, |
| | | technologyId: this.processInspectVo.technologyId |
| | | } |
| | | }).then(res => { |
| | | this.materialOptions = res.data; |
| | | this.filterText = row.did |
| | | if(this.materialOptions.length===1){ |
| | | this.$message({ |
| | | message: '该项ç®ä¸åªæä¸ä¸ªè¯éªè®¾å¤ï¼æ ééæ©ï¼', |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } |
| | | row.isSelectDevice = true |
| | | }); |
| | | }, |
| | | // ç¹å»è¡¨æ ¼éæ©è§¦å |
| | | clickTableSelect(scope) { |
| | | if(this.clickSelectDevice.index!=null){ |
| | | this.$set(this.inspectionItems[this.clickSelectDevice.index],'isSelectDevice',false) |
| | | } |
| | | this.clickSelectDevice.index = scope.$index; |
| | | this.clickSelectDevice.rpId = scope.row.id; |
| | | this.getOptions(scope.row); |
| | | }, |
| | | // ç¹å»æ éé¢çç¡®å® |
| | | clickNodeSure(row) { |
| | | let select = this.materialOptions.filter(item => { |
| | | return item.id === this.filterText |
| | | })[0] |
| | | this.nodeData.id = select.id |
| | | this.nodeData.name = select.device |
| | | if (this.detailId == null) { |
| | | this.inspectionItems[ |
| | | this.clickSelectDevice.index |
| | | ].did = this.nodeData.id; |
| | | this.inspectionItems[ |
| | | this.clickSelectDevice.index |
| | | ].dname = this.nodeData.name; |
| | | this.centerDialogVisible = false; |
| | | } else { |
| | | this.$axios |
| | | .post(this.$api.url.inspectionItemUpdateDevByInsId, { |
| | | id: this.clickSelectDevice.rpId, |
| | | type: 2, |
| | | devId: this.nodeData.id |
| | | }) |
| | | .then(res => { |
| | | this.getTableData() |
| | | this.centerDialogVisible = false; |
| | | row.isSelectDevice=false |
| | | }); |
| | | } |
| | | }, |
| | | changeState(row, index) { |
| | | if (row.did != null && row.did != '') { |
| | | // let val = row.empiricalValueAddss.filter(item => { |
| | | // return item != '' && item != null |
| | | // }) |
| | | // let eq = val.filter(item => { |
| | | // return /^[^><=]/.test(item) |
| | | // }) |
| | | // if (eq.length > 0) { |
| | | // this.$message({ |
| | | // message: "æ£æµå¼[" + eq + "]æ ¼å¼é¦ä½åºå
å«>,<æè
=", |
| | | // type: 'warning' |
| | | // }); |
| | | // return |
| | | // } |
| | | let str = "" |
| | | row.empiricalValueAddss.forEach(e => { |
| | | str += e + "," |
| | | }) |
| | | if (str.slice(0, -1) === '' || str.slice(0, -1) === null || str.slice(0, -1) === undefined) { |
| | | return |
| | | } |
| | | this.$axios.post(this.$api.url.inspectionItemlose_focus_update, { |
| | | deviceId: row.did, |
| | | inspectionItemId: row.id, |
| | | inspectionValue: str.slice(0, -1) |
| | | }, { |
| | | headers: { "Content-Type": "application/json" } |
| | | }).then(res => { |
| | | row.result = res.data.result |
| | | row.username = res.data.username |
| | | }) |
| | | } else { |
| | | this.$message({ |
| | | message: 'è¯·éæ©æ©è®¾å¤ï¼', |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | }, |
| | | // æ¯é¡µæ¡æ°æ¹åæ¶è§¦å éæ©ä¸é¡µæ¾ç¤ºå¤å°è¡ |
| | | handleSizeChange(val) { |
| | | this.search.countSize = val; |
| | | this.defaultInitializationTable(); |
| | | }, |
| | | handleSpanMethod({ row, column, rowIndex, columnIndex }) { |
| | | if (columnIndex === 0) { |
| | | const _row = this.spanArr[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return { |
| | | rowspan: _row, |
| | | colspan: _col |
| | | } |
| | | } |
| | | if (columnIndex === 1) { |
| | | const _row = this.spanArr[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return { |
| | | rowspan: _row, |
| | | colspan: _col |
| | | } |
| | | } |
| | | }, |
| | | // åå¹¶è¡¨æ ¼ |
| | | mergeTable() { |
| | | this.rowList = [] |
| | | this.spanArr = [] |
| | | this.position = 0 |
| | | this.inspectionItems.forEach((item, index) => { |
| | | if (index === 0) { |
| | | this.spanArr.push(1); |
| | | this.position = 0; |
| | | } else { |
| | | if (this.inspectionItems[index].father === this.inspectionItems[index - 1].father) { |
| | | this.spanArr[this.position] += 1; |
| | | this.spanArr.push(0); |
| | | } else { |
| | | this.spanArr.push(1); |
| | | this.position = index; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | changeOptionSoptionSprocesses() { |
| | | this.optionTechnology = [] |
| | | let working = this.optionSoptionSprocesses.filter(item => { |
| | | return item.name === this.processInspectVo.techfather |
| | | })[0] |
| | | this.optionTechnology = working.children |
| | | }, |
| | | addTestProjevt() { |
| | | // this.isAddProject = true |
| | | let val = JSON.parse(JSON.stringify(this.processInspectVo)) |
| | | val.material = this.processInspectVo.material.split("-")[1] |
| | | val.id = this.processInspectVo.material.split("-")[0] |
| | | this.$axios.post(this.$api.url.finishedInspectAddFinish, val, { |
| | | headers: { "Content-Type": "application/json" } |
| | | }).then(res => { |
| | | if (res.code == 201) { |
| | | this.$message({ |
| | | message: res.message, |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } |
| | | this.detailId = res.data |
| | | this.inspectionResultForm[0].id = val.mcode |
| | | this.inspectionResultForm[0].name = val.material |
| | | this.getTableData() |
| | | }) |
| | | }, |
| | | getTableData() { |
| | | this.$axios.get(this.$api.url.finishedInspectSelectFinishInspectsListById, { |
| | | params: { |
| | | id: this.detailId |
| | | } |
| | | }).then(res => { |
| | | this.processInspectVo.technologyId = res.data[0].techId |
| | | }) |
| | | this.$axios.get(this.$api.url.inspectionItemListUser, { |
| | | params: { |
| | | id: this.detailId, |
| | | type: 2 |
| | | } |
| | | }).then(res => { |
| | | if (res.data.length < 1) { |
| | | return |
| | | } |
| | | this.inspectionItems = res.data |
| | | let arr = [] |
| | | let val = JSON.parse(JSON.stringify(this.inspectionItems)) |
| | | const uName = [] |
| | | //转æä¸ç»´æ°ç» |
| | | val.forEach(l => { |
| | | let father = l.father |
| | | l.children.forEach(c => { |
| | | c.father = father |
| | | c.empiricalValueAddss = [] |
| | | if (c.inspectionValue != '' && c.inspectionValue != null) { |
| | | c.empiricalValueAddss = c.inspectionValue.split(","); |
| | | } else { |
| | | c.empiricalValueAddss.push("") |
| | | } |
| | | uName.push(c['username']) |
| | | c.isSelectDevice = false |
| | | arr.push(c) |
| | | }) |
| | | }) |
| | | this.inspectionItems = arr |
| | | let arrSort = JSON.parse(JSON.stringify(arr)) |
| | | //æ ¹æ®éå对象æ°ç»é¿åº¦æåº |
| | | arrSort.sort((a, b) => { |
| | | if (a.empiricalValueAddss.length < b.empiricalValueAddss.length) { |
| | | return -1; // aæå¨båé¢ |
| | | } else if (a.empiricalValueAddss.length > b.empiricalValueAddss.length) { |
| | | return 1; // aæå¨båé¢ |
| | | } else { |
| | | return 0; // ä¿æç¸å¯¹é¡ºåºä¸å |
| | | } |
| | | }); |
| | | // console.log(arrSort); |
| | | console.log(uName); |
| | | let name = [...new Set(uName)].filter(item => item !== null); |
| | | let rname = '' |
| | | name.forEach(m => { |
| | | rname += m + "," |
| | | }) |
| | | this.inspectionResultForm[0].inspecter = rname.slice(0, -1) |
| | | this.empiricalValueAdd = arrSort[arrSort.length - 1].empiricalValueAddss.length |
| | | this.mergeTable(arr) |
| | | }) |
| | | }, |
| | | selectSample() { |
| | | let sample = this.optionsSamplename.filter(item => { |
| | | return item.name === this.processInspectVo.material |
| | | })[0] |
| | | this.processInspectVo.techfather = null |
| | | this.processInspectVo.techname = null |
| | | this.processInspectVo.materialCode = sample.code |
| | | this.processInspectVo.specificationsModel = sample.specifications |
| | | this.processInspectVo.unit = sample.unit |
| | | this.optionSoptionSprocesses = [] |
| | | this.optionSoptionSprocesses = sample.children |
| | | }, |
| | | selectInfoByOrderId() { |
| | | this.$axios.get(this.$api.url.finishedInspectChooseMater, { |
| | | params: { |
| | | orderNumber: this.processInspectVo.orderNumber |
| | | } |
| | | }).then(res => { |
| | | if (res.data.length > 0) { |
| | | console.log(res.data); |
| | | this.processInspectVo.sname = res.data[0].sname |
| | | this.processInspectVo.prname = res.data[0].prname |
| | | this.optionsSamplename = res.data[0].children |
| | | } else { |
| | | this.$message({ |
| | | message: '没æè¯¥è®¢åå·ï¼', |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | // å½å页æ¹åæ¶è§¦å 跳转å
¶ä»é¡µ |
| | | handleCurrentChange(val) { |
| | | this.search.pageSize = val; |
| | | this.defaultInitializationTable(); |
| | | }, |
| | | // æ¾ç¤ºæ°å¢é¡µé¢ |
| | | handleAddNew() { |
| | | this.showAddPage = true; |
| | | // this.getTableData() |
| | | }, |
| | | // è¡¨æ ¼åå§åæ¥å£ |
| | | defaultInitializationTable() { |
| | | this.$axios |
| | | .post(this.$api.url.selectProcessInspectsList, this.search) |
| | | .then(res => { |
| | | this.inspectionTableTotal = res.data.total; |
| | | this.inspectionTable = res.data.row; |
| | | }); |
| | | }, |
| | | // æ·»å è¡ |
| | | clickAddLine() { |
| | | let obj = { |
| | | material: "", |
| | | materialCode: "", |
| | | orderNumber: "", |
| | | quantity: 0, |
| | | specificationsModel: "", |
| | | techfather: "", |
| | | techname: "", |
| | | technologyId: 0, |
| | | unit: "" |
| | | }; |
| | | this.inspectionItems.push(obj); |
| | | }, |
| | | // å é¤è¡ |
| | | clickDeleteline(scope) { |
| | | this.inspectionItems.splice(scope.$index, 1); |
| | | }, |
| | | // å 餿£éªå¼å |
| | | clickDeleteInspectionColumn() { |
| | | if (this.empiricalValueAdd - 1 === 0) { |
| | | } else { |
| | | if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { |
| | | this.empiricalValueAdd = this.empiricalValueAdd - 1; |
| | | this.inspectionItems.forEach(i => { |
| | | i.testValueList.splice(this.empiricalValueAdd, 1); |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | // æ·»å æ£éªå¼å |
| | | clickAddInspectionColumn() { |
| | | this.empiricalValueAdd = this.empiricalValueAdd + 1; |
| | | } |
| | | }, |
| | | created() { |
| | | this.defaultInitializationTable(); // åå§åè¡¨æ ¼æ°æ® |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .finishedProduct-detail { |
| | | width: 100%; |
| | | height: 460px; |
| | | 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: 150px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | padding: 10px 20px; |
| | | border: 1px solid #ddd; |
| | | box-sizing: border-box; |
| | | } |
| | | /*èªå®ä¹disabledç¶æä¸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> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <!-- æ°å¢é¡µé¢ --> |
| | | <div class="addInspection"> |
| | | <el-row class="header"> |
| | | <el-col :span="12">æ°å¢äº§åæ£éªå</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <!-- ç¹å»è¿åï¼å½å页é¢å¼ä¸ºfalse --> |
| | | <!-- <el-button type="primary" size="mini" style="background: #004EA2; " |
| | | icon="el-icon-circle-plus-outline">æ°å¢</el-button> --> |
| | | <el-button @click="comBack" type="primary" size="mini" icon="el-icon-back" |
| | | style="background: #004EA2; ">è¿å</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form :model="processInspectVo" ref="addInspectionform" class="addInspectionform" label-position="right" |
| | | label-width="120px" size="small"> |
| | | <div class="formwrapper"> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="订åå·ï¼"> |
| | | <el-input disabled @blur="selectInfoByOrderId" style="width: 180px;" |
| | | v-model="processInspectVo.orderNumber" placeholder="请è¾å
¥è®¢åå·" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="客æ·åç§°ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.prname" |
| | | placeholder="请è¾å
¥å®¢æ·åç§°" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="å·¥ç¨åç§°ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.sname" |
| | | placeholder="请è¾å
¥å·¥ç¨åç§°" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="产ååç§°ï¼"> |
| | | <el-select disabled @change="changeOptionsSamplename" style="width: 180px;" v-model="processInspectVo.material" size="small" |
| | | placeholder="è¯·éæ©äº§ååç§°"> |
| | | <el-option v-for="item in optionsSamplename" :key="item.id" :label="item.name" |
| | | :value="item.id + '-' + item.name"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="è´¨é追溯å·ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.qualityTraceability" |
| | | placeholder="请è¾å
¥è¿½æº¯å·" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="产åç¼ç ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.mcode" |
| | | placeholder="请è¾å
¥äº§åç¼ç " autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="è§æ ¼åå·ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.specificationsModel" |
| | | placeholder="请è¾å
¥äº§åç¼ç " autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="åä½ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.unit" placeholder="请è¾å
¥äº§åç¼ç " |
| | | autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="æ°éï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.quantity" placeholder="请è¾å
¥æ°é" |
| | | autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3" style="display: flex;justify-content: end;"> |
| | | <!-- <el-button type="primary" :disabled="isAddProject" @click="addTestProjevt">çææ£éªé¡¹ç®</el-button> --> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <div class="inspectionProject"> |
| | | <el-row> |
| | | <el-col :span="12" class="inspectionProject_span">æ£éªé¡¹ç®</el-col> |
| | | <el-col :span="12" class="inspectionProject_span" style="display: flex;justify-content: end;"> |
| | | <!-- <el-button size="mini" @click="clickDeleteInspectionColumn()">å 餿£éªå¼å</el-button> |
| | | <el-button style="margin-right: 30px;" size="mini" |
| | | @click="clickAddInspectionColumn()">æ·»å æ£éªå¼å</el-button> --> |
| | | <!-- <el-button |
| | | size="mini" |
| | | style="margin-right: 30px;" |
| | | @click="clickAddLine()" |
| | | >æ·»å æ£éªè¡</el-button |
| | | > --> |
| | | </el-col> |
| | | </el-row> |
| | | <el-table :data="inspectionItems" max-height="420" :span-method="handleSpanMethod" height="calc(100vh - 550px)" |
| | | style="width: 100%"> |
| | | <el-table-column type="index" label="åºå·" width="60"></el-table-column> |
| | | <el-table-column label="项ç®" prop="father"></el-table-column> |
| | | <el-table-column prop="name" label="ææ "></el-table-column> |
| | | <el-table-column prop="unit" label="åä½"></el-table-column> |
| | | <el-table-column prop="required" label="æ åå¼"></el-table-column> |
| | | <el-table-column prop="internal" label="å
æµå¼"></el-table-column> |
| | | <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="æ£æµå¼" |
| | | min-width="100" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-input disabled v-model="scope.row.empiricalValueAddss[index]" |
| | | @blur="changeState(scope.row, index)" placeholder="请è¾å
¥æ£æµå¼"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="dname" label="è¯éªè®¾å¤" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.dname }} |
| | | <span v-if="scope.row.dname===null||scope.row.dname===''">/</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç»è®º"> |
| | | <template slot-scope="scope"> |
| | | <span style="color: #34BD66;" v-if="scope.row.result === 1">åæ ¼</span> |
| | | <span style="color: #E84738;" v-else-if="scope.row.result === 0">ä¸åæ ¼</span> |
| | | <span v-show="scope.row.result === 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="inspectionResult"> |
| | | <span>æ£æµç»æ</span> |
| | | <el-table :data="inspectionResultForm"> |
| | | <el-table-column prop="id" label="ç©æç¼å·"></el-table-column> |
| | | <el-table-column prop="name" label="ç©æåç§°"></el-table-column> |
| | | <el-table-column prop="inspecter" label="æ£éªå"></el-table-column> |
| | | <el-table-column prop="conclusion" label="æ£éªç»è®º"> |
| | | <template slot-scope="scope"> |
| | | <span style="color: #34BD66;" v-if="scope.row.conclusion === 1">åæ ¼</span> |
| | | <span style="color: #E84738;" v-else-if="scope.row.conclusion === 0">ä¸åæ ¼</span> |
| | | <span v-else-if="scope.row.conclusion === null || scope.row.conclusion === undefined">ææªç»è®º</span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column prop="operation" label="䏿¥"></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> |
| | | export default { |
| | | props: ['rowInfo'], |
| | | data() { |
| | | return { |
| | | showUp: false, |
| | | isAddProject: false, |
| | | showLook: false, |
| | | detailId: 0, |
| | | rowInfp: {}, |
| | | search: { |
| | | countSize: 10, |
| | | pageSize: 1, |
| | | result: "", // æ£æµç¶æ |
| | | name: "", // 产ååç§° |
| | | techfather: "" // å·¥åº |
| | | }, |
| | | optionsSamplename: [], |
| | | inspectionTable: [], |
| | | tableColumn: [], |
| | | optionSoptionSprocesses: [], |
| | | optionTechnology: [], |
| | | inspectionTableTotal: 0, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | treeProject: [], |
| | | // æ·»å å |
| | | empiricalValueAdd: 1, |
| | | // ç¼è¾æ¶å卿é¿çåæ°åï¼åå é¤å¤æ |
| | | empiricalValueAddMaxNumber: 0, |
| | | showAddPage: false, |
| | | processInspectVo: { |
| | | id: null, |
| | | material: null, |
| | | mcode: null, |
| | | prname: null, |
| | | sname: null, |
| | | orderNumber: "D-001", |
| | | qualityTraceability: null, |
| | | quantity: null, |
| | | specificationsModel: null, |
| | | unit: null |
| | | }, |
| | | InspectioniD: null, |
| | | addInspectionform: [ |
| | | { |
| | | number: "", |
| | | username: "", |
| | | projectname: "", |
| | | tracenumber: "", |
| | | code: "", |
| | | class: "", |
| | | specificationmodel: "", |
| | | unit: "", |
| | | quantity: "", |
| | | group: "", |
| | | worker: "", |
| | | machine: "" |
| | | }] |
| | | , |
| | | inspectionItems: [], // æ°å¢æ£éªé¡¹ç®è¡¨æ ¼ |
| | | inspectionResultForm: [ |
| | | { |
| | | id: "", |
| | | name: "", |
| | | inspecter: "", |
| | | conclusion: "", |
| | | operation: "" |
| | | } |
| | | ], |
| | | options: [], |
| | | value: "", |
| | | rowList: [], |
| | | spanArr: [], |
| | | position: 0, |
| | | // 设å¤éæ©æ æ¾ç¤º |
| | | centerDialogVisible: false, |
| | | filterText: "", |
| | | materialOptions: [], |
| | | defaultProps: { |
| | | // è®¾å¤æ æ°æ®è®¾ç½® |
| | | children: "children", |
| | | label: "name" |
| | | }, |
| | | nodeData: "", // nodeç¹å»ä¿åå½åç¹å»æ°æ® |
| | | clickSelectDevice: { |
| | | index: "", // ç¹å»éæ©åå¨å½åè¡ç´¢å¼ |
| | | rpId: "" // ç¹å»éæ©åå¨å½åè¡é¡¹ç®Id |
| | | } |
| | | }; |
| | | }, |
| | | watch: { |
| | | filterText(val) { |
| | | this.$refs.tree.filter(val); |
| | | } |
| | | }, |
| | | mounted() { |
| | | console.log(this.rowInfo); |
| | | this.processInspectVo.material=this.rowInfo.material |
| | | this.processInspectVo.mcode=this.rowInfo.material_code |
| | | this.processInspectVo.orderNumber=this.rowInfo.order_number |
| | | this.processInspectVo.qualityTraceability=this.rowInfo.quality_traceability |
| | | this.processInspectVo.specificationsModel=this.rowInfo.specifications_model |
| | | this.processInspectVo.unit=this.rowInfo.unit |
| | | this.processInspectVo.quantity=this.rowInfo.quantity |
| | | this.processInspectVo.prname=this.rowInfo.customer_name |
| | | this.processInspectVo.sname=this.rowInfo.project_name |
| | | this.inspectionResultForm[0].id=this.rowInfo.material_code |
| | | this.inspectionResultForm[0].name=this.rowInfo.material |
| | | this.inspectionResultForm[0].conclusion=this.rowInfo.result |
| | | this.detailId=this.rowInfo.id |
| | | this.getTableData() |
| | | this.getOptions(); |
| | | }, |
| | | methods: { |
| | | changeOptionsSamplename(){ |
| | | let id=this.processInspectVo.material.split("-")[0] |
| | | let sample=this.optionsSamplename.filter(o=>{ |
| | | return o.id==id |
| | | })[0] |
| | | this.processInspectVo.qualityTraceability=sample.qualityTraceability |
| | | this.processInspectVo.mcode=sample.mcode |
| | | this.processInspectVo.specificationsModel=sample.specifications |
| | | this.processInspectVo.unit=sample.unit |
| | | }, |
| | | comBack(){ |
| | | this.$parent.comBackMain() |
| | | }, |
| | | handleClick(row) { |
| | | this.rowInfp = row |
| | | this.showLook = true |
| | | }, |
| | | updateInsInfo(row) { |
| | | this.rowInfp = row |
| | | this.showUp = true |
| | | }, |
| | | combackMain() { |
| | | this.showUp = false |
| | | this.showLook = false |
| | | }, |
| | | searchPro() { |
| | | this.search.countSize = this.pageSize |
| | | this.search.pageSize = this.currentPage |
| | | this.defaultInitializationTable() |
| | | }, |
| | | // ç¹å»è®¾å¤æ ä¿åç¹å»è®°å½ |
| | | nodeClick(data) { |
| | | if (data.id != undefined) this.nodeData = data; |
| | | }, |
| | | // è®¾å¤æ è¿æ»¤æç´¢ |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.name.indexOf(value) !== -1; |
| | | }, |
| | | // è·åè®¾å¤æ å
容 |
| | | getOptions() { |
| | | this.$axios.get(this.$api.url.rawSelectDevice).then(res => { |
| | | this.materialOptions = res.data; |
| | | }); |
| | | }, |
| | | // ç¹å»è¡¨æ ¼éæ©è§¦å |
| | | clickTableSelect(scope) { |
| | | this.centerDialogVisible = true; |
| | | this.clickSelectDevice.index = scope.$index; |
| | | this.clickSelectDevice.rpId = scope.row.id; |
| | | }, |
| | | // ç¹å»æ éé¢çç¡®å® |
| | | clickNodeSure() { |
| | | if (this.detailId == null) { |
| | | this.inspectionItems[ |
| | | this.clickSelectDevice.index |
| | | ].did = this.nodeData.id; |
| | | this.inspectionItems[ |
| | | this.clickSelectDevice.index |
| | | ].dname = this.nodeData.name; |
| | | this.centerDialogVisible = false; |
| | | } else { |
| | | this.$axios |
| | | .post(this.$api.url.inspectionItemUpdateDevByInsId, { |
| | | id: this.clickSelectDevice.rpId, |
| | | type: 2, |
| | | devId: this.nodeData.id |
| | | }) |
| | | .then(res => { |
| | | this.getTableData() |
| | | this.centerDialogVisible = false; |
| | | }); |
| | | } |
| | | }, |
| | | changeState(row, index) { |
| | | console.log(row); |
| | | if (row.did != null && row.did != '') { |
| | | let str = "" |
| | | row.empiricalValueAddss.forEach(e => { |
| | | str += e + "," |
| | | }) |
| | | this.$axios.post(this.$api.url.inspectionItemlose_focus_update, { |
| | | deviceId: row.did, |
| | | inspectionItemId: row.id, |
| | | inspectionValue: str.slice(0, -1) |
| | | }, { |
| | | headers: { "Content-Type": "application/json" } |
| | | }).then(res => { |
| | | row.result = res.data.result |
| | | row.username = res.data.username |
| | | }) |
| | | } else { |
| | | this.$message({ |
| | | message: 'è¯·éæ©æ©è®¾å¤ï¼', |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | }, |
| | | // æ¯é¡µæ¡æ°æ¹åæ¶è§¦å éæ©ä¸é¡µæ¾ç¤ºå¤å°è¡ |
| | | handleSizeChange(val) { |
| | | this.search.countSize = val; |
| | | this.defaultInitializationTable(); |
| | | }, |
| | | handleSpanMethod({ row, column, rowIndex, columnIndex }) { |
| | | if (columnIndex === 0) { |
| | | const _row = this.spanArr[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return { |
| | | rowspan: _row, |
| | | colspan: _col |
| | | } |
| | | } |
| | | if (columnIndex === 1) { |
| | | const _row = this.spanArr[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return { |
| | | rowspan: _row, |
| | | colspan: _col |
| | | } |
| | | } |
| | | }, |
| | | // åå¹¶è¡¨æ ¼ |
| | | mergeTable() { |
| | | this.rowList = [] |
| | | this.spanArr = [] |
| | | this.position = 0 |
| | | this.inspectionItems.forEach((item, index) => { |
| | | if (index === 0) { |
| | | this.spanArr.push(1); |
| | | this.position = 0; |
| | | } else { |
| | | if (this.inspectionItems[index].father === this.inspectionItems[index - 1].father) { |
| | | this.spanArr[this.position] += 1; |
| | | this.spanArr.push(0); |
| | | } else { |
| | | this.spanArr.push(1); |
| | | this.position = index; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | changeOptionSoptionSprocesses() { |
| | | this.optionTechnology = [] |
| | | let working = this.optionSoptionSprocesses.filter(item => { |
| | | return item.name === this.processInspectVo.techfather |
| | | })[0] |
| | | this.optionTechnology = working.children |
| | | }, |
| | | addTestProjevt() { |
| | | // this.isAddProject = true |
| | | let val = JSON.parse(JSON.stringify(this.processInspectVo)) |
| | | val.material = this.processInspectVo.material.split("-")[1] |
| | | val.id=this.processInspectVo.material.split("-")[0] |
| | | this.$axios.post(this.$api.url.finishedInspectAddFinish, val, { |
| | | headers: { "Content-Type": "application/json" } |
| | | }).then(res => { |
| | | if (res.code == 201) { |
| | | this.$message({ |
| | | message: res.message, |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } |
| | | this.detailId = res.data |
| | | this.inspectionResultForm[0].id = val.mcode |
| | | this.inspectionResultForm[0].name = val.material |
| | | this.getTableData() |
| | | }) |
| | | }, |
| | | getTableData() { |
| | | this.$axios.get(this.$api.url.inspectionItemListUser, { |
| | | params: { |
| | | id: this.detailId, |
| | | type: 2 |
| | | } |
| | | }).then(res => { |
| | | if (res.data.length < 1) { |
| | | return |
| | | } |
| | | this.inspectionItems = res.data |
| | | let arr = [] |
| | | let val = JSON.parse(JSON.stringify(this.inspectionItems)) |
| | | const uName = [] |
| | | //转æä¸ç»´æ°ç» |
| | | val.forEach(l => { |
| | | let father = l.father |
| | | l.children.forEach(c => { |
| | | c.father = father |
| | | c.empiricalValueAddss = [] |
| | | if (c.inspectionValue != '' && c.inspectionValue != null) { |
| | | c.empiricalValueAddss = c.inspectionValue.split(","); |
| | | } else { |
| | | c.empiricalValueAddss.push("") |
| | | } |
| | | uName.push(c['username']) |
| | | arr.push(c) |
| | | }) |
| | | }) |
| | | this.inspectionItems = arr |
| | | let arrSort = JSON.parse(JSON.stringify(arr)) |
| | | //æ ¹æ®éå对象æ°ç»é¿åº¦æåº |
| | | arrSort.sort((a, b) => { |
| | | if (a.empiricalValueAddss.length < b.empiricalValueAddss.length) { |
| | | return -1; // aæå¨båé¢ |
| | | } else if (a.empiricalValueAddss.length > b.empiricalValueAddss.length) { |
| | | return 1; // aæå¨båé¢ |
| | | } else { |
| | | return 0; // ä¿æç¸å¯¹é¡ºåºä¸å |
| | | } |
| | | }); |
| | | // console.log(arrSort); |
| | | console.log(uName); |
| | | let name = [...new Set(uName)].filter(item => item !== null); |
| | | let rname = '' |
| | | name.forEach(m => { |
| | | rname += m + "," |
| | | }) |
| | | this.inspectionResultForm[0].inspecter = rname.slice(0, -1) |
| | | this.empiricalValueAdd = arrSort[arrSort.length - 1].empiricalValueAddss.length |
| | | this.mergeTable(arr) |
| | | }) |
| | | }, |
| | | selectSample() { |
| | | let sample = this.optionsSamplename.filter(item => { |
| | | return item.name === this.processInspectVo.material |
| | | })[0] |
| | | this.processInspectVo.techfather = null |
| | | this.processInspectVo.techname = null |
| | | this.processInspectVo.materialCode = sample.code |
| | | this.processInspectVo.specificationsModel = sample.specifications |
| | | this.processInspectVo.unit = sample.unit |
| | | this.optionSoptionSprocesses = [] |
| | | this.optionSoptionSprocesses = sample.children |
| | | }, |
| | | selectInfoByOrderId() { |
| | | this.$axios.get(this.$api.url.finishedInspectChooseMater, { |
| | | params: { |
| | | orderNumber: this.processInspectVo.orderNumber |
| | | } |
| | | }).then(res => { |
| | | if (res.data.length > 0) { |
| | | console.log(res.data); |
| | | this.processInspectVo.sname = res.data[0].sname |
| | | this.processInspectVo.prname = res.data[0].prname |
| | | this.optionsSamplename = res.data[0].children |
| | | } else { |
| | | this.$message({ |
| | | message: '没æè¯¥è®¢åå·ï¼', |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | // å½å页æ¹åæ¶è§¦å 跳转å
¶ä»é¡µ |
| | | handleCurrentChange(val) { |
| | | this.search.pageSize = val; |
| | | this.defaultInitializationTable(); |
| | | }, |
| | | // æ¾ç¤ºæ°å¢é¡µé¢ |
| | | handleAddNew() { |
| | | this.showAddPage = true; |
| | | // this.getTableData() |
| | | }, |
| | | // è¡¨æ ¼åå§åæ¥å£ |
| | | defaultInitializationTable() { |
| | | this.$axios |
| | | .post(this.$api.url.selectProcessInspectsList, this.search) |
| | | .then(res => { |
| | | this.inspectionTableTotal = res.data.total; |
| | | this.inspectionTable = res.data.row; |
| | | }); |
| | | }, |
| | | // æ·»å è¡ |
| | | clickAddLine() { |
| | | let obj = { |
| | | material: "", |
| | | materialCode: "", |
| | | orderNumber: "", |
| | | quantity: 0, |
| | | specificationsModel: "", |
| | | techfather: "", |
| | | techname: "", |
| | | technologyId: 0, |
| | | unit: "" |
| | | }; |
| | | this.inspectionItems.push(obj); |
| | | }, |
| | | // å é¤è¡ |
| | | clickDeleteline(scope) { |
| | | this.inspectionItems.splice(scope.$index, 1); |
| | | }, |
| | | // å 餿£éªå¼å |
| | | clickDeleteInspectionColumn() { |
| | | if (this.empiricalValueAdd - 1 === 0) { |
| | | } else { |
| | | if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { |
| | | this.empiricalValueAdd = this.empiricalValueAdd - 1; |
| | | this.inspectionItems.forEach(i => { |
| | | i.testValueList.splice(this.empiricalValueAdd, 1); |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | // æ·»å æ£éªå¼å |
| | | clickAddInspectionColumn() { |
| | | this.empiricalValueAdd = this.empiricalValueAdd + 1; |
| | | } |
| | | }, |
| | | created() { |
| | | this.defaultInitializationTable(); // åå§åè¡¨æ ¼æ°æ® |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style></style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <!-- æ°å¢é¡µé¢ --> |
| | | <div class="addInspection"> |
| | | <el-row class="header"> |
| | | <el-col :span="12">æ°å¢äº§åæ£éªå</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <!-- ç¹å»è¿åï¼å½å页é¢å¼ä¸ºfalse --> |
| | | <!-- <el-button type="primary" size="mini" style="background: #004EA2; " |
| | | icon="el-icon-circle-plus-outline">æ°å¢</el-button> --> |
| | | <el-button @click="comBack" type="primary" size="mini" icon="el-icon-back" |
| | | style="background: #004EA2; ">è¿å</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form :model="processInspectVo" ref="addInspectionform" class="addInspectionform" label-position="right" |
| | | label-width="120px" size="small"> |
| | | <div class="formwrapper"> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="订åå·ï¼"> |
| | | <el-input disabled @blur="selectInfoByOrderId" style="width: 180px;" |
| | | v-model="processInspectVo.orderNumber" placeholder="请è¾å
¥è®¢åå·" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="客æ·åç§°ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.prname" |
| | | placeholder="请è¾å
¥å®¢æ·åç§°" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="å·¥ç¨åç§°ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.sname" |
| | | placeholder="请è¾å
¥å·¥ç¨åç§°" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="产ååç§°ï¼"> |
| | | <el-select disabled @change="changeOptionsSamplename" style="width: 180px;" |
| | | v-model="processInspectVo.material" size="small" placeholder="è¯·éæ©äº§ååç§°"> |
| | | <el-option v-for="item in optionsSamplename" :key="item.id" :label="item.name" |
| | | :value="item.id + '-' + item.name"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="è´¨é追溯å·ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.qualityTraceability" |
| | | placeholder="请è¾å
¥è¿½æº¯å·" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="产åç¼ç ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.mcode" |
| | | placeholder="请è¾å
¥äº§åç¼ç " autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="7"> |
| | | <el-form-item label="è§æ ¼åå·ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.specificationsModel" |
| | | placeholder="请è¾å
¥äº§åç¼ç " autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="åä½ï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.unit" |
| | | placeholder="请è¾å
¥äº§åç¼ç " autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="æ°éï¼"> |
| | | <el-input disabled style="width: 180px;" v-model="processInspectVo.quantity" |
| | | placeholder="请è¾å
¥æ°é" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3" style="display: flex;justify-content: end;"> |
| | | <!-- <el-button type="primary" :disabled="isAddProject" @click="addTestProjevt">çææ£éªé¡¹ç®</el-button> --> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <div class="inspectionProject"> |
| | | <el-row> |
| | | <el-col :span="12" class="inspectionProject_span">æ£éªé¡¹ç®</el-col> |
| | | <el-col v-if="!isUpBtn" :span="12" class="inspectionProject_span" |
| | | style="display: flex;justify-content: end;"> |
| | | <el-button size="mini" @click="clickDeleteInspectionColumn()">å 餿£éªå¼å</el-button> |
| | | <el-button style="margin-right: 30px;" size="mini" |
| | | @click="clickAddInspectionColumn()">æ·»å æ£éªå¼å</el-button> |
| | | <!-- <el-button |
| | | size="mini" |
| | | style="margin-right: 30px;" |
| | | @click="clickAddLine()" |
| | | >æ·»å æ£éªè¡</el-button |
| | | > --> |
| | | </el-col> |
| | | </el-row> |
| | | <el-table :data="inspectionItems" max-height="420" :span-method="handleSpanMethod" height="calc(100vh - 550px)" |
| | | style="width: 100%"> |
| | | <el-table-column type="index" label="åºå·" width="60"></el-table-column> |
| | | <el-table-column label="项ç®" prop="father"></el-table-column> |
| | | <el-table-column prop="name" label="ææ "></el-table-column> |
| | | <el-table-column prop="unit" label="åä½"></el-table-column> |
| | | <el-table-column prop="required" label="æ åå¼"></el-table-column> |
| | | <el-table-column prop="internal" label="å
æµå¼"></el-table-column> |
| | | <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="æ£æµå¼" |
| | | min-width="100" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-tooltip :disabled="scope.row.dname != null" class="item" effect="dark" content="请å
éæ©è®¾å¤ï¼" |
| | | placement="top-start"> |
| | | <el-input :disabled="scope.row.dname === null" v-model="scope.row.empiricalValueAddss[index]" |
| | | @blur="changeState(scope.row, index)" placeholder="请è¾å
¥æ£æµå¼"></el-input> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="dname" label="è¯éªè®¾å¤" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="clickTableSelect(scope)">{{ |
| | | scope.row.dname == null ? "è¯·éæ©" : scope.row.dname |
| | | }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç»è®º"> |
| | | <template slot-scope="scope"> |
| | | <span style="color: #34BD66;" v-if="scope.row.result === 1">åæ ¼</span> |
| | | <span style="color: #E84738;" v-else-if="scope.row.result === 0">ä¸åæ ¼</span> |
| | | <span v-show="scope.row.result === 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="inspectionResult"> |
| | | <span>æ£æµç»æ</span> |
| | | <el-table :data="inspectionResultForm"> |
| | | <el-table-column prop="id" label="ç©æç¼å·"></el-table-column> |
| | | <el-table-column prop="name" label="ç©æåç§°"></el-table-column> |
| | | <el-table-column prop="inspecter" label="æ£éªå"></el-table-column> |
| | | <el-table-column prop="conclusion" label="æ£éªç»è®º"> |
| | | <template slot-scope="scope"> |
| | | <span style="color: #34BD66;" v-if="scope.row.conclusion === 1">åæ ¼</span> |
| | | <span style="color: #E84738;" v-else-if="scope.row.conclusion === 0">ä¸åæ ¼</span> |
| | | <span v-else-if="scope.row.conclusion === null || scope.row.conclusion === undefined">ææªç»è®º</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="operation" label="䏿¥"> |
| | | <template slot-scope="scope"> |
| | | <el-button v-if="scope.row.conclusion === null || scope.row.conclusion === undefined" type="primary" |
| | | @click="escalation" size="small">䏿¥</el-button> |
| | | <el-button v-else type="success" size="small">已䏿¥</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> |
| | | export default { |
| | | props: ['rowInfo'], |
| | | data() { |
| | | return { |
| | | isUpBtn: false, |
| | | showUp: false, |
| | | isAddProject: false, |
| | | showLook: false, |
| | | detailId: 0, |
| | | rowInfp: {}, |
| | | search: { |
| | | countSize: 10, |
| | | pageSize: 1, |
| | | result: "", // æ£æµç¶æ |
| | | name: "", // 产ååç§° |
| | | techfather: "" // å·¥åº |
| | | }, |
| | | optionsSamplename: [], |
| | | inspectionTable: [], |
| | | tableColumn: [], |
| | | optionSoptionSprocesses: [], |
| | | optionTechnology: [], |
| | | inspectionTableTotal: 0, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | treeProject: [], |
| | | // æ·»å å |
| | | empiricalValueAdd: 1, |
| | | // ç¼è¾æ¶å卿é¿çåæ°åï¼åå é¤å¤æ |
| | | empiricalValueAddMaxNumber: 0, |
| | | showAddPage: false, |
| | | processInspectVo: { |
| | | id: null, |
| | | material: null, |
| | | mcode: null, |
| | | prname: null, |
| | | sname: null, |
| | | orderNumber: "D-001", |
| | | qualityTraceability: null, |
| | | quantity: null, |
| | | specificationsModel: null, |
| | | unit: null, |
| | | technologyId: null |
| | | }, |
| | | InspectioniD: null, |
| | | addInspectionform: [{ |
| | | number: "", |
| | | username: "", |
| | | projectname: "", |
| | | tracenumber: "", |
| | | code: "", |
| | | class: "", |
| | | specificationmodel: "", |
| | | unit: "", |
| | | quantity: "", |
| | | group: "", |
| | | worker: "", |
| | | machine: "" |
| | | }], |
| | | inspectionItems: [], // æ°å¢æ£éªé¡¹ç®è¡¨æ ¼ |
| | | inspectionResultForm: [{ |
| | | id: "", |
| | | name: "", |
| | | inspecter: "", |
| | | conclusion: "", |
| | | operation: "" |
| | | }], |
| | | options: [], |
| | | value: "", |
| | | rowList: [], |
| | | spanArr: [], |
| | | position: 0, |
| | | // 设å¤éæ©æ æ¾ç¤º |
| | | centerDialogVisible: false, |
| | | filterText: "", |
| | | materialOptions: [], |
| | | defaultProps: { |
| | | // è®¾å¤æ æ°æ®è®¾ç½® |
| | | children: "children", |
| | | label: "name" |
| | | }, |
| | | nodeData: { |
| | | id: 0, |
| | | name: null |
| | | }, // nodeç¹å»ä¿åå½åç¹å»æ°æ® |
| | | clickSelectDevice: { |
| | | index: null, // ç¹å»éæ©åå¨å½åè¡ç´¢å¼ |
| | | rpId: null // ç¹å»éæ©åå¨å½åè¡é¡¹ç®Id |
| | | } |
| | | }; |
| | | }, |
| | | watch: { |
| | | // filterText(val) { |
| | | // this.$refs.tree.filter(val); |
| | | // } |
| | | }, |
| | | mounted() { |
| | | if (this.rowInfo.result != null && this.rowInfo.result != '') { |
| | | this.isUpBtn = true |
| | | } |
| | | this.processInspectVo.material = this.rowInfo.material |
| | | this.processInspectVo.mcode = this.rowInfo.material_code |
| | | this.processInspectVo.orderNumber = this.rowInfo.order_number |
| | | this.processInspectVo.qualityTraceability = this.rowInfo.quality_traceability |
| | | this.processInspectVo.specificationsModel = this.rowInfo.specifications_model |
| | | this.processInspectVo.unit = this.rowInfo.unit |
| | | this.processInspectVo.quantity = this.rowInfo.quantity |
| | | this.processInspectVo.prname = this.rowInfo.customer_name |
| | | this.processInspectVo.sname = this.rowInfo.project_name |
| | | this.inspectionResultForm[0].id = this.rowInfo.material_code |
| | | this.inspectionResultForm[0].name = this.rowInfo.material |
| | | this.inspectionResultForm[0].conclusion = this.rowInfo.result |
| | | this.detailId = this.rowInfo.id |
| | | this.getTableData() |
| | | // this.getOptions(); |
| | | }, |
| | | methods: { |
| | | // blurNode(row){ |
| | | // console.log(11); |
| | | // row.isSelectDevice=false |
| | | // }, |
| | | escalation() { |
| | | let arr = this.inspectionItems |
| | | let bl = false |
| | | for (let index = 0; index < arr.length; index++) { |
| | | const element = arr[index]; |
| | | if (element.dname != null && element.empiricalValueAddss[0] != '') { |
| | | bl = true |
| | | break |
| | | } else { |
| | | bl = false |
| | | } |
| | | } |
| | | if (bl != true) { |
| | | this.$message({ |
| | | message: '请å
æ£æµä¸é¡¹é¡¹ç®ï¼', |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } |
| | | let pro = this.inspectionItems.filter(item => { |
| | | return item.result === 0; |
| | | }) |
| | | if (pro.length > 0) { |
| | | this.$prompt('请è¾å
¥ä¸åæ ¼æ°é', 'ä¸åæ ¼æ°é', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | inputPattern: /^\d+$/, |
| | | inputErrorMessage: '请è¾å
¥æ£ç¡®æ°åæ ¼å¼' |
| | | }).then(({ value }) => { |
| | | this.$axios.post(this.$api.url.finishedInspectUpdateFinishInspectsById, { |
| | | id: this.detailId, |
| | | number: value |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: '䏿¥æå', |
| | | type: 'success' |
| | | }); |
| | | this.$parent.comBackMain(true) |
| | | } else { |
| | | this.$message({ |
| | | message: res.message, |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: 'åæ¶è¾å
¥' |
| | | }); |
| | | }); |
| | | } else { |
| | | this.$axios.post(this.$api.url.finishedInspectUpdateFinishInspectsById, { |
| | | id: this.detailId |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | if (res.message === 'é¡¹ç®æªæ£éªå®!') { |
| | | this.$message({ |
| | | message: res.message, |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } |
| | | // this.$message({ |
| | | // message: '䏿¥æå', |
| | | // type: 'success' |
| | | // }); |
| | | this.$parent.comBackMain(true) |
| | | } else { |
| | | this.$message({ |
| | | message: res.message, |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | changeOptionsSamplename() { |
| | | let id = this.processInspectVo.material.split("-")[0] |
| | | let sample = this.optionsSamplename.filter(o => { |
| | | return o.id == id |
| | | })[0] |
| | | this.processInspectVo.qualityTraceability = sample.qualityTraceability |
| | | this.processInspectVo.mcode = sample.mcode |
| | | this.processInspectVo.specificationsModel = sample.specifications |
| | | this.processInspectVo.unit = sample.unit |
| | | }, |
| | | comBack() { |
| | | this.$parent.comBackMain() |
| | | }, |
| | | handleClick(row) { |
| | | this.rowInfp = row |
| | | this.showLook = true |
| | | }, |
| | | updateInsInfo(row) { |
| | | this.rowInfp = row |
| | | this.showUp = true |
| | | }, |
| | | combackMain() { |
| | | this.showUp = false |
| | | this.showLook = false |
| | | }, |
| | | searchPro() { |
| | | this.search.countSize = this.pageSize |
| | | this.search.pageSize = this.currentPage |
| | | this.defaultInitializationTable() |
| | | }, |
| | | // ç¹å»è®¾å¤æ ä¿åç¹å»è®°å½ |
| | | nodeClick(data) { |
| | | if (data.id != undefined) this.nodeData = data; |
| | | }, |
| | | // è®¾å¤æ è¿æ»¤æç´¢ |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.name.indexOf(value) !== -1; |
| | | }, |
| | | // è·åè®¾å¤æ å
容 |
| | | getOptions(row) { |
| | | this.$axios.get(this.$api.url.inspectionItemChooseDev, { |
| | | params: { |
| | | father: row.father, |
| | | name: row.name, |
| | | technologyId: this.processInspectVo.technologyId |
| | | } |
| | | }).then(res => { |
| | | this.materialOptions = res.data; |
| | | if (this.materialOptions.length === 1 && row.did != null) { |
| | | this.$message({ |
| | | message: '该项ç®ä¸åªæä¸ä¸ªè¯éªè®¾å¤ï¼æ ééæ©ï¼', |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } |
| | | row.isSelectDevice = true |
| | | }); |
| | | }, |
| | | // ç¹å»è¡¨æ ¼éæ©è§¦å |
| | | clickTableSelect(scope) { |
| | | this.centerDialogVisible = true; |
| | | this.clickSelectDevice.index = scope.$index; |
| | | this.clickSelectDevice.rpId = scope.row.id; |
| | | this.getOptions(scope.row); |
| | | }, |
| | | // ç¹å»æ éé¢çç¡®å® |
| | | clickNodeSure(row) { |
| | | 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.inspectionItemUpdateDevByInsId, { |
| | | id: this.clickSelectDevice.rpId, |
| | | devId: this.nodeData.id, |
| | | type: 2 |
| | | }).then(res => { |
| | | this.centerDialogVisible = false; |
| | | this.inspectionItems.forEach(a => { |
| | | if (a.id == this.clickSelectDevice.rpId) { |
| | | a.dname = this.nodeData.name |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | }, |
| | | changeState(row, index) { |
| | | if (row.did != null && row.did != '') { |
| | | // let val = row.empiricalValueAddss.filter(item => { |
| | | // return item != '' && item != null |
| | | // }) |
| | | // let eq = val.filter(item => { |
| | | // return /^[^><=]/.test(item) |
| | | // }) |
| | | // if (eq.length > 0) { |
| | | // this.$message({ |
| | | // message: "æ£æµå¼[" + eq + "]æ ¼å¼é¦ä½åºå
å«>,<æè
=", |
| | | // type: 'warning' |
| | | // }); |
| | | // return |
| | | // } |
| | | let str = "" |
| | | row.empiricalValueAddss.forEach(e => { |
| | | str += e + "," |
| | | }) |
| | | if (str.slice(0, -1) === '' || str.slice(0, -1) === null || str.slice(0, -1) === undefined) { |
| | | return |
| | | } |
| | | this.$axios.post(this.$api.url.inspectionItemlose_focus_update, { |
| | | deviceId: row.did, |
| | | inspectionItemId: row.id, |
| | | inspectionValue: str.slice(0, -1) |
| | | }, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | } |
| | | }).then(res => { |
| | | row.result = res.data.result |
| | | row.username = res.data.username |
| | | }) |
| | | } else { |
| | | this.$message({ |
| | | message: 'è¯·éæ©æ©è®¾å¤ï¼', |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | }, |
| | | // æ¯é¡µæ¡æ°æ¹åæ¶è§¦å éæ©ä¸é¡µæ¾ç¤ºå¤å°è¡ |
| | | handleSizeChange(val) { |
| | | this.search.countSize = val; |
| | | this.defaultInitializationTable(); |
| | | }, |
| | | handleSpanMethod({ |
| | | row, |
| | | column, |
| | | rowIndex, |
| | | columnIndex |
| | | }) { |
| | | if (columnIndex === 0) { |
| | | const _row = this.spanArr[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return { |
| | | rowspan: _row, |
| | | colspan: _col |
| | | } |
| | | } |
| | | if (columnIndex === 1) { |
| | | const _row = this.spanArr[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return { |
| | | rowspan: _row, |
| | | colspan: _col |
| | | } |
| | | } |
| | | }, |
| | | // åå¹¶è¡¨æ ¼ |
| | | mergeTable() { |
| | | this.rowList = [] |
| | | this.spanArr = [] |
| | | this.position = 0 |
| | | this.inspectionItems.forEach((item, index) => { |
| | | if (index === 0) { |
| | | this.spanArr.push(1); |
| | | this.position = 0; |
| | | } else { |
| | | if (this.inspectionItems[index].father === this.inspectionItems[index - 1].father) { |
| | | this.spanArr[this.position] += 1; |
| | | this.spanArr.push(0); |
| | | } else { |
| | | this.spanArr.push(1); |
| | | this.position = index; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | changeOptionSoptionSprocesses() { |
| | | this.optionTechnology = [] |
| | | let working = this.optionSoptionSprocesses.filter(item => { |
| | | return item.name === this.processInspectVo.techfather |
| | | })[0] |
| | | this.optionTechnology = working.children |
| | | }, |
| | | addTestProjevt() { |
| | | // this.isAddProject = true |
| | | let val = JSON.parse(JSON.stringify(this.processInspectVo)) |
| | | val.material = this.processInspectVo.material.split("-")[1] |
| | | val.id = this.processInspectVo.material.split("-")[0] |
| | | this.$axios.post(this.$api.url.finishedInspectAddFinish, val, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | } |
| | | }).then(res => { |
| | | if (res.code == 201) { |
| | | this.$message({ |
| | | message: res.message, |
| | | type: 'warning' |
| | | }); |
| | | return |
| | | } |
| | | this.detailId = res.data |
| | | this.inspectionResultForm[0].id = val.mcode |
| | | this.inspectionResultForm[0].name = val.material |
| | | this.getTableData() |
| | | }) |
| | | }, |
| | | getTableData() { |
| | | console.log(this.rowInfo); |
| | | this.$axios.get(this.$api.url.finishedInspectSelectFinishInspectsListById, { |
| | | params: { |
| | | id: this.rowInfo.id |
| | | } |
| | | }).then(res => { |
| | | this.processInspectVo.technologyId = res.data[0].techId |
| | | }) |
| | | this.$axios.get(this.$api.url.inspectionItemListUser, { |
| | | params: { |
| | | id: this.detailId, |
| | | type: 2 |
| | | } |
| | | }).then(res => { |
| | | if (res.data.length < 1) { |
| | | return |
| | | } |
| | | this.inspectionItems = res.data |
| | | let arr = [] |
| | | let val = JSON.parse(JSON.stringify(this.inspectionItems)) |
| | | const uName = [] |
| | | //转æä¸ç»´æ°ç» |
| | | val.forEach(l => { |
| | | let father = l.father |
| | | l.children.forEach(c => { |
| | | c.father = father |
| | | c.empiricalValueAddss = [] |
| | | if (c.inspectionValue != '' && c.inspectionValue != null) { |
| | | c.empiricalValueAddss = c.inspectionValue.split(","); |
| | | } else { |
| | | c.empiricalValueAddss.push("") |
| | | } |
| | | uName.push(c['username']) |
| | | c.isSelectDevice = false |
| | | arr.push(c) |
| | | }) |
| | | }) |
| | | this.inspectionItems = arr |
| | | let arrSort = JSON.parse(JSON.stringify(arr)) |
| | | //æ ¹æ®éå对象æ°ç»é¿åº¦æåº |
| | | arrSort.sort((a, b) => { |
| | | if (a.empiricalValueAddss.length < b.empiricalValueAddss.length) { |
| | | return -1; // aæå¨båé¢ |
| | | } else if (a.empiricalValueAddss.length > b.empiricalValueAddss.length) { |
| | | return 1; // aæå¨båé¢ |
| | | } else { |
| | | return 0; // ä¿æç¸å¯¹é¡ºåºä¸å |
| | | } |
| | | }); |
| | | // console.log(arrSort); |
| | | console.log(uName); |
| | | let name = [...new Set(uName)].filter(item => item !== null); |
| | | let rname = '' |
| | | name.forEach(m => { |
| | | rname += m + "," |
| | | }) |
| | | this.inspectionResultForm[0].inspecter = rname.slice(0, -1) |
| | | this.empiricalValueAdd = arrSort[arrSort.length - 1].empiricalValueAddss.length |
| | | this.mergeTable(arr) |
| | | }) |
| | | }, |
| | | selectSample() { |
| | | let sample = this.optionsSamplename.filter(item => { |
| | | return item.name === this.processInspectVo.material |
| | | })[0] |
| | | this.processInspectVo.techfather = null |
| | | this.processInspectVo.techname = null |
| | | this.processInspectVo.materialCode = sample.code |
| | | this.processInspectVo.specificationsModel = sample.specifications |
| | | this.processInspectVo.unit = sample.unit |
| | | this.optionSoptionSprocesses = [] |
| | | this.optionSoptionSprocesses = sample.children |
| | | }, |
| | | selectInfoByOrderId() { |
| | | this.$axios.get(this.$api.url.finishedInspectChooseMater, { |
| | | params: { |
| | | orderNumber: this.processInspectVo.orderNumber |
| | | } |
| | | }).then(res => { |
| | | if (res.data.length > 0) { |
| | | console.log(res.data); |
| | | this.processInspectVo.sname = res.data[0].sname |
| | | this.processInspectVo.prname = res.data[0].prname |
| | | this.optionsSamplename = res.data[0].children |
| | | } else { |
| | | this.$message({ |
| | | message: '没æè¯¥è®¢åå·ï¼', |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | // å½å页æ¹åæ¶è§¦å 跳转å
¶ä»é¡µ |
| | | handleCurrentChange(val) { |
| | | this.search.pageSize = val; |
| | | this.defaultInitializationTable(); |
| | | }, |
| | | // æ¾ç¤ºæ°å¢é¡µé¢ |
| | | handleAddNew() { |
| | | this.showAddPage = true; |
| | | // this.getTableData() |
| | | }, |
| | | // è¡¨æ ¼åå§åæ¥å£ |
| | | defaultInitializationTable() { |
| | | this.$axios |
| | | .post(this.$api.url.selectProcessInspectsList, this.search) |
| | | .then(res => { |
| | | this.inspectionTableTotal = res.data.total; |
| | | this.inspectionTable = res.data.row; |
| | | }); |
| | | }, |
| | | // æ·»å è¡ |
| | | clickAddLine() { |
| | | let obj = { |
| | | material: "", |
| | | materialCode: "", |
| | | orderNumber: "", |
| | | quantity: 0, |
| | | specificationsModel: "", |
| | | techfather: "", |
| | | techname: "", |
| | | technologyId: 0, |
| | | unit: "" |
| | | }; |
| | | this.inspectionItems.push(obj); |
| | | }, |
| | | // å é¤è¡ |
| | | clickDeleteline(scope) { |
| | | this.inspectionItems.splice(scope.$index, 1); |
| | | }, |
| | | // å 餿£éªå¼å |
| | | clickDeleteInspectionColumn() { |
| | | if (this.empiricalValueAdd - 1 === 0) { } else { |
| | | if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { |
| | | this.empiricalValueAdd = this.empiricalValueAdd - 1; |
| | | this.inspectionItems.forEach(i => { |
| | | i.testValueList.splice(this.empiricalValueAdd, 1); |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | // æ·»å æ£éªå¼å |
| | | clickAddInspectionColumn() { |
| | | this.empiricalValueAdd = this.empiricalValueAdd + 1; |
| | | } |
| | | }, |
| | | created() { |
| | | this.defaultInitializationTable(); // åå§åè¡¨æ ¼æ°æ® |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style></style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="content-main"> |
| | | <div v-if="!showAdd&&!showLook&&!showUp" class="rawPage"> |
| | | <!-- <div class="nav"> --> |
| | | <!-- <div class="title"> |
| | | <el-row> |
| | | <el-col :span="12">äº§åæ£éª</el-col> |
| | | <el-col :span="12"> |
| | | <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus" |
| | | style="background: #004EA2; ">æ°å¢</el-button> |
| | | <el-button icon="el-icon-delete" size="mini">å é¤</el-button> |
| | | <el-button icon="el-icon-download" size="mini">导åº</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> --> |
| | | <!-- <span>æ£æµç»æï¼</span> |
| | | <el-select v-model="searchData.result" size="small" placeholder="è¯·éæ©" style="width: 224px;margin-right: 52px;"> |
| | | <el-option :value="''" label="å
¨é¨"></el-option> |
| | | <el-option :value="1" label="åæ ¼"></el-option> |
| | | <el-option :value="0" label="ä¸åæ ¼"></el-option> |
| | | </el-select> |
| | | <span>产ååç§°ï¼</span> |
| | | <el-input v-model="searchData.material" size="small" placeholder="请è¾å
¥äº§ååç§°" |
| | | style="width: 224px;margin-right: 52px;"></el-input> |
| | | <el-button size="mini" @click="()=>{searchData={};getInspectionTableData()}"><span>é ç½®</span></el-button> |
| | | <el-button size="mini" type="primary" @click="getInspectionTableData" style="background: #004EA2;"><span>æ¥ |
| | | 询</span></el-button> --> |
| | | <!-- </div> --> |
| | | <basic-container> |
| | | <ttable |
| | | :table="table" |
| | | @handleSelectionChange="handleSelectionChange" |
| | | :prelang="prelang" |
| | | :options="options" |
| | | :ajaxFun="ajaxFun" |
| | | ref="finishedProduct"> |
| | | <template #toolbar></template> |
| | | </ttable> |
| | | </basic-container> |
| | | <!-- <div class="content-body"> |
| | | <div class="inspectionTable"> |
| | | <el-table ref="inspectionTable" height="620" :cell-style="{textAlign: 'center'}" |
| | | :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" |
| | | :data="inspectionTable" style="width: 100%"> |
| | | <el-table-column type="selection" width="50"> |
| | | </el-table-column> |
| | | <el-table-column prop="order_number" label="订åå·" min-width="100" /> |
| | | <el-table-column prop="customer_name" label="客æ·åç§°" min-width="80" /> |
| | | <el-table-column prop="project_name" label="å·¥ç¨åç§°" min-width="80" /> |
| | | <el-table-column prop="quality_traceability" label="è´¨é追溯å·" min-width="108" /> |
| | | <el-table-column prop="material_code" label="产åç¼ç " min-width="100" /> |
| | | <el-table-column prop="material" label="产å大类" min-width="72" /> |
| | | <el-table-column prop="specifications_model" label="è§æ ¼åå·" min-width="110" /> |
| | | <el-table-column prop="unit" label="åä½" min-width="50" /> |
| | | <el-table-column prop="quantity" label="æ°é" min-width="50" /> |
| | | <el-table-column prop="detectionPeriod" label="æ£éªæ¥æ" min-width="80" /> |
| | | <el-table-column prop="result" label="æ£æµç»æ" min-width="80"> |
| | | <template slot-scope="scope"> |
| | | <span style="color: #34BD66;" v-if="scope.row.result === 1">åæ ¼</span> |
| | | <span style="color: #E84738;" v-else-if="scope.row.result === 0">ä¸åæ ¼</span> |
| | | <span v-else-if="scope.row.result === null || scope.row.result === undefined">ææªç»è®º</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" min-width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" @click="goToDetail(scope.row)">æ¥ç</el-button> |
| | | <el-button type="text" size="small">æå°</el-button> |
| | | <el-button v-if="scope.row.result == null" type="text" size="small" |
| | | @click="goUp(scope.row)">ç¼è¾</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> --> |
| | | <!-- åé¡µå¨ --> |
| | | <!-- <div class="pagination"> |
| | | <el-pagination :current-page="pageParams.pageSize" :page-sizes="[10, 50, 100, 200]" |
| | | :page-size="pageParams.countSize" layout="total, sizes, prev, pager, next, jumper" :total="pageParams.total" |
| | | @size-change="handleSizeChange" @current-change="handleCurrentChange" /> |
| | | </div> --> |
| | | <!-- </div> --> |
| | | </div> |
| | | <div class="newPage" v-if="showAdd"> |
| | | <finishedProductInspectionAdd /> |
| | | </div> |
| | | <div class="newPage" v-if="showLook"> |
| | | <finishedProductInspectionLook :rowInfo="rowInfo" /> |
| | | </div> |
| | | <div class="newPage" v-if="showUp"> |
| | | <finishedProductInspectionUp :rowInfo="rowInfo" /> |
| | | </div> |
| | | </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 finishedProductInspectionUp from './finishedProductInspectionUp' |
| | | import finishedProductInspectionLook from './finishedProductInspectionLook' |
| | | import { page } from '@/api/quality/finishedProduct' |
| | | export default { |
| | | components: { |
| | | finishedProductInspectionAdd, |
| | | finishedProductInspectionUp, |
| | | finishedProductInspectionLook, |
| | | ttable |
| | | }, |
| | | data() { |
| | | return { |
| | | result:[{label:'å
¨é¨',value: ''},{label:'åæ ¼',value: '1'},{label:'ä¸åæ ¼',value: '0'}], |
| | | type: [1], |
| | | prelang: 'finishedProduct', |
| | | 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: 'customerName', |
| | | label: '客æ·åç§°', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | { |
| | | minWidth: '130', |
| | | width: '150', |
| | | prop: 'projectName', |
| | | label: 'å·¥ç¨åç§°', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'materialCode', |
| | | label: '产åç¼ç ', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'material', |
| | | label: '产å大类', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'specs', |
| | | 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: 'result', |
| | | label: 'æ£æµç»æ', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'select', |
| | | formatter: this.formatResult, |
| | | optList: () => { |
| | | return this.result |
| | | } |
| | | }, |
| | | ], |
| | | toolbar: [ |
| | | { |
| | | text: 'æ°å¢', |
| | | type: 'primary', |
| | | fun: ()=>this.showAdd=true |
| | | }, |
| | | { |
| | | text: 'å é¤', |
| | | }, |
| | | { |
| | | text: '导åº', |
| | | } |
| | | ], |
| | | operator: [{ |
| | | text: 'æå°', |
| | | type: 'text', |
| | | size: 'small', |
| | | },{ |
| | | text: 'ä½åº', |
| | | type: 'text', |
| | | size: 'small', |
| | | fun: this.deleteHandle |
| | | }], |
| | | operatorConfig: { |
| | | fixed: 'right', |
| | | label: 'æä½', |
| | | width: 100, |
| | | 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() |
| | | }, |
| | | methods: { |
| | | 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') : '' |
| | | }, |
| | | addOrUpdateHandle(row) { |
| | | this.$router.push({ |
| | | name: 'rawMaterialForm', |
| | | query: { id: row == null ? null : row.id } |
| | | }) |
| | | }, |
| | | handleSelectionChange(){ |
| | | |
| | | }, |
| | | // æ¯é¡µæ¡æ°æ¹åæ¶è§¦å éæ©ä¸é¡µæ¾ç¤ºå¤å°è¡ |
| | | handleSizeChange(val) { |
| | | console.log(`æ¯é¡µ ${val} æ¡`) |
| | | this.currentPage = 1 |
| | | this.pageSize = val |
| | | }, |
| | | // å½å页æ¹åæ¶è§¦å 跳转å
¶ä»é¡µ |
| | | handleCurrentChange(val) { |
| | | console.log(`å½å页: ${val}`) |
| | | this.currentPage = val |
| | | }, |
| | | handleAddNew() { |
| | | this.showAdd = true |
| | | }, |
| | | // async getInspectionTableData() { |
| | | // const { |
| | | // data: { |
| | | // row, |
| | | // total |
| | | // } |
| | | // } = await this.$axios.get(this.$api.url.finishedInsListPage, { |
| | | // params: { |
| | | // ...this.pageParams, |
| | | // ...this.searchData |
| | | // } |
| | | // }) |
| | | // this.inspectionTable = row |
| | | // this.pageParams.total = total |
| | | // }, |
| | | 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() |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | </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; |
| | | } |
| | | |
| | | /* .inspectionTable{ |
| | | flex: 1; |
| | | overflow-y: scroll; |
| | | } */ |
| | | </style> |
| | |
| | | <h2>ç¼è¾-åæææ£éª</h2> |
| | | </div> |
| | | <div class="btn-group header-right"> |
| | | <el-button @click="save()">ä¿å</el-button> |
| | | <el-button @click="save()" v-if="this.dataForm.id==null">ä¿å</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="page-main"> |
| | |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width:100%;margin-top:-30px"> |
| | | <el-row style="width:100%;"> |
| | | <el-col :span="24"> |
| | | <avue-crud |
| | | ref="crud" |
| | | :option="tableOption" |
| | | @current-row-change="changeEquipment" |
| | | :data="list" |
| | | v-model="form"> |
| | | <template slot="testValue" 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.testValue" |
| | | @blur="updateTestValue(scope.row)" placeholder="请è¾å
¥æ£æµå¼"></el-input> |
| | | </el-tooltip> |
| | | </template> |
| | | <template slot="deviceName" slot-scope="scope"> |
| | | <el-select v-model="scope.row.equipmentId" filterable> |
| | | <el-option v-for="(item,index) in deviceList" |
| | | :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> |
| | | </el-select> |
| | | </template> |
| | | <template slot="testState" slot-scope="scope"> |
| | | <span v-if="scope.row.testState == 0" style="color:#F56C6C">ä¸åæ ¼</span> |
| | | <span v-else-if="scope.row.testState == 1" style="color:#67C23A">åæ ¼</span> |
| | | <span v-else>ææ ç»è®º</span> |
| | | </template> |
| | | </avue-crud> |
| | | <el-table :data="list" border style="width: 100%;" height="320"> |
| | | <el-table-column type="index" label="åºå·" width="60"> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="项ç®" width="260"> |
| | | <template slot-scope="scope"> |
| | | <el-input :disabled="dataForm.id != null" class="inline-input" v-model="scope.row.name" |
| | | placeholder="请è¾å
¥é¡¹ç®åç§°"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="åä½" width="260"> |
| | | <template slot-scope="scope"> |
| | | <el-input :disabled="dataForm.id != null" v-model="scope.row.unit" placeholder="请è¾å
¥åä½"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="required" label="æ åå¼" width="260"> |
| | | <template slot-scope="scope"> |
| | | <el-input :disabled="dataForm.id != null" v-model="scope.row.required" |
| | | placeholder="请è¾å
¥æ åå¼"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="testValue" label="æ£æµå¼" min-width="260" v-for="(item, index) in empiricalValueAdd" |
| | | :key="index"> |
| | | <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]" |
| | | @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> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" v-if="dataForm.id != null" prop="testState" label="ç»è®º" min-width="150"> |
| | | <template slot-scope="scope"> |
| | | <span v-if="scope.row.testState == 0" style="color:#F56C6C">ä¸åæ ¼</span> |
| | | <span v-else-if="scope.row.testState == 1" style="color:#67C23A">åæ ¼</span> |
| | | <span v-else>ææ ç»è®º</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" style="background-color: white;" v-if="dataForm.id == null" label="æä½" width="150"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="clickDeleteline(scope)">åæ¶</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | |
| | | :option="option" |
| | | :data="conclusionTable" |
| | | v-model="conclusion"> |
| | | <template slot="judgeState" slot-scope="scope"> |
| | | <el-tag type="success" v-if="scope.row.judgeState == 1">åæ ¼</el-tag> |
| | | <el-tag type="danger" v-else-if="scope.row.judgeState == 0">ä¸åæ ¼</el-tag> |
| | | </template> |
| | | <template #menu> |
| | | <el-button type="text" size="small">䏿¥</el-button> |
| | | <el-button type="text" @click="submitSave()" size="small">䏿¥</el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { object,conclusion } from '@/const/crud/quality/rawMaterial' |
| | | import { selectDevice,addRawInspects,getObj,updateRawInsProduct } from '@/api/quality/rawMaterial' |
| | | import { |
| | | selectDevice, |
| | | addRawInspects, |
| | | getObj, |
| | | updateRawInsProduct, |
| | | updateRawInspectsById, |
| | | updateDeviceById, } from '@/api/quality/rawMaterial' |
| | | export default { |
| | | data(){ |
| | | return{ |
| | | columnIndex: 2, |
| | | // æ·»å å |
| | | empiricalValueAdd: 1, |
| | | // ç¼è¾æ¶å卿é¿çåæ°åï¼åå é¤å¤æ |
| | | empiricalValueAddMaxNumber: 0, |
| | | columnList: [], |
| | | dataForm:{ |
| | | id: null, |
| | | judgeState: null, |
| | | formTime: '2023-10-28 00:00:00', |
| | | message: '-2050314,1,1,*,1002', |
| | | name: 'name', |
| | | code: 'code4', |
| | | specs: 'specs', |
| | | unit: 'mm', |
| | | number: '111', |
| | | supplier: 'supplier', |
| | | rawInsProducts: null, |
| | | rawInsProducts: [{ |
| | | equipmentId: 0, |
| | | name: '', |
| | | required: '', |
| | | testValue: '', |
| | | unit: '', |
| | | testValueList: [] |
| | | }] |
| | | }, |
| | | form: null, |
| | | list:[], |
| | |
| | | this.getDeviceList() |
| | | }, |
| | | watch:{ |
| | | 'columnList.length':function(newVal){ |
| | | const column = [{ |
| | | label: '项ç®', |
| | | width: 260, |
| | | prop: 'name', |
| | | span: 24, |
| | | type: 'text', |
| | | cell: true, |
| | | }, { |
| | | width: 260, |
| | | label: 'åä½', |
| | | prop: 'unit', |
| | | span: 24, |
| | | type: 'text', |
| | | cell: true, |
| | | }, { |
| | | width: 260, |
| | | label: 'æ åå¼', |
| | | prop: 'required', |
| | | type: 'text', |
| | | span: 24, |
| | | cell: true, |
| | | }, { |
| | | label: 'æ£æµå¼', |
| | | prop: 'testValue', |
| | | type: 'text', |
| | | width: 260, |
| | | slot: true, |
| | | formSlot: true, |
| | | cell: true, |
| | | }, { |
| | | label: 'è¯éªè®¾å¤', |
| | | prop: 'deviceName', |
| | | type: 'select', |
| | | cell: true, |
| | | slot: true, |
| | | formSlot: true, |
| | | width: 260 |
| | | },{ |
| | | label: 'ç»è®º', |
| | | prop: 'testState', |
| | | type: 'text', |
| | | slot: true, |
| | | formSlot: true, |
| | | hide: true, |
| | | fixed: 'right' |
| | | }] |
| | | if(newVal > 0){ |
| | | if(this.columnList.length > 0){ |
| | | this.tableOption.column = column |
| | | this.columnList.forEach(item=>{ |
| | | this.tableOption.column.splice(4,0,item) |
| | | }) |
| | | } |
| | | }else{ |
| | | this.tableOption.column = column |
| | | } |
| | | }, |
| | | |
| | | }, |
| | | methods:{ |
| | | changeEquipment(current,old){ |
| | | console.log(current,old) |
| | | updateDevice(row){ |
| | | if(this.dataForm.id != null){ |
| | | updateDeviceById({equiomentId:row.equipmentId,rpId:row.rpId}).then(res=>{ |
| | | }).catch(error=>{ |
| | | console.log(error) |
| | | }) |
| | | } |
| | | }, |
| | | 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 = { |
| | | id: this.dataForm.id, |
| | | number: value |
| | | } |
| | | updateRawInspectsById(data).then(res => { |
| | | this.$message.success("䏿¥æå"); |
| | | }); |
| | | }).catch(() => {}); |
| | | }else{ |
| | | updateRawInspectsById({id:this.dataForm.id,number:0}).then(res => { |
| | | this.$message.success("䏿¥æå"); |
| | | }); |
| | | } |
| | | this.init() |
| | | }, |
| | | addTeatValueColumn(){ |
| | | let propName = 'testValue' + this.columnIndex |
| | | this.columnList.push({ |
| | | label: 'æ£æµå¼', |
| | | prop: propName, |
| | | type: 'text', |
| | | width: 260, |
| | | $cellEdit: true, |
| | | disabled: this.list[0].equiomentId == null |
| | | }) |
| | | this.columnIndex+=1 |
| | | this.empiricalValueAdd = this.empiricalValueAdd + 1; |
| | | }, |
| | | // å é¤è¡ |
| | | clickDeleteline(scope) { |
| | | this.list.splice(scope.$index, 1); |
| | | }, |
| | | delTeatValueColumn(){ |
| | | this.columnList.pop() |
| | | if (this.empiricalValueAdd - 1 === 0) { } else { |
| | | if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { |
| | | this.empiricalValueAdd = this.empiricalValueAdd - 1; |
| | | this.list.forEach(i => { |
| | | i.testValueList.splice(this.empiricalValueAdd, 1); |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | updateTestValue(row){ |
| | | if(row.rpId == null){ |
| | |
| | | let obj = { |
| | | equiomentId: row.equipmentId, |
| | | rpId: row.rpId, |
| | | testValue: row.testValue |
| | | testValue: row.testValueList.join(",") |
| | | } |
| | | updateRawInsProduct(obj).then(res=>{ |
| | | if(res.data.code === 0){ |
| | |
| | | this.dataForm.number = data.number |
| | | this.dataForm.createTime = data.creatTime |
| | | this.dataForm.createUser = data.createUser |
| | | // this.dataForm.judgeState = data.judgeState |
| | | let userNameList = [] |
| | | this.list = [] |
| | | data.children.forEach(item=>{ |
| | | userNameList.push(item.userName) |
| | | let arr = [] |
| | | if(item.testValue != undefined ){ |
| | | arr = item.testValue.split(",") |
| | | this.empiricalValueAdd = arr.length |
| | | }else{ |
| | | this.empiricalValueAdd = 1 |
| | | } |
| | | this.list.push({ |
| | | equipmentId: item.equiomentId, |
| | | name: item.rpName, |
| | |
| | | testValue: item.testValue, |
| | | unit: item.rpUnit, |
| | | testState: item.testState, |
| | | rpId: item.rpId |
| | | rpId: item.rpId, |
| | | testValueList: arr |
| | | }) |
| | | }) |
| | | this.conclusionTable = [{ |
| | | code: data.code, |
| | | name: data.name, |
| | | userName: Array.from(new Set(userNameList)).join(','), |
| | | testState: '' |
| | | judgeState: data.judgeState |
| | | }] |
| | | }).catch(error=>{ |
| | | this.$message.error("è·å失败",error) |
| | |
| | | save(){ |
| | | let data = this.dataForm |
| | | data.rawInsProducts = this.list |
| | | console.log(this.list) |
| | | return |
| | | data.rawInsProducts.forEach(item=>{ |
| | | let val = item.testValueList.join(",") |
| | | item.testValue = val |
| | | }) |
| | | addRawInspects(data).then(res=>{ |
| | | this.$message.success("ä¿åæå") |
| | | }).catch(error=>{ |
| | |
| | | // æ·»å è¡ |
| | | clickAddLine() { |
| | | let obj = { |
| | | $cellEdit: true, |
| | | equipmentId: null, |
| | | name: "", |
| | | required: "", |
| | | testValue: "", |
| | | unit: "" |
| | | unit: "", |
| | | testState: null, |
| | | testValueList: [], |
| | | }; |
| | | this.list.push(obj); |
| | | }, |
| | |
| | | bomId: this.dataForm.bomId, |
| | | }) |
| | | ).then((response) => { |
| | | console.log(response) |
| | | this.routingList = response.data.data |
| | | }) |
| | | } else { |
| | |
| | | allKeyValues = allKeyValues.concat(keyValues) |
| | | i = i + keyValues.length |
| | | } |
| | | console.log("aaa--",allKeyValues) |
| | | this.materialCostList = allKeyValues |
| | | }, |
| | | objectSpanMethod({ row, column, rowIndex, columnIndex }) { |