From 6816ee4cbdaa253c2cd452e0e582a351860ffbe7 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期一, 07 四月 2025 16:35:36 +0800 Subject: [PATCH] 成品检验项分配人员 --- src/views/business/productOrder/index.vue | 221 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 128 insertions(+), 93 deletions(-) diff --git a/src/views/business/productOrder/index.vue b/src/views/business/productOrder/index.vue index 5ecdc8b..80e631e 100644 --- a/src/views/business/productOrder/index.vue +++ b/src/views/business/productOrder/index.vue @@ -15,17 +15,6 @@ <el-input v-model="entity.sampleModel" clearable placeholder="璇疯緭鍏�" size="small" @keyup.enter.native="refreshTable()"></el-input> </el-form-item> - <el-form-item> - <el-button :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" - @click="more = !more">{{ !more ? '鏇村' : '鏀惰捣' }}</el-button> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </el-form-item> - <el-form-item label="鏍峰搧缂栧彿" prop="sampleCode" v-if="more"> - <el-input v-model="entity.sampleCode" clearable placeholder="璇疯緭鍏�" size="small" - @keyup.enter.native="refreshTable"> - </el-input> - </el-form-item> <el-form-item label="涓嬪崟鏃堕棿" prop="createTime" v-if="more"> <el-date-picker v-model="entity.createTime" clearable format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small" style="width:100%" type="date" value-format="yyyy-MM-dd HH:mm:ss"> @@ -41,17 +30,29 @@ @keyup.enter.native="refreshTable"> </el-input> </el-form-item> + <el-form-item> + <el-button :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" + @click="more = !more">{{ !more ? '鏇村' : '鏀惰捣' }}</el-button> + <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="table-tab"> <div> <ul class="tab"> - <li :class="{ active: tabIndex === 0 }" v-if="checkPermi(['get:insOrder:reviewed'])" @click="handleTab(0)">寰呭鏍�</li> - <li :class="{ active: tabIndex === 1 }" v-if="checkPermi(['get:insOrder:checkout'])" @click="handleTab(1)">妫�楠屼腑</li> - <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:insOrder:customerOrdered'])" @click="handleTab(2)">濮旀墭宸叉</li> - <li :class="{ active: tabIndex === 3 }" v-if="checkPermi(['get:insOrder:spotCheck'])" @click="handleTab(3)">鎶芥牱宸叉</li> - <li :class="{ active: tabIndex === 4 }" v-if="checkPermi(['get:insOrder:sendBack'])" @click="handleTab(4)">閫�鍥�</li> - <li :class="{ active: tabIndex === 5 }" v-if="checkPermi(['get:insOrder:revocation'])" @click="handleTab(5)">鎾ら攢</li> + <li :class="{ active: tabIndex === 0 }" v-if="checkPermi(['get:insOrder:reviewed'])" @click="handleTab(0)">寰呭鏍� + </li> + <li :class="{ active: tabIndex === 1 }" v-if="checkPermi(['get:insOrder:checkout'])" @click="handleTab(1)">妫�楠屼腑 + </li> + <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:insOrder:customerOrdered'])" + @click="handleTab(2)">濮旀墭宸叉</li> + <li :class="{ active: tabIndex === 3 }" v-if="checkPermi(['get:insOrder:spotCheck'])" @click="handleTab(3)"> + 鎶芥牱宸叉</li> + <li :class="{ active: tabIndex === 4 }" v-if="checkPermi(['get:insOrder:sendBack'])" @click="handleTab(4)">閫�鍥� + </li> + <li :class="{ active: tabIndex === 5 }" v-if="checkPermi(['get:insOrder:revocation'])" @click="handleTab(5)"> + 鎾ら攢</li> <li :class="{ active: tabIndex === 6 }" v-if="checkPermi(['get:insOrder:all'])" @click="handleTab(6)">鍏ㄩ儴</li> </ul> </div> @@ -91,8 +92,8 @@ </el-dialog> <!-- 鎾ら攢 --> <el-dialog :before-close="handleClose" :visible.sync="quashDialogVisible" title="涓嬪崟鎾ら攢" width="30%"> - <p v-if="!isQuash" style="font-size:16px;color:#333333">濮旀墭缂栧彿<span - style="color:#34BD66">{{ this.insOrderRow.entrustCode }}</span>鐨勪俊鎭槸鍚︽挙閿�</p> + <p v-if="!isQuash" style="font-size:16px;color:#333333">濮旀墭缂栧彿<span style="color:#34BD66">{{ + this.insOrderRow.entrustCode }}</span>鐨勪俊鎭槸鍚︽挙閿�</p> <el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px"> <el-form-item label="璇疯緭鍏ユ挙閿�鍘熷洜锛�"> <el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input> @@ -110,7 +111,7 @@ </span> </el-dialog> <!-- 涓嬪彂 --> - <el-dialog :before-close="handleClose" :visible.sync="issuedDialogVisible" title="妫�楠屽垎閰�" width="400px"> + <!-- <el-dialog :before-close="handleClose" :visible.sync="issuedDialogVisible" title="妫�楠屽垎閰�" width="400px"> <div class="body" style="max-height: 60vh;"> <el-row> <el-col class="search_thing" style="width: 95%;"> @@ -150,8 +151,8 @@ <el-button :loading="upLoad" type="primary" @click="submitForm2">纭� 瀹�</el-button> </el-row> </span> - </el-dialog> - <el-dialog :visible.sync="dataDialogVisible" title="鏁版嵁鏌ョ湅" width="80%"> + </el-dialog> --> + <el-dialog :visible.sync="dataDialogVisible" title="鏁版嵁鏌ョ湅" width="80%" @close="closeDia"> <div v-if="dataDialogVisible"> <lims-table :tableData="tableDataLook" :column="tableDataLookColumn" @pagination="tableDataLookPagination" height="500px" key="tableDataLook" :page="tableDataLookPage" @@ -173,7 +174,8 @@ <span slot="footer" class="dialog-footer"> <el-row> <el-button @click="handleNo">{{ deleteTilte == '鎾ら攢' ? '鍙� 娑�' : '涓嶉�氳繃' }}</el-button> - <el-button :loading="printLoading" type="primary" @click="submitDelete">{{ deleteTilte == '鎾ら攢' ? '纭� 瀹�' : '閫氳繃'}}</el-button> + <el-button :loading="printLoading" type="primary" @click="submitDelete">{{ deleteTilte == '鎾ら攢' ? '纭� 瀹�' : + '閫氳繃' }}</el-button> </el-row> </span> </el-dialog> @@ -268,8 +270,8 @@ <el-row style="margin-top: 0.01cm;font-size: 0.20cm;"> <el-col style="display: flex;align-items: center;"><span>鏍峰搧鐘舵��: </span> - <span style="white-space: nowrap;"><span v-if="item.insState == 0">鈭�</span><span v-if="item.insState != 0" - class="scor"></span>寰呮 + <span style="white-space: nowrap;"><span v-if="item.insState == 0">鈭�</span><span + v-if="item.insState != 0" class="scor"></span>寰呮 <span v-if="item.insState == 1">鈭�</span><span v-if="item.insState != 1" class="scor"></span>鍦ㄦ <span v-if="item.insState == 2">鈭�</span><span v-if="item.insState != 2" class="scor"></span>宸叉 <span v-if="item.isLeave == 1">鈭�</span><span v-if="item.isLeave != 1" class="scor"></span>鐣欐牱</span> @@ -298,6 +300,7 @@ @closePrintDialog="closePrintDialog"></print-dialog> <!--娣诲姞閬楁紡妫�楠岄」寮规--> <add-inspection-dia v-if="addInspectionDia" ref="addInspectionDia"></add-inspection-dia> + <issuedDialog ref="issuedDialog" /> <!-- <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"--> <!-- :sonLaboratory="sonLaboratory" :state="state"--> <!-- :typeSource="typeSource" @goback="goback" @refreshView="refreshView"/>--> @@ -307,10 +310,10 @@ <script> import vueQr from 'vue-qr' import PrintJS from 'print-js' -import file from "@/utils/file"; import PrintDialog from "@/views/business/productOrder/components/printDialog.vue"; import AddInspectionDia from "@/views/business/productOrder/components/addInspectionDia.vue"; import limsTable from "@/components/Table/lims-table.vue"; +import issuedDialog from './components/issuedDialog.vue' import { checkUpdate, delInsOrder, rawAllInsOrderExport, @@ -320,14 +323,15 @@ } from "@/api/business/productOrder"; import { selectUserCondition } from "@/api/performance/class"; import { downFile, getFileList, selectSampleAndProductByOrderId } from "@/api/business/rawMaterialOrder"; -import {mapGetters} from "vuex"; -// import Inspection from "../do/b1-inspect-order-plan/Inspection.vue"; +import { mapGetters } from "vuex"; export default { + name: 'ProductOrder', components: { limsTable, AddInspectionDia, PrintDialog, - vueQr + vueQr, + issuedDialog }, data() { return { @@ -339,9 +343,21 @@ tableData: [], tableLoading: false, column: [ - { label: '濮旀墭缂栧彿', prop: 'entrustCode', width: '160px' }, + { + label: "濮旀墭缂栧彿", + prop: "entrustCode", + width: "160px", + dataType: "link", + linkMethod: "changeEntrustCode", + }, { label: '濮旀墭鍗曚綅', prop: 'company' }, - { label: '鏍峰搧鍚嶇О', prop: 'sampleName' }, + { + label: "鏍峰搧鍚嶇О", + prop: "sampleName", + width: "160px", + dataType: "link", + linkMethod: "selectAllByOne", + }, { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' }, { label: '鏍峰搧鏁伴噺', prop: 'sampleNum' }, { label: '妫�楠屼汉', prop: 'testingName' }, @@ -492,7 +508,7 @@ this.handleIssued(row); }, disabled: (row, index) => { - return row.state != 1 || !!row.assign + return row.state != 1 }, showHide: (row) => { return this.tabIndex === 1 @@ -523,7 +539,7 @@ ], page: { total: 0, - size: 10, + size: 20, current: 1 }, state: 0,// 0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0,3鏁版嵁鏌ョ湅 @@ -547,11 +563,12 @@ quashDialogVisible: false, issuedDialogVisible: false, dataDialogVisible: false, // 鏁版嵁鏌ョ湅寮规 + currentRow: {}, // 鏁版嵁鏌ョ湅寮规 tableDataLookTableLoading: false, // 鏁版嵁鏌ョ湅寮规 tableDataLook: [], tableDataLookPage: { total: 0, - size: 10, + size: 20, current: 1 }, tableDataLookColumn: [ @@ -593,6 +610,7 @@ } } }, + { label: "妫�楠屼汉", prop: "checkUserName" }, ], filesDialogVisible: false, // 闄勪欢鏌ョ湅寮规 tableDataFile: [], @@ -642,7 +660,7 @@ ], pageFile: { total: 0, - size: 10, + size: 20, current: 1 }, formData: {}, @@ -659,7 +677,7 @@ entrustCodeInfo: {}, submitCodeLoading: false, // 浜哄憳鍒楄〃 - personList: [], + // personList: [], orderId: '', revocationInsProductIds: '', componentDataDelete: [], @@ -679,7 +697,7 @@ ], pageDelete: { total: 0, - size: 10, + size: 20, current: 1 }, deleteDialogVisible: false, @@ -746,7 +764,10 @@ }, mounted() { this.refreshTable() - this.getAuthorizedPerson() + // this.getAuthorizedPerson() + }, + activated() { + this.refreshTable() }, methods: { // 鏌ヨ鍒楄〃鏁版嵁 @@ -762,7 +783,7 @@ } const params = { ...this.entity, state: this.tabList[this.tabIndex].value } this.tableLoading = true - selectInsOrderParameter(params).then(res => { + selectInsOrderParameter({ ...this.page, ...params }).then(res => { this.upIndex++ this.tableLoading = false if (res.code === 200) { @@ -783,6 +804,9 @@ }, // 鎵撳紑淇敼濮旀墭缂栧彿寮规 changeEntrustCode(row) { + if (this.tabIndex !== 1) { + return + } this.entrustCodeVisible = true this.entrustCodeInfo = { ...row } }, @@ -876,7 +900,8 @@ }, // 瀵煎嚭璁板綍 downLoad() { - rawAllInsOrderExport({ ...this.entity }).then(res => { + const params = { ...this.entity, state: this.tabList[this.tabIndex].value } + rawAllInsOrderExport({ ...params }).then(res => { const blob = new Blob([res], { type: 'application/octet-stream' }); this.$download.saveAs(blob, '濮旀墭妫�娴嬩俊鎭鍑�.xlsx'); }).catch(err => { @@ -900,18 +925,18 @@ this.printDialog = false }, // 鑾峰彇鎸囨淳浜哄憳涓嬫媺鍒楄〃 - getAuthorizedPerson() { - selectUserCondition({ type: 1 }).then(res => { - let data = [] - res.data.forEach(a => { - data.push({ - label: a.name, - value: a.id - }) - }) - this.personList = data - }) - }, + // getAuthorizedPerson() { + // selectUserCondition({ type: 1 }).then(res => { + // let data = [] + // res.data.forEach(a => { + // data.push({ + // label: a.name, + // value: a.id + // }) + // }) + // this.personList = data + // }) + // }, handleClose() { this.verifyDialogVisible = false; this.quashDialogVisible = false; @@ -928,25 +953,25 @@ }, // 璇︽儏 selectAllByOne(row) { - this.active = 2; - // console.log(row); - // //鎵撳紑寮规 - // this.dialogVisible = true; - // //row = 鐐瑰嚮瀵瑰簲琛屽�� - // //澶嶅埗缁檉ormData - // this.formData = this.HaveJson(row); - this.currentId = row.id - this.examine = 1 + this.$router.push({ + path: "/productOrder/add", query: { + examine: 1, + active: 2, + currentId: row.id, + tabIndex: this.tabIndex, + } + }); }, // 鏁版嵁鏌ョ湅 handleDataLook(row) { this.dataDialogVisible = true; - this.getDataTableList(row) + this.currentRow = row; + this.getDataTableList(this.currentRow) }, // 鏌ヨ鏁版嵁鏌ョ湅鍒楄〃鏁版嵁 getDataTableList(row) { this.tableDataLookTableLoading = true - selectSampleAndProductByOrderId({ id: row.id }).then(res => { + selectSampleAndProductByOrderId({ id: row.id, ...this.tableDataLookPage }).then(res => { this.tableDataLookTableLoading = false if (res.code === 200) { this.tableDataLook = res.data.records @@ -958,7 +983,15 @@ }, tableDataLookPagination(page) { this.tableDataLookPage.size = page.limit - this.getDataTableList() + this.getDataTableList(this.currentRow) + }, + closeDia() { + this.tableDataLookPage = { + total: 0, + size: 20, + current: 1 + } + this.dataDialogVisible = false }, // 闄勪欢鏌ョ湅 handleFileLook(row) { @@ -986,7 +1019,7 @@ downFile({ id: row.id, }).then(res => { - this.$download.downloadFileFromUrl(res.data.fileUrl, row.fileName); + this.$download.saveAs(res.data.fileUrl, row.fileName); }).catch(error => { }) @@ -995,7 +1028,12 @@ download(row) { let url = row.urlS ? row.urlS : row.url; if (url) { - this.$download.downloadFileFromUrl(url, this.downLoadInfo.fileName); + url = url.split('.')[0] + '.pdf' + const link = document.createElement('a'); + link.href = this.javaApi + url; + link.target = '_blank'; + document.body.appendChild(link); + link.click(); } }, // 鎾ら攢 @@ -1013,7 +1051,7 @@ }, getDeleteList() { this.tableLoadingDelete = true - selectNoProducts({ orderId: this.orderId, revocationInsProductIds: this.revocationInsProductIds }).then(res => { + selectNoProducts({ orderId: this.orderId, revocationInsProductIds: this.revocationInsProductIds, ...this.pageDelete }).then(res => { this.tableLoadingDelete = false this.componentDataDelete = res.data.records this.pageDelete.total = res.data.total @@ -1077,28 +1115,29 @@ }, // 涓嬪彂 handleIssued(row) { - this.issuedDialogVisible = true; - selectOrderManDay({ - id: row.id - }).then(res => { - this.distributeData.orderId = row.id - this.distributeData.sampleId = row.sampleId - this.distributeData.appointed = res.data - this.distributeData.type = row.type - }) - upPlanUser2({ - orderId: row.id, - }).then(res => { - if (res.code === 200 && res.data.length > 0) { - this.sonLaboratoryList = []; - res.data.forEach(m => { - this.sonLaboratoryList.push({ - value: m, - label: m - }) - }) - } - }) + // this.issuedDialogVisible = true; + this.$refs.issuedDialog.init(row) + // selectOrderManDay({ + // id: row.id + // }).then(res => { + // this.distributeData.orderId = row.id + // this.distributeData.sampleId = row.sampleId + // this.distributeData.appointed = res.data + // this.distributeData.type = row.type + // }) + // upPlanUser2({ + // orderId: row.id, + // }).then(res => { + // if (res.code === 200 && res.data.length > 0) { + // this.sonLaboratoryList = []; + // res.data.forEach(m => { + // this.sonLaboratoryList.push({ + // value: m, + // label: m + // }) + // }) + // } + // }) }, submitForm2() { if (this.distributeData.appointed == null || this.distributeData.appointed == '') { @@ -1122,10 +1161,6 @@ userId: this.distributeData.userId, sonLaboratory: this.distributeData.sonLaboratory, }).then(res => { - if (res.code === 201) { - this.upLoad = false - return - } this.$message.success('淇敼鎴愬姛') this.upLoad = false this.issuedDialogVisible = false -- Gitblit v1.9.3