| | |
| | | <style scoped> |
| | | .ins-order-plan-main .title { |
| | | font-size: 20px; |
| | | color: #3A7BFA |
| | | } |
| | | .ins-order-plan-main .title { |
| | | font-size: 20px; |
| | | color: #3A7BFA |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 120px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | .search_label { |
| | | width: 120px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .ins-order-plan-main .search { |
| | | width: 100%; |
| | | margin-bottom: 10px; |
| | | height: 80px; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | .ins-order-plan-main .search { |
| | | width: 100%; |
| | | margin-bottom: 10px; |
| | | height: 80px; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | .search .form-inline { |
| | | height: 50px; |
| | | padding-top: 20px; |
| | | padding-left: 50px; |
| | | } |
| | | .search .form-inline { |
| | | height: 50px; |
| | | padding-top: 20px; |
| | | padding-left: 50px; |
| | | } |
| | | |
| | | .ins-order-plan-main .center { |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 40px); |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | padding: 20px; |
| | | } |
| | | .ins-order-plan-main .center { |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 40px); |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | padding: 20px; |
| | | } |
| | | |
| | | .ins-order-plan-main .center .value-table { |
| | | width: 100%; |
| | | height: calc(100% - 68px); |
| | | } |
| | | .ins-order-plan-main .center .value-table { |
| | | width: 100%; |
| | | height: calc(100% - 68px); |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | } |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | } |
| | | |
| | | .tab li { |
| | | line-height: 24px; |
| | | padding: 6px 14px; |
| | | font-size: 14px; |
| | | color: #333333; |
| | | border: 1px solid #EEEEEE; |
| | | cursor: pointer; |
| | | } |
| | | .tab li { |
| | | line-height: 24px; |
| | | padding: 6px 14px; |
| | | font-size: 14px; |
| | | color: #333333; |
| | | border: 1px solid #EEEEEE; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .tab li:nth-child(1) { |
| | | border-radius: 8px 0 0 8px; |
| | | } |
| | | .tab li:nth-child(1) { |
| | | border-radius: 8px 0 0 8px; |
| | | } |
| | | |
| | | .tab li:nth-last-child(1) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | .tab li:nth-last-child(1) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | |
| | | .tab li.active { |
| | | border-color: #3A7BFA; |
| | | color: #3A7BFA; |
| | | } |
| | | .tab li.active { |
| | | border-color: #3A7BFA; |
| | | color: #3A7BFA; |
| | | } |
| | | |
| | | .center .center-options .center-title { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: right; |
| | | } |
| | | .center .center-options .center-title { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: right; |
| | | } |
| | | |
| | | .center .center-options .center-title span:last-child { |
| | | color: #3A7BFA; |
| | | font-size: 23px; |
| | | font-weight: 400; |
| | | } |
| | | .center .center-options .center-title span:last-child { |
| | | color: #3A7BFA; |
| | | font-size: 23px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .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; |
| | | } |
| | | .view-self-checkbox { |
| | | margin-left: 50px; |
| | | } |
| | | |
| | | .custom-tree-node:hover .el-button { |
| | | opacity: 1; |
| | | } |
| | | .el-dialog { |
| | | position: relative; |
| | | } |
| | | .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{ |
| | | color: #000; |
| | | } |
| | | .ins-order-plan-main .el-form-item__label { |
| | | color: #000; |
| | | } |
| | | |
| | | .ins-order-plan-main .el-table th.el-table__cell>.cell{ |
| | | height: 46px; |
| | | line-height: 30px; |
| | | } |
| | | .ins-order-plan-main .el-table th.el-table__cell>.cell { |
| | | height: 46px; |
| | | line-height: 30px; |
| | | } |
| | | </style> |
| | | <template> |
| | | <div class="ins-order-plan-main"> |
| | | <div v-show="activeFace == 0&&state==0" style="height: 100%;"> |
| | | <p style="font-size: 16px;padding-left: 20px;text-align: left;height: 60px;line-height: 60px;">检验任务</p> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">委托编号:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | | v-model="componentData.entity.entrustCode" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">检验状态:</div> |
| | | <div class="search_input"> |
| | | <el-select size="small" v-model="componentData.entity.insState" style="width: 100%;" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in insStateList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="ins-order-plan-main"> |
| | | <div v-show="activeFace == 0 && state == 0" style="height: 100%;"> |
| | | <p style="font-size: 16px;padding-left: 20px;text-align: left;height: 60px;line-height: 60px;">检验任务</p> |
| | | <div class="search"> |
| | | <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> |
| | | </div> |
| | | </div> |
| | | <div class="center"> |
| | | <div class="center-options"> |
| | | <el-row> |
| | | <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('试验室','')}} |
| | | </li> |
| | | </ul> |
| | | <div> |
| | | <el-checkbox @change="changeCheckBox" class="view-self-checkbox" |
| | | v-model="alone"><span>我的任务</span></el-checkbox> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <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>{{total}}</span> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" |
| | | <div class="search_label">委托编号:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | | v-model="componentData.entity.entrustCode" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">检验状态:</div> |
| | | <div class="search_input"> |
| | | <el-select size="small" v-model="componentData.entity.insState" style="width: 100%;" |
| | | @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in insStateList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </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> |
| | | </div> |
| | | </div> |
| | | <div class="center"> |
| | | <div class="center-options"> |
| | | <el-row> |
| | | <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('试验室', '') }} |
| | | </li> |
| | | </ul> |
| | | <div> |
| | | <el-checkbox @change="changeCheckBox" class="view-self-checkbox" |
| | | v-model="alone"><span>我的任务</span></el-checkbox> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <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>{{ total }}</span> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" |
| | | :isColumnWidth="true" |
| | | :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData" @handleInspection="handleInspection" |
| | | :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" |
| | | > |
| | | <el-table :data="tableData" ref="table0" border style="width: 100%;" height="calc(100% - 80px)" |
| | | :row-class-name="rowClassName" v-loading="tableLoading" row-key="orderStateId" @sort-change="sortChange"> |
| | | <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> |
| | | <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" |
| | | > |
| | | <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> |
| | | <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> |
| | | <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 prop="userName" label="检验人" width="140px"></el-table-column> |
| | | <el-table-column prop="checkName" label="复核人" width="100px"></el-table-column> |
| | | <el-table-column prop="createTime" label="报检时间" width="120px" sortable></el-table-column> |
| | | <el-table-column prop="appointed" label="约定时间" width="120px" sortable></el-table-column> |
| | | <el-table-column prop="sendTime" label="下发时间" width="160px" sortable></el-table-column> |
| | | <el-table-column prop="insTime" label="检验开始时间" width="160px" sortable></el-table-column> |
| | | <el-table-column prop="submitTime" label="检验结束时间" width="160px" sortable></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="handleReview0(scope.row)" type="text" size="small" |
| | | :disabled="scope.row.userName == null || (scope.row.insState != 4 && scope.row.insState != 5 && scope.row.insState != 6)" |
| | | v-if="verifyPlan2">纠正复核</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 @size-change="m => refreshTable('size', m)" @current-change="m => refreshTable('current', m)" |
| | | :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"> |
| | | 是否认领委托编号<span style="color:#33C130">{{sampleUserForm.entrustCode}}</span>的任务 |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="claimVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="confirmClaim" :loading="loading">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | <el-dialog title="提示" :visible.sync="claimVisible" width="400px"> |
| | | 是否认领委托编号<span style="color:#33C130">{{ sampleUserForm.entrustCode }}</span>的任务 |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="claimVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="confirmClaim" :loading="loading">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="检验交接" :visible.sync="connectVisible" width="400px"> |
| | | <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.connectPerson" placeholder="请选择" style="width: 100%;" filterable> |
| | | <el-option |
| | | v-for="item in personList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | </el-select> |
| | | </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" :examine="examine"/> |
| | | </div> |
| | | <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" :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> |
| | | <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" :examine="examine" /> |
| | | </div> |
| | | <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" :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 :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-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="暂无数据"> |
| | | :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> |
| | | :class="`node_i ${data.warehouseShelfList != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i> |
| | | {{ data.name }}</span> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <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 :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-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> |
| | | <el-dialog title="纠正复核" :visible="upInsReviewDia" width="600px" :close-on-click-modal="false" :show-close="false"> |
| | | <el-radio-group v-model="verifyPlanInfo.type" style="display: flex;flex-direction: column" v-if="upInsReviewDia"> |
| | | <el-radio :label="1" style="margin: 10px 0; " :inert="false">继续测试下一个样品或其他站点任务</el-radio> |
| | | <el-radio :label="0" style="margin: 10px 0; " :inert="false">再次检验该样品</el-radio> |
| | | <el-radio :label="2" style="margin: 10px 0; " :inert="false">此委托单结束</el-radio> |
| | | <p style="font-size: 12px;color:red"> |
| | | 慎重:如果还有其他样品在检,点击结束可能会中断,请确保所有样品都检验且复核完成再点击 |
| | | </p> |
| | | </el-radio-group> |
| | | <p style="margin-top: 16px;margin-bottom: 6px;"><span style="color:red;margin-right: 4px;">*</span>纠正原因:</p> |
| | | <el-input type="textarea" :rows="2" placeholder="请输入" v-model="verifyPlanInfo.tell"> |
| | | </el-input> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="upInsReviewDia = false">取 消</el-button> |
| | | <el-button type="primary" @click="upInsReview" :loading="reviewLoading">确 定</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 { |
| | | getYearAndMonthAndDays |
| | | } from '../../util/date' |
| | | import Add from '../do/b1-ins-order/add.vue' |
| | | import Sortable from 'sortablejs'; |
| | | export default { |
| | | components: { |
| | | ValueTable, |
| | | Inspection, |
| | | Add |
| | | }, |
| | | data() { |
| | | return { |
| | | currentHistory:{}, |
| | | historyDialogVisible:false, |
| | | historyList:[], |
| | | orderStateId:null, |
| | | version:null, |
| | | examine: null, |
| | | inspectorList: [],//检验人员列表 |
| | | alone: false, |
| | | sampleUserForm: { |
| | | entrustCode: null, |
| | | insSampleId: null, |
| | | userId: null |
| | | }, |
| | | claimVisible: false, |
| | | tabList: [], |
| | | active: 1, |
| | | tabIndex: 0, |
| | | componentDataDataLook: { |
| | | entity: { |
| | | id: 0, |
| | | orderBy: { |
| | | field: 'sampleCode', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: false, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [], |
| | | tagField: { |
| | | insState: { |
| | | select: [] |
| | | }, |
| | | insResult: { |
| | | select: [{ |
| | | value: 1, |
| | | label: '合格', |
| | | type: 'success' |
| | | },{ |
| | | value: 0, |
| | | label: '不合格', |
| | | type: 'danger' |
| | | },{ |
| | | value: 3, |
| | | label: '不判定', |
| | | type: '' |
| | | }] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | spanConfig:{ |
| | | rows:[ |
| | | { |
| | | name:'sampleCode', |
| | | index:0 |
| | | }, |
| | | { |
| | | name:'sample', |
| | | index:1 |
| | | }, |
| | | { |
| | | name:'model', |
| | | index:5 |
| | | } |
| | | ] |
| | | import ValueTable from '../tool/value-table.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 Sortable from 'sortablejs'; |
| | | export default { |
| | | components: { |
| | | ValueTable, |
| | | Inspection, |
| | | Add |
| | | }, |
| | | data() { |
| | | return { |
| | | currentHistory: {}, |
| | | historyDialogVisible: false, |
| | | historyList: [], |
| | | orderStateId: null, |
| | | version: null, |
| | | examine: null, |
| | | inspectorList: [],//检验人员列表 |
| | | alone: false, |
| | | sampleUserForm: { |
| | | entrustCode: null, |
| | | insSampleId: null, |
| | | userId: null |
| | | }, |
| | | claimVisible: false, |
| | | tabList: [], |
| | | active: 1, |
| | | tabIndex: 0, |
| | | componentDataDataLook: { |
| | | entity: { |
| | | id: 0, |
| | | orderBy: { |
| | | field: 'sampleCode', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: false, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [], |
| | | tagField: { |
| | | insState: { |
| | | select: [] |
| | | }, |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | dataDialogVisible: false, |
| | | componentData: { |
| | | entity: { |
| | | sonLaboratory: null, |
| | | insState: null, |
| | | userId: null, |
| | | sampleCode:null, |
| | | }, |
| | | sortable:true, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | init: false, |
| | | needSort: ['createTime', 'sendTime', 'type', 'appointed', 'insState'], |
| | | do: [{ |
| | | id: '', |
| | | 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.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.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 |
| | | // } |
| | | }, { |
| | | id: '', |
| | | font: '交接', |
| | | type: 'text', |
| | | method: 'handleConnect', |
| | | disabFun: (row, index) => { |
| | | return row.userName == null || row.insState == 5 || row.insState == 3||row.insState == 6||(row.userName&&!row.userName.includes(JSON.parse(localStorage.getItem("user")).name)) |
| | | } |
| | | }, |
| | | { |
| | | id: '', |
| | | font: '复核', |
| | | type: 'text', |
| | | method: 'handleReview', |
| | | disabFun: (row, userName) => { |
| | | return row.userName == null || row.insState != 3 ||(row.checkName&&!row.checkName.includes(JSON.parse(localStorage.getItem("user")).name)) |
| | | } |
| | | }, { |
| | | id: '', |
| | | font: '认领', |
| | | type: 'text', |
| | | 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 |
| | | } |
| | | } |
| | | ], |
| | | linkEvent: { |
| | | entrustCode: { |
| | | method: 'selectAllByOne' |
| | | } |
| | | }, |
| | | tagField: { |
| | | type: { |
| | | select: [] |
| | | }, |
| | | insState: { |
| | | select: [] |
| | | }, |
| | | insResult: { |
| | | select: [{ |
| | | value: 0, |
| | | label: '不合格', |
| | | type: 'danger' |
| | | },{ |
| | | value: 1, |
| | | label: '合格', |
| | | type: 'success' |
| | | },{ |
| | | value: '', |
| | | label: '未出结果', |
| | | type: 'info' |
| | | }] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | userName:JSON.parse(localStorage.getItem("user")).name, |
| | | upIndex: 0, |
| | | planTotal: 0, |
| | | insStateList: [], |
| | | state:0,//0:台账页,1:检验页面,2检验页面(复核),默认为0 |
| | | activeFace: 0, //1:下单,2:查看,3:审核,默认为0 |
| | | currentId: null, |
| | | entityCopy: {}, |
| | | orderId: null, |
| | | orderId0:null, |
| | | personList:[], |
| | | connectVisible:false, |
| | | connect:{ |
| | | connectPerson:'', |
| | | // sonLaboratory:'' |
| | | insResult: { |
| | | select: [{ |
| | | value: 1, |
| | | label: '合格', |
| | | type: 'success' |
| | | }, { |
| | | value: 0, |
| | | label: '不合格', |
| | | type: 'danger' |
| | | }, { |
| | | value: 3, |
| | | label: '不判定', |
| | | type: '' |
| | | }] |
| | | } |
| | | }, |
| | | loading:false, |
| | | currentTime: null, |
| | | sonLaboratoryList:[], |
| | | tableData: [], |
| | | page:{ |
| | | current:1, |
| | | size:20, |
| | | selectField: {}, |
| | | spanConfig: { |
| | | rows: [ |
| | | { |
| | | name: 'sampleCode', |
| | | index: 0 |
| | | }, |
| | | { |
| | | name: 'sample', |
| | | index: 1 |
| | | }, |
| | | { |
| | | name: 'model', |
| | | index: 5 |
| | | } |
| | | ] |
| | | }, |
| | | 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.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 |
| | | } |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | 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 |
| | | dataDialogVisible: false, |
| | | componentData: { |
| | | entity: { |
| | | sonLaboratory: null, |
| | | insState: null, |
| | | userId: null, |
| | | sampleCode: null, |
| | | orderBy: { |
| | | field: 'createTime,appointed,sendTime,insTime,submitTime', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | sortable: true, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | init: false, |
| | | needSort: ['createTime', 'sendTime', 'type', 'appointed', 'insState'], |
| | | do: [{ |
| | | id: '', |
| | | 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.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.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 |
| | | // } |
| | | }, { |
| | | id: '', |
| | | font: '交接', |
| | | type: 'text', |
| | | method: 'handleConnect', |
| | | disabFun: (row, index) => { |
| | | return row.userName == null || row.insState == 5 || row.insState == 3 || row.insState == 6 || (row.userName && !row.userName.includes(JSON.parse(localStorage.getItem("user")).name)) |
| | | } |
| | | }, |
| | | { |
| | | id: '', |
| | | font: '复核', |
| | | type: 'text', |
| | | method: 'handleReview', |
| | | disabFun: (row, userName) => { |
| | | return row.userName == null || row.insState != 3 || (row.checkName && !row.checkName.includes(JSON.parse(localStorage.getItem("user")).name)) |
| | | } |
| | | }, { |
| | | id: '', |
| | | font: '认领', |
| | | type: 'text', |
| | | 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 |
| | | } |
| | | } |
| | | ], |
| | | linkEvent: { |
| | | entrustCode: { |
| | | method: 'selectAllByOne' |
| | | } |
| | | }, |
| | | tagField: { |
| | | type: { |
| | | select: [] |
| | | }, |
| | | insState: { |
| | | select: [] |
| | | }, |
| | | insResult: { |
| | | select: [{ |
| | | value: 0, |
| | | label: '不合格', |
| | | type: 'danger' |
| | | }, { |
| | | value: 1, |
| | | label: '合格', |
| | | type: 'success' |
| | | }, { |
| | | value: '', |
| | | label: '未出结果', |
| | | type: 'info' |
| | | }] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | 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) |
| | | } |
| | | userName: JSON.parse(localStorage.getItem("user")).name, |
| | | upIndex: 0, |
| | | planTotal: 0, |
| | | insStateList: [], |
| | | state: 0,//0:台账页,1:检验页面,2检验页面(复核),默认为0 |
| | | activeFace: 0, //1:下单,2:查看,3:审核,默认为0 |
| | | currentId: null, |
| | | entityCopy: {}, |
| | | orderId: null, |
| | | orderId0: null, |
| | | personList: [], |
| | | connectVisible: false, |
| | | connect: { |
| | | connectPerson: '', |
| | | // sonLaboratory:'' |
| | | }, |
| | | loading: false, |
| | | currentTime: null, |
| | | 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, |
| | | verifyPlan2: 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, |
| | | upInsReviewDia: false, |
| | | verifyPlanInfo: { |
| | | tell: null, |
| | | type: null |
| | | }, |
| | | reviewLoading: false |
| | | } |
| | | }, |
| | | 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 |
| | | } |
| | | }, |
| | | created() { |
| | | this.getLaboratoryDicts() |
| | | this.getTypeDicts() |
| | | this.getInsStateDicts() |
| | | this.getAuthorizedPerson() |
| | | this.currentTime = getYearAndMonthAndDays() |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity) |
| | | this.getPower() |
| | | if(this.jumpTeam){ |
| | | this.initializeSortable(); |
| | | 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 |
| | | } |
| | | }, |
| | | 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, |
| | | }) |
| | | } |
| | | }, |
| | | 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() |
| | | this.getInsStateDicts() |
| | | this.getAuthorizedPerson() |
| | | this.currentTime = getYearAndMonthAndDays() |
| | | }, |
| | | 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:i+' 层', |
| | | id:i, |
| | | warehouseShelfList:warehouseShelfList0 |
| | | 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 |
| | | }) |
| | | } |
| | | m.warehouseShelfList = warehouseShelfList; |
| | | return m; |
| | | }) |
| | | return item; |
| | | 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('请填写样品编号') |
| | | }) |
| | | }, |
| | | 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 |
| | | } |
| | | if (!this.entrustCode) { |
| | | this.$message.error('请填写订单编号') |
| | | 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 |
| | | } |
| | | 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, |
| | | }); |
| | | 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 { |
| | | console.error('Table body not found.'); |
| | | this.sampleCode = codeInfo.sampleCode |
| | | this.entrustCode = codeInfo.entrustCode |
| | | } |
| | | }, |
| | | 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 |
| | | this.dataDialogVisible = true; |
| | | }, |
| | | // 权限分配 |
| | | getPower(radio) { |
| | | let power = JSON.parse(sessionStorage.getItem('power')) |
| | | let inspection = false |
| | | 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 |
| | | } |
| | | if (power[i].menuMethod == 'upPlanUser') { |
| | | connect = true |
| | | } |
| | | if (power[i].menuMethod == 'verifyPlan') { |
| | | review = true |
| | | } |
| | | 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 |
| | | this.selectList() |
| | | } |
| | | } |
| | | // if (!getInsProduct2) { |
| | | // this.componentData.do.splice(5, 1) |
| | | // } |
| | | if (!claim) { |
| | | this.componentData.do.splice(4, 1) |
| | | } |
| | | if (!review) { |
| | | this.componentData.do.splice(3, 1) |
| | | } |
| | | if (!connect) { |
| | | this.componentData.do.splice(2, 1) |
| | | } |
| | | if (!inspection) { |
| | | 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 |
| | | this.refreshTable() |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | if(this.tabList.length>0){ |
| | | this.tabIndex = 0 |
| | | this.componentData.entity.sonLaboratory = this.tabList[0].value |
| | | } |
| | | this.refreshTable() |
| | | }, |
| | | claimFun(row) { |
| | | if (row) { |
| | | this.sampleUserForm = { |
| | | entrustCode: row.entrustCode, |
| | | insSampleId: row.sampleId, |
| | | sonLaboratory: row.sonLaboratory, |
| | | } |
| | | this.claimVisible = true |
| | | } |
| | | }, |
| | | confirmClaim() { |
| | | this.loading = true; |
| | | // this.sampleUserForm.insSampleId = this.orderId |
| | | this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | 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() { |
| | | this.tableLoading = true |
| | | this.$axios.post(this.$api.insOrderPlan.selectInsOrderPlanList,{ |
| | | entity:this.componentData.entity, |
| | | page:this.page |
| | | } 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' |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | } |
| | | ).then(res => { |
| | | |
| | | }) |
| | | }, |
| | | rowClassName({ row, rowIndex }) { |
| | | return 'draggable-row'; |
| | | }, |
| | | // 数据查看 |
| | | handleDataLook(row) { |
| | | this.componentDataDataLook.entity.id = row.id |
| | | this.dataDialogVisible = true; |
| | | }, |
| | | // 权限分配 |
| | | getPower(radio) { |
| | | let power = JSON.parse(sessionStorage.getItem('power')) |
| | | let inspection = false |
| | | let connect = false |
| | | let review = false |
| | | let claim = false |
| | | let jumpTeam = false |
| | | let verifyPlan2 = false |
| | | // let getInsProduct2 = false |
| | | // let getInsOrderUserList = false |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == 'doInsOrder') { |
| | | inspection = true |
| | | } |
| | | if (power[i].menuMethod == 'upPlanUser') { |
| | | connect = true |
| | | } |
| | | if (power[i].menuMethod == 'verifyPlan') { |
| | | review = true |
| | | } |
| | | if (power[i].menuMethod == 'verifyPlan2') { |
| | | verifyPlan2 = true |
| | | } |
| | | 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(4, 1) |
| | | // } |
| | | // if (!review) { |
| | | // this.componentData.do.splice(3, 1) |
| | | // } |
| | | // if (!connect) { |
| | | // this.componentData.do.splice(2, 1) |
| | | // } |
| | | // if (!inspection) { |
| | | // this.componentData.do.splice(1, 1) |
| | | // } |
| | | // this.getInsProduct2 = getInsProduct2 |
| | | this.claim = claim |
| | | this.review = review |
| | | this.verifyPlan2 = verifyPlan2 |
| | | this.connect = connect |
| | | this.inspection = inspection |
| | | this.jumpTeam = jumpTeam |
| | | }, |
| | | changeCheckBox(val) { |
| | | this.componentData.entity.userId = val ? 0 : null |
| | | this.refreshTable() |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | if (this.tabList.length > 0) { |
| | | this.tabIndex = 0 |
| | | this.componentData.entity.sonLaboratory = this.tabList[0].value |
| | | } |
| | | this.refreshTable() |
| | | }, |
| | | claimFun(row) { |
| | | if (row) { |
| | | this.sampleUserForm = { |
| | | entrustCode: row.entrustCode, |
| | | insSampleId: row.sampleId, |
| | | sonLaboratory: row.sonLaboratory, |
| | | } |
| | | this.claimVisible = true |
| | | } |
| | | }, |
| | | confirmClaim() { |
| | | this.loading = true; |
| | | // this.sampleUserForm.insSampleId = this.orderId |
| | | this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | },).then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.loading = false; |
| | | this.$message.success("认领成功") |
| | | this.claimVisible = false |
| | | this.refreshTable() |
| | | } else { |
| | | this.loading = false; |
| | | } |
| | | }).catch(error => { |
| | | console.error(error) |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | refreshTable(type, val) { |
| | | if (type && val) { |
| | | this.page[type] = val; |
| | | } |
| | | 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, |
| | | rowIndex |
| | | }) { |
| | | if (this.currentTime == row.appointed) { |
| | | return 'highlight-warning-row-border' |
| | | } else if (this.currentTime > row.appointed) { |
| | | return 'highlight-danger-row-border' |
| | | } |
| | | return '' |
| | | }, |
| | | onReset() { |
| | | this.searchForm = { |
| | | sampleName: null, |
| | | state: null, |
| | | } |
| | | this.componentData.entity.insState = null |
| | | this.componentData.entity.sampleName = null |
| | | this.refreshTable() |
| | | }, |
| | | onSubmit() { |
| | | this.componentData.entity.insState = this.searchForm.state |
| | | this.componentData.entity.sampleName = this.searchForm.sampleName |
| | | this.$nextTick(() => { |
| | | this.refreshTable() |
| | | }) |
| | | }, |
| | | handleTab(m, i) { |
| | | this.tabIndex = i; |
| | | this.componentData.entity.sonLaboratory = m.value |
| | | this.refreshTable() |
| | | }, |
| | | getTypeDicts() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "紧急程度" |
| | | }).then(res => { |
| | | let data = res.data |
| | | data.forEach(ele => { |
| | | if (ele.value === '0') { |
| | | ele.type = 'success' |
| | | } else if (ele.value === '1') { |
| | | ele.type = 'warning' |
| | | } else if (ele.value === '2') { |
| | | ele.type = 'danger' |
| | | } |
| | | }).then((res) => { |
| | | this.tableLoading = false |
| | | this.total = res.data.body.total |
| | | this.tableData = res.data.body.records |
| | | // this.$refs.table0.doLayout() |
| | | }) |
| | | }, |
| | | changeRowClass({ |
| | | row, |
| | | rowIndex |
| | | }) { |
| | | if (this.currentTime == row.appointed) { |
| | | return 'highlight-warning-row-border' |
| | | } else if (this.currentTime > row.appointed) { |
| | | return 'highlight-danger-row-border' |
| | | } |
| | | return '' |
| | | }, |
| | | onReset() { |
| | | this.searchForm = { |
| | | sampleName: null, |
| | | state: null, |
| | | } |
| | | this.componentData.entity.insState = null |
| | | this.componentData.entity.sampleName = null |
| | | this.refreshTable() |
| | | }, |
| | | onSubmit() { |
| | | this.componentData.entity.insState = this.searchForm.state |
| | | this.componentData.entity.sampleName = this.searchForm.sampleName |
| | | this.$nextTick(() => { |
| | | this.refreshTable() |
| | | }) |
| | | }, |
| | | handleTab(m, i) { |
| | | this.tabIndex = i; |
| | | this.componentData.entity.sonLaboratory = m.value |
| | | this.refreshTable() |
| | | }, |
| | | getTypeDicts() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "紧急程度" |
| | | }).then(res => { |
| | | let data = res.data |
| | | data.forEach(ele => { |
| | | if (ele.value === '0') { |
| | | ele.type = 'success' |
| | | } else if (ele.value === '1') { |
| | | ele.type = 'warning' |
| | | } else if (ele.value === '2') { |
| | | ele.type = 'danger' |
| | | } |
| | | }) |
| | | this.componentData.tagField.type.select = data |
| | | this.typeList = data |
| | | }) |
| | | }, |
| | | getInsStateDicts() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "检验任务状态" |
| | | }).then(res => { |
| | | let data = res.data |
| | | this.insStateList = data |
| | | data.forEach(ele => { |
| | | //0:待检验 1:检验中 2:已检验 3:待复核 4:复核未通过 5:复核通过 |
| | | if (['2', '5'].includes(ele.value)) { |
| | | ele.type = 'success' |
| | | } else if (['1', '3'].includes(ele.value)) { |
| | | ele.type = 'warning' |
| | | } else if (['0', '4'].includes(ele.value)) { |
| | | ele.type = 'danger' |
| | | } |
| | | }) |
| | | this.componentData.tagField.insState.select = data |
| | | }) |
| | | }, |
| | | getLaboratoryDicts() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "子实验室" |
| | | }).then(res => { |
| | | this.tabList = res.data.map(ele => { |
| | | return { |
| | | label: ele.label, |
| | | value: ele.value |
| | | } |
| | | }) |
| | | if(this.tabList.length>0){ |
| | | this.componentData.entity.sonLaboratory = this.tabList[0].value |
| | | } |
| | | this.refreshTable() |
| | | }) |
| | | }, |
| | | selectAllByOne(row) { |
| | | this.activeFace = 2; |
| | | this.examine = 1; |
| | | this.currentId = parseInt(row.id) |
| | | }, |
| | | playOrder(num) { |
| | | this.activeFace = num |
| | | }, |
| | | goback() { |
| | | this.state = 0 |
| | | this.refreshTable('page') |
| | | }, |
| | | handleInspection(row){ |
| | | //当前检验任务的检验人列表 |
| | | let inspectorList = [] |
| | | if(row.userName){ |
| | | inspectorList = row.userName.split(',') |
| | | this.componentData.tagField.type.select = data |
| | | this.typeList = data |
| | | }) |
| | | }, |
| | | getInsStateDicts() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "检验任务状态" |
| | | }).then(res => { |
| | | let data = res.data |
| | | this.insStateList = data |
| | | data.forEach(ele => { |
| | | //0:待检验 1:检验中 2:已检验 3:待复核 4:复核未通过 5:复核通过 |
| | | if (['2', '5'].includes(ele.value)) { |
| | | ele.type = 'success' |
| | | } else if (['1', '3'].includes(ele.value)) { |
| | | ele.type = 'warning' |
| | | } else if (['0', '4'].includes(ele.value)) { |
| | | ele.type = 'danger' |
| | | } |
| | | }) |
| | | this.componentData.tagField.insState.select = data |
| | | }) |
| | | }, |
| | | getLaboratoryDicts() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "子实验室" |
| | | }).then(res => { |
| | | this.tabList = res.data.map(ele => { |
| | | return { |
| | | label: ele.label, |
| | | value: ele.value |
| | | } |
| | | }) |
| | | if (this.tabList.length > 0) { |
| | | this.componentData.entity.sonLaboratory = this.tabList[0].value |
| | | } |
| | | 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.userInfo.name = row.userName.split(',') |
| | | this.userInfo.ids = row.userNameId.split(',') |
| | | this.isLook = false |
| | | }, |
| | | handleConnect(row){ |
| | | 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 |
| | | // } |
| | | // }) |
| | | }, |
| | | cancelSubmitPlan(row){ |
| | | this.$confirm('确定撤销此次检验提交?', "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$axios.post(this.$api.insOrderPlan.cancelSubmitPlan, { |
| | | this.refreshTable() |
| | | }) |
| | | }, |
| | | selectAllByOne(row) { |
| | | this.activeFace = 2; |
| | | this.examine = 1; |
| | | this.currentId = parseInt(row.id) |
| | | }, |
| | | playOrder(num) { |
| | | this.activeFace = num |
| | | }, |
| | | goback() { |
| | | this.state = 0 |
| | | 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.userInfo.name = row.userName.split(',') |
| | | this.userInfo.ids = row.userNameId.split(',') |
| | | this.isLook = false |
| | | }, |
| | | handleConnect(row) { |
| | | 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 |
| | | // } |
| | | // }) |
| | | }, |
| | | 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){ |
| | | }).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 |
| | | // } |
| | | this.loading = true; |
| | | this.$axios.post(this.$api.insOrderPlan.upPlanUser, { |
| | | sampleId:this.orderId, |
| | | userId:this.connect.connectPerson, |
| | | sonLaboratory:this.componentData.entity.sonLaboratory, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.loading = false; |
| | | this.$message.success("操作成功") |
| | | this.refreshTable('page') |
| | | } |
| | | this.connectVisible = false |
| | | }).catch(error => { |
| | | console.error(error) |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | handleReview(row){ |
| | | this.state = 2; |
| | | 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 => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | 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 |
| | | }).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 |
| | | // } |
| | | this.loading = true; |
| | | this.$axios.post(this.$api.insOrderPlan.upPlanUser, { |
| | | sampleId: this.orderId, |
| | | userId: this.connect.connectPerson, |
| | | sonLaboratory: this.componentData.entity.sonLaboratory, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.loading = false; |
| | | this.$message.success("操作成功") |
| | | this.refreshTable('page') |
| | | } |
| | | this.connectVisible = false |
| | | }).catch(error => { |
| | | console.error(error) |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | handleReview(row) { |
| | | this.state = 2; |
| | | 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 => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | 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 |
| | | }, |
| | | // 纠正复核 |
| | | upInsReview() { |
| | | if (this.verifyPlanInfo.type != 0 && this.verifyPlanInfo.type != 1 && this.verifyPlanInfo.type != 2) { |
| | | return this.$message.error("请选择复核状态"); |
| | | } |
| | | if (!this.verifyPlanInfo.tell) { |
| | | return this.$message.error("请输入纠正复核的原因"); |
| | | } |
| | | this.reviewLoading = true; |
| | | this.$axios |
| | | .post(this.$api.insOrderPlan.verifyPlan2, { |
| | | sampleId: this.verifyPlanInfo.sampleId, |
| | | type: this.verifyPlanInfo.type, |
| | | laboratory: this.componentData.entity.sonLaboratory, |
| | | tell: this.verifyPlanInfo.tell |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功"); |
| | | this.upInsReviewDia = false; |
| | | this.refreshTable() |
| | | } |
| | | this.reviewLoading = false; |
| | | }) |
| | | .catch(error => { |
| | | console.error(error); |
| | | this.reviewLoading = false; |
| | | }); |
| | | }, |
| | | handleReview0(row) { |
| | | this.verifyPlanInfo = JSON.parse(JSON.stringify(row)); |
| | | this.$set(this.verifyPlanInfo, 'tell', null) |
| | | this.$set(this.verifyPlanInfo, 'type', null) |
| | | this.upInsReviewDia = true |
| | | }, |
| | | sortChange(ob) { |
| | | this.componentData.entity.orderBy = {} |
| | | this.componentData.entity.orderBy.field = ob.prop |
| | | if (ob.order == 'ascending') { |
| | | this.componentData.entity.orderBy.order = 'asc' |
| | | } else if (ob.order == 'descending') { |
| | | this.componentData.entity.orderBy.order = 'desc' |
| | | } |
| | | this.refreshTable() |
| | | } |
| | | } |
| | | } |
| | | </script> |