From ae8b90c76912a7796b7c23c78f1a59bac434457d Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 14 十月 2024 13:37:15 +0800 Subject: [PATCH] 完成普通项目的项目检验 --- src/components/view/b1-inspect-order-plan.vue | 349 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 331 insertions(+), 18 deletions(-) diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue index 5e0dd6f..b10b282 100644 --- a/src/components/view/b1-inspect-order-plan.vue +++ b/src/components/view/b1-inspect-order-plan.vue @@ -101,6 +101,20 @@ cursor: move; position: relative; } + .node_i { + color: orange; + font-size: 18px; + } + .custom-tree-node .el-button { + opacity: 0; + } + + .custom-tree-node:hover .el-button { + opacity: 1; + } + .el-dialog { + position: relative; + } </style> <style> .ins-order-plan-main .el-form-item__label{ @@ -138,7 +152,7 @@ <div class="center"> <div class="center-options"> <el-row> - <el-col :span="21"> + <el-col :span="18"> <div style="display: flex;align-items: center;margin-bottom: 10px;"> <ul class="tab"> <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label.replace('璇曢獙瀹�','')}} @@ -150,8 +164,10 @@ </div> </div> </el-col> - <el-col :span="3"> + <el-col :span="6"> <div class="center-title"> + <el-button size="small" type="primary" @click="qrCodeVisible=true">鎵爜鎶ユ</el-button> + <el-button size="small" type="primary" @click="exportVisible=true" style="margin-right: 16px;">鍑哄簱</el-button> <span>鎬昏浠诲姟鏁伴噺:</span> <span>{{total}}</span> </div> @@ -201,7 +217,7 @@ width="100px" > <template slot-scope="scope"> - <el-tag :type="typeList.find(m=>m.value==scope.row.insState).type" size="small">{{ typeList.find(m=>m.value==scope.row.insState).label }}</el-tag> + <el-tag :type="insStateList.find(m=>m.value==scope.row.insState).type" size="small">{{ insStateList.find(m=>m.value==scope.row.insState).label }}</el-tag> </template></el-table-column> <el-table-column prop="userName" @@ -229,6 +245,11 @@ width="160px" ></el-table-column> <el-table-column + prop="submitTime" + label="妫�楠岀粨鏉熸椂闂�" + width="160px" + ></el-table-column> + <el-table-column prop="verifyTell" label="鐞嗙敱" width="150px" @@ -236,14 +257,15 @@ <el-table-column fixed="right" align="center" label="鎿嶄綔" - width="250px" + width="320px" > <template slot-scope="scope"> <el-button @click="handleDataLook(scope.row)" type="text" size="small">鏁版嵁鏌ョ湅</el-button> - <el-button @click="handleInspection(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))">妫�楠�</el-button> - <el-button @click="handleConnect(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 5 || scope.row.insState == 3||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))">浜ゆ帴</el-button> - <el-button @click="handleReview(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState != 3 ||(scope.row.checkName&&!scope.row.checkName.includes(userName))">澶嶆牳</el-button> - <el-button @click="claimFun(scope.row)" type="text" size="small" :disabled="scope.row.userName != null || scope.row.checkName!=null">璁ら</el-button> + <el-button @click="handleInspection(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))" v-if="inspection">妫�楠�</el-button> + <el-button @click="handleConnect(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 5 || scope.row.insState == 3||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))" v-if="connect">浜ゆ帴</el-button> + <el-button @click="handleReview(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState != 3 ||(scope.row.checkName&&!scope.row.checkName.includes(userName))" v-if="review">澶嶆牳</el-button> + <el-button @click="claimFun(scope.row)" type="text" size="small" :disabled="scope.row.userName != null || scope.row.checkName!=null" v-if="claim">璁ら</el-button> + <el-button @click="lookHistory0(scope.row)" type="text" size="small" :disabled="!scope.row.num1 || scope.row.num1<1">鏌ョ湅璁板綍</el-button> </template> </el-table-column> </el-table> @@ -298,19 +320,102 @@ <div style="width: 100%;height: 100%;" v-if="activeFace >0"> <Add :active="activeFace" :currentId="currentId" :examine="examine"/> </div> - <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :inspectorList="inspectorList" :sonLaboratory="componentData.entity.sonLaboratory" :state="state"/> + <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :inspectorList="inspectorList" :sonLaboratory="componentData.entity.sonLaboratory" :state="state" :orderStateId="orderStateId" :version="version" :isLook="isLook" :num1="num1"/> <el-dialog title="鏁版嵁鏌ョ湅" :visible.sync="dataDialogVisible" width="80%"> <div style="height: 70vh;overflow-y: auto;" v-if="dataDialogVisible"> <ValueTable ref="ValueTableDataLook" :rowKey="'insProductId'" :url="$api.insOrder.selectSampleAndProductByOrderId" :componentData="componentDataDataLook"/> </div> </el-dialog> + <el-dialog title="鏌ョ湅璁板綍" :visible.sync="historyDialogVisible" width="50%"> + <el-table + :data="historyList" + border + style="width: 100%"> + <el-table-column + prop="submitTime" + label="鎻愪氦鏃ユ湡" + width="150"> + </el-table-column> + <el-table-column + prop="submitUserName" + label="鎻愪氦浜�" + width="90"> + </el-table-column> + <el-table-column + prop="term" + label="瀹為獙闃舵" + width="120"> + </el-table-column> + <el-table-column + prop="note" + label="瀹為獙鎿嶄綔" + width="120"> + </el-table-column> + <el-table-column + prop="tell" + label="鍐嶆妫�楠屽師鍥�" + width="120"> + </el-table-column> + <el-table-column + fixed="right" + label="鎿嶄綔" + width="100"> + <template slot-scope="scope"> + <el-button @click="lookHistory(scope.row)" type="text" size="small">鏌ョ湅</el-button> + </template> + </el-table-column> + </el-table> + </el-dialog> + <input type="text" id="ScanCodeInfo" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;" autocomplete="off"></input> + <el-dialog title="鎵爜妫�楠�" :visible.sync="qrCodeVisible" width="350px"> + <el-row> + <el-col class="search_thing" :span="24"> + <div class="search_label" style="width: 90px"><span class="required-span">* </span>鏍峰搧缂栧彿锛�</div> + <div class="search_input"> + <el-input v-model="sampleCode" size="small"></el-input> + </div> + </el-col> + </el-row> + <el-tree :data="storageList" ref="tree" :props="{ children: 'warehouseShelfList', label: 'name' }" node-key="id" + :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" + @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" v-if="qrCodeVisible" + empty-text="鏆傛棤鏁版嵁"> + <div class="custom-tree-node" slot-scope="{ node, data }"> + <el-row> + <el-col :span="24"> + <span><i + :class="`node_i ${data.warehouseShelfList != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i> + {{ data.name }}</span> + </el-col> + </el-row> + </div> + </el-tree> + <span slot="footer" class="dialog-footer"> + <el-button @click="qrCodeVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="confirmStorage" :loading="upLoadStorage">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog title="鍑哄簱" :visible.sync="exportVisible" width="350px"> + <el-row> + <el-col class="search_thing" :span="24"> + <div class="search_label" style="width: 90px"><span class="required-span">* </span>鏍峰搧缂栧彿锛�</div> + <div class="search_input"> + <el-input v-model="sampleCode" size="small"></el-input> + </div> + </el-col> + </el-row> + <span slot="footer" class="dialog-footer"> + <el-button @click="exportVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="confirmExport" :loading="upLoadExport">纭� 瀹�</el-button> + </span> + </el-dialog> </div> </template> <script> import ValueTable from '../tool/value-table.vue' - import Inspection from '../do/b1-inspect-order-plan/Inspection.vue' + import Inspection from '../do/b1-inspect-order-plan/Inspection.vue' import { getYearAndMonthAndDays } from '../../util/date' @@ -324,6 +429,11 @@ }, data() { return { + currentHistory:{}, + historyDialogVisible:false, + historyList:[], + orderStateId:null, + version:null, examine: null, inspectorList: [],//妫�楠屼汉鍛樺垪琛� alone: false, @@ -450,6 +560,14 @@ disabFun: (row, index) => { return row.userName != null || row.checkName!=null } + }, { + id: '', + font: '鏌ョ湅璁板綍', + type: 'text', + method: 'claimFun', + disabFun: (row, index) => { + return !row.num1 || row.num1<2 + } } ], linkEvent: { @@ -502,7 +620,7 @@ loading:false, currentTime: null, sonLaboratoryList:[], - tableData: null, + tableData: [], page:{ current:1, size:20, @@ -523,7 +641,25 @@ label: '鏈嚭缁撴灉', type: 'info' }], - typeList:[] + typeList:[], + getInsProduct2:false, + claim:false, + review:false, + connect:false, + inspection:false, + isLook:false,//鏄惁鏄煡鐪嬪巻鍙查〉闈� + num1:null, + codeInfo:null, + startTime:null, + scanInsOrderState:false, + qrCodeVisible: false, + sampleCode: '', + storageList:[], + expandedKeys: [], + selectTree: [], + upLoadStorage: false, + exportVisible: false, + upLoadExport: false, } }, created() { @@ -531,6 +667,7 @@ this.getTypeDicts() this.getInsStateDicts() this.getAuthorizedPerson() + this.selectList() this.currentTime = getYearAndMonthAndDays() }, mounted() { @@ -540,7 +677,143 @@ this.initializeSortable(); } }, + watch:{ + qrCodeVisible(newVal){ + if(newVal){ + // this.$message.success('鎵爜锛氭墦寮�') + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + }else{ + // this.$message.warning('鎵爜锛氬叧闂�') + clearInterval(this.startTime) + this.sampleCode = '' + } + }, + exportVisible(newVal){ + if(newVal){ + // this.$message.success('鎵爜锛氭墦寮�') + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + }else{ + // this.$message.warning('鎵爜锛氬叧闂�') + clearInterval(this.startTime) + this.sampleCode = '' + } + }, + }, methods: { + selectList () { + this.$axios.get(this.$api.warehouse.selectWarehouse).then(res => { + this.warehouse = res.data + this.storageList = this.HaveJson(res.data).map(item=>{ + item.warehouseShelfList&&item.warehouseShelfList.length>0&&item.warehouseShelfList.map(m=>{ + let warehouseShelfList = []; + for (let i=1;i<m.row+1;i++){ + let warehouseShelfList0 = [] + for (let j=1;j<m.col+1;j++){ + warehouseShelfList0.push({ + name:j+' 鍒�', + id:j, + }) + } + warehouseShelfList.push({ + name:i+' 灞�', + id:i, + warehouseShelfList:warehouseShelfList0 + }) + } + m.warehouseShelfList = warehouseShelfList; + return m; + }) + return item; + }) + }) + }, + filterNode(value, data) { + if (!value) return true; + return data.label.indexOf(value) !== -1; + }, + handleNodeClick(val, node, el) { //鏍戠殑鍊� + this.selectTree[node.level-1] = val.id; + }, + nodeOpen(data, node, el) { + $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened') + this.selectTree[node.level-1] = data.id; + }, + nodeClose(data, node, el) { + $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder') + }, + // 鎵爜鎶ユ + confirmStorage() { + if (!this.sampleCode) { + this.$message.error('璇峰~鍐欐牱鍝佺紪鍙�') + return + } + if (this.selectTree.length < 4) { + this.$message.error('璇烽�夋嫨鏍峰搧鍏ュ簱浣嶇疆') + return + } + this.upLoadStorage = true; + this.$axios.post(this.$api.insOrderPlan.scanInsOrderState, { + trees: this.selectTree.join('-'), + sampleCode:this.sampleCode, + sonLaboratory: this.componentData.entity.sonLaboratory + }).then(res => { + this.upLoadStorage = false; + this.qrCodeVisible = false + this.sampleCode = ''; + this.selectTree = [] + if (res.code == 201) { + this.$message.error('娣诲姞澶辫触') + return + } + this.$message.success('娣诲姞鎴愬姛') + this.refreshTable() + }) + }, + // 纭鍑哄簱 + confirmExport () { + if (!this.sampleCode) { + this.$message.error('璇峰~鍐欐牱鍝佺紪鍙�') + return + } + this.upLoadExport = true; + this.$axios.post(this.$api.insOrderPlan.outInsOrderState, { + sampleCode:this.sampleCode, + sonLaboratory: this.componentData.entity.sonLaboratory + }).then(res => { + this.upLoadExport = false; + this.exportVisible = false + this.sampleCode = ''; + if (res.code == 201) { + this.$message.error('鍑哄簱澶辫触') + return + } + this.$message.success('鍑哄簱鎴愬姛') + this.handleShelf(this.entity.shelfId) + }) + }, + // 鎵爜鏋寜涓� + keyup(e){ + var code = '' + try{ + code = JSON.parse(this.codeInfo) + if(code==null||code==undefined||code==''){ + this.$message.error('璇ヤ簩缁寸爜鏈夎') + }else{ + this.sampleCode = code + } + }catch(e){ + this.$message.error('璇ヤ簩缁寸爜鏈夎') + } + this.codeInfo = null + }, // 鎷栨嫿 initializeSortable() { const tableBody = this.$refs.table0.$el.querySelector('.el-table__body-wrapper > table > tbody'); @@ -593,6 +866,8 @@ let review = false let claim = false let jumpTeam = false + // let getInsProduct2 = false + // let getInsOrderUserList = false for (var i = 0; i < power.length; i++) { if (power[i].menuMethod == 'doInsOrder') { inspection = true @@ -609,19 +884,33 @@ if (power[i].menuMethod == 'jumpTeam') { jumpTeam = true } + // if (power[i].menuMethod == 'getInsProduct2') { + // getInsProduct2 = true + // } + if (power[i].menuMethod == 'scanInsOrderState') { + this.scanInsOrderState = true + } } + // if (!getInsProduct2) { + // this.componentData.do.splice(5, 1) + // } if (!claim) { - this.componentData.do.splice(3, 1) + this.componentData.do.splice(4, 1) } if (!review) { - this.componentData.do.splice(2, 1) + this.componentData.do.splice(3, 1) } if (!connect) { - this.componentData.do.splice(1, 1) + this.componentData.do.splice(2, 1) } if (!inspection) { - this.componentData.do.splice(0, 1) + this.componentData.do.splice(1, 1) } + // this.getInsProduct2 = getInsProduct2 + this.claim = claim + this.review = review + this.connect = connect + this.inspection = inspection this.jumpTeam = jumpTeam }, changeCheckBox(val) { @@ -641,7 +930,7 @@ this.sampleUserForm = { entrustCode: row.entrustCode, insSampleId: row.id, - sonLaboratory: row.sonLaboratory, + sonLaboratory: row.sonLaboratory, } this.claimVisible = true } @@ -790,8 +1079,11 @@ inspectorList.push(user.name) } this.inspectorList = inspectorList - this.state = 1; this.orderId = row.id + this.version = row.version + this.orderStateId = row.orderStateId + this.state = 1; + this.isLook = false }, handleConnect(row){ this.orderId = row.id @@ -841,6 +1133,9 @@ handleReview(row){ this.state = 2; this.orderId = row.id + this.version = row.version + this.orderStateId = row.orderStateId + this.isLook = false }, getAuthorizedPerson() { this.$axios.get(this.$api.user.getUserMenu).then(res => { @@ -854,6 +1149,24 @@ this.personList = data }) }, + lookHistory0(row){ + this.currentHistory = row + this.$axios.post(this.$api.insOrderPlan.getInsOrderUserList, { + insOrderStateId:row.orderStateId, + }).then(res => { + this.historyList = res.data + this.historyDialogVisible = true + }) + }, + lookHistory(row){ + this.isLook = true + this.state = 2; + this.orderId = this.currentHistory.id + this.version = this.currentHistory.version + this.orderStateId = this.currentHistory.orderStateId + this.num1 = row.num + this.historyDialogVisible = false + } } } </script> -- Gitblit v1.9.3