From f01d916828cf9746a0f438d9472af9271efd9729 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期一, 03 三月 2025 14:47:47 +0800
Subject: [PATCH] 完成设备搬迁

---
 src/views/CNAS/resourceDemand/device/component/borrow.vue |  262 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 146 insertions(+), 116 deletions(-)

diff --git a/src/views/CNAS/resourceDemand/device/component/borrow.vue b/src/views/CNAS/resourceDemand/device/component/borrow.vue
index fba75bc..481cd21 100644
--- a/src/views/CNAS/resourceDemand/device/component/borrow.vue
+++ b/src/views/CNAS/resourceDemand/device/component/borrow.vue
@@ -4,7 +4,7 @@
     <div class="search">
       <div class="search_thing">
         <div class="search_label">娴佺▼缂栧彿锛�</div>
-        <div><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="componentData.entity.processNumber"
+        <div><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.processNumber"
             @keyup.enter.native="refreshTable()"></el-input></div>
       </div>
       <div class="search_thing" style="padding-left: 30px;">
@@ -17,8 +17,10 @@
       </div>
     </div>
     <div class="tables" style="margin-top: 10px;">
-      <ValueTable ref="ValueTable" :url="$api.deviceBorrow.deviceBorrowPage"
-        :delUrl="$api.deviceBorrow.deleteDeviceBorrow" :componentData="componentData" :key="upIndex" />
+      <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'"
+        :page="page" @pagination="pagination"></lims-table>
+      <!-- <ValueTable ref="ValueTable" :url="$api.deviceBorrow.deviceBorrowPage"
+        :delUrl="$api.deviceBorrow.deleteDeviceBorrow" :componentData="componentData" :key="upIndex" /> -->
     </div>
     <el-dialog title="浠櫒璁惧棰�(鍊�)鐢ㄧ櫥璁�" top="5vh" :visible.sync="dialogVisible" width="60%">
       <el-steps :active="currentStep" finish-status="success" align-center>
@@ -197,13 +199,18 @@
 </template>
 
 <script>
-import ValueTable from '@/components/Table/value-table.vue'
+import limsTable from "@/components/Table/lims-table.vue";
 import { dateFormat } from '@/utils/date'
 import {
   saveDeviceBorrow,
   deleteCNASFile,
+  getDeviceBorrow,
+  deviceBorrowExport,
+  deleteDeviceBorrow,
+  deviceBorrowPage,
 } from '@/api/cnas/resourceDemand/device.js'
 import { selectUserCondition } from "@/api/business/inspectionTask";
