ソースを参照

Merge remote-tracking branch 'origin/dev' into dev

Hwf 7 ヶ月 前
コミット
d890f2558e

+ 1 - 1
package-lock.json

@@ -47,7 +47,7 @@
         "jsencrypt": "3.3.2",
         "nprogress": "0.2.0",
         "ol": "^8.0.0",
-        "pinia": "2.1.7",
+        "pinia": "^2.1.7",
         "proj4": "^2.12.1",
         "screenfull": "6.0.2",
         "uuid": "^10.0.0",

+ 1 - 1
package.json

@@ -56,7 +56,7 @@
     "jsencrypt": "3.3.2",
     "nprogress": "0.2.0",
     "ol": "^8.0.0",
-    "pinia": "2.1.7",
+    "pinia": "^2.1.7",
     "proj4": "^2.12.1",
     "screenfull": "6.0.2",
     "uuid": "^10.0.0",

+ 30 - 0
src/api/dataFilling/datafilling.ts

@@ -0,0 +1,30 @@
+import request from '@/utils/request';
+// 查询部门列表
+export function fillList(data) {
+  return request({
+    url: '/api/dataFilling/my_filling',
+    method: 'post',
+    data: data
+  });
+}
+export function fillDetail(data) {
+  return request({
+    url: '/api/dataFilling/submission_status',
+    method: 'post',
+    data: data
+  });
+}
+export function writeView(params) {
+  return request({
+    url: '/api/dataFilling/report_fields',
+    method: 'get',
+    params: params
+  });
+}
+export function submitFill(data) {
+  return request({
+    url: '/api/dataFilling/submit_data',
+    method: 'post',
+    data: data
+  });
+}

+ 44 - 45
src/permission.ts

