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 | 564 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 564 insertions(+), 0 deletions(-)
diff --git a/src/views/CNAS/process/disposal/sampleDisposal/index.vue b/src/views/CNAS/process/disposal/sampleDisposal/index.vue
new file mode 100644
index 0000000..1cbcb06
--- /dev/null
+++ b/src/views/CNAS/process/disposal/sampleDisposal/index.vue
@@ -0,0 +1,564 @@
+<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="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="鏂板" :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>
+ </el-select>
+ </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%;">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <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="400px" :class="{ downPdf: title0 == '涓嬭浇' }"
+ :modal="title0 != '涓嬭浇'" top="5vh">
+ <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>
+ </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 {
+ doProcessDeal,
+ addProcessDeal,
+ submitProcessTotaldeal,
+ checkProcessTotaldeal,
+ ratifyProcessTotaldeal,
+ delProcessDeal,
+ pageProcessTotaldeal, getProcessDeal, addProcessTotaldeal,
+ exportProcessTotaldeal
+} from "@/api/cnas/process/sampleDisposal";
+export default {
+ name: 'SampleDisposal',
+ components: {
+ limsTable,
+ filePreview,
+ },
+ data() {
+ return {
+ 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,
+ tableData: [],
+ column: [
+ { label: "鏍峰搧鍚嶇О", prop: "sampleName" },
+ { label: "鏍峰搧缂栧彿", prop: "sampleCode" },
+ { label: "渚涙牱鍗曚綅", prop: "sampleSupplier" },
+ { label: "鏁伴噺", prop: "num" },
+ { label: "澶勭悊鏂瑰紡", prop: "dealMethod" },
+ { label: "鏃堕棿", prop: "dealTime" },
+ {
+ dataType: "action",
+ label: "鎿嶄綔",
+ operation: [
+ {
+ name: "缂栬緫",
+ type: "text",
+ clickFun: (row) => {
+ this.handleAdd('edit',row);
+ },
+ disabled: (row) => {
+ return this.submitState === '宸叉彁浜�'
+ }
+ },
+ {
+ name: "鍒犻櫎",
+ type: "text",
+ clickFun: (row) => {
+ this.handleDelete(row);
+ },
+ disabled: (row) => {
+ return this.submitState === '宸叉彁浜�'
+ }
+ },
+ ],
+ },
+ ],
+ tableLoading: false,
+ queryParams0: {},
+ tableData0: [],
+ column0: [
+ { label: "鏈堜唤", prop: "month" },
+ { 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",
+ label: "鎿嶄綔",
+ operation: [
+ {
+ name: "鏌ョ湅",
+ type: "text",
+ clickFun: (row) => {
+ this.handleLook(row);
+ },
+ },
+ {
+ name: "涓嬭浇",
+ type: "text",
+ clickFun: (row) => {
+ this.handleDown0(row);
+ }
+ },
+ {
+ name: "鎻愪氦",
+ type: "text",
+ clickFun: (row) => {
+ this.handleSubmit(row);
+ },
+ disabled: (row) => {
+ return !!row.submitState && row.submitState != '寰呮彁浜�'
+ }
+ },
+ {
+ name: "瀹℃牳",
+ type: "text",
+ clickFun: (row) => {
+ this.handleCheck(row);
+ },
+ disabled: (row) => {
+ return row.examineState == '閫氳繃' || row.submitState == '寰呮彁浜�'
+ }
+ },
+ {
+ name: "鎵瑰噯",
+ type: "text",
+ clickFun: (row) => {
+ this.handleApproval(row);
+ },
+ disabled: (row) => {
+ return row.ratifyState == '閫氳繃' || row.submitState == '寰呮彁浜�'
+ }
+ },
+ ],
+ },
+ ],
+ page0: {
+ total: 0,
+ size: 20,
+ current: 1,
+ },
+ operationType: ''
+ };
+ },
+ mounted() {
+ this.getList0()
+ },
+ methods: {
+ // 鑾峰彇閫佹牱鍗曚綅鍒楄〃
+ getCustomPageList() {
+ selectCustomPageList({
+ current: -1,
+ size: -1
+ }).then(res => {
+ this.customPageList = res.data.records
+ }).catch(err => { });
+ },
+ handleDown() { },
+ refresh() {
+ this.queryParams0 = {};
+ this.page0.current = 1;
+ this.getList0();
+ },
+ refreshTable() {
+ this.page0.current = 1;
+ this.getList0();
+ },
+ // 鏌ヨ鍏ㄩ儴璁板綍
+ getList0() {
+ this.tableLoading = true;
+ let param = { ...this.queryParams0, ...this.page0 };
+ delete param.total;
+ pageProcessTotaldeal({ ...param })
+ .then((res) => {
+ this.tableLoading = false;
+ if (res.code === 200) {
+ this.tableData0 = res.data.records;
+ this.page0.total = res.data.total;
+ }
+ })
+ .catch((err) => {
+ this.tableLoading = false;
+ });
+ },
+ pagination0({ page, limit }) {
+ this.page0.current = page;
+ this.page0.size = limit;
+ this.getList0();
+ },
+ // 鎵撳紑鏂板鍘嗗彶鐣岄潰
+ handleAdd0() {
+ this.addDialogVisibleDeal = true
+ this.addInfoDeal.month = ''
+ },
+ 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
+ });
+ }
+ })
+ },
+ closeDiaDeal() {
+ this.$refs['addInfoDeal'].resetFields();
+ this.addDialogVisibleDeal = false
+ },
+ // 鎻愪氦
+ handleSubmit(row) {
+ this.$confirm('鏄惁鎻愪氦 ' + row.month + ' 鏈堜唤鐨勬暟鎹�', '鎻愪氦', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ submitProcessTotaldeal({
+ id: row.id
+ }).then(res => {
+ this.$message({
+ type: 'success',
+ message: '鎻愪氦鎴愬姛!'
+ });
+ this.refreshTable()
+ }).catch(err => { });
+ })
+ },
+ // 鏌ョ湅
+ handleLook(row) {
+ this.queryParams.id = row.id
+ this.submitState = row.submitState
+ this.$nextTick(() => {
+ this.editDialogVisible = true
+ this.getList();
+ })
+ },
+ 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
+ });
+ }
+ })
+ },
+ // 鎻愪氦淇敼璇︽儏
+ 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.lookDialogVisible = true
+ this.currentInfo = row
+ this.queryParams.id = row.id
+ },
+ // 鎵瑰噯
+ handleApproval(row) {
+ this.title0 = '鎵瑰噯'
+ this.lookDialogVisible = true
+ this.currentInfo = row
+ this.queryParams.id = row.id
+ },
+ // 鎻愪氦瀹℃牳/鎵瑰噯
+ submitCheck(state) {
+ if (state == '閫氳繃') {
+ this.checkLoading = true
+ } else {
+ this.noCheckLoading = true
+ }
+ if (this.title0 == '瀹℃牳') {
+ checkProcessTotaldeal({
+ id: this.currentInfo.id,
+ state: state
+ }).then(res => {
+ this.checkLoading = false
+ this.noCheckLoading = false
+ this.$message({
+ type: 'success',
+ message: '鎿嶄綔鎴愬姛!'
+ });
+ this.refreshTable()
+ this.lookDialogVisible = false
+ }).catch(err => { });
+ } else if (this.title0 == '鎵瑰噯') {
+ ratifyProcessTotaldeal({
+ id: this.currentInfo.id,
+ state: state
+ }).then(res => {
+ this.checkLoading = false
+ this.noCheckLoading = false
+ this.$message({
+ type: 'success',
+ message: '鎿嶄綔鎴愬姛!'
+ });
+ this.refreshTable()
+ this.lookDialogVisible = false
+ }).catch(err => { });
+ }
+ },
+ // 瀵煎嚭璇︽儏
+ handleDown0(row) {
+ 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.getList();
+ });
+ }).catch(() => { });
+ },
+ },
+}
+</script>
+
+<style scoped>
+>>>.el-dialog__body {
+ padding-top: 10px;
+}
+</style>
--
Gitblit v1.9.3