From 952a20f1c005d80e9bf881287c40e6f4e4266a0b Mon Sep 17 00:00:00 2001
From: lxp <1928192722@qq.com>
Date: 星期三, 12 三月 2025 15:34:52 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/center-lims-before-ruoyi into dev

---
 src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelInformation/index.vue |  948 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 948 insertions(+), 0 deletions(-)

diff --git a/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelInformation/index.vue b/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelInformation/index.vue
new file mode 100644
index 0000000..a6cd688
--- /dev/null
+++ b/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelInformation/index.vue
@@ -0,0 +1,948 @@
+<template>
+  <div>
+    <div style="text-align: right;margin-bottom: 10px">
+      <!--       <el-button size="small" @click="$emit('goBackList')">杩斿洖</el-button>-->
+      <el-button size="small" type="primary" @click="synchronous" :loading="synchronousLoading">鍚屾绗笁鏂逛俊鎭�</el-button>
+      <el-button size="small" type="primary" @click="dialogVisible = true">浜哄憳鍒嗙被</el-button>
+      <el-button :loading="saveLoading" size="small" type="primary" @click="save">淇濆瓨</el-button>
+    </div>
+    <div>
+      <div style="display: flex;flex-direction: row;">
+        <div style="width: 12em">
+          <el-image :src="javaApi + '/img/' + form.pictureUrl" fit="fill"
+            style="width: 180px;height: 300px;border: 1px solid #000;border-radius: 10px;margin-left: 6px;margin-top: 10px;">
+            <div slot="error" class="image-slot">
+              <i class="el-icon-picture-outline" style="font-size: 40px;"></i>
+            </div>
+          </el-image>
+          <el-image :src="javaApi + '/img/' + form.signatureUrl" fit="fill"
+            style="width:80%;height: 50px;border: 1px solid #000;border-radius: 10px;margin-left: 22px;margin-top: 20px;">
+            <div slot="error" class="image-slot">
+              <i class="el-icon-picture-outline" style="font-size: 40px;"></i>
+            </div>
+          </el-image>
+        </div>
+        <div style="height: calc(100vh - 14em);overflow-y: auto">
+          <el-form ref="form" :model="form" label-width="110px">
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="濮撳悕">
+                  <el-input v-model="form.name" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鐧诲綍璐﹀彿">
+                  <el-input v-model="form.account" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="褰撳墠鐘舵��">
+                  <el-radio-group v-model="form.currentState">
+                    <el-radio label="1formal" size="mini">姝e紡</el-radio>
+                    <el-radio label="2intern" size="mini">瀹炰範</el-radio>
+                    <el-radio label="3leaveOffice" size="mini">绂昏亴</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="宸ュ彿">
+                  <el-input v-model="form.jobNumber" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鍛樺伐瀛愮紪鍙�">
+                  <el-input v-model="form.subordinateNumber" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鎬у埆">
+                  <el-radio-group v-model="form.sex">
+                    <el-radio label="1" size="mini">鐢�</el-radio>
+                    <el-radio label="0" size="mini">濂�</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :span="8">
+                              <el-form-item label="鍏ヨ亴鏃堕棿">
+                                  <el-date-picker v-model="form.entryTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small"
+                                      style="width: 99%;" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss">
+                                  </el-date-picker>
+                              </el-form-item>
+                          </el-col> -->
+              <!-- <el-col :span="8">
+                              <el-form-item label="褰撳墠鑱屽姟">
+                                  <el-input v-model="form.currentPosition" size="small" clearable></el-input>
+                              </el-form-item>
+                          </el-col> -->
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="鍏徃鍚嶇О">
+                  <el-input v-model="form.corporateName" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="閮ㄩ棬缂栧彿">
+                  <el-input v-model="form.departmentCode" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鎵�灞為儴闂�">
+                  <el-cascader v-model="form.departLimsId" :options="department"
+                    :props="{ label: 'name', value: 'id', checkStrictly: true }" filterable
+                    style="width: 100%;"></el-cascader>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="宀椾綅绫诲埆">
+                  <el-input v-model="form.postType" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="宀椾綅缂栧彿">
+                  <el-input v-model="form.postCode" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="宀椾綅鍚嶇О">
+                  <el-input v-model="form.postName" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="鍏ラ泦鍥㈡椂闂�">
+                  <el-date-picker v-model="form.groupTime" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鍏ュ崟浣嶆椂闂�">
+                  <el-date-picker v-model="form.unitTime" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鐩存帴涓婄骇">
+                  <el-input v-model="form.reportingTo" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="鍔冲姩鍏崇郴">
+                  <el-radio-group v-model="form.laborRelations">
+                    <el-radio label="鍚堝悓宸�" size="mini">鍚堝悓宸�</el-radio>
+                    <el-radio label="姝e紡宸�" size="mini">姝e紡宸�</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="璇曠敤寮�濮嬫椂闂�">
+                  <el-date-picker v-model="form.trialStartTime" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="璇曠敤缁撴潫鏃堕棿">
+                  <el-date-picker v-model="form.trialEndTime" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="24" style="text-align: left;">
+                <el-form-item label="浜哄憳鍒嗙被">
+                  <span style="color: #000;">{{ form.personnelClassification }}</span>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="鍑虹敓鏃ユ湡">
+                  <el-date-picker v-model="form.dateBirth" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="绫嶈疮">
+                  <el-input v-model="form.nativePlace" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="姘戞棌">
+                  <el-input v-model="form.nation" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="璇佷欢绫诲瀷">
+                  <el-input v-model="form.idType" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="韬唤璇佸彿">
+                  <el-input v-model="form.identityCard" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="骞撮緞">
+                  <el-input-number v-model="form.personBasicInfoAge" :max="130" :min="1" controls-position="right"
+                    size="small" style="width: 99%;"></el-input-number>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="璇佷欢鏈夋晥鏈�">
+                  <el-date-picker v-model="form.validityPeriod" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="濠氬Щ鐘跺喌">
+                  <el-radio-group v-model="form.maritalStatus">
+                    <el-radio label='宸插' size="mini">宸插</el-radio>
+                    <el-radio label='鏈' size="mini">鏈</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="璇佷欢鍦板潃">
+                  <el-input v-model="form.idAddress" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="璇佷欢璇︾粏鍦板潃">
+                  <el-input v-model="form.idDetailAddress" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鐜板眳鍦板潃">
+                  <el-input v-model="form.currentAddress" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鐜板眳璇︾粏鍦板潃">
+                  <el-input v-model="form.currentDetailAddress" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="閫佽揪鍦板潃">
+                  <el-input v-model="form.serviceAddress" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="閫佽揪璇︾粏鍦板潃">
+                  <el-input v-model="form.serviceDetailAddress" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鏄惁閫�浼嶅啗浜�">
+                  <el-radio-group v-model="form.retiredSoldiers">
+                    <el-radio label='鏄�' size="mini">鏄�</el-radio>
+                    <el-radio label='鍚�' size="mini">鍚�</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="鏀挎不闈㈣矊">
+                  <el-input v-model="form.politicalStatus" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鍏ュ厷/鍥㈡椂闂�">
+                  <el-date-picker v-model="form.dumplingTime" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鎵嬫満鍙�">
+                  <el-input v-model="form.telephone" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="鐭彿">
+                  <el-input v-model="form.cornet" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鍔炲叕鐢佃瘽">
+                  <el-input v-model="form.officePhone" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鍏徃閭">
+                  <el-input v-model="form.companyEmail" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="璁$畻鏈虹瓑绾�">
+                  <el-input v-model="form.ncre" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鏈�楂樺鍘�">
+                  <el-input v-model="form.officialAcademicRedentials" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鏈�楂樺浣�">
+                  <el-input v-model="form.highestDegree" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="姣曚笟闄㈡牎1">
+                  <el-input v-model="form.graduatedInstitutions1" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="涓撲笟1">
+                  <el-input v-model="form.major1" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="姣曚笟鏃堕棿1">
+                  <el-date-picker v-model="form.graduationTime1" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="姣曚笟闄㈡牎2">
+                  <el-input v-model="form.graduatedInstitutions2" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="涓撲笟2">
+                  <el-input v-model="form.major2" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="姣曚笟鏃堕棿2">
+                  <el-date-picker v-model="form.graduationTime2" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="鏄惁鍏ㄦ棩鍒�">
+                  <el-radio-group v-model="form.fullTime">
+                    <el-radio :label="1" size="mini">鏄�</el-radio>
+                    <el-radio :label="0" size="mini">鍚�</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鏄惁灞炰簬涓ぉ">
+                  <el-radio-group v-model="form.enroll">
+                    <el-radio :label=1 size="mini">鏄�</el-radio>
+                    <el-radio :label=0 size="mini">鍚�</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="XX灞婂ぇ瀛︾敓">
+                  <el-input v-model="form.collegeStudents" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="绱ф�ヨ仈绯讳汉">
+                  <el-input v-model="form.emergencyContact" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="绱ф�ヨ仈绯荤數璇�">
+                  <el-input v-model="form.emergencyContactPhone" clearable size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鏈�鍚庢洿鏂版椂闂�">
+                  <el-date-picker v-model="form.lastUpdateTime" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                    style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="18">
+                <el-form-item label="涓汉鐓х墖">
+                  <el-input v-model="form.pictureUrl" disabled size="small">
+                    <el-button v-if="form.pictureUrl" slot="append" icon="el-icon-delete-solid"
+                      @click="deleteFile(form.pictureUrl, 'pictureUrl')"></el-button>
+                  </el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-upload ref="upload" :action="action" :headers="uploadHeader"
+                  :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'pictureUrl')"
+                  :show-file-list="false" style="float: left; margin: 0 10px 0 10px;">
+                  <el-button slot="trigger" class="uploadFile" size="mini" type="primary">涓婁紶</el-button>
+                </el-upload>
+                <el-button v-if="form.pictureUrl" class="uploadFile" size="mini" type="primary"
+                  @click="downloadFile(form.pictureUrl)">涓嬭浇</el-button>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="18">
+                <el-form-item label="鐢靛瓙绛惧悕">
+                  <el-input v-model="form.signatureUrl" disabled size="small">
+                    <el-button v-if="form.signatureUrl" slot="append" icon="el-icon-delete-solid"
+                      @click="deleteFile(form.signatureUrl, 'signatureUrl')"></el-button>
+                  </el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-upload ref="upload" :action="action" :headers="uploadHeader"
+                  :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'signatureUrl')"
+                  :show-file-list="false" style="float: left; margin: 0 10px 0 10px;">
+                  <el-button slot="trigger" class="uploadFile" size="small" type="primary">涓婁紶</el-button>
+                </el-upload>
+                <el-button v-if="form.signatureUrl" class="uploadFile" size="small" type="primary"
+                  @click="downloadFile(form.signatureUrl)">涓嬭浇</el-button>
+              </el-col>
+            </el-row>
+            <!-- <el-row>
+                          <el-col :span="20">
+                              <el-form-item label="闄勪欢璧勬枡">
+                                  <el-input v-model="form.attachmentInformation" size="small" disabled>
+                                      <el-button v-if="form.attachmentInformation" slot="append"
+                                          icon="el-icon-delete-solid"
+                                          @click="deleteFile(form.attachmentInformation, 'attachmentInformation')"></el-button>
+                                  </el-input>
+                              </el-form-item>
+                          </el-col>
+                          <el-col :span="4">
+                              <el-upload ref="upload" style="float: left; margin: 0 20px;" :action="action"
+                                  :show-file-list="false"
+                                  :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'attachmentInformation')">
+                                  <el-button class="uploadFile" slot="trigger" size="mini" type="primary">娴忚</el-button>
+                              </el-upload>
+                              <el-button class="uploadFile" size="mini" type="primary" @click="downloadFile(form.attachmentInformation)">涓嬭浇</el-button>
+                          </el-col>
+                      </el-row> -->
+
+            <el-row>
+              <el-col :span="20">
+                <el-form-item label="闄勪欢璧勬枡">
+                </el-form-item>
+              </el-col>
+              <el-col :span="4">
+                <el-button size="mini" style="float: right;margin-right: 25px" type="primary"
+                  @click="annexAdd(0)">鏂板</el-button>
+              </el-col>
+            </el-row>
+            <el-table :data="annexList" border height="200" style="width: 96%;">
+              <el-table-column label="搴忓彿" type="index" width="80px">
+              </el-table-column>
+              <el-table-column label="璇佷欢鍙�" prop="idNumber" width="150px">
+              </el-table-column>
+              <el-table-column label="鍙戣瘉鍗曚綅" prop="issueUnit" width="150px">
+              </el-table-column>
+              <el-table-column label="鏂囦欢鍚嶇О" prop="fileName" show-overflow-tooltip width="200px">
+              </el-table-column>
+              <el-table-column label="绾у埆" prop="level" width="150px">
+              </el-table-column>
+              <el-table-column label="鏈夋晥鏈�" prop="periodValidity" width="150px">
+              </el-table-column>
+              <el-table-column label="娣诲姞鏃堕棿" prop="createTime" width="150px">
+              </el-table-column>
+              <el-table-column fixed="right" label="鎿嶄綔" width="150px">
+                <template slot-scope="scope">
+                  <el-button size="mini" type="text" @click="downloadFile(scope.row.fileName)">涓嬭浇</el-button>
+                  <el-button size="mini" type="text" @click="annexAdd(1, scope.row)">缂栬緫</el-button>
+                  <el-button size="mini" type="text" @click="deleteAnnex(scope.row)">鍒犻櫎</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-form>
+          <el-row>
+          </el-row>
+        </div>
+      </div>
+    </div>
+    <!-- 浜哄憳鍒嗙被寮规 -->
+    <el-dialog :visible.sync="dialogVisible" title="鎻愮ず" width="40%" @open="getComparisonList">
+      <div style="height: 30vh;">
+        <el-row>
+          <el-col :span="4">
+            浜哄憳鍒嗙被锛�
+          </el-col>
+          <el-col :span="20" style="text-align: left;">
+            <el-checkbox-group v-model="checkList">
+              <el-checkbox v-for="v in personnelClassification" :key="v.value" :label="v.value"></el-checkbox>
+            </el-checkbox-group>
+          </el-col>
+        </el-row>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="clickPersonnelClassificationSure">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+
+    <!-- 鏂板闄勪欢璧勬枡 -->
+    <el-dialog :before-close="handleClose" :title="title" :visible.sync="dialogVisible1" width="40%"
+      @open="getComparisonList">
+      <el-form ref="annex" :model="annex" :rules="rules" label-width="100px">
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="璇佷欢鍙�" prop="idNumber">
+              <el-input v-model="annex.idNumber" clearable size="small" style="width: 100%;"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 15px">
+          <el-col :span="16">
+            <el-form-item label="鍙戣瘉鍗曚綅" prop="issueUnit">
+              <el-input v-model="annex.issueUnit" clearable size="small"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 15px">
+          <el-col :span="16">
+            <el-form-item label="绾у埆" prop="level">
+              <el-input v-model="annex.level" clearable size="small"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 15px">
+          <el-col :span="16">
+            <el-form-item label="鏈夋晥鏈�" prop="periodValidity">
+              <el-date-picker v-model="annex.periodValidity" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+                style="width: 99%;" type="date" value-format="yyyy-MM-dd">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 15px">
+          <el-col :span="16">
+            <el-form-item label="澶嶅嵃浠�" prop="copy">
+              <el-input v-model="annex.copy" clearable size="small"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row style="margin-top: 15px">
+          <el-col :span="16">
+            <el-form-item label="鍘熶欢" prop="original">
+              <el-input v-model="annex.original" clearable size="small"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 15px">
+          <el-col :span="16">
+            <el-form-item label="鏂囦欢">
+              <el-upload :action="action" :headers="uploadHeader" :before-upload="beforeAvatarUpload"
+                :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'fileName')"
+                :show-file-list="false">
+                <img v-if="imageUrl" :src="imageUrl" class="avatar">
+                <i v-else class="el-icon-upload avatar-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="cancellation">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitForm('annex')">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getEmployees,
+  getAnnex,
+  updateAnnex,
+  getAnnexByUserId,
+  addAnnex,
+  deleteAnnex,
+  getCNASPersonnelInfo,
+  saveCNASPersonnelInfo,
+  deleteCNASFile
+} from '@/api/cnas/personnel/personnelInfo.js'
+export default {
+  dicts: ['personnl_type'],
+  props: {
+    clickNodeVal: {
+      type: Object,
+      default: () => { return {} }
+    },
+  },
+  data() {
+    return {
+      synchronousLoading: false,
+      addOrupdate: null,
+      title: '',
+      annexList: [],
+      imageUrl: '',
+      annex: {
+        userId: '',
+        idNumber: '',
+        issueUnit: '',
+        level: '',
+        periodValidity: '',
+        copy: '',
+        original: '',
+        fileName: ''
+      },
+      rules: {
+        idNumber: [
+          { required: true, message: '璇疯緭鍏ヨ瘉浠跺彿', trigger: 'blur' }
+        ],
+        issueUnit: [
+          { required: true, message: '璇疯緭鍏ュ彂璇佸崟浣�', trigger: 'blur' }
+        ],
+        periodValidity: [
+          { required: true, message: '璇烽�夋嫨鏈夋晥鏈�', trigger: 'blur' }
+        ]
+      },
+      dialogVisible1: false,
+      form: {
+        userId: '',
+        name: '',
+        account: '',
+        currentState: '',
+        jobNumber: '',
+        subordinateNumber: '',
+        sex: '',
+        corporateName: '',
+        department: '',
+        departLimsId: [],
+        postType: '',
+        postCode: '',
+        postName: '',
+        groupTime: '',
+        unitTime: '',
+        reportingTo: '',
+        laborRelations: '',
+        trialStartTime: '',
+        trialEndTime: '',
+        personnelClassification: '',
+        dateBirth: '',
+        nativePlace: '',
+        nation: '',
+        idType: '',
+        identityCard: '',
+        age: '',
+        validityPeriod: '',
+        maritalStatus: '',
+        idAddress: '',
+        idDetailAddress: '',
+        currentAddress: '',
+        currentDetailAddress: '',
+        serviceAddress: '',
+        serviceDetailAddress: '',
+        retiredSoldiers: '',
+        politicalStatus: '',
+        dumplingTime: '',
+        telephone: '',
+        cornet: '',
+        officePhone: '',
+        email: '',
+        ncre: '',
+        officialAcademicRedentials: '',
+        highestDegree: '',
+        graduatedInstitutions1: '',
+        major1: '',
+        graduationTime1: '',
+        graduatedInstitutions2: '',
+        major2: '',
+        graduationTime2: '',
+        fullTime: '',
+        enroll: '',
+        collegeStudents: '',
+        emergencyContact: '',
+        emergencyContactPhone: '',
+        lastUpdateTime: '',
+        pictureUrl: '',
+        signatureUrl: '',
+      },
+      department: [],
+      saveLoading: false,
+      dialogVisible: false,
+      personnelClassification: [],
+      checkList: [],
+      successFileList: [], // 闃叉鍚庣鍑虹幇鑴忔暟鎹�
+      isSave: false,
+    }
+  },
+  created() {
+    this.init()
+  },
+  computed: {
+    action() {
+      return this.javaApi + '/personBasicInfo/saveCNASFile'
+    }
+  },
+  methods: {
+    synchronous() {
+      console.log('鍩烘湰淇℃伅', this.clickNodeVal);
+      this.synchronousLoading = true
+      getEmployees({ userId: this.clickNodeVal.userId }).then(res => {
+        this.synchronousLoading = false
+        this.getUserBasisInfo(this.clickNodeVal.userId)
+        this.$message.success("鍚屾鎴愬姛")
+
+      })
+    },
+    annexAdd(type, row) {
+      if (type === 1) {
+        this.title = '缂栬緫闄勪欢璧勬枡'
+        this.addOrupdate = 1
+        getAnnex({ id: row.id }).then(res => {
+          this.annex = res.data
+          this.imageUrl = this.javaApi + '/img/' + res.data.fileName
+        })
+      } else {
+        this.title = '鏂板闄勪欢璧勬枡'
+        this.addOrupdate = 2
+      }
+      this.dialogVisible1 = true
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          this.addAnnex()
+        } else {
+          return false
+        }
+      })
+    },
+    addAnnex() {
+      if (this.annex.fileName == "" || this.annex.fileName == null || this.annex.fileName == undefined) {
+        this.$message.error("璇蜂笂浼犳枃浠�")
+        return
+      }
+      this.annex.userId = this.clickNodeVal.userId
+      if (this.addOrupdate === 1) {
+        updateAnnex(this.annex).then(res => {
+          if (res.code == 200) {
+            getAnnexByUserId({ userId: this.clickNodeVal.userId }).then(res => {
+              this.dialogVisible1 = false
+              this.imageUrl = ''
+              this.resetForm('annex')
+              this.annexList = res.data
+              this.$message.success('鏇存柊鎴愬姛锛�')
+            })
+          }
+        })
+      } else {
+        this.annex.id = null
+        addAnnex(this.annex).then(res => {
+          if (res.code == 200) {
+            getAnnexByUserId({ userId: this.clickNodeVal.userId }).then(res => {
+              this.dialogVisible1 = false
+              this.imageUrl = ''
+              this.resetForm('annex')
+              this.annexList = res.data
+              this.$message.success('淇濆瓨鎴愬姛')
+            })
+          }
+        })
+      }
+    },
+    deleteAnnex(row) {
+      this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteAnnex(row.id).then(res => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�')
+          this.annexList = this.annexList.filter(item => item.id != row.id)
+        })
+      })
+    },
+    beforeAvatarUpload(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‘鐨勭粓姝�
+      }
+    },
+    downloadFile(fileName) {
+      this.$download.saveAs(fileName, fileName)
+    },
+    async onSuccess(response, file, fileList, entityVal) {
+      if (entityVal == 'fileName') {
+        this.annex.fileName = response.data
+        this.imageUrl = this.javaApi + '/img/' + response.data
+      }
+      // 鍦ㄤ繚瀛樿祴鍊兼柊鏂囦欢
+      this.successFileList.push(response.data)
+      this.$set(this.form, entityVal, response.data)
+    },
+    // 鍒濆鍖栬皟鐢�
+    init() {
+      if (!this.clickNodeVal.userId) {
+        let user = JSON.parse(localStorage.getItem('user'))
+        this.getUserBasisInfo(user.userId)
+        this.clickNodeVal.userId = user.userId
+      } else {
+        this.getUserBasisInfo(this.clickNodeVal.userId)
+      }
+    },
+    getUserBasisInfo(userId) {
+      getCNASPersonnelInfo({ userId }).then(res => {
+        this.form = res.data.PersonBasicInfoDto
+        this.department = res.data.department
+        this.annexList = res.data.annexList
+        this.form.departLimsId = res.data.PersonBasicInfoDto.departLimsId.split(',').filter(a => a != "").map(Number)
+        console.log('res.data', res);
+      })
+    },
+    async save() {
+      this.saveLoading = true
+      this.form.userId = this.clickNodeVal.userId
+      if (Array.isArray(this.form.departLimsId)) {
+        if (this.form.departLimsId.length > 0) {
+          this.form.departLimsId = this.form.departLimsId.join(',').trim() + ','
+        } else {
+          this.form.departLimsId = ''
+        }
+      }
+      saveCNASPersonnelInfo(this.form).then(res => {
+        this.saveLoading = false
+        this.isSave = true
+        this.getUserBasisInfo(this.clickNodeVal.userId)
+        this.$message.success('淇濆瓨鎴愬姛锛�')
+      })
+    },
+    // 鍙栦汉鍛樺垎绫荤殑瀛楀吀
+    getComparisonList() {
+      // 鏂囦欢鐘舵��
+      this.getDicts("personnl_type").then((response) => {
+        this.personnelClassification = this.dictToValue(response.data);
+        this.checkList = this.form.personnelClassification ? this.form.personnelClassification.split('锛�') : []
+      });
+    },
+    clickPersonnelClassificationSure() {
+      this.dialogVisible = false
+      this.form.personnelClassification = this.checkList.filter(m => m).join('锛�')
+    },
+    async deleteFile(fileName, entityVal) {
+      await deleteCNASFile({ fileName }).then(res => {
+        this.$message.success('鍒犻櫎鎴愬姛锛�')
+        this.$set(this.form, entityVal, null)
+        let index = this.successFileList.indexOf(fileName)
+        if (index != -1) {
+          this.successFileList.splice(index, 1)
+        }
+      })
+    },
+    validateFileSize(rule, value, callback) {
+      if (!value) {
+        return callback(new Error('璇蜂笂浼犳枃浠�'));
+      } else {
+        callback();
+      }
+    },
+    cancellation() {
+      this.dialogVisible1 = false
+      this.imageUrl = ''
+      this.resetForm('annex')
+    },
+    handleClose(done) {
+      this.imageUrl = ''
+      this.annex = {
+        userId: '',
+        idNumber: '',
+        issueUnit: '',
+        level: '',
+        periodValidity: '',
+        copy: '',
+        original: '',
+        fileName: ''
+      }
+      done();
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+    }
+  },
+  watch: {
+    // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
+    clickNodeVal: {
+      handler(newVal, oldVal) {
+        if (newVal.userId) {
+          this.getUserBasisInfo(newVal.userId)
+        }
+      },
+    }
+  }
+}
+</script>
+
+<style scoped>
+>>>.el-form-item {
+  margin-bottom: 3px;
+}
+
+.el-input {
+  border-radius: 15px;
+}
+
+.el-icon-picture-outline {
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%, -50%);
+}
+
+.uploadFile {
+  margin-top: 2px;
+  float: left;
+}
+
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #0f8bf1;
+  width: 178px;
+  height: 50px;
+  text-align: center;
+  border: 1px solid #d9d9d9;
+}
+
+.avatar {
+  width: 178px;
+  height: 178px;
+  display: block;
+}
+</style>

--
Gitblit v1.9.3