From c87ec8dac5f2b8f16036b794850b8f4e552a71d7 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 28 二月 2025 15:40:04 +0800
Subject: [PATCH] 人员-任职授权记录搬迁

---
 src/views/CNAS/personnel/personnelInfo/tabs/mandate.vue |  404 +++++++++++++++++++++-----------------------------------
 1 files changed, 153 insertions(+), 251 deletions(-)

diff --git a/src/views/CNAS/personnel/personnelInfo/tabs/mandate.vue b/src/views/CNAS/personnel/personnelInfo/tabs/mandate.vue
index 72b75ba..691970d 100644
--- a/src/views/CNAS/personnel/personnelInfo/tabs/mandate.vue
+++ b/src/views/CNAS/personnel/personnelInfo/tabs/mandate.vue
@@ -1,47 +1,31 @@
 <template>
-    <div class="flex_column">
-<!--        <TableCard :showForm="isDepartment" title="浠昏亴鎺堟潈璁板綍">-->
-<!--            <template v-slot:form>-->
-<!--                <div v-if="isDepartment" class="w100 items_center justify_between">-->
-<!--                    <div></div>-->
-<!--                    <div>-->
-<!--                        <el-button size="small" type="primary" @click="openDialog">鏂板</el-button>-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--            </template>-->
-<!--            <template v-slot:table>-->
-<!--                <ZTTable-->
-<!--                    :column="columnData"-->
-<!--                    :height="'calc(100vh - 21em)'"-->
-<!--                    :table-data="tableData"-->
-<!--                    :table-loading="loading"-->
-<!--                    style="margin-top: 18px; padding: 0 15px;"-->
-<!--                ></ZTTable>-->
-<!--                <el-divider></el-divider>-->
-<!--                <div class="pagination">-->
-<!--                    <div></div>-->
-<!--                    <el-pagination-->
-<!--                        :page-size="pagination.pageSize"-->
-<!--                        :page-sizes="[10, 20, 30, 40]"-->
-<!--                        :total="pagination.total"-->
-<!--                        layout="total, sizes, prev, pager, next, jumper"-->
-<!--                        @current-change="currentChange"-->
-<!--                        @size-change="sizeChange"-->
-<!--                    >-->
-<!--                    </el-pagination>-->
-<!--                </div>-->
-<!--            </template>-->
-<!--        </TableCard>-->
-        <Add ref="mandateModal" @refresh="getTableData"></Add>
+  <div class="flex_column">
+    <div>
+      <div v-if="isDepartment" style="display: flex;justify-content: space-between;margin-bottom: 10px">
+        <el-button size="small" type="primary" @click="getTableData">鍒锋柊</el-button>
+        <el-button size="small" type="primary" icon="el-icon-plus" @click="openDialog">鏂板</el-button>
+      </div>
+      <lims-table :tableData="tableData" :column="columnData"
+                  @pagination="page" :height="'calc(100vh - 18em)'"
+                  :page="pagination" :tableLoading="loading"></lims-table>
     </div>
+    <Add ref="mandateModal" @refresh="getTableData"></Add>
+  </div>
 </template>
 <script>
