From 9334a78e7a7d06e3fd0fc2feff9aa5d646df27f7 Mon Sep 17 00:00:00 2001 From: yaowanxin <3588231647@qq.com> Date: 星期六, 19 七月 2025 10:24:57 +0800 Subject: [PATCH] 数据显示,数量 --- src/views/business/inspectionTask/inspection.vue | 297 +++++++++++++++++++++++++++++++---------------------------- 1 files changed, 155 insertions(+), 142 deletions(-) diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue index 9b70b4e..f26bb54 100644 --- a/src/views/business/inspectionTask/inspection.vue +++ b/src/views/business/inspectionTask/inspection.vue @@ -18,14 +18,11 @@ </el-col> <el-col :span="16" style="text-align: right"> <el-button size="small" type="primary" @click="refreshView">鍒锋柊</el-button> - <el-button v-if="typeSource === 1" size="small" type="primary" @click="openPurchase">杩涜揣楠岃瘉</el-button> - <el-button v-if="state === 1 && typeSource === 1" size="small" type="primary" + <el-button v-if="typeSource == 1" size="small" type="primary" @click="openPurchase">杩涜揣楠岃瘉</el-button> + <el-button v-if="state == 1 && typeSource == 1" size="small" type="primary" @click="openUnPassDialog('add')">涓嶅悎鏍煎鐞�</el-button> - <el-button size="small" type="primary" @click=" - sampleVisible = true; - uploadSample(); - ">鏍峰搧鍒囨崲</el-button> - <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">浠诲姟鍒囨崲</el-button> + <el-button size="small" type="primary" @click="sampleVisible = true; uploadSample();">鏍峰搧鍒囨崲</el-button> + <!-- <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">浠诲姟鍒囨崲</el-button>--> <el-button v-if="state == 1" size="small" type="primary" @click="addVerifyDia = true">鎻愪氦</el-button> <!-- 澶嶆牳 --> <el-button v-if="state == 2" size="medium" type="primary" @click="openAddCheck">閫氳繃</el-button> @@ -73,7 +70,7 @@ </el-form-item> <el-form-item label="澶囨敞:"> <!-- <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>--> - <el-input v-model="insOrder.remark" :disabled="state !== 1" clearable placeholder="璇疯緭鍏�" size="small" + <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="璇疯緭鍏�" size="small" @blur="subOtherForm(insOrder.remark, 'remark')"></el-input> <!-- <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> --> </el-form-item> @@ -338,7 +335,7 @@ </div> <el-upload v-if="state == 1" ref="upload" :action="action" :before-upload="beforeUpload" :data="{ orderId: id, - }" :headers="headers" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" + }" :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar" style="width: 80px !important;margin-top: 10px;"> <el-button v-if="state == 1" size="small" type="primary">闄勪欢涓婁紶</el-button></el-upload> @@ -347,6 +344,7 @@ </div> <el-drawer :size="550" :visible.sync="sampleVisible" title="鏍峰搧鍒囨崲"> <el-table v-if="sampleVisible" ref="productTable" :current-row-key="currentKey" :data="sampleProduct" + :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :row-class-name="tableRowClassName" :row-key="(record) => record.index" border class="el-table" height="100%" highlight-current-row tooltip-effect="dark" @row-click="handleChangeSample"> <el-table-column :key="Math.random()" align="center" label="搴忓彿" type="index" width="70px"> @@ -359,7 +357,6 @@ size="medium" style="margin-right: 5px">{{ item.label }}</el-tag> </template> </el-table-column> - <el-table-column label="妫�楠屼汉" min-width="80px" prop="checkName" show-overflow-tooltip></el-table-column> <el-table-column align="center" label="鏄惁鐣欐牱" prop="isLeave" show-overflow-tooltip width="95px"> <template slot-scope="scope"> <span>{{ scope.row.isLeave == 0 ? "鍚�" : "鏄�" }}</span> @@ -409,83 +406,92 @@ <el-button :loading="submitLoading" type="primary" @click="submit()">纭� 瀹�</el-button> </span> </el-dialog> - <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" - :visible.sync="dataGetDia" title="鏁版嵁閲囬泦" width="80%"> - <div> - <table border="1" cellpadding="10" class="thermal-table"> + <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" + :visible.sync="dataGetDia" title="鏁版嵁閲囬泦" width="80%"> + <div> + <table border="1" cellpadding="10" class="thermal-table"> + <tr> + <td style="width: 120px">妫�楠岄」鍒嗙被</td> + <td style="width: 120px">妫�楠岄」</td> + <td style="width: 120px">妫�楠屽瓙椤�</td> + <td>鏁伴噰鏁版嵁</td> + </tr> + <template v-for="(item, index) in getData"> <tr> - <td style="width: 120px">妫�楠岄」鍒嗙被</td> - <td style="width: 120px">妫�楠岄」</td> - <td style="width: 120px">妫�楠屽瓙椤�</td> - <td>鏁伴噰鏁版嵁</td> - </tr> - <template v-for="(item, index) in getData"> - <tr> - <td :rowspan="item.child.length">{{ item.sortName }}</td> - <td :rowspan="item.child.length">{{ item.faName }}</td> - <td>{{ item.child[0].name }}</td> - <td style="text-align: left"> + <td :rowspan="item.child.length">{{ item.sortName }}</td> + <td :rowspan="item.child.length">{{ item.faName }}</td> + <td>{{ item.child[0].name }}</td> + <td style="text-align: left"> + <!-- 娣诲姞瀹瑰櫒 div --> + <div class="data-collection-items"> <el-select v-if="item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1" :multiple-limit="item.child[0].maxNum" clearable filterable multiple placeholder="璇烽�夋嫨" @change="setData(item)"> - <el-option v-for="(item, index) in item.child[0].arr" :key="index" :filter-method="filterMethod" - :label="index + 1 + '^' + item.result" :value="index + '^' + item.result"> + <el-option v-for="(subItem, subIndex) in item.child[0].arr" :key="index + '-' + subIndex" :filter-method="filterMethod" + :label="subIndex + 1 + '^' + subItem.result" :value="subIndex + '^' + subItem.result"> <span>{{ "搴忓彿锛�" + - (index + 1) + + (subIndex + 1) + "锛�" + "缁撴灉锛�" + - item.result + + subItem.result + "锛�" + "鍘氬害锛�" + - item.thickness + + subItem.thickness + "锛�" + "鏃堕棿锛�" + - item.mergedDateTime + subItem.mergedDateTime }}</span> </el-option> </el-select> <el-checkbox-group v-if="!item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1" :max="item.child[0].maxNum"> - <el-checkbox v-for="(n, j) in item.child[0].arr" :key="j" :label="j + '^' + n">{{ n }}</el-checkbox> + <el-checkbox v-for="(n, j) in item.child[0].arr" :key="index + '-' + j + 'aaaaaa'" :label="j + '^' + n" + @change="handleGroupSelect(item.child[0], j)" >{{ n }}</el-checkbox> </el-checkbox-group> - </td> - </tr> - <tr v-for="(m, i) in item.child" v-show="i > 0" :key="i + 'bbbbbbbbbbbbbb'"> - <td>{{ m.name }}</td> - <td style="text-align: left"> + </div> + </td> + </tr> + <tr v-for="(m, i) in item.child" v-show="i > 0" :key="index + '-' + i + 'bbbbbbbbbbbbbb'"> + <td>{{ m.name }}</td> + <td style="text-align: left"> + <!-- 娣诲姞瀹瑰櫒 div --> + <div class="data-collection-items"> <el-select v-if="m.isShowSelect" v-model="m.getDataIndex1" :multiple-limit="m.maxNum" clearable filterable multiple placeholder="璇烽�夋嫨"> - <el-option v-for="(item, index1) in m.arr" :key="index1" :label="index + 1 + '^' + item.result" - :value="index1 + '^' + item.result"> + <el-option v-for="(subItem, index1) in m.arr" :key="index + '-' + index1 + 'cccccccc'" + :label="index1 + 1 + '^' + subItem.result" :value="index1 + '^' + subItem.result"> <span>{{ "搴忓彿锛�" + (index1 + 1) + "锛�" + "缁撴灉锛�" + - item.result + + subItem.result + "锛�" + "鍘氬害锛�" + - item.thickness + + subItem.thickness + "锛�" + "鏃堕棿锛�" + - item.mergedDateTime + subItem.mergedDateTime }}</span> </el-option> </el-select> <el-checkbox-group v-if="!m.isShowSelect" v-model="m.getDataIndex1" :max="m.maxNum"> - <el-checkbox v-for="(n, j) in m.arr" :key="j" :label="j + '^' + n">{{ n }}</el-checkbox> + <el-checkbox v-for="(n, j) in m.arr" :key="index + '-' + j + 'dddddddd'" :label="j + '^' + n" + @change="handleGroupSelect(m, j)" >{{ n }}</el-checkbox> </el-checkbox-group> - </td> - </tr> - </template> - </table> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="dataGetDia = false">鍙� 娑�</el-button> - <el-button :loading="getDataIndexLoading" type="primary" @click="submitDataGet()">纭� 瀹�</el-button> - </span> - </el-dialog> + </div> + </td> + </tr> + </template> + </table> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dataGetDia = false">鍙� 娑�</el-button> + <el-button :loading="getDataIndexLoading" type="primary" @click="submitDataGet()">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog :close-on-click-modal="false" :visible.sync="addCheck" title="鎸囧畾鎶ュ憡瀹℃牳浜哄憳" width="400px" @close="closeAddVerifyDia"> <div class="body" style="display: flex; padding: 10px; align-items: center"> @@ -504,22 +510,29 @@ <el-button :loading="reviewLoading" type="primary" @click="upInsReview(1)">纭� 瀹�</el-button> </span> </el-dialog> + <!-- 娣诲姞涓嶅悎鏍煎娴嬪脊妗�--> <add-un-pass v-if="addUnPassDialog" ref="addUnPassDialog" :addUnPassDialog="addUnPassDialog" @resetAddUnPass="resetAddUnPass"></add-un-pass> + <!-- 涓嶅悎鏍煎鐞嗗脊妗�--> <UnPassDialog v-if="unPassDialog" ref="unPassDialog" :orderId="orderId" :unPassDialog="unPassDialog" @resetForm="resetForm"></UnPassDialog> + <!-- 涓嶅悎鏍煎娴嬪脊妗�--> <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId" + :cableTag="temCableTag" :repetitionTag="repetitionTag" :rawMaterialTag="rawMaterialTag" :sonLaboratory="sonLaboratory" :state="state" :typeSource="typeSource" :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" /> + <!-- 杩涜揣楠岃瘉寮规--> <purchase-verification v-if="purchaseDialog" ref="purchaseDialog" :orderId="orderId" :purchaseDialog="purchaseDialog" @resetPurchaseDialog="resetPurchaseDialog"></purchase-verification> + <!--鏌ョ湅宸ユ椂寮规--> + <viewManHourDia ref="viewManHourDia" @submit="openAddVerifyDia"></viewManHourDia> </div> </template> <script> import excelFunction from "@/utils/excelFountion"; import limsTable from "@/components/Table/lims-table.vue"; -import UnPassDialog from "../unpass/components/addUnPass.vue"; +import UnPassDialog from "../unpass/components/unPassDialog.vue"; import AddUnPass from "../unpass/components/addUnPass.vue"; import InspectionWord from "./components/InspectionWord.vue"; import PurchaseVerification from "../unpass/components/PurchaseVerification.vue"; @@ -542,14 +555,15 @@ delfile, inspectionOrderDetailsTaskSwitching } from "@/api/business/inspectionTask.js"; -import InspectionWorker from '../../../InspectionWorker.worker'; -import DataWorker from '../../../DataWorker.worker'; +import InspectionWorker from '@/workers/InspectionWorker.worker.js'; +import DataWorker from '@/workers/DataWorker.worker.js'; import html2canvas from "html2canvas"; import { mapGetters } from "vuex"; -import { getToken } from "@/utils/auth"; +import viewManHourDia from "@/views/business/inspectionTask/components/viewManHourDia.vue"; export default { - name: 'inspection', + name: 'Inspection', components: { + viewManHourDia, PurchaseVerification, AddUnPass, limsTable, @@ -647,10 +661,18 @@ { name: "1285nm~1330nm", arr: [12, 13, 14, 15], + // 鍒濆鍖� getDataIndex1 涓烘暟缁� + getDataIndex1: [], + isShowSelect: false, + maxNum: 5 }, { name: "1525nm~1575nm", arr: [12, 13, 14, 15], + // 鍒濆鍖� getDataIndex1 涓烘暟缁� + getDataIndex1: [], + isShowSelect: false, + maxNum: 5 }, ], }, @@ -660,6 +682,10 @@ { name: "鎴嚦娉㈤暱", arr: [12, 13, 14, 15], + // 鍒濆鍖� getDataIndex1 涓烘暟缁� + getDataIndex1: [], + isShowSelect: false, + maxNum: 5 }, ], }, @@ -770,11 +796,6 @@ // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭� computed: { ...mapGetters(["userId"]), - headers() { - return { - 'Authorization': "Bearer " + getToken() - }; - }, action() { return this.javaApi + "/insOrderPlan/uploadFile"; }, @@ -794,9 +815,17 @@ this.getInsStateDicts(); this.getComparisonList(); this.getAuthorizedPerson(); - // this.getPower(); this.startWorker(); - this.getList0() + // this.getList0() // 浠诲姟鍒囨崲 + this.scrollInit(); + }, + activated() { + this.getTypeDicts(); // 鑾峰彇绱ф�ョ▼搴︿笅鎷夋閫夐」 + this.getInsStateDicts(); + this.getComparisonList(); + this.getAuthorizedPerson(); + this.startWorker(); + // this.getList0() // 浠诲姟鍒囨崲 this.scrollInit(); }, watch: { @@ -897,17 +926,25 @@ confirmButtonText: "纭畾", cancelButtonText: "鍙栨秷", type: "warning", - }) - .then(() => { - delfile({ id: row.id }).then((res) => { - if (res.code == 201) return; - this.$message.success("鍒犻櫎鎴愬姛"); - this.refresh(); - }); - }) - .catch(() => { }); + }).then(() => { + delfile({ id: row.id }).then((res) => { + this.$message.success("鍒犻櫎鎴愬姛"); + this.getList(); + }); + }).catch(() => { }); }, // 鏂囦欢绠$悊--缁撴潫 + // 澶勭悊鏁寸粍鍕鹃�夐�昏緫鐨勬柟娉� + handleGroupSelect(childItem, clickedIndex) { + // 璁$畻鎵�鍦ㄧ粍鐨勮捣濮嬬储寮� + const groupStartIndex = Math.floor(clickedIndex / 5) * 5; + // 娓呯┖褰撳墠宸查�� + childItem.getDataIndex1 = []; + // 閬嶅巻褰撳墠缁勭殑 5 涓厓绱狅紝娣诲姞鍒伴�変腑鍒楄〃 + for (let i = groupStartIndex; i < groupStartIndex + 5 && i < childItem.arr.length; i++) { + childItem.getDataIndex1.push(i + '^' + childItem.arr[i]); + } + }, // 浠诲姟鍒囨崲--寮�濮� getList0() { @@ -1038,8 +1075,9 @@ id: this.currentSample.id, type: this.type, laboratory: this.sonLaboratory, - cableTag: "", + cableTag: this.temCableTag, rawMaterialTag: this.rawMaterialTag, + repetitionTag: this.repetitionTag, }; this.$nextTick(() => { this.$refs.addUnPassDialog.getInsOrder(info); @@ -1071,7 +1109,7 @@ }, // 鎵撳紑杩涜揣楠岃瘉寮规 openPurchase() { - const operationType = this.state === 1 ? "add" : "view"; + const operationType = this.state == 1 ? "add" : "view"; this.purchaseDialog = true; const item = { id: this.currentSample.id, @@ -1133,7 +1171,6 @@ this.dataAcquisitionInfo = {}; this.getData = []; for (let i in this.objectOrder(data)) { - console.log("i---", i); let obj = {}; if (i.includes("@")) { obj = { @@ -1242,8 +1279,9 @@ } else { str0 = i + "," + j; } - } + }; let list = this.tableList[0].arr; + console.log(this.tableList[0]); let maxNum = 0; list.forEach((item, index) => { let num0 = 0; @@ -1275,6 +1313,7 @@ } let num = 0; list[index].forEach((n) => { + // console.log(n.v.ps.value); if ( n.v.ps && n.v.ps.value && @@ -1347,6 +1386,7 @@ } else { // 濡傛灉閮戒笉瀛樺湪锛屽垯锛岃繘鍏ュ鐞嗘暟閲囩嚎绋嬮噷鍘诲鐞嗘暟鎹� try { + console.log(this.dataAcquisitionInfo); // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫 this.getDataIndexLoading = false; this.dataGetDia = false; @@ -1476,12 +1516,10 @@ }, // 淇濆瓨婀垮害銆佹俯搴︽暟鎹� subOtherForm(m, type) { - console.log("m---", m); write({ [type]: type === "remark" ? m : Number(m), id: this.insOrder.id, }).then((res) => { - if (res.code == 201) return; this.$message.success("淇濆瓨鎴愬姛"); }); }, @@ -1500,34 +1538,6 @@ a.download = "table.png"; a.click(); }); - }, - // 鏉冮檺鑾峰彇 - getPower() { - let power = JSON.parse(sessionStorage.getItem("power")); - let fileDel = false; - let fileAdd = false; - let collected = false; - let temDataAcquisition = false; - for (var i = 0; i < power.length; i++) { - if (power[i].menuMethod == "uploadFile") { - fileAdd = true; - } - if (power[i].menuMethod == "delfile") { - fileDel = true; - } - if (power[i].menuMethod == "isItAllowedToModifyTheCollectedValues") { - collected = true; - } - if (power[i].menuMethod == "temDataAcquisition") { - temDataAcquisition = true; - } - } - if (!fileDel) { - // this.componentData0.do.splice(1, 1); - } - this.fileAdd = fileAdd; - this.collected = collected; - this.temDataAcquisition = temDataAcquisition; }, uploadSample() { doInsOrder({ @@ -1666,20 +1676,6 @@ this.comparisonList = this.dictToValue(response.data); }); }, - // 鑾峰彇妫�楠屽�间负涓嬫媺鏃剁殑涓嬫媺鍒楄〃 - // selectEnumByCategoryOfSelect(val) { - // this.enumList = []; - // if (val === undefined || val === null) { - // return; - // } - // this.$axios - // .post(this.$api.enums.selectEnumByCategory, { - // category: val, - // }) - // .then((res) => { - // this.enumList = res.data; - // }); - // }, tableRowClassName({ row, rowIndex }) { row.index = rowIndex + 1; }, @@ -2585,6 +2581,13 @@ this.$message.error("鏈緭鍏ヤ笉閫氳繃鍘熷洜"); } }, + // 鏌ョ湅宸ユ椂 + viewManHour() { + this.$refs.viewManHourDia.showDialog(this.id, 99); + }, + openAddVerifyDia() { + this.addVerifyDia = true; + }, submit() { if (this.verifyUser === null || this.verifyUser === "") { this.$message.error("璇锋寚瀹氬鏍镐汉鍛�"); @@ -2695,17 +2698,24 @@ } else { param = this.param; } + let isNoTestValue = '' + for (let key in param) { + if (param[key]) { + if (param[key].insValue?.length === 0) { + isNoTestValue = 1 + } else { + isNoTestValue = '' + } + } + } saveInsContext({ param: JSON.stringify(param), currentTable: this.currentTable, sampleId: this.currentSample.id, orderId: this.orderId, - sonLaboratory: this.sonLaboratory + sonLaboratory: this.sonLaboratory, + isNoTestValue: isNoTestValue }).then((res) => { - if (res.code == 201) { - this.$message.error("淇濆瓨澶辫触"); - return; - } this.$message.success("宸蹭繚瀛�"); }); // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫 @@ -2773,7 +2783,7 @@ } }, getAuthorizedPerson() { - selectUserCondition({ type: 0 }).then((res) => { + selectUserCondition({ type: 1 }).then((res) => { let data = []; res.data.forEach((a) => { data.push({ @@ -2857,7 +2867,7 @@ this.upLoading = false; if (response.code == 200) { this.$message.success("涓婁紶鎴愬姛"); - this.$refs.fileList.selectList(); + this.getList(); } }, beforeUpload(file) { @@ -2876,16 +2886,7 @@ }, handleDown(row) { downFile({ id: row.id }).then((res) => { - if (res.code === 200) { - let url = ""; - if (res.data.type == 1) { - url = this.javaApi + "/img/" + res.data.fileUrl; - this.$download.saveAs(url, row.fileName) - } else { - url = this.javaApi + "/word/" + res.data.fileUrl; - this.$download.saveAs(url, row.fileName) - } - } + this.$download.saveAs(res.data.fileUrl, row.fileName) }) .catch((error) => { }); }, @@ -2910,7 +2911,7 @@ } }, goback() { - this.$tab.closeOpenPage({ path: "/business/inspectionTask" }); + this.$router.go(-1) } }, }; @@ -3047,7 +3048,7 @@ } .content-h-2 { - justify-content: end; + justify-content: flex-end; } .content-v-0 { @@ -3118,7 +3119,7 @@ align-items: center; } </style> -<style> +<style scoped> /* .inspection .el-form-item__label { color: #000; } */ @@ -3185,4 +3186,16 @@ max-width: 1000px; /* 璁剧疆鏈�澶у搴� */ } + + +.data-collection-items { + display: flex; + flex-wrap: wrap; +} +.data-collection-items .el-select, +.data-collection-items .el-checkbox { + flex-basis: 20% ; + box-sizing: border-box; + padding: 5px 2%; +} </style> -- Gitblit v1.9.3