| | |
| | | <style scoped> |
| | | .ins-order-plan-main .title { |
| | | font-size: 20px; |
| | | color: #3a7bfa; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | } |
| | | |
| | | .search_label { |
| | | width: 120px; |
| | | width: 100px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | |
| | | |
| | | .ins-order-plan-main .search { |
| | | width: 100%; |
| | | margin-bottom: 10px; |
| | | height: 80px; |
| | | height: 40px; |
| | | 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); |
| | | padding-top: 0px; |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | padding-left: 6px; |
| | | } |
| | | |
| | | .tab li { |
| | | line-height: 24px; |
| | | padding: 6px 14px; |
| | | padding: 4px 10px; |
| | | font-size: 14px; |
| | | color: #333333; |
| | | border: 1px solid #eeeeee; |
| | |
| | | .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="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">委托编号:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | v-model="componentData.entity.entrustCode" |
| | | v-model="queryParams.entrustCode" |
| | | clearable |
| | | placeholder="请输入" |
| | | size="small" |
| | |
| | | <div class="search_label">检验状态:</div> |
| | | <div class="search_input"> |
| | | <el-select |
| | | v-model="componentData.entity.insState" |
| | | v-model="queryParams.insState" |
| | | size="small" |
| | | style="width: 100%" |
| | | @change="refreshTable()" |
| | | > |
| | | <el-option |
| | | v-for="(a, i) in insStateList" |
| | | v-for="(a, i) in dict.type.inspection_task_state" |
| | | :key="i" |
| | | :label="a.label" |
| | | :value="a.value" |
| | |
| | | </el-select> |
| | | </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()" |
| | |
| | | <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> |
| | | <div style="display: flex; align-items: center"> |
| | | <span style="font-size: 14px">试验室种类:</span> |
| | | <ul class="tab"> |
| | | <li |
| | | v-for="(m, i) in tabList" |
| | |
| | | <el-col :span="3"> |
| | | <div class="center-title"> |
| | | <span>总计任务数量:</span> |
| | | <span v-if="$refs.insOrderPlan != undefined">{{ |
| | | $refs.insOrderPlan.total |
| | | }}</span> |
| | | <span>{{ page.total }}</span> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <ValueTable |
| | | <!-- <ValueTable |
| | | :key="upIndex" |
| | | ref="insOrderPlan" |
| | | :componentData="componentData" |
| | |
| | | :url="$api.insOrderPlan.selectInsOrderPlanList" |
| | | class="value-table" |
| | | @handleInspection="handleInspection" |
| | | /> |
| | | /> --> |
| | | <lims-table |
| | | :tableData="tableData" |
| | | :column="column" |
| | | :page="page" |
| | | :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 290px)'" |
| | | @pagination="pagination" |
| | | ></lims-table> |
| | | </div> |
| | | </div> |
| | | <el-dialog :visible.sync="claimVisible" title="提示" width="400px"> |
| | |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <un-pass-retest-result |
| | | <!-- <un-pass-retest-result |
| | | v-if="retestVisible" |
| | | :retestInfo="retestInfo" |
| | | :retestVisible="retestVisible" |
| | | @closeRetestLook="closeRetestLook" |
| | | ></un-pass-retest-result> |
| | | ></un-pass-retest-result> --> |
| | | <!--产业链信息查看--> |
| | | <!-- <ShowInfo |
| | | v-if="showInfoDialog" |
| | |
| | | // 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 UnPassRetestResult from "../do/b1-material-ins-order/unPassRetestResult.vue"; |
| | | import EditInspectionItem from "./components/EditInspectionItem.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | getRetestResult, |
| | | claimInsOrderPlan, |
| | | upPlanUser2, |
| | | upPlanUser, |
| | | selectUserCondition, |
| | | getBindingProductByProductId, |
| | | getProductTreeByProductId, |
| | | bindingProductTreeByProductId, |
| | | delProductTreeByProductId, |
| | | selectInsOrderPlanList, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | components: { |
| | | EditInspectionItem, |
| | | // CopperOrder, |
| | | // ShowInfo, |
| | | ValueTable, |
| | | limsTable, |
| | | // Inspection, |
| | | // Add, |
| | | // CustomsInspection, |
| | | // UnPassRetestResult |
| | | }, |
| | | dicts: ["urgency_level", "inspection_task_state"], |
| | | computed: { |
| | | ...mapGetters(["name", "userId"]), |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | 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: "140px", |
| | | dataType: "link", |
| | | linkMethod: "selectAllByOne", |
| | | }, |
| | | { label: "样品名称", prop: "sample", width: "140px" }, |
| | | { |
| | | label: "下单类别", |
| | | prop: "typeSource", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "成品下单"; |
| | | } else { |
| | | return "原材料下单"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "样品型号", prop: "sampleModel", width: "120px" }, |
| | | { |
| | | label: "紧急程度", |
| | | prop: "type", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.urgencyLevel.find((m) => m.value == params).label; |
| | | }, |
| | | }, |
| | | { |
| | | label: "检验类型", |
| | | prop: "orderType", |
| | | 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) => { |
| | | return this.inspectionTaskState.find((m) => m.value == params) |
| | | .label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.inspectionTaskState.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { label: "检验人", prop: "userName" }, |
| | | { label: "复核人", prop: "checkName" }, |
| | | { label: "约定时间", prop: "appointed" }, |
| | | { label: "下发时间", prop: "sendTime", width: "140px" }, |
| | | { label: "检验开始时间", prop: "insTime", width: "140px" }, |
| | | { label: "理由", prop: "verifyTell", width: "140px" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "操作", |
| | | width: "260px", |
| | | operation: [ |
| | | { |
| | | name: "数据查看", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDataLook(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "修改检验值", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.editInspection(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return ( |
| | | row.userName == null || row.insState == 3 || row.insState == 5 |
| | | ); |
| | | }, |
| | | }, |
| | | { |
| | | name: "检验", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleInspection(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return ( |
| | | row.userName == null || |
| | | row.insState == 3 || |
| | | row.insState == 5 || |
| | | (row.userName && !row.userName.includes(this.name)) |
| | | ); |
| | | }, |
| | | }, |
| | | { |
| | | name: "交接", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleConnect(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return ( |
| | | row.userName == null || |
| | | row.insState == 5 || |
| | | row.insState == 3 || |
| | | (row.userName && !row.userName.includes(this.name)) |
| | | ); |
| | | }, |
| | | }, |
| | | { |
| | | name: "原始记录", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.viewInspectInfo(row); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | queryParams: {}, |
| | | }; |
| | | }, |
| | | created() { |
| | | // this.getLaboratoryDicts() |
| | | this.getTypeDicts(); |
| | | this.getInsStateDicts(); |
| | | this.getAuthorizedPerson(); |
| | | 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); |
| | | }); |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | this.componentData.entity.userId = user.userId; |
| | | this.getPower(); |
| | | this.queryParams.userId = this.userId; |
| | | // this.getPower(); |
| | | 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(); |
| | | }, |
| | | // 修改检验值 |
| | | editInspection(row) { |
| | | this.$refs.editInspectionItem.showDialog(row.id); |
| | | }, |
| | | // 刷新页面 |
| | | refreshView() { |
| | | this.InspectionKey++; |
| | | this.getList(); |
| | | }, |
| | | // 数据查看 |
| | | handleDataLook(row) { |
| | |
| | | }, |
| | | // 查看不合格复测结果 |
| | | getRetestResult(row) { |
| | | this.$axios |
| | | .get( |
| | | this.$api.insOrder.getRetestResult + |
| | | "?insProductId=" + |
| | | row.insProductId |
| | | ) |
| | | .then((res) => { |
| | | getRetestResult({ insProductId: row.insProductId }).then((res) => { |
| | | if (res.code == 201) return; |
| | | this.retestVisible = true; |
| | | this.retestInfo = res.data; |
| | |
| | | } |
| | | }, |
| | | 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(); |
| | | }, |
| | | refreshTable(e) { |
| | | this.page.current = 1; |
| | | this.queryParams.typeSource = this.tabIndex; |
| | | this.getList(); |
| | | }, |
| | | // claimFun(row) { |
| | | // if (row) { |
| | |
| | | }, |
| | | 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; |
| | |
| | | console.error(error); |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | refreshTable(e) { |
| | | this.componentData.entity.typeSource = this.tabIndex; |
| | | this.$refs.insOrderPlan.selectList(e); |
| | | }, |
| | | changeRowClass({ row, rowIndex }) { |
| | | if (this.currentTime == row.appointed) { |
| | |
| | | sampleName: null, |
| | | state: null, |
| | | }; |
| | | this.componentData.entity.insState = null; |
| | | this.componentData.entity.sampleName = null; |
| | | this.queryParams.insState = null; |
| | | this.queryParams.sampleName = null; |
| | | this.refreshTable(); |
| | | }, |
| | | onSubmit() { |
| | | this.componentData.entity.insState = this.searchForm.state; |
| | | this.componentData.entity.sampleName = this.searchForm.sampleName; |
| | | this.queryParams.insState = this.searchForm.state; |
| | | this.queryParams.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, { |
| | |
| | | if (row.userName) { |
| | | inspectorList = row.userName.split(","); |
| | | } |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | if (user) { |
| | | inspectorList.push(user.name); |
| | | if (this.name) { |
| | | inspectorList.push(this.name); |
| | | } |
| | | this.inspectorList = inspectorList; |
| | | this.sonLaboratory = row.sonLaboratory; |
| | |
| | | if (row.userName) { |
| | | inspectorList = row.userName.split(","); |
| | | } |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | if (user) { |
| | | inspectorList.push(user.name); |
| | | if (this.name) { |
| | | inspectorList.push(this.name); |
| | | } |
| | | this.inspectorList = inspectorList; |
| | | this.sonLaboratory = row.sonLaboratory; |
| | |
| | | this.orderId = row.id; |
| | | this.connect = {}; |
| | | this.connectVisible = true; |
| | | this.$axios |
| | | .post(this.$api.insOrderPlan.upPlanUser2, { |
| | | orderId: this.orderId, |
| | | }) |
| | | .then((res) => { |
| | | upPlanUser2({ orderId: this.orderId }).then((res) => { |
| | | if (res.code === 200 && res.data.length > 0) { |
| | | this.sonLaboratoryList = []; |
| | | res.data.forEach((m) => { |
| | |
| | | return; |
| | | } |
| | | this.loading = true; |
| | | this.$axios |
| | | .post(this.$api.insOrderPlan.upPlanUser, { |
| | | upPlanUser({ |
| | | orderId: this.orderId, |
| | | userId: this.connect.connectPerson, |
| | | sonLaboratory: this.connect.sonLaboratory, |
| | |
| | | this.orderId = row.id; |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then((res) => { |
| | | selectUserCondition().then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | // 绑定检验项绑定 |
| | | 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('未绑定检验项') |
| | |
| | | }); |
| | | }, |
| | | 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('未绑定检验项') |
| | |
| | | delete item.template; |
| | | }); |
| | | this.loading = true; |
| | | this.$axios |
| | | .post( |
| | | this.$api.insOrderPlan.bindingProductTreeByProductId, |
| | | { |
| | | bindingProductTreeByProductId({ |
| | | insProductId: this.bindCurrentInfo.insProductId, |
| | | insProductBindingList: this.chooseBindAddList, |
| | | }, |
| | | { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | noQs: true, |
| | | } |
| | | ) |
| | | }) |
| | | .then((res) => { |
| | | this.loading = false; |
| | | if (res.code == 201) { |
| | |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }).then(async () => { |
| | | this.$axios |
| | | .get( |
| | | this.$api.insOrderPlan.delProductTreeByProductId + |
| | | "?productId=" + |
| | | row.id |
| | | ) |
| | | delProductTreeByProductId({ productId: row.id }) |
| | | .then((res) => { |
| | | if (res.coe == 201) { |
| | | // this.$message.error('未绑定检验项') |