From 8cda8919c95177c0789a8193799a980c1667a548 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期二, 18 二月 2025 13:31:03 +0800 Subject: [PATCH] 样品管理页面刷新 --- src/components/view/b1-inspect-order-plan.vue | 750 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 692 insertions(+), 58 deletions(-) diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue index c20f6ed..154f5a7 100644 --- a/src/components/view/b1-inspect-order-plan.vue +++ b/src/components/view/b1-inspect-order-plan.vue @@ -97,6 +97,24 @@ .view-self-checkbox { margin-left: 50px; } + .draggable-row { + 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{ @@ -126,6 +144,13 @@ </el-select> </div> </div> + <div class="search_thing"> + <div class="search_label">鏍峰搧缂栧彿锛�</div> + <div class="search_input"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="componentData.entity.sampleCOde" @keyup.enter.native="refreshTable()"></el-input> + </div> + </div> <div class="search_thing" style="padding-left: 30px;"> <el-button size="small" @click="refresh()">閲� 缃�</el-button> <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> @@ -134,7 +159,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('璇曢獙瀹�','')}} @@ -146,18 +171,124 @@ </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" v-if="selectWarehouse">鎵爜鎶ユ</el-button> + <el-button size="small" type="primary" @click="exportVisible=true" style="margin-right: 16px;" v-if="selectWarehouse">鍑哄簱</el-button> <span>鎬昏浠诲姟鏁伴噺:</span> - <span v-if="$refs.insOrderPlan != undefined">{{$refs.insOrderPlan.total}}</span> + <span>{{total}}</span> </div> </el-col> </el-row> </div> - <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" + <!-- <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" :isColumnWidth="true" :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData" @handleInspection="handleInspection" - :key="upIndex"/> + :key="upIndex"/> --> + <el-table + :data="tableData" + ref="table0" + border + style="width: 100%;" + height="calc(100% - 80px)" + :row-class-name="rowClassName" + v-loading="tableLoading" + row-key="orderStateId" + > + <el-table-column + prop="entrustCode" + label="濮旀墭缂栧彿" + width="140px" + > + <template slot-scope="scope"> + <el-button @click="selectAllByOne(scope.row)" type="text" size="small">{{ scope.row.entrustCode }}</el-button> + </template> + </el-table-column> + <el-table-column + prop="sample" + label="鏍峰搧鍚嶇О" + width="100px" + ></el-table-column> + <el-table-column + prop="sampleCode" + label="鏍峰搧缂栧彿" + width="170px" + ></el-table-column> + <el-table-column + prop="type" + label="绱ф�ョ▼搴�" + width="100px" + > + <template slot-scope="scope"> + <el-tag :type="typeList.find(m=>m.value==scope.row.type)?typeList.find(m=>m.value==scope.row.type).type:''" size="small">{{ typeList.find(m=>m.value==scope.row.type)?typeList.find(m=>m.value==scope.row.type).label:'' }}</el-tag> + </template> + </el-table-column> + <el-table-column + prop="insState" + label="鐘舵��" + width="100px" + > + <template slot-scope="scope"> + <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" + label="妫�楠屼汉" + width="140px" + ></el-table-column> + <el-table-column + prop="checkName" + label="澶嶆牳浜�" + width="100px" + ></el-table-column> + <el-table-column + prop="appointed" + label="绾﹀畾鏃堕棿" + width="120px" + ></el-table-column> + <el-table-column + prop="sendTime" + label="涓嬪彂鏃堕棿" + width="160px" + ></el-table-column> + <el-table-column + prop="insTime" + label="妫�楠屽紑濮嬫椂闂�" + width="160px" + ></el-table-column> + <el-table-column + prop="submitTime" + label="妫�楠岀粨鏉熸椂闂�" + width="160px" + ></el-table-column> + <el-table-column + prop="verifyTell" + label="鐞嗙敱" + width="150px" + ></el-table-column> + <el-table-column + fixed="right" + align="center" label="鎿嶄綔" + width="340px" + > + <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))" 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="cancelSubmitPlan(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState != 3 ||(scope.row.userName&&!scope.row.userName.includes(userName))" v-if="inspection">鎾ら攢</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">鏌ョ湅璁板綍</el-button> + </template> + </el-table-column> + </el-table> + <div style="display: flex;justify-content: flex-end;width: 100%;margin-top: 10px;"> + <span></span> + <el-pagination @size-change="refreshTable" @current-change="refreshTable" :current-page="page.current" + :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> </div> </div> <el-dialog title="鎻愮ず" :visible.sync="claimVisible" width="400px"> @@ -181,7 +312,7 @@ </el-select> </div> </div> - <div class="search_thing"> + <!-- <div class="search_thing"> <div class="search_label" style="width:90px"><span class="required-span">* </span>璇曢獙瀹わ細</div> <div class="search_input"> <el-select v-model="connect.sonLaboratory" placeholder="璇烽�夋嫨" style="width: 100%;" filterable> @@ -193,33 +324,138 @@ </el-option> </el-select> </div> - </div> + </div> --> <span slot="footer" class="dialog-footer"> <el-button @click="connectVisible = false">鍙� 娑�</el-button> <el-button type="primary" @click="confirmConnect" :loading="loading">纭� 瀹�</el-button> </span> </el-dialog> <div style="width: 100%;height: 100%;" v-if="activeFace >0"> - <Add :active="activeFace" :currentId="currentId"/> + <Add :active="activeFace" :currentId="currentId" :examine="examine"/> </div> - <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :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" :orderId0="orderId0" :userInfo="userInfo" ref="Inspection" /> <el-dialog title="鏁版嵁鏌ョ湅" :visible.sync="dataDialogVisible" width="80%"> <div style="height: 70vh;overflow-y: auto;" v-if="dataDialogVisible"> - <ValueTable ref="ValueTableDataLook" :url="$api.insOrder.selectSampleAndProductByOrderId" + <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="鎻愪氦鏃ユ湡" + min-width="150"> + </el-table-column> + <el-table-column + prop="submitUserName" + label="鎻愪氦浜�" + min-width="90"> + </el-table-column> + <el-table-column + prop="term" + label="瀹為獙闃舵" + min-width="120"> + </el-table-column> + <el-table-column + prop="note" + label="瀹為獙鎿嶄綔" + min-width="120"> + </el-table-column> + <el-table-column + prop="tell" + label="鍐嶆妫�楠屽師鍥�" + min-width="120"> + </el-table-column> + <el-table-column + fixed="right" + label="鎿嶄綔" + min-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> + <el-dialog title="鎵爜妫�楠�" :visible.sync="qrCodeVisible" width="400px"> + <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" clearable :disabled="sampleCodeBtnDisabled"> + <el-tooltip :content="sampleCodeBtnDisabled?'鎵嬪姩杈撳叆':'鎵爜鏋緭鍏�'" placement="top" slot="append"> + <el-button type="primary" icon="el-icon-edit" @click="sampleCodeBtnDisabled=!sampleCodeBtnDisabled"></el-button> + </el-tooltip> + </el-input> + </div> + </el-col> + <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="entrustCode" size="small" clearable :disabled="sampleCodeBtnDisabled"> + </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="400px"> + <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" clearable :disabled="sampleCodeBtnDisabled"> + <el-tooltip :content="sampleCodeBtnDisabled?'鎵嬪姩杈撳叆':'鎵爜鏋緭鍏�'" placement="top" slot="append"> + <el-button type="primary" icon="el-icon-edit" @click="sampleCodeBtnDisabled=!sampleCodeBtnDisabled"></el-button> + </el-tooltip> + </el-input> + </div> + </el-col> + <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="entrustCode" size="small" clearable :disabled="sampleCodeBtnDisabled"> + </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> + <input id="ScanCodeInfo" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;"></input> </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' import Add from '../do/b1-ins-order/add.vue' -import { CellGroup } from 'iview' + import Sortable from 'sortablejs'; export default { components: { ValueTable, @@ -228,6 +464,13 @@ }, data() { return { + currentHistory:{}, + historyDialogVisible:false, + historyList:[], + orderStateId:null, + version:null, + examine: null, + inspectorList: [],//妫�楠屼汉鍛樺垪琛� alone: false, sampleUserForm: { entrustCode: null, @@ -263,6 +506,10 @@ value: 0, label: '涓嶅悎鏍�', type: 'danger' + },{ + value: 3, + label: '涓嶅垽瀹�', + type: '' }] } }, @@ -291,8 +538,10 @@ entity: { sonLaboratory: null, insState: null, - userId: null + userId: null, + sampleCode:null, }, + sortable:true, isIndex: true, showSelect: false, select: false, @@ -303,21 +552,21 @@ font: '鏁版嵁鏌ョ湅', type: 'text', method: 'handleDataLook', - disabFun: (row, index) => { - const user = JSON.parse(localStorage.getItem('user')) - let currentUserName = '' - if(user){ - currentUserName = user.name - } - return row.userName!=currentUserName && row.checkName!=currentUserName - } + //disabFun: (row, index) => { + //const user = JSON.parse(localStorage.getItem('user')) + // let currentUserName = '' + // if(user){ + // currentUserName = user.name + //} + //return row.userName.indexOf(currentUserName)<0 && row.checkName.indexOf(currentUserName)<0 + //} },{ id: '', font: '妫�楠�', type: 'text', method: 'handleInspection', disabFun: (row, index) => { - return row.userName == null || row.insState == 3 || row.insState == 5||(row.userName&&!row.userName.includes(JSON.parse(localStorage.getItem("user")).name)) + return row.userName == null || row.insState == 3 || row.insState == 5||row.insState == 6||(row.userName&&!row.userName.includes(JSON.parse(localStorage.getItem("user")).name)) } // disabFun: (row, index) => { // return row.userId == null || row.insState == 3 || row.insState == 5 @@ -328,7 +577,7 @@ type: 'text', method: 'handleConnect', disabFun: (row, index) => { - return row.userName == null || row.insState == 5 || row.insState == 3||(row.userName&&!row.userName.includes(JSON.parse(localStorage.getItem("user")).name)) + return row.userName == null || row.insState == 5 || row.insState == 3||row.insState == 6||(row.userName&&!row.userName.includes(JSON.parse(localStorage.getItem("user")).name)) } }, { @@ -346,6 +595,14 @@ method: 'claimFun', 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 } } ], @@ -381,6 +638,7 @@ requiredAdd: [], requiredUp: [] }, + userName:JSON.parse(localStorage.getItem("user")).name, upIndex: 0, planTotal: 0, insStateList: [], @@ -388,18 +646,114 @@ activeFace: 0, //1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0 currentId: null, entityCopy: {}, - orderId: 0, + orderId: null, + orderId0:null, personList:[], connectVisible:false, connect:{ connectPerson:'', - sonLaboratory:'' + // sonLaboratory:'' }, loading:false, currentTime: null, - sonLaboratoryList:[] + sonLaboratoryList:[], + tableData: [], + page:{ + current:1, + size:20, + }, + total:0, + tableLoading:false, + jumpTeam:false, + insResultList:[{ + value: 0, + label: '涓嶅悎鏍�', + type: 'danger' + },{ + value: 1, + label: '鍚堟牸', + type: 'success' + },{ + value: '', + label: '鏈嚭缁撴灉', + type: 'info' + }], + typeList:[], + getInsProduct2:false, + claim:false, + review:false, + connect:false, + inspection:false, + isLook:false,//鏄惁鏄煡鐪嬪巻鍙查〉闈� + num1:null, + codeInfo:null, + startTime:null, + scanInsOrderState:false, + qrCodeVisible: false, + sampleCode: '', + entrustCode:'', + storageList:[], + expandedKeys: [], + selectTree: [], + upLoadStorage: false, + exportVisible: false, + upLoadExport: false, + selectWarehouse:false, + userInfo:{ + name:[], + ids:[] + }, + sampleCodeBtnDisabled:true, } }, + watch:{ + qrCodeVisible(newVal){ + if(newVal){ + // this.$message.success('鎵爜锛氭墦寮�') + this.selectList() + this.sampleCode = null + this.entrustCode = null + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + }else{ + // this.$message.warning('鎵爜锛氬叧闂�') + clearInterval(this.startTime) + this.sampleCodeBtnDisabled=true + } + }, + exportVisible(newVal){ + if(newVal){ + // this.$message.success('鎵爜锛氭墦寮�') + this.sampleCode = null + this.entrustCode = null + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + }else{ + // this.$message.warning('鎵爜锛氬叧闂�') + clearInterval(this.startTime) + this.sampleCodeBtnDisabled=true + } + }, + sampleCodeBtnDisabled(val){ + if(!val){ + this.startTime&&clearInterval(this.startTime) + }else if(this.exportVisible||this.qrCodeVisible){ + // this.sampleCode = null + // this.entrustCode = null + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + } + } + }, created() { this.getLaboratoryDicts() this.getTypeDicts() @@ -410,8 +764,188 @@ mounted() { this.entityCopy = this.HaveJson(this.componentData.entity) this.getPower() + if(this.jumpTeam){ + this.initializeSortable(); + } }, 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 = []; + let warehouseShelfList0 = [] + let warehouseCellList = m.warehouseCellList?m.warehouseCellList:[] + warehouseCellList.forEach(a=>{ + if(warehouseShelfList.find(n=>n.id==a.row)){ + warehouseShelfList0.push({ + name:a.col+'鍒�', + id:a.col + }) + }else if(warehouseShelfList.length==0){ + warehouseShelfList.push({ + name:a.row+'灞�', + id:a.row + }) + warehouseShelfList0.push({ + name:a.col+'鍒�', + id:a.col + }) + }else if(!warehouseShelfList.find(n=>n.id==a.row)){ + warehouseShelfList[warehouseShelfList.length-1].warehouseShelfList = JSON.parse(JSON.stringify(warehouseShelfList0)) + warehouseShelfList0 = [] + warehouseShelfList.push({ + name:a.row+'灞�', + id:a.row + }) + warehouseShelfList0.push({ + name:a.col+'鍒�', + id:a.col + }) + } + }) + warehouseShelfList[warehouseShelfList.length-1].warehouseShelfList = JSON.parse(JSON.stringify(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.entrustCode) { + 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, + entrustCode:this.entrustCode, + sonLaboratory: this.componentData.entity.sonLaboratory + }).then(res => { + this.upLoadStorage = false; + this.qrCodeVisible = false + this.sampleCode = ''; + this.entrustCode = ''; + this.selectTree = [] + if (res.code == 201) { + this.$message.error('娣诲姞澶辫触') + return + } + this.$message.success('娣诲姞鎴愬姛') + this.refreshTable() + }) + }, + // 纭鍑哄簱 + confirmExport () { + if (!this.sampleCode) { + this.$message.error('璇峰~鍐欐牱鍝佺紪鍙�') + return + } + if (!this.entrustCode) { + this.$message.error('璇峰~鍐欒鍗曠紪鍙�') + return + } + this.upLoadExport = true; + this.$axios.post(this.$api.insOrderPlan.outInsOrderState, { + sampleCode:this.sampleCode, + entrustCode:this.entrustCode, + sonLaboratory: this.componentData.entity.sonLaboratory + }).then(res => { + this.upLoadExport = false; + this.exportVisible = false + this.sampleCode = ''; + this.entrustCode = ''; + if (res.code == 201) { + this.$message.error('鍑哄簱澶辫触') + return + } + this.$message.success('鍑哄簱鎴愬姛') + this.handleShelf(this.entity.shelfId) + }) + }, + // 鎵爜鏋寜涓� + keyup(e){ + var codeInfo = null + try{ + console.log(2222,this.codeInfo) + codeInfo = JSON.parse(this.codeInfo) + if(!codeInfo||codeInfo.sampleCode==undefined||codeInfo.entrustCode==undefined){ + this.$message.error('璇ヤ簩缁寸爜鏈夎') + }else{ + this.sampleCode = codeInfo.sampleCode + this.entrustCode = codeInfo.entrustCode + } + }catch(e){ + this.$message.error('璇疯皟鑷宠嫳鏂囬敭鐩�') + console.log(e) + } + this.codeInfo = null + }, + // 鎷栨嫿 + initializeSortable() { + const tableBody = this.$refs.table0.$el.querySelector('.el-table__body-wrapper > table > tbody'); + if (tableBody) { + Sortable.create(tableBody, { + handle: '.el-table__row', // 鎷栧姩鎵嬫焺 + animation: 200, + onEnd: this.handleSortEnd, + }); + } else { + console.error('Table body not found.'); + } + }, + handleSortEnd(evt) { + const oldIndex = evt.oldIndex; + const newIndex = evt.newIndex; + const movedItem = this.tableData[oldIndex]; + if (oldIndex !== newIndex) { + this.tableData.splice(oldIndex, 1); + this.tableData.splice(newIndex, 0, movedItem); + } + this.upIndex++ + this.$axios.post(this.$api.insOrderPlan.jumpTeam, + { + id: movedItem.orderStateId, + sort: newIndex+1, + ...this.page + }, { + headers: { + 'Content-Type': 'application/json' + } + } + ).then(res => { + + }) + }, + rowClassName({ row, rowIndex }) { + return 'draggable-row'; + }, // 鏁版嵁鏌ョ湅 handleDataLook(row) { this.componentDataDataLook.entity.id = row.id @@ -424,6 +958,9 @@ let connect = false 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 @@ -437,19 +974,40 @@ if (power[i].menuMethod == 'claimInsOrderPlan') { claim = true } + if (power[i].menuMethod == 'jumpTeam') { + jumpTeam = true + } + // if (power[i].menuMethod == 'getInsProduct2') { + // getInsProduct2 = true + // } + if (power[i].menuMethod == 'scanInsOrderState') { + this.scanInsOrderState = true + } + if (power[i].menuMethod == 'scanInsOrderState') { + this.selectWarehouse = 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) { this.componentData.entity.userId = val?0:null @@ -467,7 +1025,7 @@ if (row) { this.sampleUserForm = { entrustCode: row.entrustCode, - insSampleId: row.id, + insSampleId: row.sampleId, sonLaboratory: row.sonLaboratory, } this.claimVisible = true @@ -475,24 +1033,41 @@ }, confirmClaim() { this.loading = true; + // this.sampleUserForm.insSampleId = this.orderId this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, { headers: { 'Content-Type': 'application/json' - } - }).then(res => { + }, + noQs:true + },).then(res => { if (res.code === 200 && res.data) { this.loading = false; this.$message.success("璁ら鎴愬姛") this.claimVisible = false this.refreshTable('page') + } else { + this.loading = false; } }).catch(error => { console.error(error) this.loading = false; }) }, - refreshTable(e) { - this.$refs.insOrderPlan.selectList(e) + refreshTable() { + this.tableLoading = true + this.$axios.post(this.$api.insOrderPlan.selectInsOrderPlanList,{ + entity:this.componentData.entity, + page:this.page + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then((res) => { + this.tableLoading = false + this.total = res.data.body.total + this.tableData = res.data.body.records + // this.$refs.table0.doLayout() + }) }, changeRowClass({ row, @@ -541,6 +1116,7 @@ } }) this.componentData.tagField.type.select = data + this.typeList = data }) }, getInsStateDicts() { @@ -580,6 +1156,7 @@ }, selectAllByOne(row) { this.activeFace = 2; + this.examine = 1; this.currentId = parseInt(row.id) }, playOrder(num) { @@ -590,42 +1167,76 @@ this.refreshTable('page') }, handleInspection(row){ + //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃 + let inspectorList = [] + if(row.userName){ + inspectorList = row.userName.split(',') + } + let user = JSON.parse(localStorage.getItem('user')) + if(user){ + inspectorList.push(user.name) + } + this.inspectorList = inspectorList + this.orderId = row.sampleId + this.orderId0 = row.id + this.version = row.version + this.orderStateId = row.orderStateId this.state = 1; - this.orderId = row.id + this.userInfo.name = row.userName.split(',') + this.userInfo.ids = row.userNameId.split(',') + this.isLook = false }, handleConnect(row){ - this.orderId = row.id + this.orderId = row.sampleId + this.orderId0 = row.id this.connect = {} this.connectVisible=true; - this.$axios.post(this.$api.insOrderPlan.upPlanUser2, { - orderId:this.orderId, - }).then(res => { - if (res.code === 200&&res.data.length>0) { - this.sonLaboratoryList = []; - res.data.forEach(m=>{ - this.sonLaboratoryList.push({ - value:m, - label:m - }) - }) - this.connect.sonLaboratory = this.sonLaboratoryList[0].value - } - }) + // this.$axios.post(this.$api.insOrderPlan.upPlanUser2, { + // orderId:this.orderId, + // }).then(res => { + // if (res.code === 200&&res.data.length>0) { + // this.sonLaboratoryList = []; + // res.data.forEach(m=>{ + // this.sonLaboratoryList.push({ + // value:m, + // label:m + // }) + // }) + // // this.connect.sonLaboratory = this.sonLaboratoryList[0].value + // } + // }) + }, + cancelSubmitPlan(row){ + this.$confirm('纭畾鎾ら攢姝ゆ妫�楠屾彁浜�?', "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + this.$axios.post(this.$api.insOrderPlan.cancelSubmitPlan, { + orderStateId: row.orderStateId + }).then(res => { + if(res.code==201){ + return + } + this.$message.success("鎿嶄綔鎴愬姛") + this.refreshTable('page') + }).catch(() => {}) + }).catch(() => {}) }, confirmConnect(){ if(this.connect.connectPerson==null||this.connect.connectPerson==''||this.connect.connectPerson==undefined){ this.$message.error('鏈�夋嫨浜ゆ帴浜哄憳') return } - if(this.connect.sonLaboratory==null||this.connect.sonLaboratory==''||this.connect.sonLaboratory==undefined){ - this.$message.error('鏈�夋嫨璇曢獙瀹�') - return - } + // if(this.connect.sonLaboratory==null||this.connect.sonLaboratory==''||this.connect.sonLaboratory==undefined){ + // this.$message.error('鏈�夋嫨璇曢獙瀹�') + // return + // } this.loading = true; this.$axios.post(this.$api.insOrderPlan.upPlanUser, { - orderId:this.orderId, + sampleId:this.orderId, userId:this.connect.connectPerson, - sonLaboratory:this.connect.sonLaboratory, + sonLaboratory:this.componentData.entity.sonLaboratory, }).then(res => { if (res.code === 200) { this.loading = false; @@ -640,7 +1251,11 @@ }, handleReview(row){ this.state = 2; - this.orderId = row.id + this.orderId = row.sampleId + this.orderId0 = row.id + this.version = row.version + this.orderStateId = row.orderStateId + this.isLook = false }, getAuthorizedPerson() { this.$axios.get(this.$api.user.getUserMenu).then(res => { @@ -654,6 +1269,25 @@ 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.sampleId + this.orderId0 = 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