wangting
2024-10-22 0f0d9178eb886612e2310514383d2b057779042b
日志管理
已修改3个文件
已添加3个文件
380 ■■■■■ 文件已修改
Source/plt-web/plt-web-ui/src/api/log/logBasic.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/log/basicConf.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/log/index.vue 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/user/index.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/log/logBasic.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
import request from '@/router/axios';
// æ—¥å¿—保存期限查询
export function getPeroid(params) {
  return request({
    url: "/api/loginBasicController/getPeroid",
    method: "get",
    params
  });
}
// ä¿å­˜æœŸé™ä¿å­˜
export function savePeriod(params) {
  return request({
    url: "/api/loginBasicController/savePeriod",
    method: "post",
    params: params
  });
}
export function deleteLog(params) {
  return request({
    url: "/api/loginBasicController/deleteLog",
    method: "delete",
    params
  })
}
export function getLogListByContion(page, limit, params) {
  return request({
    url: "/api/loginBasicController/getLogListByContion",
    method: "post",
    data: {
      'pageNo':page,
      'pageSize':limit,
      ...params
    }
  });
}
Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
@@ -274,7 +274,7 @@
        roleId: this.nodeRow.oid,
        type: this.type,
        context: this.context,
        selectTreeList: data
        selectTreeList: selectTreeList
      }
      authorizedUI(formData).then(res => {
        if (res.data.success) {
Source/plt-web/plt-web-ui/src/views/log/basicConf.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
<template>
  <!--日志基础配置-->
  <el-container>
    <el-main>
      <basic-container>
        <div style="margin: 0 0 10px 20px">
          <el-button v-if="form.delType==0" icon="el-icon-check" size="small" type="primary" @click="saveHandler">保存</el-button>
          <el-button v-else icon="el-icon-delete" size="small" type="danger" @click="delHandler">删除</el-button>
        </div>
        <avue-form ref="form" v-model="form" :option="formOption"></avue-form>
        <div class="tip">
          <div style="color: #D40000;margin-left: 0;">日志基础配置说明:</div>
          <div>1、日志删除包含手动删除和自动删除。</div>
          <div>2、自动删除会根据日志的保存期限来进行日志删除。</div>
          <div>3、手动删除根据选定的时间来进行日志删除。</div>
        </div>
      </basic-container>
    </el-main>
  </el-container>
</template>
<script>
import {getPeroid,savePeriod,deleteLog} from "@/api/log/logBasic";
export default {
  name: "basicConf",
  data: function () {
    return {
      form:{
        period:'',
      },
      periodData:[],
      formOption:{
        submitBtn: false,
        emptyBtn: false,
        column: [{
          label: '日志删除',
          prop: 'delType',
          span: 24,
          labelWidth:120,
          type: 'radio',
          value: 0,
          dicData: [
            { label: '自动删除', value: 0 },
            { label: '手动删除', value: 1 },
          ]
        }, {
          label: '保存日期',
          prop: 'period',
          type: 'select',
          labelWidth:120,
          dicData: this.periodData,
          props:{
            label:'value',
            value:'code'
          },
          rules: [{
            required: true,
            message: "请选择保存日期",
            trigger: "blur"
          }]
        }, {
          label: '请选择日期',
          prop: 'deleteDate',
          type: 'date',
          valueFormat:'yyyy-MM-dd',
          labelWidth:120,
          display: false,
          rules: [{
            required: true,
            message: "请选择日期",
            trigger: "blur"
          }]
        }]
      },
    }
  },
  created() {
    this.getPeroid();
  },
  watch: {
    'form.delType': {
      handler(newval) {
        if (newval ==0) {
          this.formOption.column[1].display=true;
          this.formOption.column[2].display=false;
        }else {
          this.formOption.column[1].display=false;
          this.formOption.column[2].display=true;
        }
      }
    },
  },
  methods:{
    getPeroid:function (){
      getPeroid().then(res => {
        this.$refs.form.updateDic('period', res.data.data);
        this.periodData=res.data.data;
        this.form.period=res.data.data.filter(item=>{
          return item.choose
        })[0].code
      }).catch(error => {
      })
    },
    saveHandler:function (){
      savePeriod({'period':this.form.period}).then(res => {
        if (res.data.success) {
          this.$message.success('保存成功')
        }
      });
    },
    delHandler() {
      this.$refs.form.validate((valid,done) => {
        if(valid){
          deleteLog({'deleteDate':this.form.deleteDate}).then(res => {
            if (res.data.success) {
              this.$message.success('删除成功')
            }
          });
          done()
        }
      })
    },
  }
}
</script>
<style scoped>
.tip{
  font-size: 12px;
  line-height: 24px;
  color: #909399;
  margin: 0 0 10px 20px;
}
.tip div{
  margin-left: 30px;
}
</style>
Source/plt-web/plt-web-ui/src/views/log/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,171 @@
<template>
  <basic-container>
    <avue-crud
      ref="userCrud"
      :before-open="beforeOpen"
      :data="tableData"
      :option="option"
      :page.sync="page"
      :table-loading="tableLoading"
      @on-load="getTableList"
      @refresh-change="handleRefresh"
      @search-change="handleSearch"
      @search-reset="handleReset"
      @size-change="sizeChange"
      @current-change="currentChange"
      @selection-change="selectChange"
      @row-click="rowClickHandler"
      @row-save="rowSaveHandler"
      @row-update="rowUpdateHandler"
    >
      <!-- éƒ¨é—¨å¤´éƒ¨æœç´¢æ’æ§½  -->
      <template slot-scope="{disabled,size}" slot="pkDepartmentNameSearch">
        <div style="display: flex;gap: 5px">
          <el-select v-model="departSearchValue" clearable placeholder="请选择部门">
            <el-option :label="departSearchObj.name" :value="departSearchObj.oid"></el-option>
          </el-select>
          <el-button size="small" type="success" @click="dialogDepartSearchHandler">选择部门</el-button>
        </div>
      </template>
      <template #menu="{row,index,size}">
        <el-button icon="el-icon-edit" size="small" type="text" @click.stop="rowEditHandler(row,index)">导出</el-button>
      </template>
      <template slot="menuLeft" slot-scope="scope">
        <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">导出</el-button>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
import basicOption from "@/util/basic-option";
import {getLogListByContion} from "@/api/log/logBasic";
import func from "@/util/func";
export default {
name: "index",
  data: function () {
    return {
      tableLoading: false,
      tableData: [],
      option: {
        ...basicOption,
        editBtn: false,
        delBtn: false,
        calcHeight: -60,
        column: [
          {
            label: '用户名',
            prop: 'truename',
            search:true,
            sortable:true,
          }, {
            label: '姓名',
            prop: 'username',
            search:true,
            sortable:true,
          },{
            label: '用户IP',
            prop: 'userIp',
            search:true,
            sortable:true,
          },{
            label: '模块',
            prop: 'moduleName',
            search:true,
            sortable:true,
          },{
            label: '操作',
            prop: 'type',
            search:true,
            sortable:true,
          },{
            label: '时间',
            prop: 'startDate',
            search:true,
            sortable:true,
          },{
            label: '操作结果',
            prop: 'result',
            search:true,
            sortable:true,
          },{
            label: '描述',
            prop: 'startDate',
            search:true,
            sortable:true,
          },
        ]
      },
      page: {
        currentPage: 1,
        pageSize: 50,
        total: 0,
        pageSizes: [10, 30, 50, 100],
      },
      searchParams: {}
    }
  },
  methods: {
    // è¡¨æ ¼è¯·æ±‚
    getTableList() {
      this.tableLoading = true;
      getLogListByContion(this.page.currentPage, this.page.pageSize, this.searchParams).then(res => {
        const data = res.data.data;
        this.tableData = data;
        this.page.total = res.data.total;
        this.tableLoading = false;
      })
    },
    // æœç´¢æŸ¥è¯¢
    handleSearch(params, done) {
      this.searchParams = {};
      if(this.departSearchObj && this.departSearchValue){
        this.searchParams['conditionMap["pkDepartment"]'] = this.departSearchValue;
      }
      if (!func.isEmptyObject(params)) {
        for (let key in params) {
          if (params.hasOwnProperty(key)) {
            // åˆ¤æ–­å¦‚æžœ key æ˜¯ 'pkPersonName',则改为 'pkPerson' åˆ†åˆ«ä¸ºæ˜¾ç¤ºå€¼å’Œä¿å­˜å€¼
            let newKey = key === 'pkPersonName' ? 'pkPerson' : key;
            this.searchParams[`conditionMap["${newKey}"]`] = params[key];
          }
        }
      }
      if (func.isEmptyObject(params) && !this.departSearchValue) {
        this.searchParams = {};
      }
      this.getTableList();
      done();
    },
    // é‡ç½®æœç´¢æ¡ä»¶
    handleReset() {
      this.departSearchObj = {};
      this.departSearchValue = "";
      this.searchParams = {};
      this.getTableList();
    },
    // æ¡æ•°
    sizeChange(val) {
      this.page.pageSize = val;
    },
    // é¡µç 
    currentChange(val) {
      this.page.currentPage = val;
    },
  }
}
</script>
<style scoped>
</style>
Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue
@@ -718,34 +718,6 @@
  .el-scrollbar__wrap {
    overflow: auto !important;
  }
  .headerCon {
    .el-button {
      width: 82px;
    }
  }
}
.headerCon {
  display: flex;
  flex-wrap: wrap;
  margin-bottom: 5px;
  .el-button + .el-button {
    margin-left: 5px;
  }
  .el-button {
    margin-top: 5px;
  }
}
.headerCon > .el-button:nth-child(4) {
  margin-left: 0;
}
.headerCon > .el-button:nth-child(7) {
  margin-left: 0;
}
.smallBtn {
Source/plt-web/plt-web-ui/src/views/system/user/index.vue
@@ -238,9 +238,7 @@
        this.tableData = data;
        this.page.total = res.data.total;
        this.tableLoading = false;
      }).catch(err => {
        this.$message.error(err)
      });
      })
    },
    // è¡¨æ ¼å³ä¾§åˆ·æ–°å›¾æ ‡