|
@@ -0,0 +1,132 @@
|
|
|
+<template>
|
|
|
+ <div class="log">
|
|
|
+ <div class="log-search">
|
|
|
+ <div class="search-item">
|
|
|
+ <label for="dataType">类型</label>
|
|
|
+ <el-select v-model="curDateType" name="dataType">
|
|
|
+ <el-option
|
|
|
+ v-for="{ data_type, data_type_name } in dataTypeList"
|
|
|
+ :key="data_type"
|
|
|
+ :value="data_type"
|
|
|
+ :label="data_type_name"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="search-item">
|
|
|
+ <label for="storeIndex">存储时间段</label>
|
|
|
+ <el-select v-model="curStoreIndexCode" class="store-list" name="storeIndex">
|
|
|
+ <el-option
|
|
|
+ v-for="{ code, begin_time, end_time } in storeIndexList"
|
|
|
+ :key="code"
|
|
|
+ :value="code"
|
|
|
+ :label="`${begin_time}~${end_time}`"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="search-item">
|
|
|
+ <label for="operationName">操作人</label>
|
|
|
+ <el-input v-model="operatorName" name="operationName" @keyup.enter.native="queryOperateLogList" />
|
|
|
+ </div>
|
|
|
+ <div class="search-item">
|
|
|
+ <el-button icon="el-icon-search" @click="queryOperateLogList" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <CommonTable
|
|
|
+ :page-size="page_capacity"
|
|
|
+ :total="total_count"
|
|
|
+ :current-page="cur_page"
|
|
|
+ @prev-click="changePage($event, queryOperateLogList)"
|
|
|
+ @next-click="changePage($event, queryOperateLogList)"
|
|
|
+ @current-change="changePage($event, queryOperateLogList)"
|
|
|
+ @size-change="changePageSize($event, queryOperateLogList)"
|
|
|
+ >
|
|
|
+ <el-table :data="list">
|
|
|
+ <el-table-column label="序号" width="80px" align="center">
|
|
|
+ <template slot-scope="{ $index }">
|
|
|
+ {{ $index + 1 }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="operator_id" label="操作人ID" />
|
|
|
+ <el-table-column prop="operator_name" label="操作人姓名" />
|
|
|
+ <el-table-column prop="operate_time" label="操作时间" />
|
|
|
+ <el-table-column prop="operator_ip" label="操作IP" />
|
|
|
+ </el-table>
|
|
|
+ </CommonTable>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { ref } from 'vue';
|
|
|
+import { GetOperateLogDataTypeList, GetOperateLogStoreIndexList, PageQueryOperateLogList } from '@/api/log';
|
|
|
+import { useList } from '@/utils/list';
|
|
|
+
|
|
|
+import CommonTable from '@/components/common/CommonTable.vue';
|
|
|
+
|
|
|
+let { changePage, changePageSize, cur_page, list, page_capacity, total_count } = useList();
|
|
|
+
|
|
|
+let dataTypeList = ref([]);
|
|
|
+let curDateType = ref('');
|
|
|
+let storeIndexList = ref([]);
|
|
|
+let curStoreIndexCode = ref('');
|
|
|
+let operatorName = ref('');
|
|
|
+
|
|
|
+function queryOperateLogList() {
|
|
|
+ PageQueryOperateLogList({
|
|
|
+ data_type: curDateType.value,
|
|
|
+ store_index_code: curStoreIndexCode.value,
|
|
|
+ operator_name: operatorName.value,
|
|
|
+ cur_page: cur_page.value,
|
|
|
+ page_capacity: page_capacity.value
|
|
|
+ }).then(({ cur_page: page, total_count: total, data_list }) => {
|
|
|
+ cur_page.value = page;
|
|
|
+ total_count.value = total;
|
|
|
+ list.value = data_list;
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+Promise.all([GetOperateLogDataTypeList(), GetOperateLogStoreIndexList()]).then(results => {
|
|
|
+ const { data_type_list } = results[0];
|
|
|
+ dataTypeList.value = data_type_list;
|
|
|
+ if (data_type_list.length > 0) curDateType.value = data_type_list[0].data_type;
|
|
|
+
|
|
|
+ const { store_index_list } = results[1];
|
|
|
+ storeIndexList.value = store_index_list;
|
|
|
+ if (store_index_list.length > 0) curStoreIndexCode.value = store_index_list[0].code;
|
|
|
+
|
|
|
+ queryOperateLogList();
|
|
|
+});
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+@import '~@/styles/mixin';
|
|
|
+
|
|
|
+.log {
|
|
|
+ @include container;
|
|
|
+
|
|
|
+ &-search {
|
|
|
+ display: flex;
|
|
|
+ column-gap: 12px;
|
|
|
+ padding-top: 24px;
|
|
|
+
|
|
|
+ .search-item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ label {
|
|
|
+ margin-right: 14px;
|
|
|
+ word-break: keep-all;
|
|
|
+ }
|
|
|
+
|
|
|
+ .store-list :deep input {
|
|
|
+ width: 320px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:last-child {
|
|
|
+ flex: 1;
|
|
|
+ justify-content: flex-end;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|