| | |
| | | <style scoped> |
| | | .ins-order-plan-main .title { |
| | | font-size: 20px; |
| | | color: #3a7bfa; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 120px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .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; |
| | | } |
| | | |
| | | .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); |
| | | } |
| | | |
| | | .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:nth-child(1) { |
| | | border-radius: 8px 0 0 8px; |
| | | } |
| | | |
| | | .tab li:nth-last-child(1) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | |
| | | .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 span:last-child { |
| | | color: #3a7bfa; |
| | | font-size: 23px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .view-self-checkbox { |
| | | margin-left: 50px; |
| | | } |
| | | </style> |
| | | <style> |
| | | .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; |
| | | } |
| | | </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="app-container"> |
| | | <div style="height: 100%"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">委托编号:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | v-model="componentData.entity.entrustCode" |
| | | clearable |
| | | placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">检验状态:</div> |
| | | <div class="search_input"> |
| | | <el-select |
| | | v-model="componentData.entity.insState" |
| | | size="small" |
| | | style="width: 100%" |
| | | @change="refreshTable()" |
| | | > |
| | | <el-option |
| | | v-for="(a, i) in insStateList" |
| | | :key="i" |
| | | :label="a.label" |
| | | :value="a.value" |
| | | ></el-option> |
| | | <el-form :model="queryParams" ref="queryParams" size="small" :inline="true"> |
| | | <el-form-item label="委托编号" prop="entrustCode"> |
| | | <el-input v-model="queryParams.entrustCode" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="检验状态" prop="insState"> |
| | | <el-select v-model="queryParams.insState" size="small" style="width: 100%" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in dict.type.inspection_task_state" :key="i" :label="a.label" |
| | | :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="mini" type="primary" @click="refreshTable()">查询</el-button> |
| | | <el-button size="mini" @click="refresh()">重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="center" v-loading="tableLoading"> |
| | | <div class="center-options"> |
| | | <div style="display: flex; align-items: center"> |
| | | <span style="font-size: 14px">试验室种类:</span> |
| | | <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 v-model="alone" class="view-self-checkbox" |
| | | @change="changeCheckBox"><span>我的任务</span></el-checkbox> |
| | | </div> |
| | | </div> |
| | | <div class="center-title"> |
| | | <span>总计任务数量:</span> |
| | | <span>{{ page.total }}</span> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="search_thing">--> |
| | | <!-- <div class="search_label">下单类别:</div>--> |
| | | <!-- <div class="search_input">--> |
| | | <!-- <el-select v-model="componentData.entity.typeSource" clearable size="small" style="width: 100%;" @change="refreshTable()">--> |
| | | <!-- <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option>--> |
| | | <!-- </el-select>--> |
| | | <!-- </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="21"> |
| | | <div |
| | | style="display: flex; align-items: center; margin-bottom: 10px" |
| | | > |
| | | <span style="margin-right: 8px">试验室种类:</span> |
| | | <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 |
| | | v-model="alone" |
| | | class="view-self-checkbox" |
| | | @change="changeCheckBox" |
| | | ><span>我的任务</span></el-checkbox |
| | | > |
| | | </div> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" |
| | | :rowClassName="rowClassName" :height="'calc(100vh - 300px)'" @pagination="pagination" |
| | | key="tableData0"> |
| | | <div slot="action" slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="handleDataLook(scope.row)">数据查看</el-button> |
| | | <el-button type="text" size="small" |
| | | :disabled="(scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5) && checkPermi(['update:product:onPlan'])" |
| | | @click="editInspection(scope.row)">修改检验值</el-button> |
| | | <el-button type="text" size="small" :disabled="( |
| | | scope.row.userName == null || |
| | | scope.row.insState == 3 || |
| | | scope.row.insState == 5 || |
| | | (scope.row.userName && !scope.row.userName.includes(nickName)) |
| | | )" |
| | | @click="handleInspection(scope.row)">检验</el-button> |
| | | <el-button type="text" size="small" :disabled="( |
| | | scope.row.userName == null || |
| | | scope.row.insState == 5 || |
| | | scope.row.insState == 3 || |
| | | (scope.row.userName && !scope.row.userName.includes(nickName)) |
| | | )" |
| | | @click="handleConnect(scope.row)">交接</el-button> |
| | | <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">原始记录</el-button> |
| | | <el-popover placement="bottom" trigger="hover" style="margin-left: 6px" :disabled="(scope.row.insState != 3 || scope.row.userName == null ||(scope.row.userName && !scope.row.userName.includes(nickName)))"> |
| | | <template #reference> |
| | | <el-button link type="text" size="small" :disabled="(scope.row.insState != 3 || scope.row.userName == null || |
| | | (scope.row.userName && !scope.row.userName.includes(nickName)))">更多</el-button> |
| | | </template> |
| | | <div> |
| | | <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null || |
| | | (scope.row.userName && !scope.row.userName.includes(nickName)))" style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">下载报告</el-button> |
| | | <el-upload ref='upload' |
| | | :action="javaApi + '/insReport/inReport'" |
| | | :before-upload="beforeUpload" |
| | | :data="{id: scope.row.insReportId}" |
| | | :headers="uploadHeader" :on-error="onError" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" |
| | | style="display: inline;margin: 0 6px" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'> |
| | | <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null || |
| | | (scope.row.userName && !scope.row.userName.includes(nickName)))" size="small" type="text">上传</el-button> |
| | | </el-upload> |
| | | <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null || |
| | | (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small" @click="handleRestore(scope.row)">还原</el-button> |
| | | <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null || |
| | | (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small" @click="handleIssued(scope.row)">查看报告</el-button> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <div class="center-title"> |
| | | <span>总计任务数量:</span> |
| | | <span v-if="$refs.insOrderPlan != undefined">{{ |
| | | $refs.insOrderPlan.total |
| | | }}</span> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <ValueTable |
| | | :key="upIndex" |
| | | ref="insOrderPlan" |
| | | :componentData="componentData" |
| | | :isColumnWidth="true" |
| | | :tableRowClassName="changeRowClass" |
| | | :upUrl="$api.user.updateUser" |
| | | :url="$api.insOrderPlan.selectInsOrderPlanList" |
| | | class="value-table" |
| | | @handleInspection="handleInspection" |
| | | /> |
| | | </el-popover> |
| | | </div> |
| | | </lims-table> |
| | | </div> |
| | | </div> |
| | | <el-dialog :visible.sync="claimVisible" title="提示" width="400px"> |
| | | 是否认领委托编号<span style="color: #33c130">{{ |
| | | sampleUserForm.entrustCode |
| | | }}</span |
| | | >的任务 |
| | | }}</span>的任务 |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="claimVisible = false">取 消</el-button> |
| | | <el-button :loading="loading" type="primary" @click="confirmClaim" |
| | | >确 定</el-button |
| | | > |
| | | <el-button :loading="loading" type="primary" @click="confirmClaim">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="connectVisible" title="检验交接" width="400px"> |
| | |
| | | <span class="required-span">* </span>交接人员: |
| | | </div> |
| | | <div class="search_input"> |
| | | <el-select |
| | | v-model="connect.connectPerson" |
| | | filterable |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in personList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="connect.connectPerson" filterable placeholder="请选择" style="width: 100%"> |
| | | <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | <span class="required-span">* </span>试验室: |
| | | </div> |
| | | <div class="search_input"> |
| | | <el-select |
| | | v-model="connect.sonLaboratory" |
| | | filterable |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in sonLaboratoryList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="connect.sonLaboratory" filterable placeholder="请选择" style="width: 100%"> |
| | | <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="connectVisible = false">取 消</el-button> |
| | | <el-button :loading="loading" type="primary" @click="confirmConnect" |
| | | >确 定</el-button |
| | | > |
| | | <el-button :loading="loading" type="primary" @click="confirmConnect">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <div |
| | | v-if="activeFace > 0 && isCopper == null" |
| | | style="width: 100%; height: 100%" |
| | | > |
| | | <!-- <Add :active="activeFace" :currentId="currentId" :examine="examine" /> --> |
| | | </div> |
| | | <div |
| | | v-if="activeFace > 0 && isCopper == 0" |
| | | style="width: 100%; height: 100%" |
| | | > |
| | | <!-- <CustomsInspection |
| | | :active="activeFace" |
| | | :currentId="currentId" |
| | | :customsInspection="customsInspection" |
| | | :isReport="isReport" |
| | | /> --> |
| | | </div> |
| | | <div |
| | | v-if="activeFace > 0 && isCopper == 1" |
| | | style="width: 100%; height: 100%" |
| | | > |
| | | <!-- <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder> --> |
| | | </div> |
| | | <!--<Inspection |
| | | v-if="state > 0" |
| | | :key="InspectionKey" |
| | | :inspectorList="inspectorList" |
| | | :orderId="orderId" |
| | | :sonLaboratory="sonLaboratory" |
| | | :state="state" |
| | | :typeSource="typeSource" |
| | | @goback="goback" |
| | | @refreshView="refreshView" |
| | | />--> |
| | | <el-dialog :visible.sync="dataDialogVisible" title="数据查看" width="80%"> |
| | | <div v-if="dataDialogVisible" style="height: 70vh; overflow-y: auto"> |
| | | <ValueTable |
| | | ref="ValueTableDataLook" |
| | | :componentData="componentDataDataLook" |
| | | :rowKey="'insProductId'" |
| | | :url="$api.insOrder.selectSampleAndProductByOrderId" |
| | | /> |
| | | <div v-if="dataDialogVisible" style="height: 74vh; overflow-y: auto"> |
| | | <div> |
| | | <el-form :model="entity" :inline="true"> |
| | | <el-form-item label="检验项" prop="outputWorkTime"> |
| | | <el-input v-model="entity.inspectionItem" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="small" type="primary" @click="getLookList">查询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <lims-table :tableData="lookTableData" :column="lookColumn" :page="lookPage" :tableLoading="lookTableLoading" |
| | | :height="'60vh'" @pagination="lookPagination" key="tableData1" :key="upIndex"></lims-table> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :visible.sync="bindDialogVisible" |
| | | title="检验项绑定" |
| | | width="600px" |
| | | > |
| | | <div |
| | | slot="title" |
| | | style=" |
| | | <el-dialog :visible.sync="bindDialogVisible" title="检验项绑定" width="600px"> |
| | | <div slot="title" style=" |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | " |
| | | > |
| | | "> |
| | | <span>检验项绑定</span> |
| | | <el-button |
| | | style="float: right; margin-left: 360px" |
| | | size="small" |
| | | @click="openBindAdd" |
| | | type="primary" |
| | | > |
| | | <el-button style="float: right; margin-left: 360px" size="small" @click="openBindAdd" type="primary"> |
| | | 新增 |
| | | </el-button> |
| | | </div> |
| | | <el-table :data="bindTableData" style="width: 100%" height="70vh"> |
| | | <el-table-column |
| | | prop="inspectionItemClass" |
| | | label="检验项分类" |
| | | width="150" |
| | | > |
| | | <el-table :data="bindTableData" style="width: 100%" height="70vh" v-loading="bindTableDataLoading" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border> |
| | | <el-table-column prop="inspectionItemClass" label="检验项分类" width="150"> |
| | | </el-table-column> |
| | | <el-table-column prop="inspectionItem" label="检验项" width="150"> |
| | | </el-table-column> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" @click="handleDelete(scope.row)" |
| | | >删除</el-button |
| | | > |
| | | <el-button size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :visible.sync="bindAddDialogVisible" |
| | | title="选择绑定" |
| | | width="600px" |
| | | > |
| | | <el-table |
| | | :data="bindAddTableData" |
| | | style="width: 100%" |
| | | height="60vh" |
| | | @selection-change="handleBindAddSelectionChange" |
| | | > |
| | | <el-dialog :visible.sync="bindAddDialogVisible" title="选择绑定" width="600px"> |
| | | <el-table :data="bindAddTableData" style="width: 100%" height="60vh" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border |
| | | @selection-change="handleBindAddSelectionChange"> |
| | | <el-table-column type="selection" width="55"> </el-table-column> |
| | | <el-table-column |
| | | prop="inspectionItemClass" |
| | | label="检验项分类" |
| | | width="150" |
| | | > |
| | | <el-table-column prop="inspectionItemClass" label="检验项分类" width="150"> |
| | | </el-table-column> |
| | | <el-table-column prop="inspectionItem" label="检验项" width="150"> |
| | | </el-table-column> |
| | |
| | | </el-table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="bindAddDialogVisible = false">取 消</el-button> |
| | | <el-button :loading="loading" type="primary" @click="bindAdd" |
| | | >绑 定</el-button |
| | | > |
| | | <el-button :loading="loading" type="primary" @click="bindAdd">绑 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <un-pass-retest-result |
| | | v-if="retestVisible" |
| | | :retestInfo="retestInfo" |
| | | :retestVisible="retestVisible" |
| | | @closeRetestLook="closeRetestLook" |
| | | ></un-pass-retest-result> |
| | | <!--产业链信息查看--> |
| | | <!-- <ShowInfo |
| | | v-if="showInfoDialog" |
| | | ref="showInfoDialog" |
| | | :showInfoDialog="showInfoDialog" |
| | | ></ShowInfo> --> |
| | | <!--修改检验值弹框--> |
| | | <edit-inspection-item ref="editInspectionItem"></edit-inspection-item> |
| | | <!--查看工时弹框--> |
| | | <viewManHourDia ref="viewManHourDia"></viewManHourDia> |
| | | <!--不合格复测查看弹框--> |
| | | <un-pass-retest-result v-if="retestVisible" :retestInfo="retestInfo" :retestVisible="retestVisible" @closeRetestLook="closeRetestLook"></un-pass-retest-result> |
| | | <!--报告查看--> |
| | | <el-dialog title="报告查看" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false" |
| | | :fullscreen="fullscreen"> |
| | | <div class="full-screen"> |
| | | <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen = true;" |
| | | v-if="!fullscreen"></i> |
| | | <img src="@/assets/images/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen = false;"> |
| | | </div> |
| | | <div style="height: 80vh;" v-if="issuedVisible"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog title="查看附件" :visible.sync="lookDialogVisible" width="800px" top="5vh" fullscreen> |
| | | <filePreview v-if="lookDialogVisible" :fileUrl="javaApi + '/word/' + currentInfo.tempUrlPdf" :currentFile="{}" |
| | | style="max-height: 90vh;overflow-y: auto;" /> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from "@/components/Table/value-table.vue"; |
| | | // import Inspection from "../do/b1-inspect-order-plan/Inspection.vue"; |
| | | // import CustomsInspection from "../do/b1-material-ins-order/customs-inspection.vue"; |
| | | import { getYearAndMonthAndDays } from "@/utils/date"; |
| | | // import Add from "../do/b1-ins-order/add.vue"; |
| | | // import ShowInfo from "../do/b1-material-ins-order/showInfo.vue"; |
| | | // import CopperOrder from "../do/b1-material-ins-order/copper-order.vue"; |
| | | |
| | | import EditInspectionItem from "./components/EditInspectionItem.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import viewManHourDia from "./components/viewManHourDia.vue" |
| | | import UnPassRetestResult from "@/components/rawMaterialInspection/unPassRetestResult.vue" |
| | | import { |
| | | claimInsOrderPlan, |
| | | upPlanUser2, |
| | | upPlanUser, |
| | | selectUserCondition, |
| | | getBindingProductByProductId, |
| | | getProductTreeByProductId, |
| | | bindingProductTreeByProductId, |
| | | delProductTreeByProductId, |
| | | selectInsOrderPlanList, |
| | | selectSampleAndProductByOrderId, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | import { mapGetters } from "vuex"; |
| | | import {getRetestResult} from "@/api/business/rawMaterialOrder"; |
| | | import {upReportUrl} from "@/api/business/insReport"; |
| | | import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue"; |
| | | import filePreview from "@/components/Preview/filePreview.vue"; |
| | | export default { |
| | | name: 'InspectionTask', |
| | | components: { |
| | | filePreview, onlyoffice, |
| | | EditInspectionItem, |
| | | // CopperOrder, |
| | | // ShowInfo, |
| | | ValueTable, |
| | | // Inspection, |
| | | // Add, |
| | | // CustomsInspection, |
| | | limsTable, |
| | | viewManHourDia, |
| | | UnPassRetestResult |
| | | }, |
| | | dicts: ["urgency_level", "inspection_task_state"], |
| | | computed: { |
| | | ...mapGetters(["nickName", "userId"]), |
| | | }, |
| | | data() { |
| | | return { |
| | | issuedVisible: false, |
| | | fullscreen: false, |
| | | lookDialogVisible: false, |
| | | option: null, |
| | | InspectionKey: 1, |
| | | bindDialogVisible: false, |
| | | bindAddDialogVisible: false, |
| | | bindTableDataLoading: false, |
| | | bindTableData: [], |
| | | bindAddTableData: [], |
| | | chooseBindAddList: [], |
| | |
| | | ], |
| | | active: 1, |
| | | tabIndex: 0, |
| | | componentDataDataLook: { |
| | | entity: { |
| | | id: 0, |
| | | orderBy: { |
| | | field: "sampleCode", |
| | | order: "asc", |
| | | }, |
| | | }, |
| | | isIndex: false, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [ |
| | | { |
| | | id: "parent", |
| | | font: "不合格复测查看", |
| | | type: "text", |
| | | method: "getRetestResult", |
| | | disabFun: (row, index) => { |
| | | return row.insResult != 0; |
| | | }, |
| | | }, |
| | | { |
| | | id: "parent", |
| | | font: "检验项绑定", |
| | | type: "text", |
| | | method: "getBinding", |
| | | disabFun: (row, index) => { |
| | | return ( |
| | | this.lookInfo.userName == null || |
| | | this.lookInfo.insState == 3 || |
| | | this.lookInfo.insState == 5 |
| | | ); |
| | | }, |
| | | }, |
| | | ], |
| | | 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: 6, |
| | | }, |
| | | ], |
| | | }, |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | }, |
| | | dataDialogVisible: false, |
| | | componentData: { |
| | | entity: { |
| | | orderBy: { |
| | | field: "entrustCode", |
| | | order: "asc", |
| | | }, |
| | | sonLaboratory: null, |
| | | insState: null, |
| | | userId: null, |
| | | typeSource: null, |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | init: false, |
| | | needSort: ["createTime", "sendTime", "type", "appointed", "insState"], |
| | | do: [ |
| | | { |
| | | id: "", |
| | | font: "数据查看", |
| | | type: "text", |
| | | method: "handleDataLook", |
| | | }, |
| | | { |
| | | id: "", |
| | | font: "修改检验值", |
| | | type: "text", |
| | | method: "editInspection", |
| | | disabFun: (row, index) => { |
| | | return ( |
| | | row.userName == null || row.insState == 3 || row.insState == 5 |
| | | ); |
| | | }, |
| | | }, |
| | | { |
| | | id: "", |
| | | font: "检验", |
| | | type: "text", |
| | | method: "handleInspection", |
| | | disabFun: (row, index) => { |
| | | return ( |
| | | row.userName == null || |
| | | row.insState == 3 || |
| | | row.insState == 5 || |
| | | (row.userName && |
| | | !row.userName.includes( |
| | | JSON.parse(localStorage.getItem("user")).name |
| | | )) |
| | | ); |
| | | }, |
| | | }, |
| | | { |
| | | id: "", |
| | | font: "交接", |
| | | type: "text", |
| | | method: "handleConnect", |
| | | disabFun: (row, index) => { |
| | | return ( |
| | | row.userName == null || |
| | | row.insState == 5 || |
| | | row.insState == 3 || |
| | | (row.userName && |
| | | !row.userName.includes( |
| | | JSON.parse(localStorage.getItem("user")).name |
| | | )) |
| | | ); |
| | | }, |
| | | }, |
| | | // { |
| | | // font: '产业链', |
| | | // type: 'text', |
| | | // method: 'openInfoDialog', |
| | | // disabFun: (row, index) => { |
| | | // return row.typeSource !== 1 |
| | | // } |
| | | // }, |
| | | // { |
| | | // id: '', |
| | | // font: '认领', |
| | | // type: 'text', |
| | | // method: 'claimFun', |
| | | // disabFun: (row, index) => { |
| | | // return row.userName != null || row.checkName!=null |
| | | // } |
| | | // }, |
| | | { |
| | | id: "", |
| | | font: "原始记录", |
| | | type: "text", |
| | | method: "viewInspectInfo", |
| | | }, |
| | | ], |
| | | 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", |
| | | }, |
| | | ], |
| | | }, |
| | | typeSource: { |
| | | select: [ |
| | | { |
| | | value: 0, |
| | | label: "成品下单", |
| | | type: "info", |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: "原材料下单", |
| | | type: "info", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "原材料下单", |
| | | type: "info", |
| | | }, |
| | | ], |
| | | }, |
| | | orderType: { |
| | | select: [ |
| | | { |
| | | value: "Customer-ordered test", |
| | | label: "委托试验", |
| | | type: "success", |
| | | effect: "plain", |
| | | }, |
| | | { |
| | | value: "抽检", |
| | | label: "抽检", |
| | | type: "", |
| | | effect: "plain", |
| | | }, |
| | | { |
| | | value: "进厂检验", |
| | | label: "进厂检验", |
| | | type: "info", |
| | | effect: "plain", |
| | | }, |
| | | { |
| | | value: "Quarterly inspection", |
| | | label: "季度检验", |
| | | type: "warning", |
| | | effect: "plain", |
| | | }, |
| | | ], |
| | | }, |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | }, |
| | | upIndex: 0, |
| | | planTotal: 0, |
| | | insStateList: [], |
| | | state: 0, // 0:台账页,1:检验页面,2检验页面(复核),默认为0,3数据查看 |
| | |
| | | customsInspection: {}, |
| | | showInfoDialog: false, // 产业链信息查看 |
| | | isReport: 0, |
| | | retestVisible: false, |
| | | retestInfo: [], |
| | | isCopper: null, |
| | | bindCurrentInfo: {}, |
| | | lookInfo: {}, |
| | | orderTypeList: [ |
| | | { |
| | | value: "Customer-ordered test", |
| | | label: "委托试验", |
| | | type: "success", |
| | | effect: "plain", |
| | | }, |
| | | { |
| | | value: "抽检", |
| | | label: "抽检", |
| | | type: "", |
| | | effect: "plain", |
| | | }, |
| | | { |
| | | value: "进厂检验", |
| | | label: "进厂检验", |
| | | type: "info", |
| | | effect: "plain", |
| | | }, |
| | | { |
| | | value: "Quarterly inspection", |
| | | label: "季度检验", |
| | | type: "warning", |
| | | effect: "plain", |
| | | }, |
| | | ], |
| | | urgencyLevel: [], |
| | | inspectionTaskState: [], |
| | | tableData: [], |
| | | column: [ |
| | | { |
| | | label: "委托编号", |
| | | prop: "entrustCode", |
| | | width: "160px", |
| | | dataType: "link", |
| | | linkMethod: "selectAllByOne", |
| | | }, |
| | | { label: "样品名称", prop: "sample", width: "160px" }, |
| | | { |
| | | label: "下单类别", |
| | | prop: "typeSource", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "成品下单"; |
| | | } else { |
| | | return "原材料下单"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "样品型号", prop: "sampleModel", width: "120px" }, |
| | | { |
| | | label: "紧急程度", |
| | | prop: "type", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return '普通' |
| | | } else if (params == 1) { |
| | | return '优先' |
| | | } else { |
| | | return '紧急' |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return 'success' |
| | | } else if (params == 1) { |
| | | return 'warning' |
| | | } else { |
| | | return 'danger' |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | label: "检验类型", |
| | | prop: "orderType", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.orderTypeList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.orderTypeList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { |
| | | label: "状态", |
| | | prop: "insState", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (this.inspectionTaskState.find((m) => m.value == params)) { |
| | | return this.inspectionTaskState.find((m) => m.value == params).label; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (this.inspectionTaskState.find((m) => m.value == params)) { |
| | | return this.inspectionTaskState.find((m) => m.value == params).type; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | | { label: "检验人", prop: "userName" }, |
| | | { label: "复核人", prop: "checkName" }, |
| | | { label: "约定时间", prop: "appointed" }, |
| | | { label: "下发时间", prop: "sendTime", width: "140px" }, |
| | | { label: "检验开始时间", prop: "insTime", width: "140px" }, |
| | | { label: "理由", prop: "verifyTell", width: "140px" }, |
| | | { |
| | | fixed: "right", |
| | | dataType: "slot", |
| | | slot: "action", |
| | | width: '340px', |
| | | label: "操作" |
| | | } |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 20, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | queryParams: {}, |
| | | insResultList: [ |
| | | { |
| | | value: 1, |
| | | label: "合格", |
| | | type: "success", |
| | | }, |
| | | { |
| | | value: 0, |
| | | label: "不合格", |
| | | type: "danger", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "不判定", |
| | | type: "", |
| | | }, |
| | | ], |
| | | // 数据查看相关字段---开始 |
| | | entity: { |
| | | inspectionItem: "", |
| | | }, |
| | | lookTableData: [], |
| | | lookColumn: [ |
| | | { |
| | | label: "样品编号", |
| | | prop: "sampleCode", |
| | | width: "140px", |
| | | mergeCol: true, //合并列 |
| | | }, |
| | | { label: "样品名称", prop: "sample", width: "140px", mergeCol: true }, |
| | | { label: "检验项分类", prop: "inspectionItemClass" }, |
| | | { label: "检验项", prop: "inspectionItem", width: "140px" }, |
| | | { label: "检验子项", prop: "inspectionItemSubclass" }, |
| | | { label: "单位", prop: "unit" }, |
| | | { label: "样品型号", prop: "model", mergeCol: true }, |
| | | { label: "条件", prop: "radius" }, |
| | | { label: "电缆标识", prop: "cableTag" }, |
| | | { label: "试验要求", prop: "tell" }, |
| | | { label: "检验结果", prop: "lastValue" }, |
| | | { |
| | | label: "结果判定", |
| | | prop: "insResult", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | let obj = this.insResultList.find((m) => m.value == params) |
| | | if (obj) { |
| | | return this.insResultList.find((m) => m.value == params).label; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | let obj = this.insResultList.find((m) => m.value == params) |
| | | if (obj) { |
| | | return this.insResultList.find((m) => m.value == params).type; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "操作", |
| | | operation: [ |
| | | { |
| | | name: "不合格复测查看", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.getRetestResultInfo(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.insResult!=0 |
| | | }, |
| | | }, |
| | | { |
| | | name: "检验项绑定", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.getBinding(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return ( |
| | | this.lookInfo.userName == null || |
| | | this.lookInfo.insState == 3 || |
| | | this.lookInfo.insState == 5 |
| | | ); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | lookPage: { |
| | | total: 0, |
| | | size: 20, |
| | | current: 0, |
| | | }, |
| | | lookTableLoading: false, |
| | | // 数据查看相关字段---结束 |
| | | retestVisible: false, |
| | | upIndex: 0 |
| | | }; |
| | | }, |
| | | created() { |
| | | // this.getLaboratoryDicts() |
| | | this.getTypeDicts(); |
| | | this.getInsStateDicts(); |
| | | mounted() { |
| | | this.getAuthorizedPerson(); |
| | | this.queryParams.userId = this.userId; |
| | | this.currentTime = getYearAndMonthAndDays(); |
| | | this.getDicts("urgency_level").then((response) => { |
| | | this.urgencyLevel = this.dictToValue(response.data); |
| | | }); |
| | | this.getDicts("inspection_task_state").then((response) => { |
| | | this.inspectionTaskState = this.dictToValue(response.data); |
| | | }); |
| | | this.refreshTable(); |
| | | }, |
| | | activated() { |
| | | this.getAuthorizedPerson(); |
| | | this.currentTime = getYearAndMonthAndDays(); |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | this.componentData.entity.userId = user.userId; |
| | | this.getPower(); |
| | | this.getDicts("urgency_level").then((response) => { |
| | | this.urgencyLevel = this.dictToValue(response.data); |
| | | }); |
| | | this.getDicts("inspection_task_state").then((response) => { |
| | | this.inspectionTaskState = this.dictToValue(response.data); |
| | | }); |
| | | this.refreshTable(); |
| | | }, |
| | | methods: { |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | selectInsOrderPlanList({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | getLookList() { |
| | | this.lookTableLoading = true; |
| | | let param = { id: this.lookInfo.id, ...this.lookPage, inspectionItem: this.entity.inspectionItem }; |
| | | delete param.total; |
| | | selectSampleAndProductByOrderId({ ...param }) |
| | | .then((res) => { |
| | | this.lookTableLoading = false; |
| | | if (res.code === 200) { |
| | | this.lookTableData = res.data.records; |
| | | this.lookPage.total = res.data.total; |
| | | this.upIndex++ |
| | | this.dataDialogVisible = true; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.lookTableLoading = false; |
| | | }); |
| | | }, |
| | | lookPagination({ page, limit }) { |
| | | this.lookPage.current = page; |
| | | this.lookPage.size = limit; |
| | | this.getLookList(); |
| | | }, |
| | | // 修改检验值 |
| | | editInspection(row) { |
| | | this.$refs.editInspectionItem.showDialog(row.id); |
| | | }, |
| | | // 刷新页面 |
| | | refreshView() { |
| | | this.InspectionKey++; |
| | | // 查看工时 |
| | | viewManHour(row) { |
| | | this.$refs.viewManHourDia.showDialog(row.id, row.insState); |
| | | }, |
| | | // 数据查看 |
| | | handleDataLook(row) { |
| | | this.lookInfo = row; |
| | | this.componentDataDataLook.entity.id = row.id; |
| | | this.dataDialogVisible = true; |
| | | }, |
| | | // 查看不合格复测结果 |
| | | getRetestResult(row) { |
| | | this.$axios |
| | | .get( |
| | | this.$api.insOrder.getRetestResult + |
| | | "?insProductId=" + |
| | | row.insProductId |
| | | ) |
| | | .then((res) => { |
| | | if (res.code == 201) return; |
| | | this.retestVisible = true; |
| | | this.retestInfo = res.data; |
| | | }); |
| | | }, |
| | | // |
| | | closeRetestLook() { |
| | | this.retestVisible = false; |
| | | }, |
| | | // 权限分配 |
| | | getPower(radio) { |
| | | let power = JSON.parse(sessionStorage.getItem("power")); |
| | | let inspection = false; |
| | | let connect = false; |
| | | let review = false; |
| | | let claim = 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 (!claim) { |
| | | this.componentData.do.splice(3, 1); |
| | | } |
| | | if (!review) { |
| | | this.componentData.do.splice(2, 1); |
| | | } |
| | | if (!connect) { |
| | | this.componentData.do.splice(1, 1); |
| | | } |
| | | if (!inspection) { |
| | | this.componentData.do.splice(0, 1); |
| | | } |
| | | this.getLookList(); |
| | | }, |
| | | changeCheckBox(val) { |
| | | this.componentData.entity.userId = val ? 0 : null; |
| | | this.queryParams.userId = val ? 0 : null; |
| | | this.refreshTable(); |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy); |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | this.componentData.entity.userId = user.userId; |
| | | this.queryParams = {}; |
| | | this.queryParams.userId = this.userId; |
| | | this.alone = true; |
| | | this.refreshTable(); |
| | | }, |
| | | // claimFun(row) { |
| | | // if (row) { |
| | | // this.sampleUserForm = { |
| | | // entrustCode: row.entrustCode, |
| | | // insSampleId: row.id, |
| | | // sonLaboratory: row.sonLaboratory, |
| | | // } |
| | | // this.claimVisible = true |
| | | // } |
| | | // }, |
| | | refreshTable(e) { |
| | | this.page.current = 1; |
| | | this.queryParams.typeSource = this.tabIndex; |
| | | this.getList(); |
| | | }, |
| | | // 下载报告 |
| | | download(row) { |
| | | let url = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + url; |
| | | link.target = '_blank'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }, |
| | | // 还原操作 |
| | | handleRestore(row) { |
| | | this.$confirm('是否还原当前报告?', "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | upReportUrl({ id: row.insReportId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('还原成功') |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | }).catch(() => { }) |
| | | |
| | | }, |
| | | // 查看报告 |
| | | handleIssued(row) { |
| | | console.log('================') |
| | | // todo: 查看报告组件 |
| | | this.currentInfo = row; |
| | | let fileName = row.url |
| | | let fileType = "docx" |
| | | if (row.tempUrlPdf != null || row.tempUrlPdf === '') { |
| | | fileName = row.tempUrlPdf |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | | fileType: fileType, |
| | | title: fileName, |
| | | lang: 'zh-CN', |
| | | isPrint: false, |
| | | user_id: 1, |
| | | user_name: userName, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName |
| | | } |
| | | this.issuedVisible = true; |
| | | }, |
| | | // 查看产业链信息 |
| | | openInfoDialog(row) { |
| | | this.showInfoDialog = true; |
| | |
| | | }, |
| | | confirmClaim() { |
| | | this.loading = true; |
| | | this.$axios |
| | | .post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | }) |
| | | claimInsOrderPlan(this.sampleUserForm) |
| | | .then((res) => { |
| | | if (res.code === 200 && res.data) { |
| | | this.loading = false; |
| | |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | refreshTable(e) { |
| | | this.componentData.entity.typeSource = this.tabIndex; |
| | | this.$refs.insOrderPlan.selectList(e); |
| | | }, |
| | | changeRowClass({ row, rowIndex }) { |
| | | rowClassName({ row, rowIndex }) { |
| | | if (this.currentTime == row.appointed) { |
| | | return "highlight-warning-row-border"; |
| | | } else if (this.currentTime > row.appointed) { |
| | |
| | | } |
| | | 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 = ""; |
| | | this.queryParams.sonLaboratory = ""; |
| | | 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; |
| | | }); |
| | | }, |
| | | 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.isCopper = row.isCopper; |
| | | this.customsInspection = row; |
| | |
| | | this.examine = 1; |
| | | this.isReport = 0; |
| | | this.currentId = parseInt(row.id); |
| | | }, |
| | | playOrder(num) { |
| | | this.activeFace = num; |
| | | switch (row.isCopper) { |
| | | case 0: |
| | | // 原材料 |
| | | this.$router.push({ |
| | | path: "/materialOrder/customsInspectionView", query: { |
| | | customsInspection: row, |
| | | active: this.activeFace, |
| | | currentId: this.currentId, |
| | | isReport: this.isReport |
| | | } |
| | | }); |
| | | break; |
| | | case null: |
| | | // 成品 |
| | | this.$router.push({ |
| | | path: "/productOrder/addView", query: { |
| | | examine: this.examine, |
| | | active: this.activeFace, |
| | | currentId: this.currentId |
| | | } |
| | | }); |
| | | break; |
| | | case 1: |
| | | // 铜材 |
| | | this.$router.push({ |
| | | path: "/materialOrder/CopperView", query: { |
| | | active: this.activeFace, |
| | | currentId: this.currentId |
| | | } |
| | | }); |
| | | break; |
| | | } |
| | | |
| | | }, |
| | | goback() { |
| | | this.state = 0; |
| | |
| | | if (row.userName) { |
| | | inspectorList = row.userName.split(","); |
| | | } |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | if (user) { |
| | | inspectorList.push(user.name); |
| | | if (this.nickName) { |
| | | inspectorList.push(this.nickName); |
| | | } |
| | | this.inspectorList = inspectorList; |
| | | this.sonLaboratory = row.sonLaboratory; |
| | | this.state = 1; |
| | | this.typeSource = row.typeSource; |
| | | this.orderId = row.id; |
| | | this.$router.push({ |
| | | path: "/inspectionTask/inspection", |
| | | query: { |
| | | inspectorList: this.inspectorList, |
| | | sonLaboratory: this.sonLaboratory, |
| | | state: this.state, |
| | | typeSource: this.typeSource, |
| | | orderId: this.orderId, |
| | | }, |
| | | }); |
| | | }, |
| | | // 查看检验数据 |
| | | viewInspectInfo(row) { |
| | |
| | | if (row.userName) { |
| | | inspectorList = row.userName.split(","); |
| | | } |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | if (user) { |
| | | inspectorList.push(user.name); |
| | | if (this.nickName) { |
| | | inspectorList.push(this.nickName); |
| | | } |
| | | this.inspectorList = inspectorList; |
| | | this.sonLaboratory = row.sonLaboratory; |
| | | this.state = 3; |
| | | this.typeSource = row.typeSource; |
| | | this.orderId = row.id; |
| | | this.$router.push({ |
| | | path: "/inspectionTask/inspection", |
| | | query: { |
| | | inspectorList: this.inspectorList, |
| | | sonLaboratory: this.sonLaboratory, |
| | | state: this.state, |
| | | typeSource: this.typeSource, |
| | | orderId: this.orderId, |
| | | }, |
| | | }); |
| | | }, |
| | | handleConnect(row) { |
| | | this.orderId = 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, |
| | | }); |
| | | upPlanUser2({ orderId: this.orderId }).then((res) => { |
| | | if (res.code === 200 && res.data.length > 0) { |
| | | this.sonLaboratoryList = []; |
| | | res.data.forEach((m) => { |
| | | this.sonLaboratoryList.push({ |
| | | value: m, |
| | | label: m, |
| | | }); |
| | | this.connect.sonLaboratory = this.sonLaboratoryList[0].value; |
| | | } |
| | | }); |
| | | }); |
| | | this.connect.sonLaboratory = this.sonLaboratoryList[0].value; |
| | | } |
| | | }); |
| | | }, |
| | | confirmConnect() { |
| | | if ( |
| | |
| | | return; |
| | | } |
| | | this.loading = true; |
| | | this.$axios |
| | | .post(this.$api.insOrderPlan.upPlanUser, { |
| | | orderId: this.orderId, |
| | | userId: this.connect.connectPerson, |
| | | sonLaboratory: this.connect.sonLaboratory, |
| | | }) |
| | | upPlanUser({ |
| | | orderId: this.orderId, |
| | | userId: this.connect.connectPerson, |
| | | sonLaboratory: this.connect.sonLaboratory, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.loading = false; |
| | |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | handleReview(row) { |
| | | this.state = 2; |
| | | this.orderId = row.id; |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then((res) => { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | this.personList = data; |
| | | }); |
| | | }, |
| | | // 查看不合格复测结果 |
| | | getRetestResultInfo (row) { |
| | | getRetestResult({insProductId: row.insProductId}).then(res => { |
| | | this.retestVisible = true |
| | | this.retestInfo = res.data |
| | | }) |
| | | }, |
| | | closeRetestLook () { |
| | | this.retestVisible = false |
| | | }, |
| | | // 绑定检验项绑定 |
| | | getBinding(row) { |
| | | this.bindCurrentInfo = row; |
| | | this.$axios |
| | | .get( |
| | | this.$api.insOrderPlan.getBindingProductByProductId + |
| | | "?productId=" + |
| | | row.insProductId |
| | | ) |
| | | getBindingProductByProductId({ productId: row.insProductId }) |
| | | .then((res) => { |
| | | if (res.coe == 201) { |
| | | // this.$message.error('未绑定检验项') |
| | | return; |
| | | } |
| | | // console.log(res) |
| | | this.bindTableData = res.data; |
| | | this.bindDialogVisible = true; |
| | | }) |
| | |
| | | }); |
| | | }, |
| | | openBindAdd() { |
| | | this.$axios |
| | | .get( |
| | | this.$api.insOrderPlan.getProductTreeByProductId + |
| | | "?productId=" + |
| | | this.bindCurrentInfo.insProductId |
| | | ) |
| | | getProductTreeByProductId({ |
| | | productId: this.bindCurrentInfo.insProductId, |
| | | }) |
| | | .then((res) => { |
| | | if (res.coe == 201) { |
| | | // this.$message.error('未绑定检验项') |
| | | return; |
| | | } |
| | | // console.log(res) |
| | | this.bindAddTableData = res.data; |
| | | this.bindAddDialogVisible = true; |
| | | }) |
| | |
| | | delete item.template; |
| | | }); |
| | | this.loading = true; |
| | | this.$axios |
| | | .post( |
| | | this.$api.insOrderPlan.bindingProductTreeByProductId, |
| | | { |
| | | insProductId: this.bindCurrentInfo.insProductId, |
| | | insProductBindingList: this.chooseBindAddList, |
| | | }, |
| | | { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | noQs: true, |
| | | } |
| | | ) |
| | | bindingProductTreeByProductId({ |
| | | insProductId: this.bindCurrentInfo.insProductId, |
| | | insProductBindingList: this.chooseBindAddList, |
| | | }) |
| | | .then((res) => { |
| | | this.loading = false; |
| | | if (res.code == 201) { |
| | | this.$message.error("绑定失败"); |
| | | return; |
| | | } |
| | | this.$message.success("绑定成功"); |
| | | this.bindAddDialogVisible = false; |
| | | this.getBinding(this.bindCurrentInfo); |
| | |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }).then(async () => { |
| | | this.$axios |
| | | .get( |
| | | this.$api.insOrderPlan.delProductTreeByProductId + |
| | | "?productId=" + |
| | | row.id |
| | | ) |
| | | .then((res) => { |
| | | if (res.coe == 201) { |
| | | // this.$message.error('未绑定检验项') |
| | | return; |
| | | } |
| | | this.getBinding(this.bindCurrentInfo); |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | this.bindTableDataLoading = true |
| | | delProductTreeByProductId({ productId: row.id }).then((res) => { |
| | | this.bindTableDataLoading = false |
| | | this.getBinding(this.bindCurrentInfo); |
| | | }).catch((error) => { |
| | | this.bindTableDataLoading = false |
| | | console.error(error); |
| | | }); |
| | | }); |
| | | }, |
| | | beforeUpload (file) { |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('上传文件不超过10M'); |
| | | this.$refs.upload.clearFiles() |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }, |
| | | onError(error, file, fileList, index) { |
| | | this.$message.error('文件上传失败,请重试'); |
| | | }, |
| | | onExceed() { |
| | | this.$message.warning("超出文件个数"); |
| | | }, |
| | | handleSuccessUp(response) { |
| | | if (response.code == 200) { |
| | | this.$refs.upload.clearFiles() |
| | | this.$message.success("上传成功"); |
| | | this.refreshTable() |
| | | } else { |
| | | this.$message.error(response.message); |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 100px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | padding-left: 6px; |
| | | } |
| | | |
| | | .tab li { |
| | | line-height: 24px; |
| | | padding: 4px 10px; |
| | | 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-last-child(1) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | |
| | | .tab li.active { |
| | | border-color: #3a7bfa; |
| | | color: #3a7bfa; |
| | | } |
| | | .center-options { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .center .center-options .center-title span:last-child { |
| | | color: #3a7bfa; |
| | | font-size: 23px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .view-self-checkbox { |
| | | margin-left: 50px; |
| | | } |
| | | </style> |