+import { mapGetters } from "vuex";
 export default {
   props: {
     clickNodeVal: {
@@ -214,72 +221,12 @@
     }
   },
   components: {
-    ValueTable
+    limsTable
   },
   data() {
     return {
       dialogVisible: false,
       dialogVisible0: false,
-      //琛ㄥご鏄剧ず
-      componentData: {
-        entity: {
-          processNumber: null,
-          deviceId: null,
-          orderBy: {
-            field: 'id',
-            order: 'asc'
-          }
-        },
-        isIndex: true,
-        showSelect: false,
-        select: false,
-        do: [
-          {
-            id: 'show',
-            font: '鏌ョ湅',
-            type: 'text',
-            method: 'lookDetail'
-          },
-          {
-            id: 'delete',
-            font: '鍒犻櫎',
-            type: 'text',
-            method: 'doDiy'
-          },
-          {
-            id: '111',
-            font: '娴佺▼璺熻釜',
-            type: 'text',
-            method: 'handleLookList'
-          }],
-        init: false,
-        tagField: {
-          recipientState: {
-            select: [{
-              value: 0,
-              type: 'success',
-              label: '鍚堟牸'
-            }, {
-              value: 1,
-              type: 'warning',
-              label: '缁翠慨'
-            }, {
-              value: 2,
-              type: 'info',
-              label: '鍋滅敤'
-            }, {
-              value: 3,
-              type: 'danger',
-              label: '鎶ュ簾'
-            }]
-          }
-        },
-        selectField: {},
-        requiredAdd: [],
-        requiredUp: [],
-      },
-      upIndex: 0,
-      entityCopy: null,
       currentStep: 0, // 姝ラ鏉℃樉绀虹鍑犳
       currentStepClick: 0, // 鐐瑰嚮姝ラ鏉″彉鍖�
       steps: ['鍊熷嚭', '鍊熺敤'],
@@ -307,15 +254,94 @@
         nextUser: [{ required: true, message: '璇烽�夋嫨涓嬬幆鑺傝礋璐d汉', trigger: 'change' }],
       },
       deviceLogs: [],
-      outLoading: false
+      outLoading: false,
+      recipientStateList: [{
+        value: 0,
+        type: 'success',
+        label: '鍚堟牸'
+      }, {
+        value: 1,
+        type: 'warning',
+        label: '缁翠慨'
+      }, {
+        value: 2,
+        type: 'info',
+        label: '鍋滅敤'
+      }, {
+        value: 3,
+        type: 'danger',
+        label: '鎶ュ簾'
+      }],
+      queryParams: {},
+      tableData: [],
+      column: [
+        { label: "娴佺▼缂栧彿", prop: "processNumber" },
+        { label: "璁惧鍚嶇О", prop: "deviceName" },
+        {
+          label: "绠$悊缂栧彿",
+          prop: "unifyNumber"
+        },
+        { label: "鍊熺敤浜�", prop: "recipientUser" },
+        { label: "鍊熺敤浜鸿仈绯绘柟寮�", prop: "borrowerContactInformation", width: '140px' },
+        { label: "鍊熺敤鏃ユ湡", prop: "recipientTime" },
+        {
+          label: "鍊熺敤鏃剁姸鎬�", prop: "recipientState", dataType: "tag",
+          formatData: (params) => {
+            return this.recipientStateList.find((m) => m.value == params).label;
+          },
+          formatType: (params) => {
+            return this.recipientStateList.find((m) => m.value == params).type;
+          },
+        },
+        { label: "鍊熷嚭浜�", prop: "submitUser" },
+        { label: "鍊熷嚭鏃ユ湡", prop: "createTime" },
+        {
+          label: "褰撳墠鐘舵��", prop: "nowState"
+        },
+        { label: "褰撳墠璐d换浜�", prop: "nowUser" },
+        { label: "闄勪欢", prop: "fileName" },
+        {
+          dataType: "action",
+          fixed: "right",
+          label: "鎿嶄綔",
+          operation: [
+            {
+              name: "鏌ョ湅",
+              type: "text",
+              clickFun: (row) => {
+                this.lookDetail(row);
+              },
+            },
+            {
+              name: "鍒犻櫎",
+              type: "text",
+              clickFun: (row) => {
+                this.handleDelete(row);
+              },
+            },
+            {
+              name: "娴佺▼璺熻釜",
+              type: "text",
+              clickFun: (row) => {
+                this.handleLookList(row);
+              },
+            },
+          ],
+        },
+      ],
+      page: {
+        total: 0,
+        size: 10,
+        current: 0,
+      },
+      tableLoading: false,
     }
   },
   watch: {
     // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
     clickNodeVal(newVal) {
       if (newVal.value) {
-        this.componentData.entity.deviceId = this.clickNodeVal.value
-        this.entityCopy = this.HaveJson(this.componentData.entity)
+        thisqueryParams.deviceId = this.clickNodeVal.value
         this.refreshTable()
       }
     },
@@ -329,25 +355,46 @@
     }
   },
   computed: {
+    ...mapGetters(["nickName"]),
     action() {
       return this.javaApi + '/personBasicInfo/saveCNASFile'
     }
   },
   mounted() {
-    this.componentData.entity.deviceId = this.clickNodeVal.value
-    this.entityCopy = this.HaveJson(this.componentData.entity)
-    // console.log(333,this.clickNodeVal)
+    this.queryParams.deviceId = this.clickNodeVal.value
     this.getUserList()
     this.refreshTable()
   },
   methods: {
-    refreshTable(e) {
-      this.$refs['ValueTable'].selectList(e)
+    getList() {
+      this.tableLoading = true;
+      let param = { ...this.queryParams, ...this.page };
+      delete param.total;
+      deviceBorrowPage({ ...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.componentData.entity = this.HaveJson(this.entityCopy)
-      this.refreshTable()
-      // this.upIndex++
+      this.queryParams = {};
+      this.page.current = 1;
+      this.getList();
+    },
+    refreshTable() {
+      this.page.current = 1;
+      this.getList();
     },
     choiceStep(index) {
       this.currentStepClick = index
@@ -362,11 +409,11 @@
           // 鑾峰彇褰撳墠鐜妭鎿嶄綔浜轰笌鏃ユ湡
           switch (this.currentStep) {
             case 0:
-              this.form.submitOperationUser = user.name
+              this.form.submitOperationUser = this.nickName
               this.form.submitOperationTime = dateTime
               break
             case 1:
-              this.form.receiveOperationUser = user.name
+              this.form.receiveOperationUser = this.nickName
               this.form.receiveOperationTime = dateTime
               break
             default:
@@ -452,7 +499,7 @@
     },
     // 鏌ョ湅璇︽儏
     lookDetail(row) {
-      this.$axios.get(this.$api.deviceBorrow.getDeviceBorrow + '?id=' + row.id).then(res => {
+      getDeviceBorrow({ id: row.id }).then(res => {
         if (res.code == 200) {
           this.form = res.data
           this.form.deviceName = this.clickNodeVal.label
@@ -493,56 +540,39 @@
     //瀵煎嚭
     handleDown() {
       this.outLoading = true
-      this.$axios.post(this.$api.deviceBorrow.deviceBorrowExport, { deviceId: this.clickNodeVal.value }, { responseType: 'blob' }).then(res => {
+      deviceBorrowExport({ deviceId: this.clickNodeVal.value }).then(res => {
         this.outLoading = false
         const blob = new Blob([res], {
           type: 'application/force-download'
         })
         const filename = decodeURI(this.clickNodeVal.label + '璁惧鍊熷嚭缁熻' + '.xlsx')
-        //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆
-        let reader = new FileReader();
-        reader.readAsText(blob, 'utf-8');
-        reader.onload = () => {
-          try {
-            let result = JSON.parse(reader.result);
-            if (result.message) {
-              this.$message.error(result.message);
-            } else {
-              // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
-              const elink = document.createElement('a')
-              elink.download = filename
-              elink.style.display = 'none'
-              elink.href = URL.createObjectURL(blob)
-              document.body.appendChild(elink)
-              elink.click();
-              URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
-              document.body.removeChild(elink)
-              this.$message.success('瀵煎嚭鎴愬姛')
-            }
-          } catch (err) {
-            console.log(err);
-            // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
-            const elink = document.createElement('a')
-            elink.download = filename
-            elink.style.display = 'none'
-            elink.href = URL.createObjectURL(blob)
-            document.body.appendChild(elink)
-            elink.click();
-            URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
-            document.body.removeChild(elink)
-            this.$message.success('瀵煎嚭鎴愬姛')
-          }
-        }
+        this.$download.saveAs(blob, filename)
+        this.$message.success('瀵煎嚭鎴愬姛')
       })
     },
     handleLookList(row) {
-      this.$axios.get(this.$api.deviceBorrow.getDeviceBorrow + '?id=' + row.id).then(res => {
+      getDeviceBorrow({ id: row.id }).then(res => {
         if (res.code == 200) {
           this.deviceLogs = res.data.deviceLogs
           this.dialogVisible0 = true
         }
       })
-    }
+    },
+    handleDelete(row) {
+      this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      })
+        .then(() => {
+          deleteDeviceBorrow({ id: row.id }).then((res) => {
+            if (res.code == 201) return;
+            this.$message.success("鍒犻櫎鎴愬姛");
+            this.refresh();
+          });
+        })
+        .catch(() => { });
+    },
   },
 }
 </script>

--
Gitblit v1.9.3