Explorar o código

Merge branch 'master' into 'master'

新增技术文档管理

See merge request lighter/vue-intergration-platform!102
huangshuhua hai 1 ano
pai
achega
e54119acec

+ 352 - 0
src/api/technology-archives/technology-archives.js

@@ -0,0 +1,352 @@
+import request from '../../utils/request'
+
+// 查询员工基本信息
+export function selectEmployeeInfo(text) {
+    return request({
+        url: '/technologyArchives/selectEmployeeInfo',
+        method: 'get',
+        params: { text },
+    })
+}
+
+// 查询员工基本信息
+export function selectDictInfo() {
+    return request({
+        url: '/technologyArchives/selectDictInfo',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档基本信息
+export function saveTechnologyArchivesMain(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchivesMain',
+        method: 'post',
+        data,
+    })
+}
+
+// 查询技术文档1
+export function selectTechnologyArchives1() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives1',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档1
+export function saveTechnologyArchives1(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives1',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, getTime删除技术文档1
+export function delTechnologyArchives1ByCode(socialNo, getTime) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives1ByCode',
+        method: 'get',
+        params: { socialNo, getTime },
+    })
+}
+
+// 查询技术文档2
+export function selectTechnologyArchives2() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives2',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档2
+export function saveTechnologyArchives2(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives2',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, no删除技术文档2
+export function delTechnologyArchives2ByCode(socialNo, no) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives2ByCode',
+        method: 'get',
+        params: { socialNo, no },
+    })
+}
+
+// 查询技术文档3
+export function selectTechnologyArchives3() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives3',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档3
+export function saveTechnologyArchives3(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives3',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档3
+export function delTechnologyArchives3ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives3ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}
+
+// 查询技术文档4
+export function selectTechnologyArchives4() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives4',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档4
+export function saveTechnologyArchives4(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives4',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档4
+export function delTechnologyArchives4ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives4ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}
+
+// 查询技术文档5
+export function selectTechnologyArchives5() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives5',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档5
+export function saveTechnologyArchives5(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives5',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, time删除技术文档5
+export function delTechnologyArchives5ByCode(socialNo, time) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives5ByCode',
+        method: 'get',
+        params: { socialNo, time },
+    })
+}
+
+// 查询技术文档6
+export function selectTechnologyArchives6() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives6',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档6
+export function saveTechnologyArchives6(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives6',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档6
+export function delTechnologyArchives6ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives6ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}
+
+// 查询技术文档7
+export function selectTechnologyArchives7() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives7',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档7
+export function saveTechnologyArchives7(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives7',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档7
+export function delTechnologyArchives7ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives7ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}
+
+// 查询技术文档9
+export function selectTechnologyArchives9() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives9',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档9
+export function saveTechnologyArchives9(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives9',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档9
+export function delTechnologyArchives9ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives9ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}
+
+// 查询技术文档10
+export function selectTechnologyArchives10() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives10',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档10
+export function saveTechnologyArchives10(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives10',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档10
+export function delTechnologyArchives10ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives10ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}
+
+// 查询技术文档12
+export function selectTechnologyArchives12() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives12',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档10
+export function saveTechnologyArchives12(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives12',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档7
+export function delTechnologyArchives12ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives12ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}
+
+// 查询技术文档13
+export function selectTechnologyArchives13() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives13',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档13
+export function saveTechnologyArchives13(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives13',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档13
+export function delTechnologyArchives13ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives13ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}
+
+// 查询技术文档14
+export function selectTechnologyArchives14() {
+    return request({
+        url: '/technologyArchives/selectTechnologyArchives14',
+        method: 'get',
+        params: { },
+    })
+}
+
+// 保存技术文档14
+export function saveTechnologyArchives14(data) {
+    return request({
+        url: '/technologyArchives/saveTechnologyArchives14',
+        method: 'post',
+        data,
+    })
+}
+
+// 根据serialNo, id删除技术文档14
+export function delTechnologyArchives14ByCode(socialNo, id) {
+    return request({
+        url: '/technologyArchives/delTechnologyArchives14ByCode',
+        method: 'get',
+        params: { socialNo, id },
+    })
+}

+ 2 - 2
src/api/yp-dict/yp-dict-info.js

@@ -4,11 +4,11 @@ import request from '@/utils/request'
  * 查询药品账页字典--相关
  * @returns 
  */
