From 6d29b3bddc39ccfba4fa8452bfba023062db24bd Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期一, 21 四月 2025 17:00:55 +0800 Subject: [PATCH] 1.样品接收页面开发联调 --- src/views/CNAS/process/disposal/sampleReceipt/index.vue | 321 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/CNAS/process/disposal/sampleDisposal/index.vue | 0 src/api/cnas/process/sampleDisposal.js | 37 ++++++ 3 files changed, 357 insertions(+), 1 deletions(-) diff --git a/src/api/cnas/process/sampleDisposal.js b/src/api/cnas/process/sampleDisposal.js index a763edd..0a6cda7 100644 --- a/src/api/cnas/process/sampleDisposal.js +++ b/src/api/cnas/process/sampleDisposal.js @@ -1,6 +1,6 @@ -// 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃� import request from "@/utils/request"; +// 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃� // 淇敼 export function doProcessDeal(data) { return request({ @@ -72,3 +72,38 @@ params: query, }); } + + +// 鏍峰搧鎺ユ敹-鍒嗛〉鏌ヨ +export function pageProcessSample(query) { + return request({ + url: "/processSample/pageProcessSample", + method: "get", + params: query, + }); +} +// 鏍峰搧鎺ユ敹-鏂板/淇敼 +export function addProcessSample(query) { + return request({ + url: "/processSample/addProcessSample", + method: "post", + data: query, + }); +} +// 鏍峰搧鎺ユ敹-鍒犻櫎 +export function delProcessSample(query) { + return request({ + url: "/processSample/delProcessSample", + method: "delete", + params: query, + }); +} +// 鏍峰搧鎺ユ敹-瀵煎嚭 +export function exportProcessSample(query) { + return request({ + url: "/processSample/exportProcessSample", + method: "get", + responseType: "blob", + params: query, + }); +} diff --git a/src/views/CNAS/process/sampleDisposal/index.vue b/src/views/CNAS/process/disposal/sampleDisposal/index.vue similarity index 100% rename from src/views/CNAS/process/sampleDisposal/index.vue rename to src/views/CNAS/process/disposal/sampleDisposal/index.vue diff --git a/src/views/CNAS/process/disposal/sampleReceipt/index.vue b/src/views/CNAS/process/disposal/sampleReceipt/index.vue new file mode 100644 index 0000000..8ea9309 --- /dev/null +++ b/src/views/CNAS/process/disposal/sampleReceipt/index.vue @@ -0,0 +1,321 @@ +<template> + <div class="capacity-scope"> + <div style="display: flex;justify-content: space-between;align-items: flex-start"> + <el-form :model="queryParams0" ref="queryParams0" size="small" :inline="true"> + <el-form-item label="鏀舵牱鏃ユ湡" prop="receiveDate"> + <el-date-picker v-model="queryParams0.receiveDate" type="date" placeholder="閫夋嫨鏃ユ湡" format="yyyy-MM-dd" + value-format="yyyy-MM-dd" size="small" @change="refreshTable()"> + </el-date-picker> + </el-form-item> + <el-form-item> + <el-button type="primary" size="mini" @click="refreshTable">鏌ヨ</el-button> + <el-button size="mini" @click="refresh">閲嶇疆</el-button> + </el-form-item> + </el-form> + <el-button size="small" @click="handleDown0">瀵煎嚭</el-button> + </div> + + <div class="table"> + <lims-table :tableData="tableData0" :column="column0" :tableLoading="tableLoading0" + key="tableData0" + :height="'calc(100vh - 240px)'" :page="page0" @pagination="pagination0"> + <div slot="action" slot-scope="scope"> + <el-button type="text" @click="handleAdd(scope.row)">缂栬緫</el-button> + <el-button type="text" @click="delRow(scope.row)"> + <span style="color: #F56C6C">鍒犻櫎</span> + </el-button> + </div> + </lims-table> + </div> + <!-- 鏂板鏍峰搧 --> + <el-dialog :title="title" :visible.sync="addDialogVisible" width="400px"> + <el-row> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鏍峰搧鍚嶇О锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="addInfo.sampleName"></el-input></div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鏍峰搧缂栧彿锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="addInfo.sampleCode"></el-input></div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">渚涙牱鍗曚綅锛�</div> + <div class="search_input"> + <el-select v-model="addInfo.sampleSupplier" size="small"> + <el-option :label="item.company" :value="item.company" v-for="(item, index) in customPageList" + :key="item.id"></el-option> + </el-select> + </div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鏁伴噺锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="addInfo.num"></el-input> + </div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">澶勭悊鏂瑰紡锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="addInfo.dealMethod"></el-input></div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鏃堕棿锛�</div> + <div class="search_input"> + <el-date-picker v-model="addInfo.dealTime" type="date" size="small" placeholder="閫夋嫨鏃ユ湡" format="yyyy-MM-dd" + value-format="yyyy-MM-dd" style="width: 100%;"> + </el-date-picker> + </div> + </div> + </el-col> + </el-row> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitAdd" :loading="addLoading">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- 璇︽儏/涓嬭浇/瀹℃牳/鎵瑰噯 --> + <el-dialog :title="title0" :visible.sync="lookDialogVisible" width="800px" :class="{ downPdf: title0 == '涓嬭浇' }" + :modal="title0 != '涓嬭浇'" top="5vh"> + <filePreview v-if="lookDialogVisible" :fileUrl="javaApi + '/word/' + currentInfo.url" :currentFile="{}" + style="max-height: 70vh;overflow-y: auto;" /> + <span slot="footer" class="dialog-footer" v-if="title0 == '瀹℃牳' || title0 == '鎵瑰噯'"> + <el-button @click="submitCheck('涓嶉�氳繃')" :loading="noCheckLoading">涓嶉�氳繃</el-button> + <el-button type="primary" @click="submitCheck('閫氳繃')" :loading="checkLoading">閫� 杩�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import limsTable from "@/components/Table/lims-table.vue"; +import filePreview from "@/components/Preview/filePreview.vue"; +import { selectCustomPageList } from "@/api/system/customer"; +import { + pageProcessSample, + delProcessSample, + addProcessSample, + exportProcessSample +} from "@/api/cnas/process/sampleDisposal"; +import {exportInconsistentDistribution} from "@/api/cnas/process/nonconformingWork"; +export default { + name: 'SampleReceipt', + components: { + limsTable, + filePreview, + }, + data() { + return { + activeName: '濉啓', + title: '鏂板', + addDialogVisible: false, + addLoading: false, + outLoading: false, + editDialogVisible: false, + lookDialogVisible: false, + title0: '鏌ョ湅', + noCheckLoading: false, + checkLoading: false, + // 鍘嗗彶鍒楄〃 + addInfo: {},//鏂板鏍峰搧 + customPageList: [], + currentInfo: { + arr: [] + },//鏌ョ湅鐨勮鎯� + queryParams0: { + receiveDate: '' + }, + tableLoading0: false, + tableData0: [], + column0: [ + { + label: "鏀舵牱鏃ユ湡", + prop: "receiveDate", + }, + { + label: "鏍峰搧缂栧彿", + prop: "sampleCode", + }, + { + label: "鏍峰搧鍚嶇О", + prop: "sampleName", + }, + { + label: "鏍峰搧鏁伴噺", + prop: "num", + }, + { + label: "鏉ユ牱鍗曚綅", + prop: "sampleSupplier", + }, + { + label: "鐣欐牱鏃ユ湡", + prop: "leaveDate", + }, + { + label: "鏍峰搧鐘舵��", + prop: "sampleState", + }, + { + label: "閫�鏍风鏀�/澶勭悊鏃ユ湡", + prop: "dealTime", + }, + { + dataType: "slot", + slot: "action", + label: "鎿嶄綔", + } + ], + page0: { + total: 0, + size: 10, + current: 0, + }, + }; + }, + mounted() { + this.getList0() + }, + methods: { + // 鑾峰彇閫佹牱鍗曚綅鍒楄〃 + getCustomPageList() { + selectCustomPageList({ + current: -1, + size: -1 + }).then(res => { + this.customPageList = res.data.records + }).catch(err => { }); + }, + refresh() { + this.queryParams0 = {}; + this.page0.current = 1; + this.getList0(); + }, + refreshTable() { + this.page0.current = 1; + this.getList0(); + }, + // 鏌ヨ琛ㄦ牸鏁版嵁 + getList0() { + this.tableLoading0 = true; + let param = { ...this.queryParams0, ...this.page0 }; + delete param.total; + pageProcessSample({ ...param }) + .then((res) => { + this.tableLoading0 = false; + if (res.code === 200) { + this.tableData0 = res.data.records; + this.page0.total = res.data.total; + } + }) + .catch((err) => { + this.tableLoading0 = false; + }); + }, + pagination0({ page, limit }) { + this.page0.current = page; + this.page0.size = limit; + this.getList0(); + }, + // 鎵撳紑缂栬緫寮规 + handleAdd(row) { + this.addInfo = this.HaveJson(row) + this.title = '缂栬緫' + this.addDialogVisible = true + this.getCustomPageList() + }, + delRow(row) { + this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + delProcessSample({ id: row.id }).then(res => { + if (res.code == 200) { + this.$message.success("鍒犻櫎鎴愬姛"); + this.refreshTable(); + } + }).catch(err => { }); + }) + .catch(() => { }); + }, + // 鎻愪氦鏂板 + submitAdd() { + // 缂栬緫 + this.addLoading = true + addProcessSample({ + ...this.addInfo + }).then(res => { + this.addLoading = false + this.addDialogVisible = false + this.$message({ + type: 'success', + message: '缂栬緫鎴愬姛!' + }); + this.page0.current = 1; + this.refreshTable(); + }).catch(err => { }); + }, + // 瀵煎嚭璇︽儏 + handleDown0() { + exportProcessSample({ receiveDate: this.queryParams0.receiveDate }).then(res => { + this.outLoading = false + const blob = new Blob([res], { type: 'application/msword' }); + this.$download.saveAs(blob, '鏍峰搧鎺ユ敹' + '.docx'); + }) + }, + }, +} +</script> + +<style scoped> +.search_thing { + width: 350px; + display: flex; + align-items: center; +} + +.search_label { + width: 110px; + font-size: 14px; + text-align: right; +} + +.search_input { + width: calc(100% - 110px); +} + +.downPdf { + opacity: 0 !important; +} + +.tables td { + height: 40px; + width: 100px; + text-align: center; + font-size: 14px; + word-wrap: break-word; + white-space: normal; +} + +.user-info .el-button { + margin: 0; +} + +>>>.el-tabs__content { + height: 100%; +} +</style> -- Gitblit v1.9.3