From 76302992e7bcb60682ee6d3ae9de6619b477b968 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 09 六月 2026 10:26:48 +0800
Subject: [PATCH] feat:联系人管理,基本信息修改

---
 src/views/CNAS/personnel/personnelInfo/index.vue               |  286 ----------------------------
 src/api/cnas/personal/personalList.js                          |   24 ++
 src/views/CNAS/personnel/personnelInfo/tabs/personnel-list.vue |  284 ++++++++-------------------
 3 files changed, 114 insertions(+), 480 deletions(-)

diff --git a/src/api/cnas/personal/personalList.js b/src/api/cnas/personal/personalList.js
index 16bdee1..0218a76 100644
--- a/src/api/cnas/personal/personalList.js
+++ b/src/api/cnas/personal/personalList.js
@@ -1,5 +1,29 @@
 import request from "@/utils/request";
 
+// 鏂板鑱旂郴浜�
+export function addContactPerson(query) {
+  return request({
+    url: "/personBasicInfo/addContactPerson",
+    method: "post",
+    data: query,
+  });
+}
+// 鏇存柊鑱旂郴浜�
+export function updateContactPerson(query) {
+  return request({
+    url: "/personBasicInfo/updateContactPerson",
+    method: "post",
+    data: query,
+  });
+}
+// 鍒犻櫎鑱旂郴浜�
+export function deleteContactPerson(query) {
+  return request({
+    url: "/personBasicInfo/deleteContactPerson",
+    method: "delete",
+    params: query,
+  });
+}
 // 鍒犻櫎浜哄憳鏄庣粏鎵�鍦ㄧ粍缁囨灦鏋�
 export function delUserDepardLimsId(query) {
   return request({
diff --git a/src/views/CNAS/personnel/personnelInfo/index.vue b/src/views/CNAS/personnel/personnelInfo/index.vue
index 5793240..b2c039c 100644
--- a/src/views/CNAS/personnel/personnelInfo/index.vue
+++ b/src/views/CNAS/personnel/personnelInfo/index.vue
@@ -1,326 +1,46 @@
 <template>
   <div class="main">
-    <div class="main_left">
-      <el-row>
-        <el-col :span="20">
-          <el-input
-            v-model="search"
-            class="div_left_input"
-            clearable
-            placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�"
-            size="small"
-            suffix-icon="el-icon-search"
-            @blur="searchFilter"
-            @clear="searchFilter"
-            @keyup.enter.native="searchFilter"
-          ></el-input>
-        </el-col>
-        <el-col :span="4" style="text-align: center;line-height: 30px; margin-top: 14px">
-          <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="handleAdd"></el-button>
-        </el-col>
-      </el-row>
-      <el-tree
-        ref="tree"
-        :data="list"
-        :default-expanded-keys="[22]"
-        :expand-on-click-node="false"
-        :filter-node-method="filterNode"
-        :props="{ children: 'children', label: 'name' }"
-        highlight-current
-        node-key="id"
-        style="height:calc(100% - 70px);overflow-y: scroll;scrollbar-width: none;"
-        @node-click="handleNodeClick"
-        @node-expand="nodeOpen"
-        @node-collapse="nodeClose"
-      >
-        <div slot-scope="{ node, data }" class="custom-tree-node">
-          <el-row style="width: 100%;">
-            <el-col :span="22" style="text-align: left;">
-              <span><i
-                :class="`node_i ${data.children != undefined&&data.children.length>0 ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
-                {{ data.name }}</span>
-            </el-col>
-            <el-col v-if="node.level>1 && data.id !== null" :span="2" style="text-align: right;">
-              <el-button size="mini" type="text" @click.stop="remove(node, data)">
-                <i class="el-icon-delete"></i>
-              </el-button>
-            </el-col>
-          </el-row>
-        </div>
-      </el-tree>
-    </div>
-    <div class="main_right">
+    <div class="main_right" style="width: 100%;">
       <el-tabs v-model="activeName" :lazy="true" type="border-card">
         <el-tab-pane label="鍩烘湰淇℃伅" name="鍩烘湰淇℃伅">
-          <PersonnelList v-if="activeName === '鍩烘湰淇℃伅' && isShowAll" ref="personnelList" :currentCompaniesList="currentCompaniesList"
-                         :departId="departId" @refreshTree="refreshTree"
-                         @updatePerson="updatePerson"></PersonnelList>
-          <personnelInformation v-if="activeName === '鍩烘湰淇℃伅' && !isShowAll" :clickNodeVal="clickNodeVal"></personnelInformation>
+          <PersonnelList v-if="activeName === '鍩烘湰淇℃伅'" ref="personnelList"></PersonnelList>
         </el-tab-pane>
-<!--        <el-tab-pane label="鍩硅璁″垝" name="鍩硅璁″垝">-->
-<!--          <PersonnelTraining v-if="activeName === '鍩硅璁″垝'" ref="personnelTraining"-->
-<!--                             :departId="departId" :isDepartment="isDepartment"></PersonnelTraining>-->
-<!--        </el-tab-pane>-->
-<!--        <el-tab-pane label="宀椾綅鑱岃矗" name="宀椾綅鑱岃矗">-->
-<!--          <job-responsibilities v-if="activeName === '宀椾綅鑱岃矗'" ref="jobResponsibilities"-->
-<!--                                :departId="departId"-->
-<!--                                :isDepartment="isDepartment"></job-responsibilities>-->
-<!--        </el-tab-pane>-->
-<!--        <el-tab-pane label="濂栨儵璁板綍" name="濂栨儵璁板綍">-->
-<!--          <rewardPunishmentRecord v-if="activeName === '濂栨儵璁板綍'"-->
-<!--                                  :departId="departId" :isDepartment="isDepartment"></rewardPunishmentRecord>-->
-<!--        </el-tab-pane>-->
-<!--        <el-tab-pane label="鍩硅璁板綍" name="鍩硅璁板綍">-->
-<!--          <training-record v-if="activeName === '鍩硅璁板綍'" ref="trainingRecord"-->
-<!--                           :departId="departId"-->
-<!--                           :isDepartment="isDepartment"></training-record>-->
-<!--        </el-tab-pane>-->
-<!--        <el-tab-pane label="浠昏亴鎺堟潈璁板綍" name="浠昏亴鎺堟潈璁板綍">-->
-<!--          <Mandate v-if="activeName === '浠昏亴鎺堟潈璁板綍'" ref="manDateRef" :departId="departId" :isDepartment="isDepartment"></Mandate>-->
-<!--        </el-tab-pane>-->
-<!--        <el-tab-pane label="浜哄憳鑳藉姏" name="浜哄憳鑳藉姏">-->
-<!--          <personnel-capacity v-if="activeName === '浜哄憳鑳藉姏'" ref="personnelCapacity"-->
-<!--                              :departId="departId"-->
-<!--                              :isDepartment="isDepartment"></personnel-capacity>-->
-<!--        </el-tab-pane>-->
-<!--        <el-tab-pane label="娌熼�氳褰�" name="娌熼�氳褰�">-->
-<!--          <Communicate v-if="activeName === '娌熼�氳褰�'" ref="communicateRef" :departId="departId" :isDepartment="isDepartment"></Communicate>-->
-<!--        </el-tab-pane>-->
       </el-tabs>
     </div>
-    <el-dialog :visible.sync="addDia" title="鏋舵瀯鏂板" width="400px">
-      <div class="body">
-        <el-row style="line-height: 50px;">
-          <el-col :span="6" style="text-align: right;">
-            <span class="required-span">* </span>鏋舵瀯鍚嶇О锛�
-          </el-col>
-          <el-col :offset="1" :span="16">
-            <el-input v-model="addOb.name" clearable placeholder="璇疯緭鍏ユ灦鏋勫悕绉�" size="small" @keyup.enter.native="addStandardTree"></el-input>
-          </el-col>
-        </el-row>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="addDia = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="addStandardTree">纭� 瀹�</el-button>
-      </span>
-    </el-dialog>
   </div>
 </template>
 
 <script>
 import PersonnelList from './tabs/personnel-list.vue'
-import personnelInformation from './tabs/personnel-information.vue'
-import PersonnelTraining from './tabs/personnelTraining';
-import JobResponsibilities from './tabs/job-responsibilities.vue';
-import rewardPunishmentRecord from "./tabs/reward-punishment-record.vue";
-import TrainingRecord from './tabs/training-record.vue';
-import Mandate from './tabs/mandate.vue';
-import PersonnelCapacity from './tabs/personnel-capacity.vue';
-import Communicate from './tabs/communicate.vue'
-import {addDepartmentLims, delDepartmentLims, selectCNSAPersonTree} from "@/api/cnas/personal/personalList";
 export default {
   name: 'PersonnelInfo',
   components: {
-    PersonnelList, personnelInformation, PersonnelTraining, JobResponsibilities, rewardPunishmentRecord, TrainingRecord, Mandate, PersonnelCapacity, Communicate
+    PersonnelList,
   },
   data() {
     return {
-      isShowAll: true, //  鏄惁灞曠ず鏍囩鏍�
       activeName: '鍩烘湰淇℃伅',
-      departId: 1,
-      list: [],
-      addDia: false,
-      addOb: {
-        name: '',
-        fatherId: ''
-      },
-      search: '',
-      clickNodeVal: {},
-      addUserForm: {
-        name: ''
-      },
-      currentCompaniesList: [],
-      entity: {
-        name: '',
-        departLimsId: '',
-        orderBy: {
-          field: 'id',
-          order: 'asc'
-        }
-      },
-      overallRecord: '浜哄憳鍒楄〃',
-      isDepartment: false,
     };
   },
   mounted() {
     this.activeName = this.$route.query.activeName || '鍩烘湰淇℃伅'
-    this.geList();
   },
-  methods: {
-    remove(node, data) {
-      this.$confirm("鏄惁鍒犻櫎璇ュ眰绾�", "鎻愮ず", {
-        type: "error"
-      }).then(() => {
-        delDepartmentLims({
-          id: data.id
-        }).then(res => {
-          this.$message.success('宸插垹闄�')
-          this.geList();
-        })
-      }).catch(e => {})
-    },
-    addStandardTree() {
-      if (this.addOb.name == null || this.addOb.factory == '') {
-        this.$message.error('鏋勬灦鍚嶇О鏄繀濉」')
-        return
-      }
-      addDepartmentLims(this.addOb).then(res => {
-        this.$message.success('娣诲姞鎴愬姛')
-        this.addDia = false
-        this.geList();
-        this.addOb.name = ''
-        this.addOb.fatherId = ''
-      })
-    },
-    handleAdd() {
-      if (this.addOb.fatherId) {
-        this.addDia = true;
-      } else {
-        this.$message.error('璇烽�夋嫨涓�涓灦鏋勫眰绾�')
-      }
-    },
-    // 浜哄憳鍒楄〃缂栬緫
-    updatePerson(row) {
-      const node = this.findNodeById(this.list, row.name);
-      if (node) {
-        this.handleNodeClick(node);
-      } else {
-        this.$message.warning('鏈壘鍒拌浜哄憳');
-      }
-    },
-    // 鏂板缓浜哄憳鍚庡埛鏂版爲
-    refreshTree () {
-      this.geList()
-    },
-    findNodeById(treeData, name) {
-      for (let i = 0; i < treeData.length; i++) {
-        if (treeData[i].name === name) {
-          return treeData[i]; // 鎵惧埌鑺傜偣锛岃繑鍥炶鑺傜偣
-        }
-        if (treeData[i].children && treeData[i].children.length > 0) {
-          const foundNode = this.findNodeById(treeData[i].children, name);
-          if (foundNode) {
-            return foundNode; // 鍦ㄥ瓙鑺傜偣涓壘鍒帮紝杩斿洖璇ヨ妭鐐�
-          }
-        }
-      }
-      return null; // 娌℃湁鎵惧埌鑺傜偣锛岃繑鍥瀗ull
-    },
-    searchFilter() {
-      this.$refs.tree.filter(this.search);
-    },
-    // 鑾峰彇鏍�
-    geList() {
-      selectCNSAPersonTree().then(res => {
-        this.list = res.data;
-        if(this.list.length > 0) {
-          this.isDepartment = true;
-        }
-      });
-    },
-    filterNode(value, data) {
-      if (!value) return true;
-      return data.name.indexOf(value) !== -1;
-    },
-    nodeClose(data, node, el) {
-      $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder');
-    },
-    nodeOpen(data, node, el) {
-      $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened');
-    },
-    handleNodeClick(val, node, el) {
-      //鏍戠殑鍊�
-      this.clickNodeVal = val;
-      // 瀛樺偍鐖剁骇鑺傜偣绾ф暟
-      if (node) {
-        this.getNodeParent(node);
-        this.clickNodeVal.level = node.level;
-        this.clickNodeVal.parent = node.parent.data;
-      }
-      this.entity.departLimsId = val.id;
-      this.addOb.fatherId = val.id;
-      // 鏄惁鏄剧ず璁惧璇︽儏
-      this.isShowAll = val.id !== null;
-      if (val.id) {	// 濡傛灉鏄疄楠屽
-        this.departId = val.id;
-        this.isDepartment = true;
-      }
-      if (val.userId) { // 鏄汉鍛�
-        this.departId = val.userId;
-        this.isDepartment = false
-      }
-    },
-    getNodeParent(val) {
-      if (val.parent != null) {
-        this.currentCompaniesList[val.level - 1] = val.data.id;
-        this.selectTree += ' - ' + val.label;
-        this.getNodeParent(val.parent);
-      }
-    }
-  }
 };
 </script>
 
 <style scoped>
-.node_i {
-  color: orange;
-  font-size: 18px;
-}
-.custom-tree-node {
-  width: 80%;
-  line-height: 32px;
-}
-.custom-tree-node .el-icon-delete {
-  color: #3A7BFA;
-  opacity: 0;
-  font-size: 15px;
-}
-
-.custom-tree-node:hover .el-icon-delete {
-  opacity: 1;
-}
-
 .main {
-  display: flex;
   padding: 15px 0;
 }
-
-.main_left {
-  background: #ffffff;
-  text-align: center;
-  height: calc(100vh - 8em);
-  width: 270px;
-  border-radius: 15px;
-}
-
 .main_right {
-  width: calc(100% - 288px);
   border-radius: 15px;
 }
-
-.div_left_input {
-  margin: 15px 0;
-  width: 90%;
-}
-
 >>> .el-tabs--border-card > .el-tabs__header .el-tabs__item {
   border: 0 none;
 }
-
 >>> .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
   color: black;
 }
-
 >>> .el-tabs--border-card > .el-tabs__header {
   border-bottom: none;
 }
diff --git a/src/views/CNAS/personnel/personnelInfo/tabs/personnel-list.vue b/src/views/CNAS/personnel/personnelInfo/tabs/personnel-list.vue
index 282a903..9a52f6f 100644
--- a/src/views/CNAS/personnel/personnelInfo/tabs/personnel-list.vue
+++ b/src/views/CNAS/personnel/personnelInfo/tabs/personnel-list.vue
@@ -3,7 +3,7 @@
     <div style="display: flex;justify-content: space-between">
       <div style="display: flex;">
         <div style="margin-bottom: 18px;margin-right: 10px;display: flex;align-items: center;line-height: 32px;">
-          <span style="width: 88px;font-size: 14px;font-weight: 700;color: #606266;">浜哄憳鍚嶇О</span>
+          <span style="width: 88px;font-size: 14px;font-weight: 700;color: #606266;">濮撳悕</span>
           <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="entity.name"
                     @keyup.enter.native="refreshTable"></el-input>
         </div>
@@ -13,8 +13,7 @@
         </div>
       </div>
       <div style="line-height: 30px;">
-        <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">瀵煎嚭</el-button>
-        <el-button size="small" type="primary" @click="openSelectUserDia">鏂板缓</el-button>
+        <el-button size="small" type="primary" @click="openAddDia">鏂板缓</el-button>
       </div>
     </div>
     <div class="search-table">
@@ -22,20 +21,13 @@
                 :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
                 height="calc(100vh - 21em)" style="width: 100%;">
         <el-table-column align="center" label="搴忓彿" type="index" width="60"></el-table-column>
-<!--        <el-table-column label="鍛樺伐缂栧彿" prop="account" width="150"></el-table-column>-->
-        <el-table-column label="濮撳悕" prop="name" width="120"></el-table-column>
-        <el-table-column label="绫嶈疮" prop="nativePlace" width="120"></el-table-column>
-        <el-table-column label="璇佷欢鍦板潃" prop="idAddress" show-overflow-tooltip width="100"></el-table-column>
-        <el-table-column label="鎵嬫満鍙�" prop="telephone" show-overflow-tooltip width="100"></el-table-column>
-        <el-table-column label="姣曚笟闄㈡牎" prop="graduatedInstitutions1" width="100"></el-table-column>
-        <el-table-column label="鎵�瀛︿笓涓�" prop="major1" width="100"></el-table-column>
-        <el-table-column label="姣曚笟鏃堕棿" prop="graduationTime1" width="100"></el-table-column>
-        <el-table-column label="鏈�楂樺鍘�" prop="officialAcademicRedentials" width="100"></el-table-column>
-        <el-table-column label="鏈�楂樺浣�" prop="highestDegree" width="100"></el-table-column>
-        <el-table-column label="鑱岀О" prop="professionalTitle" width="100"></el-table-column>
-        <el-table-column fixed="right" label="鎿嶄綔" width="120" align="center">
+        <el-table-column label="濮撳悕" prop="name" min-width="120"></el-table-column>
+        <el-table-column label="绫嶈疮" prop="nativePlace" min-width="120"></el-table-column>
+        <el-table-column label="璇佷欢鍦板潃" prop="idAddress" show-overflow-tooltip min-width="150"></el-table-column>
+        <el-table-column label="鎵嬫満鍙�" prop="telephone" show-overflow-tooltip min-width="120"></el-table-column>
+        <el-table-column fixed="right" label="鎿嶄綔" width="150" align="center">
           <template slot-scope="scope">
-            <el-button size="small" type="text" @click="$emit('updatePerson', scope.row)">缂栬緫</el-button>
+            <el-button size="small" type="text" @click="openEditDia(scope.row)">缂栬緫</el-button>
             <el-button size="small" type="text" @click="deletePerson(scope.row)" style="color: #f56c6c">鍒犻櫎</el-button>
           </template>
         </el-table-column>
@@ -46,169 +38,142 @@
         @current-change="handleCurrentChange">
       </el-pagination>
     </div>
-    <el-dialog :visible.sync="selectUserDia" title="閫夋嫨鐢ㄦ埛" width="70%">
-      <div class="search" style="margin-bottom: 9px;">
-        <div class="search_thing">
-          <div class="search_label">鐢ㄦ埛鍚嶏細</div>
-          <div class="search_input">
-            <el-input v-model="addUserTableInfo.name" clearable placeholder="璇疯緭鍏�" size="small"
-              @change="selectUserList"></el-input>
-          </div>
-          <el-button size="small" style="margin-left: 10px" type="primary" @click="selectUserList">鏌ヨ</el-button>
-        </div>
-      </div>
-      <div v-if="selectUserDia" class="body" style="height: 60vh;">
-        <lims-table :tableData="tableData1" :column="column1" :isSelection="true" :handleSelectionChange="selectMethod"
-          height="520" :tableLoading="tableLoading1"></lims-table>
-      </div>
+    <el-dialog :title="diaTitle" :visible.sync="addDia" width="450px" @close="resetForm">
+      <el-form ref="addForm" :model="form" :rules="formRules" label-width="100px">
+        <el-form-item label="濮撳悕" prop="name">
+          <el-input v-model="form.name" placeholder="璇疯緭鍏�" size="small" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="绫嶈疮" prop="nativePlace">
+          <el-input v-model="form.nativePlace" placeholder="璇疯緭鍏�" size="small" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="璇佷欢鍦板潃" prop="idAddress">
+          <el-input v-model="form.idAddress" placeholder="璇疯緭鍏�" size="small" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="鎵嬫満鍙�" prop="telephone">
+          <el-input v-model="form.telephone" placeholder="璇疯緭鍏�" size="small" clearable></el-input>
+        </el-form-item>
+      </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="selectUserDia = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="selectUser">纭� 瀹�</el-button>
+        <el-button @click="addDia = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitForm" :loading="submitLoading">纭� 瀹�</el-button>
       </span>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import { selectUserCondition } from "@/api/business/inspectionTask";
-import limsTable from "@/components/Table/lims-table.vue";
 import {
   basicInformationOfPersonnelSelectPage,
-  delUserDepardLimsId,
-  exportPersonBasicInfo,
-  upUserDepardLimsId
+  addContactPerson,
+  updateContactPerson,
+  deleteContactPerson
 } from "@/api/cnas/personal/personalList";
-import store from "@/store";
-import { Message } from "element-ui";
 
 export default {
   name: 'PersonnelList',
-  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
-  components: { limsTable },
-  props: {
-    departId: {
-      type: Number,
-      default: () => {
-        return null;
-      }
-    },
-    isDepartment: {
-      type: Boolean,
-      default: false
-    },
-    currentCompaniesList: {
-      type: Array,
-      default: []
-    }
-  },
   data() {
-    // 杩欓噷瀛樻斁鏁版嵁
     return {
       page: {
         size: 20,
         current: 1,
       },
-      outLoading: false,
       tableLoading: false,
-      tableData: [], // 浜哄憳鎬诲垪琛ㄦ暟鎹�
-      tableData1: [],
-      tableLoading1: false,
-      column1: [
-        { label: '濮撳悕', prop: 'name' },
-        { label: '璐﹀彿', prop: 'account' },
-        { label: '瑙掕壊', prop: 'roleName' },
-        {
-          dataType: 'tag',
-          label: '鐘舵��',
-          prop: 'status',
-          formatData: (params) => {
-            if (params == 0) {
-              return '鍚敤'
-            } else {
-              return ''
-            }
-          },
-          formatType: (params) => {
-            if (params == 0) {
-              return 'success'
-            } else {
-              return 'danger'
-            }
-          }
-        },
-        { label: '鐢佃瘽鍙风爜', prop: 'phone' },
-      ],
-      page1: {
-        total: 0,
-        size: 10,
-        current: 1
-      },
-      selectUserDia: false, // 娣诲姞浜哄憳寮规
+      tableData: [],
       entity: {
         name: '',
-        orderBy: {
-          field: 'id',
-          order: 'asc'
-        }
       },
-      addUserTableInfo: {
-        name: null,
-        isCustom: 0,
+      addDia: false,
+      diaTitle: '',
+      operationType: '',
+      submitLoading: false,
+      form: {
+        id: null,
+        name: '',
+        nativePlace: '',
+        idAddress: '',
+        telephone: '',
       },
-      multipleSelection: []
+      formRules: {
+        name: [{ required: true, message: '璇疯緭鍏ュ鍚�', trigger: 'blur' }],
+      },
     };
   },
   mounted() {
     this.refreshTable();
   },
-  // 鏂规硶闆嗗悎
   methods: {
-    /**
-     * @desc 鑾峰彇璁惧id
-     */
-    // 閲嶇疆
     refresh() {
-      this.page = {
-        size: 20,
-        current: 1,
-      };
-      this.entity.name = ''
+      this.page = { size: 20, current: 1 };
+      this.entity.name = '';
       this.refreshTable();
     },
-    // 鏌ヨ浜哄憳鍒楄〃鏁版嵁
     refreshTable() {
       this.tableLoading = true;
-      this.entity.departLimsId = this.departId;
       const params = {
         size: this.page.size,
         current: this.page.current,
-        departmentId: this.entity.departLimsId,
         name: this.entity.name,
-      }
+      };
       basicInformationOfPersonnelSelectPage(params).then(res => {
         this.tableLoading = false;
         this.page.total = res.data.total;
         this.tableData = res.data.records;
       }).catch(err => {
         this.tableLoading = false;
-      })
+      });
     },
-    // 鍒犻櫎浜哄憳
+    openAddDia() {
+      this.operationType = 'add';
+      this.diaTitle = '鏂板缓鑱旂郴浜�';
+      this.form = { id: null, name: '', nativePlace: '', idAddress: '', telephone: '' };
+      this.addDia = true;
+    },
+    openEditDia(row) {
+      this.operationType = 'edit';
+      this.diaTitle = '缂栬緫鑱旂郴浜�';
+      this.form = {
+        id: row.id,
+        name: row.name,
+        nativePlace: row.nativePlace,
+        idAddress: row.idAddress,
+        telephone: row.telephone,
+      };
+      this.addDia = true;
+    },
+    submitForm() {
+      this.$refs.addForm.validate((valid) => {
+        if (valid) {
+          this.submitLoading = true;
+          const api = this.operationType === 'add' ? addContactPerson : updateContactPerson;
+          api(this.form).then(res => {
+            this.submitLoading = false;
+            if (res.code === 200) {
+              this.$message.success(this.operationType === 'add' ? '鏂板鎴愬姛' : '淇敼鎴愬姛');
+              this.addDia = false;
+              this.refreshTable();
+            }
+          }).catch(err => {
+            this.submitLoading = false;
+          });
+        }
+      });
+    },
+    resetForm() {
+      this.$refs.addForm && this.$refs.addForm.resetFields();
+    },
     deletePerson(row) {
       this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', '璀﹀憡', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
         type: 'warning'
       }).then(() => {
-        delUserDepardLimsId({ id: row.userId }).then(res => {
+        deleteContactPerson({ id: row.id }).then(res => {
           this.$message.success('鍒犻櫎鎴愬姛');
           this.refreshTable();
-          this.$emit('refreshTree')
         }).catch(e => {
           this.$message.error('鍒犻櫎澶辫触');
         });
-      }).catch(() => {
-      });
+      }).catch(() => {});
     },
     handleSizeChange(val) {
       this.page.size = val;
@@ -218,84 +183,9 @@
       this.page.current = val;
       this.refreshTable();
     },
