| | |
| | | <template> |
| | | <div>检验下单</div> |
| | | <div class="bg-1"> |
| | | <div style="margin: 5px 15px"> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="text-align: left">检验下单</el-col> |
| | | <el-col :span="12" style="text-align: right"> |
| | | <el-button |
| | | size="medium" |
| | | type="primary" |
| | | @click="dialogVisible1 = true" |
| | | :loading="exportCheckedLoading" |
| | | >导出检验结果</el-button |
| | | > |
| | | <el-button size="medium" type="primary" @click="print" |
| | | >标签打印</el-button |
| | | > |
| | | <el-button |
| | | size="medium" |
| | | type="primary" |
| | | @click="playOrder(1)" |
| | | v-hasPermi="['business:order:add']" |
| | | >下单</el-button |
| | | > |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <basic-container> |
| | | <div class="search" :style="`height: ${more ? 100 : 50}px;`"> |
| | | <el-row :gutter="10" style="width: 100%"> |
| | | <el-col :span="20" style="display: flex; flex-wrap: wrap"> |
| | | <div class="search_thing" style="width: 20%"> |
| | | <div class="search_label">委托编号:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="queryParams.entrustCode" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="width: 20%"> |
| | | <div class="search_label" style="width: 120px"> |
| | | 外部委托编号: |
| | | </div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="queryParams.outEntrustCode" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="width: 20%"> |
| | | <div class="search_label">样品名称:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="queryParams.sampleName" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="width: 20%"> |
| | | <div class="search_label">样品型号:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="queryParams.sampleModel" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="width: 20%"> |
| | | <div class="search_label">样品编号:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="queryParams.sampleCode" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="width: 40%" v-if="more"> |
| | | <div class="search_label">下单时间:</div> |
| | | <div class="search_input"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="queryParams.startAndEndTime" |
| | | type="daterange" |
| | | size="small" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | value-format="yyyy-MM-dd" |
| | | clearable |
| | | placeholder="选择日期" |
| | | > |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="width: 20%" v-if="more"> |
| | | <div class="search_label">下单人:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="queryParams.name" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="width: 20%" v-if="more"> |
| | | <div class="search_label">工程名称:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="queryParams.engineering" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="width: 20%" v-if="more"> |
| | | <div class="search_label">生产单位:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="queryParams.production" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <div class="search_thing"> |
| | | <el-button |
| | | type="text" |
| | | :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" |
| | | style="color: #3a7bfa" |
| | | @click="more = !more" |
| | | >{{ !more ? "更多" : "收起" }}</el-button |
| | | > |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()" |
| | | >查 询</el-button |
| | | > |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </basic-container> |
| | | <basic-container> |
| | | <div v-show="active == 0"> |
| | | <div class="table"> |
| | | <ul class="tab"> |
| | | <li |
| | | v-for="(m, i) in tabList" |
| | | :key="i + 'afgh'" |
| | | :class="{ active: i == tabIndex }" |
| | | @click="handleTab(m, i)" |
| | | > |
| | | {{ m.label }} |
| | | </li> |
| | | </ul> |
| | | <lims-table |
| | | highlightCurrentRow |
| | | isSelection |
| | | :tableData="tableData" |
| | | :height="tableHeight + ''" |
| | | @pagination="pagination" |
| | | :handleSelectionChange="selectionChange" |
| | | :column="column" |
| | | :page="page" |
| | | :tableLoading="tableLoading" |
| | | ></lims-table> |
| | | </div> |
| | | <!-- 审核 --> |
| | | <el-dialog |
| | | title="下单审核" |
| | | :visible.sync="verifyDialogVisible" |
| | | width="30%" |
| | | :before-close="handleClose" |
| | | > |
| | | <p style="font-size: 16px; color: #333333" v-if="!isPass"> |
| | | 委托编号<span style="color: #34bd66">ZTMS2023071001</span |
| | | >的信息是否通过 |
| | | </p> |
| | | <el-form |
| | | :label-position="labelPosition" |
| | | :model="formData" |
| | | label-width="150px" |
| | | ref="ruleForm" |
| | | v-else |
| | | > |
| | | <el-form-item label="请输入样品库位号:"> |
| | | <el-input |
| | | v-model="formData.specificationModel" |
| | | size="small" |
| | | style="width: 60%" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row v-if="!isPass"> |
| | | <el-button @click="handleClose">退 回</el-button> |
| | | <el-button type="primary" @click="submitForm" :loading="upLoad" |
| | | >通 过</el-button |
| | | > |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">返 回</el-button> |
| | | <el-button type="primary" @click="submitForm" :loading="upLoad" |
| | | >确 定</el-button |
| | | > |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 撤销 --> |
| | | <el-dialog |
| | | title="下单撤销" |
| | | :visible.sync="quashDialogVisible" |
| | | width="30%" |
| | | :before-close="handleClose" |
| | | > |
| | | <p style="font-size: 16px; color: #333333" v-if="!isQuash"> |
| | | 委托编号<span style="color: #34bd66">{{ |
| | | this.insOrderRow.outEntrustCode |
| | | }}</span |
| | | >的信息是否撤销 |
| | | </p> |
| | | <el-form |
| | | :label-position="labelPosition" |
| | | :model="formData" |
| | | label-width="150px" |
| | | ref="ruleForm" |
| | | v-else |
| | | > |
| | | <el-form-item label="请输入撤销原因:"> |
| | | <el-input |
| | | v-model="formData.specificationModel" |
| | | size="small" |
| | | style="width: 60%" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleClose">{{ |
| | | isQuash ? "返 回" : "取 消" |
| | | }}</el-button> |
| | | <el-button type="primary" @click="submitForm" :loading="upLoad" |
| | | >确 定</el-button |
| | | > |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 下发 --> |
| | | <el-dialog |
| | | title="检验分配" |
| | | :visible.sync="issuedDialogVisible" |
| | | width="400px" |
| | | :before-close="handleClose" |
| | | > |
| | | <div class="body" style="max-height: 60vh"> |
| | | <el-row> |
| | | <el-col class="search_thing" style="width: 95%"> |
| | | <div class="search_label"> |
| | | <span class="required-span">* </span>约定时间: |
| | | </div> |
| | | <div class="search_input"> |
| | | <el-date-picker |
| | | size="small" |
| | | v-model="distributeData.appointed" |
| | | type="date" |
| | | placeholder="选择日期" |
| | | value-format="yyyy-MM-dd" |
| | | style="width: 100%" |
| | | format="yyyy-MM-dd" |
| | | > |
| | | </el-date-picker> |
| | | </div> |
| | | </el-col> |
| | | <el-col class="search_thing" style="width: 95%"> |
| | | <div class="search_label"> |
| | | <span class="required-span" v-show="distributeData.type == 2" |
| | | >* </span |
| | | >指派人员: |
| | | </div> |
| | | <div class="search_input"> |
| | | <el-select |
| | | v-model="distributeData.userId" |
| | | placeholder="请选择" |
| | | size="small" |
| | | style="width: 100%" |
| | | clearable |
| | | filterable |
| | | @change="changeUser" |
| | | > |
| | | <el-option-group |
| | | v-for="(item, index) in Object.keys(personList)" |
| | | :key="index" |
| | | :label="item" |
| | | > |
| | | <el-option |
| | | v-for="op in personList[item]" |
| | | :key="op.id" |
| | | :label="op.name" |
| | | :value="op.id" |
| | | > |
| | | </el-option> |
| | | </el-option-group> |
| | | </el-select> |
| | | </div> |
| | | </el-col> |
| | | <el-col |
| | | class="search_thing" |
| | | style="width: 95%" |
| | | v-if="distributeData.userId" |
| | | > |
| | | <div class="search_label"> |
| | | <span class="required-span">* </span>试验室: |
| | | </div> |
| | | <div class="search_input"> |
| | | <el-select |
| | | v-model="distributeData.sonLaboratory" |
| | | placeholder="请选择11" |
| | | size="small" |
| | | style="width: 100%" |
| | | clearable |
| | | filterable |
| | | > |
| | | <el-option |
| | | v-for="(item, i) in sonLaboratoryList" |
| | | :key="i + 'oooo'" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleClose2">取 消</el-button> |
| | | <el-button type="primary" @click="submitForm2" :loading="upLoad" |
| | | >确 定</el-button |
| | | > |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | title="数据查看" |
| | | :visible.sync="dataDialogVisible" |
| | | width="100%" |
| | | fullscreen |
| | | > |
| | | <lims-table |
| | | highlightCurrentRow |
| | | :height="'80vh'" |
| | | :tableData="dataLooktableData" |
| | | :column="dataLookColumn" |
| | | :tableLoading="dataLookTableLoading" |
| | | ></lims-table> |
| | | </el-dialog> |
| | | <el-dialog |
| | | top="5vh" |
| | | :title="deleteTilte" |
| | | :visible.sync="deleteDialogVisible" |
| | | :before-close="handleCloseDelete" |
| | | width="80%" |
| | | > |
| | | <div class="table-container" v-if="deleteDialogVisible"> |
| | | <el-table |
| | | height="500px" |
| | | ref="revokeTable" |
| | | @select="handleSelectionChange" |
| | | @select-all="handleSelectionAll" |
| | | :data="treeTableData" |
| | | style="width: 100%" |
| | | row-key="id" |
| | | border |
| | | lazy |
| | | :load="load" |
| | | :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" |
| | | > |
| | | <el-table-column |
| | | v-if="deleteTilte == '撤销'" |
| | | type="selection" |
| | | width="55" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="sampleCode" |
| | | label="样品编号" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="inspectionItem" |
| | | label="检验项" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="inspectionItemSubclass" |
| | | label="检验子项" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="sampleType" |
| | | label="样品分类" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column prop="sample" label="样品" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="model" label="型号" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="sonLaboratory" |
| | | label="试验室" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column prop="tell" label="要求值" show-overflow-tooltip> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleNo">{{ |
| | | deleteTilte == "撤销" ? "取 消" : "不通过" |
| | | }}</el-button> |
| | | <el-button |
| | | type="primary" |
| | | @click="submitDelete" |
| | | :loading="printLoading" |
| | | >{{ deleteTilte == "撤销" ? "确 定" : "通 过" }}</el-button |
| | | > |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 数据查看详情 --> |
| | | <el-dialog |
| | | title="查看详情" |
| | | :visible.sync="dialogVisible" |
| | | width="70%" |
| | | :before-close="handleClose3" |
| | | > |
| | | <el-table |
| | | v-if="type == '单根垂直燃烧' || type == '松套管'" |
| | | :data="viewDetailsList" |
| | | height="400px" |
| | | border |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="序号" |
| | | width="80px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="entrustCode" |
| | | label="委托单号" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="sampleCode" |
| | | label="样品编号" |
| | | ></el-table-column> |
| | | <el-table-column prop="color" label="套管"></el-table-column> |
| | | <!-- <el-table-column prop="inspectionItem" label="检验项"></el-table-column> --> |
| | | <el-table-column prop="insValue" label="检验结果"></el-table-column> |
| | | </el-table> |
| | | |
| | | <el-table |
| | | v-if="type == '抗拉强度'" |
| | | :data="viewDetailsList" |
| | | height="400px" |
| | | border |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="序号" |
| | | width="80px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="inspectionItem" |
| | | label="检验项" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="inspectionItemSubclass" |
| | | label="检验子项" |
| | | ></el-table-column> |
| | | <el-table-column prop="width" label="宽度"></el-table-column> |
| | | <el-table-column prop="thickness" label="厚度"></el-table-column> |
| | | <el-table-column prop="testValue" label="检验值"></el-table-column> |
| | | </el-table> |
| | | |
| | | <el-table |
| | | v-if="type == '断裂伸长率'" |
| | | :data="viewDetailsList" |
| | | height="400px" |
| | | border |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="序号" |
| | | width="80px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="inspectionItem" |
| | | label="检验项" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="inspectionItemSubclass" |
| | | label="检验子项" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | v-for="(v, i) in tableHeader" |
| | | :key="i" |
| | | :prop="`testValue${i}`" |
| | | :label="`检验值${i + 1}`" |
| | | ></el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | <!-- 导出已检数据 --> |
| | | <el-dialog |
| | | title="选择日期" |
| | | :visible.sync="dialogVisible1" |
| | | width="30%" |
| | | :before-close="handleClose4" |
| | | > |
| | | <span>下单日期: </span> |
| | | <el-date-picker |
| | | v-model="exportCheckedDate" |
| | | type="daterange" |
| | | size="small" |
| | | value-format="yyyy-MM-dd" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | > |
| | | </el-date-picker> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="handleClose4">取 消</el-button> |
| | | <el-button type="primary" @click="exportChecked()">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | <!-- <div style="width: 100%; height: 100%" v-if="active > 0"> |
| | | <Add |
| | | :active="active" |
| | | :currentId="currentId" |
| | | v-if="active < 4" |
| | | :examine="examine" |
| | | /> |
| | | </div> --> |
| | | <el-dialog |
| | | title="标签打印" |
| | | :visible.sync="printDialogVisible" |
| | | width="40%" |
| | | top="5vh" |
| | | > |
| | | <div |
| | | style="width: 100%; height: 400px; overflow-y: auto" |
| | | v-loading="loadPint" |
| | | > |
| | | <div class="dia_body"> |
| | | <el-checkbox |
| | | style="margin: 10px 5px" |
| | | :indeterminate="isIndeterminate" |
| | | v-model="checkAll" |
| | | @change="handleCheckAllChange" |
| | | >全选</el-checkbox |
| | | > |
| | | <el-checkbox-group |
| | | @change="changePrintCode()" |
| | | v-model="checkIndexList" |
| | | > |
| | | <el-card |
| | | class="box-card" |
| | | v-for="(item, i) in qrData" |
| | | :key="i + 'wwwww'" |
| | | style="margin-bottom: 15px; font-size: 16px !important" |
| | | > |
| | | <el-checkbox |
| | | :label="i" |
| | | :key="i" |
| | | style="position: relative; top: -10px; left: 5px" |
| | | ><br |
| | | /></el-checkbox> |
| | | <div> |
| | | <el-row style="font-size: 14px; padding-left: 20px"> |
| | | <el-col style="font-weight: bold">{{ item.pName }}</el-col> |
| | | </el-row> |
| | | <div style="display: flex"> |
| | | <div> |
| | | <el-col :span="8" :offset="4"> |
| | | <vueQr |
| | | :text=" |
| | | 'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=' + |
| | | item.id + |
| | | '&type=sample' |
| | | " |
| | | :size="140" |
| | | :margin="2" |
| | | ></vueQr> |
| | | </el-col> |
| | | </div> |
| | | <div style="margin-left: 50px; width: 100%"> |
| | | <el-row> |
| | | <el-col |
| | | style=" |
| | | font-weight: bold; |
| | | text-align: left; |
| | | font-size: 14px; |
| | | " |
| | | ><span>样品编号: </span |
| | | >{{ item.sampleCode }}</el-col |
| | | > |
| | | </el-row> |
| | | <el-row style="margin-top: 1px; font-size: 14px"> |
| | | <el-col style="font-weight: bold; text-align: left" |
| | | ><span>委托单号: </span>{{ item.code }}</el-col |
| | | > |
| | | </el-row> |
| | | <el-row style="margin-top: 1px; font-size: 14px"> |
| | | <el-col style="font-weight: bold; text-align: left" |
| | | ><span>规格型号: </span>{{ item.model }}</el-col |
| | | > |
| | | </el-row> |
| | | <el-row style="margin-top: 1px; font-size: 14px"> |
| | | <el-col style="font-weight: bold; text-align: left" |
| | | ><span>样品名称: </span |
| | | >{{ item.sample }}</el-col |
| | | > |
| | | </el-row> |
| | | <el-row |
| | | style="margin-top: 1px; font-size: 14px" |
| | | class="ellipsis-multiline" |
| | | > |
| | | <el-col style="font-weight: bold; text-align: left" |
| | | ><span>检测项目: </span>{{ item.item }}</el-col |
| | | > |
| | | </el-row> |
| | | <el-row style="margin-top: 2px; font-size: 14px"> |
| | | <el-col |
| | | style=" |
| | | font-weight: bold; |
| | | display: flex; |
| | | align-items: center; |
| | | " |
| | | ><span>样品状态: </span |
| | | ><el-radio-group |
| | | :value="item.insState" |
| | | style="margin-top: 7px; margin-left: 4px" |
| | | disabled |
| | | > |
| | | <el-radio |
| | | :label="0" |
| | | style="font-weight: bold; margin-right: 7px" |
| | | >待检</el-radio |
| | | > |
| | | <el-radio |
| | | :label="1" |
| | | style="font-weight: bold; margin-right: 7px" |
| | | >在检</el-radio |
| | | > |
| | | <el-radio |
| | | :label="2" |
| | | style="font-weight: bold; margin-right: 7px" |
| | | >已检</el-radio |
| | | > </el-radio-group |
| | | ><el-radio |
| | | :label="1" |
| | | style="font-weight: bold; margin-top: 7px" |
| | | v-model="item.isLeave" |
| | | disabled |
| | | >留样</el-radio |
| | | ></el-col |
| | | > |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </el-checkbox-group> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="printDialogVisible = false">取 消</el-button> |
| | | <el-button |
| | | type="primary" |
| | | @click="submitPrint" |
| | | :loading="printLoading" |
| | | >打 印</el-button |
| | | > |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <div |
| | | class="el-dialog__body" |
| | | style=" |
| | | overflow-y: auto; |
| | | margin-top: 0; |
| | | position: fixed; |
| | | top: 999px; |
| | | z-index: 99999; |
| | | display: none; |
| | | " |
| | | > |
| | | <div id="printMOrder" class="printMOrder" ref="printMOrder"> |
| | | <el-card |
| | | class="box-card" |
| | | v-for="(item, i) in checkDataList" |
| | | :key="i + 'uuuuu'" |
| | | style=" |
| | | font-size: 0.2cm !important; |
| | | page-break-after: always; |
| | | color: #000; |
| | | box-shadow: none; |
| | | margin: 0 !important; |
| | | padding: 0 !important; |
| | | " |
| | | > |
| | | <div style="display: flex"> |
| | | <div> |
| | | <el-col :span="10" :offset="2"> |
| | | <vueQr |
| | | :text=" |
| | | 'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=' + |
| | | item.id + |
| | | '&type=sample' |
| | | " |
| | | :size="60" |
| | | :margin="2" |
| | | ></vueQr> |
| | | </el-col> |
| | | </div> |
| | | <div style="margin-left: 0.32cm; line-height: 0.22cm"> |
| | | <el-row> |
| | | <el-col |
| | | style="font-size: 0.2cm; width: 4cm" |
| | | class="single-line-ellipsis" |
| | | ><span>样品编号: </span>{{ item.sampleCode }}</el-col |
| | | > |
| | | </el-row> |
| | | <el-row style="font-size: 0.2cm"> |
| | | <el-col><span>委托单号: </span>{{ item.code }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 0.2cm"> |
| | | <el-col><span>规格型号: </span>{{ item.model }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 0.2cm"> |
| | | <el-col |
| | | ><span>样品名称: </span>{{ item.sample }}</el-col |
| | | > |
| | | </el-row> |
| | | <el-row style="font-size: 0.2cm; width: 4cm"> |
| | | <el-col class="ellipsis-multiline" |
| | | ><span>检测项目: </span>{{ item.item }}</el-col |
| | | > |
| | | </el-row> |
| | | <el-row style="margin-top: 0.01cm; font-size: 0.2cm"> |
| | | <el-col style="display: flex; align-items: center" |
| | | ><span>样品状态: </span> |
| | | <span style="white-space: nowrap" |
| | | ><span v-if="item.insState == 0">√</span |
| | | ><span class="scor" v-if="item.insState != 0"></span>待检 |
| | | <span v-if="item.insState == 1">√</span |
| | | ><span class="scor" v-if="item.insState != 1"></span>在检 |
| | | <span v-if="item.insState == 2">√</span |
| | | ><span class="scor" v-if="item.insState != 2"></span>已检 |
| | | <span v-if="item.isLeave == 1">√</span |
| | | ><span class="scor" v-if="item.isLeave != 1"></span |
| | | >留样</span |
| | | > |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </div> |
| | | </basic-container> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default {}; |
| | | import { |
| | | selectInsOrderParameter, |
| | | labelPrinting, |
| | | exportChecked, |
| | | selectSampleAndProductByOrderId, |
| | | selectSampleByOrderId, |
| | | selectProductsBySampleId, |
| | | revoke, |
| | | viewDetails, |
| | | downReport, |
| | | selectTemperatureByProductId, |
| | | selectTemperatureNumberByProductId, |
| | | revokeReviewTemperatureByProductId, |
| | | revokeReviewConsistentByProductId, |
| | | revokeReviewProduct, |
| | | revokeReviewSample, |
| | | updateStatus, |
| | | updateInspected, |
| | | revocationPassed, |
| | | revocationCancel, |
| | | } from "@/api/business/inspectionOrder"; |
| | | import { upPlanUser2 } from "@/api/business/inspectionTask"; |
| | | import { getDicts } from "@/api/system/dict/data"; |
| | | import vueQr from "vue-qr"; |
| | | import getLodop from "@/utils/lodop"; |
| | | import Add from "./add.vue"; |
| | | import { mapGetters } from "vuex"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | export default { |
| | | components: { |
| | | limsTable, |
| | | Add, |
| | | vueQr, |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["permissions"]), |
| | | }, |
| | | data() { |
| | | return { |
| | | queryParams: { |
| | | entrustCode: "", |
| | | outEntrustCode: "", |
| | | sampleName: "", |
| | | sampleModel: "", |
| | | sampleCode: "", |
| | | startAndEndTime: [], |
| | | name: "", |
| | | engineering: "", |
| | | production: "", |
| | | }, |
| | | tableData: [], |
| | | page: { |
| | | total: 0, |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | tableLoading: false, |
| | | column: [ |
| | | { |
| | | label: "委托编号", |
| | | prop: "entrustCode", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "外部委托编号", |
| | | prop: "outEntrustCode", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "委托单位", |
| | | prop: "company", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "样品名称", |
| | | prop: "sampleName", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | dataType: "link", |
| | | linkEvent: { |
| | | method: "showDetails", |
| | | vueComponent: this, |
| | | }, |
| | | }, |
| | | { |
| | | label: "样品编号", |
| | | prop: "sampleCode", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "样品型号", |
| | | prop: "sampleModel", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "样品数量", |
| | | prop: "sampleNum", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "检验进度%", |
| | | prop: "insProgress", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "紧急程度", |
| | | prop: "type", |
| | | minWidth: "100px", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | let index = this.urgencyDictList.findIndex( |
| | | (item) => item.dictValue == params |
| | | ); |
| | | if (index > -1) { |
| | | return this.urgencyDictList[index].dictLabel; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | let index = this.urgencyDictList.findIndex( |
| | | (item) => item.dictValue == params |
| | | ); |
| | | if (index > -1) { |
| | | return this.urgencyDictList[index].listClass; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | label: "备注", |
| | | prop: "remark", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "制单人", |
| | | prop: "custom", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "约定时间", |
| | | prop: "appointed", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "下单时间", |
| | | prop: "createTime", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "下发时间", |
| | | prop: "sendTime", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "退回理由", |
| | | prop: "tell", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "委托人", |
| | | prop: "prepareUser", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "撤销日期", |
| | | prop: "revocationTime", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "操作", |
| | | dataType: "action", |
| | | fixed: "right", |
| | | operation: [ |
| | | { |
| | | name: "数据查看", |
| | | type: "text", |
| | | disabled: (row) => { |
| | | return row.state != 1 && row.state != 4; |
| | | }, |
| | | clickFun: (row) => { |
| | | this.handleDataLook(row); |
| | | }, |
| | | showHide: () => { |
| | | return true; |
| | | }, |
| | | }, |
| | | { |
| | | name: "报告下载", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.download(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return row.state != 4 || row.isRatify != 1; |
| | | }, |
| | | }, |
| | | { |
| | | name: "审核", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleVerify(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return row.state != 0; |
| | | }, |
| | | }, |
| | | { |
| | | name: "撤销", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handlEquash(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return row.state != 1 && row.state != 0; |
| | | }, |
| | | }, |
| | | { |
| | | name: "撤销审核", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handlEquashCheck(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return ( |
| | | (row.state != 1 && row.state != 0) || |
| | | this.tabIndex != 1 || |
| | | row.isRevocation != 1 |
| | | ); |
| | | }, |
| | | }, |
| | | { |
| | | name: "分配", |
| | | type: "text", |
| | | clickFun: (row) => {}, |
| | | disabled: (row, index) => { |
| | | return ( |
| | | row.state != 1 || |
| | | (row.entrustCode != null && |
| | | Number(row.assign) > 0 && |
| | | row.inspectId != null) |
| | | ); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | dataLookColumn: [ |
| | | { |
| | | label: "委托编号", |
| | | prop: "entrustCode", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "样品编号", |
| | | prop: "sampleCode", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "管套色标", |
| | | prop: "bushColor", |
| | | minWidth: "100px", |
| | | width: "100px", |
| | | }, |
| | | { |
| | | label: "光纤带编号", |
| | | prop: "code", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "光纤色标", |
| | | prop: "color", |
| | | minWidth: "100px", |
| | | width: "100px", |
| | | }, |
| | | { |
| | | label: "检验项", |
| | | prop: "inspectionItem", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "检验子项", |
| | | prop: "inspectionItemSubclass", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "检验结果", |
| | | prop: "lastValue", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "结果判定", |
| | | prop: "insResult", |
| | | minWidth: "100px", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | let index = this.insResultList.findIndex( |
| | | (item) => item.value == params |
| | | ); |
| | | if (index > -1) { |
| | | return this.insResultList[index].label; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | let index = this.insResultList.findIndex( |
| | | (item) => item.value == params |
| | | ); |
| | | if (index > -1) { |
| | | return this.insResultList[index].type; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | label: "单位", |
| | | prop: "unit", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "试验要求", |
| | | prop: "tell", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "检验人", |
| | | prop: "checkName", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | label: "检验日期", |
| | | prop: "checkTime", |
| | | minWidth: "140px", |
| | | width: "140px", |
| | | }, |
| | | { |
| | | label: "样品名称", |
| | | prop: "sample", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "样品型号", |
| | | prop: "model", |
| | | minWidth: "160px", |
| | | width: "160px", |
| | | }, |
| | | { |
| | | label: "试验室", |
| | | prop: "sonLaboratory", |
| | | minWidth: "120px", |
| | | width: "120px", |
| | | }, |
| | | { |
| | | dataType: "action", |
| | | label: "操作", |
| | | fixed: "right", |
| | | operation: [ |
| | | { |
| | | name: "查看", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.viewDetails(row); |
| | | }, |
| | | showHide: (row) => { |
| | | return ( |
| | | row.inspectionItem == "单根垂直燃烧" || |
| | | row.inspectionItem.includes("松套管") || |
| | | row.inspectionItemSubclass.includes("松套管") || |
| | | (row.inspectionItem == "抗拉强度" && |
| | | (row.inspectionItemSubclass == "热老化处理前" || |
| | | row.inspectionItemSubclass == "热老化处理后")) || |
| | | (row.inspectionItem == "断裂伸长率" && |
| | | (row.inspectionItemSubclass == "热老化处理前" || |
| | | row.inspectionItemSubclass == "热老化处理后")) |
| | | ); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | dataLookTableLoading: false, |
| | | dataLooktableData: [], |
| | | qrData: [], |
| | | multipleSelection: [], |
| | | sonLaboratoryList: [], |
| | | urgencyDictList: [], |
| | | tableHeight: 0, |
| | | tabList: [ |
| | | { |
| | | label: "待审核", |
| | | value: 0, |
| | | }, |
| | | { |
| | | label: "待检验", |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: "已检验", |
| | | value: 4, |
| | | }, |
| | | { |
| | | label: "退回", |
| | | value: 2, |
| | | }, |
| | | { |
| | | label: "撤销", |
| | | value: 3, |
| | | }, |
| | | ], |
| | | insResultList: [ |
| | | { |
| | | value: 1, |
| | | label: "合格", |
| | | type: "success", |
| | | }, |
| | | { |
| | | value: 0, |
| | | label: "不合格", |
| | | type: "danger", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "不判定", |
| | | type: "", |
| | | }, |
| | | ], |
| | | tabIndex: 0, |
| | | active: 0, //1:下单,2:查看,3:审核,4:光纤配置,默认为0 |
| | | currentId: null, |
| | | more: false, |
| | | |
| | | //old |
| | | tableHeader: [], |
| | | type: "", |
| | | revokeDataAll: [], |
| | | revokeData: [], |
| | | treeTableData: [], |
| | | treeTableData2: [], |
| | | exportCheckedDate: [], |
| | | exportCheckedLoading: false, |
| | | dialogVisible1: false, |
| | | dialogVisible: false, |
| | | viewDetailsList: [], |
| | | deleteTilte: "撤销", |
| | | examine: null, |
| | | deleteList: [], |
| | | loadPint: false, |
| | | checkAll: false, |
| | | isIndeterminate: true, |
| | | printLoading: false, |
| | | printDialogVisible: false, |
| | | //是否审核通过 true是 false不是 |
| | | isPass: false, |
| | | //是否审核撤销 true是 false不是 |
| | | isQuash: false, |
| | | verifyDialogVisible: false, |
| | | quashDialogVisible: false, |
| | | issuedDialogVisible: false, |
| | | dataDialogVisible: false, |
| | | formData: {}, |
| | | formData0: {}, |
| | | formData1: {}, |
| | | distributeData: { |
| | | orderId: "", |
| | | sampleId: "", |
| | | appointed: "", |
| | | userId: null, |
| | | sonLaboratory: "", |
| | | }, |
| | | // 人员列表 |
| | | personList: [], |
| | | currentTableData: [], |
| | | orderId: "", |
| | | revocationInsProductIds: "", |
| | | deleteDialogVisible: false, |
| | | upLoad: false, |
| | | |
| | | insOrderRow: {}, |
| | | checkIndexList: [], |
| | | checkDataList: [ |
| | | { |
| | | sampleCode: "", |
| | | }, |
| | | ], |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getDictList(); |
| | | this.getTableHeight(); |
| | | }, |
| | | mounted() { |
| | | this.getList(); |
| | | window.addEventListener("resize", this.getTableHeight); |
| | | }, |
| | | beforeDestroy() { |
| | | window.removeEventListener("resize", this.getTableHeight); |
| | | }, |
| | | watch: { |
| | | more() { |
| | | this.getTableHeight(); |
| | | }, |
| | | printDialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.checkIndexList = []; |
| | | } |
| | | }, |
| | | }, |
| | | methods: { |
| | | selectionChange(val) { |
| | | console.log(val); |
| | | this.multipleSelection = val; |
| | | }, |
| | | //获取表格高度 |
| | | getTableHeight() { |
| | | const otherHeight = this.more ? 430 : 380; // 其余高度 |
| | | const tableBottom = 50; // 距离页面下方的高度 |
| | | const tableHeightDetil = window.innerHeight - tableBottom; |
| | | if (tableHeightDetil <= 300) { |
| | | this.tableHeight = 200; |
| | | } else { |
| | | this.tableHeight = window.innerHeight - tableBottom - otherHeight; |
| | | } |
| | | }, |
| | | getDictList() { |
| | | getDicts("urgency_level") |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.urgencyDictList = res.data; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | //获取数据列表 |
| | | getList() { |
| | | this.tableLoading = true; |
| | | selectInsOrderParameter({ ...this.queryParams, ...this.page }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | this.tableLoading = false; |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | // 导出已检 |
| | | exportChecked() { |
| | | let data = { |
| | | startTime: this.exportCheckedDate[0], |
| | | endTime: this.exportCheckedDate[1], |
| | | }; |
| | | this.exportCheckedLoading = true; |
| | | this.dialogVisible1 = false; |
| | | exportChecked(data) |
| | | .then((res) => { |
| | | this.$message.success("导出成功"); |
| | | this.exportCheckedDate = []; |
| | | this.exportCheckedLoading = false; |
| | | const blob = new Blob([res], { type: "application/octet-stream" }); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement("a"); |
| | | link.href = url; |
| | | link.download = "检验结果.xlsx"; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | // 查看详情 |
| | | viewDetails(row) { |
| | | this.dialogVisible = true; |
| | | if ( |
| | | row.inspectionItem.includes("松套管") || |
| | | row.inspectionItemSubclass.includes("松套管") |
| | | ) { |
| | | this.type = "松套管"; |
| | | } else { |
| | | this.type = row.inspectionItem; |
| | | } |
| | | let data = { |
| | | inspectionItem: row.inspectionItem, |
| | | insProductId: row.insProductId, |
| | | insSampleId: row.insSampleId, |
| | | entrustCode: row.entrustCode, |
| | | sampleCode: row.sampleCode, |
| | | inspectionItemSubclass: row.inspectionItemSubclass, |
| | | }; |
| | | viewDetails(data) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.viewDetailsList = res.data; |
| | | if (res.data[0].tableHeader) { |
| | | this.tableHeader = res.data[0].tableHeader; |
| | | } else { |
| | | this.tableHeader = [ |
| | | { |
| | | testValue0: "", |
| | | }, |
| | | ]; |
| | | } |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | getLabelPrinting(selection) { |
| | | this.loadPint = true; |
| | | labelPrinting({ |
| | | ids: selection.map((m) => m.id).join(","), |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | let arr = res.data; |
| | | arr.forEach((a) => { |
| | | this.loadPint = false; |
| | | let arr1 = []; |
| | | a.insProduct.forEach((b) => { |
| | | arr1.push(b.inspectionItem); |
| | | }); |
| | | a.item = [...new Set(arr1)].join(","); |
| | | }); |
| | | this.qrData = arr; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | //开始标签打印 |
| | | beginPrint(arr) { |
| | | if (arr.length === 0) { |
| | | return; |
| | | } |
| | | this.LODOP = getLodop(); |
| | | this.LODOP.SET_LICENSES( |
| | | "南通市鑫阳软件开发有限公司", |
| | | "60F8E5078AE17DEB340C94BC7E83CAFF", |
| | | "", |
| | | "" |
| | | ); |
| | | this.LODOP.PRINT_INITA(); |
| | | for (let i = 0; i < arr.length; i++) { |
| | | const qrData = arr[i]; |
| | | let qrStr = |
| | | "https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=" + |
| | | qrData.id + |
| | | "&type=sample"; |
| | | this.LODOP.NEWPAGE(); |
| | | // this.LODOP.SET_PRINT_PAGESIZE(0, 100, 360, '') |
| | | this.LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE", 1); |
| | | this.LODOP.ADD_PRINT_BARCODE(2, 5, 80, 80, "QRCode", qrStr); |
| | | this.LODOP.ADD_PRINT_TEXT(5, 85, 60, 18, "样品编号:"); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(5, 117, 280, 18, qrData.sampleCode); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(15, 85, 60, 18, "委托单号:"); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(15, 117, 280, 18, qrData.code); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(25, 85, 60, 18, "规格型号:"); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(25, 117, 280, 18, qrData.model); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(35, 85, 60, 18, "样品名称:"); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(35, 117, 280, 18, qrData.sample); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(45, 85, 60, 20, "检测项目:"); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT( |
| | | 45, |
| | | 117, |
| | | 150, |
| | | 20, |
| | | qrData.item.length > 42 |
| | | ? qrData.item.substring(0, 39) + "..." |
| | | : qrData.item |
| | | ); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | this.LODOP.ADD_PRINT_TEXT(67, 85, 60, 18, "样品状态:"); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | let stateStr = "▢待检 ▢在检 ▢已检"; |
| | | let leaveStr = |
| | | qrData.isLeave && qrData.isLeave === 1 ? " ▣留样" : " ▢留样"; |
| | | if (qrData.insState == 0) { |
| | | stateStr = "▣待检 ▢在检 ▢已检"; |
| | | } else if (qrData.insState == 1) { |
| | | stateStr = "▢待检 ▣在检 ▢已检"; |
| | | } else if (qrData.insState == 2) { |
| | | stateStr = "▢待检 ▢在检 ▣已检"; |
| | | } |
| | | this.LODOP.ADD_PRINT_TEXT(67, 117, 280, 18, stateStr + leaveStr); |
| | | this.LODOP.SET_PRINT_STYLEA(0, "FontSize", 5); |
| | | } |
| | | this.LODOP.PRINT(); |
| | | // this.LODOP.PREVIEW() |
| | | }, |
| | | //选择要打印的二维码 |
| | | changePrintCode() { |
| | | let indexList = this.checkIndexList; |
| | | let arr = []; |
| | | indexList.forEach((i) => { |
| | | arr.push(this.qrData[i]); |
| | | }); |
| | | this.checkDataList = arr; |
| | | }, |
| | | //全选 |
| | | handleCheckAllChange(val) { |
| | | if (val) { |
| | | for (var i = 0; i < this.qrData.length; i++) { |
| | | this.checkIndexList.push(i); |
| | | } |
| | | this.checkDataList = this.qrData; |
| | | } else { |
| | | this.checkIndexList = []; |
| | | this.checkDataList = []; |
| | | } |
| | | this.isIndeterminate = false; |
| | | }, |
| | | submitPrint() { |
| | | if (this.checkDataList.length < 1) { |
| | | this.$message.warning("请选择要打印的二维码"); |
| | | return; |
| | | } |
| | | this.$nextTick(() => { |
| | | this.beginPrint(this.qrData); |
| | | }); |
| | | this.printDialogVisible = false; |
| | | }, |
| | | print() { |
| | | if (this.multipleSelection.length == 0) { |
| | | this.$message.warning("请选择一条数据"); |
| | | return; |
| | | } |
| | | let selection = this.multipleSelection; |
| | | this.getLabelPrinting(selection); |
| | | this.printDialogVisible = true; |
| | | }, |
| | | refreshTable() { |
| | | this.getList(); |
| | | }, |
| | | refresh() { |
| | | this.queryParams = { |
| | | entrustCode: "", |
| | | outEntrustCode: "", |
| | | sampleName: "", |
| | | sampleModel: "", |
| | | sampleCode: "", |
| | | startAndEndTime: [], |
| | | name: "", |
| | | engineering: "", |
| | | production: "", |
| | | }; |
| | | this.refreshTable(); |
| | | }, |
| | | handleClose() { |
| | | this.verifyDialogVisible = false; |
| | | this.quashDialogVisible = false; |
| | | this.issuedDialogVisible = false; |
| | | this.dataDialogVisible = false; |
| | | this.upLoad = false; |
| | | }, |
| | | handleClose2() { |
| | | this.verifyDialogVisible = false; |
| | | this.quashDialogVisible = false; |
| | | this.issuedDialogVisible = false; |
| | | this.dataDialogVisible = false; |
| | | this.upLoad = false; |
| | | }, |
| | | handleClose3() { |
| | | this.dialogVisible = false; |
| | | }, |
| | | handleClose4() { |
| | | this.exportCheckedDate = []; |
| | | this.dialogVisible1 = false; |
| | | }, |
| | | // 查看详情 |
| | | showDetails(row) { |
| | | this.$router.push({ |
| | | name: "showDetails", |
| | | query: { |
| | | active: 2, |
| | | currentId: row.id, |
| | | examine: 1, |
| | | isPlan: false, |
| | | }, |
| | | }); |
| | | }, |
| | | // 数据查看 |
| | | handleDataLook(row) { |
| | | selectSampleAndProductByOrderId({ id: row.id }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.dataLooktableData = res.data; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | this.dataDialogVisible = true; |
| | | }, |
| | | // 下载报告 |
| | | download(row) { |
| | | downReport({ id: row.reportId }) |
| | | .then((res) => { |
| | | let fileName = row.tempUrlPdf; |
| | | if (fileName.includes("_")) { |
| | | fileName = fileName.split("_")[1]; |
| | | } |
| | | const blob = new Blob([res], { type: "application/octet-stream" }); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement("a"); |
| | | link.href = url; |
| | | link.download = fileName; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | // 审核 |
| | | handleVerify(row) { |
| | | this.$router.push({ |
| | | name: "showDetails", |
| | | query: { |
| | | active: 3, |
| | | currentId: row.id, |
| | | examine: 1, |
| | | }, |
| | | }); |
| | | }, |
| | | // 全选 |
| | | handleSelectionAll(val) { |
| | | if (val.length > 0 && val.length <= this.treeTableData.length) { |
| | | this.handleSelectionAllRecursion(this.treeTableData, true); |
| | | console.log("传输的数据", this.revokeData); |
| | | } else { |
| | | this.$refs.revokeTable.clearSelection(); |
| | | this.revokeData = []; |
| | | } |
| | | }, |
| | | handleSelectionAllRecursion(list, flag) { |
| | | for (let i = 0; i < list.length; i++) { |
| | | let item = list[i]; |
| | | this.$refs.revokeTable.toggleRowSelection(item, flag); |
| | | if (flag) { |
| | | this.revokeData.push(item); |
| | | this.revokeData = this.revokeData.filter( |
| | | (a, index, self) => index === self.findIndex((t) => t.id === a.id) |
| | | ); |
| | | } |
| | | if (item.children && item.children.length > 0) { |
| | | this.handleSelectionAllRecursion(item.children, flag); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // 选择需要撤销的数据 |
| | | handleSelectionChange(val, row) { |
| | | console.log("rwo", row); |
| | | this.revokeData = val; |
| | | // 进行一个递归操作 |
| | | // 判断是否选中 val包含既是选中 不包含既是取消选中 |
| | | let flag = null; |
| | | if (val.includes(row)) { |
| | | flag = true; |
| | | } else { |
| | | flag = false; |
| | | } |
| | | if (row.children && row.children.length > 0) { |
| | | this.tableSelect(row, flag); |
| | | } |
| | | // 还要进行一个判断 如果全选之后又取消了选择,那么相应的sampleId也要取消 |
| | | this.$nextTick(() => { |
| | | if (!flag) { |
| | | this.treeTableData.forEach((item) => { |
| | | if (item.id == row.sampleId) { |
| | | this.$refs.revokeTable.toggleRowSelection(item, false); |
| | | } |
| | | }); |
| | | // 温度点 |
| | | if (row.number) { |
| | | this.revokeData = this.revokeData.filter( |
| | | (a) => |
| | | a.inspectionItemSubclass != row.inspectionItemSubclass && |
| | | a.inspectionItem != "温度循环" && |
| | | a.inspectionItemTwo != row.number && |
| | | a.id != row.sampleId |
| | | ); |
| | | console.log("treeTableData", this.treeTableData); |
| | | this.treeTableData.forEach((item) => { |
| | | if (item.id == row.sampleId && item.children.length > 0) { |
| | | item.children.forEach((a) => { |
| | | if (a.inspectionItem == "温度循环") { |
| | | this.$refs.revokeTable.toggleRowSelection(a, false); |
| | | if (a.children.length > 0) { |
| | | a.children.forEach((b) => { |
| | | if (b.inspectionItemTwo == row.number) { |
| | | this.$refs.revokeTable.toggleRowSelection(b, false); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } else if (row.temperatureNumber) { |
| | | // 循环次数 |
| | | this.revokeData = this.revokeData.filter( |
| | | (a) => |
| | | a.inspectionItem != "温度循环" && |
| | | a.id != row.sampleId && |
| | | a.inspectionItemTwo != row.inspectionItemTwo && |
| | | a.number != row.inspectionItemTwo |
| | | ); |
| | | console.log("treeTableData", this.treeTableData); |
| | | this.treeTableData.forEach((item) => { |
| | | if (item.id == row.sampleId && item.children.length > 0) { |
| | | item.children.forEach((a) => { |
| | | if (a.inspectionItem == "温度循环") { |
| | | this.$refs.revokeTable.toggleRowSelection(a, false); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } else if (row.temperature) { |
| | | // 如果是温度循环 |
| | | this.revokeData = this.revokeData.filter( |
| | | (a) => |
| | | a.id != row.sampleId && |
| | | a.inspectionItem != "温度循环" && |
| | | a.parentId != row.id |
| | | ); |
| | | } else { |
| | | this.revokeData = this.revokeData.filter( |
| | | (a) => a.id != row.sampleId |
| | | ); |
| | | } |
| | | } |
| | | console.log("最终结果", this.revokeData); |
| | | }); |
| | | }, |
| | | // load的递归赋值 |
| | | loadRecursion(list, treeId, data) { |
| | | for (let i = 0; i < list.length; i++) { |
| | | let item = list[i]; |
| | | if (item.id == treeId) { |
| | | item.children = data; |
| | | return; |
| | | } |
| | | if (item.children && item.children.length > 0) { |
| | | this.loadRecursion(item.children, treeId, data); |
| | | } |
| | | } |
| | | }, |
| | | // 选中的递归 |
| | | selectedRecursion(list) { |
| | | if (list.children && list.children.length > 0) { |
| | | console.log("有子节点", list); |
| | | |
| | | for (let i = 0; i < list.children.length; i++) { |
| | | let item = list.children[i]; |
| | | this.$refs.revokeTable.toggleRowSelection(item, true); |
| | | this.revokeData.push(item); |
| | | this.revokeData = this.revokeData.filter( |
| | | (m, index, self) => index === self.findIndex((t) => t.id === m.id) |
| | | ); |
| | | if (item.children && item.children.length > 0) { |
| | | this.selectedRecursion(item.children); |
| | | } |
| | | } |
| | | } else { |
| | | console.log("没有子节点", list); |
| | | this.$refs.revokeTable.toggleRowSelection(list, true); |
| | | return; |
| | | } |
| | | }, |
| | | // 递归treeTableData |
| | | recursionTreeTableData(list, data) { |
| | | console.log("list", list); |
| | | // list 选中的数据 data代表treetableData |
| | | for (let i = 0; i < list.length; i++) { |
| | | let item = list[i]; |
| | | for (let j = 0; j < data.length; j++) { |
| | | let m = data[j]; |
| | | if (item.id == m.id) { |
| | | console.log("m", m); |
| | | this.selectedRecursion(m); |
| | | } |
| | | if (m.children && m.children.length > 0) { |
| | | this.recursionTreeTableData(list, m.children); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | watchRecursion(list, flag, id) { |
| | | console.log("999", list, flag, id); |
| | | for (let j = 0; j < this.treeTableData.length; j++) { |
| | | let m = this.treeTableData[j]; |
| | | if (m.id == id) { |
| | | this.$refs.revokeTable.toggleRowSelection(m, flag); |
| | | if (flag) { |
| | | this.revokeData.push(m); |
| | | this.revokeData = this.revokeData.filter( |
| | | (a, index, self) => index === self.findIndex((t) => t.id === a.id) |
| | | ); |
| | | } else { |
| | | this.revokeData = this.revokeData.filter((a) => a.id != id); |
| | | } |
| | | |
| | | if (m.children && m.children.length > 0) { |
| | | m.children.forEach((a) => { |
| | | this.$refs.revokeTable.toggleRowSelection(a, flag); |
| | | if (a.children) { |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | tableSelect(list, flag) { |
| | | if (list.children && list.children.length > 0) { |
| | | for (let i = 0; i < list.children.length; i++) { |
| | | let item = list.children[i]; |
| | | this.$refs.revokeTable.toggleRowSelection(item, flag); |
| | | if (flag) { |
| | | this.revokeData.push(item); |
| | | this.revokeData = this.revokeData.filter( |
| | | (a, index, self) => index === self.findIndex((t) => t.id === a.id) |
| | | ); |
| | | } else { |
| | | this.revokeData = this.revokeData.filter((a) => a.id != item.id); |
| | | } |
| | | if (item.children && item.children.length > 0) { |
| | | this.tableSelect(item, flag); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // 懒加载查询 |
| | | load(tree, treeNode, resolve) { |
| | | treeNode.loading = true; |
| | | if (this.deleteTilte == "撤销") { |
| | | // 是否是温度循环 |
| | | if (tree.temperature) { |
| | | selectTemperatureByProductId({ productId: tree.id }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.loadRecursion(this.treeTableData, tree.id, res.data); |
| | | resolve(res.data); |
| | | this.recursionTreeTableData( |
| | | this.revokeData, |
| | | this.treeTableData |
| | | ); |
| | | treeNode.loading = false; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } |
| | | // 是否是检验次数 |
| | | else if (tree.temperatureNumber) { |
| | | selectTemperatureNumberByProductId({ |
| | | parentId: tree.parentId, |
| | | inspectionItem: tree.inspectionItemTwo, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.loadRecursion(this.treeTableData, tree.id, res.data); |
| | | resolve(res.data); |
| | | this.recursionTreeTableData( |
| | | this.revokeData, |
| | | this.treeTableData |
| | | ); |
| | | treeNode.loading = false; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } else { |
| | | selectProductsBySampleId({ |
| | | sampleId: tree.id, |
| | | orderId: this.orderId, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.treeTableData.forEach((m, index) => { |
| | | if (m.sampleId == tree.id) { |
| | | m.children = res.data; |
| | | } |
| | | }); |
| | | resolve(res.data); |
| | | this.recursionTreeTableData( |
| | | this.revokeData, |
| | | this.treeTableData |
| | | ); |
| | | treeNode.loading = false; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } |
| | | } else if (this.deleteTilte == "撤销审核") { |
| | | // 是否是温度循环 |
| | | if (tree.temperature) { |
| | | revokeReviewTemperatureByProductId({ productId: tree.id }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | resolve(res.data); |
| | | treeNode.loading = false; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } |
| | | // 是否是循环次数 |
| | | else if (tree.temperatureNumber) { |
| | | revokeReviewConsistentByProductId({ |
| | | parentId: tree.parentId, |
| | | inspectionItem: tree.inspectionItemTwo, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | resolve(res.data); |
| | | treeNode.loading = false; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } else { |
| | | revokeReviewProduct({ |
| | | sampleId: tree.id, |
| | | orderId: this.orderId, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | resolve(res.data); |
| | | treeNode.loading = false; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | // 撤销 |
| | | handlEquash(row) { |
| | | if (this.tabIndex != 1) { |
| | | this.quashDialogVisible = true; |
| | | this.insOrderRow = row; |
| | | } else { |
| | | this.orderId = row.id; |
| | | selectSampleByOrderId({ |
| | | orderId: row.id, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.treeTableData = res.data; |
| | | this.treeTableData2 = JSON.parse(JSON.stringify(res.data)); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | this.revocationInsProductIds = ""; |
| | | this.deleteTilte = "撤销"; |
| | | this.deleteDialogVisible = true; |
| | | } |
| | | }, |
| | | handleCloseDelete() { |
| | | this.revokeData = []; |
| | | this.treeTableData = []; |
| | | this.deleteDialogVisible = false; |
| | | }, |
| | | selectDelete(arr) { |
| | | this.deleteList = arr; |
| | | }, |
| | | submitDelete() { |
| | | if (this.deleteTilte == "撤销") { |
| | | if (this.revokeData.length == 0) { |
| | | this.$message.error("请选择要撤销的具体项目"); |
| | | return; |
| | | } |
| | | //this.printLoading = true; |
| | | // 如果勾选了样品 |
| | | let productIds = []; |
| | | let sampleData = this.revokeData.filter( |
| | | (m) => m.hasChildren && !m.temperatureNumber && !m.temperature |
| | | ); |
| | | let sampleIds = []; |
| | | if (sampleData.length > 0) { |
| | | console.log("选择了样品", sampleData); |
| | | sampleIds = sampleData.map((m) => m.id); |
| | | let newDate = this.revokeData.filter((m) => { |
| | | return sampleIds.every((id) => m.sampleId != id); |
| | | }); |
| | | if (newDate) { |
| | | productIds = newDate.map((m) => m.id); |
| | | } |
| | | } else { |
| | | console.log("选择项目"); |
| | | // 过滤掉循环次数 |
| | | let data = this.revokeData.filter((item) => !item.ids); |
| | | // 如果勾选循环次数 |
| | | let data1 = this.revokeData.filter((item) => item.ids); |
| | | productIds = data.map((m) => m.id); |
| | | data1.forEach((item) => { |
| | | if (item.ids.length > 0) { |
| | | item.ids.forEach((a) => { |
| | | productIds.push(a); |
| | | }); |
| | | } |
| | | }); |
| | | productIds = [...new Set(productIds)]; |
| | | } |
| | | let data = { |
| | | orderId: this.orderId, |
| | | sampleIds: sampleIds, |
| | | productIds: productIds, |
| | | }; |
| | | revoke(data) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.deleteDialogVisible = false; |
| | | this.printLoading = false; |
| | | this.revokeData = []; |
| | | this.refreshTable(); |
| | | this.$message.success("撤销成功"); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } else { |
| | | revocationPassed({ |
| | | orderId: this.orderId, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.printLoading = false; |
| | | this.deleteDialogVisible = false; |
| | | this.refreshTable(); |
| | | this.$message.success("更新成功"); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } |
| | | }, |
| | | handlEquashCheck(row) { |
| | | this.orderId = row.id; |
| | | this.revocationInsProductIds = row.revocationInsProductIds; |
| | | this.deleteTilte = "撤销审核"; |
| | | revokeReviewSample({ |
| | | orderId: row.id, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.treeTableData = res.data; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | this.deleteDialogVisible = true; |
| | | }, |
| | | handleNo() { |
| | | if (this.deleteTilte == "撤销") { |
| | | this.deleteDialogVisible = false; |
| | | this.revokeData = []; |
| | | } else { |
| | | revocationCancel({ |
| | | orderId: this.orderId, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.printLoading = false; |
| | | this.deleteDialogVisible = false; |
| | | this.refreshTable(); |
| | | this.$message.success("更新成功"); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } |
| | | }, |
| | | // 下发 |
| | | handleIssued(row) { |
| | | this.issuedDialogVisible = true; |
| | | selectOrderManDay({ |
| | | id: row.id, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.distributeData.orderId = row.id; |
| | | this.distributeData.sampleId = row.sampleId; |
| | | this.distributeData.appointed = res.data; |
| | | this.distributeData.type = row.type; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | upPlanUser2({ |
| | | orderId: row.id, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200 && res.data.length > 0) { |
| | | this.sonLaboratoryList = []; |
| | | res.data.forEach((m) => { |
| | | this.sonLaboratoryList.push({ |
| | | value: m, |
| | | label: m, |
| | | }); |
| | | }); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | submitForm2() { |
| | | if ( |
| | | this.distributeData.appointed == null || |
| | | this.distributeData.appointed == "" |
| | | ) { |
| | | this.$message.error("约定时间未填写"); |
| | | return; |
| | | } |
| | | // |
| | | if ( |
| | | this.distributeData.type == 2 && |
| | | (this.distributeData.userId == null || this.distributeData.userId == "") |
| | | ) { |
| | | this.$message.error("指派人员未填写"); |
| | | return; |
| | | } |
| | | if ( |
| | | this.distributeData.userId && |
| | | (this.distributeData.sonLaboratory == null || |
| | | this.distributeData.sonLaboratory == "") |
| | | ) { |
| | | this.$message.error("试验室未填写"); |
| | | return; |
| | | } |
| | | this.upLoad = true; |
| | | upInsOrder({ |
| | | orderId: this.distributeData.orderId, |
| | | sampleId: this.distributeData.sampleId, |
| | | appointed: this.distributeData.appointed, |
| | | userIdList: [this.distributeData.userId], |
| | | sonLaboratory: this.distributeData.sonLaboratory, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 201) { |
| | | this.upLoad = false; |
| | | return; |
| | | } |
| | | this.$message.success("修改成功"); |
| | | this.upLoad = false; |
| | | this.issuedDialogVisible = false; |
| | | this.refreshTable(); |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | this.$message.error("修改失败"); |
| | | this.upLoad = false; |
| | | }); |
| | | }, |
| | | submitForm() { |
| | | this.upLoad = true; |
| | | if (this.tabIndex == 1) { |
| | | updateInspected({ |
| | | id: this.insOrderRow.id, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.upLoad = false; |
| | | this.quashDialogVisible = false; |
| | | this.refreshTable(); |
| | | this.$message.success("更新成功"); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } else { |
| | | updateStatus({ |
| | | id: this.insOrderRow.id, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.upLoad = false; |
| | | this.quashDialogVisible = false; |
| | | this.refreshTable(); |
| | | this.$message.success("更新成功"); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | } |
| | | }, |
| | | // 下单 |
| | | playOrder(num) { |
| | | // this.active = num; |
| | | // this.examine = 0; |
| | | this.$router.push({ |
| | | name: "addOrder", |
| | | query: { |
| | | active: num, |
| | | examine: 0, |
| | | isPlan: false, |
| | | }, |
| | | }); |
| | | }, |
| | | handleTab(m, i) { |
| | | this.tabIndex = i; |
| | | this.queryParams.state = m.value; |
| | | this.getList(); |
| | | }, |
| | | changeUser() { |
| | | if (this.sonLaboratoryList.length > 0) { |
| | | this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value; |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style></style> |
| | | <style scope> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 50px; |
| | | display: flex; |
| | | align-items: center; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | width: 100px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 90px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 90px); |
| | | } |
| | | |
| | | .table { |
| | | /* margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; */ |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | /* margin-bottom: 12px; */ |
| | | padding-inline-start: 0px; |
| | | } |
| | | |
| | | .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(5) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | |
| | | .tab li.active { |
| | | border-color: #3a7bfa; |
| | | color: #3a7bfa; |
| | | } |
| | | |
| | | .el-form-item { |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .box-card >>> .el-radio__inner { |
| | | border-radius: 2px !important; |
| | | } |
| | | |
| | | .box-card >>> .el-radio__input.is-checked .el-radio__inner::after { |
| | | content: ""; |
| | | width: 8px; |
| | | height: 3px; |
| | | border: 1px solid white; |
| | | border-top: transparent; |
| | | border-right: transparent; |
| | | text-align: center; |
| | | display: block; |
| | | position: absolute; |
| | | top: 3px; |
| | | left: 2px; |
| | | transform: rotate(-45deg); |
| | | border-radius: 0px; |
| | | background: none; |
| | | } |
| | | |
| | | >>> .el-radio__label { |
| | | color: #000 !important; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-radio__label { |
| | | font-size: 8px; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-radio__input.is-checked .el-radio__inner::after { |
| | | content: ""; |
| | | width: 4px; |
| | | height: 3px; |
| | | border: 1px solid #000; |
| | | border-top: transparent; |
| | | border-right: transparent; |
| | | text-align: center; |
| | | display: block; |
| | | position: absolute; |
| | | top: 1px; |
| | | left: 2px; |
| | | transform: rotate(-45deg); |
| | | border-radius: 0px; |
| | | background: none; |
| | | } |
| | | |
| | | >>> .el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | background: #3a7bfa; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | background: transparent; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-radio__inner { |
| | | width: 8px !important; |
| | | height: 8px !important; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-radio__label { |
| | | padding-left: 2px !important; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-card__body { |
| | | padding: 0 !important; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-card { |
| | | border: none; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-radio__input.is-disabled .el-radio__inner { |
| | | border-color: #000 !important; |
| | | } |
| | | |
| | | .el-dialog__body >>> .el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | border: none !important; |
| | | } |
| | | |
| | | .scor { |
| | | width: 0.01cm; |
| | | height: 0.01cm; |
| | | border-radius: 1px; |
| | | border: 1px solid #000; |
| | | display: inline-block; |
| | | } |
| | | |
| | | .ellipsis-multiline { |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | word-wrap: break-word; |
| | | max-height: 3em; |
| | | /* 高度为字体大小的两倍 */ |
| | | line-height: 1.5em; |
| | | /* 行高 */ |
| | | height: 3em; |
| | | /* 高度为行高的两倍 */ |
| | | } |
| | | |
| | | .table-container { |
| | | height: 70vh; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .table-container.el-table { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | } |
| | | </style> |