-// import Add from "./Add.vue"
+import Add from "../components/mandateAdd.vue"
+import limsTable from "@/components/Table/lims-table.vue";
+import {
+  deletePersonPostAuthorizationRecord, exportPersonPostAuthorizationRecord,
+  PersonPostAuthorizationRecordPage
+} from "@/api/cnas/personal/personPostAuthorizationRecord";
+import {delCustomById} from "@/api/system/customer";
 
 export default {
-    components: {
-        // Add
-    },
+  components: {
+    limsTable,
+    Add
+  },
   props: {
     departId: {
       type: Number,
@@ -54,223 +38,141 @@
       default: false
     }
   },
-    data() {
-        return {
-            // departId: 0,
-            columnData: [
-                {
-                    label: '搴忓彿',
-                    prop: 'id'
-                }, {
-                    label: '璇佷功缂栧彿',
-                    prop: 'certificateNumber'
-                }, {
-                    label: '琚换鑱屼汉鍛�',
-                    prop: 'userName'
-                }, {
-                    label: '浠昏亴宀椾綅',
-                    prop: 'post'
-                }, {
-                    label: '鐞嗚鑰冭瘯鎴愮哗',
-                    prop: 'num1'
-                },{
-                    label: '鎿嶄綔鎶�鑳借�冭瘯鎴愮哗',
-                    prop: 'num2'
-                },{
-                    label: '鎿嶄綔鏃堕棿',
-                    prop: 'updateTime'
-                }, {
-                    label: '澶囨敞',
-                    prop: 'remarks',
-                    width: 300
-                }, {
-                    label: '鎿嶄綔',
-                    dataType: 'action',
-                    width: 160,
-                fixed: 'right',
-                    operation: [
-                        {
-                            name: '缂栬緫',
-                            type: 'text',
-                            clickFun: (row) => {
-                                this.openDialog(row, true)
-                            }
-                        }, {
-                            name: '涓嬭浇',
-                            type: 'text',
-                            clickFun: (row) => {
-                                this.handleDown(row)
-                            }
-                        }, {
-                            name: '鍒犻櫎',
-                            type: 'text',
-                            color: '#f56c6c',
-                            clickFun: (row) => {
-                                this.deleteNotify(row.id)
-                            }
-                        }
-                    ]
-                },
-            ],
-            tableData: [],
-            pagination: {
-                current: 1,
-                pageSize: 20,
-                total: 0
-            },
-            loading: false
-        }
-    },
-    mounted() {
-      this.getTableData()
-        console.log(this.departId)
-    },
-    methods: {
-        openDialog(row, type=false) {
-            this.$refs.mandateModal.openDialog(row, type)
-        },
-        /**
-         * @desc 鏌ヨ琛ㄦ牸鏁版嵁
-         */
-        async getTableData() {
-            this.loading = true
-          const params = this.isDepartment ? {
-            departLimsId: this.departId,
-            current: this.pagination.current,
-            size: this.pagination.pageSize
-          } : {
-            userId: this.departId,
-            current: this.pagination.current,
-            size: this.pagination.pageSize
-          }
-            const { code, data } = await this.$axios({
-                method: 'get',
-                url: getPersonPostAuthorizationRecordPage,
-                params: params
-            })
-            if(code == 200) {
-                this.pagination.total = data.total
-                this.tableData = data.records
-                this.loading = false
-            }
-        },
-        /**
-         * @desc 褰撳墠椤垫敼鍙�
-         */
-        currentChange(current) {
-            this.pagination.current = current
-            this.getTableData()
-        },
-        /**
-         * @desc 姣忛〉涓暟鏀瑰彉
-         */
-        sizeChange(pageSize) {
-            this.pagination.pageSize = pageSize
-            this.getTableData()
-        },
-        /**
-         * @desc 鍒犻櫎浠昏亴璁板綍
-         */
-        deleteNotify(id) {
-            this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', {
-                confirmButtonText: '纭畾',
-                cancelButtonText: '鍙栨秷',
-                type: 'warning'
-            }).then(() => {
-                this.delMandate(id)
-            })
-        },
-        /**
-         * @desc api鍒犻櫎
-         */
-        async delMandate(id) {
-            const formData = new FormData()
-            formData.append('id', id)
-            const { code, data } = await this.$axios({
-                method: 'delete',
-                url: deletePersonPostAuthorizationRecord,
-                data: formData,
-                noQs: true
-            })
-            if(code == 200) {
-                this.$message({ message: '鍒犻櫎鎴愬姛', type: 'success' })
-                this.getTableData()
-            } else {
-                this.$message({ message: '鍒犻櫎澶辫触', type: 'error' })
-            }
-        },
-        /**
-         * @desc 鑾峰彇璁惧id
-         */
-        getDepart(id) {
-            this.departId = id
-            this.getTableData()
-        },
-        handleDown(row){
-          this.$axios.post(this.$api.personPostAuthorizationRecord.exportPersonPostAuthorizationRecord,{id:row.id},{responseType: "blob"}).then(res => {
-            if(res.code == 201){
-              this.$message.error(res.message)
-              return
-            }
-            const blob = new Blob([res],{ type: 'application/octet-stream' });
-            //灏咮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 url = URL.createObjectURL(blob);
-                  const link = document.createElement('a');
-                  link.href = url;
-                  link.download = '浠昏亴鎺堟潈-'+row.certificateNumber+'-'+row.post + '.docx';
-                  link.click();
-                  this.$message.success('瀵煎嚭鎴愬姛')
-                }
-              } catch (err) {
-                console.log(err);
-                const url = URL.createObjectURL(blob);
-                const link = document.createElement('a');
-                link.href = url;
-                link.download = '浠昏亴鎺堟潈-'+row.certificateNumber+'-'+row.post + '.docx';
-                link.click();
-                this.$message.success('瀵煎嚭鎴愬姛')
+  data() {
+    return {
+      columnData: [
+        {
+          label: '搴忓彿',
+          prop: 'id'
+        }, {
+          label: '璇佷功缂栧彿',
+          prop: 'certificateNumber'
+        }, {
+          label: '琚换鑱屼汉鍛�',
+          prop: 'userName'
+        }, {
+          label: '浠昏亴宀椾綅',
+          prop: 'post'
+        }, {
+          label: '鐞嗚鑰冭瘯鎴愮哗',
+          prop: 'num1',
+          width: 120
+        },{
+          label: '鎿嶄綔鎶�鑳借�冭瘯鎴愮哗',
+          prop: 'num2',
+          width: 150
+        },{
+          label: '鎿嶄綔鏃堕棿',
+          prop: 'updateTime'
+        }, {
+          label: '澶囨敞',
+          prop: 'remarks',
+          width: 300
+        }, {
+          label: '鎿嶄綔',
+          dataType: 'action',
+          width: 160,
+          fixed: 'right',
+          operation: [
+            {
+              name: '缂栬緫',
+              type: 'text',
+              clickFun: (row) => {
+                this.openDialog(row, true)
+              }
+            }, {
+              name: '涓嬭浇',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleDown(row)
+              }
+            }, {
+              name: '鍒犻櫎',
+              type: 'text',
+              color: '#f56c6c',
+              clickFun: (row) => {
+                this.deleteNotify(row.id)
               }
             }
-          })
-        }
+          ]
+        },
+      ],
+      tableData: [],
+      pagination: {
+        current: 1,
+        size: 20,
+        total: 0
+      },
+      loading: false
+    }
+  },
+  mounted() {
+    this.getTableData()
+  },
+  methods: {
+    openDialog(row, type=false) {
+      this.$refs.mandateModal.openDialog(row, type)
     },
-//   watch: {
-//     departId: {
-//       handler(newId, oldId) {
-//         if (newId) {
-//           this.getTableData();
-//         }
-//       }
-//     }
-//   }
+    /**
+     * @desc 鏌ヨ琛ㄦ牸鏁版嵁
+     */
+    async getTableData() {
+      const params = this.isDepartment ? {
+        departLimsId: this.departId,
+        current: this.pagination.current,
+        size: this.pagination.pageSize
+      } : {
+        userId: this.departId,
+        current: this.pagination.current,
+        size: this.pagination.pageSize
+      }
+      this.loading = true
+      PersonPostAuthorizationRecordPage(params).then(res => {
+        this.loading = false
+        this.tableData = res.data.records
+        this.pagination.total = res.data.total
+      }).catch(err => {
+        this.loading = false
+      })
+    },
+    page (page) {
+      this.pagination.size = page.limit
+      this.getTableData()
+    },
+    /**
+     * @desc 鍒犻櫎浠昏亴璁板綍
+     */
+    deleteNotify(id) {
+      this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      }).then(() => {
+        deletePersonPostAuthorizationRecord({id: id}).then(res => {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.getTableData()
+        }).catch(e => {
+          this.$message.error('鍒犻櫎澶辫触')
+        })
+      }).catch(() => {})
+    },
+    handleDown(row){
+      exportPersonPostAuthorizationRecord({id:row.id}).then(res => {
+        const blob = new Blob([res],{ type: 'application/octet-stream' });
+        this.$download.saveAs(blob, '浠昏亴鎺堟潈-'+row.certificateNumber+'-'+row.post + '.docx')
+      })
+    }
+  },
+  watch: {
+    departId: {
+      handler(newId, oldId) {
+        if (newId) {
+          this.getTableData();
+        }
+      }
+    }
+  }
 }
 </script>
 <style scoped>
-.flex_column {
-    display: flex;
-    flex-direction: column;
-    justify-content: space-between;
-}
-.w100 {
-    width: 100%;
-}
-.pagination {
-    display: flex;
-    justify-content: space-between
-}
-.items_center {
-    display: flex;
-    align-items: center;
-}
-.justify_between {
-    justify-content: space-between
-}
 </style>

--
Gitblit v1.9.3