Hwf 1 week ago
parent
commit
b9019f63a2

+ 35 - 0
src/api/expert/index.ts

@@ -0,0 +1,35 @@
+import request from '@/utils/request';
+
+// 获取专家列表
+export function getExpertList(params) {
+  return request({
+    url: '/api/expert/list',
+    method: 'get',
+    params: params
+  });
+}
+
+// 获取专家详情
+export function getExpertInfo(id) {
+  return request({
+    url: '/api/expert/info/' + id,
+    method: 'get'
+  });
+}
+
+// 更新专家详情
+export function updateExpertInfo(id, data) {
+  return request({
+    url: '/api/expert/update/' + id,
+    method: 'put',
+    data: data
+  });
+}
+
+// 获取专家分组统计
+export function getExpertProfessionalGroupCount() {
+  return request({
+    url: '/api/gateway/v1/get_emergency_expert_professional_group_count',
+    method: 'get'
+  });
+}

+ 6 - 1
src/types/components.d.ts

@@ -27,12 +27,14 @@ declare module 'vue' {
     ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
     ElBadge: typeof import('element-plus/es')['ElBadge']
     ElButton: typeof import('element-plus/es')['ElButton']
+    ElCard: typeof import('element-plus/es')['ElCard']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
-    ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
     ElCol: typeof import('element-plus/es')['ElCol']
     ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
+    ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
+    ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
     ElDialog: typeof import('element-plus/es')['ElDialog']
     ElDivider: typeof import('element-plus/es')['ElDivider']
     ElDrawer: typeof import('element-plus/es')['ElDrawer']
@@ -56,6 +58,8 @@ declare module 'vue' {
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSelect: typeof import('element-plus/es')['ElSelect']
+    ElStep: typeof import('element-plus/es')['ElStep']
+    ElSteps: typeof import('element-plus/es')['ElSteps']
     ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
@@ -64,6 +68,7 @@ declare module 'vue' {
     ElText: typeof import('element-plus/es')['ElText']
     ElTimeline: typeof import('element-plus/es')['ElTimeline']
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
+    ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTree: typeof import('element-plus/es')['ElTree']
     ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']

+ 76 - 36
src/views/comprehensiveGuarantee/emergencySpecialistManagement/edit.vue

@@ -5,42 +5,63 @@
         <h3 class="common-dialog-title">查看详情</h3>
       </div>
       <div class="common-dialog-box">
-        <el-form ref="form" :model="formData" :rules="rules" label-width="120px">
+        <el-form ref="form" :model="formData" label-width="120px">
           <el-form-item label="姓名:" prop="name">
             <el-input v-model="formData.name" style="width: 468px !important" />
           </el-form-item>
           <el-form-item label="所属区县:" prop="county">
             <el-input v-model="formData.county" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="专家类型:" prop="expert_type">
-            <el-input v-model="formData.expert_type" style="width: 468px !important" />
+<!--          <el-form-item label="专家类型:" prop="expert_type">-->
+<!--            <el-input v-model="formData.expert_type" style="width: 468px !important" />-->
+<!--          </el-form-item>-->
+          <el-form-item label="经度:" prop="longitude">
+            <el-input v-model="formData.longitude" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="职位:" prop="position">
-            <el-input v-model="formData.position" style="width: 468px !important" />
+          <el-form-item label="纬度:" prop="latitude">
+            <el-input v-model="formData.latitude" style="width: 468px !important" />
+          </el-form-item>
+          <el-form-item label="荣誉称号:" prop="honorary_title">
+            <el-input v-model="formData.honorary_title" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="单位:" prop="unit">
+          <el-form-item label="工作单位:" prop="unit">
             <el-input v-model="formData.unit" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="联系电话:" prop="phone">
-            <el-input v-model="formData.phone" style="width: 468px !important" />
+          <el-form-item label="职务:" prop="position">
+            <el-input v-model="formData.position" style="width: 468px !important" />
+          </el-form-item>
+          <el-form-item label="职称:" prop="professional_title">
+            <el-input v-model="formData.professional_title" class="custom-disabled" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="现在地址:" prop="address">
-            <el-input v-model="formData.address" style="width: 468px !important" />
+          <el-form-item label="发证日期:" prop="certificate_issue_date">
+            <el-input v-model="formData.certificate_issue_date" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="状态:" prop="status">
-            <el-input v-model="formData.status" style="width: 468px !important" />
+          <el-form-item label="专业分组:" prop="professional_group">
+            <el-input v-model="formData.professional_group" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="擅长事故类型:" prop="accident_type">
-            <el-input v-model="formData.accident_type" style="width: 468px !important" />
+          <el-form-item label="专业领域:" prop="professional_field">
+            <el-input v-model="formData.professional_field" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="救援经历:" prop="rescue_experience">
-            <el-input v-model="formData.rescue_experience" style="width: 468px !important" />
+<!--          <el-form-item label="擅长事故类型:" prop="specialty">-->
+<!--            <el-input v-model="formData.specialty" style="width: 468px !important" />-->
+<!--          </el-form-item>-->
+<!--          <el-form-item label="救援经历:" prop="rescue_experience">-->
+<!--            <el-input v-model="formData.rescue_experience" style="width: 468px !important" />-->
+<!--          </el-form-item>-->
+          <el-form-item label="工作电话:" prop="work_phone">
+            <el-input v-model="formData.work_phone" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="出生日期:" prop="birthdate">
-            <el-input v-model="formData.birthdate" style="width: 468px !important" />
+          <el-form-item label="住宅电话:" prop="home_phone">
+            <el-input v-model="formData.home_phone" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="工作日期:" prop="work_date">
-            <el-input v-model="formData.work_date" style="width: 468px !important" />
+          <el-form-item label="移动电话:" prop="mobile_phone">
+            <el-input v-model="formData.mobile_phone" style="width: 468px !important" />
+          </el-form-item>
+          <el-form-item label="电子邮箱:" prop="email">
+            <el-input v-model="formData.email" style="width: 468px !important" />
+          </el-form-item>
+          <el-form-item label="联系地址:" prop="contact_address">
+            <el-input v-model="formData.contact_address" style="width: 468px !important" />
           </el-form-item>
         </el-form>
         <div class="common-dialog-footer">
@@ -52,27 +73,46 @@
   </div>
 </template>
 <script setup lang="ts">
-import { ref, watch } from 'vue';
-const emits = defineEmits(['close']);
+import { getExpertInfo, updateExpertInfo } from '@/api/expert';
+
+const emits = defineEmits(['close', 'refresh']);
 const props = defineProps<{
-  eventId: string | number;
+  id: string | number;
 }>();
+const proxy = getCurrentInstance()?.proxy;
 const formData = ref({
-  name: '张xx',
-  county: '茂南',
-  expert_type: '安全工程',
-  position: '高级工程师',
-  unit: '茂名市应急管理局',
-  phone: '13800138000',
-  address: '茂名市茂南XX路XX号',
-  status: '在职',
-  accident_type: '火灾、爆炸',
-  rescue_experience: '参与过多次重大事故救援,经验丰富。',
-  birthdate: '1975-05-20',
-  work_date: '2000-01-01'
+  name: '',
+  county: '',
+  longitude: '',
+  latitude: '',
+  honorary_title: '',
+  professional_title: '',
+  unit: '',
+  expert_type: '',
+  rescue_experience: '',
+  position: '',
+  certificate_issue_date: '',
+  professional_group: '',
+  professional_field: '',
+  work_phone: '',
+  home_phone: '',
+  mobile_phone: '',
+  email: '',
+  contact_address: '',
+  specialty: ''
 });
 const closeDialog = () => {
   emits('close');
 };
+const submitForm = () => {
+  updateExpertInfo(props.id, formData.value).then(() => {
+    proxy?.$modal.msgSuccess('修改成功');
+    emits('refresh');
+  });
+};
+onMounted(() => {
+  getExpertInfo(props.id).then((res) => {
+    formData.value = res.data;
+  });
+});
 </script>
-<style scoped></style>

+ 59 - 120
src/views/comprehensiveGuarantee/emergencySpecialistManagement/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <div v-show="!viewState.show" class="app-container">
+    <div v-show="!viewState.show && !editState.show" class="app-container">
       <div>
         <transition name="fade">
           <div v-show="showSearch">
@@ -8,52 +8,39 @@
               <el-row :gutter="20">
                 <el-col :span="6">
                   <el-form-item label="关键字搜索:" prop="center">
-                    <el-input v-model="queryParams.center" placeholder="请输入内容" clearable />
+                    <el-input v-model="queryParams.keyword" placeholder="请输入内容" clearable />
                   </el-form-item>
                 </el-col>
                 <el-col :span="6">
                   <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
                   <el-button icon="Refresh" @click="resetQuery">重置</el-button>
                 </el-col>
-                <el-col :span="12" style="text-align: right;">
+                <el-col :span="12" style="text-align: right">
                   <el-button type="primary" @click="exportExcel">导出excel</el-button>
                 </el-col>
               </el-row>
             </el-form>
-
           </div>
         </transition>
         <!-- 表格组件 -->
         <el-table ref="multipleTable" v-loading="loading" :data="tableData" style="width: 100%" :max-height="400">
-          <el-table-column label="序号" align="center" width="55" fixed="left">
-            <template #default="scope">
-              {{ (queryParams.page - 1) * queryParams.pageSize + scope.$index + 1 }}
-            </template>
-          </el-table-column>
           <el-table-column label="姓名" align="center" prop="name" width="100" fixed="left" />
-          <el-table-column label="荣誉称号" align="center" prop="" />
-          <el-table-column label="单位" align="center" prop="unit" />
-          <el-table-column label="职位" align="center" prop="position" />
-          <el-table-column label="职称" align="center" prop="" />
-          <el-table-column label="发证日期" align="center" prop="" />
-          <el-table-column label="专业分组" align="center" prop="" />
-          <el-table-column label="专业领域" align="center" prop="" />
-          <el-table-column label="工作电话" align="center" prop="phone" />
-          <el-table-column label="住宅电话" align="center" prop="phone" />
-          <el-table-column label="移动电话" align="center" prop="phone" />
-          <el-table-column label="电子邮箱" align="center" prop="" />
-          <el-table-column label="联系地址" align="center" prop="address" />
-          <el-table-column label="增量标识" align="center" prop="" />
-          <el-table-column label="增量时间" align="center" prop="" />
-          <el-table-column label="批次号" align="center" prop="" />
-          <el-table-column label="新增时间" align="center" prop="" />
-<!--          <el-table-column label="所属区县" align="center" prop="county" />-->
+          <el-table-column label="所属区县" align="center" prop="county" />
 <!--          <el-table-column label="专家类型" align="center" prop="expert_type" />-->
-<!--          <el-table-column label="状态" align="center" prop="status" />-->
-<!--          <el-table-column label="擅长事故类型" align="center" prop="accident_type" />-->
-<!--          <el-table-column label="救援经历" align="center" prop="rescue_experience" />-->
-<!--          <el-table-column label="出生日期" align="center" prop="birthdate" />-->
-<!--          <el-table-column label="工作日期" align="center" prop="work_date" />-->
+          <el-table-column label="荣誉称号" align="center" prop="honorary_title" />
+          <el-table-column label="工作单位" align="center" prop="unit" />
+          <el-table-column label="职务" align="center" prop="position" />
+          <el-table-column label="职称" align="center" prop="professional_title" />
+          <el-table-column label="发证日期" align="center" prop="certificate_issue_date" />
+          <el-table-column label="专业分组" align="center" prop="professional_group" />
+          <el-table-column label="专业领域" align="center" prop="professional_field" />
+<!--          <el-table-column label="擅长事故类型" align="center" prop="specialty" />-->
+          <el-table-column label="工作电话" align="center" prop="work_phone" />
+          <el-table-column label="住宅电话" align="center" prop="home_phone" />
+          <el-table-column label="移动电话" align="center" prop="mobile_phone" />
+          <el-table-column label="电子邮箱" align="center" prop="email" />
+          <el-table-column label="联系地址" align="center" prop="contact_address" />
+
           <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
             <template #default="scope">
               <el-text class="common-btn-text-primary" @click="handleView(scope.row)">查看</el-text>
@@ -109,14 +96,11 @@
         <Map :active-map="activeMap" :point-type="pointType" style="height: 600px" />
       </el-card>
     </div>
-    <View v-if="viewState.show" :event-id="viewState.eventId" @close="handleCancel" />
-    <Edit v-if="editState.show" :event-id="editState.eventId" @close="handleCancel" />
+    <View v-if="viewState.show" :id="viewState.eventId" @close="handleCancel" />
+    <Edit v-if="editState.show" :id="editState.eventId" @close="handleCancel" @refresh="handleRefresh" />
   </div>
 </template>
 <script setup lang="ts">
-import { onMounted, reactive, ref, toRefs } from 'vue';
-import { ElTable, ElTableColumn, ElForm, ElFormItem, ElInput, ElButton, ElText } from 'element-plus';
-import { ComponentInternalInstance, getCurrentInstance } from 'vue';
 import View from './view.vue';
 import Edit from './edit.vue';
 import { PatrolVO } from '@/views/inspectionWork/patrolTask.vue';
@@ -125,94 +109,43 @@ import Map from './Map.vue';
 import { PointType } from '@/api/globalMap/type';
 import { fillingTable } from '@/api/dataFilling/fillingManage';
 import { download2 } from '@/utils/request';
+import { getExpertList, getExpertProfessionalGroupCount } from '@/api/expert';
 const loading = ref(true);
 const showSearch = ref(true);
-const multiple = ref(true);
 const ids = ref<Array<number | string>>([]);
-const single = ref(true);
 const total = ref(0);
 const tableData = ref<PatrolVO[]>([]);
 const baseUrl = import.meta.env.VITE_APP_BASE_API;
-const filename = '专家信息表';
-const selectedRow = ref<PatrolVO | null>(null);
-
-const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-
-const initFormData = reactive({
-  name: '',
-  county: '',
-  expert_type: '',
-  position: '',
-  unit: '',
-  phone: '',
-  address: '',
-  status: '',
-  accident_type: '',
-  rescue_experience: '',
-  birthdate: '',
-  work_date: ''
-});
 
 let activeMap = ref('satellite');
 let pointType = ref<PointType[]>([]);
-const data = reactive({
-  form: { ...initFormData },
-  queryParams: {
-    page: 1,
-    pageSize: 10
-  }
-});
 
-const { queryParams, form } = toRefs(data);
+const queryParams = reactive({
+  page: 1,
+  pageSize: 10,
+  keyword: ''
+});
 
-const fetchWorkrData = () => {
+const fetchData = () => {
   loading.value = true;
-  const mockData = [
-    {
-      id: 1,
-      name: '张三',
-      county: '茂南',
-      expert_type: '技术专家',
-      position: '工程师',
-      unit: '某科技公司',
-      phone: '13800000000',
-      address: '茂名市茂南XX路XX号',
-      status: '在线',
-      accident_type: '网络故障',
-      rescue_experience: '5年以上',
-      birthdate: '1990-01-01',
-      work_date: '2015-01-01'
-    },
-    {
-      id: 2,
-      name: '李四',
-      county: '高州',
-      expert_type: '安全专家',
-      position: '高级安全顾问',
-      unit: '某安全咨询公司',
-      phone: '13800000001',
-      address: '茂名市高州XX路XX号',
-      status: '离线',
-      accident_type: '安全事故',
-      rescue_experience: '10年以上',
-      birthdate: '1985-01-01',
-      work_date: '2010-01-01'
-    }
-  ];
-
-  tableData.value = mockData;
-  total.value = mockData.length;
-
-  loading.value = false;
+  getExpertList(queryParams)
+    .then((res) => {
+      tableData.value = res.data;
+      total.value = res.total;
+    })
+    .finally(() => {
+      loading.value = false;
+    });
 };
 
 const handleQuery = () => {
-  queryParams.value.page = 1;
-  fetchWorkrData();
+  queryParams.page = 1;
+  fetchData();
 };
 
 const resetQuery = () => {
-  queryParams.value = { page: 1, pageSize: 10 };
+  queryParams.page = 1;
+  queryParams.keyword = '';
   handleQuery();
 };
 let viewState = reactive({
@@ -223,21 +156,26 @@ let editState = reactive({
   show: false,
   eventId: ''
 });
-const handleView = () => {
-  // viewState.eventId = row.id;
+const handleView = (row) => {
+  viewState.eventId = row.id;
   viewState.show = true;
 };
-const handleUpdate = () => {
-  // editState.eventId = row.id;
+const handleUpdate = (row) => {
+  editState.eventId = row.id;
   editState.show = true;
 };
 const handleCancel = () => {
   viewState.show = false;
   editState.show = false;
 };
+const handleRefresh = () => {
+  editState.show = false;
+  fetchData();
+  initData();
+};
 const exportExcel = () => {
   fillingTable(ids.value[0]);
-  download2(baseUrl + '/api/dataFilling/export_to_excel?report_id='+ids.value[0], filename + '.xlsx');
+  download2(baseUrl + '/api/dataFilling/export_to_excel?report_id=' + ids.value[0], '专家信息表.xlsx');
 };
 let option1 = ref({
   grid: {
@@ -570,14 +508,9 @@ const initData = () => {
   option1.value.xAxis.data = ['茂南区', '电白区', '高州市', '化州市', '信宜市', '高新区', '滨海新区'];
   option1.value.series[0].data = [569, 251, 264, 187, 663, 649, 247];
   // 类型统计
-  // option2.value.legend.data = ['洪水灾害', '城市内涝', '地质灾害', '气象灾害', '生物灾害', '森林火灾'];
-  option2.value.series[0].data = [
-    { name: '自然灾害类', value: 50 },
-    { name: '事故灾害类', value: 69 },
-    { name: '公共卫生类', value: 9 },
-    { name: '社会安全类', value: 9 },
-    { name: '综合管理类', value: 5 }
-  ];
+  getExpertProfessionalGroupCount().then((res) => {
+    option2.value.series[0].data = res.data.list;
+  });
   // 年龄统计
   const data1 = [6, 6, 14, 23, 32];
   let max = 0;
@@ -612,7 +545,7 @@ const initData = () => {
   option4.value.series[1].data = maxData2;
 };
 onMounted(() => {
-  fetchWorkrData();
+  fetchData();
   initData();
 });
 </script>
@@ -629,4 +562,10 @@ onMounted(() => {
     width: calc(50% - 10px);
   }
 }
+:deep(.amap-info-content) {
+  padding: 0 !important;
+}
+:deep(.amap-info-close) {
+  display: none;
+}
 </style>

+ 129 - 38
src/views/comprehensiveGuarantee/emergencySpecialistManagement/view.vue

@@ -5,42 +5,105 @@
         <h3 class="common-dialog-title">查看详情</h3>
       </div>
       <div class="common-dialog-box">
-        <el-form ref="form" :model="formData" :rules="rules" label-width="120px">
+        <el-form ref="form" :model="formData" label-width="120px">
           <el-form-item label="姓名:" prop="name">
-            <el-input v-model="formData.name" style="width: 468px !important" disabled />
+            <el-input v-model="formData.name" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
           </el-form-item>
           <el-form-item label="所属区县:" prop="county">
-            <el-input v-model="formData.county" style="width: 468px !important" disabled />
+            <el-input v-model="formData.county" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="经度:" prop="longitude">
+            <el-input v-model="formData.longitude" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="纬度:" prop="latitude">
+            <el-input v-model="formData.latitude" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
           </el-form-item>
           <el-form-item label="专家类型:" prop="expert_type">
-            <el-input v-model="formData.expert_type" style="width: 468px !important" disabled />
+            <el-input v-model="formData.expert_type" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
+          </el-form-item>
+<!--          <el-form-item label="救援经历:" prop="rescue_experience">-->
+<!--            <el-input-->
+<!--              v-model="formData.rescue_experience"-->
+<!--              type="textarea"-->
+<!--              autosize-->
+<!--              class="custom-disabled"-->
+<!--              style="width: 468px !important"-->
+<!--              disabled-->
+<!--            />-->
+<!--          </el-form-item>-->
+          <el-form-item label="荣誉称号:" prop="honorary_title">
+            <el-input v-model="formData.honorary_title" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="工作单位:" prop="unit">
+            <el-input v-model="formData.unit" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
           </el-form-item>
-          <el-form-item label="职位:" prop="position">
-            <el-input v-model="formData.position" style="width: 468px !important" disabled />
+          <el-form-item label="职:" prop="position">
+            <el-input v-model="formData.position" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
           </el-form-item>
-          <el-form-item label="单位:" prop="unit">
-            <el-input v-model="formData.unit" style="width: 468px !important" disabled />
+          <el-form-item label="职称:" prop="professional_title">
+            <el-input
+              v-model="formData.professional_title"
+              type="textarea"
+              autosize
+              class="custom-disabled"
+              style="width: 468px !important"
+              disabled
+            />
           </el-form-item>
-          <el-form-item label="联系电话:" prop="phone">
-            <el-input v-model="formData.phone" style="width: 468px !important" disabled />
+          <el-form-item label="发证日期:" prop="certificate_issue_date">
+            <el-input
+              v-model="formData.certificate_issue_date"
+              type="textarea"
+              autosize
+              class="custom-disabled"
+              style="width: 468px !important"
+              disabled
+            />
           </el-form-item>
-          <el-form-item label="现在地址:" prop="address">
-            <el-input v-model="formData.address" style="width: 468px !important" disabled />
+          <el-form-item label="专业分组:" prop="professional_group">
+            <el-input
+              v-model="formData.professional_group"
+              type="textarea"
+              autosize
+              class="custom-disabled"
+              style="width: 468px !important"
+              disabled
+            />
           </el-form-item>
-          <el-form-item label="状态:" prop="status">
-            <el-input v-model="formData.status" style="width: 468px !important" disabled />
+          <el-form-item label="专业领域:" prop="professional_field">
+            <el-input
+              v-model="formData.professional_field"
+              type="textarea"
+              autosize
+              class="custom-disabled"
+              style="width: 468px !important"
+              disabled
+            />
           </el-form-item>
-          <el-form-item label="擅长事故类型:" prop="accident_type">
-            <el-input v-model="formData.accident_type" style="width: 468px !important" disabled />
+          <el-form-item label="擅长事故类型:" prop="specialty">
+            <el-input
+              v-model="formData.specialty"
+              type="textarea"
+              autosize
+              class="custom-disabled"
+              style="width: 468px !important"
+              disabled
+            />
           </el-form-item>
-          <el-form-item label="救援经历:" prop="rescue_experience">
-            <el-input v-model="formData.rescue_experience" style="width: 468px !important" disabled />
+          <el-form-item label="工作电话:" prop="work_phone">
+            <el-input v-model="formData.work_phone" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
           </el-form-item>
-          <el-form-item label="出生日期:" prop="birthdate">
-            <el-input v-model="formData.birthdate" style="width: 468px !important" disabled />
+          <el-form-item label="住宅电话:" prop="home_phone">
+            <el-input v-model="formData.home_phone" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
           </el-form-item>
-          <el-form-item label="工作日期:" prop="work_date">
-            <el-input v-model="formData.work_date" style="width: 468px !important" disabled />
+          <el-form-item label="移动电话:" prop="mobile_phone">
+            <el-input v-model="formData.mobile_phone" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="电子邮箱:" prop="email">
+            <el-input v-model="formData.email" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="联系地址:" prop="contact_address">
+            <el-input v-model="formData.contact_address" type="textarea" autosize class="custom-disabled" style="width: 468px !important" disabled />
           </el-form-item>
         </el-form>
         <div class="common-dialog-footer">
@@ -52,32 +115,60 @@
 </template>
 
 <script setup lang="ts">
-import { ref, watch } from 'vue';
+import { getExpertInfo } from '@/api/expert';
 
 const emits = defineEmits(['close']);
 const props = defineProps<{
-  eventId: string | number;
+  id: string | number;
 }>();
 
-// 模拟的数据
 const formData = ref({
-  name: '张xx',
-  county: '茂南',
-  expert_type: '安全工程',
-  position: '高级工程师',
-  unit: '茂名市应急管理局',
-  phone: '13800138000',
-  address: '茂名市茂南XX路XX号',
-  status: '在职',
-  accident_type: '火灾、爆炸',
-  rescue_experience: '参与过多次重大事故救援,经验丰富。',
-  birthdate: '1975-05-20',
-  work_date: '2000-01-01'
+  name: '',
+  county: '',
+  longitude: '',
+  latitude: '',
+  honorary_title: '',
+  professional_title: '',
+  unit: '',
+  expert_type: '',
+  rescue_experience: '',
+  position: '',
+  certificate_issue_date: '',
+  professional_group: '',
+  professional_field: '',
+  work_phone: '',
+  home_phone: '',
+  mobile_phone: '',
+  email: '',
+  contact_address: '',
+  specialty: ''
 });
 
 const closeDialog = () => {
   emits('close');
 };
+onMounted(() => {
+  getExpertInfo(props.id).then((res) => {
+    formData.value = res.data;
+  });
+});
 </script>
 
-<style scoped></style>
+<style lang="scss" scoped>
+.custom-disabled {
+  :deep(.el-select__wrapper.is-disabled),
+  :deep(.el-input__wrapper),
+  :deep(.el-textarea__inner) {
+    background-color: #ffffff !important;
+  }
+  :deep(.el-select__wrapper.is-disabled .el-select__selected-item),
+  :deep(.el-input__inner),
+  :deep(.el-textarea__inner) {
+    color: rgba(0, 0, 0, 0.85) !important;
+    -webkit-text-fill-color: rgba(0, 0, 0, 0.85) !important;
+  }
+  :deep(.el-textarea__inner) {
+    resize: none !important;
+  }
+}
+</style>