-    // 鎵撳紑鏂板浜哄憳寮规
-    openSelectUserDia() {
-      this.selectUserDia = true;
-      this.selectUserList()
-    },
-    // 鏌ヨ鏂板寮规鐨勪汉鍛樺垪琛�
-    selectUserList() {
-      this.tableLoading1 = true
-      selectUserCondition().then(res => {
-        this.tableLoading1 = false
-        this.tableData1 = res.data
-      }).catch(err => {
-        this.tableLoading1 = false
-      })
-    },
-    // 琛ㄦ牸閫夋嫨鏂规硶
-    selectMethod(val) {
-      this.multipleSelection = val
-    },
-    // 鎻愪氦闇�瑕佹坊鍔犵殑浜哄憳
-    selectUser() {
-      if (!this.currentCompaniesList.length > 0) {
-        this.$message.warning("璇烽�夋嫨閮ㄩ棬锛�")
-        return;
-      }
-      let selects = this.HaveJson(this.multipleSelection)
-      if (selects.length === 0) {
-        this.$message.error('鏈�夋嫨鏁版嵁');
-        return;
-      }
-      let ids = [];
-      selects.forEach(a => {
-        ids.push(a.id);
-      });
-      let str = '';
-      this.currentCompaniesList.forEach(a => {
-        if (a) {
-          str += a + ',';
-        }
-      });
-      upUserDepardLimsId({
-        ids: JSON.stringify(ids),
-        id: str
-      }).then(res => {
-        this.selectUserDia = false;
-        this.$message.success('娣诲姞鎴愬姛');
-        this.refreshTable();
-        this.$emit('refreshTree')
-      });
-    },
-    // 瀵煎嚭浜哄憳淇℃伅
-    handleDown() {
-      this.outLoading = true;
-      let entity = this.HaveJson(this.entity)
-      delete entity.orderBy;
-      exportPersonBasicInfo({ ...entity }).then(res => {
-        this.outLoading = false;
-        const blob = new Blob([res], { type: 'application/octet-stream' });
-        this.$download.saveAs(blob, '浜哄憳淇℃伅.xlsx')
-      })
-    },
   },
-  watch: {
-    departId: {
-      handler(newId, oldId) {
-        if (newId) {
-          this.page.current = 1
-          this.refreshTable();
-        }
-      }
-    }
-  }
 };
 </script>
 
 <style scoped>
-.search_thing {
-  display: flex;
-  align-items: center;
-}
 </style>

--
Gitblit v1.9.3