| | |
| | | import request from "./index"; |
| | | import qs from "qs"; |
| | | |
| | | import request from "./index" |
| | | import qs from "qs" |
| | | |
| | | /* 获取会员用户列表 |
| | | "inputText": "string", |
| | |
| | | url: "/saas/api-u/user/findUserList", |
| | | method: "post", |
| | | data: params |
| | | }); |
| | | }; |
| | | }) |
| | | } |
| | | |
| | | /* 获取运营用户列表 |
| | | "inputText": "string", |
| | |
| | | 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 |
| | | }); |
| | | }; |
| | | }) |
| | | } |
| | | /* |
| | | 获取当前用户可见菜单 |
| | | */ |
| | |
| | | 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 |
| | | }) |
| | | } |
| | |
| | | <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"> |
| | |
| | | computed: { |
| | | taskOptions() { |
| | | return this.VideoPhotoData.tasks.filter((item) => !item.isDelete) |
| | | }, |
| | | showHeadName() { |
| | | return this.$route.path === "/personalCenter" |
| | | } |
| | | }, |
| | | data() { |
| | |
| | | }) |
| | | }, |
| | | findUserList() { |
| | | if (this.inputText.length) { |
| | | this.inputText = this.inputText.trim() |
| | | } |
| | | |
| | | findUserList({ |
| | | inputText: this.inputText, |
| | | page: this.page, |
New file |
| | |
| | | <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> |
| | |
| | | |
| | | <!-- 主要内容 --> |
| | | <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> |
| | | |
| | | <!-- 页尾 --> |
| | |
| | | |
| | | <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> |