Procházet zdrojové kódy

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

Hwf před 1 měsícem
rodič
revize
a697ed244a

+ 2 - 1
src/api/monitor/operlog/index.ts

@@ -5,7 +5,8 @@ import { AxiosPromise } from 'axios';
 // 查询操作日志列表
 export function list(query: OperLogQuery): AxiosPromise<OperLogVO[]> {
   return request({
-    url: '/monitor/operlog/list',
+    // url: '/api/monitor/operlog/list',
+    url: '/api/system/czrz/list',
     method: 'get',
     params: query
   });

+ 19 - 11
src/views/comprehensiveGuarantee/reliefResourceManagement/rescueUnit.vue

@@ -16,22 +16,22 @@
       </el-row>
       <!-- 表格组件 -->
       <el-table ref="multipleTable" v-loading="loading" :data="tableData" style="width: 100%">
-        <el-table-column label="队伍名称" align="center" prop="" fixed="left" />
+        <el-table-column label="队伍名称" align="center" prop="name" fixed="left" />
         <el-table-column label="队伍类型" align="center" prop="category" fixed="left" />
-        <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="unit_prop" />
+        <el-table-column label="队伍级别" align="center" prop="unit_level" />
+        <el-table-column label="队伍特长" align="center" prop="unit_favor" />
         <el-table-column label="队伍人数" align="center" prop="team_size" />
         <el-table-column label="值班电话" align="center" prop="contact_number" />
         <el-table-column label="主管单位" align="center" prop="supervisor_unit" />
-        <el-table-column label="主管单位联系人" align="center" prop="" />
-        <el-table-column label="主管单位联系人电话" align="center" prop="" />
+        <el-table-column label="主管单位联系人" align="center" prop="supervisor_unit_contact" />
+        <el-table-column label="主管单位联系人电话" align="center" prop="supervisor_unit_phone" />
         <el-table-column label="队伍负责人" align="center" prop="responsible_person" />
-        <el-table-column label="队伍负责人移动电话" align="center" prop="" />
+        <el-table-column label="队伍负责人移动电话" align="center" prop="responsible_person_phone" />
         <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="area" />
+        <el-table-column label="成立时间" align="center" prop="founding_time" />
+        <el-table-column label="新增时间" align="center" prop="add_time" />
 
 <!--        <el-table-column label="救援人员单位" align="center" prop="name" />-->
 <!--        <el-table-column label="负责人职务" align="center" prop="position" />-->
@@ -93,7 +93,15 @@ const initFormData = reactive({
   team_size: '',
   longitude: '',
   latitude: '',
-  supervisor_unit: ''
+  supervisor_unit: '',
+  unit_prop: '',
+  unit_level: '',
+  unit_favor: '',
+  supervisor_unit_phone: '',
+  supervisor_unit_contact: '',
+  responsible_person_phone: '',
+  area: '',
+  founding_time: ''
 });
 
 const data = reactive({

+ 29 - 21
src/views/comprehensiveGuarantee/reliefResourceManagement/rescueUnitEdit.vue

@@ -12,35 +12,35 @@
           <el-form-item label="队伍类型:" prop="category">
             <el-input v-model="formData.category" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="队伍属性:" prop="category">
-            <el-input v-model="formData.category" style="width: 468px !important" />
+          <el-form-item label="队伍属性:" prop="unit_prop">
+            <el-input v-model="formData.unit_prop" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="队伍级别:" prop="category">
-            <el-input v-model="formData.category" style="width: 468px !important" />
+          <el-form-item label="队伍级别:" prop="unit_level">
+            <el-input v-model="formData.unit_level" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="队伍特长:" prop="category">
-            <el-input v-model="formData.category" style="width: 468px !important" />
+          <el-form-item label="队伍特长:" prop="unit_favor">
+            <el-input v-model="formData.unit_favor" style="width: 468px !important" />
           </el-form-item>
           <el-form-item label="队伍人数:" prop="team_size">
             <el-input v-model="formData.team_size" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="值班电话:" prop="team_size">
-            <el-input v-model="formData.team_size" style="width: 468px !important" />
+          <el-form-item label="值班电话:" prop="contact_number">
+            <el-input v-model="formData.contact_number" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="主管单位:" prop="team_size">
-            <el-input v-model="formData.team_size" style="width: 468px !important" />
+          <el-form-item label="主管单位:" prop="supervisor_unit">
+            <el-input v-model="formData.supervisor_unit" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="主管单位联系人:" prop="team_size">
-            <el-input v-model="formData.team_size" style="width: 468px !important" />
+          <el-form-item label="主管单位联系人:" prop="supervisor_unit_contact">
+            <el-input v-model="formData.supervisor_unit_contact" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="主管单位联系人电话:" prop="team_size">
-            <el-input v-model="formData.team_size" style="width: 468px !important" />
+          <el-form-item label="主管单位联系人电话:" prop="supervisor_unit_phone">
+            <el-input v-model="formData.supervisor_unit_phone" style="width: 468px !important" />
           </el-form-item>
           <el-form-item label="队伍负责人:" prop="responsible_person">
             <el-input v-model="formData.responsible_person" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="队伍负责人移动电话:" prop="responsible_person">
-            <el-input v-model="formData.responsible_person" style="width: 468px !important" />
+          <el-form-item label="队伍负责人移动电话:" prop="responsible_person_phone">
+            <el-input v-model="formData.responsible_person_phone" style="width: 468px !important" />
           </el-form-item>
           <el-form-item label="队伍所在地址:" prop="address">
             <el-input v-model="formData.address" placeholder="请输入地址" style="width: 468px !important" readonly>
@@ -49,11 +49,11 @@
               </template>
             </el-input>
           </el-form-item>
-          <el-form-item label="所属行政区域:" prop="responsible_person">
-            <el-input v-model="formData.responsible_person" style="width: 468px !important" />
+          <el-form-item label="所属行政区域:" prop="area">
+            <el-input v-model="formData.area" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="成立时间:" prop="responsible_person">
-            <el-input v-model="formData.responsible_person" style="width: 468px !important" />
+          <el-form-item label="成立时间:" prop="founding_time">
+            <el-input v-model="formData.founding_time" style="width: 468px !important" />
           </el-form-item>
 
           <!--          <el-form-item label="联系电话:" prop="contact_number">-->
@@ -111,7 +111,15 @@ const formData = ref({
   team_size: '',
   longitude: '',
   latitude: '',
-  supervisor_unit: ''
+  supervisor_unit: '',
+  unit_prop: '',
+  unit_level: '',
+  unit_favor: '',
+  supervisor_unit_phone: '',
+  supervisor_unit_contact: '',
+  responsible_person_phone: '',
+  area: '',
+  founding_time: ''
 });
 
 const rules = ref({

+ 29 - 21
src/views/comprehensiveGuarantee/reliefResourceManagement/rescueUnitView.vue

@@ -12,35 +12,35 @@
           <el-form-item label="队伍类型:" prop="category">
             <el-input v-model="formData.category" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="队伍属性:" prop="category">
-            <el-input v-model="formData.category" style="width: 468px !important" />
+          <el-form-item label="队伍属性:" prop="unit_prop">
+            <el-input v-model="formData.unit_prop" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="队伍级别:" prop="category">
-            <el-input v-model="formData.category" style="width: 468px !important" />
+          <el-form-item label="队伍级别:" prop="unit_level">
+            <el-input v-model="formData.unit_level" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="队伍特长:" prop="category">
-            <el-input v-model="formData.category" style="width: 468px !important" />
+          <el-form-item label="队伍特长:" prop="unit_favor">
+            <el-input v-model="formData.unit_favor" style="width: 468px !important" />
           </el-form-item>
           <el-form-item label="队伍人数:" prop="team_size">
             <el-input v-model="formData.team_size" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="值班电话:" prop="team_size">
-            <el-input v-model="formData.team_size" style="width: 468px !important" />
+          <el-form-item label="值班电话:" prop="contact_number">
+            <el-input v-model="formData.contact_number" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="主管单位:" prop="team_size">
-            <el-input v-model="formData.team_size" style="width: 468px !important" />
+          <el-form-item label="主管单位:" prop="supervisor_unit">
+            <el-input v-model="formData.supervisor_unit" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="主管单位联系人:" prop="team_size">
-            <el-input v-model="formData.team_size" style="width: 468px !important" />
+          <el-form-item label="主管单位联系人:" prop="supervisor_unit_contact">
+            <el-input v-model="formData.supervisor_unit_contact" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="主管单位联系人电话:" prop="team_size">
-            <el-input v-model="formData.team_size" style="width: 468px !important" />
+          <el-form-item label="主管单位联系人电话:" prop="supervisor_unit_phone">
+            <el-input v-model="formData.supervisor_unit_phone" style="width: 468px !important" />
           </el-form-item>
           <el-form-item label="队伍负责人:" prop="responsible_person">
             <el-input v-model="formData.responsible_person" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="队伍负责人移动电话:" prop="responsible_person">
-            <el-input v-model="formData.responsible_person" style="width: 468px !important" />
+          <el-form-item label="队伍负责人移动电话:" prop="responsible_person_phone">
+            <el-input v-model="formData.responsible_person_phone" style="width: 468px !important" />
           </el-form-item>
           <el-form-item label="队伍所在地址:" prop="address">
             <el-input v-model="formData.address" placeholder="请输入地址" style="width: 468px !important" readonly>
@@ -49,11 +49,11 @@
               </template>
             </el-input>
           </el-form-item>
-          <el-form-item label="所属行政区域:" prop="responsible_person">
-            <el-input v-model="formData.responsible_person" style="width: 468px !important" />
+          <el-form-item label="所属行政区域:" prop="area">
+            <el-input v-model="formData.area" style="width: 468px !important" />
           </el-form-item>
-          <el-form-item label="成立时间:" prop="responsible_person">
-            <el-input v-model="formData.responsible_person" style="width: 468px !important" />
+          <el-form-item label="成立时间:" prop="founding_time">
+            <el-input v-model="formData.founding_time" style="width: 468px !important" />
           </el-form-item>
 
           <!--          <el-form-item label="联系电话:" prop="contact_number">-->
@@ -108,7 +108,15 @@ const formData = ref({
   team_size: '',
   longitude: '',
   latitude: '',
-  supervisor_unit: ''
+  supervisor_unit: '',
+  unit_prop: '',
+  unit_level: '',
+  unit_favor: '',
+  supervisor_unit_phone: '',
+  supervisor_unit_contact: '',
+  responsible_person_phone: '',
+  area: '',
+  founding_time: ''
 });
 
 const closeDialog = () => {

+ 30 - 13
src/views/login.vue

@@ -74,7 +74,7 @@ const ca_username = ref('');
 const szcaPki = ref(null);
 
 // '粤政易扫码登录',
-const tabs = reactive(['账号密码登录', '粤政易登录', 'CA证书登录']);
+const tabs = ref(['账号密码登录', '粤政易登录', 'CA证书登录']);
 const loginForm = ref<LoginData>({
   tenantId: '000000',
   username: '',
@@ -101,6 +101,7 @@ const tenantEnabled = ref(true);
 // 注册开关
 const register = ref(false);
 const redirect = ref(undefined);
+const gmEnable = ref(false);
 const loginRef = ref<ElFormInstance>();
 // 租户列表
 const tenantList = ref<TenantVO[]>([]);
@@ -109,6 +110,7 @@ watch(
   () => router.currentRoute.value,
   (newRoute: any) => {
     redirect.value = newRoute.query && newRoute.query.redirect;
+    gmEnable.value = window.location.hostname === '19.155.220.2';
   },
   { immediate: true }
 );
@@ -298,23 +300,38 @@ const doSocialLogin = (type: string) => {
 };
 
 const handleTab = (tab) => {
-  if(tab == 0) {
-    tabActive.value = tab;
-  }
-  else if(tab == 1) {
-    
-    // const redirect_uri = encodeURIComponent(import.meta.env.YZY_REDIRECT_URI);
-    // const tyrz_url = import.meta.env.YZY_TYRZ_URL + redirect_uri;
-    const redirect_uri = encodeURIComponent("http://19.155.220.206:8086/tyrz/login?src=yjzp&redirect="+redirect.value);
-    const tyrz_url = "https://xtbg.digitalgd.com.cn/zwrz/rz/sso/oauth/authorize?response_type=code&scope=all&client_id=zwrz_mmzhyj&redirect_uri="+redirect_uri;
-    window.location.href = tyrz_url;
+  if(gmEnable.value) {
+    if(tab == 1) {
+      // const redirect_uri = encodeURIComponent(import.meta.env.YZY_REDIRECT_URI);
+      // const tyrz_url = import.meta.env.YZY_TYRZ_URL + redirect_uri;
+      const redirect_uri = encodeURIComponent("http://19.155.220.206:8086/tyrz/login?src=yjzp&redirect="+redirect.value);
+      const tyrz_url = "https://xtbg.digitalgd.com.cn/zwrz/rz/sso/oauth/authorize?response_type=code&scope=all&client_id=zwrz_mmzhyj&redirect_uri="+redirect_uri;
+      window.location.href = tyrz_url;
+    }
   }
-  else if(tab == 2) {
-    tabActive.value = tab;
+  else {
+    if(tab == 0) {
+      tabActive.value = tab;
+    }
+    else if(tab == 1) {
+      
+      // const redirect_uri = encodeURIComponent(import.meta.env.YZY_REDIRECT_URI);
+      // const tyrz_url = import.meta.env.YZY_TYRZ_URL + redirect_uri;
+      const redirect_uri = encodeURIComponent("http://19.155.220.206:8086/tyrz/login?src=yjzp&redirect="+redirect.value);
+      const tyrz_url = "https://xtbg.digitalgd.com.cn/zwrz/rz/sso/oauth/authorize?response_type=code&scope=all&client_id=zwrz_mmzhyj&redirect_uri="+redirect_uri;
+      window.location.href = tyrz_url;
+    }
+    else if(tab == 2) {
+      tabActive.value = tab;
+    }
   }
 }
 
 onMounted(() => {
+  if(gmEnable.value) {
+    tabs.value = ['CA证书登录', '粤政易登录'];
+    tabActive.value = 2;
+  }
   getCode();
   initTenantList();
   getLoginData();

+ 300 - 0
src/views/monitor/operlog/index.bak

@@ -0,0 +1,300 @@
+<template>
+  <div class="app-container">
+    <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
+      <div v-show="showSearch" class="mb-[10px]">
+          <el-form ref="queryFormRef" :model="queryParams" :inline="true">
+            <el-form-item label="操作地址" prop="operIp">
+              <el-input v-model="queryParams.operIp" placeholder="请输入操作地址" clearable @keyup.enter="handleQuery" />
+            </el-form-item>
+            <el-form-item label="系统模块" prop="title">
+              <el-input v-model="queryParams.title" placeholder="请输入系统模块" clearable @keyup.enter="handleQuery" />
+            </el-form-item>
+            <el-form-item label="操作人员" prop="operName">
+              <el-input v-model="queryParams.operName" placeholder="请输入操作人员" clearable @keyup.enter="handleQuery" />
+            </el-form-item>
+            <el-form-item label="类型" prop="businessType">
+              <el-select v-model="queryParams.businessType" placeholder="操作类型" clearable>
+                <el-option v-for="dict in sys_oper_type" :key="dict.value" :label="dict.label" :value="dict.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="状态" prop="status">
+              <el-select v-model="queryParams.status" placeholder="操作状态" clearable>
+                <el-option v-for="dict in sys_common_status" :key="dict.value" :label="dict.label" :value="dict.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="操作时间" style="width: 308px">
+              <el-date-picker
+                v-model="dateRange"
+                value-format="YYYY-MM-DD HH:mm:ss"
+                type="daterange"
+                range-separator="-"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
+              ></el-date-picker>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+              <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+            </el-form-item>
+          </el-form>
+      </div>
+    </transition>
+
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button v-hasPermi="['monitor:operlog:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()">
+              删除
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button v-hasPermi="['monitor:operlog:remove']" type="danger" plain icon="WarnTriangleFilled" @click="handleClean">清空</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button v-hasPermi="['monitor:operlog:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>
+          </el-col>
+          <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>
+        </el-row>
+
+      <el-table
+        ref="operLogTableRef"
+        v-loading="loading"
+        :data="operlogList"
+        :default-sort="defaultSort"
+        @selection-change="handleSelectionChange"
+        @sort-change="handleSortChange"
+      >
+        <el-table-column type="selection" width="50" align="center" />
+        <el-table-column label="日志编号" align="center" prop="operId" />
+        <el-table-column label="系统模块" align="center" prop="title" :show-overflow-tooltip="true" />
+        <el-table-column label="操作类型" align="center" prop="businessType">
+          <template #default="scope">
+            <dict-tag :options="sys_oper_type" :value="scope.row.businessType" />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="操作人员"
+          align="center"
+          width="110"
+          prop="operName"
+          :show-overflow-tooltip="true"
+          sortable="custom"
+          :sort-orders="['descending', 'ascending']"
+        />
+        <el-table-column label="部门" align="center" prop="deptName" width="130" :show-overflow-tooltip="true" />
+        <el-table-column label="操作地址" align="center" prop="operIp" width="130" :show-overflow-tooltip="true" />
+        <el-table-column label="操作状态" align="center" prop="status">
+          <template #default="scope">
+            <dict-tag :options="sys_common_status" :value="scope.row.status" />
+          </template>
+        </el-table-column>
+        <el-table-column label="操作日期" align="center" prop="operTime" width="180" sortable="custom" :sort-orders="['descending', 'ascending']">
+          <template #default="scope">
+            <span>{{ parseTime(scope.row.operTime) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="消耗时间"
+          align="center"
+          prop="costTime"
+          width="110"
+          :show-overflow-tooltip="true"
+          sortable="custom"
+          :sort-orders="['descending', 'ascending']"
+        >
+          <template #default="scope">
+            <span>{{ scope.row.costTime }}毫秒</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
+          <template #default="scope">
+            <el-tooltip content="详细" placement="top">
+              <el-button v-hasPermi="['monitor:operlog:query']" link type="primary" icon="View" @click="handleView(scope.row)"> </el-button>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination v-show="total > 0" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
+
+    <!-- 操作日志详细 -->
+    <el-dialog v-model="dialog.visible" title="操作日志详细" width="700px" append-to-body>
+      <el-form :model="form" label-width="100px">
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="登录信息:">{{ form.operName }} / {{ form.deptName }} / {{ form.operIp }} / {{ form.operLocation }}</el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="请求信息:">{{ form.requestMethod }} {{ form.operUrl }}</el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="操作模块:">{{ form.title }} / {{ typeFormat(form) }}</el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="操作方法:">{{ form.method }}</el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="请求参数:">{{ form.operParam }}</el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="返回参数:">{{ form.jsonResult }}</el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="操作状态:">
+              <div v-if="form.status === 0">正常</div>
+              <div v-else-if="form.status === 1">失败</div>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="消耗时间:">{{ form.costTime }}毫秒</el-form-item>
+          </el-col>
+          <el-col :span="10">
+            <el-form-item label="操作时间:">{{ parseTime(form.operTime) }}</el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item v-if="form.status === 1" label="异常信息:">{{ form.errorMsg }}</el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="dialog.visible = false">关 闭</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Operlog" lang="ts">
+import { list, delOperlog, cleanOperlog } from '@/api/monitor/operlog';
+import { OperLogForm, OperLogQuery, OperLogVO } from '@/api/monitor/operlog/types';
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { sys_oper_type, sys_common_status } = toRefs<any>(proxy?.useDict('sys_oper_type', 'sys_common_status'));
+
+const operlogList = ref<OperLogVO[]>([]);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref<Array<number | string>>([]);
+const multiple = ref(true);
+const total = ref(0);
+const dateRange = ref<[DateModelType, DateModelType]>(['', '']);
+const defaultSort = ref<any>({ prop: 'operTime', order: 'descending' });
+
+const operLogTableRef = ref<ElTableInstance>();
+const queryFormRef = ref<ElFormInstance>();
+
+const dialog = reactive<DialogOption>({
+  visible: false,
+  title: ''
+});
+
+const data = reactive<PageData<OperLogForm, OperLogQuery>>({
+  form: {
+    operId: undefined,
+    tenantId: undefined,
+    title: '',
+    businessType: 0,
+    businessTypes: undefined,
+    method: '',
+    requestMethod: '',
+    operatorType: 0,
+    operName: '',
+    deptName: '',
+    operUrl: '',
+    operIp: '',
+    operLocation: '',
+    operParam: '',
+    jsonResult: '',
+    status: 0,
+    errorMsg: '',
+    operTime: '',
+    costTime: 0
+  },
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    operIp: '',
+    title: '',
+    operName: '',
+    businessType: '',
+    status: '',
+    orderByColumn: defaultSort.value.prop,
+    isAsc: defaultSort.value.order
+  },
+  rules: {}
+});
+
+const { queryParams, form } = toRefs(data);
+
+/** 查询登录日志 */
+const getList = async () => {
+  loading.value = true;
+  const res = await list(proxy?.addDateRange(queryParams.value, dateRange.value));
+  operlogList.value = res.rows;
+  total.value = res.total;
+  loading.value = false;
+};
+/** 操作日志类型字典翻译 */
+const typeFormat = (row: OperLogForm) => {
+  return proxy?.selectDictLabel(sys_oper_type.value, row.businessType);
+};
+/** 搜索按钮操作 */
+const handleQuery = () => {
+  queryParams.value.pageNum = 1;
+  getList();
+};
+/** 重置按钮操作 */
+const resetQuery = () => {
+  dateRange.value = ['', ''];
+  queryFormRef.value?.resetFields();
+  queryParams.value.pageNum = 1;
+  operLogTableRef.value?.sort(defaultSort.value.prop, defaultSort.value.order);
+};
+/** 多选框选中数据 */
+const handleSelectionChange = (selection: OperLogVO[]) => {
+  ids.value = selection.map((item) => item.operId);
+  multiple.value = !selection.length;
+};
+/** 排序触发事件 */
+const handleSortChange = (column: any) => {
+  queryParams.value.orderByColumn = column.prop;
+  queryParams.value.isAsc = column.order;
+  getList();
+};
+/** 详细按钮操作 */
+const handleView = (row: OperLogVO) => {
+  dialog.visible = true;
+  form.value = row;
+};
+/** 删除按钮操作 */
+const handleDelete = async (row?: OperLogVO) => {
+  const operIds = row?.operId || ids.value;
+  await proxy?.$modal.confirm('是否确认删除日志编号为"' + operIds + '"的数据项?');
+  await delOperlog(operIds);
+  await getList();
+  proxy?.$modal.msgSuccess('删除成功');
+};
+
+/** 清空按钮操作 */
+const handleClean = async () => {
+  await proxy?.$modal.confirm('是否确认清空所有操作日志数据项?');
+  await cleanOperlog();
+  await getList();
+  proxy?.$modal.msgSuccess('清空成功');
+};
+
+/** 导出按钮操作 */
+const handleExport = () => {
+  proxy?.download(
+    'monitor/operlog/export',
+    {
+      ...queryParams.value
+    },
+    `config_${new Date().getTime()}.xlsx`
+  );
+};
+onMounted(() => {
+  getList();
+});
+</script>

+ 21 - 57
src/views/monitor/operlog/index.vue

@@ -2,27 +2,19 @@
   <div class="app-container">
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
       <div v-show="showSearch" class="mb-[10px]">
-          <el-form ref="queryFormRef" :model="queryParams" :inline="true">
-            <el-form-item label="操作地址" prop="operIp">
+          <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="auto">
+            <el-form-item label="操作地址" prop="operIp">
               <el-input v-model="queryParams.operIp" placeholder="请输入操作地址" clearable @keyup.enter="handleQuery" />
             </el-form-item>
-            <el-form-item label="系统模块" prop="title">
-              <el-input v-model="queryParams.title" placeholder="请输入系统模块" clearable @keyup.enter="handleQuery" />
-            </el-form-item>
-            <el-form-item label="操作人员" prop="operName">
+            <el-form-item label="操作人员:" prop="operName">
               <el-input v-model="queryParams.operName" placeholder="请输入操作人员" clearable @keyup.enter="handleQuery" />
             </el-form-item>
-            <el-form-item label="类型" prop="businessType">
+            <!-- el-form-item label="类型:" prop="businessType">
               <el-select v-model="queryParams.businessType" placeholder="操作类型" clearable>
                 <el-option v-for="dict in sys_oper_type" :key="dict.value" :label="dict.label" :value="dict.value" />
               </el-select>
-            </el-form-item>
-            <el-form-item label="状态" prop="status">
-              <el-select v-model="queryParams.status" placeholder="操作状态" clearable>
-                <el-option v-for="dict in sys_common_status" :key="dict.value" :label="dict.label" :value="dict.value" />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="操作时间" style="width: 308px">
+            </el-form-item -->
+            <el-form-item label="操作时间:" style="width: 308px">
               <el-date-picker
                 v-model="dateRange"
                 value-format="YYYY-MM-DD HH:mm:ss"
@@ -40,7 +32,7 @@
           </el-form>
       </div>
     </transition>
-
+      <!--
         <el-row :gutter="10" class="mb8">
           <el-col :span="1.5">
             <el-button v-hasPermi="['monitor:operlog:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()">
@@ -55,63 +47,28 @@
           </el-col>
           <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>
         </el-row>
-
+      -->
       <el-table
         ref="operLogTableRef"
         v-loading="loading"
         :data="operlogList"
-        :default-sort="defaultSort"
+        
         @selection-change="handleSelectionChange"
         @sort-change="handleSortChange"
       >
-        <el-table-column type="selection" width="50" align="center" />
-        <el-table-column label="日志编号" align="center" prop="operId" />
-        <el-table-column label="系统模块" align="center" prop="title" :show-overflow-tooltip="true" />
-        <el-table-column label="操作类型" align="center" prop="businessType">
-          <template #default="scope">
-            <dict-tag :options="sys_oper_type" :value="scope.row.businessType" />
-          </template>
+        <el-table-column align="center" type="index">
         </el-table-column>
+        <el-table-column label="操作类型" align="center" prop="title" />
         <el-table-column
           label="操作人员"
           align="center"
           width="110"
           prop="operName"
           :show-overflow-tooltip="true"
-          sortable="custom"
-          :sort-orders="['descending', 'ascending']"
         />
-        <el-table-column label="部门" align="center" prop="deptName" width="130" :show-overflow-tooltip="true" />
         <el-table-column label="操作地址" align="center" prop="operIp" width="130" :show-overflow-tooltip="true" />
-        <el-table-column label="操作状态" align="center" prop="status">
-          <template #default="scope">
-            <dict-tag :options="sys_common_status" :value="scope.row.status" />
-          </template>
-        </el-table-column>
-        <el-table-column label="操作日期" align="center" prop="operTime" width="180" sortable="custom" :sort-orders="['descending', 'ascending']">
-          <template #default="scope">
-            <span>{{ parseTime(scope.row.operTime) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="消耗时间"
-          align="center"
-          prop="costTime"
-          width="110"
-          :show-overflow-tooltip="true"
-          sortable="custom"
-          :sort-orders="['descending', 'ascending']"
-        >
-          <template #default="scope">
-            <span>{{ scope.row.costTime }}毫秒</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
-          <template #default="scope">
-            <el-tooltip content="详细" placement="top">
-              <el-button v-hasPermi="['monitor:operlog:query']" link type="primary" icon="View" @click="handleView(scope.row)"> </el-button>
-            </el-tooltip>
-          </template>
+        <el-table-column label="操作内容" align="center" prop="czrz" :min-width="230" :show-overflow-tooltip="true" />
+        <el-table-column label="操作日期" align="center" prop="operTime" width="180">
         </el-table-column>
       </el-table>
 
@@ -230,7 +187,14 @@ const { queryParams, form } = toRefs(data);
 /** 查询登录日志 */
 const getList = async () => {
   loading.value = true;
-  const res = await list(proxy?.addDateRange(queryParams.value, dateRange.value));
+
+  const [startDate, endDate] = dateRange.value;
+  const formattedStartDate = startDate ? startDate.replace(/-/g, '/') : '';
+  const formattedEndDate = endDate ? endDate.replace(/-/g, '/') : '';
+  const dateRangeStr = formattedStartDate && formattedEndDate ? `${formattedStartDate}-${formattedEndDate}` : '';
+
+  const res = await list({...queryParams.value, dateRange: dateRangeStr});
+  // const res = await list(proxy?.addDateRange(queryParams.value, dateRange.value));
   operlogList.value = res.rows;
   total.value = res.total;
   loading.value = false;