-export function selectYpDict(text, groupNo) {
+export function selectYpDict(text, groupNo, isSee) {
     return request({
         url: '/ypDict/selectYpDict',
         method: 'get',
-        params: { text, groupNo },
+        params: { text, groupNo, isSee },
     })
 }
 

+ 2781 - 0
src/views/technology-archives/TechnologyArchivesMain.vue

@@ -0,0 +1,2781 @@
+<template>
+  <div class="layout_container">
+    <header>
+      <el-input v-model="text" class="w-50 m-2" style="width: 360px" placeholder="请输入工号/身份证号" clearable>
+        <template #prepend>工号/身份证号 </template>
+      </el-input>
+      <el-button type="primary" icon="Search" @click="queryEmployeeInfo" style="margin-left: 10px">查询</el-button>
+      <el-button type="primary" icon="Check" @click="submitForm(ruleFormRef)" style="margin-left: 10px">保存</el-button>
+      <el-button type="primary" icon="Refresh" @click="resetForm(ruleFormRef)" style="margin-left: 10px">重置</el-button>
+      <el-button type="primary" icon="Plus" @click="onAddItem" style="margin-left: 5px">新增记录</el-button>
+    </header>
+    <div class="layout_main">
+      <el-tabs class="el-tabs__fill" v-model="editableTabsValue" type="border-card" @tab-click="handleClick">
+        <el-tab-pane key="baseInfo" label="基本信息" name="baseInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout_flex_1-y">
+              <el-form ref="ruleFormRef" :rules="rulesInfo" label-width="134px" :model="baseInfoForm" class="demo-ruleForm" size="default">
+                <el-row>
+                  <el-col :span="6">
+                    <el-form-item label="姓名" prop="name">
+                      <el-input v-model="baseInfoForm.name" maxlength="20" show-word-limit placeholder="请填写姓名"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="性别" prop="sex">
+                      <el-select v-model="baseInfoForm.sex" placeholder="请选择性别" filterable clearable style="width: 100%">
+                        <el-option v-for="item in dictData.sex" :key="item.code" :label="item.name" :value="item.code">
+                          <span style="float: left">{{ item.name }}</span>
+                          <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">
+                            {{ item.code }}
+                          </span>
+                        </el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="身份证号" prop="socialNo">
+                      <el-input v-model="baseInfoForm.socialNo" maxlength="20" show-word-limit placeholder="请填写身份证号" @change="birthdayFormat"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="出生年月" prop="birthday">
+                      <el-date-picker v-model="baseInfoForm.birthday" type="month" aria-label="出生年月"
+                        value-format="YYYY-MM" placeholder="请选择出生年月" style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row>
+                  <el-col :span="6">
+                    <el-form-item label="民族" prop="nation">
+                      <el-select v-model="baseInfoForm.nation" placeholder="请选择民族" filterable clearable style="width: 100%">
+                        <el-option v-for="item in dictData.nation" :key="item.code" :label="item.name" :value="item.code">
+                          <span style="float: left">{{ item.name }}</span>
+                          <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">
+                            {{ item.code }}
+                          </span>
+                        </el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="籍贯" prop="nativePlace">
+                      <el-select v-model="baseInfoForm.nativePlace" placeholder="请选择籍贯" filterable clearable style="width: 100%">
+                        <el-option v-for="item in dictData.city" :key="item.code" :label="item.name" :value="item.code">
+                          <span style="float: left">{{ item.name }}</span>
+                          <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">
+                            {{ item.code }}
+                          </span>
+                        </el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="政治面貌" prop="politicCountenance">
+                      <el-select v-model="baseInfoForm.politicCountenance" placeholder="请选择政治面貌" filterable clearable style="width: 100%">
+                        <el-option v-for="item in dictData.political" :key="item.code" :label="item.name" :value="item.code">
+                          <span style="float: left">{{ item.name }}</span>
+                          <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">
+                            {{ item.code }}
+                          </span>
+                        </el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="最高学历" prop="education">
+                      <el-select v-model="baseInfoForm.education" placeholder="请选择最高学历" filterable clearable style="width: 100%">
+                        <el-option v-for="item in dictData.education" :key="item.code" :label="item.name" :value="item.code">
+                          <span style="float: left">{{ item.name }}</span>
+                          <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">
+                            {{ item.code }}
+                          </span>
+                        </el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row>
+                  <el-col :span="6">
+                    <el-form-item label="专业" prop="speciality">
+                      <el-input v-model="baseInfoForm.speciality" maxlength="40" show-word-limit placeholder="请填写专业"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="毕业学校" prop="graduationSchool">
+                      <el-input v-model="baseInfoForm.graduationSchool" maxlength="40" show-word-limit placeholder="请填写毕业学校" />
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="参加工作时间" prop="firstWorktime">
+                      <el-date-picker v-model="baseInfoForm.firstWorktime" type="month" aria-label="参加工作时间"
+                        value-format="YYYY-MM" placeholder="请选择参加工作时间" style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="职务" prop="position">
+                      <el-select v-model="baseInfoForm.position" placeholder="请选择职务" filterable clearable style="width: 100%">
+                        <el-option v-for="item in dictData.title" :key="item.code" :label="item.name" :value="item.code">
+                          <span style="float: left">{{ item.name }}</span>
+                          <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">
+                            {{ item.code }}
+                          </span>
+                        </el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row>
+                  <el-col :span="12">
+                    <el-form-item label="现住地址" prop="address">
+                      <el-input v-model="baseInfoForm.address" maxlength="64" show-word-limit placeholder="请填写现住地址"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="健康状况" prop="healthCondition">
+                      <el-input v-model="baseInfoForm.healthCondition" maxlength="12" show-word-limit placeholder="请填写健康状况" />
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="联系电话" prop="phone">
+                      <el-input v-model="baseInfoForm.phone" maxlength="20" show-word-limit placeholder="请填写联系电话" />
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row>
+                  <el-col :span="6">
+                    <el-form-item label="医师资格证书编码" prop="physicianCertificate">
+                      <el-input v-model="baseInfoForm.physicianCertificate" maxlength="20" show-word-limit placeholder="请填写医师资格证书编码"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="获取时间" prop="physicianCertificateTime">
+                      <el-date-picker v-model="baseInfoForm.physicianCertificateTime" type="date" aria-label="获取时间"
+                        value-format="YYYY-MM-DD" placeholder="请选择获取时间" style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="医师执业证书编码" prop="physicianPracticingCertificate">
+                      <el-input v-model="baseInfoForm.physicianPracticingCertificate" maxlength="20" show-word-limit placeholder="请填写医师执业证书编码"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="6">
+                    <el-form-item label="获取时间" prop="physicianPracticingCertificateTime">
+                      <el-date-picker v-model="baseInfoForm.physicianPracticingCertificateTime" type="date" aria-label="获取时间"
+                        value-format="YYYY-MM-DD" placeholder="请选择获取时间" style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+              </el-form>
+              <el-divider>
+                <el-icon><star-filled /></el-icon><b style="color: #0d84ff">技术档案填写说明</b><el-icon><star-filled /></el-icon>
+              </el-divider>
+              <ol class="numbered-list">
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    本表主要供与本院有正式劳动关系的专业技术人员建立专业技术档案使用;照片贴二寸正面彩色免冠近照。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    填写人员必须实事求是,填写时一律用钢笔或黑色签字笔(可交打印版),字迹要清楚端正。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    建档时间为到本单位工作的时间。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    学历栏一律按最高学历填写(包括自考、成教等形式获得的学历均可)。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    取得医师资格证书和执业证书时间以证书上标注的发证时间为准。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    专业技术职务晋升情况从初级(师/士)开始填写。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    其它资格证书取得情况主要填写与本专业工作相关的证书。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    工作经历指从毕业后参加工作开始计算,包括工作满两个月以上的所有工作单位(转科医师的转科经历也需要填写)。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    个人学习经历从医学相关专业的初始学历开始填写;进修只包括一月以上脱产进修,参加学术会议等不算在此类。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    所有的资格证书、发表的论文、著作等,均需向医务部提交复印件或电子扫描版本存档。
+                  </el-text>
+                </li>
+                <li>
+                  <el-text class="mx-1" type="danger" style="font-size: 1.2em">
+                    表10、14由医务部填写,其他均由建档本人填写完整。
+                  </el-text>
+                </li>
+              </ol>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="firstInfo" label="专业技术职称晋升情况" name="firstInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout_flex_1-y">
+              <el-table :data="firstData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="firstKey">
+                <el-table-column type="index" label="序号" width="100" />
+                <el-table-column prop="socialNo" label="身份证号" width="200">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="getTime" label="批准时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.getTime" type="date" style="width: 100%"
+                      format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.getTime }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="title" label="技术职称" width="280">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.title"></el-input>
+                    <span v-else>{{ scope.row.title }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="issuingAuthority" label="批准机关" width="280">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.issuingAuthority"></el-input>
+                    <span v-else>{{ scope.row.issuingAuthority }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="image" label="图片链接">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.image"></el-input>
+                    <span v-else>{{ scope.row.image }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editFirstInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateFirstInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelFirstInfo(scope.row, scope.$index)">取消
+                    </el-button>
+                    <el-button type="danger" size="small"
+                               @click.prevent="deleteFirstInfo(scope.row)">
+                      删除
+                    </el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="secondInfo" label="其它资格证书取得情况" name="secondInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout_flex_1-y">
+              <el-table :data="secondData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="secondKey">
+                <el-table-column type="index" label="排序" width="80" />
+                <el-table-column prop="no" label="序号" width="80">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.no"></el-input>
+                    <span v-else>{{ scope.row.no }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="name" label="证书名称" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.name"></el-input>
+                    <span v-else>{{ scope.row.name }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="number" label="证书编号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.number"></el-input>
+                    <span v-else>{{ scope.row.number }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="getTime" label="取得时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.getTime" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.getTime }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="comment" label="备注" width="280">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.comment"></el-input>
+                    <span v-else>{{ scope.row.comment }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="image" label="图片链接">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.image"></el-input>
+                    <span v-else>{{ scope.row.image }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editSecondInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateSecondInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelSecondInfo(scope.row, scope.$index)">取消
+                    </el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteSecondInfo(scope.row)">
+                              删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="thirdInfo" label="工作经历" name="thirdInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout_flex_1-y">
+              <el-table :data="thirdData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="thirdKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="beginTime" label="开始时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.beginTime" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.beginTime }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="endTime" label="结束时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.endTime" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.endTime }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="unit" label="单位" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.unit"></el-input>
+                    <span v-else>{{ scope.row.unit }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="title" label="技术职务" width="180">
+                  <template #header>
+                    <span>技术职务</span>
+                    <el-tooltip class="box-item" effect="dark" placement="top">
+                      <template #content>注:<br />技术职务临床医师写见习医师、住院医师、主治医师、副主任医师、主任医师,各医技科室参照写。</template>
+                      <el-icon color="red" size="14"><QuestionFilled /></el-icon>
+                    </el-tooltip>
+                  </template>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.title"></el-input>
+                    <span v-else>{{ scope.row.title }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="workTime" label="受聘时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.workTime" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.workTime }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="speciality" label="专业">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.speciality"></el-input>
+                    <span v-else>{{ scope.row.speciality }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editThirdInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateThirdInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelThirdInfo(scope.row, scope.$index)">取消
+                    </el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteThirdInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="fourthInfo" label="学习培训情况" name="fourthInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout_flex_1-y">
+              <el-table :data="fourthData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="fourthKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="beginTime" label="开始时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.beginTime" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.beginTime }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="endTime" label="结束时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.endTime" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.endTime }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="learningStyle" label="学习方式" width="180">
+                  <template v-slot="scope">
+                    <div v-if="scope.row.isEdit">
+                      <el-select v-model="scope.row.learningStyle" clearable placeholder="请选择学习方式">
+                        <el-option v-for="option in learnOptions" :key="option.code" :label="option.name"
+                                   :value="option.code"></el-option>
+                      </el-select>
+                    </div>
+                    <div v-else>
+                      <el-select v-model="scope.row.learningStyle" disabled placeholder="请选择学习方式">
+                        <el-option v-for="option in learnOptions" :key="option.code" :label="option.name"
+                                   :value="option.code"></el-option>
+                      </el-select>
+                    </div>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="learningContent" label="学习内容" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.learningContent"></el-input>
+                    <span v-else>{{ scope.row.learningContent }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="learningUnit" label="主办(进修)单位" width="200">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.learningUnit"></el-input>
+                    <span v-else>{{ scope.row.learningUnit }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editFourthInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateFourthInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelFourthInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteFourthInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="fifthInfo" label="发表论文专著情况" name="fifthInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout_flex_1-y">
+              <el-table :data="fifthData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="fifthKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="time" label="发表时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.time" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.time }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="topic" label="发表论文或专著题目" width="300" show-overflow-tooltip>
+                  <template #header>
+                    <span>发表论文或专著题目</span>
+                    <el-tooltip class="box-item" effect="dark" placement="top">
+                      <template #content>注:<br />至少是近五年内发表的论文、专著,为第一作者。</template>
+                      <el-icon color="red" size="14"><QuestionFilled /></el-icon>
+                    </el-tooltip>
+                  </template>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.topic"></el-input>
+                    <span v-else>{{ scope.row.topic }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="periodical" label="期刊名称" width="300" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.periodical"></el-input>
+                    <span v-else>{{ scope.row.periodical }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="awards" label="获奖情况" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.awards"></el-input>
+                    <span v-else>{{ scope.row.awards }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editFifthInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateFifthInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelFifthInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteFifthInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="sixthInfo" label="科研情况" name="sixthInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout_flex_1-y">
+              <el-table :data="sixthData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="sixthKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="time" label="立项时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.time" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.time }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="name" label="科研名称" width="300" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.name"></el-input>
+                    <span v-else>{{ scope.row.name }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="forth" label="完成情况" header-align="center">
+                  <el-table-column prop="first" label="第一年" width="160">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.first"></el-input>
+                      <span v-else>{{ scope.row.first }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="second" label="第二年" width="160">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.second"></el-input>
+                      <span v-else>{{ scope.row.second }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="third" label="第三年" width="160">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.third"></el-input>
+                      <span v-else>{{ scope.row.third }}</span>
+                    </template>
+                  </el-table-column>
+                </el-table-column>
+                <el-table-column prop="comment" label="备注" width="300" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.comment"></el-input>
+                    <span v-else>{{ scope.row.comment }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editSixthInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateSixthInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelSixthInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteSixthInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="seventhInfo" label="开展新技术情况" name="seventhInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout_flex_1-y">
+              <el-table :data="seventhData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="seventhKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="time" label="开展时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.time" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.time }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="name" label="新技术名称" width="300" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.name"></el-input>
+                    <span v-else>{{ scope.row.name }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="forth" label="完成情况" header-align="center">
+                  <el-table-column prop="first" label="第一年" width="120">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.first"></el-input>
+                      <span v-else>{{ scope.row.first }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="second" label="第二年" width="120">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.second"></el-input>
+                      <span v-else>{{ scope.row.second }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="third" label="第三年" width="120">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.third"></el-input>
+                      <span v-else>{{ scope.row.third }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="fourth" label="第四年" width="120">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.fourth"></el-input>
+                      <span v-else>{{ scope.row.fourth }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="fifth" label="第五年" width="120">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.fifth"></el-input>
+                      <span v-else>{{ scope.row.fifth }}</span>
+                    </template>
+                  </el-table-column>
+                </el-table-column>
+                <el-table-column prop="comment" label="备注" width="300" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.comment"></el-input>
+                    <span v-else>{{ scope.row.comment }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editSeventhInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateSeventhInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelSeventhInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteSeventhInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="ninthInfo" label="培训考试考核情况" name="ninthInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout">
+              <el-table :data="ninthData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="ninthKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="time" label="时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.time" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.time }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="content" label="培训考试考核内容" width="360" show-overflow-tooltip>
+                  <template #header>
+                    <span>培训考试考核内容</span>
+                    <el-tooltip class="box-item" effect="dark" placement="top">
+                      <template #content>注:<br />指医师定期考核、三基考核、住院医师规范化培训等各项内容。</template>
+                      <el-icon color="red" size="14"><QuestionFilled /></el-icon>
+                    </el-tooltip>
+                  </template>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.content"></el-input>
+                    <span v-else>{{ scope.row.content }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="mode" label="考核方式" width="200" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.mode"></el-input>
+                    <span v-else>{{ scope.row.mode }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="result" label="结果" width="100" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <div v-if="scope.row.isEdit">
+                      <el-select v-model="scope.row.result" clearable placeholder="请选择结果">
+                        <el-option v-for="option in resultOptions" :key="option.code" :label="option.name"
+                                   :value="option.code"></el-option>
+                      </el-select>
+                    </div>
+                    <div v-else>
+                      <el-select v-model="scope.row.result" disabled placeholder="请选择结果">
+                        <el-option v-for="option in resultOptions" :key="option.code" :label="option.name"
+                                   :value="option.code"></el-option>
+                      </el-select>
+                    </div>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="comment" label="备注" width="300" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.comment"></el-input>
+                    <span v-else>{{ scope.row.comment }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editNinthInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateNinthInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelNinthInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteNinthInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="tenthInfo" label="各种医疗活动记录" name="tenthInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout">
+              <el-table :data="tenthData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="tenthKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="time" label="时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.time" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.time }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="record" label="活动记录" width="360" show-overflow-tooltip>
+                  <template #header>
+                    <span>活动记录</span>
+                    <el-tooltip class="box-item" effect="dark" placement="top">
+                      <template #content>注:<br />医疗活动包括外出义诊、救助等政府指令性活动,不含单位自行组织的。</template>
+                      <el-icon color="red" size="14"><QuestionFilled /></el-icon>
+                    </el-tooltip>
+                  </template>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.record"></el-input>
+                    <span v-else>{{ scope.row.record }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="comment" label="备注" width="300" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.comment"></el-input>
+                    <span v-else>{{ scope.row.comment }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editTenthInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateTenthInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelTenthInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteTenthInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="twelfthInfo" label="奖惩情况" name="twelfthInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout">
+              <el-table :data="twelfthData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="twelfthKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="time" label="时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.time" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.time }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="comment" label="受过何种奖励表彰或处罚" width="480" show-overflow-tooltip>
+                  <template #header>
+                    <span>受过何种奖励表彰或处罚</span>
+                    <el-tooltip class="box-item" effect="dark" placement="top">
+                      <template #content>注:<br />指院级以上的奖励、表彰或处罚。</template>
+                      <el-icon color="red" size="14"><QuestionFilled /></el-icon>
+                    </el-tooltip>
+                  </template>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.comment"></el-input>
+                    <span v-else>{{ scope.row.comment }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="unit" label="奖励或处罚单位" width="280" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.unit"></el-input>
+                    <span v-else>{{ scope.row.unit }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editTwelfthInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateTwelfthInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelTwelfthInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteTwelfthInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="thirteenthInfo" label="专业学会任职情况" name="thirteenthInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout">
+              <el-table :data="thirteenthData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="thirteenthKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="time" label="时间" width="200">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.time" type="date" style="width: 100%"
+                                    format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
+                    <span v-else>{{ scope.row.time }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="name" label="学会名称" width="420" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.name"></el-input>
+                    <span v-else>{{ scope.row.name }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="title" label="任职情况" width="240" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.title"></el-input>
+                    <span v-else>{{ scope.row.title }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editThirteenthInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateThirteenthInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelThirteenthInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteThirteenthInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane key="fourteenthInfo" label="继续教育学分获得情况" name="fourteenthInfo">
+          <div class="layout_display_flex_y">
+            <div class="layout">
+              <el-table :data="fourteenthData" border style="width: 100%; height: 100%" stripe highlight-current-row :key="fourteenthKey">
+                <el-table-column type="index" prop="no" label="序号" width="80" />
+                <el-table-column prop="id" label="id号" width="80" v-if="false"/>
+                <el-table-column prop="socialNo" label="身份证号" width="180">
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.socialNo"></el-input>
+                    <span v-else>{{ scope.row.socialNo }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="year" label="年度" width="160">
+                  <template v-slot="scope">
+                    <el-date-picker v-if="scope.row.isEdit" v-model="scope.row.year" type="year" style="width: 100%"
+                                    format="YYYY" value-format="YYYY"/>
+                    <span v-else>{{ scope.row.year }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="finish" label="完成情况" header-align="center">
+                  <el-table-column prop="score1" label="Ⅰ类学分" width="120">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model.trim="scope.row.score1" @change="totalFormat(scope.row)"></el-input>
+                      <span v-else>{{ scope.row.score1 }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="score2" label="Ⅱ类学分" width="120">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model.trim="scope.row.score2" @change="totalFormat(scope.row)"></el-input>
+                      <span v-else>{{ scope.row.score2 }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="other" label="其他" width="120">
+                    <template v-slot="scope">
+                      <el-input v-if="scope.row.isEdit" size="small" v-model.trim="scope.row.other" @change="totalFormat(scope.row)"></el-input>
+                      <span v-else>{{ scope.row.other }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="total" label="合计" width="120"></el-table-column>
+                </el-table-column>
+                <el-table-column prop="result" label="验证结果" width="130" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <div v-if="scope.row.isEdit">
+                      <el-select v-model="scope.row.result" clearable placeholder="请选择结果">
+                        <el-option v-for="option in verifyOptions" :key="option.code" :label="option.name"
+                                   :value="option.code"></el-option>
+                      </el-select>
+                    </div>
+                    <div v-else>
+                      <el-select v-model="scope.row.result" disabled placeholder="请选择结果">
+                        <el-option v-for="option in verifyOptions" :key="option.code" :label="option.name"
+                                   :value="option.code"></el-option>
+                      </el-select>
+                    </div>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="comment" label="备注" width="360" show-overflow-tooltip>
+                  <template v-slot="scope">
+                    <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.comment"></el-input>
+                    <span v-else>{{ scope.row.comment }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                  <template #default="scope">
+                    <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                               @click="editFourteenthInfo(scope.row)">编辑</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="updateFourteenthInfo(scope.row)">保存</el-button>
+                    <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                               @click="cancelFourteenthInfo(scope.row, scope.$index)">取消</el-button>
+                    <el-button type="danger" size="small" @click.prevent="deleteFourteenthInfo(scope.row)">
+                      删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+<script setup name="TechnologyArchivesMain">
+import {nextTick, onMounted, ref} from "vue";
+import {ElMessage, ElMessageBox} from "element-plus";
+import {QuestionFilled, StarFilled} from '@element-plus/icons-vue'
+import {
+  delTechnologyArchives10ByCode,
+  delTechnologyArchives12ByCode,
+  delTechnologyArchives13ByCode,
+  delTechnologyArchives14ByCode,
+  delTechnologyArchives1ByCode,
+  delTechnologyArchives2ByCode,
+  delTechnologyArchives3ByCode,
+  delTechnologyArchives4ByCode,
+  delTechnologyArchives5ByCode,
+  delTechnologyArchives6ByCode,
+  delTechnologyArchives7ByCode,
+  delTechnologyArchives9ByCode,
+  saveTechnologyArchives1,
+  saveTechnologyArchives10,
+  saveTechnologyArchives12,
+  saveTechnologyArchives13,
+  saveTechnologyArchives14,
+  saveTechnologyArchives2,
+  saveTechnologyArchives3,
+  saveTechnologyArchives4,
+  saveTechnologyArchives5,
+  saveTechnologyArchives6,
+  saveTechnologyArchives7,
+  saveTechnologyArchives9,
+  saveTechnologyArchivesMain,
+  selectDictInfo,
+  selectEmployeeInfo,
+  selectTechnologyArchives1,
+  selectTechnologyArchives10,
+  selectTechnologyArchives12,
+  selectTechnologyArchives13,
+  selectTechnologyArchives14,
+  selectTechnologyArchives2,
+  selectTechnologyArchives3,
+  selectTechnologyArchives4,
+  selectTechnologyArchives5,
+  selectTechnologyArchives6,
+  selectTechnologyArchives7,
+  selectTechnologyArchives9
+} from "@/api/technology-archives/technology-archives";
+import {useUserStore} from "@/pinia/user-store";
+
+const editableTabsValue = ref('baseInfo')
+const ruleFormRef = ref()
+const isEdit = ref(false)
+const dictData = ref([])
+const learnOptions = [{ code: '1', name: '讲座' }, { code: '2', name: '学习班' }, { code: '3', name: '培训班' }, { code: '4', name: '外出进修' }]
+const resultOptions = [{ code: '1', name: '通过' }, { code: '2', name: '不通过' }]
+const verifyOptions = [{ code: '1', name: '通过' }, { code: '2', name: '不通过' }, { code: '9', name: '其他' }]
+const userInfo = useUserStore().userInfo
+onMounted(() => {
+  nextTick(() => {
+    queryDictInfo()
+  })
+})
+let baseInfoForm = ref({
+  modeFlag: '', // 模式:edit 编辑; add 新增
+  name: '', // 姓名
+  sex: '', // 性别
+  socialNo: '', // 身份证号码
+  nation: '', // 民族
+  birthday: '', // 出生年月
+  nativePlace: '', // 籍贯
+  politicCountenance: '', // 政治面貌
+  education: '', // 最高学历
+  speciality: '', // 专业
+  graduationSchool: '', // 毕业学校
+  firstWorktime: '', // 参加工作时间
+  position: '', // 职务
+  address: '', // 现住地址
+  healthCondition: '', // 健康状况
+  phone: '', // 联系电话
+  physicianCertificate: '', // 医师资格证
+  physicianCertificateTime: '', // 医师资格证获取时间
+  physicianPracticingCertificate: '', // 医生执业证书
+  physicianPracticingCertificateTime: '', // 医生执业证书获取时间
+})
+const rulesInfo = reactive({
+  name: [
+    { required: true, message: '请填写姓名', trigger: 'blur' },
+  ],
+  sex: [
+    { required: true, message: '请选择性别', trigger: 'change' },
+  ],
+  socialNo: [
+    { required: true, message: '请填写身份证号', trigger: 'blur' },
+  ],
+})
+const text = ref('')
+const queryEmployeeInfo = () => {
+  if(!text.value){
+    ElMessage({
+      type: "warning",
+      message: '查询关键字不能为空!',
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+
+  selectEmployeeInfo(text.value)
+    .then((res) => {
+      if(res){
+        baseInfoForm.value = res
+      }
+    })
+}
+const queryDictInfo = () => {
+  selectDictInfo()
+    .then((res) => {
+      if (res) {
+        dictData.value = res
+      }
+    })
+}
+// 出身年月格式化
+const birthdayFormat = () => {
+  let sfz = baseInfoForm.value.socialNo
+  baseInfoForm.value.birthday = sfz.substring(6, 10) + '-' + sfz.substring(10, 12)
+}
+// 保存基本信息
+const submitForm = async (formEl) => {
+  if(editableTabsValue.value !== 'baseInfo'){
+    ElMessage({
+      type: "info",
+      message: '只能保存基本信息,请知悉!',
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+
+  if (!formEl) return
+
+  await formEl.validate((valid, fields) => {
+    if (valid) {
+      ElMessageBox.confirm('请确认是否保存技术档案基本信息?', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+      }).then(() => {
+        saveTechnologyArchivesMain(baseInfoForm.value).then((res) => {
+          ElMessage({
+            type: "success",
+            message: res.cg,
+            duration: 2500,
+            showClose: true,
+          });
+        })
+      }).catch((action) => {
+
+      })
+    } else {
+      ElMessage({
+        type: "info",
+        message: '保存失败,请确认!',
+        duration: 2500,
+        showClose: true,
+      });
+    }
+  })
+
+}
+// 重置
+const resetForm = (formEl) => {
+  if (!formEl) return
+  formEl.resetFields()
+}
+// 切换tab
+const handleClick = (tab) => {
+  // 查询哪个tab页面
+  editableTabsValue.value = tab.props.name
+  if (editableTabsValue.value === 'baseInfo') {
+    if(!userInfo.socialNo && userInfo.socialNo != null){
+      selectEmployeeInfo(userInfo.socialNo)
+          .then((res) => {
+            if(res){
+              baseInfoForm.value = res
+            }
+          })
+    }
+  } else if(editableTabsValue.value === 'firstInfo'){
+    queryTechnologyArchives1()
+  } else if(editableTabsValue.value === 'secondInfo'){
+    queryTechnologyArchives2()
+  } else if(editableTabsValue.value === 'thirdInfo'){
+    queryTechnologyArchives3()
+  } else if(editableTabsValue.value === 'fourthInfo'){
+    queryTechnologyArchives4()
+  } else if(editableTabsValue.value === 'fifthInfo'){
+    queryTechnologyArchives5()
+  } else if(editableTabsValue.value === 'sixthInfo'){
+    queryTechnologyArchives6()
+  } else if(editableTabsValue.value === 'seventhInfo'){
+    queryTechnologyArchives7()
+  } else if(editableTabsValue.value === 'ninthInfo'){
+    queryTechnologyArchives9()
+  } else if(editableTabsValue.value === 'tenthInfo'){
+    queryTechnologyArchives10()
+  } else if(editableTabsValue.value === 'twelfthInfo'){
+    queryTechnologyArchives12()
+  } else if(editableTabsValue.value === 'thirteenthInfo'){
+    queryTechnologyArchives13()
+  } else if(editableTabsValue.value === 'fourteenthInfo'){
+    queryTechnologyArchives14()
+  }
+}
+const megTip = '核心数据有变更,与原始数据记录存在关联,请谨慎做更改,是否确认!!!'
+let firstKey = ref(1)
+const firstData = ref([])
+let secondKey = ref(1)
+const secondData = ref([])
+let thirdKey = ref(1)
+const thirdData = ref([])
+let fourthKey = ref(1)
+const fourthData = ref([])
+let fifthKey = ref(1)
+const fifthData = ref([])
+let sixthKey = ref(1)
+const sixthData = ref([])
+let seventhKey = ref(1)
+const seventhData = ref([])
+let ninthKey = ref(1)
+const ninthData = ref([])
+let tenthKey = ref(1)
+const tenthData = ref([])
+let twelfthKey = ref(1)
+const twelfthData = ref([])
+let thirteenthKey = ref(1)
+const thirteenthData = ref([])
+let fourteenthKey = ref(1)
+const fourteenthData = ref([])
+const queryTechnologyArchives1 = () => {
+  selectTechnologyArchives1()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      firstData.value = res
+    })
+    .catch(() => {
+      firstData.value = []
+    })
+}
+const queryTechnologyArchives2 = () => {
+  selectTechnologyArchives2()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      secondData.value = res
+    })
+    .catch(() => {
+      secondData.value = []
+    })
+}
+const queryTechnologyArchives3 = () => {
+  selectTechnologyArchives3()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      thirdData.value = res
+    })
+    .catch(() => {
+      thirdData.value = []
+    })
+}
+const queryTechnologyArchives4 = () => {
+  selectTechnologyArchives4()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      fourthData.value = res
+    })
+    .catch(() => {
+      fourthData.value = []
+    })
+}
+const queryTechnologyArchives5 = () => {
+  selectTechnologyArchives5()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      fifthData.value = res
+    })
+    .catch(() => {
+      fifthData.value = []
+    })
+}
+const queryTechnologyArchives6 = () => {
+  selectTechnologyArchives6()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      sixthData.value = res
+    })
+    .catch(() => {
+      sixthData.value = []
+    })
+}
+const queryTechnologyArchives7 = () => {
+  selectTechnologyArchives7()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      seventhData.value = res
+    })
+    .catch(() => {
+      seventhData.value = []
+    })
+}
+const queryTechnologyArchives9 = () => {
+  selectTechnologyArchives9()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      ninthData.value = res
+    })
+    .catch(() => {
+      ninthData.value = []
+    })
+}
+const queryTechnologyArchives10 = () => {
+  selectTechnologyArchives10()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      tenthData.value = res
+    })
+    .catch(() => {
+      tenthData.value = []
+    })
+}
+const queryTechnologyArchives12 = () => {
+  selectTechnologyArchives12()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      twelfthData.value = res
+    })
+    .catch(() => {
+      twelfthData.value = []
+    })
+}
+const queryTechnologyArchives13 = () => {
+  selectTechnologyArchives13()
+    .then((res) => {
+      res.forEach(row => {
+        // 是否标记
+        row['isEdit'] = false
+        // 是否新增
+        row['isAdd'] = false
+      })
+      thirteenthData.value = res
+    })
+    .catch(() => {
+      thirteenthData.value = []
+    })
+}
+const queryTechnologyArchives14 = () => {
+  selectTechnologyArchives14()
+      .then((res) => {
+        res.forEach(row => {
+          // 是否标记
+          row['isEdit'] = false
+          // 是否新增
+          row['isAdd'] = false
+        })
+        fourteenthData.value = res
+      })
+      .catch(() => {
+        fourteenthData.value = []
+      })
+}
+// 新增行
+const onAddItem = () => {
+  if (editableTabsValue.value === 'firstInfo') {
+    firstData.value.push({
+      socialNo: userInfo.socialNo,
+      getTime: '',
+      title: '',
+      issuingAuthority: '',
+      image: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'secondInfo'){
+    secondData.value.push({
+      no: secondData.value.length + 1,
+      socialNo: userInfo.socialNo,
+      name: '',
+      number: '',
+      getTime: '',
+      comment: '',
+      image: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'thirdInfo'){
+    thirdData.value.push({
+      socialNo: userInfo.socialNo,
+      beginTime: '',
+      endTime: '',
+      unit: '',
+      title: '',
+      workTime: '',
+      speciality: '',
+      id: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'fourthInfo'){
+    fourthData.value.push({
+      socialNo: userInfo.socialNo,
+      beginTime: '',
+      endTime: '',
+      learningStyle: '',
+      learningContent: '',
+      learningUnit: '',
+      learningName: '',
+      id: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'fifthInfo'){
+    fifthData.value.push({
+      socialNo: userInfo.socialNo,
+      time: '',
+      topic: '',
+      periodical: '',
+      awards: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'sixthInfo'){
+    sixthData.value.push({
+      socialNo: userInfo.socialNo,
+      time: '',
+      name: '',
+      first: '',
+      second: '',
+      third: '',
+      comment: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'seventhInfo'){
+    seventhData.value.push({
+      socialNo: userInfo.socialNo,
+      time: '',
+      name: '',
+      first: '',
+      second: '',
+      third: '',
+      fourth: '',
+      fifth: '',
+      comment: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'ninthInfo'){
+    ninthData.value.push({
+      socialNo: userInfo.socialNo,
+      time: '',
+      content: '',
+      mode: '',
+      result: '',
+      comment: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'tenthInfo'){
+    tenthData.value.push({
+      socialNo: userInfo.socialNo,
+      time: '',
+      record: '',
+      comment: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'twelfthInfo'){
+    twelfthData.value.push({
+      socialNo: userInfo.socialNo,
+      time: '',
+      record: '',
+      comment: '',
+      unit: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'thirteenthInfo'){
+    thirteenthData.value.push({
+      socialNo: userInfo.socialNo,
+      time: '',
+      name: '',
+      title: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  } else if(editableTabsValue.value === 'fourteenthInfo'){
+    fourteenthData.value.push({
+      socialNo: userInfo.socialNo,
+      year: '',
+      score1: '',
+      score2: '',
+      other: '',
+      total: '',
+      result: '',
+      comment: '',
+      isEdit: true,
+      isAdd: true,
+    })
+  }
+}
+
+// 专业技术职称晋升情况增删改存开始
+// 编辑
+const editFirstInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelFirstInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    firstData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  firstKey.value = Math.random()
+}
+// 保存
+const updateFirstInfo = (row) => {
+  if (!row.socialNo || !row.getTime) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号或批准时间不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+
+  if (row.isAdd) {
+    let fe = 0
+    for (let num in firstData.value) {
+      if (firstData.value[num].getTime === row.getTime) {
+        fe++
+      }
+    }
+    if (fe === 2) {
+      ElMessage({
+        type: "warning",
+        message: "存在重复的技术职称,请核对!",
+        duration: 2500,
+        showClose: true,
+      });
+    } else {
+      callSaveFirstInfo(row, null)
+    }
+
+  } else {
+    let oldGetTime = row.oldRow.getTime
+    if (oldGetTime !== row.getTime) {
+      ElMessageBox.confirm(megTip, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+      }).then(() => {
+        callSaveFirstInfo(row, oldGetTime)
+      }).catch((action) => {
+        if (action === 'cancel') {
+          queryTechnologyArchives1()
+        }
+      })
+    } else {
+      callSaveFirstInfo(row, oldGetTime)
+    }
+  }
+}
+
+const callSaveFirstInfo = (row, oldGetTime) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.title + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives1(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      if (oldGetTime !== null && oldGetTime !== row.getTime) {
+        // 删除原始数据
+        delTechnologyArchives1ByCode(row.socialNo, oldGetTime).then((res) => {
+          queryTechnologyArchives1()
+        })
+      } else {
+        queryTechnologyArchives1()
+      }
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives1()
+    }
+  })
+}
+
+const deleteFirstInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.title + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives1ByCode(row.socialNo, row.getTime).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives1()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives1()
+    }
+  })
+}
+// 专业技术职称晋升情况增删改存结束
+
+// 其它资格证书取得情况增删改存开始
+// 编辑
+const editSecondInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelSecondInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    secondData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  secondKey.value = Math.random()
+}
+// 保存
+const updateSecondInfo = (row) => {
+  if (!row.socialNo || !row.no) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号或序号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+
+  if (!row.no.match(/^[0-9]+$/) || row.no.length > 10000) {
+    ElMessage({
+      type: "warning",
+      message: "序号不是正整数或者超长,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+
+  if (row.isAdd) {
+    let fe = 0
+    for (let num in secondData.value) {
+      if (secondData.value[num].no === row.no) {
+        fe++
+      }
+    }
+    if (fe === 2) {
+      ElMessage({
+        type: "warning",
+        message: "存在重复的技术职称,请核对!",
+        duration: 2500,
+        showClose: true,
+      });
+    } else {
+      callSaveSecondInfo(row, null)
+    }
+
+  } else {
+    let oldNo = row.oldRow.no
+    if (oldNo !== row.no) {
+      ElMessageBox.confirm(megTip, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+      }).then(() => {
+        callSaveSecondInfo(row, oldNo)
+      }).catch((action) => {
+        if (action === 'cancel') {
+          queryTechnologyArchives2()
+        }
+      })
+    } else {
+      callSaveSecondInfo(row, oldNo)
+    }
+  }
+}
+
+const callSaveSecondInfo = (row, oldNo) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.name + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives2(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      if (oldNo !== null && oldNo !== row.no) {
+        // 删除原始数据
+        delTechnologyArchives2ByCode(row.socialNo, row.no).then((res) => {
+          queryTechnologyArchives2()
+        })
+      } else {
+        queryTechnologyArchives2()
+      }
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives2()
+    }
+  })
+}
+
+const deleteSecondInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.name + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives2ByCode(row.socialNo, row.no).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives2()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives2()
+    }
+  })
+}
+// 其它资格证书取得情况增删改存结束
+
+// 工作经历增删改存开始
+// 编辑
+const editThirdInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelThirdInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    thirdData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  thirdKey.value = Math.random()
+}
+// 保存
+const updateThirdInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  callSaveThirdInfo(row)
+}
+
+const callSaveThirdInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.title + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives3(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives3()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives3()
+    }
+  })
+}
+
+const deleteThirdInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.title + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives3ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives3()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives3()
+    }
+  })
+}
+// 工作经历增删改存结束
+
+// (院内、院外)学习培训情况删改存开始
+// 编辑
+const editFourthInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelFourthInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    fourthData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  fourthKey.value = Math.random()
+}
+// 保存
+const updateFourthInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  callSaveFourthInfo(row)
+}
+
+const callSaveFourthInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.learningContent.length > 10 ? row.learningContent.substring(0,10) + '...' : row.learningContent + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    let learnData = learnOptions.filter((item) => {
+      return item.code === row.learningStyle
+    })
+    row.learningName = learnData[0].name
+    saveTechnologyArchives4(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives4()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives4()
+    }
+  })
+}
+
+const deleteFourthInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.learningContent.length > 10 ? row.learningContent.substring(0,10) + '...' : row.learningContent + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives4ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives4()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives4()
+    }
+  })
+}
+// (院内、院外)学习培训情况删改存开始增删改存结束
+
+// 发表论文或专著情况增删改存开始
+// 编辑
+const editFifthInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelFifthInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    fifthData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  fifthKey.value = Math.random()
+}
+// 保存
+const updateFifthInfo = (row) => {
+  if (!row.socialNo || !row.time) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号或发表时间不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+
+  if (row.isAdd) {
+    let fe = 0
+    for (let num in fifthData.value) {
+      if (fifthData.value[num].time === row.time) {
+        fe++
+      }
+    }
+    if (fe === 2) {
+      ElMessage({
+        type: "warning",
+        message: "存在重复的论文或专著题目,请核对!",
+        duration: 2500,
+        showClose: true,
+      });
+    } else {
+      callSaveFifthInfo(row, null)
+    }
+
+  } else {
+    let oldTime = row.oldRow.time
+    if (oldTime !== row.time) {
+      ElMessageBox.confirm(megTip, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+      }).then(() => {
+        callSaveFifthInfo(row, oldTime)
+      }).catch((action) => {
+        if (action === 'cancel') {
+          queryTechnologyArchives5()
+        }
+      })
+    } else {
+      callSaveFifthInfo(row, oldTime)
+    }
+  }
+}
+
+const callSaveFifthInfo = (row, oldTime) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.topic + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives5(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      if (oldTime !== null && oldTime !== row.time) {
+        // 删除原始数据
+        delTechnologyArchives5ByCode(row.socialNo, oldTime).then((res) => {
+          queryTechnologyArchives5()
+        })
+      } else {
+        queryTechnologyArchives5()
+      }
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives5()
+    }
+  })
+}
+
+const deleteFifthInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.topic + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives5ByCode(row.socialNo, row.time).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives5()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives5()
+    }
+  })
+}
+// 发表论文或专著情况增删改存结束
+
+// 科研情况增删改存开始
+// 编辑
+const editSixthInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelSixthInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    sixthData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  sixthKey.value = Math.random()
+}
+// 保存
+const updateSixthInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  callSaveSixthInfo(row)
+}
+
+const callSaveSixthInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.name + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives6(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives6()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives6()
+    }
+  })
+}
+
+// 删除
+const deleteSixthInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.name + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives6ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives6()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives6()
+    }
+  })
+}
+// 科研情况增删改存结束
+
+// 开展新技术情况增删改存开始
+// 编辑
+const editSeventhInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelSeventhInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    seventhData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  seventhKey.value = Math.random()
+}
+// 保存
+const updateSeventhInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  callSaveSeventhInfo(row)
+}
+
+const callSaveSeventhInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.name + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives7(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives7()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives7()
+    }
+  })
+}
+
+// 删除
+const deleteSeventhInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.name + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives7ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives7()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives7()
+    }
+  })
+}
+// 开展新技术情况增删改存结束
+
+// 培训考试考核情况增删改存开始
+// 编辑
+const editNinthInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelNinthInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    ninthData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  ninthKey.value = Math.random()
+}
+// 保存
+const updateNinthInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  callSaveNinthInfo(row)
+}
+
+const callSaveNinthInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.content.length > 10 ? row.content.substring(0,10) + '...' : row.content + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives9(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives9()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives9()
+    }
+  })
+}
+
+// 删除
+const deleteNinthInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.content.length > 10 ? row.content.substring(0,10) + '...' : row.content + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives9ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives9()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives9()
+    }
+  })
+}
+// 培训考试考核情况增删改存结束
+
+// 各种医疗活动记录增删改存开始
+// 编辑
+const editTenthInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelTenthInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    tenthData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  tenthKey.value = Math.random()
+}
+// 保存
+const updateTenthInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  callSaveTenthInfo(row)
+}
+
+const callSaveTenthInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.record.length > 10 ? row.record.substring(0,10) + '...' : row.record + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives10(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives10()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives10()
+    }
+  })
+}
+
+// 删除
+const deleteTenthInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.record.length > 10 ? row.record.substring(0,10) + '...' : row.record + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives10ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives10()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives10()
+    }
+  })
+}
+// 各种医疗活动记录增删改存结束
+
+// 奖惩情况增删改存开始
+// 编辑
+const editTwelfthInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelTwelfthInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    twelfthData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  twelfthKey.value = Math.random()
+}
+// 保存
+const updateTwelfthInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  callSaveTwelfthInfo(row)
+}
+
+const callSaveTwelfthInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.comment.length > 10 ? row.comment.substring(0,10) + '...' : row.comment + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives12(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives12()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives12()
+    }
+  })
+}
+
+// 删除
+const deleteTwelfthInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.comment.length > 10 ? row.comment.substring(0,10) + '...' : row.comment + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives12ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives12()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives12()
+    }
+  })
+}
+// 奖惩情况增删改存结束
+
+// 专业学会任职情况增删改存开始
+// 编辑
+const editThirteenthInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelThirteenthInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    thirteenthData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  thirteenthKey.value = Math.random()
+}
+// 保存
+const updateThirteenthInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  callSaveThirteenthInfo(row)
+}
+
+const callSaveThirteenthInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.name.length > 10 ? row.name.substring(0,10) + '...' : row.name + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives13(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives13()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives13()
+    }
+  })
+}
+
+// 删除
+const deleteThirteenthInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.name.length > 10 ? row.name.substring(0,10) + '...' : row.name + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives13ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives13()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives13()
+    }
+  })
+}
+// 专业学会任职情况增删改存结束
+
+// 继续教育学分获得情况增删改存开始
+// 编辑
+const editFourteenthInfo = (row) => {
+  // 备份原始数据
+  row['oldRow'] = JSON.parse(JSON.stringify(row))
+  row.isEdit = true
+}
+// 取消
+const cancelFourteenthInfo = (row, index) => {
+  // 如果是新增的数据
+  if (row.isAdd) {
+    fourteenthData.value.splice(index, 1)
+  } else {
+    // 不是新增的数据  还原数据
+    for (const i in row.oldRow) {
+      row[i] = row.oldRow[i]
+    }
+  }
+  fourteenthKey.value = Math.random()
+}
+// 保存
+const updateFourteenthInfo = (row) => {
+  if (!row.socialNo) {
+    ElMessage({
+      type: "warning",
+      message: "身份证号不存在,请检查!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+  let reg = /^[0-9]+([.][0-9]+)?$/
+  if (!reg.test(row.score1 === '' ? '0' : row.score1)
+      || !reg.test(row.score2 === '' ? '0' : row.score2)
+      || !reg.test(row.other === '' ? '0' : row.other)) {
+    ElMessage({
+      type: "warning",
+      message: "各个学分存在不是数字,请检查各个学分填写是否合理!",
+      duration: 2500,
+      showClose: true,
+    });
+    return
+  }
+
+  callSaveFourteenthInfo(row)
+}
+
+const callSaveFourteenthInfo = (row) => {
+  let title = '请确认是否保存<span style="color:#d12020;">' + row.year + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    saveTechnologyArchives14(row).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives14()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives14()
+    }
+  })
+}
+
+// 删除
+const deleteFourteenthInfo = (row) => {
+  let title = '请确认是否删除<span style="color:#d12020;">' + row.year + '</span>?'
+  ElMessageBox.confirm(title, {
+    cancelButtonText: '取消',
+    confirmButtonText: '确定',
+    type: 'warning',
+    distinguishCancelAndClose: true,
+    dangerouslyUseHTMLString: true
+  }).then(() => {
+    delTechnologyArchives14ByCode(row.socialNo, row.id).then((res) => {
+      ElMessage({
+        type: "success",
+        message: res.cg,
+        duration: 2500,
+        showClose: true,
+      });
+      queryTechnologyArchives14()
+    })
+  }).catch((action) => {
+    if (action === 'cancel') {
+      queryTechnologyArchives14()
+    }
+  })
+}
+// 继续教育学分获得情况增删改存结束
+
+// 继续教育学分获得情况合计格式化
+const totalFormat = (data) => {
+  data.total = Number.parseFloat(data.score1 === '' ? '0' : data.score1)
+      + Number.parseFloat(data.score2 === '' ? '0' : data.score2)
+      + Number.parseFloat(data.other === '' ? '0' : data.other)
+}
+
+</script>
+<style scoped>
+.numbered-list {
+  counter-reset: section; /* 创建一个名为section的计数器 */
+}
+
+.numbered-list li::before {
+  counter-increment: section; /* 每个li元素增加计数器的值 */
+  content: counters(section, ".") " "; /* 在li元素前添加计数器的当前值 */
+}
+</style>

