From e5454b769d44a34af423bf87ac8a740bf8c20341 Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期二, 29 四月 2025 13:25:29 +0800 Subject: [PATCH] Merge branch 'dev' into dev_tides --- src/views/CNAS/process/disposal/sampleDisposal/index.vue | 517 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 280 insertions(+), 237 deletions(-) diff --git a/src/views/CNAS/process/disposal/sampleDisposal/index.vue b/src/views/CNAS/process/disposal/sampleDisposal/index.vue index 31a1624..1cbcb06 100644 --- a/src/views/CNAS/process/disposal/sampleDisposal/index.vue +++ b/src/views/CNAS/process/disposal/sampleDisposal/index.vue @@ -1,96 +1,104 @@ <template> <div class="capacity-scope"> - <el-tabs type="border-card" v-model="activeName" style="height: 100%;" @tab-click="queryParams.totaldealId = ''"> - <el-tab-pane label="濉啓" name="濉啓" style="height: 100%;" :key="1"> - <el-button size="small" type="primary" @click="handleAdd0" style="margin-bottom: 10px">鏂板</el-button> - <div class="table" style="height: calc(100% - 200px)" v-if="activeName == '濉啓'"> - <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" - key="tableData" :height="'calc(100vh - 290px)'" :page="page" @pagination="pagination"></lims-table> - </div> - </el-tab-pane> - <el-tab-pane label="鍘嗗彶璁板綍" name="鍘嗗彶璁板綍" style="height: 100%;" :key="2"> - <el-form :model="queryParams0" ref="queryParams0" size="small" :inline="true"> - <el-form-item label="骞存湀" prop="month"> - <el-date-picker v-model="queryParams0.month" type="month" placeholder="閫夋嫨鏈�" format="yyyy-MM" - value-format="yyyy-MM" 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> - <div class="table"> - <lims-table :tableData="tableData0" :column="column0" :tableLoading="tableLoading" - key="tableData0" - :height="'calc(100vh - 300px)'" :page="page0" @pagination="pagination0"></lims-table> - </div> - </el-tab-pane> - </el-tabs> + <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="month"> + <el-date-picker v-model="queryParams0.month" type="month" placeholder="閫夋嫨鏈�" format="yyyy-MM" + value-format="yyyy-MM" 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" type="primary" @click="handleAdd0">鏂板</el-button> + </div> + <div class="table"> + <lims-table :tableData="tableData0" :column="column0" :tableLoading="tableLoading" + key="tableData0" :height="'calc(100vh - 240px)'" :page="page0" @pagination="pagination0"></lims-table> + </div> + <el-dialog title="璇︽儏" :visible.sync="editDialogVisible" width="70%"> + <el-button size="small" type="primary" @click="handleAdd('add')" style="margin-bottom: 10px">鏂板</el-button> + <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" + key="tableData" :height="'calc(100vh - 290px)'"> + </lims-table> + <span slot="footer" class="dialog-footer"> + <el-button @click="editDialogVisible = false">鍙栨秷</el-button> + </span> + </el-dialog> <!-- 鏂板鏍峰搧 --> - <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-dialog title="鏂板" :visible.sync="addDialogVisible" width="400px" @close="closeAddDialogVisible"> + <el-form ref="addInfo" :model="addInfo" :rules="rules" label-width="120px"> + <el-row> + <el-col :span="24"> + <el-form-item label="鏍峰搧鍚嶇О" prop="sampleName"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="addInfo.sampleName"></el-input> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="鏍峰搧缂栧彿" prop="sampleCode"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="addInfo.sampleCode"></el-input> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="渚涙牱鍗曚綅" prop="sampleSupplier"> <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> + :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-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="鏁伴噺" prop="num"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="addInfo.num"></el-input> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="澶勭悊鏂瑰紡" prop="dealMethod"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="addInfo.dealMethod"></el-input> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="鏃堕棿" prop="dealTime"> <el-date-picker v-model="addInfo.dealTime" type="date" size="small" placeholder="閫夋嫨鏃ユ湡" format="yyyy-MM-dd" - value-format="yyyy-MM-dd" style="width: 100%;"> + value-format="yyyy-MM-dd" style="width: 100%;"> </el-date-picker> - </div> - </div> - </el-col> - </el-row> + </el-form-item> + </el-col> + </el-row> + </el-form> <span slot="footer" class="dialog-footer"> - <el-button @click="addDialogVisible = false">鍙� 娑�</el-button> + <el-button @click="closeAddDialogVisible">鍙� 娑�</el-button> <el-button type="primary" @click="submitAdd" :loading="addLoading">纭� 瀹�</el-button> </span> </el-dialog> + <!-- 鏂板鍘嗗彶 --> + <el-dialog title="鏂板" :visible.sync="addDialogVisibleDeal" width="400px" @close="closeDiaDeal"> + <el-form ref="addInfoDeal" :model="addInfoDeal" :rules="rulesDeal" label-width="80px"> + <el-row> + <el-col :span="24"> + <el-form-item label="鏈堜唤" prop="month"> + <el-date-picker v-model="addInfoDeal.month" type="month" size="small" placeholder="閫夋嫨鏈堜唤" format="yyyy-MM" + value-format="yyyy-MM" style="width: 100%;"> + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="closeDiaDeal">鍙� 娑�</el-button> + <el-button type="primary" @click="submitAddDeal" :loading="addLoading">纭� 瀹�</el-button> + </span> + </el-dialog> <!-- 璇︽儏/涓嬭浇/瀹℃牳/鎵瑰噯 --> - <el-dialog :title="title0" :visible.sync="lookDialogVisible" width="800px" :class="{ downPdf: title0 == '涓嬭浇' }" + <el-dialog :title="title0" :visible.sync="lookDialogVisible" width="400px" :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>鏄惁閫氳繃{{title0}}锛�</span> <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> @@ -107,11 +115,11 @@ doProcessDeal, addProcessDeal, submitProcessTotaldeal, - pageProcessDeal, checkProcessTotaldeal, ratifyProcessTotaldeal, delProcessDeal, - pageProcessTotaldeal, + pageProcessTotaldeal, getProcessDeal, addProcessTotaldeal, + exportProcessTotaldeal } from "@/api/cnas/process/sampleDisposal"; export default { name: 'SampleDisposal', @@ -121,25 +129,40 @@ }, data() { return { - activeName: '濉啓', title: '鏂板', addDialogVisible: false, addLoading: false, outLoading: false, editDialogVisible: false, + queryParams: {}, + submitState: '', lookDialogVisible: false, title0: '鏌ョ湅', noCheckLoading: false, checkLoading: false, // 鍘嗗彶鍒楄〃 addInfo: {},//鏂板鏍峰搧 + addInfoDeal: { + month: '' + },//鏂板鏍峰搧 + addDialogVisibleDeal: false, + rules: { + sampleName: [{ required: true, message: '璇峰~鍐欐牱鍝佸悕绉�', trigger: 'blur' }], + sampleCode: [{ required: true, message: '璇峰~鍐欐牱鍝佺紪鍙�', trigger: 'blur' }], + sampleSupplier: [{ required: true, message: '璇烽�夋嫨渚涙牱鍗曚綅', trigger: 'change' }], + num: [{ required: true, message: '璇峰~鍐欐暟閲�', trigger: 'blur' }], + dealMethod: [{ required: true, message: '璇峰~鍐欏鐞嗘柟寮�', trigger: 'blur' }], + dealTime: [{ required: true, message: '璇烽�夋嫨鏃堕棿', trigger: 'change' }], + }, + rulesDeal: { + month: [{ required: true, message: '璇烽�夋嫨鏈堜唤', trigger: 'change' }], + }, customPageList: [], currentInfo: { arr: [] },//鏌ョ湅鐨勮鎯� outPower: false, addPower: false, - queryParams: {}, tableData: [], column: [ { label: "鏍峰搧鍚嶇О", prop: "sampleName" }, @@ -150,15 +173,17 @@ { label: "鏃堕棿", prop: "dealTime" }, { dataType: "action", - fixed: "right", label: "鎿嶄綔", operation: [ { name: "缂栬緫", type: "text", clickFun: (row) => { - this.handleAdd0(row); + this.handleAdd('edit',row); }, + disabled: (row) => { + return this.submitState === '宸叉彁浜�' + } }, { name: "鍒犻櫎", @@ -166,27 +191,74 @@ clickFun: (row) => { this.handleDelete(row); }, + disabled: (row) => { + return this.submitState === '宸叉彁浜�' + } }, ], }, ], - page: { - total: 0, - size: 10, - current: 0, - }, tableLoading: false, queryParams0: {}, tableData0: [], column0: [ { label: "鏈堜唤", prop: "month" }, - { label: "鎬绘暟閲�", prop: "totalNum" }, { label: "鎻愪氦浜�", prop: "submitUserName" }, + { + dataType: 'tag', + label: '鎻愪氦鐘舵��', + prop: 'submitState', + formatData: (params) => { + return params + }, + formatType: (params) => { + if (params === '寰呮彁浜�') { + return 'danger'; + } else if (params === '宸叉彁浜�') { + return 'success'; + } else { + return null; + } + } + }, { label: "瀹℃牳浜�", prop: "examineUserName" }, + { + dataType: 'tag', + label: '瀹℃牳鐘舵��', + prop: 'examineState', + formatData: (params) => { + return params + }, + formatType: (params) => { + if (params === '涓嶉�氳繃') { + return 'danger'; + } else if (params === '閫氳繃') { + return 'success'; + } else { + return null; + } + } + }, { label: "鎵瑰噯浜�", prop: "ratifyUserName" }, { + dataType: 'tag', + label: '鎵瑰噯鐘舵��', + prop: 'ratifyState', + formatData: (params) => { + return params + }, + formatType: (params) => { + if (params === '涓嶉�氳繃') { + return 'danger'; + } else if (params === '閫氳繃') { + return 'success'; + } else { + return null; + } + } + }, + { dataType: "action", - fixed: "right", label: "鎿嶄綔", operation: [ { @@ -201,9 +273,6 @@ type: "text", clickFun: (row) => { this.handleDown0(row); - }, - disabled: (row) => { - return !row.url } }, { @@ -241,14 +310,13 @@ ], page0: { total: 0, - size: 10, - current: 0, + size: 20, + current: 1, }, + operationType: '' }; }, mounted() { - this.getCustomPageList() - this.getList() this.getList0() }, methods: { @@ -262,27 +330,6 @@ }).catch(err => { }); }, handleDown() { }, - getList() { - this.tableLoading = true; - let param = { ...this.queryParams, ...this.page }; - delete param.total; - pageProcessDeal({ ...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(); - }, refresh() { this.queryParams0 = {}; this.page0.current = 1; @@ -292,9 +339,10 @@ this.page0.current = 1; this.getList0(); }, + // 鏌ヨ鍏ㄩ儴璁板綍 getList0() { this.tableLoading = true; - let param = { ...this.queryParams0, ...this.page }; + let param = { ...this.queryParams0, ...this.page0 }; delete param.total; pageProcessTotaldeal({ ...param }) .then((res) => { @@ -313,57 +361,40 @@ this.page0.size = limit; this.getList0(); }, - // 濉啓 - // handleAdd(row){ - // this.componentData0.entity.totaldealId = row.id - // this.editDialogVisible = true - // }, - // 鎵撳紑鏂板鐣岄潰 - handleAdd0(row) { - if (row) { - this.addInfo = this.HaveJson(row) - this.title = '缂栬緫' - } else { - this.title = '鏂板' - this.addInfo = {} - } - this.addDialogVisible = true + // 鎵撳紑鏂板鍘嗗彶鐣岄潰 + handleAdd0() { + this.addDialogVisibleDeal = true + this.addInfoDeal.month = '' }, - // 鎻愪氦鏂板 - submitAdd() { - if (this.addInfo.id) { - // 缂栬緫 - this.addLoading = true - doProcessDeal({ - totaldealId: this.queryParams.totaldealId, - ...this.addInfo - }).then(res => { - this.addLoading = false - this.addDialogVisible = false - this.$message({ - type: 'success', - message: '缂栬緫鎴愬姛!' + closeAddDialogVisible() { + this.$refs['addInfo'].resetFields(); + this.addDialogVisible = false + }, + // 鎻愪氦鏂板-鍘嗗彶 + submitAddDeal () { + this.$refs.addInfoDeal.validate(valid => { + if (valid) { + // 鏂板 + this.addLoading = true + addProcessTotaldeal({ + ...this.addInfoDeal + }).then(res => { + this.addLoading = false + this.addDialogVisibleDeal = false + this.$message({ + type: 'success', + message: '鏂板鎴愬姛!' + }); + this.getList0() + }).catch(err => { + this.addLoading = false }); - this.page.current = 0; - this.getList(); - }).catch(err => { }); - } else { - // 鏂板 - this.addLoading = true - addProcessDeal({ - totaldealId: this.queryParams.totaldealId, - ...this.addInfo - }).then(res => { - this.addLoading = false - this.addDialogVisible = false - this.$message({ - type: 'success', - message: '鏂板鎴愬姛!' - }); - this.page.current = 0; - this.getList(); - }).catch(err => { }); - } + } + }) + }, + closeDiaDeal() { + this.$refs['addInfoDeal'].resetFields(); + this.addDialogVisibleDeal = false }, // 鎻愪氦 handleSubmit(row) { @@ -385,36 +416,85 @@ }, // 鏌ョ湅 handleLook(row) { - this.activeName = '濉啓' - this.queryParams.totaldealId = row.id + this.queryParams.id = row.id + this.submitState = row.submitState this.$nextTick(() => { - this.page.current = 1; + this.editDialogVisible = true this.getList(); }) }, - commonFun(row, callbanck) { - this.currentInfo = row - this.queryParams.totaldealId = row.id - pageProcessDeal({ - current: -1, - size: -1, ...this.queryParams - }).then(res => { - this.lookDialogVisible = true - this.currentInfo.arr = res.data.records - if (callbanck) { - callbanck() + getList() { + this.tableLoading = true; + let param = { ...this.queryParams }; + getProcessDeal({ ...param }).then((res) => { + this.tableLoading = false; + if (res.code === 200) { + this.tableData = res.data; + } + }) + .catch((err) => { + this.tableLoading = false; + }); + }, + // 鎵撳紑鏂板璇︽儏寮规 + handleAdd(type, row) { + this.addDialogVisible = true + this.getCustomPageList() + this.operationType = type + if (row) { + this.addInfo = {...row} + } + }, + // 鎻愪氦-璇︽儏 + submitAdd() { + this.$refs.addInfo.validate(valid => { + if (valid) { + this.addLoading = true + addProcessDeal({ + totaldealId: this.queryParams.id, + ...this.addInfo + }).then(res => { + this.addLoading = false + this.addDialogVisible = false + this.$message({ + type: 'success', + message: '鏂板鎴愬姛!' + }); + this.getList() + }).catch(err => { + this.addLoading = false + }); } - }).catch(err => { }); + }) + }, + // 鎻愪氦淇敼璇︽儏 + handleEdit() { + if (type === 'submit') { + doProcessDeal({ + id: row.id, + ...row + }).then(res => { + this.$message({ + type: 'success', + message: '缂栬緫鎴愬姛!' + }); + this.getList(); + }).catch(err => { }); + } }, // 瀹℃牳 handleCheck(row) { this.title0 = '瀹℃牳' - this.commonFun(row) + this.lookDialogVisible = true + this.currentInfo = row + this.queryParams.id = row.id }, // 鎵瑰噯 handleApproval(row) { this.title0 = '鎵瑰噯' - this.commonFun(row) + this.lookDialogVisible = true + this.currentInfo = row + this.queryParams.id = row.id }, // 鎻愪氦瀹℃牳/鎵瑰噯 submitCheck(state) { @@ -455,67 +535,30 @@ }, // 瀵煎嚭璇︽儏 handleDown0(row) { - if (!row.url) { - this.$message.warning('鏆傛棤鏂囦欢') - return - } - // 鍚庣涓嬭浇 - this.$download.saveAs(row.url, row.month + ' 鏍峰搧澶勭悊鐢宠琛�'); + exportProcessTotaldeal({ id: row.id }).then(res => { + this.outLoading = false + const blob = new Blob([res], { type: 'application/msword' }); + this.$download.saveAs(blob, '鏍峰搧澶勭悊' + '.docx'); + }) }, handleDelete(row) { this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", { confirmButtonText: "纭畾", cancelButtonText: "鍙栨秷", type: "warning", - }) - .then(() => { - delProcessDeal({ id: row.id }).then((res) => { - this.$message.success("鍒犻櫎鎴愬姛"); - this.page.current = 0; - this.getList(); - }); - }) - .catch(() => { }); + }).then(() => { + delProcessDeal({ id: row.id }).then((res) => { + this.$message.success("鍒犻櫎鎴愬姛"); + this.getList(); + }); + }).catch(() => { }); }, }, } </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%; +>>>.el-dialog__body { + padding-top: 10px; } </style> -- Gitblit v1.9.3