From 2dbb9e797247b975361d47c1b679bee75f29be1b Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期三, 19 二月 2025 10:07:54 +0800 Subject: [PATCH] 检验任务列表页面搬迁10% --- src/api/business/inspectionTask.js | 19 src/views/business/inspectionTask/inspection.vue | 0 src/router/index.js | 213 ++++--- src/views/business/inspectionTask/components/EditInspectionItem.vue | 244 ++++++++ src/views/business/inspectionTask/index.vue | 1197 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 1,575 insertions(+), 98 deletions(-) diff --git a/src/api/business/inspectionTask.js b/src/api/business/inspectionTask.js new file mode 100644 index 0000000..a36f376 --- /dev/null +++ b/src/api/business/inspectionTask.js @@ -0,0 +1,19 @@ +import request from "@/utils/request"; + +// 閫氳繃妫�楠屽崟鏌ヨ妫�楠屾暟鎹紙鏁版嵁鏌ョ湅锛� +export function selectSampleAndProductByOrderId(query) { + return request({ + url: "/insOrder/selectSampleAndProductByOrderId", + method: "get", + params: query, + }); +} + +// 妫�楠屼换鍔�-淇敼妫�楠屽�� +export function updateProductOnPlan(data) { + return request({ + url: "/insOrderPlan/updateProductOnPlan", + method: "post", + data: data, + }); +} diff --git a/src/router/index.js b/src/router/index.js index 91a52f6..bf11864 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,10 +1,10 @@ -import Vue from 'vue' -import Router from 'vue-router' +import Vue from "vue"; +import Router from "vue-router"; -Vue.use(Router) +Vue.use(Router); /* Layout */ -import Layout from '@/layout' +import Layout from "@/layout"; /** * Note: 璺敱閰嶇疆椤� @@ -31,179 +31,196 @@ // 鍏叡璺敱 export const constantRoutes = [ { - path: '/redirect', + path: "/redirect", component: Layout, hidden: true, children: [ { - path: '/redirect/:path(.*)', - component: () => import('@/views/redirect') - } - ] + path: "/redirect/:path(.*)", + component: () => import("@/views/redirect"), + }, + ], }, { - path: '/login', - component: () => import('@/views/login'), - hidden: true + path: "/login", + component: () => import("@/views/login"), + hidden: true, }, { - path: '/register', - component: () => import('@/views/register'), - hidden: true + path: "/register", + component: () => import("@/views/register"), + hidden: true, }, { - path: '/404', - component: () => import('@/views/error/404'), - hidden: true + path: "/404", + component: () => import("@/views/error/404"), + hidden: true, }, { - path: '/401', - component: () => import('@/views/error/401'), - hidden: true + path: "/401", + component: () => import("@/views/error/401"), + hidden: true, }, { - path: '', + path: "", component: Layout, - redirect: 'index', + redirect: "index", children: [ { - path: 'index', - component: () => import('@/views/index'), - name: 'Index', - meta: { title: '棣栭〉', icon: 'dashboard', affix: true } - } - ] + path: "index", + component: () => import("@/views/index"), + name: "Index", + meta: { title: "棣栭〉", icon: "dashboard", affix: true }, + }, + ], }, { - path: '/user', + path: "/user", component: Layout, hidden: true, - redirect: 'noredirect', + redirect: "noredirect", children: [ { - path: 'profile', - component: () => import('@/views/system/user/profile/index'), - name: 'Profile', - meta: { title: '涓汉涓績', icon: 'user' } - } - ] - } -] + path: "profile", + component: () => import("@/views/system/user/profile/index"), + name: "Profile", + meta: { title: "涓汉涓績", icon: "user" }, + }, + ], + }, +]; // 鍔ㄦ�佽矾鐢憋紝鍩轰簬鐢ㄦ埛鏉冮檺鍔ㄦ�佸幓鍔犺浇 export const dynamicRoutes = [ { // 鍘熸潗鏂欎笅鍗� - path: '/materialOrder', + path: "/materialOrder", component: Layout, hidden: true, - permissions: ['business:order'], + permissions: ["business:order"], children: [ { // 閾滄潗鏂欎笅鍗� - path: 'customsInspection', - component: () => import('@/views/business/materialOrder/customsInspection'), - name: 'customsInspection', - meta: { title: '閾滄潗鏂欎笅鍗�', activeMenu: '/business/materialOrder' } - } - ] + path: "customsInspection", + component: () => + import("@/views/business/materialOrder/customsInspection"), + name: "customsInspection", + meta: { title: "閾滄潗鏂欎笅鍗�", activeMenu: "/business/materialOrder" }, + }, + ], + }, + { + // 妫�楠屼换鍔� + path: "/inspectionTask", + component: Layout, + hidden: true, + permissions: ["business:inspection"], + children: [ + { + // 妫�楠屽崟璇︽儏 + path: "inspection", + component: () => import("@/views/business/inspectionTask/inspection"), + name: "inspection", + meta: { title: "妫�楠屽崟璇︽儏", activeMenu: "/business/inspectionTask" }, + }, + ], }, { // 鐢ㄦ埛绠$悊 - path: '/system/user-auth', + path: "/system/user-auth", component: Layout, hidden: true, - permissions: ['system:user:edit'], + permissions: ["system:user:edit"], children: [ { - path: 'role/:userId(\\d+)', - component: () => import('@/views/system/user/authRole'), - name: 'AuthRole', - meta: { title: '鍒嗛厤瑙掕壊', activeMenu: '/system/user' } - } - ] + path: "role/:userId(\\d+)", + component: () => import("@/views/system/user/authRole"), + name: "AuthRole", + meta: { title: "鍒嗛厤瑙掕壊", activeMenu: "/system/user" }, + }, + ], }, { // 瑙掕壊绠$悊 - path: '/system/role-auth', + path: "/system/role-auth", component: Layout, hidden: true, - permissions: ['system:role:edit'], + permissions: ["system:role:edit"], children: [ { - path: 'user/:roleId(\\d+)', - component: () => import('@/views/system/role/authUser'), - name: 'AuthUser', - meta: { title: '鍒嗛厤鐢ㄦ埛', activeMenu: '/system/role' } - } - ] + path: "user/:roleId(\\d+)", + component: () => import("@/views/system/role/authUser"), + name: "AuthUser", + meta: { title: "鍒嗛厤鐢ㄦ埛", activeMenu: "/system/role" }, + }, + ], }, { // 鏁版嵁瀛楀吀 - path: '/system/dict-data', + path: "/system/dict-data", component: Layout, hidden: true, - permissions: ['system:dict:list'], + permissions: ["system:dict:list"], children: [ { - path: 'index/:dictId(\\d+)', - component: () => import('@/views/system/dict/data'), - name: 'Data', - meta: { title: '瀛楀吀鏁版嵁', activeMenu: '/system/dict' } - } - ] + path: "index/:dictId(\\d+)", + component: () => import("@/views/system/dict/data"), + name: "Data", + meta: { title: "瀛楀吀鏁版嵁", activeMenu: "/system/dict" }, + }, + ], }, { // 鏁版嵁瀛楀吀 - path: '/customer', + path: "/customer", component: Layout, hidden: true, - permissions: ['customer:edit'], + permissions: ["customer:edit"], }, { - path: '/monitor/job-log', + path: "/monitor/job-log", component: Layout, hidden: true, - permissions: ['monitor:job:list'], + permissions: ["monitor:job:list"], children: [ { - path: 'index/:jobId(\\d+)', - component: () => import('@/views/monitor/job/log'), - name: 'JobLog', - meta: { title: '璋冨害鏃ュ織', activeMenu: '/monitor/job' } - } - ] + path: "index/:jobId(\\d+)", + component: () => import("@/views/monitor/job/log"), + name: "JobLog", + meta: { title: "璋冨害鏃ュ織", activeMenu: "/monitor/job" }, + }, + ], }, { - path: '/tool/gen-edit', + path: "/tool/gen-edit", component: Layout, hidden: true, - permissions: ['tool:gen:edit'], + permissions: ["tool:gen:edit"], children: [ { - path: 'index/:tableId(\\d+)', - component: () => import('@/views/tool/gen/editTable'), - name: 'GenEdit', - meta: { title: '淇敼鐢熸垚閰嶇疆', activeMenu: '/tool/gen' } - } - ] - } -] + path: "index/:tableId(\\d+)", + component: () => import("@/views/tool/gen/editTable"), + name: "GenEdit", + meta: { title: "淇敼鐢熸垚閰嶇疆", activeMenu: "/tool/gen" }, + }, + ], + }, +]; // 闃叉杩炵画鐐瑰嚮澶氭璺敱鎶ラ敊 let routerPush = Router.prototype.push; let routerReplace = Router.prototype.replace; // push Router.prototype.push = function push(location) { - return routerPush.call(this, location).catch(err => err) -} + return routerPush.call(this, location).catch((err) => err); +}; // replace Router.prototype.replace = function push(location) { - return routerReplace.call(this, location).catch(err => err) -} + return routerReplace.call(this, location).catch((err) => err); +}; export default new Router({ - mode: 'history', // 鍘绘帀url涓殑# + mode: "history", // 鍘绘帀url涓殑# scrollBehavior: () => ({ y: 0 }), - routes: constantRoutes -}) + routes: constantRoutes, +}); diff --git a/src/views/business/inspectionTask/components/EditInspectionItem.vue b/src/views/business/inspectionTask/components/EditInspectionItem.vue new file mode 100644 index 0000000..9058ff0 --- /dev/null +++ b/src/views/business/inspectionTask/components/EditInspectionItem.vue @@ -0,0 +1,244 @@ +<template> + <div> + <el-dialog + :visible.sync="editInspectionDia" + title="淇敼妫�楠岄」" + width="80%" + @close="editInspectionDia = false" + > + <TableCard :showTitle="false"> + <template v-slot:table> + <lims-table + :column="editColumn" + :table-data="editTableData" + :table-loading="editLoading" + :page="page" + height="600" + style="padding: 0 15px" + @pagination="pagination" + > + </lims-table> + </template> + </TableCard> + </el-dialog> + <el-dialog :visible.sync="editAskDia" title="淇敼" width="50%"> + <el-form ref="form" :model="editForm" label-width="100px"> + <el-form-item label="瑕佹眰鍊�"> + <el-input v-model="editForm.ask" type="textarea"></el-input> + </el-form-item> + <el-form-item label="瑕佹眰鎻忚堪"> + <el-input v-model="editForm.tell" type="textarea"></el-input> + </el-form-item> + <el-form-item label="妫�楠屽�肩被鍨�"> + <el-select + v-model="editForm.inspectionValueType" + clearable + placeholder="璇烽�夋嫨" + size="small" + style="width: 100%" + > + <el-option + v-for="item in inspectionValueTypeList" + :key="item.value" + :label="item.label" + :value="item.value" + ></el-option> + </el-select> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="editAskDia = false">鍙� 娑�</el-button> + <el-button + :loading="handleEditLoading" + type="primary" + @click="handleEdit" + >纭� 瀹�</el-button + > + </span> + </el-dialog> + </div> +</template> + +<script> +import TableCard from "@/components/TableCard/index.vue"; +import limsTable from "@/components/Table/lims-table.vue"; +import { + selectSampleAndProductByOrderId, + updateProductOnPlan, +} from "@/api/business/inspectionTask.js"; +export default { + name: "EditInspectionItem", + // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� + components: { TableCard, limsTable }, + data() { + // 杩欓噷瀛樻斁鏁版嵁 + return { + editInspectionDia: false, + entity: { + id: 0, + }, + inspectionValueTypeList: [], // 妫�楠屽�肩被鍨嬩笅鎷夋 + editColumn: [ + { + label: "鏍峰搧缂栧彿", + minWidth: "160px", + prop: "sampleCode", + }, + { + label: "鏍峰搧鍚嶇О", + minWidth: "120px", + prop: "sample", + }, + { + label: "妫�楠岄」鍒嗙被", + minWidth: "120px", + prop: "inspectionItemClass", + }, + { + label: "妫�楠岄」", + minWidth: "120px", + prop: "inspectionItem", + }, + { + label: "妫�楠屽瓙椤�", + minWidth: "120px", + prop: "inspectionItemSubclass", + }, + { + label: "鏉′欢", + minWidth: "120px", + prop: "radius", + }, + { + label: "鐢电紗鏍囪瘑", + minWidth: "120px", + prop: "cableTag", + }, + { + label: "鍗曚綅", + prop: "unit", + }, + { + label: "瑕佹眰鍊�", + minWidth: "300px", + prop: "ask", + }, + { + label: "瑕佹眰鎻忚堪", + minWidth: "300px", + prop: "tell", + }, + { + label: "鏍峰搧鍨嬪彿", + minWidth: "120px", + prop: "model", + }, + { + dataType: "action", + width: "80px", + label: "鎿嶄綔", + fixed: "right", + operation: [ + { + name: "缂栬緫", + type: "text", + clickFun: (row) => { + this.editIns(row); + }, + }, + ], + }, + ], + editTableData: [], + editLoading: false, + page: { + total: 0, + size: 10, + current: 0, + }, + editAskDia: false, + editForm: { + id: "", + ask: "", + tell: "", + inspectionValueType: "", + }, + handleEditLoading: false, + }; + }, + // 鏂规硶闆嗗悎 + methods: { + showDialog(id) { + this.editInspectionDia = true; + this.entity.id = id; + this.getTableData(); + }, + // 鑾峰彇鍒楄〃鏁版嵁 + getTableData() { + this.editLoading = true; + selectSampleAndProductByOrderId({ + ...this.entity, + ...this.page, + }) + .then((res) => { + this.editLoading = false; + if (res.code === 201) return; + this.editTableData = res.data.body.records; + this.page.total = res.data.body.total; + }) + .catch(() => { + this.editLoading = false; + }); + }, + // 淇敼寮规 + editIns(row) { + this.editAskDia = true; + this.selectEnumByCategoryForInspectionValueType(); + this.editForm = { ...row }; + }, + // 鎻愪氦淇敼 + handleEdit() { + const params = { + id: this.editForm.insProductId, + ask: this.editForm.ask, + tell: this.editForm.tell, + inspectionValueType: this.editForm.inspectionValueType, + }; + this.handleEditLoading = true; + updateProductOnPlan(params) + .then((res) => { + this.handleEditLoading = false; + if (res.code === 201) return; + this.$message.success("淇敼鎴愬姛"); + this.editAskDia = false; + this.getTableData(); + }) + .catch(() => { + this.handleEditLoading = false; + }); + }, + // 骞村害璁″垝鍒嗛〉 + pagination({ page, limit }) { + this.page.current = page; + this.page.size = limit; + this.getTableData(); + }, + selectEnumByCategoryForInspectionValueType() { + this.$axios + .post(this.$api.enums.selectEnumByCategory, { + category: "妫�楠屽�肩被鍨�", + }) + .then((res) => { + this.inspectionValueTypeList = res.data; + }); + }, + }, +}; +</script> + +<style scoped> +.pagination { + display: flex; + justify-content: space-between; +} +</style> diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue new file mode 100644 index 0000000..80b4a18 --- /dev/null +++ b/src/views/business/inspectionTask/index.vue @@ -0,0 +1,1197 @@ +<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="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-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()" + >鏌� 璇�</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> + </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" + /> + </div> + </div> + <el-dialog :visible.sync="claimVisible" title="鎻愮ず" width="400px"> + 鏄惁璁ら濮旀墭缂栧彿<span style="color: #33c130">{{ + sampleUserForm.entrustCode + }}</span + >鐨勪换鍔� + <span slot="footer" class="dialog-footer"> + <el-button @click="claimVisible = false">鍙� 娑�</el-button> + <el-button :loading="loading" type="primary" @click="confirmClaim" + >纭� 瀹�</el-button + > + </span> + </el-dialog> + <el-dialog :visible.sync="connectVisible" title="妫�楠屼氦鎺�" width="400px"> + <div class="search_thing"> + <div class="search_label" style="width: 90px"> + <span class="required-span">* </span>浜ゆ帴浜哄憳锛� + </div> + <div class="search_input"> + <el-select + v-model="connect.connectPerson" + 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> + </div> + <div class="search_thing"> + <div class="search_label" style="width: 90px"> + <span class="required-span">* </span>璇曢獙瀹わ細 + </div> + <div class="search_input"> + <el-select + v-model="connect.sonLaboratory" + 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 + > + </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> + </el-dialog> + <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> + </div> + <el-table :data="bindTableData" style="width: 100%" height="70vh"> + <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 prop="inspectionItemSubclass" label="妫�楠屽瓙椤�"> + </el-table-column> + <el-table-column label="鎿嶄綔"> + <template slot-scope="scope"> + <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-table-column type="selection" width="55"> </el-table-column> + <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 prop="inspectionItemSubclass" label="妫�楠屽瓙椤�"> + </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 + > + </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> + </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"; +export default { + components: { + EditInspectionItem, + // CopperOrder, + // ShowInfo, + ValueTable, + // Inspection, + // Add, + // CustomsInspection, + }, + data() { + return { + InspectionKey: 1, + bindDialogVisible: false, + bindAddDialogVisible: false, + bindTableData: [], + bindAddTableData: [], + chooseBindAddList: [], + examine: null, + inspectorList: [], //妫�楠屼汉鍛樺垪琛� + alone: true, + sampleUserForm: { + entrustCode: null, + insSampleId: null, + userId: null, + }, + claimVisible: false, + tabList: [ + { label: "濮旀墭", value: 0 }, + { label: "鍘熸潗鏂�", value: 1 }, + ], + 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: "瀛e害妫�楠�", + type: "warning", + effect: "plain", + }, + ], + }, + }, + selectField: {}, + requiredAdd: [], + requiredUp: [], + }, + upIndex: 0, + planTotal: 0, + insStateList: [], + state: 0, // 0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0,3鏁版嵁鏌ョ湅 + typeSource: null, // 0:鎴愬搧涓嬪崟锛�1锛氬師鏉愭枡涓嬪崟 + sonLaboratory: null, // 0:濮旀墭锛�1锛氬師鏉愭枡 + activeFace: 0, // 1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0 + currentId: null, + entityCopy: {}, + orderId: 0, + personList: [], + connectVisible: false, + connect: { + connectPerson: "", + sonLaboratory: "", + }, + loading: false, + currentTime: null, + sonLaboratoryList: [], + typeSourceList: [ + { label: "鎴愬搧涓嬪崟", value: 0 }, + { label: "鍘熸潗鏂欎笅鍗�", value: 1 }, + ], + customsInspection: {}, + showInfoDialog: false, // 浜т笟閾句俊鎭煡鐪� + isReport: 0, + retestVisible: false, + retestInfo: [], + isCopper: null, + bindCurrentInfo: {}, + lookInfo: {}, + }; + }, + created() { + // this.getLaboratoryDicts() + this.getTypeDicts(); + this.getInsStateDicts(); + 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.refreshTable(); + }, + methods: { + // 淇敼妫�楠屽�� + editInspection(row) { + this.$refs.editInspectionItem.showDialog(row.id); + }, + // 鍒锋柊椤甸潰 + refreshView() { + this.InspectionKey++; + }, + // 鏁版嵁鏌ョ湅 + 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); + } + }, + changeCheckBox(val) { + this.componentData.entity.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.alone = true; + this.refreshTable(); + }, + // claimFun(row) { + // if (row) { + // this.sampleUserForm = { + // entrustCode: row.entrustCode, + // insSampleId: row.id, + // sonLaboratory: row.sonLaboratory, + // } + // this.claimVisible = true + // } + // }, + // 鏌ョ湅浜т笟閾句俊鎭� + openInfoDialog(row) { + this.showInfoDialog = true; + this.$nextTick(() => { + this.$refs.showInfoDialog.getInfo(row.ifsInventoryId); + }); + }, + confirmClaim() { + this.loading = true; + this.$axios + .post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, { + headers: { + "Content-Type": "application/json", + }, + }) + .then((res) => { + if (res.code === 200 && res.data) { + this.loading = false; + this.$message.success("璁ら鎴愬姛"); + this.claimVisible = false; + this.refreshTable("page"); + } + }) + .catch((error) => { + 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) { + return "highlight-warning-row-border"; + } else if (this.currentTime > row.appointed) { + return "highlight-danger-row-border"; + } + return ""; + }, + onReset() { + this.searchForm = { + sampleName: null, + state: null, + }; + this.componentData.entity.insState = null; + this.componentData.entity.sampleName = null; + this.refreshTable(); + }, + onSubmit() { + this.componentData.entity.insState = this.searchForm.state; + this.componentData.entity.sampleName = this.searchForm.sampleName; + this.$nextTick(() => { + this.refreshTable(); + }); + }, + handleTab(m, i) { + this.tabIndex = i; + this.componentData.entity.sonLaboratory = ""; + 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.activeFace = 2; + this.examine = 1; + this.isReport = 0; + this.currentId = parseInt(row.id); + }, + playOrder(num) { + this.activeFace = num; + }, + goback() { + this.state = 0; + this.refreshTable("page"); + }, + // 杩涜妫�楠屼换鍔� + handleInspection(row) { + //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃 + let inspectorList = []; + if (row.userName) { + inspectorList = row.userName.split(","); + } + let user = JSON.parse(localStorage.getItem("user")); + if (user) { + inspectorList.push(user.name); + } + this.inspectorList = inspectorList; + this.sonLaboratory = row.sonLaboratory; + this.state = 1; + this.typeSource = row.typeSource; + this.orderId = row.id; + }, + // 鏌ョ湅妫�楠屾暟鎹� + viewInspectInfo(row) { + //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃 + let inspectorList = []; + if (row.userName) { + inspectorList = row.userName.split(","); + } + let user = JSON.parse(localStorage.getItem("user")); + if (user) { + inspectorList.push(user.name); + } + this.inspectorList = inspectorList; + this.sonLaboratory = row.sonLaboratory; + this.state = 3; + this.typeSource = row.typeSource; + this.orderId = row.id; + }, + 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, + }); + }); + this.connect.sonLaboratory = this.sonLaboratoryList[0].value; + } + }); + }, + confirmConnect() { + if ( + this.connect.connectPerson == null || + this.connect.connectPerson == "" || + this.connect.connectPerson == undefined + ) { + this.$message.error("鏈�夋嫨浜ゆ帴浜哄憳"); + return; + } + if ( + this.connect.sonLaboratory == null || + this.connect.sonLaboratory == "" || + this.connect.sonLaboratory == undefined + ) { + this.$message.error("鏈�夋嫨璇曢獙瀹�"); + return; + } + this.loading = true; + this.$axios + .post(this.$api.insOrderPlan.upPlanUser, { + orderId: this.orderId, + userId: this.connect.connectPerson, + sonLaboratory: this.connect.sonLaboratory, + }) + .then((res) => { + if (res.code === 200) { + this.loading = false; + this.$message.success("鎿嶄綔鎴愬姛"); + this.refreshTable("page"); + } + this.connectVisible = false; + }) + .catch((error) => { + console.error(error); + this.loading = false; + }); + }, + handleReview(row) { + this.state = 2; + this.orderId = row.id; + }, + getAuthorizedPerson() { + this.$axios.get(this.$api.user.getUserMenu).then((res) => { + let data = []; + res.data.forEach((a) => { + data.push({ + label: a.name, + value: a.id, + }); + }); + this.personList = data; + }); + }, + // 缁戝畾妫�楠岄」缁戝畾 + getBinding(row) { + this.bindCurrentInfo = row; + this.$axios + .get( + this.$api.insOrderPlan.getBindingProductByProductId + + "?productId=" + + row.insProductId + ) + .then((res) => { + if (res.coe == 201) { + // this.$message.error('鏈粦瀹氭楠岄」') + return; + } + // console.log(res) + this.bindTableData = res.data; + this.bindDialogVisible = true; + }) + .catch((error) => { + console.error(error); + }); + }, + openBindAdd() { + this.$axios + .get( + this.$api.insOrderPlan.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; + }) + .catch((error) => { + console.error(error); + }); + }, + handleBindAddSelectionChange(list) { + this.chooseBindAddList = list; + }, + bindAdd() { + if (this.chooseBindAddList.length == 0) { + this.$message.error("璇烽�夋嫨妫�楠岄」"); + return; + } + this.chooseBindAddList.forEach((item) => { + 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, + } + ) + .then((res) => { + this.loading = false; + if (res.code == 201) { + this.$message.error("缁戝畾澶辫触"); + return; + } + this.$message.success("缁戝畾鎴愬姛"); + this.bindAddDialogVisible = false; + this.getBinding(this.bindCurrentInfo); + }) + .catch((error) => { + console.error(error); + }); + }, + handleDelete(row) { + this.$confirm("纭鍒犻櫎姝ゆ楠岄」, 鏄惁缁х画?", "鎻愮ず", { + confirmButtonText: "纭畾", + 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); + }); + }); + }, + }, +}; +</script> diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/views/business/inspectionTask/inspection.vue -- Gitblit v1.9.3