yangyuxuan 6 mēneši atpakaļ
vecāks
revīzija
4ab46d9d5f

+ 9 - 0
src/layout/components/TopBar/search.vue

@@ -20,6 +20,7 @@
             </div>
           </template>
         </el-autocomplete>
+        <el-icon @click="closeInput" style="margin-top: 50px; color: white"><Close /></el-icon>
       </template>
     </el-dialog>
   </div>
@@ -30,6 +31,7 @@ import { getNormalPath } from '@/utils/ruoyi';
 import { isHttp } from '@/utils/validate';
 import usePermissionStore from '@/store/modules/permission';
 import { RouteRecordRaw } from 'vue-router';
+import { Close } from '@element-plus/icons-vue';
 type Router = Array<{
   path: string;
   icon: string;
@@ -40,6 +42,9 @@ type SearchState<T = any> = {
   menuQuery: string;
   menuList: T[];
 };
+const closeInput = () => {
+  state.isShowSearch = false;
+};
 // 定义变量内容
 const layoutMenuAutocompleteRef = ref();
 const router = useRouter();
@@ -155,4 +160,8 @@ defineExpose({
     transform: translateX(-50%);
   }
 }
+.my-custom-icon svg {
+  width: 124px;  /* 根据需要调整宽度 */
+  height: 124px; /* 根据需要调整高度 */
+}
 </style>

+ 8 - 7
src/types/components.d.ts

@@ -27,8 +27,9 @@ 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']
+    ElCheckboxButton: typeof import('element-plus/es')['ElCheckboxButton']
+    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']
@@ -45,29 +46,30 @@ declare module 'vue' {
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElImage: typeof import('element-plus/es')['ElImage']
     ElInput: typeof import('element-plus/es')['ElInput']
-    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
     ElMenu: typeof import('element-plus/es')['ElMenu']
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElPopover: typeof import('element-plus/es')['ElPopover']
-    ElRadio: typeof import('element-plus/es')['ElRadio']
-    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
-    ElSegmented: typeof import('element-plus/es')['ElSegmented']
     ElSelect: typeof import('element-plus/es')['ElSelect']
     ElSlider: typeof import('element-plus/es')['ElSlider']
+    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']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
+    ElTabPane: typeof import('element-plus/es')['ElTabPane']
+    ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
     ElText: typeof import('element-plus/es')['ElText']
     ElTimeline: typeof import('element-plus/es')['ElTimeline']
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTree: typeof import('element-plus/es')['ElTree']
+    ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
     ElUpload: typeof import('element-plus/es')['ElUpload']
     ExcelEditor: typeof import('./../components/ExcelEditor/index.vue')['default']
     FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
@@ -79,8 +81,6 @@ declare module 'vue' {
     HikvisionPlayer: typeof import('./../components/HKVideo/hikvision-player.vue')['default']
     HKVideo: typeof import('./../components/HKVideo/index.vue')['default']
     IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
-    IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
-    IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
     IFrame: typeof import('./../components/iFrame/index.vue')['default']
     ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
     ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']
@@ -93,6 +93,7 @@ declare module 'vue' {
     NearbyVideos: typeof import('./../components/NearbyVideos/index.vue')['default']
     Pagination: typeof import('./../components/Pagination/index.vue')['default']
     ParentView: typeof import('./../components/ParentView/index.vue')['default']
+    PdfViewer: typeof import('./../components/PdfViewer/PdfViewer.vue')['default']
     QuickZoom: typeof import('./../components/Map/quickZoom.vue')['default']
     Render: typeof import('./../components/BuildCode/render.vue')['default']
     RightTool: typeof import('./../components/Map/rightTool.vue')['default']

+ 16 - 14
src/views/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineering.vue

@@ -12,26 +12,28 @@
       </el-row>
       <!-- 表格组件 -->
       <el-table ref="multipleTable" v-loading="loading" :data="tableData" style="width: 100%">
-        <el-table-column label="水利设施和水利工程名称" align="center" prop="slsshslgcmc" fixed="left" />
-        <el-table-column label="建设单位名称" align="center" prop="jsdwmc" />
-        <el-table-column label="水利设施和水利工程地点" align="center" prop="slsshslgcdd" />
-        <el-table-column label="建设单位证件类型" align="center" prop="jsdwzjlx" />
+        <el-table-column type="selection" width="50" align="center" />
+        <el-table-column label="编号" align="center" prop="id" />
+        <el-table-column label="工程名称" align="center" prop="slsshslgcmc" />
+        <el-table-column label="建设单位" align="center" prop="jsdwmc" />
+        <el-table-column label="工程地点" align="center" prop="slsshslgcdd" />
+<!--        <el-table-column label="建设单位证件类型" align="center" prop="jsdwzjlx" />-->
         <el-table-column label="联系方式" align="center" prop="lxfs" />
         <el-table-column label="数据提供部门统一社会信用代码" align="center" prop="sjtgbmtyshxydm" />
         <el-table-column label="监督管理机关编码" align="center" prop="jdgljgbm" />
-        <el-table-column label="插入时间" align="center" prop="cd_time" />
         <el-table-column label="数据提供部门名称" align="center" prop="sjtgbmmc" />
-        <el-table-column label="灌溉面积" align="center" prop="ggmj" />
-        <el-table-column label="数据提供部门行政区划代码" align="center" prop="sjtgbmxzqhdm" />
-        <el-table-column label="建设单位证件号码" align="center" prop="jsdwzjhm" />
-        <el-table-column label="水利设施和水利工程所在地行政区划代码" align="center" prop="xzqhdm" />
         <el-table-column label="占地面积" align="center" prop="zdmj" />
-        <el-table-column label="ETL时间" align="center" prop="etl_time" />
-        <el-table-column label="建设时间" align="center" prop="jssj" />
-        <el-table-column label="数据批次号" align="center" prop="cd_batch" />
         <el-table-column label="监督管理机关" align="center" prop="jdgljg" />
-        <el-table-column label="经度" align="center" prop="jingdu" />
-        <el-table-column label="纬度" align="center" prop="weidu" />
+<!--        <el-table-column label="灌溉面积" align="center" prop="ggmj" />-->
+<!--        <el-table-column label="数据提供部门行政区划代码" align="center" prop="sjtgbmxzqhdm" />-->
+<!--        <el-table-column label="建设单位证件号码" align="center" prop="jsdwzjhm" />-->
+<!--        <el-table-column label="水利设施和水利工程所在地行政区划代码" align="center" prop="xzqhdm" />-->
+<!--        <el-table-column label="ETL时间" align="center" prop="etl_time" />-->
+        <el-table-column label="建设时间" align="center" prop="jssj" />
+<!--        <el-table-column label="插入时间" align="center" prop="cd_time" />-->
+<!--        <el-table-column label="数据批次号" align="center" prop="cd_batch" />-->
+<!--        <el-table-column label="经度" align="center" prop="jingdu" />-->
+<!--        <el-table-column label="纬度" align="center" prop="weidu" />-->
         <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>

+ 37 - 34
src/views/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineeringAdd.vue

@@ -53,15 +53,20 @@
               </el-form-item>
             </el-col>
             <el-col :span="10">
-              <el-form-item label="插入时间:" prop="cd_time">
-                <el-date-picker
-                  v-model="formData.cd_time"
-                  type="datetime"
-                  placeholder="请选择时间"
-                  style="width: 468px !important"
-                />
+              <el-form-item label="监督管理机关:" prop="jdgljg">
+                <el-input v-model="formData.jdgljg" placeholder="请输入监督管理机关" style="width: 468px !important" />
               </el-form-item>
             </el-col>
+<!--            <el-col :span="10">-->
+<!--              <el-form-item label="插入时间:" prop="cd_time">-->
+<!--                <el-date-picker-->
+<!--                  v-model="formData.cd_time"-->
+<!--                  type="datetime"-->
+<!--                  placeholder="请选择时间"-->
+<!--                  style="width: 468px !important"-->
+<!--                />-->
+<!--              </el-form-item>-->
+<!--            </el-col>-->
           </el-row>
           <el-row :gutter="20" class="mb8">
             <el-col :span="10">
@@ -100,16 +105,16 @@
             </el-col>
           </el-row>
           <el-row :gutter="20" class="mb8">
-            <el-col :span="10">
-              <el-form-item label="ETL时间:" prop="etl_time">
-                <el-date-picker
-                  v-model="formData.etl_time"
-                  type="datetime"
-                  placeholder="请选择时间"
-                  style="width: 468px !important"
-                />
-              </el-form-item>
-            </el-col>
+<!--            <el-col :span="10">-->
+<!--              <el-form-item label="ETL时间:" prop="etl_time">-->
+<!--                <el-date-picker-->
+<!--                  v-model="formData.etl_time"-->
+<!--                  type="datetime"-->
+<!--                  placeholder="请选择时间"-->
+<!--                  style="width: 468px !important"-->
+<!--                />-->
+<!--              </el-form-item>-->
+<!--            </el-col>-->
             <el-col :span="10">
               <el-form-item label="建设时间:" prop="jssj">
                 <el-date-picker
@@ -120,30 +125,27 @@
                 />
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row :gutter="20" class="mb8">
-            <el-col :span="10">
-              <el-form-item label="数据批次号:" prop="cd_batch">
-                <el-input v-model="formData.cd_batch" placeholder="请输入数据批次号" style="width: 468px !important" />
-              </el-form-item>
-            </el-col>
             <el-col :span="10">
-              <el-form-item label="监督管理机关:" prop="jdgljg">
-                <el-input v-model="formData.jdgljg" placeholder="请输入监督管理机关" style="width: 468px !important" />
+              <el-form-item label="纬度:" prop="latitude">
+                <el-input v-model="formData.weidu" placeholder="请输入纬度" style="width: 468px !important" />
               </el-form-item>
             </el-col>
           </el-row>
+<!--          <el-row :gutter="20" class="mb8">-->
+<!--            <el-col :span="10">-->
+<!--              <el-form-item label="数据批次号:" prop="cd_batch">-->
+<!--                <el-input v-model="formData.cd_batch" placeholder="请输入数据批次号" style="width: 468px !important" />-->
+<!--              </el-form-item>-->
+<!--            </el-col>-->
+
+<!--          </el-row>-->
           <el-row :gutter="20" class="mb8">
             <el-col :span="10">
               <el-form-item label="经度:" prop="jingdu">
                 <el-input v-model="formData.jingdu" placeholder="请输入经度" style="width: 468px !important" />
               </el-form-item>
             </el-col>
-            <el-col :span="10">
-              <el-form-item label="纬度:" prop="latitude">
-                <el-input v-model="formData.weidu" placeholder="请输入纬度" style="width: 468px !important" />
-              </el-form-item>
-            </el-col>
+
           </el-row>
         </el-form>
         <div class="common-dialog-footer">
@@ -162,6 +164,7 @@ import { ref } from 'vue';
 import { ElMessage } from 'element-plus';
 import { useRouter } from 'vue-router';
 import { addHydraulic } from '@/api/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineering';
+import { parseTime } from '@/utils/ruoyi';
 
 const emits = defineEmits(['close']);
 
@@ -197,16 +200,13 @@ const rules = ref({
   lxfs: [{ required: true, message: '联系方式不能为空', trigger: 'blur' }],
   sjtgbmtyshxydm: [{ required: true, message: '数据提供部门统一社会信用代码不能为空', trigger: 'blur' }],
   jdgljgbm: [{ required: true, message: '监督管理机关编码不能为空', trigger: 'blur' }],
-  cd_time: [{ required: true, message: '插入时间不能为空', trigger: 'blur' }],
   sjtgbmmc: [{ required: true, message: '数据提供部门名称不能为空', trigger: 'blur' }],
   ggmj: [{ required: true, message: '灌溉面积不能为空', trigger: 'blur' }],
   sjtgbmxzqhdm: [{ required: true, message: '数据提供部门行政区划代码不能为空', trigger: 'blur' }],
   jsdwzjhm: [{ required: true, message: '建设单位证件号码不能为空', trigger: 'blur' }],
   xzqhdm: [{ required: true, message: '水利设施和水利工程所在地行政区划代码不能为空', trigger: 'blur' }],
   zdmj: [{ required: true, message: '占地面积不能为空', trigger: 'blur' }],
-  etl_time: [{ required: true, message: 'ETL时间不能为空', trigger: 'blur' }],
   jssj: [{ required: true, message: '建设时间不能为空', trigger: 'blur' }],
-  cd_batch: [{ required: true, message: '数据批次号不能为空', trigger: 'blur' }],
   jdgljg: [{ required: true, message: '监督管理机关不能为空', trigger: 'blur' }],
   jingdu: [{ required: true, message: '经度不能为空', trigger: 'blur' }],
   weidu: [{ required: true, message: '纬度不能为空', trigger: 'blur' }]
@@ -236,6 +236,9 @@ const handleMapChange = (data) => {
 const submitForm = async () => {
   try {
     await form.value.validate();
+    formData.value.cd_time = parseTime(formData.value.cd_time)
+    formData.value.etl_time = parseTime(formData.value.etl_time)
+    formData.value.jssj = parseTime(formData.value.jssj)
     const payload = {
       projects: [formData.value]
     };

+ 5 - 32
src/views/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineeringEdit.vue

@@ -2,7 +2,7 @@
   <div class="common-dialog">
     <div class="common-dialog-content">
       <div class="common-dialog-title-box">
-        <h3 class="common-dialog-title">编辑</h3>
+        <h3 class="common-dialog-title">编辑工程</h3>
       </div>
       <div class="common-dialog-box">
         <el-form ref="form" :model="formData" :rules="rules" label-width="auto">
@@ -53,13 +53,8 @@
               </el-form-item>
             </el-col>
             <el-col :span="10">
-              <el-form-item label="插入时间:" prop="sjrfdxsmj">
-                <el-date-picker
-                  v-model="formData.cd_time"
-                  type="datetime"
-                  placeholder="请选择时间"
-                  style="width: 468px !important"
-                />
+              <el-form-item label="监督管理机关:" prop="ybrs">
+                <el-input v-model="formData.jdgljg" placeholder="请输入监督管理机关" style="width: 468px !important" />
               </el-form-item>
             </el-col>
           </el-row>
@@ -100,16 +95,6 @@
             </el-col>
           </el-row>
           <el-row :gutter="20" class="mb8">
-            <el-col :span="10">
-              <el-form-item label="ETL时间:" prop="cd_batch">
-                <el-date-picker
-                  v-model="formData.etl_time"
-                  type="datetime"
-                  placeholder="请选择时间"
-                  style="width: 468px !important"
-                />
-              </el-form-item>
-            </el-col>
             <el-col :span="10">
               <el-form-item label="建设时间:" prop="rfsjdwdm">
                 <el-date-picker
@@ -120,16 +105,9 @@
                 />
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row :gutter="20" class="mb8">
             <el-col :span="10">
-              <el-form-item label="数据批次号:" prop="rfsjdw">
-                <el-input v-model="formData.cd_batch" placeholder="请输入数据批次号" style="width: 468px !important" />
-              </el-form-item>
-            </el-col>
-            <el-col :span="10">
-              <el-form-item label="监督管理机关:" prop="ybrs">
-                <el-input v-model="formData.jdgljg" placeholder="请输入监督管理机关" style="width: 468px !important" />
+              <el-form-item label="纬度:" prop="latitude">
+                <el-input v-model="formData.weidu" placeholder="请输入纬度" style="width: 468px !important" />
               </el-form-item>
             </el-col>
           </el-row>
@@ -139,11 +117,6 @@
                 <el-input v-model="formData.jingdu" placeholder="请输入经度" style="width: 468px !important" />
               </el-form-item>
             </el-col>
-            <el-col :span="10">
-              <el-form-item label="纬度:" prop="latitude">
-                <el-input v-model="formData.weidu" placeholder="请输入纬度" style="width: 468px !important" />
-              </el-form-item>
-            </el-col>
           </el-row>
         </el-form>
         <div class="common-dialog-footer">

+ 23 - 21
src/views/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineeringView.vue

@@ -49,10 +49,15 @@
               </el-form-item>
             </el-col>
             <el-col :span="10">
-              <el-form-item label="插入时间:" prop="cd_time">
-                <el-input v-model="formData.cd_time" style="width: 468px !important" disabled />
+              <el-form-item label="监督管理机关:" prop="jdgljg">
+                <el-input v-model="formData.jdgljg" style="width: 468px !important" disabled />
               </el-form-item>
             </el-col>
+<!--            <el-col :span="10">-->
+<!--              <el-form-item label="插入时间:" prop="cd_time">-->
+<!--                <el-input v-model="formData.cd_time" style="width: 468px !important" disabled />-->
+<!--              </el-form-item>-->
+<!--            </el-col>-->
           </el-row>
           <el-row :gutter="20" class="mb8">
             <el-col :span="10">
@@ -91,40 +96,37 @@
             </el-col>
           </el-row>
           <el-row :gutter="20" class="mb8">
-            <el-col :span="10">
-              <el-form-item label="ETL时间:" prop="etl_time">
-                <el-input v-model="formData.etl_time" style="width: 468px !important" disabled />
-              </el-form-item>
-            </el-col>
+<!--            <el-col :span="10">-->
+<!--              <el-form-item label="ETL时间:" prop="etl_time">-->
+<!--                <el-input v-model="formData.etl_time" style="width: 468px !important" disabled />-->
+<!--              </el-form-item>-->
+<!--            </el-col>-->
             <el-col :span="10">
               <el-form-item label="建设时间:" prop="jssj">
                 <el-input v-model="formData.jssj" style="width: 468px !important" disabled />
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row :gutter="20" class="mb8">
             <el-col :span="10">
-              <el-form-item label="数据批次号:" prop="cd_batch">
-                <el-input v-model="formData.cd_batch" style="width: 468px !important" disabled />
-              </el-form-item>
-            </el-col>
-            <el-col :span="10">
-              <el-form-item label="监督管理机关:" prop="jdgljg">
-                <el-input v-model="formData.jdgljg" style="width: 468px !important" disabled />
+              <el-form-item label="纬度:" prop="weidu">
+                <el-input v-model="formData.weidu" style="width: 468px !important" disabled />
               </el-form-item>
             </el-col>
           </el-row>
+<!--          <el-row :gutter="20" class="mb8">-->
+<!--            <el-col :span="10">-->
+<!--              <el-form-item label="数据批次号:" prop="cd_batch">-->
+<!--                <el-input v-model="formData.cd_batch" style="width: 468px !important" disabled />-->
+<!--              </el-form-item>-->
+<!--            </el-col>-->
+
+<!--          </el-row>-->
           <el-row :gutter="20" class="mb8">
             <el-col :span="10">
               <el-form-item label="经度:" prop="jingdu">
                 <el-input v-model="formData.jingdu" style="width: 468px !important" disabled />
               </el-form-item>
             </el-col>
-            <el-col :span="10">
-              <el-form-item label="纬度:" prop="weidu">
-                <el-input v-model="formData.weidu" style="width: 468px !important" disabled />
-              </el-form-item>
-            </el-col>
+
           </el-row>
         </el-form>
         <div class="common-dialog-footer">

+ 11 - 11
src/views/comprehensiveGuarantee/reliefResourceManagement/rescueStationAdd.vue

@@ -2,7 +2,7 @@
   <div class="common-dialog">
     <div class="common-dialog-content">
       <div class="common-dialog-title-box">
-        <h3 class="common-dialog-title">新建救站</h3>
+        <h3 class="common-dialog-title">新建救站</h3>
       </div>
       <div class="common-dialog-box">
         <el-form ref="form" :rules="rules" :model="formData" label-width="auto">
@@ -19,7 +19,7 @@
             <el-input v-model="formData.zj" style="width: 468px !important" placeholder="请输入所属镇街" />
           </el-form-item>
           <el-form-item label="服务内容:" prop="fwnr">
-            <el-input v-model="formData.fwnr" style="width: 468px !important" placeholder="请选择时间" />
+            <el-input v-model="formData.fwnr" style="width: 468px !important" placeholder="请输入服务内容" />
           </el-form-item>
           <el-form-item label="操作方式:" prop="cd_operation">
             <el-input v-model="formData.cd_operation" style="width: 468px !important" placeholder="请输入操作方式" />
@@ -46,15 +46,15 @@
           <el-form-item label="联系人:" prop="lxr">
             <el-input v-model="formData.lxr" style="width: 468px !important" placeholder="请输入联系人" />
           </el-form-item>
-          <el-form-item label="更新时间:" prop="cd_time">
-            <el-date-picker
-              v-model="formData.cd_time"
-              type="datetime"
-              placeholder="请选择时间"
-              style="width: 468px !important"
-              value-format="YYYY-MM-DD HH:mm:ss"
-            />
-          </el-form-item>
+<!--          <el-form-item label="更新时间:" prop="cd_time">-->
+<!--            <el-date-picker-->
+<!--              v-model="formData.cd_time"-->
+<!--              type="datetime"-->
+<!--              placeholder="请选择时间"-->
+<!--              style="width: 468px !important"-->
+<!--              value-format="YYYY-MM-DD HH:mm:ss"-->
+<!--            />-->
+<!--          </el-form-item>-->
           <el-form-item label="服务点状态:" prop="fwdzt">
             <el-input v-model="formData.fwdzt" style="width: 468px !important" placeholder="请输入服务点状态" />
           </el-form-item>

+ 8 - 8
src/views/comprehensiveGuarantee/reliefResourceManagement/rescueStationEdit.vue

@@ -46,14 +46,14 @@
           <el-form-item label="联系人:" prop="lxr">
             <el-input v-model="formData.lxr" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="更新时间:" prop="cd_time">
-            <el-date-picker
-              v-model="formData.cd_time"
-              type="datetime"
-              placeholder="请选择时间"
-              style="width: 468px !important"
-            />
-          </el-form-item>
+<!--          <el-form-item label="更新时间:" prop="cd_time">-->
+<!--            <el-date-picker-->
+<!--              v-model="formData.cd_time"-->
+<!--              type="datetime"-->
+<!--              placeholder="请选择时间"-->
+<!--              style="width: 468px !important"-->
+<!--            />-->
+<!--          </el-form-item>-->
           <el-form-item label="服务点状态:" prop="fwdzt">
             <el-input v-model="formData.fwdzt" style="width: 468px !important" />
           </el-form-item>

+ 3 - 3
src/views/comprehensiveGuarantee/reliefResourceManagement/rescueStationView.vue

@@ -45,9 +45,9 @@
           <el-form-item label="联系人:" prop="lxr">
             <el-input v-model="formData.lxr" style="width: 468px !important" disabled />
           </el-form-item>
-          <el-form-item label="更新时间:" prop="cd_time">
-            <el-input v-model="formData.cd_time" style="width: 468px !important" disabled />
-          </el-form-item>
+<!--          <el-form-item label="更新时间:" prop="cd_time">-->
+<!--            <el-input v-model="formData.cd_time" style="width: 468px !important" disabled />-->
+<!--          </el-form-item>-->
           <el-form-item label="服务点状态:" prop="fwdzt">
             <el-input v-model="formData.fwdzt" style="width: 468px !important" disabled />
           </el-form-item>

+ 11 - 0
src/views/duty/eventing/eventDetails.vue

@@ -114,6 +114,9 @@
         <i class="line-icon" />
         <div class="common-info-title">事件总结报告</div>
       </div>
+      <pdf-viewer :url="baseUrl + '/file/download/' + '87735cf0-ee73-11ef-862c-fa163e4bf12e.pdf'" />
+
+
       <div v-if="!!summaryFiles && summaryFiles.length > 0" class="common-info-content">
         <div class="list2">
           <div v-for="(item, index) in summaryFiles" :key="index" class="list-item" @click="downloadSummaryFile(item)">
@@ -165,6 +168,8 @@ import CloseEventDialog from './CloseEventDialog.vue';
 import EventEditDialog from './EventEditDialog.vue';
 import EditCasualtiesDialog from './EditCasualtiesDialog.vue';
 import { download2 } from '@/utils/request';
+import PdfViewer from '@/views/knowledge/HiddenStandards/PdfViewer.vue';
+import { ref } from 'vue';
 
 const props = defineProps({
   eventId: String
@@ -276,6 +281,11 @@ const editCasualtiesDialogState = reactive({
   }
 });
 
+const detailInfo = ref({
+  file_title: '',
+  file_name: '',
+});
+
 // 开始指挥(事件)
 const handleStartEvent = () => {
   startDialogState.form.eventId = props.eventId;
@@ -345,6 +355,7 @@ const handleUpdate = () => {
   eventEditDialogState.show = true;
 };
 
+
 onMounted(() => {
   fetchEventDetail();
 });

+ 180 - 137
src/views/informationissue/informationView.vue

@@ -4,170 +4,186 @@
       <div class="common-dialog-content">
         <el-row :gutter="24">
           <el-col :span="24">
-            <div class="information-approval1">
-              <el-row :gutter="24">
-                <el-col :span="17">
-                  <div class="common-dialog-title-box">
-                    <h4 class="common-dialog-title">发送统计</h4>
-                  </div>
-                </el-col>
-                <el-col :span="6" style="text-align: right">
-                  <el-text class="common-btn-text-primary" @click="showSendDetails">发送明细</el-text>
-                </el-col>
-              </el-row>
-              <!-- 添加分割线 -->
-              <div style="border-top: 1px solid #dcdfe6; margin-top: -25px"></div>
-              <div class="common-dialog-box">
-                <div class="send-statistics">
-                  <el-row :gutter="24">
-                    <el-col :span="8">
-                      <p>选择人数 {{ formData.user_count }}</p>
-                    </el-col>
-                    <el-col :span="8">
-                      <p>成功 {{ formData.user_ok_count }} | 失败 {{ formData.user_err_count }} | 发送中 {{ formData.user_sending_count }}</p>
-                    </el-col>
-                    <el-col :span="8">
-                      <p>反馈 {{ formData.feedback_count }} | 未反馈 {{ formData.unresponsive_count }}</p>
+<!--            <div class="information-approval1" style="background-color: #ffffff; margin-bottom: 20px;">-->
+              <el-card style="margin-bottom: 20px;height: 120px">
+                <template #header>
+                  <div style="display: flex; justify-content: space-between">
+                    <div class="info-box-title" style="margin-bottom: 10px">发送统计</div>
+                    <el-col :span="6" style="text-align: right">
+                      <el-text class="common-btn-text-primary" @click="showSendDetails">发送明细</el-text>
                     </el-col>
-                  </el-row>
+                  </div>
+                </template>
+                <div class="common-dialog-box" style="margin-top: -10px;margin-left: 8px">
+                  <div class="send-statistics">
+                    <el-row :gutter="24">
+                      <div style="display: flex;margin-right: 100px">
+                        <p>选择人数&nbsp</p>
+                        <div class="statistic-info">{{ formData.user_count }}</div>
+                      </div>
+                      <div style="display: flex;margin-right: 100px">
+                        <p>成功&nbsp</p>
+                        <div class="statistic-info">{{ formData.user_ok_count }}</div>
+                        <p>&nbsp&nbsp|&nbsp&nbsp失败&nbsp</p>
+                        <div class="statistic-info">{{ formData.user_err_count }}</div>
+                        <p>&nbsp&nbsp|&nbsp&nbsp发送中&nbsp</p>
+                        <div class="statistic-info">{{ formData.user_sending_count }}</div>
+                      </div>
+                      <div style="display: flex;margin-right: 100px">
+                        <p>反馈&nbsp</p>
+                        <div class="statistic-info">{{ formData.feedback_count }}</div>
+                        <p>&nbsp&nbsp|&nbsp&nbsp未反馈&nbsp</p>
+                        <div class="statistic-info">{{ formData.unresponsive_count }}</div>
+                      </div>
+                    </el-row>
+                  </div>
                 </div>
-              </div>
-            </div>
+              </el-card>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
-            <div class="information-approval">
-              <div class="common-dialog-title-box">
-                <h3 class="common-dialog-title">信息详情</h3>
-              </div>
-              <div class="common-dialog-box">
-                <el-form ref="form" :model="formData" :rules="rules" label-width="120px">
-                  <h4>信息内容</h4>
-                  <div class="box1">
-                    <el-form-item label="标题:" prop="title">
-                      <el-input v-model="formData.title" disabled placeholder="请输入标题" style="width: 468px !important" />
-                    </el-form-item>
+            <el-card>
+              <div>
+                <div class="common-dialog-title-box">
+                  <h3 class="info-box-title">信息详情</h3>
+                </div>
+                <div class="common-dialog-box">
+                  <div class="approval-process">
+                    <el-form ref="form" :model="formData" :rules="rules" label-width="120px">
+                      <div class="box1" style="margin-top: -20px">
+                        <h4 class="common-dialog-title">信息内容</h4>
+                        <el-form-item label="标题:" prop="title">
+                          <el-input v-model="formData.title" disabled placeholder="请输入标题" style="width: 368px !important" />
+                        </el-form-item>
 
-                    <el-form-item label="信息类型:" prop="info_type">
-                      <el-select v-model="formData.info_type" disabled placeholder="请选择类型" style="width: 468px !important">
-                        <el-option v-for="option in opt_info_type" :key="option.value" :label="option.text" :value="option.value"></el-option>
-                      </el-select>
-                    </el-form-item>
+                        <el-form-item label="信息类型:" prop="info_type">
+                          <el-select v-model="formData.info_type" disabled placeholder="请选择类型" style="width: 368px !important">
+                            <el-option v-for="option in opt_info_type" :key="option.value" :label="option.text" :value="option.value"></el-option>
+                          </el-select>
+                        </el-form-item>
 
-                    <el-form-item label="发布单位:" prop="publish_group">
-                      <el-input v-model="formData.publish_group" disabled placeholder="请输入发布单位" style="width: 468px !important" />
-                    </el-form-item>
+                        <el-form-item label="发布单位:" prop="publish_group">
+                          <el-input v-model="formData.publish_group" disabled placeholder="请输入发布单位" style="width: 368px !important" />
+                        </el-form-item>
 
-                    <el-form-item label="信息模板:" prop="template_type">
-                      <el-radio-group v-model="formData.template_type" disabled>
-                        <el-radio value="0">预设模板</el-radio>
-                        <el-radio value="1">自定义模板</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
+                        <el-form-item label="信息模板:" prop="template_type">
+                          <el-radio-group v-model="formData.template_type" disabled>
+                            <el-radio value="0">预设模板</el-radio>
+                            <el-radio value="1">自定义模板</el-radio>
+                          </el-radio-group>
+                        </el-form-item>
 
-                    <el-form-item v-if="formData.template_type === '0'" label="预设模板:" prop="template_type">
-                      <el-select v-model="formData.template_id" disabled placeholder="请选择预设模板" style="width: 300px !important">
-                        <el-option v-for="option in presetTemplates" :key="option.value" :label="option.label" :value="option.value"></el-option>
-                      </el-select>
-                      <el-text class="common-btn-text-primary" @click="showTemplateExample">样例</el-text>
-                    </el-form-item>
+                        <el-form-item v-if="formData.template_type === '0'" label="预设模板:" prop="template_type">
+                          <el-select v-model="formData.template_id" disabled placeholder="请选择预设模板" style="width: 368px !important">
+                            <el-option v-for="option in presetTemplates" :key="option.value" :label="option.label" :value="option.value"></el-option>
+                          </el-select>
+                          <el-text class="common-btn-text-primary" @click="showTemplateExample">样例</el-text>
+                        </el-form-item>
 
-                    <el-form-item v-if="formData.template_type === '1'" prop="template_url">
-                      <el-input v-model="formData.template_url" placeholder="请输入自定义详情页面链接地址" style="width: 468px !important" />
-                    </el-form-item>
+                        <el-form-item v-if="formData.template_type === '1'" prop="template_url">
+                          <el-input v-model="formData.template_url" placeholder="请输入自定义详情页面链接地址" style="width: 368px !important" />
+                        </el-form-item>
 
-                    <el-form-item label="信息内容:" prop="content">
-                      <el-input
-                        v-model="formData.content"
-                        :rows="6"
-                        type="textarea"
-                        disabled
-                        placeholder="请输入信息内容"
-                        style="width: 468px !important"
-                      ></el-input>
-                    </el-form-item>
+                        <el-form-item label="信息内容:" prop="content">
+                          <el-input
+                            v-model="formData.content"
+                            :rows="6"
+                            type="textarea"
+                            disabled
+                            placeholder="请输入信息内容"
+                            style="width: 368px !important"
+                          ></el-input>
+                        </el-form-item>
 
-                    <el-form-item label="查看附件:">
-                      <div>
-                        <div v-for="(file, index) in formData.attachs" :key="index" @click="viewFile(file)" style="color: #2C81FF;text-decoration: underline;cursor:pointer">
-                          {{ index+1 }}、{{ file.name }}
-                        </div>
-                      </div>
-                    </el-form-item>
+                        <el-form-item label="查看附件:">
+                          <div>
+                            <div v-for="(file, index) in formData.attachs" :key="index" @click="viewFile(file)" style="color: #2C81FF;text-decoration: underline;cursor:pointer">
+                              {{ index+1 }}、{{ file.name }}
+                            </div>
+                          </div>
+                        </el-form-item>
 
-                  </div>
-                  <h4>推送配置</h4>
-                  <div class="box1">
+                      </div  >
 
-                    <el-form-item label="发布名单:" prop="releaseList" style="width: 468px !important"
-                      ><span class="highlight-text">已选择{{ formData.user_count }}人</span>
-                    </el-form-item>
-                    <el-row :gutter="18">
-                      <el-col :span="8">
-                        <el-form-item label="发布时间:" prop="publish_time">
-                          <el-button disabled type="default" @click="publishNow">立即发布</el-button>
+                      <div class="box1">
+                        <h4 class="common-dialog-title">推送配置</h4>
+                        <el-form-item label="发布名单:" prop="releaseList" style="width: 468px !important"
+                        ><span class="highlight-text">已选择{{ formData.user_count }}人</span>
                         </el-form-item>
-                      </el-col>
-                      <el-col :span="10">
-                        <el-form-item label="定时发布:" prop="publish_time">
-                          <el-date-picker v-model="formData.publish_time" type="datetime" disabled placeholder="选择发布时间" style="width: 400px;"></el-date-picker>
+                        <el-row :gutter="18">
+                          <el-col :span="8">
+                            <el-form-item label="发布时间:" prop="publish_time">
+                              <el-button disabled type="default" @click="publishNow">立即发布</el-button>
+                            </el-form-item>
+                          </el-col>
+                          <el-col :span="13">
+                            <el-form-item label="定时发布:" prop="publish_time">
+                              <el-date-picker v-model="formData.publish_time" type="datetime" disabled placeholder="选择发布时间" style="width: 400px;"></el-date-picker>
+                            </el-form-item>
+                          </el-col>
+                        </el-row>
+                        <el-form-item label="消息反馈方式:" prop="response_type" style="width: 488px !important">
+                          <el-select v-model="displayFeedbackText" disabled placeholder="请选择消息反馈方式"> </el-select>
                         </el-form-item>
-                      </el-col>
-                    </el-row>
-                    <el-form-item label="消息反馈方式:" prop="response_type" style="width: 468px !important">
-                      <el-select v-model="displayFeedbackText" disabled placeholder="请选择消息反馈方式"> </el-select>
-                    </el-form-item>
 
-                  </div>
-                  <h4 class="common-dialog-title">审核配置</h4>
-                  <div class="box1">
-                    <el-form-item label="审核材料:" prop="examine_attachs">
-                      <div>
-                        <div v-for="(file, index) in formData.examine_attachs" :key="index" @click="viewFile(file)" style="color: #2C81FF;text-decoration: underline;cursor:pointer">
-                          {{ index+1 }}、{{ file.name }}
-                        </div>
                       </div>
-                    </el-form-item>
-                    <el-form-item label="审核人:" prop="examine_by">
-                      <el-input v-model="formData.examine_user" disabled placeholder="请输入审核人姓名" style="width: 368px !important" />
-                    </el-form-item>
+
+                      <div class="box1">
+                        <h4 class="common-dialog-title">审核配置</h4>
+                        <el-form-item label="审核材料:" prop="examine_attachs">
+                          <div>
+                            <div v-for="(file, index) in formData.examine_attachs" :key="index" @click="viewFile(file)" style="color: #2C81FF;text-decoration: underline;cursor:pointer">
+                              {{ index+1 }}、{{ file.name }}
+                            </div>
+                          </div>
+                        </el-form-item>
+                        <el-form-item label="审核人:" prop="examine_by">
+                          <el-input v-model="formData.examine_user" disabled placeholder="请输入审核人姓名" style="width: 368px !important" />
+                        </el-form-item>
+                      </div>
+                    </el-form>
                   </div>
-                </el-form>
+                </div>
               </div>
-            </div>
+            </el-card>
+
           </el-col>
           <el-col :span="12">
-            <div class="information-approval">
-              <div class="common-dialog-title-box">
-                <h3 class="common-dialog-title">信息审批</h3>
-              </div>
-              <div class="common-dialog-box">
-                <div class="approval-process">
-                  <div class="box1">
-                    <h4>审批流程</h4>
-                    <div>
-                      <p v-if="processingTime">已用时:{{ formData.process_time }}</p>
-                    </div>
-                    <el-timeline style="width: 100%;">
-                      <template v-for="(item, index) in formData.examines" :key="index">
-                        <el-timeline-item placement="top">
-                          <el-card style="margin-top:-10px;">
-                            <h4>{{ item.examine_type }}</h4>
-                            <p v-if="item.nick_name">
-                              处理人:<span>{{ item.nick_name }}</span
+            <el-card style="height: 1148px">
+              <div>
+                <div class="common-dialog-title-box">
+                  <h3 class="info-box-title">信息审批</h3>
+                </div>
+                <div class="common-dialog-box">
+                  <div class="approval-process">
+                    <div class="box1" style="margin-top: -20px">
+                      <h4 class="common-dialog-title">审批流程</h4>
+                      <div>
+                        <p v-if="processingTime" style="margin-left: 20px">已用时:{{ formData.process_time }}</p>
+                      </div>
+                      <el-timeline style="width: 500px;">
+                        <template v-for="(item, index) in formData.examines" :key="index">
+                          <el-timeline-item placement="top" :color="getResultClass(item.examine_sub_type)">
+                            <div style="margin-top: -20px">
+                              <h4 style="font-weight: bold">{{ item.examine_type }}</h4>
+                              <p v-if="item.nick_name">
+                                处理人:<span>{{ item.nick_name }}</span
                               >&nbsp;&nbsp;&nbsp;&nbsp;时间:{{ item.examine_time }}
-                            </p>
-                            <p v-if="item.examine_sub_type">处理结果:{{ item.examine_sub_type }}</p>
-                            <p v-if="item.content">具体意见:{{ item.content }}</p>
-                          </el-card>
-                        </el-timeline-item>
-                      </template>
-                    </el-timeline>
+                              </p>
+                              <p v-if="item.examine_sub_type">处理结果:{{ item.examine_sub_type }}</p>
+                              <p v-if="item.content">具体意见:{{ item.content }}</p>
+                            </div>
+
+                          </el-timeline-item>
+                        </template>
+                      </el-timeline>
+                    </div>
                   </div>
                 </div>
               </div>
-            </div>
+            </el-card>
+
           </el-col>
         </el-row>
         <div class="common-dialog-footer">
@@ -290,6 +306,23 @@ const fetchInformation = async () => {
     console.error('Failed to fetch information:', error);
   }
 };
+const getResultClass = (examineSubType) => {
+  switch (examineSubType) {
+    case '审批通过':
+      return '#38ce7b';
+    case '提交':
+      return '#38ce7b';
+    case '审批不通过':
+      return '#ff0000';
+    case '重新提交':
+      return '#84928a';
+    case '待审核':
+      return '#84928a';
+    default:
+      return ''; // 不添加任何类
+  }
+}
+
 // 在组件挂载时调用 fetchInformation
 onMounted(() => {
   getTemplateList({}).then((res) => {
@@ -318,6 +351,7 @@ onMounted(() => {
 .common-dialog-title {
   font-size: 1.2rem;
   color: #333;
+  font-weight: bold;
 }
 
 .box1 {
@@ -337,6 +371,7 @@ onMounted(() => {
   padding: 1rem;
   box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
   border-radius: 8px;
+  background-color: #ffffff;
 }
 .information-approval1 {
   width: 100%;
@@ -363,4 +398,12 @@ onMounted(() => {
   gap: 10px; /* 按钮之间的间距 */
   margin-top: 50px;
 }
+.info-box-title {
+  font-weight: bold;
+}
+.statistic-info {
+  color: #4876b9;
+  display: flex;
+  align-items: center;
+}
 </style>

+ 1 - 1
src/views/informationissue/sendDetail.vue

@@ -4,7 +4,7 @@
       <div>
         <transition name="fade">
           <div v-show="showSearch">
-            <el-form ref="queryFormRef" :model="queryParams" label-width="100px">
+            <el-form ref="queryFormRef" :model="queryParams" label-width="100px" style="margin-left: -50px">
               <el-row :gutter="20">
                 <el-col :span="5">
                   <el-form-item label="渠道:">

+ 146 - 68
src/views/knowledge/HiddenStandards/PdfViewer.vue

@@ -1,119 +1,197 @@
 <template>
   <div class="yaxq-bottom-jcxx yawd">
     <div class="page-tool">
-      <div class="page-tool-item"  @click="lastPage">上一页</div>
-      <div class="page-tool-item">{{state.pageNum}}/{{state.numPages}}</div>
-      <div class="page-tool-item"  @click="nextPage">下一页</div>
+      <div class="page-tool-item" @click="zoomOut">缩小</div>
+      <div class="page-tool-item" @click="lastPage">上一页</div>
+      <div class="page-tool-item">{{ state.pageNum }}/{{ state.numPages }}</div>
+      <div class="page-tool-item" @click="nextPage">下一页</div>
+      <div class="page-tool-item" @click="zoomIn">放大</div>
     </div>
-    <div class="pdf-preview"  v-loading="pdfLoading" element-loading-text="正在加载中..."
-         element-loading-background="rgba(122, 122, 122, 0.0)">
-      <vue-pdf-embed v-show="show" :source="state.source" class="vue-pdf-embed" :page="state.pageNum" @loaded="handleDocument" />
+    <div class="pdf-preview"
+         v-loading="pdfLoading"
+         @mousedown="startDrag"
+         @mousemove="doDrag"
+         @mouseup="endDrag"
+         @mouseleave="endDrag">
+      <div class="pdf-container" :style="containerStyle">
+        <vue-pdf-embed
+          v-if="show"
+          :source="state.source"
+          class="vue-pdf-embed"
+          :style="{ transform: `scale(${state.scale})` }"
+          :page="state.pageNum"
+          @loaded="handleDocument" />
+      </div>
     </div>
   </div>
 </template>
 
 <script setup lang="ts">
-import { ref, onMounted } from 'vue';
+import { ref, reactive, computed, onMounted } from 'vue';
 import VuePdfEmbed from "vue-pdf-embed";
 
 const props = defineProps({
   url: String
-})
-const pdfLoading = ref<any>(false)
-let show = ref(false)
+});
+
+// PDF状态
 const state = reactive({
-  source: '', //预览pdf文件地址
-  pageNum: 1, //当前页面
-  scale: 1, // 缩放比例
-  numPages: 0, // 总页数
+  source: '' as string | undefined,
+  pageNum: 1,
+  scale: 1,
+  numPages: 0,
 });
 
-const handleDocument = (pdf:any)=>{
-  if(pdf.numPages){
-    pdfLoading.value = false
-    state.numPages = pdf.numPages;
+// 拖拽状态
+const dragState = reactive({
+  isDragging: false,
+  startX: 0,
+  startY: 0,
+  translateX: 0,
+  translateY: 0,
+  lastTranslateX: 0,
+  lastTranslateY: 0
+});
 
-  }
-}
+// 加载状态
+const pdfLoading = ref(false);
+const show = ref(false);
+
+// 容器样式计算
+const containerStyle = computed(() => ({
+  transform: `translate(${dragState.translateX}px, ${dragState.translateY}px)`,
+  cursor: dragState.isDragging ? 'grabbing' : 'grab'
+}));
+
+// 拖拽处理
+const startDrag = (e: MouseEvent) => {
+  dragState.isDragging = true;
+  dragState.startX = e.clientX - dragState.translateX;
+  dragState.startY = e.clientY - dragState.translateY;
+};
+
+const doDrag = (e: MouseEvent) => {
+  if (!dragState.isDragging) return;
+  dragState.translateX = e.clientX - dragState.startX;
+  dragState.translateY = e.clientY - dragState.startY;
+};
+
+const endDrag = () => {
+  if (!dragState.isDragging) return;
+  dragState.isDragging = false;
+  dragState.lastTranslateX = dragState.translateX;
+  dragState.lastTranslateY = dragState.translateY;
+};
+
+// 缩放功能
+const zoomOut = () => {
+  state.scale = Math.max(0.5, state.scale - 0.1);
+  resetPosition();
+};
+
+const zoomIn = () => {
+  state.scale = Math.min(3, state.scale + 0.1);
+  resetPosition();
+};
+
+// 重置位置
+const resetPosition = () => {
+  dragState.translateX = 0;
+  dragState.translateY = 0;
+  dragState.lastTranslateX = 0;
+  dragState.lastTranslateY = 0;
+};
+
+// 翻页功能
 const lastPage = () => {
   if (state.pageNum > 1) {
     state.pageNum -= 1;
+    resetPosition();
   }
-}
+};
+
 const nextPage = () => {
   if (state.pageNum < state.numPages) {
     state.pageNum += 1;
+    resetPosition();
   }
-}
+};
+
+// PDF加载完成
+const handleDocument = (pdf: any) => {
+  if (pdf.numPages) {
+    pdfLoading.value = false;
+    state.numPages = pdf.numPages;
+  }
+};
 
+// 初始化
 onMounted(() => {
-  state.source = props.url
-  show.value = true
-})
+  if (props.url) {
+    state.source = props.url;
+    pdfLoading.value = true;
+    show.value = true;
+  }
+});
 </script>
 
 <style scoped lang="scss">
-canvas {
-  border: 1px solid #ccc;
-}
-.yawd{
+.yawd {
   display: flex;
   justify-content: center;
   position: relative;
-  // overflow-y: auto;
+  height: 100%;
+
   .page-tool {
     position: fixed;
     bottom: 20px;
-    left: 0%;
-    padding-left: 15px;
-    padding-right: 15px;
+    left: 50%;
+    transform: translateX(-50%);
+    padding: 5px 15px;
     display: flex;
     align-items: center;
-    background: rgb(66, 66, 66);
+    background: #424242;
     color: white;
     border-radius: 5px;
-    z-index: 999!important;
-    cursor: pointer;
-    margin-left: 50%;
-    transform: translateX(-50%);
-  }
-  .page-tool-item {
-    font-size: 14px;
-    padding: 5px 19px;
-    padding-left: 15px;
+    z-index: 999;
     cursor: pointer;
+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+
+    &-item {
+      font-size: 14px;
+      padding: 5px 15px;
+      transition: background 0.3s;
+      border-radius: 3px;
+
+      &:hover {
+        background: rgba(255, 255, 255, 0.1);
+      }
+
+      &:not(:last-child) {
+        border-right: 1px solid rgba(255, 255, 255, 0.2);
+      }
+    }
   }
-  .pdf-preview{
+
+  .pdf-preview {
     width: 100%;
-    height: 100%;
-    overflow-y:auto;
+    height: calc(100% - 60px);
+    overflow: hidden;
     position: relative;
-    &::-webkit-scrollbar {
-      width: 1px !important;
-      /* Chrome, Safari, Edge */
-    }
+    background: #f0f0f0;
 
-    &::-webkit-scrollbar-track {
-      background: transparent !important;
-      /* 滚动条轨道背景 */
+    .pdf-container {
+      transition: transform 0.3s ease;
+      will-change: transform;
+      padding: 20px;
     }
 
-    &::-webkit-scrollbar-thumb {
-      background-color: #696969;
-      /* 滚动条滑块颜色 */
-      border-radius: 1px;
-      /* 滚动条滑块圆角 */
-      box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
-      /* 滚动条滑块阴影 */
-    }
-
-    .vue-pdf-embed{
-      width: 100%;
-      height: 100%;
-      z-index: 1!important;
-
+    .vue-pdf-embed {
+      transform-origin: 0 0;
+      user-select: none;
+      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+      background: white !important;
     }
   }
-
 }
 </style>