From 3cd25b6bb9ec57ae86ff09df13099e2d63a0a7fb Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期一, 10 十月 2022 15:30:32 +0800 Subject: [PATCH] 添加登录日志 --- src/views/personalCenter/components/SubAccount.vue | 9 + src/views/subAccount/index.vue | 30 +++ src/api/user.ts | 65 ++++---- src/views/subAccount/entryLog.vue | 306 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 374 insertions(+), 36 deletions(-) diff --git a/src/api/user.ts b/src/api/user.ts index 894f84e..e7d645e 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -1,6 +1,5 @@ -import request from "./index"; -import qs from "qs"; - +import request from "./index" +import qs from "qs" /* 鑾峰彇浼氬憳鐢ㄦ埛鍒楄〃 "inputText": "string", @@ -14,8 +13,8 @@ url: "/saas/api-u/user/findUserList", method: "post", data: params - }); -}; + }) +} /* 鑾峰彇杩愯惀鐢ㄦ埛鍒楄〃 "inputText": "string", @@ -29,24 +28,24 @@ url: "/saas/api-u/user/findManagerList", method: "post", data: params - }); -}; + }) +} export const saveSubUser = (params: any) => { return request({ url: "/saas/api-u/user/saveSubUser", method: "post", data: params - }); -}; + }) +} export const saveMember = (params: any) => { return request({ url: "/saas/api-u/user/saveUser", method: "post", data: params - }); -}; + }) +} /* 鑾峰彇褰撳墠鐢ㄦ埛鍙鑿滃崟 */ @@ -54,65 +53,69 @@ return request({ url: "/saas/api-u/menu/tree", method: "get" - }); -}; - + }) +} export const getDataTree = (params) => { return request({ url: "/saas/api-u/user/dataTree", method: "post", data: params - }); -}; - - + }) +} export const saveManager = (params: any) => { return request({ url: "/saas/api-u/user/saveManager", method: "post", data: params - }); -}; + }) +} export const statisticByUser = (params: any) => { return request({ url: "/saas/api-s/statistic/statisticByUser", method: "post", data: params - }); -}; - + }) +} export const getUserMenus = (query: any) => { return request({ url: "/saas/api-u/users/findById", method: "post", data: qs.stringify(query) - }); -}; + }) +} export const updataUser = (params: any) => { return request({ url: "/saas/api-u/users/saveAuth", method: "post", data: params - }); -}; + }) +} export const enableMenu = (params: any) => { return request({ url: "/saas/api-u/menu/enableMenu", method: "post", data: params - }); -}; + }) +} export const deleteUser = (params: any) => { return request({ url: "/saas/api-u/user/deleteUser", method: "post", data: params - }); -}; + }) +} + +export const findEntryLog = (params: any) => { + return request({ + url: "/cloud/api-u/user/entryLog", + method: "post", + data: params + }) +} diff --git a/src/views/personalCenter/components/SubAccount.vue b/src/views/personalCenter/components/SubAccount.vue index f886f23..d3c5800 100644 --- a/src/views/personalCenter/components/SubAccount.vue +++ b/src/views/personalCenter/components/SubAccount.vue @@ -1,6 +1,6 @@ <template> <div class="sub-account" v-if="!isShowAdd && !isShowRelate"> - <div class="head-name">瀛愯处鎴风鐞�</div> + <div class="head-name" v-show="showHeadName">瀛愯处鍙风鐞�</div> <div class="search"> <div class="left"> <div class="id"> @@ -253,6 +253,9 @@ computed: { taskOptions() { return this.VideoPhotoData.tasks.filter((item) => !item.isDelete) + }, + showHeadName() { + return this.$route.path === "/personalCenter" } }, data() { @@ -605,6 +608,10 @@ }) }, findUserList() { + if (this.inputText.length) { + this.inputText = this.inputText.trim() + } + findUserList({ inputText: this.inputText, page: this.page, diff --git a/src/views/subAccount/entryLog.vue b/src/views/subAccount/entryLog.vue new file mode 100644 index 0000000..588dfbb --- /dev/null +++ b/src/views/subAccount/entryLog.vue @@ -0,0 +1,306 @@ +<template> + <div class="sub-account"> + <div class="search"> + <div class="left"> + <div class="id"> + 鐢ㄦ埛鍚�/濮撳悕/鎵嬫満鍙� + <el-input v-model="inputText" placeholder="璇疯緭鍏�" clearable></el-input> + </div> + </div> + + <div class="right"> + <div class="button searchBtn" @click="lookUp">鎼滅储</div> + </div> + </div> + <div class="table-area"> + <el-table + id="multipleTable" + ref="multipleTable" + :data="dataList" + :fit="true" + :default-sort="{ prop: 'createTime', order: 'descending' }" + > + <el-table-column type="index" label="搴忓彿" width="80" align="center"></el-table-column> + <el-table-column prop="username" label="鐢ㄦ埛鍚�" show-overflow-tooltip></el-table-column> + <el-table-column prop="trueName" label="濮撳悕" show-overflow-tooltip></el-table-column> + <el-table-column prop="phoneNum" label="鎵嬫満鍙�" show-overflow-tooltip></el-table-column> + <el-table-column label="鐧诲綍缁撴灉" width="100"> + <template slot-scope="scope"> + <div v-if="scope.row.success" class="status green ">鎴愬姛</div> + <div v-else class="status">澶辫触</div> + </template> + </el-table-column> + <el-table-column prop="createTime" label="鐧诲綍鏃堕棿" show-overflow-tooltip></el-table-column> + </el-table> + <div> + <el-pagination + @current-change="refrash" + @size-change="handleSizeChange" + :current-page="page" + :page-size="size" + layout="total, sizes, prev, pager, next, jumper" + :page-sizes="[5, 10, 15, 20, 25]" + :total="total" + background + ></el-pagination> + </div> + </div> + </div> +</template> + +<script> +import { findEntryLog } from "@/api/user" + +export default { + data() { + return { + dataList: [], + inputText: "", + page: 1, + size: 10, //鍒嗛〉鐩稿叧 + total: 0 //鎬绘暟, + } + }, + async created() { + this.lookUp() + }, + mounted() {}, + methods: { + handleSizeChange(size) { + this.size = size + this.lookUp() + }, + //鍒嗛〉鍔熻兘 + refrash(page) { + this.page = page + this.lookUp() + }, + reset() { + this.inputText = "" + this.timeLength = null + }, + async lookUp() { + if (this.inputText.length) { + this.inputText = this.inputText.trim() + } + + let res = await findEntryLog({ page: this.page, size: this.size, inputText: this.inputText }) + this.dataList = res.data.list + this.total = res.data.total + } + } +} +</script> + +<style scoped lang="scss"> +.sub-account { + padding: 20px; + .searchBtn { + width: 50px; + height: 25px; + line-height: 25px; + font-size: 14px; + text-align: center; + color: #fff; + background: #0065ff; + margin-right: 20px; + } + .right { + display: flex; + } + .search { + display: flex; + font-size: 14px; + border-bottom: 1px solid #e9ebee; + margin-top: 30px; + padding-bottom: 20px; + .left, + .right, + .id, + .time, + .cluster { + display: flex; + align-items: center; + .el-select { + width: auto; + } + } + + .id .el-input ::v-deep { + width: 200px; + } + + .cluster::v-deep .el-input { + width: 300px; + + margin-left: 10px; + margin-right: 20px; + .el-input__icon { + line-height: 32px; + } + input { + border-radius: 0; + + &::-webkit-input-placeholder { + color: #999; + } + + &:focus { + border-color: #0065ff; + } + } + } + + .el-input ::v-deep { + width: 200px; + margin-left: 10px; + margin-right: 20px; + height: 32px; + line-height: 32px; + input { + border-radius: 0; + height: 32px; + line-height: 32px; + &::-webkit-input-placeholder { + color: #999; + } + + &:focus { + border-color: #0065ff; + } + } + } + + .el-date-editor { + width: 318px; + height: 40px; + margin-left: 10px; + margin-right: 20px; + border-radius: 0; + + &::-webkit-input-placeholder { + color: #999; + } + + &.is-active { + border-color: #0065ff; + } + } + } + .el-table ::v-deep { + background-color: rgb(233, 235, 238); + padding: 1px; + + &::after { + display: none; + } + + td.index .cell { + padding-left: 16px; + padding-right: 4px; + } + + .has-gutter tr th { + background: #f0f3f5; + font-size: 16px; + color: #3d3d3d; + font-weight: 700; + } + + td .cell { + color: #3d3d3d; + } + + tr:hover > td.el-table__cell { + background-color: #fff; + } + + .el-table__row--striped .el-table__cell { + background-color: #f0f5fa !important; + } + tr:hover > td.el-table__cell { + background-color: #fff; + } + + .el-table__row--striped .el-table__cell { + background-color: #f0f5fa !important; + } + + .status { + color: #ff4b33; + + &.green { + color: #36b24a; + } + } + + .option { + margin-right: 10px; + font-size: 14px; + color: rgb(0, 101, 255); + cursor: pointer; + } + } + + .el-pagination ::v-deep { + margin-top: 30px; + text-align: center; + height: 24px; + .el-pagination__sizes { + margin-right: 0; + } + + button { + margin: 0; + background-color: #fff; + border: 1px solid #c0c5cc; + border-radius: 2px; + } + + .number { + background-color: #fff; + + &:not(.disabled):hover { + color: #0065ff; + } + + &:not(.disabled).active { + background-color: #0065ff; + color: #fff; + } + } + + .el-input .el-input__inner { + padding-left: 0; + + &:hover, + &:focus { + border-color: #0065ff; + } + } + } + + .el-select ::v-deep { + .el-select__tags-text { + color: #3d3d3d; + } + } +} +</style> + +<style> +.el-date-table td.start-date span, +.el-date-table td.end-date span { + background-color: #0065ff; +} + +.el-button--text span { + color: #0065ff; +} + +.el-button.is-plain:hover, +.el-button.is-plain:focus { + color: #0065ff; + border-color: #0065ff; +} +</style> diff --git a/src/views/subAccount/index.vue b/src/views/subAccount/index.vue index 66bf956..da3f27e 100644 --- a/src/views/subAccount/index.vue +++ b/src/views/subAccount/index.vue @@ -12,7 +12,18 @@ <!-- 涓昏鍐呭 --> <div class="content"> - <SubAccount></SubAccount> + <div style="padding: 20px;"> + <el-tabs v-model="activeName" @tab-click="handleClick"> + <el-tab-pane name="account"> + <span slot="label"><i class="el-icon-s-home"></i> 瀛愯处鍙风鐞�</span> + <SubAccount></SubAccount> + </el-tab-pane> + <el-tab-pane name="point"> + <span slot="label"><i class="el-icon-s-platform"></i> 鐧诲綍鏃ュ織</span> + <EntryLog></EntryLog> + </el-tab-pane> + </el-tabs> + </div> </div> <!-- 椤靛熬 --> @@ -22,17 +33,28 @@ <script> import IndexHeader from "@/components/IndexHeader" -// import DevList from "@/views/report/components/DevList" import SubAccount from "@/views/personalCenter/components/SubAccount.vue" -// import SettingBox from "@/views/report/components/SettingBox" +import EntryLog from "./entryLog.vue" + import Footer from "@/components/Footer" export default { components: { IndexHeader, - SubAccount + SubAccount, + EntryLog // SettingBox, // Footer + }, + data() { + return { + activeName: "account" + } + }, + methods: { + handleClick(tab, event) { + // console.log(tab, event, this.activeName) + } } } </script> -- Gitblit v1.8.0