From 2f5d64825dbc81f9732893ee9f3de1a38725ae25 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 10 三月 2025 17:12:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/views/CNAS/resourceDemand/device/component/equipmentAcceptance.vue |  317 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 317 insertions(+), 0 deletions(-)

diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentAcceptance.vue b/src/views/CNAS/resourceDemand/device/component/equipmentAcceptance.vue
new file mode 100644
index 0000000..1bea84b
--- /dev/null
+++ b/src/views/CNAS/resourceDemand/device/component/equipmentAcceptance.vue
@@ -0,0 +1,317 @@
+<template>
+  <div>
+    <div>
+      <div style="margin: 10px 0;text-align: right">
+        <el-button size="small" type="primary" @click="handleForm('add')">鏂板</el-button>
+      </div>
+      <div>
+        <el-table ref="yearTable" v-loading="yearTableDetailDataLoading" :data="yearTableDetailData"
+          height="calc(100vh - 18em)" style="width: 100% ;">
+          <!-- 琛ㄦ牸鍒� -->
+          <el-table-column align="center" header-align="center" label="搴忓彿" prop="prop" type="index"
+            width="70"></el-table-column>
+          <el-table-column label="鍒拌揣鏃ユ湡" min-width="150" prop="arrivalDate"></el-table-column>
+          <el-table-column label="閲戦" min-width="100" prop="goldAmount"></el-table-column>
+          <el-table-column label="缁翠慨鍗曚綅" min-width="150" prop="maintenanceunit"></el-table-column>
+          <!-- 鎿嶄綔鎸夐挳 -->
+          <el-table-column align="center" label="鎿嶄綔" min-width="180">
+            <template slot-scope="scope">
+              <el-button size="small" type="text" @click="handleForm('edit', scope.row.acceptanceId)">缂栬緫</el-button>
+              <el-button size="small" type="text" @click="handleForm('view', scope.row.acceptanceId)">鏌ョ湅</el-button>
+              <el-button size="small" type="text" @click="record(scope.row)">闄勪欢</el-button>
+              <el-button size="small" type="text" @click="handleDownOne(scope.row.acceptanceId)">瀵煎嚭</el-button>
+              <el-button size="small" style="color: #f56c6c" type="text"
+                @click="deleteFun(scope.row.acceptanceId)">鍒犻櫎</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-pagination :current-page="1" :page-size="pagination1.size" :page-sizes="[10, 20, 30, 50, 100]"
+          :total="pagination1.total" layout="->,total, sizes, prev, pager, next, jumper"
+          @size-change="handleSizeChange1" @current-change="handleCurrentChange1">
+        </el-pagination>
+      </div>
+    </div>
+    <acceptance-form v-if="applicationForm" ref="applicationForm" @closeDialog="closeDialog"></acceptance-form>
+    <!--涓婁紶鎶ュ憡-->
+    <el-dialog :visible.sync="filesDialogVisible" title="闄勪欢" width="80%" @closed="closeFilesLook">
+      <div style="display: flex;justify-content: space-between;">
+        <el-upload ref='upload' :action="fileAction" :auto-upload="true" :before-upload="fileBeforeUpload"
+          :data="{ acceptanceId: acceptanceId }" :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;">
+          <el-button size="small" style="height: 38px" type="primary">闄勪欢涓婁紶</el-button>
+        </el-upload>
+      </div>
+      <div>
+        <limsTable ref="yearTable" :column="columnData" :height="'calc(100vh - 30em)'" :highlightCurrentRow="true"
+          :table-data="tableData" :table-loading="tableLoading" style="margin-top: 0.5em;" :page="pagination1">
+        </limsTable>
+      </div>
+    </el-dialog>
+    <el-dialog :visible.sync="lookDialogVisible" fullscreen title="鏌ョ湅闄勪欢" top="5vh" width="800px">
+      <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="fileUrl"
+        style="height: 90vh;overflow-y: auto;" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import AcceptanceForm from "./acceptanceForm.vue";
+import limsTable from "@/components/Table/lims-table.vue";
+import filePreview from "@/components/Preview/filePreview.vue";
+import {
+  pageDeviceAcceptance,
+  getDeviceAcceptanceFileList,
+  delDeviceAcceptanceFileList,
+  exportDeviceAcceptance,
+  delDeviceAcceptance,
+} from '@/api/cnas/resourceDemand/device.js'
+export default {
+  name: "equipment-acceptance",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { filePreview, limsTable, AcceptanceForm },
+  props: {
+    clickNodeVal: {
+      type: Object,
+      default: () => {
+      }
+    }
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      pagination1: {
+        size: 10,
+        current: 1,
+        total: 0,
+      },
+      yearTableDetailDataLoading: false,
+      yearTableDetailData: [],
+      applicationForm: false,
+      filesDialogVisible: false,
+      columnData: [
+        {
+          label: '鏂囦欢鍚嶇О',
+          prop: 'fileName',
+          minWidth: '150px'
+        },
+        {
+          dataType: 'action',
+          minWidth: '100',
+          label: '鎿嶄綔',
+          fixed: 'right',
+          operation: [
+            {
+              name: '棰勮',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleLook(row)
+              }
+            },
+            {
+              name: '涓嬭浇',
+              type: 'text',
+              clickFun: (row) => {
+                this.upload(row)
+              }
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              color: '#f56c6c',
+              clickFun: (row) => {
+                this.delete(row)
+              }
+            }
+          ]
+        }
+      ],
+      tableData: [],
+      tableLoading: false,
+      acceptanceId: '', // 涓婁紶闄勪欢褰撳墠琛岀殑id
+      currentInfo: {},
+      lookDialogVisible: false,
+      fileUrl: ''
+    }
+  },
+  mounted() {
+    this.getYearTableDetailData(this.clickNodeVal.value)
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鏌ヨ
+    getYearTableDetailData(deviceId) {
+      this.yearTableDetailDataLoading = true
+      pageDeviceAcceptance({
+        current: this.pagination1.current,
+        size: this.pagination1.size,
+        deviceId: deviceId,
+      }).then(res => {
+        if (res.code == 200) {
+          this.yearTableDetailData = res.data.records
+          this.pagination1.total = res.data.total
+        }
+        this.yearTableDetailDataLoading = false
+      }).catch(err => {
+        this.yearTableDetailDataLoading = false
+      })
+    },
+    handleForm(type, id) {
+      this.applicationForm = true
+      this.$nextTick(() => {
+        this.$refs.applicationForm.openDialog(type, id, this.clickNodeVal.value)
+      })
+    },
+    closeDialog() {
+      this.applicationForm = false
+      this.getYearTableDetailData(this.clickNodeVal.value)
+    },
+    // 鎵撳紑鎶ュ憡寮规
+    record(row) {
+      this.filesDialogVisible = true
+      this.acceptanceId = row.acceptanceId
+      this.searchTableList()
+    },
+    // 鏌ヨ闄勪欢鍒楄〃
+    searchTableList() {
+      this.tableLoading = true
+      getDeviceAcceptanceFileList({ acceptanceId: this.acceptanceId }).then(res => {
+        this.tableLoading = false
+        this.tableData = res.data
+      }).catch(err => {
+        this.tableLoading = false
+        console.log('err---', err);
+      })
+    },
+    // 鏌ョ湅鏂囦欢
+    handleLook(row) {
+      this.currentInfo = row
+      this.lookDialogVisible = true
+      const state = /\.(jpg|jpeg|png|gif)$/i.test(this.currentInfo.fileUrl)
+      if (state) {
+        this.fileUrl = this.javaApi + '/img/' + this.currentInfo.fileUrl
+      } else {
+        this.fileUrl = this.javaApi + '/word/' + this.currentInfo.fileUrl
+      }
+    },
+    // 涓嬭浇
+    upload(row) {
+      this.$download.saveAs(row.fileUrl, row.fileName)
+    },
+    // 鍒犻櫎
+    delete(row) {
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        this.tableLoading = true
+        delDeviceAcceptanceFileList({ acceptanceFileId: row.acceptanceFileId }).then(res => {
+          this.tableLoading = false
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.searchTableList()
+        }).catch(err => {
+          this.tableLoading = false
+          console.log('err---', err);
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      });
+    },
+    // 涓婁紶闄勪欢
+    fileBeforeUpload(file) {
+      let flag = true
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload.clearFiles()
+        flag = false
+      }
+      if (!flag) {
+        return Promise.reject(flag); //姝g‘鐨勭粓姝�
+      }
+    },
+    onError(err, file, fileList, type) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload.clearFiles()
+    },
+    handleSuccessUp(response,) {
+      this.upLoading = false;
+      if (response.code == 200) {
+        this.$message.success('涓婁紶鎴愬姛');
+        this.searchTableList()
+      }
+    },
+    closeFilesLook() {
+      this.filesDialogVisible = false
+    },
+    // 鍒嗛〉
+    handleSizeChange1(val) {
+      this.pagination1.size = val
+      this.getYearTableDetailData(this.clickNodeVal.value)
+    },
+    // 鍒嗛〉
+    handleCurrentChange1(val) {
+      this.pagination1.current = val
+      this.getYearTableDetailData(this.clickNodeVal.value)
+    },
+    // 瀵煎嚭
+    handleDownOne(id) {
+      this.outLoading = true
+      exportDeviceAcceptance({ acceptanceId: id }).then(res => {
+        this.outLoading = false
+        const blob = new Blob([res], { type: 'application/octet-stream' });
+        this.$download.saveAs(blob, '璁惧楠屾敹.doc')
+      })
+    },
+    // 鍒犻櫎
+    deleteFun(id) {
+      this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        delDeviceAcceptance({ acceptanceId: id }).then(res => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.getYearTableDetailData(this.clickNodeVal.value);
+        });
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      });
+    },
+  },
+  watch: {
+    // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
+    clickNodeVal(newVal) {
+      if (newVal.value) {
+        this.getYearTableDetailData(newVal.value);
+      }
+    },
+  },
+  computed: {
+    fileAction() {
+      return this.javaApi + '/deviceAcceptance/uploadDeviceAcceptanceFile'
+
+    }
+  },
+}
+</script>
+
+<style scoped>
+.title {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.title-search {
+  display: flex;
+  align-items: center;
+  margin: 10px 0;
+}
+</style>

--
Gitblit v1.9.3