diff --git a/src/api/login.js b/src/api/login.js index 39572ae..ae7c0d8 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -27,4 +27,12 @@ export function infoApi () { url: "/admin/index/info", method: "get", }); +} + +// 登录日志 +export function getLoginLogApi (data) { + return request({ + url: `/admin/user/login/log/${data.page}/${data.limit}`, + method: "get", + }); } \ No newline at end of file diff --git a/src/layout/m-aside.vue b/src/layout/m-aside.vue index 1f0b993..de088ea 100644 --- a/src/layout/m-aside.vue +++ b/src/layout/m-aside.vue @@ -28,7 +28,7 @@ import { createFromIconfontCN } from "@ant-design/icons-vue"; // import { menuApi } from "../api/menu"; import { h, reactive, onMounted, ref, watch } from "vue"; -import { TagsOutlined, HomeOutlined, ShoppingOutlined,MessageOutlined,FileProtectOutlined, UserOutlined,UsergroupAddOutlined, ApartmentOutlined, TeamOutlined, ContainerOutlined, AccountBookOutlined, BarChartOutlined, MailOutlined, SettingOutlined, AuditOutlined, SketchOutlined, MenuUnfoldOutlined, MenuFoldOutlined, SolutionOutlined } from "@ant-design/icons-vue"; +import { TagsOutlined, HomeOutlined, ShoppingOutlined,MessageOutlined,FileProtectOutlined, VideoCameraOutlined,UserOutlined,UsergroupAddOutlined, ApartmentOutlined, TeamOutlined, ContainerOutlined, AccountBookOutlined, BarChartOutlined, MailOutlined, SettingOutlined, AuditOutlined, SketchOutlined, MenuUnfoldOutlined, MenuFoldOutlined, SolutionOutlined } from "@ant-design/icons-vue"; import { useStore } from "../stores/counter.ts"; import { useRouter, useRoute } from "vue-router"; import { mockMenuList } from "../utils/mock.js"; @@ -122,6 +122,9 @@ onMounted(() => { case "message": items.push(getItem(item.title, item.id, item.component, () => h(MessageOutlined))); break; + case "record": + items.push(getItem(item.title, item.id, item.component, () => h(VideoCameraOutlined))); + break; case "ServiceMarket": items.push(getItem(item.title, item.id, item.component, () => h(SketchOutlined))); break; diff --git a/src/router/index.js b/src/router/index.js index d7d7071..cf131ae 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -55,6 +55,13 @@ const router = createRouter({ title: '消息通知', }, component: () => import("../views/message/index.vue") + },{ + path: "/merchantManagement/record", + name: "record", + meta: { + title: '访问记录', + }, + component: () => import("../views/homePage/record.vue") } ].concat(noticeData) }, diff --git a/src/utils/mock.js b/src/utils/mock.js index daae7dc..fae4066 100644 --- a/src/utils/mock.js +++ b/src/utils/mock.js @@ -109,6 +109,33 @@ export let mockMenuList = { "importTag": 0, "exportTag": 0, "childrenList": [] + }, + { + "id": 5, + "creator": "", + "updator": "", + "createTime": "", + "updateTime": "", + "deleted": 0, + "title": "访问记录", + "menuName": "record", + "parentName": "", + "path": "record", + "component": "/merchantManagement/record.vue", + "visible": 0, + "perms": "", + "icon": "icon-houtaishouye", + "remark": "", + "parentId": "", + "tagNames": "queryTag,addTag,updateTag,deleteTag", + "idx": 10, + "queryTag": 0, + "addTag": 0, + "deleteTag": 0, + "updateTag": 0, + "importTag": 0, + "exportTag": 0, + "childrenList": [] } ], diff --git a/src/views/homePage/personData.vue b/src/views/homePage/personData.vue index 272d106..82e646a 100644 --- a/src/views/homePage/personData.vue +++ b/src/views/homePage/personData.vue @@ -480,7 +480,7 @@ const columns = ref([ width: "240px", ellipsis: true, customRender: (record) => { - return record.record.percent+"%"; + return record.record.percent ? record.record.percent+"%" : '-'; }, }, diff --git a/src/views/homePage/record.vue b/src/views/homePage/record.vue new file mode 100644 index 0000000..25c4c08 --- /dev/null +++ b/src/views/homePage/record.vue @@ -0,0 +1,157 @@ + + + + +