+ 4 - 1
src/views/yp-dict/YpDictInfo.vue

@@ -12,6 +12,8 @@
                     </span>
         </el-option>
       </el-select>
+      <el-switch v-model="isSee" inline-prompt active-text="停用可见" inactive-text="停用不可见" active-value="0" inactive-value="1"
+                 style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949; margin-left: 5px"/>
       <el-button type="primary" icon="Search" @click="queryYpDict" style="margin-left: 5px">查询</el-button>
       <el-button type="primary" icon="Plus" @click="addYpDict" style="margin-left: 5px">新增</el-button>
       <el-button type="primary" icon="Download" @click="exportData" style="margin-left: 5px">导出</el-button>
@@ -101,6 +103,7 @@ import YpZdDict from '@/views/yp-dict/YpZdDict.vue'
 import YpPrintName from '@/views/yp-dict/YpPrintName.vue'
 
 const text = ref('')
+const isSee = ref('1')
 const drugDictData = ref([])
 const ypTitle = ref('')
 const showYpEdit = ref(false)
@@ -145,7 +148,7 @@ const queryYpDict = () => {
     if(groupNo.value === undefined){
       groupNo.value = ''
     }
-    selectYpDict(text.value, groupNo.value)
+    selectYpDict(text.value, groupNo.value, isSee.value)
         .then((res) => {
           drugDictData.value = res
         })