index.vue 7.81 KB
Newer Older
geqilin's avatar
geqilin committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
<template lang='pug'>
    el-container(style="padding:0px;" :style="{height:currentHeight-65+'px'}")
        el-header(style='height:42px;line-height:42px;border: 1px solid rgba(195, 195, 195, 1);background: #f4f4f4;')
            span.title-bold.title-left-color() 系统日志 
            <el-popover placement="bottom" width="150" >
                    <el-button slot="reference" size='mini' type="primary" icon="el-icon-s-tools" style='float:right;transform:translateY(6px)'> 筛选</el-button>
                    <el-checkbox-group v-model="checkList">
                        <el-col :span="24">
                            <el-checkbox v-for="(item,index) in tableHeader" :label="item" :key="index"  >
                              span {{item.label}}
                            </el-checkbox>
                        </el-col>
                    </el-checkbox-group>
            </el-popover>              
        el-main.box_main
            el-card()
                div.tableCard()
                    el-form( :inline="true" :model="dataForm" size="mini" @keyup.enter.native="getDataList()" )
                        el-form-item( label="操作员:")
                            el-input(  v-model="dataForm.username" placeholder="操作员" clearable)
                        el-form-item( label="操作类型:")
                            el-select( v-model="dataForm.operation" placeholder="请选择" clearable)
                                el-option( v-for="(item,index) in operationList" :key="index" :label="item" :value="item")
                        el-form-item( label="操作时间:")
                            el-date-picker(type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width:175px;" v-model="dataForm.startTime" placeholder="选择开始时间"  clearable)
                        el-form-item( label="至")
                            el-date-picker( type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width:175px;" v-model="dataForm.endTime" placeholder="选择结束时间" clearable)
                        el-button( type="primary" size='mini' icon="el-icon-search" @click="getDataList()") 查询
                        el-button(@click="reSet()" size='mini' type="primary" icon="el-icon-refresh-right") 重置
                //- el-table(:data="dataList" @sort-change='sortChange' style="width: 100%;" v-loading="dataListLoading" :stripe="true"  :header-cell-style="{background:'#EEF8FF',color:'#333333'}")
                //-     el-table-column( type="index" header-align="center" align="center" label="序号" width="100")
                //-       template(scope="scope")
                //-         span {{scope.$index+(pageIndex - 1) * pageSize + 1}}
                //-     el-table-column( prop="username" header-align="center" align="center" label="操作员" sortable='custom')
                //-     el-table-column( prop="createDate" columnKey='create_date' header-align="center" align="center" label="操作时间" sortable='custom')
                //-     el-table-column( prop="ip" header-align="center" align="center" label="主机ip" sortable='custom')
                //-     el-table-column( prop="blockName" columnKey='block_name' header-align="center" align="center" label="模块名称" sortable='custom')
                //-     el-table-column( prop="operation" header-align="center" align="center" label="操作类型" sortable='custom')
                //-     el-table-column( prop="detail" header-align="center" align="center" label="描述"  width='360' sortable='custom')
                //-         div(slot-scope='scope')
                //-             span(:title='scope.row.detail') {{scope.row.detail |ellipsis}}
                <drag-table :data="dataList" :header="checkList" :option="tableOption"  @getDataList="getDataList" v-loading="dataListLoading"  >

                  //- -- 插槽 
                  <el-table-column slot="fixed"  fixed  prop=""  label="序号"  width="150"  header-align="center" align="center" >
                      <template slot-scope="scope">
                        span   {{scope.$index+(pageIndex - 1) * pageSize + 1}}
                      </template>
                  </el-table-column>


                </drag-table>                
        el-footer.box_footer
            el-pagination(@size-change="sizeChangeHandle" background  @current-change="currentChangeHandle" :current-page="pageIndex" :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="totalPage" layout="total, sizes, prev, pager, next, jumper")
</template>

<script>
import dragTable from '../../components/tab'
export default {
  filters: {
    ellipsis (value) {
      if (!value) return ''
      if (value.length > 12) {
        return value.slice(0, 12) + '...'
      }
      return value
    }
  },
  data () {
    return {
            checkList:[], //筛选数据
      tableHeader:[
        {label:'操作员',prop:'username'},//是否插槽
        {label:'操作时间',prop:'createDate'},
        {label:'主机ip',prop:'ip'},
        {label:'模块名称',prop:'blockName'},
        {label:'操作类型',prop:'operation'},
        {label:'描述',prop:'detail'},
        // {label:'操作',prop:''},
      ],
      tableOption: {
        border: false, //是否边框
        maxHeight: 500 //高度
      },
      dataForm: {
        username: '',
        operation: '',
        startTime: '',
        endTime: ''
      },
      operationList: ['登录', '注销', '查看', '新增', '修改', '删除'],
      dataList: [],
      pageIndex: 1,
      pageSize: 10,
      totalPage: 0,
      dataListLoading: false
    }
  },
  components: {
    dragTable
  },
  computed: {
    currentHeight() {
      return this.$store.state.d2admin.currentHeight.height
    }
  },
  watch: {
    totalPage() { //注意这个函数的名字必须和你监听data中的属性的名字一样,这样才能当你data中的属性发生变化时,触发这个函数
      let pages = Math.ceil(this.totalPage / this.pageSize)//新数据总页数
      //总页数小于当前页数则重新加载列表数据
      if (pages < this.pageIndex) {
          this.pageIndex = pages || 1
          this.getDataList()//获取表格数据的方法
      }
    }
  },
  created () {
    this.pageIndex = 1
    this.getDataList()
  },
  mounted() {
    this.checkList=[...this.tableHeader]
  },
  methods: {
    //重置
    reSet() {
        this.dataForm = {}
        this.pageIndex = 1
        this.getDataList()
    },
    // 获取数据列表
    getDataList (sort,order) {
      this.dataListLoading = true
      this.$http({
        url: this.$http.adornUrl('/sys/log/list'),
        method: 'get',
        params: this.$http.adornParams({
          page: this.pageIndex,
          limit: this.pageSize,
          username: this.dataForm.username,
          operation: this.dataForm.operation,
          startTime: this.dataForm.startTime,
          endTime: this.dataForm.endTime,
          sort,
          order,
          stationId: localStorage.getItem('stationId')
        })
      }).then(data => {
        //console.log('data', data)
        if (data && data.code === 0) {
          this.dataList = data.page.records
          this.totalPage = data.page.total
        } else {
          this.dataList = []
          this.totalPage = 0
        }
        this.dataListLoading = false
      })
    },
    //排序
    sortChange (column) {
      if (column.order === 'descending') {
        this.order = 'desc'
      } else {
        this.order = 'asc'
      }
      if (column.column.columnKey) {
        this.sort = column.column.columnKey
      } else {
        this.sort = column.prop
      }
      this.getDataList()
    },
    // 每页数
    sizeChangeHandle (val) {
      this.pageSize = val
      this.pageIndex = 1
      this.getDataList()
    },
    // 当前页
    currentChangeHandle (val) {
      this.pageIndex = val
      this.getDataList()
    }
  }
}
</script>