@@ -13,51 +13,50 @@ NProgress.configure({ showSpinner: false });
 const whiteList = ['/login', '/yzylogin', '/register', '/social-callback', '/noyzyuser'];
 
 router.beforeEach(async (to, from, next) => {
-  next();
-  // NProgress.start();
-  // if (getToken()) {
-  //   to.meta.title && useSettingsStore().setTitle(to.meta.title);
-  //   /* has token*/
-  //   if (to.path === '/login') {
-  //     next({ path: '/' });
-  //     NProgress.done();
-  //   } else if (whiteList.indexOf(to.path as string) !== -1) {
-  //     next();
-  //   } else {
-  //     if (useUserStore().roles.length === 0) {
-  //       isRelogin.show = true;
-  //       // 判断当前用户是否已拉取完user_info信息
-  //       const [err] = await tos(useUserStore().getInfo());
-  //       if (err) {
-  //         await useUserStore().logout();
-  //         ElMessage.error(err);
-  //         next({ path: '/' });
-  //       } else {
-  //         isRelogin.show = false;
-  //         const accessRoutes = await usePermissionStore().generateRoutes();
-  //         // 根据roles权限生成可访问的路由表
-  //         accessRoutes.forEach((route) => {
-  //           if (!isHttp(route.path)) {
-  //             router.addRoute(route); // 动态添加可访问路由表
-  //           }
-  //         });
-  //         next({ path: to.path, replace: true, params: to.params, query: to.query, hash: to.hash, name: to.name as string }); // hack方法 确保addRoutes已完成
-  //       }
-  //     } else {
-  //       next();
-  //     }
-  //   }
-  // } else {
-  //   // 没有token
-  //   if (whiteList.indexOf(to.path as string) !== -1) {
-  //     // 在免登录白名单,直接进入
-  //     next();
-  //   } else {
-  //     const redirect = encodeURIComponent(to.fullPath || '/');
-  //     next(`/login?redirect=${redirect}`); // 否则全部重定向到登录页
-  //     NProgress.done();
-  //   }
-  // }
+  NProgress.start();
+  if (getToken()) {
+    to.meta.title && useSettingsStore().setTitle(to.meta.title);
+    /* has token*/
+    if (to.path === '/login') {
+      next({ path: '/' });
+      NProgress.done();
+    } else if (whiteList.indexOf(to.path as string) !== -1) {
+      next();
+    } else {
+      if (useUserStore().roles.length === 0) {
+        isRelogin.show = true;
+        // 判断当前用户是否已拉取完user_info信息
+        const [err] = await tos(useUserStore().getInfo());
+        if (err) {
+          await useUserStore().logout();
+          ElMessage.error(err);
+          next({ path: '/' });
+        } else {
+          isRelogin.show = false;
+          const accessRoutes = await usePermissionStore().generateRoutes();
+          // 根据roles权限生成可访问的路由表
+          accessRoutes.forEach((route) => {
+            if (!isHttp(route.path)) {
+              router.addRoute(route); // 动态添加可访问路由表
+            }
+          });
+          next({ path: to.path, replace: true, params: to.params, query: to.query, hash: to.hash, name: to.name as string }); // hack方法 确保addRoutes已完成
+        }
+      } else {
+        next();
+      }
+    }
+  } else {
+    // 没有token
+    if (whiteList.indexOf(to.path as string) !== -1) {
+      // 在免登录白名单,直接进入
+      next();
+    } else {
+      const redirect = encodeURIComponent(to.fullPath || '/');
+      next(`/login?redirect=${redirect}`); // 否则全部重定向到登录页
+      NProgress.done();
+    }
+  }
 });
 
 router.afterEach(() => {

+ 29 - 42
src/views/dataFilling/formDetail.vue

@@ -30,61 +30,30 @@
     </el-row>
   </div>
 </template>
-
 <script setup lang="ts">
 import { ref, onMounted } from 'vue';
 import { ElTable, ElButton, ElCol, ElRow, ElTableColumn } from 'element-plus';
 import * as XLSX from 'xlsx';
+import { fillDetail } from '@/api/dataFilling/datafilling';
 
 const emits = defineEmits(['close']);
+const props = defineProps<{
+  eventId: string | number;
+}>();
+
+// 更新表头以匹配新的数据结构
+const editableHeaders = ref(['员工姓名', '员工性别', '加班小时', '新的备注', '新的地址']);
+const tableData = ref([]);
 const detailData = ref({
   title: '测试表单',
-  start: '2024-10-15 17:02:22',
-  end: '2024-10-15 18:00:00'
+  start: '',
+  end: ''
 });
 
-const editableHeaders = ref(['时间', '地点', '损坏程度', '救援人员', '物资']);
-const tableData = ref([]);
-
 onMounted(() => {
-  loadFromLocalStorage();
-  addDefaultRow();
+  fetchFillDetail();
 });
 
-function loadFromLocalStorage() {
-  const storedData = localStorage.getItem('tableData');
-  if (storedData) {
-    tableData.value = JSON.parse(storedData);
-  } else {
-    tableData.value = [
-      {
-        时间: '2024-01-01',
-        地点: '某地',
-        损坏程度: '轻度',
-        救援人员: '张三, 李四',
-        物资: '食品, 水'
-      },
-      {
-        时间: '2024-01-02',
-        地点: '某地',
-        损坏程度: '中度',
-        救援人员: '王五, 赵六',
-        物资: '帐篷, 医疗用品'
-      }
-    ];
-  }
-}
-
-function addDefaultRow() {
-  tableData.value.push({
-    时间: '',
-    地点: '',
-    损坏程度: '',
-    救援人员: '',
-    物资: ''
-  });
-}
-
 const exportToExcel = () => {
   const worksheet = XLSX.utils.json_to_sheet(tableData.value);
   const workbook = { Sheets: { data: worksheet }, SheetNames: ['data'] };
@@ -98,6 +67,24 @@ const exportToExcel = () => {
   link.click();
   window.URL.revokeObjectURL(url); // 清理
 };
+
+const fetchFillDetail = async () => {
+  try {
+    const res = await fillDetail({ report_id: props.eventId });
+    tableData.value = res.data.map((item) => ({
+      '员工姓名': item.ygxm,
+      '员工性别': item.ygxb,
+      '加班小时': item.jbxs,
+      '新的备注': item.bz,
+      '新的地址': item.dz
+    }));
+    detailData.value.start = res.start_time;
+    detailData.value.end = res.end_time;
+  } catch (error) {
+    console.error('Error fetching data:', error);
+  }
+};
+
 const handleReturn = () => {
   emits('close');
 };

+ 56 - 46
src/views/dataFilling/myFilling.vue

@@ -12,8 +12,8 @@
                   </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                  <el-form-item label="任务状态:" prop="task_status">
-                    <el-radio-group v-model="queryParams.task_status">
+                  <el-form-item label="任务状态:" prop="submission_status">
+                    <el-radio-group v-model="queryParams.submission_status">
                       <el-radio value="0" size="large">待填报</el-radio>
                       <el-radio value="1" size="large">已上报</el-radio>
                     </el-radio-group>
@@ -29,14 +29,25 @@
         </transition>
         <!-- 表格组件 -->
         <el-table ref="multipleTable" v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
-          <el-table-column label="序号" align="center" prop="table_id" />
+          <el-table-column label="序号" align="center" width="80">
+            <template #default="scope">
+              {{ (queryParams.page - 1) * queryParams.pageSize + scope.$index + 1 }}
+            </template>
+          </el-table-column>
           <el-table-column label="表格名称" align="center" prop="table_name" />
-          <el-table-column label="开始日期" align="center" prop="run_time" />
-          <el-table-column label="截止填报时间" align="center" prop="filling_time" />
-          <el-table-column label="任务状态" align="center" prop="status" />
+          <el-table-column label="开始日期" align="center" prop="start_time" />
+          <el-table-column label="截止填报时间" align="center" prop="end_time" />
+          <el-table-column label="任务状态" align="center" prop="submission_status">
+            <template #default="scope">
+              <div>
+                <span v-if="Number(scope.row.submission_status) === 0">待填报</span>
+                <span v-else>已上报</span>
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
             <template #default="scope">
-              <el-text v-if="scope.row.status === '待填报'" class="common-btn-text-primary" @click="handleWrite(scope.row)">填表</el-text>
+              <el-text v-if="Number(scope.row.submission_status) === 0" class="common-btn-text-primary" @click="handleWrite(scope.row)">填表</el-text>
               <el-text class="common-btn-text-primary" @click="handleView(scope.row)">详情</el-text>
             </template>
           </el-table-column>
@@ -48,10 +59,14 @@
     <FormDetail v-if="formDetailState.show" :event-id="formDetailState.eventId" @close="handleCancel" />
   </div>
 </template>
+
 <script setup lang="ts">
 import { onMounted, reactive, ref } from 'vue';
+import { fillList } from '@/api/dataFilling/datafilling';
 import WriteForm from './writeForm.vue';
 import FormDetail from './formDetail.vue';
+import { ComponentInternalInstance, getCurrentInstance } from 'vue';
+
 const loading = ref(true);
 const showSearch = ref(true);
 const multiple = ref(true);
@@ -60,87 +75,82 @@ const single = ref(true);
 const total = ref(0);
 const tableData = ref([]);
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+
 const initFormData = reactive({
-  table_id: '',
+  report_id: '',
   table_name: '',
-  filling_time: '',
-  run_time: '',
-  task_status: ''
+  start_time: '',
+  end_time: '',
+  submission_status: []
 });
+
 const data = reactive({
   form: { ...initFormData },
   queryParams: {
     page: 1,
     pageSize: 10,
     table_name: '',
-    task_status: ''
+    submission_status: []
   }
 });
 
 const { queryParams, form } = toRefs(data);
-// 模拟数据源
-const staticData = [
-  {
-    table_id: 1,
-    table_name: '测试表单',
-    run_time: '2024-10-15',
-    filling_time: '2024-10-15 18:00:00',
-    status: '待填报'
-  },
-  {
-    table_id: 2,
-    table_name: '应急工单数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '待填报'
-  },
-  {
-    table_id: 3,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  }
-];
+
 let writeFormState = reactive({
   show: false,
   eventId: ''
 });
+
 let formDetailState = reactive({
   show: false,
   eventId: ''
 });
+
 const handleCancel = () => {
   writeFormState.show = false;
   formDetailState.show = false;
 };
+
 const handleWrite = (row) => {
   if (row) {
-    writeFormState.eventId = row.id;
+    writeFormState.eventId = row.report_id;
     writeFormState.show = true;
   }
 };
+
 const handleView = (row) => {
   if (row) {
-    formDetailState.eventId = row.id;
+    formDetailState.eventId = row.report_id;
     formDetailState.show = true;
   }
 };
-// 初始化数据
+
+const fetchFillList = () => {
+  loading.value = true;
+  fillList(queryParams.value)
+    .then((res) => {
+      tableData.value = res.data;
+      total.value = res.total;
+    })
+    .finally(() => {
+      loading.value = false;
+    });
+};
+
 onMounted(() => {
-  tableData.value = staticData;
-  total.value = staticData.length;
-  loading.value = false;
+  fetchFillList();
 });
+
 const handleQuery = () => {
-  queryParams.value.page = 1;
-  fetchWorkrData();
+  queryParams.value.page = 1; // 重置页码
+  fetchFillList(queryParams.value);
 };
-// 重置查询条件
+
 const resetQuery = () => {
-  queryParams.value = { page: 1, pageSize: 10, table_name: '', task_status: '' };
+  queryParams.value = { page: 1, pageSize: 10, table_name: '', submission_status: [] };
   handleQuery();
 };
+
 const handleSelectionChange = (selection) => {
   ids.value = selection.map((item) => item.id);
 };

+ 83 - 52
src/views/dataFilling/writeForm.vue

@@ -1,23 +1,23 @@
 <template>
   <div class="app-container p-2">
     <el-row :gutter="20">
-      <el-col :lg="30" :xs="24" style="">
+      <el-col :lg="30" :xs="24">
         <el-row :span="24" :gutter="10">
-          <el-col :span="18" label="任务名称">
-            <h2 v-if="detailData.title" key="business" style="font-weight: bolder">{{ detailData.title }}</h2>
+          <el-col :span="18">
+            <h2 v-if="detailData.title" style="font-weight: bolder">{{ detailData.title }}</h2>
             <p class="report-period">【填报周期】:{{ detailData.start }} 至 {{ detailData.end }}</p>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" @click="handleReport()"> 上报 </el-button>
+            <el-button type="primary" @click="handleReport">上报</el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" @click="exportToExcel()"> 导出表格 </el-button>
+            <el-button type="primary" @click="exportToExcel">导出表格</el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" @click="handleSave()"> 保存 </el-button>
+            <el-button type="primary" @click="handleSave">保存</el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="danger" @click="handleReturn()"> 返回 </el-button>
+            <el-button type="danger" @click="handleReturn">返回</el-button>
           </el-col>
         </el-row>
       </el-col>
@@ -26,10 +26,10 @@
           <el-button type="primary" @click="handleAdd">批量导入</el-button>
         </el-col>
         <el-col :span="1.5">
-          <el-button type="primary" @click="handleDownloadEmptyTable"> 下载空表格 </el-button>
+          <el-button type="primary" @click="handleDownloadEmptyTable">下载空表格</el-button>
         </el-col>
         <el-col :span="1.5">
-          <el-button type="primary" @click="handleAddRow"> 新增一行 </el-button>
+          <el-button type="primary" @click="handleAddRow">新增一行</el-button>
         </el-col>
       </el-row>
       <el-col :lg="30" :xs="24">
@@ -62,67 +62,67 @@
 import { ref, onMounted } from 'vue';
 import { ElTable, ElButton, ElCol, ElRow, ElTableColumn } from 'element-plus';
 import * as XLSX from 'xlsx';
+import { writeView, submitFill } from '@/api/dataFilling/datafilling';
+import { defineProps, defineEmits } from 'vue';
+
+const props = defineProps({
+  eventId: String
+});
+
 const emits = defineEmits(['close']);
+
 const detailData = ref({
   title: '测试表单',
   start: '2024-10-15 17:02:22',
   end: '2024-10-15 18:00:00'
 });
 
-const editableHeaders = ref(['时间', '地点', '损坏程度', '救援人员', '物资']);
-const tableData = ref([]);
+const editableHeaders = ref<string[]>([]);
+const tableData = ref<any[]>([]);
 
-// 初始化表格数据
-onMounted(() => {
-  loadFromLocalStorage();
-  addDefaultRow();
-});
+// 获取表头数据
+const fetchHeaders = async () => {
+  try {
+    const response = await writeView({ report_id: props.eventId });
+    if (response.code === 200) {
+      const headers = response.fields.map((field) => field.field_comment);
+      editableHeaders.value = headers;
+    } else {
+      console.error('获取表头失败:', response.msg);
+    }
+  } catch (error) {
+    console.error('请求错误:', error);
+  }
+};
 
-// 加载数据
-function loadFromLocalStorage() {
+// 初始化表格数据
+const loadFromLocalStorage = () => {
   const storedData = localStorage.getItem('tableData');
   if (storedData) {
     tableData.value = JSON.parse(storedData);
   } else {
-    tableData.value = [
-      {
-        时间: '2024-01-01',
-        地点: '某地',
-        损坏程度: '轻度',
-        救援人员: '张三, 李四',
-        物资: '食品, 水'
-      },
-      {
-        时间: '2024-01-02',
-        地点: '某地',
-        损坏程度: '中度',
-        救援人员: '王五, 赵六',
-        物资: '帐篷, 医疗用品'
-      }
-    ];
+    tableData.value = [];
   }
-}
+};
+
+const addDefaultRow = () => {
+  const newRow = {};
+  editableHeaders.value.forEach((header) => {
+    newRow[header] = '';
+  });
+  tableData.value.push(newRow);
+};
 
-function saveEdit(rowIndex, header, value) {
+const saveEdit = (rowIndex, header, value) => {
   tableData.value[rowIndex][header] = value;
-}
+};
 
-function saveHeader(header, newValue) {
+const saveHeader = (header, newValue) => {
   const index = editableHeaders.value.indexOf(header);
   if (index !== -1) {
     editableHeaders.value.splice(index, 1, newValue);
   }
-}
-
-function addDefaultRow() {
-  tableData.value.push({
-    时间: '',
-    地点: '',
-    损坏程度: '',
-    救援人员: '',
-    物资: ''
-  });
-}
+};
 
 const exportToExcel = () => {
   const worksheet = XLSX.utils.json_to_sheet(tableData.value);
@@ -141,16 +141,47 @@ const exportToExcel = () => {
 const handleAdd = () => console.log('批量导入');
 const handleDownloadEmptyTable = () => console.log('下载空表格');
 const handleAddRow = () => addDefaultRow();
-const handleReport = () => console.log('上报');
-
 const handleSave = () => {
-  // 保存本地状态
   localStorage.setItem('tableData', JSON.stringify(tableData.value));
   alert('数据已保存');
 };
 const handleReturn = () => {
   emits('close');
 };
+const handleReport = async () => {
+  try {
+    const mappedData = tableData.value.map((row) => {
+      const mappedRow: any = {};
+      editableHeaders.value.forEach((header) => {
+        if (row[header.field_name] !== undefined) {
+          mappedRow[header.field_name] = row[header.field_name];
+        }
+      });
+      return mappedRow;
+    });
+
+    const data = {
+      report_id: props.eventId,
+      data: mappedData
+    };
+
+    const response = await submitFill(data);
+    if (response.code === 200) {
+      alert('数据上报成功');
+    } else {
+      alert('数据上报失败: ' + response.msg);
+    }
+  } catch (error) {
+    console.error('上报数据时发生错误:', error);
+    alert('数据上报失败,请稍后再试');
+  }
+};
+// 组件挂载时调用
+onMounted(() => {
+  loadFromLocalStorage();
+  fetchHeaders();
+  addDefaultRow();
+});
 </script>
 
 <style scoped>

+ 12 - 16
src/views/informationissue/informationList.vue

@@ -3,37 +3,35 @@
     <div v-show="!informationDetailState.show && !informationViewState.show && !informationApprovalState.show">
       <transition name="fade">
         <div v-show="showSearch">
-          <el-form ref="queryFormRef" :model="queryParams" label-width="100px">
+          <el-form ref="queryFormRef" :model="queryParams" label-width="auto">
             <el-row :gutter="20">
-              <el-col :span="7">
+              <el-col :span="8">
                 <el-segmented v-model="queryParams.dispose_status" :options="disposeStatusOptions" size="large" block @change="handleDisposeStatus" />
               </el-col>
             </el-row>
-            <el-row :gutter="20">
-              <el-col :span="5">
+            <el-row :gutter="24">
+              <el-col :span="6">
                 <el-form-item label="发布单位:">
                   <el-input v-model="queryParams.publish_group" placeholder="请输入内容" clearable></el-input>
                 </el-form-item>
               </el-col>
-              <el-col :span="5">
+              <el-col :span="6">
                 <el-form-item label="发布状态:">
                   <el-select v-model="queryParams.publish_status" placeholder="请选择">
                     <el-option v-for="item in publishStatusOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
-              <el-col :span="5">
+              <el-col :span="6">
                 <el-form-item label="审批状态:">
                   <el-select v-model="queryParams.examine_status" placeholder="请选择">
                     <el-option v-for="item in approvalStatusOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
-              <el-col :span="4">
-                <el-form-item>
-                  <el-button type="primary" @click="handleSearch">查询</el-button>
-                  <el-button @click="resetSearch">重置</el-button>
-                </el-form-item>
+              <el-col :span="5">
+                <el-button type="primary" @click="handleSearch">查询</el-button>
+                <el-button @click="resetSearch">重置</el-button>
               </el-col>
             </el-row>
           </el-form>
@@ -220,7 +218,7 @@ let informationApprovalState = reactive({
 
 const handleView = (row) => {
   if (row) {
-    informationViewState.eventId = row.id+""; // 假设eventId是id字段
+    informationViewState.eventId = row.id + ''; // 假设eventId是id字段
     informationViewState.show = true;
   }
 };
@@ -233,7 +231,7 @@ const handleUpdate = (row) => {
 
 const handleApproval = (row) => {
   if (row) {
-    informationApprovalState.eventId = row.id+""; // 假设eventId是id字段
+    informationApprovalState.eventId = row.id + ''; // 假设eventId是id字段
     informationApprovalState.show = true;
   }
 };
@@ -285,6 +283,4 @@ onMounted(() => {
 });
 </script>
 
-<style scoped>
-/* Add your custom styles here */
-</style>
+<style scoped></style>

+ 1 - 1
src/views/inspectionWork/patrolSubResult.vue

@@ -75,7 +75,7 @@
 </template>
 <script setup lang="ts">
 import { onMounted, reactive, ref } from 'vue';
-import { inspectorDivision, resultList, } from '@/api/inspectionWork/inspector';
+import { inspectorDivision, resultList } from '@/api/inspectionWork/inspector';
 import { ElMessage } from 'element-plus';
 const baseUrl = import.meta.env.VITE_APP_BASE_API;
 const downLoadApi = import.meta.env.VITE_APP_BASE_DOWNLOAD_API;

+ 1 - 1
src/views/system/dict/data.vue

@@ -77,7 +77,7 @@
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-text v-hasPermi="['system:menu:edit']" class="common-btn-text-primary" @click="handleUpdate(scope.row)">修改</el-text>
-            <el-text v-hasPermi="['system:menu:remove']" class="common-btn-text-danger" @click="handleDelete(scope.row)">删除</el-text>
+            <!--            <el-text v-hasPermi="['system:menu:remove']" class="common-btn-text-danger" @click="handleDelete(scope.row)">删除</el-text>-->
           </template>
         </el-table-column>
       </el-table>

+ 6 - 6
src/views/system/dict/index.vue

@@ -51,12 +51,12 @@
             删除
           </el-button>
         </el-col>
-        <el-col :span="1.5">
-          <el-button v-hasPermi="['system:dict:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>
-        </el-col>
-        <el-col :span="1.5">
-          <el-button v-hasPermi="['system:dict:remove']" type="danger" plain icon="Refresh" @click="handleRefreshCache">刷新缓存</el-button>
-        </el-col>
+        <!--        <el-col :span="1.5">-->
+        <!--          <el-button v-hasPermi="['system:dict:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>-->
+        <!--        </el-col>-->
+        <!--        <el-col :span="1.5">-->
+        <!--          <el-button v-hasPermi="['system:dict:remove']" type="danger" plain icon="Refresh" @click="handleRefreshCache">刷新缓存</el-button>-->
+        <!--        </el-col>-->
         <!--      <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>-->
       </el-row>